• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 嵌入式設備的文件系統

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    系統需要一種以結構化格式存儲和檢索信息的方法;這就需要文件系統的參與。Ramdisk(請參閱參考資料)是通過將計算機的 RAM 用作設備來創建和掛裝文件系統的一種機制,它通常用于無盤系統(當然包括微型 嵌入式 設備,它只包含作為永久存儲媒質的閃存芯片)
    系統需要一種以結構化格式存儲和檢索信息的方法;這就需要文件系統的參與。Ramdisk(請參閱參考資料)是通過將計算機的 RAM 用作設備來創建和掛裝文件系統的一種機制,它通常用于無盤系統(當然包括微型嵌入式設備,它只包含作為永久存儲媒質的閃存芯片)。

    用戶可以根據可靠性、健壯性和/或增強的功能的需求來選擇文件系統的類型。

    系統需要一種以結構化格式存儲和檢索信息的方法;這就需要文件系統的參與。Ramdisk(請參閱參考資料)是通過將計算機的 RAM 用作設備來創建和掛裝文件系統的一種機制,它通常用于無盤系統(當然包括微型嵌入式設備,它只包含作為永久存儲媒質的閃存芯片)。

    用戶可以根據可靠性、健壯性和/或增強的功能的需求來選擇文件系統的類型。
    第二版擴展文件系統(Ext2fs)
    Ext2fs 是 Linux 事實上的標準文件系統,它已經取代了它的前任 — 擴展文件系統(或 Extfs)。Extfs 支持的文件大小最大為 2 GB,支持的最大文件名稱大小為 255 個字符 — 而且它不支持索引節點(包括數據修改時間標記)。Ext2fs 做得更好;它的優點是:

    Ext2fs 支持達 4 TB 的內存。
    Ext2fs 文件名稱最長可以到 1012 個字符。
    當創建文件系統時,管理員可以選擇邏輯塊的大?。ㄍǔ4笮】蛇x擇 1024、2048 和 4096 字節)。
    Ext2fs 了實現快速符號鏈接:不需要為此目的而分配數據塊,并且將目標名稱直接存儲在索引節點(inode)表中。這使性能有所提高,特別是在速度上。



    因為 Ext2 文件系統的穩定性、可靠性和健壯性,所以幾乎在所有基于 Linux 的系統(包括臺式機、服務器和工作站 — 并且甚至一些嵌入式設備)上都使用 Ext2 文件系統。然而,當在嵌入式設備中使用 Ext2fs 時,它有一些缺點:

    Ext2fs 是為象 IDE 設備那樣的塊設備設計的,這些設備的邏輯塊大小是 512 字節,1 K 字節等這樣的倍數。這不太適合于扇區大小因設備不同而不同的閃存設備。
    Ext2 文件系統沒有提供對基于扇區的擦除/寫操作的良好管理。在 Ext2fs 中,為了在一個扇區中擦除單個字節,必須將整個扇區復制到 RAM,然后擦除,然后重寫入??紤]到閃存設備具有有限的擦除壽命(大約能進行 100,000 次擦除),在此之后就不能使用它們,所以這不是一個特別好的方法。
    在出現電源故障時,Ext2fs 不是防崩潰的。
    Ext2 文件系統不支持損耗平衡,因此縮短了扇區/閃存的壽命。(損耗平衡確保將地址范圍的不同區域輪流用于寫和/或擦除操作以延長閃存設備的壽命。)
    Ext2fs 沒有特別完美的扇區管理,這使設計塊驅動程序十分困難。



    由于這些原因,通常相對于 Ext2fs,在嵌入式環境中使用 MTD/JFFS2 組合是更好的選擇。

    用 Ramdisk 掛裝 Ext2fs
    通過使用 Ramdisk 的概念,可以在嵌入式設備中創建并掛裝 Ext2 文件系統(以及用于這一目的的任何文件系統)。

    清單 6. 創建一個簡單的基于 Ext2fs 的 Ramdisk mke2fs -vm0 /dev/ram 4096
    mount -t ext2 /dev/ram /mnt
    cd /mnt
    cp /bin, /sbin, /etc, /dev ... files in mnt
    cd ../
    umount /mnt
    dd if=/dev/ram bs=1k count=4096 of=ext2ramdisk




    mke2fs 是用于在任何設備上創建 ext2 文件系統的實用程序 — 它創建超級塊、索引節點以及索引節點表等等。

    在上面的用法中,/dev/ram 是上面構建有 4096 個塊的 ext2 文件系統的設備。然后,將這個設備(/dev/ram)掛裝在名為 /mnt 的臨時目錄上并且復制所有必需的文件。一旦復制完這些文件,就卸裝這個文件系統并且設備(/dev/ram)的內容被轉儲到一個文件(ext2ramdisk)中,它就是所需的 Ramdisk(Ext2 文件系統)。

    上面的順序創建了一個 4 MB 的 Ramdisk,并用必需的文件實用程序來填充它。

    一些要包含在 Ramdisk 中的重要目錄是:

    /bin — 保存大多數象 init、busybox、shell、文件管理實用程序等二進制文件。
    /dev — 包含用在設備中的所有設備節點
    /etc — 包含系統的所有配置文件
    /lib — 包含所有必需的庫,如 libc、libdl 等



    日志閃存文件系統,版本 2(JFFS2)
    瑞典的 Axis Communications 開發了最初的 JFFS,Red Hat 的 David Woodhouse 對它進行了改進。 第二個版本,JFFS2,作為用于微型嵌入式設備的原始閃存芯片的實際文件系統而出現。JFFS2 文件系統是日志結構化的,這意味著它基本上是一長列節點。每個節點包含有關文件的部分信息 — 可能是文件的名稱、也許是一些數據。相對于 Ext2fs,JFFS2 因為有以下這些優點而在無盤嵌入式設備中越來越受歡迎:

    JFFS2 在扇區級別上執行閃存擦除/寫/讀操作要比 Ext2 文件系統好。
    JFFS2 提供了比 Ext2fs 更好的崩潰/掉電安全保護。當需要更改少量數據時,Ext2 文件系統將整個扇區復制到內存(DRAM)中,在內存中合并新數據,并寫回整個扇區。這意味著為了更改單個字,必須對整個扇區(64 KB)執行讀/擦除/寫例程 — 這樣做的效率非常低。要是運氣差,當正在 DRAM 中合并數據時,發生了電源故障或其它事故,那么將丟失整個數據集合,因為在將數據讀入 DRAM 后就擦除了閃存扇區。JFFS2 附加文件而不是重寫整個扇區,并且具有崩潰/掉電安全保護這一功能。
    這可能是最重要的一點:JFFS2 是專門為象閃存芯片那樣的嵌入式設備創建的,所以它的整個設計提供了更好的閃存管理。



    因為本文主要是寫關于閃存設備的使用,所以在嵌入式環境中使用 JFFS2 的缺點很少:

    當文件系統已滿或接近滿時,JFFS2 會大大放慢運行速度。這是因為垃圾收集的問題(更多信息,請參閱參考資料)。



    創建 JFFS2 文件系統
    在 Linux 下,用 mkfs.jffs2 命令創建 JFFS2 文件系統(基本上是使用 JFFS2 的 Ramdisk)。

    清單 7. 創建 JFFS2 文件系統 mkdir jffsfile
    cd jffsfile

    /* copy all the /bin, /etc, /usr/bin, /sbin/ binaries and /dev entries
    that are needed for the filesystem here */

    /* Type the following command under jffsfile directory to create the JFFS2 Image */

    ./mkfs.jffs2 -e 0x40000 -p -o ../jffs.image




    上面顯示了 mkfs.jffs2 的典型用法。-e 選項確定閃存的擦除扇區大?。ㄍǔJ?64 千字節)。-p 選項用來在映像的剩余空間用零填充。-o 選項用于輸出文件,通常是 JFFS2 文件系統映像 — 在本例中是 jffs.image。一旦創建了 JFFS2 文件系統,它就被裝入閃存中適當的位置(引導裝載程序告知內核查找文件系統的地址)以便內核能掛裝它。

    tmpfs
    當 Linux 運行于嵌入式設備上時,該設備就成為功能齊全的單元,許多守護進程會在后臺運行并生成許多日志消息。另外,所有內核日志記錄機制,象 syslogd、dmesg 和 klogd,會在 /var 和 /tmp 目錄下生成許多消息。由于這些進程產生了大量數據,所以允許將所有這些寫操作都發生在閃存是不可取的。由于在重新引導時這些消息不需要持久存儲,所以這個問題的解決方案是使用 tmpfs。

    tmpfs 是基于內存的文件系統,它主要用于減少對系統的不必要的閃存寫操作這一唯一目的。因為 tmpfs 駐留在 RAM 中,所以寫/讀/擦除的操作發生在 RAM 中而不是在閃存中。因此,日志消息寫入 RAM 而不是閃存中,在重新引導時不會保留它們。tmpfs 還使用磁盤交換空間來存儲,并且當為存儲文件而請求頁面時,使用虛擬內存(VM)子系統。

    tmpfs 的優點包括:

    動態文件系統大小 — 文件系統大小可以根據被復制、創建或刪除的文件或目錄的數量來縮放。使得能夠最理想地使用內存。
    速度 — 因為 tmpfs 駐留在 RAM,所以讀和寫幾乎都是瞬時的。即使以交換的形式存儲文件,I/O 操作的速度仍非???。



    tmpfs 的一個缺點是當系統重新引導時會丟失所有數據。因此,重要的數據不能存儲在 tmpfs 上。

    掛裝 tmpfs
    諸如 Ext2fs 和 JFFS2 等大多數其它文件系統都駐留在底層塊設備之上,而 tmpfs 與它們不同,它直接位于 VM 上。因而,掛裝 tmpfs 文件系統是很簡單的事:

    清單 8. 掛裝 tmpfs /* Entries in /etc/rc.d/rc.sysinit for creating/using tmpfs */

    # mount -t tmpfs tmpfs /var -o size=512k
    # mkdir -p /var/tmp
    # mkdir -p /var/log
    # ln -s /var/tmp /tmp




    上面的命令將在 /var 上創建 tmpfs 并將 tmpfs 的最大大小限制為 512 K。同時,tmp/ 和 log/ 目錄成為 tmpfs 的一部分以便在 RAM 中存儲日志消息。

    如果您想將 tmpfs 的一個項添加到 /etc/fstab,那么它可能看起來象這樣:

    tmpfs /var tmpfs size=32m 0 0

    這將在 /var 上掛裝一個新的 tmpfs 文件系統。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>