Cramfs、JFFS2、YAFFS2全麵對比
由 於嵌入式係統自身存在一些特殊要求使得一些傳 統的文件係統 (如FAT、EXT2等) 並不十分適合。專 用的嵌入式文件係統應有一些自身的特性如文件係統 麵對的儲存介質特殊性、文件係統應具有的跨平台的安 全性以及整個係統的實時性等。本 文介紹了3種源 碼開放的嵌入式文件係統Cramfs、JFFS2、YAFFS2 詳細分析比較了這3種文件係統的主要性能並根據分 析結果指出了各自的適 用領域 Cramfs、JFFS2、YAFFS2是3種性能優越專用於嵌入式係 統的文件係統。本文通過對這3種文件係統的設計原理和主要性 能進行分析與比較歸 納出各自的選型依據據和適用領域。 三種文件係統的介紹 Cramfs Cramfs是Linux的創始人Linus Torvalds開發的一種隻讀 文件係統采用了zlib壓縮壓縮比一般可以達到12但仍 可以做到高效的隨機讀取。在Linux係統中通常把不需 要經 常修改的目錄壓縮存放在係統引導時再將壓縮文件解開。 Cramfs並不需要一次性地把文件係統的所有內容都解壓到內存 中而隻是在係統需要訪問某 個位置的數據時馬上計算出該數據在Cramfs中的位置將其解壓縮到內存之中然後通過對 內存的訪問來獲取需要讀取的數據。 JFFS2 JFFS意為「Journaling Flash File System」該文件係統 是瑞典Axis通信公司開發的一種基於Flash內存的日誌文件係 統。該公司於1999年在GNU/Linux上發行了第一 版JFFS文 件係統後來經過Redhat公司的發展現在已經發行了第二個 版本的JFFS2其全部程序代碼都是可供研究開發的。它在設 計時充分考慮了嵌 入式係統中Flash內存的讀寫特性確保在 係統掉電時正在讀寫的文件不受影響同時其儲存策略以及 抗疲勞性等方麵也在第一版的基礎上進行了改進。 目前JFFS2 廣泛應用於嵌入式係統中尤其是嵌入式μClinux操作係統中。 YAFFS2 YAFFS意為「Yet Another Flash File System」是目前 唯一一個專門為NAND Flash設計的文件係統。它采用了類日誌 結構結合NAND Flash的特點提供了損耗平衡和掉電保護機 製可以有效地避免意外掉電對文件係統一致性和完整性的影 響。Aleph One公司於2002年5月發布了第一版YAFFS程序 代碼用戶可以很方便地在網站上下載到。第一版的YAFFS隻 支持每頁512字節的NAND Flash。 YAFFS2是YAFFS的升級版即支持每頁512字節的NAND Flash內存也支持每頁 2048字節的NAND Flash內存。 Flash內存 Flash設備特點 相對於傳統儲存介質Flash內存具有如下優點 ˙ 可靠性高采用Flash為儲存介質可以確保100萬次以上的 可靠寫入 ˙ 儲存速度快寫入∕讀取均可接近1Mb/s ˙ 使用方便具有很強的環境適應能力。 但是由於其製造製程的問題還存在以下缺點 ˙ 讀取和寫入以頁為單位擦除以塊為單位 ˙ 易出現隨機壞塊 ˙ 塊與塊之間使用不均衡會導致壽命問題。 NOR Flash和NAND Flash 基於NOR技術的Flash內存是最早出現的Flash內存它 具有以下特點 ˙ 程序和數據可存放在同一芯片上擁有獨立的數據總線和地址 總線支持快速隨機讀取允許係統直接從Flash中讀取程序代碼並執行而無需先將程序代碼下載至RAM中再執行 ˙ 可以單字節或單字程序化但必須以塊為單位進行擦除操作。 由於NOR Flash內存的擦除和程序化速度較慢而塊尺寸 又比較大因此擦除和程序化操作所花費的時間很長。目前 NOR Flash內存大多隻用於儲存嵌入式係統的啟動程序代碼。 NAND Flash內存可以順序讀取儲存單元的內容由於製 程上的進步其容量越來越大單位價格越來越便宜正逐步成 為Flash內存的主流。NAND Flash內存具有以下特點 ˙ 以頁為單位進行讀寫操作以塊為單位進行擦除操作頁大小 為512字節或2048字節每頁不僅有 數據區還有幾十字節的空閑區。 ˙ 數據、地址采用同一總線接口串行讀取。 ˙ 芯片尺寸小接腳少單位成本低。 ˙ 芯片內含有失效塊並且在使用過程中可能會出現隨機壞塊。 表1 比較了這兩種Flash內存的性能參數。 三種嵌入式文件係統主要性能分析與比較 數據安全、運行速度、占用資源、使用範圍等是嵌入式文 件係統的主要性能指針。下麵從這幾個方麵入手對這三種嵌入 式文件係統進行分析與比較。 數據安全 當前的嵌入式係統主要使用固態Flash芯片作為儲存設備。 由於Flash設備自身的特點以及嵌入式係統工作環境的複雜多 樣性如何保證數據的安全是嵌入 式文件係統首先要考慮的問 題。數據安全主要包括數據冗餘和掉電保護等部分。 資料冗餘 提高數據安全性的最有效措施是增加數據的冗餘而數據的大量冗餘又給維護資料一致性 帶來困難。對此應進行合理取舍在盡量降低冗餘的前提下確保數據的安全性和可靠性。 Cramfs文件係統是一種隻讀文件係統文件係統內容不可 更改設計思想遵循「隻儲存最少的信息」甚至沒有時間戳之類的信息除了數據包的CRC校驗 信息外幾乎沒有別的數據 冗餘。 JFFS2文件係統是典型的日誌結構的文件係統它儲存的 數據是日誌式數據信息。JFFS2在Flash上隻有兩種類型的數據 實 體j.ffs2_raw_inode和jffs2_raw dirent。前者包含文件的管 理信息後者用於描述文件在文件係統中的位置。真正的數據信 息就保持在jffs2_raw_inode節點的後麵大部分 管理的信息都 是在係統掛載之後建立起來的。兩種數據實體有著公共的文件頭 結構jffs2 _ unknown_node。在這個結構裏有個jint32 _t類型 的hdr_crc變量它代表文件頭部中其它域的CRC校驗值。這 說明JFFS2文件係統使用的是CRC循環冗餘校驗碼。 YAFFS2文件係統是一種類日誌文件係統專用於NAND 型Flash設備。其儲存數據的基本單位是chunk相當於Flash 的頁。Chunk中的 數據包括兩部分一部分是數據區占用Flash 的一頁另一部分是文件信息及冗餘數據區占用Flash頁的 OOB區。其冗餘數據主要是ECC校驗資 料對於小頁每頁 512字節的Flash每頁有6字節的ECC數據對於大頁每 頁2048字節的Flash每頁有24字節的ECC資 料。 掉電保護 掉電保護的目的是在係統意外失去供電的情況下保證 係統運行狀態的確定性以及記錄數據的完整性當係統供電恢複 後現場數據可以及時恢複避免係統產生 混亂。很多文件係 統出於運行速度考慮在程序運行過程中常將數據暫存在 SDRAM中一旦係統意外掉電往往會造成數據丟失。 Cramfs文件係統將文件係統內容解壓到內存中由於其不 能寫入文件係統的內容無法更改因此不存在掉電保護的問題。 JFFS2是一種日誌結構文件係統因此不論電源以何種方 式在哪個時刻停止供電JFFS2都能保持數據完整性。當係統 遭受不正常斷電後重新啟動 時JFFS2自動將係統恢複到斷電 前最後一個穩定狀態。需要注意的是文件係統在最後一個穩定 狀態之後發生的任何改變都無法進行恢複。 YAFFS2是一種類日誌文件係統可以在意外掉電重啟後 自動提供可靠的數據記錄防止文件係統的崩潰。它使用獨立的 日誌文件跟蹤文件係統內容的變化。舉 例來說當應用程序需 要寫Flash的某一頁時它首先修改的是存放於文件日誌中的一 塊鏡像隻有當日誌中的鏡像複製到文件係統中後數據才真實 地寫到該 頁上。當發生意外掉電重啟後YAFFS2沒有像JFFS2 那樣使用舊文件完全代替新寫文件而是選擇用新文件完全代替舊的文件或者已寫部分使用新文 件未寫部分使用舊文件。 這種方式增強了掉電時未完全寫入文件的安全性能特別是當意 外掉電發生在數據區時意外掉電時的文件幾乎被完好地保存下 來。 運行速度 運行速度可以從以下幾個方麵考察文件係統掛載速度 讀文件速度寫文件速度等。這裏預設的儲存介質是NAND Flash。 一般而言壓縮的、隻讀的文件係統在啟動時需要將文件 係統解壓到SDRAM中這在一定程度上會減緩文件係統掛載速 度。但是Cramfs文件係統在設計 時充分考慮了係統掛載的時 間並沒有一次性地把文件係統的所有內容都解壓到內存中而 隻是在係統需要訪問某個位置的數據時迅速計算出該數據在 Cramfs中的位置將其解壓縮到內存之中再進行訪問操作。 由於其讀文件速度隻是找出文件地址以及訪問內存的操作所以 無論是掛載速度還是讀文 件速度 Cramfs文件係統都比 JFFS2和YAFFS2文件係統要快。 JFFS2文件係統的掛載可以分為以下幾個步驟進行 1. 檢查每個節點CRC校驗碼的合法性在內存中為每個節點每個節點分配必需的相關的結構 2. 掃瞄每個i節點的物理節點鏈表建立鏈接 3. 釋放掃瞄過程中使用的臨時信息。 可以看出這個過程還是很複雜的更重要的是在JFFS2 文件係統被掛載時需要對整個Flash儲存區域進行掃瞄這就 耗費了大量的時間因此 JFFS2文件係統的開機速度非常緩慢。 與JFFS2相比YAFFS2減少了一些功能掛載時隻需掃瞄Flash 內存的空閑區根據從OOB備份資 料區中讀取的yaffs_tags 信息判讀是文件頭頁麵還是資料頁麵再根據相應信息在內存中 為每個文件建立一個對應的yaffs_object對 象。由於YAFFS2 在係統加載時隻需掃瞄各個頁麵的OOB區即可建立起整個文 件係統的結構而不需要像JFFS2那樣掃瞄整個Flash設備 因此大 大加快了文件係統的啟動速度。但是YAFFS2仍然要 求對整個Flash設備所有頁的空閑進行掃瞄這就導致當Flash 設備儲存空間變大時係統掃瞄 時間會直線上升。 在文件係統運行時JFFS2需要維護幾個鏈表來管理擦寫 塊。根據擦寫塊上的內容一個擦寫塊可能會在不同的鏈表上。 具體來說當一個擦寫塊上都是合法 valid的節點時它會 在clean_list上當一個擦寫塊包含至少一個過時obsolete 的節點時它會在dirty_list上當 一個擦寫塊被擦寫完畢並被寫入Cleanmarker節點後它會在free_list上。正是以這些 鏈表為基礎 JFFS2文件係統才可以實現垃圾回收、損耗平衡 等性能。文件係統掛載時YAFFS2在內存中建立一個層次結構 的索引可以看作是一個文件樹。樹的最底 層指向實際存放文 件的頁麵高層則是一層層的索引目錄。文件樹是通過一個聯合 結構的節點來實現的。聯合結構是固定大小32字節當它 處於最底層時 由16個2字節入口來查找頁麵ID當處於其 它層時由8個4字節指針指向其它更低層的節點。每個文件對 應一個文件樹便於檢索。在以NAND Flash為儲存介質的嵌入 式係統中YAFFS2的文件讀寫性能都優於JFFS2。 占用資源 在嵌入式係統中內存和外部內存資源匱乏需要節約使 用。因此占用的內存和外部內存資源量也是衡量嵌入式文件係統 的一個重要指針。 如果使用RAMDISK方式運行文件係統那麼在係統運行 之後首先要把Flash上的映像文件解壓到內存中才可以開始 運行程序。這樣同樣的程序代碼 不僅在外部內存中占據了空 間而且由於解壓縮還在內存中占用了更大的空間。Cramfs 雖然是一個壓縮式的文件係統但前麵已介紹過它並不需要一 次性地將所有內容解壓到內存之中。由於其對文件內容的壓縮因此無論是外部內存還是內存 Cramfs都比JFFS2和YAFFS2 占用更少的資源。 JFFS2將文件係統的數據和原數據以節點的形式儲存在 Flash上其冗餘數據隻是節點頭部的CRC校驗碼並且在儲 存時對節點的數據進行了壓縮。與之 相比YAFFS2不僅儲存 了頁數據的ECC校驗碼並且沒有Flash設備OOB區儲存數 據而是用來儲存頁節點信息。其映像也是由若幹個頁麵組成 沒 有對數據進行壓縮因此YAFFS2文件係統映像大大超過了 JFFS2文件係統映像。實驗表明普通YAFFS2映像的大小約 為同樣JFFS2映像大小的 2倍。當文件係統在內存中運行時 JFFS2在內存中定義了若幹鏈表YAFFS2在內存中為每個文 件創建一個文件樹。盡管為每個文件建立一個文件 樹需要消耗 掉不少的內存但是比起維護JFFS2所需的鏈表消耗的內存 還是少一些。在實際運行中YAFFS2占用的內存要小於JFFS2 文件係 統。 使用範圍 要使用Cramfs或JFFS2文件係統離不開MTD驅動程 序層的支持。MTDMemory Technology Device是Linux中 的一個儲存設備通用界麵層。雖然也可以建立在RAM上但它 是專為基於Flash的設備而設計的。MTD包含特定Flash 芯片的驅動程序 Flash芯片驅動向上層提供讀、寫、擦除等基本 的Flash操作方法。MTD對這些操作進行封裝後向用戶層提供 MTD char和MTD block類型的設備。MTD char類型的設備包 括/dev/mtd0等可以對Flash的原始字符訪問MTD block類 型的設備包括/dev/mtdblock0等將Flash模擬成塊設備這樣 就可以在這些塊設備上創建Cramfs或JFFS2等格式的文 件係 統。在對用戶層的界麵上 Cramfs或JFFS2文件係統還需要 操作係統VFS虛擬文件係統的支持。 同樣YAFFS2文件係統支持使用MTD驅動層和VFS層 這也是一般在嵌入式Linux或者μClinux操作係統中使用 YAFFS2文件係統的常用 方法。除此之外YAFFS2還帶有 NAND Flash芯片驅動並為嵌入式係統提供了直接訪問文件係 統的API用戶可以不使用Linux中的MTD和VFS直接對文 件進行操作。圖1 為嵌入式係統的文件係統結構。 YAFFS2中的YAFFS2 Direct提供了直接的文件係統界 麵因此在那些沒有VFS層的嵌入式係統中也可使用YAFFS2。 YAFFS2文件係統的使用範圍要比Cramfs和 JFFS2文件係統 廣泛但是需要注意的是YAFFS2隻能用在NAND Flash儲存 設備上。 結論 這3種嵌入式文件係統在嵌入式係統中的應用非常廣泛 但是又具有各自的特點。表2 比較了3種文件係統的主要性能 並歸納出各自最適用的領域。 具體分析如下 1. Cramfs是最早的一種嵌入式文件係統它隻儲存了最少的信 息對文件內容進行了壓縮運行速度比較 快。但是由於其不能寫入不支持超過16 MB大小的文件因 此廣泛地應用於儲存空間小、文件係統內容 較少並且不需要用戶寫入的嵌入式係統中。 2. JFFS2是一種較早的Flash專用文件係統。目前已有很多 JFFS2應用於μClinux以及嵌入式Linux的例子。事 實上它已經成為新版Linux中的一種標準文件係統。 同時它對NOR Flash和NAND Flash提供支持針對兩種Flash 設備共同的特性提供掉電保護和損耗平衡等 功能可供用戶讀寫十分適合於同時用到這兩種Flash設備的 嵌入式係統。 3. YAFFS2是專為NAND Flash設計的文件係統它充分考慮 了NAND Flash設備的特性支持ECC校驗提 供掉電保護和損耗平衡功能運行和掛載速度都比JFFS2要快。 它支持操作係統廣泛包括常見的嵌入 式Linux、WinCE、μClinux。由於它提供Direct界麵因此稍 加修改也可使用在沒有操作係統的嵌入式 係統中。目前被廣泛應用於使用NAND Flash作為儲存設備的 嵌入式係統中。 針對具體應用可以在考察各種文件係統特點的基礎上 選擇更適合自身係統的一種文件係統解決方案。比如在許多以 NAND Flash為儲存介質的應用係統中都用到「Cramfs YAFFS2」文件係統。以Cramfs作為根文件係統既提高了啟 動速度也能保護根文件不 受破壞使用YAFFS2作為用戶文 件係統在保證用戶可以自由讀寫文件的基礎上提高了文件係 統的安全性和運行速度不失為一種優良的嵌入式文件係統解 決方案。由 於嵌入式係統自身存在一些特殊要求使得一些傳
統的文件係統 (如FAT、EXT2等) 並不十分適合。專
用的嵌入式文件係統應有一些自身的特性如文件係統
麵對的儲存介質特殊性、文件係統應具有的跨平台的安
全性以及整個係統的實時性等。本 文介紹了3種源
碼開放的嵌入式文件係統Cramfs、JFFS2、YAFFS2
詳細分析比較了這3種文件係統的主要性能並根據分
析結果指出了各自的適 用領域
Cramfs、JFFS2、YAFFS2是3種性能優越專用於嵌入式係
統的文件係統。本文通過對這3種文件係統的設計原理和主要性
能進行分析與比較歸 納出各自的選型依據據和適用領域。
三種文件係統的介紹 Cramfs Cramfs是Linux的創始人Linus Torvalds開發的一種隻讀
文件係統采用了zlib壓縮壓縮比一般可以達到12但仍
可以做到高效的隨機讀取。在Linux係統中通常把不需 要經
常修改的目錄壓縮存放在係統引導時再將壓縮文件解開。
Cramfs並不需要一次性地把文件係統的所有內容都解壓到內存
中而隻是在係統需要訪問某 個位置的數據時馬上計算出該數據在Cramfs中的位置將其解壓縮到內存之中然後通過對
內存的訪問來獲取需要讀取的數據。
JFFS2 JFFS意為「Journaling Flash File System」該文件係統
是瑞典Axis通信公司開發的一種基於Flash內存的日誌文件係
統。該公司於1999年在GNU/Linux上發行了第一 版JFFS文
件係統後來經過Redhat公司的發展現在已經發行了第二個
版本的JFFS2其全部程序代碼都是可供研究開發的。它在設
計時充分考慮了嵌 入式係統中Flash內存的讀寫特性確保在
係統掉電時正在讀寫的文件不受影響同時其儲存策略以及
抗疲勞性等方麵也在第一版的基礎上進行了改進。 目前JFFS2
廣泛應用於嵌入式係統中尤其是嵌入式μClinux操作係統中。
YAFFS2 YAFFS意為「Yet Another Flash File System」是目前
唯一一個專門為NAND Flash設計的文件係統。它采用了類日誌
結構結合NAND Flash的特點提供了損耗平衡和掉電保護機
製可以有效地避免意外掉電對文件係統一致性和完整性的影
響。Aleph One公司於2002年5月發布了第一版YAFFS程序
代碼用戶可以很方便地在網站上下載到。第一版的YAFFS隻
支持每頁512字節的NAND Flash。 YAFFS2是YAFFS的升級版即支持每頁512字節的NAND Flash內存也支持每頁
2048字節的NAND Flash內存。
Flash內存 Flash設備特點
相對於傳統儲存介質Flash內存具有如下優點
˙ 可靠性高采用Flash為儲存介質可以確保100萬次以上的
可靠寫入
˙ 儲存速度快寫入∕讀取均可接近1Mb/s
˙ 使用方便具有很強的環境適應能力。
但是由於其製造製程的問題還存在以下缺點
˙ 讀取和寫入以頁為單位擦除以塊為單位
˙ 易出現隨機壞塊
˙ 塊與塊之間使用不均衡會導致壽命問題。
NOR Flash和NAND Flash
基於NOR技術的Flash內存是最早出現的Flash內存它
具有以下特點
˙ 程序和數據可存放在同一芯片上擁有獨立的數據總線和地址
總線支持快速隨機讀取允許係統直接從Flash中讀取程序代碼並執行而無需先將程序代碼下載至RAM中再執行
˙ 可以單字節或單字程序化但必須以塊為單位進行擦除操作。
由於NOR Flash內存的擦除和程序化速度較慢而塊尺寸
又比較大因此擦除和程序化操作所花費的時間很長。目前
NOR Flash內存大多隻用於儲存嵌入式係統的啟動程序代碼。
NAND Flash內存可以順序讀取儲存單元的內容由於製
程上的進步其容量越來越大單位價格越來越便宜正逐步成
為Flash內存的主流。NAND Flash內存具有以下特點
˙ 以頁為單位進行讀寫操作以塊為單位進行擦除操作頁大小
為512字節或2048字節每頁不僅有
數據區還有幾十字節的空閑區。
˙ 數據、地址采用同一總線接口串行讀取。
˙ 芯片尺寸小接腳少單位成本低。
˙ 芯片內含有失效塊並且在使用過程中可能會出現隨機壞塊。
表1 比較了這兩種Flash內存的性能參數。
三種嵌入式文件係統主要性能分析與比較 數據安全、運行速度、占用資源、使用範圍等是嵌入式文
件係統的主要性能指針。下麵從這幾個方麵入手對這三種嵌入
式文件係統進行分析與比較。
數據安全 當前的嵌入式係統主要使用固態Flash芯片作為儲存設備。
由於Flash設備自身的特點以及嵌入式係統工作環境的複雜多
樣性如何保證數據的安全是嵌入 式文件係統首先要考慮的問
題。數據安全主要包括數據冗餘和掉電保護等部分。
資料冗餘
提高數據安全性的最有效措施是增加數據的冗餘而數據的大量冗餘又給維護資料一致性
帶來困難。對此應進行合理取舍在盡量降低冗餘的前提下確保數據的安全性和可靠性。
Cramfs文件係統是一種隻讀文件係統文件係統內容不可
更改設計思想遵循「隻儲存最少的信息」甚至沒有時間戳之類的信息除了數據包的CRC校驗 信息外幾乎沒有別的數據
冗餘。
JFFS2文件係統是典型的日誌結構的文件係統它儲存的
數據是日誌式數據信息。JFFS2在Flash上隻有兩種類型的數據
實 體j.ffs2_raw_inode和jffs2_raw dirent。前者包含文件的管
理信息後者用於描述文件在文件係統中的位置。真正的數據信
息就保持在jffs2_raw_inode節點的後麵大部分 管理的信息都
是在係統掛載之後建立起來的。兩種數據實體有著公共的文件頭
結構jffs2 _ unknown_node。在這個結構裏有個jint32 _t類型
的hdr_crc變量它代表文件頭部中其它域的CRC校驗值。這
說明JFFS2文件係統使用的是CRC循環冗餘校驗碼。
YAFFS2文件係統是一種類日誌文件係統專用於NAND
型Flash設備。其儲存數據的基本單位是chunk相當於Flash
的頁。Chunk中的 數據包括兩部分一部分是數據區占用Flash
的一頁另一部分是文件信息及冗餘數據區占用Flash頁的
OOB區。其冗餘數據主要是ECC校驗資 料對於小頁每頁
512字節的Flash每頁有6字節的ECC數據對於大頁每
頁2048字節的Flash每頁有24字節的ECC資 料。
掉電保護 掉電保護的目的是在係統意外失去供電的情況下保證
係統運行狀態的確定性以及記錄數據的完整性當係統供電恢複
後現場數據可以及時恢複避免係統產生 混亂。很多文件係
統出於運行速度考慮在程序運行過程中常將數據暫存在
SDRAM中一旦係統意外掉電往往會造成數據丟失。
Cramfs文件係統將文件係統內容解壓到內存中由於其不
能寫入文件係統的內容無法更改因此不存在掉電保護的問題。
JFFS2是一種日誌結構文件係統因此不論電源以何種方
式在哪個時刻停止供電JFFS2都能保持數據完整性。當係統
遭受不正常斷電後重新啟動 時JFFS2自動將係統恢複到斷電
前最後一個穩定狀態。需要注意的是文件係統在最後一個穩定
狀態之後發生的任何改變都無法進行恢複。
YAFFS2是一種類日誌文件係統可以在意外掉電重啟後
自動提供可靠的數據記錄防止文件係統的崩潰。它使用獨立的
日誌文件跟蹤文件係統內容的變化。舉 例來說當應用程序需
要寫Flash的某一頁時它首先修改的是存放於文件日誌中的一
塊鏡像隻有當日誌中的鏡像複製到文件係統中後數據才真實
地寫到該 頁上。當發生意外掉電重啟後YAFFS2沒有像JFFS2
那樣使用舊文件完全代替新寫文件而是選擇用新文件完全代替舊的文件或者已寫部分使用新文 件未寫部分使用舊文件。
這種方式增強了掉電時未完全寫入文件的安全性能特別是當意
外掉電發生在數據區時意外掉電時的文件幾乎被完好地保存下
來。
運行速度 運行速度可以從以下幾個方麵考察文件係統掛載速度
讀文件速度寫文件速度等。這裏預設的儲存介質是NAND
Flash。
一般而言壓縮的、隻讀的文件係統在啟動時需要將文件
係統解壓到SDRAM中這在一定程度上會減緩文件係統掛載速
度。但是Cramfs文件係統在設計 時充分考慮了係統掛載的時
間並沒有一次性地把文件係統的所有內容都解壓到內存中而
隻是在係統需要訪問某個位置的數據時迅速計算出該數據在
Cramfs中的位置將其解壓縮到內存之中再進行訪問操作。
由於其讀文件速度隻是找出文件地址以及訪問內存的操作所以
無論是掛載速度還是讀文 件速度 Cramfs文件係統都比
JFFS2和YAFFS2文件係統要快。
JFFS2文件係統的掛載可以分為以下幾個步驟進行
1. 檢查每個節點CRC校驗碼的合法性在內存中為每個節點每個節點分配必需的相關的結構
2. 掃瞄每個i節點的物理節點鏈表建立鏈接
3. 釋放掃瞄過程中使用的臨時信息。
可以看出這個過程還是很複雜的更重要的是在JFFS2
文件係統被掛載時需要對整個Flash儲存區域進行掃瞄這就
耗費了大量的時間因此 JFFS2文件係統的開機速度非常緩慢。
與JFFS2相比YAFFS2減少了一些功能掛載時隻需掃瞄Flash
內存的空閑區根據從OOB備份資 料區中讀取的yaffs_tags
信息判讀是文件頭頁麵還是資料頁麵再根據相應信息在內存中
為每個文件建立一個對應的yaffs_object對 象。由於YAFFS2
在係統加載時隻需掃瞄各個頁麵的OOB區即可建立起整個文
件係統的結構而不需要像JFFS2那樣掃瞄整個Flash設備
因此大 大加快了文件係統的啟動速度。但是YAFFS2仍然要
求對整個Flash設備所有頁的空閑進行掃瞄這就導致當Flash
設備儲存空間變大時係統掃瞄 時間會直線上升。
在文件係統運行時JFFS2需要維護幾個鏈表來管理擦寫
塊。根據擦寫塊上的內容一個擦寫塊可能會在不同的鏈表上。
具體來說當一個擦寫塊上都是合法 valid的節點時它會
在clean_list上當一個擦寫塊包含至少一個過時obsolete
的節點時它會在dirty_list上當 一個擦寫塊被擦寫完畢並被寫入Cleanmarker節點後它會在free_list上。正是以這些
鏈表為基礎 JFFS2文件係統才可以實現垃圾回收、損耗平衡
等性能。文件係統掛載時YAFFS2在內存中建立一個層次結構
的索引可以看作是一個文件樹。樹的最底 層指向實際存放文
件的頁麵高層則是一層層的索引目錄。文件樹是通過一個聯合
結構的節點來實現的。聯合結構是固定大小32字節當它
處於最底層時 由16個2字節入口來查找頁麵ID當處於其
它層時由8個4字節指針指向其它更低層的節點。每個文件對
應一個文件樹便於檢索。在以NAND Flash為儲存介質的嵌入
式係統中YAFFS2的文件讀寫性能都優於JFFS2。
占用資源 在嵌入式係統中內存和外部內存資源匱乏需要節約使
用。因此占用的內存和外部內存資源量也是衡量嵌入式文件係統
的一個重要指針。
如果使用RAMDISK方式運行文件係統那麼在係統運行
之後首先要把Flash上的映像文件解壓到內存中才可以開始
運行程序。這樣同樣的程序代碼 不僅在外部內存中占據了空
間而且由於解壓縮還在內存中占用了更大的空間。Cramfs
雖然是一個壓縮式的文件係統但前麵已介紹過它並不需要一
次性地將所有內容解壓到內存之中。由於其對文件內容的壓縮因此無論是外部內存還是內存 Cramfs都比JFFS2和YAFFS2
占用更少的資源。
JFFS2將文件係統的數據和原數據以節點的形式儲存在
Flash上其冗餘數據隻是節點頭部的CRC校驗碼並且在儲
存時對節點的數據進行了壓縮。與之 相比YAFFS2不僅儲存
了頁數據的ECC校驗碼並且沒有Flash設備OOB區儲存數
據而是用來儲存頁節點信息。其映像也是由若幹個頁麵組成
沒 有對數據進行壓縮因此YAFFS2文件係統映像大大超過了
JFFS2文件係統映像。實驗表明普通YAFFS2映像的大小約
為同樣JFFS2映像大小的 2倍。當文件係統在內存中運行時
JFFS2在內存中定義了若幹鏈表YAFFS2在內存中為每個文
件創建一個文件樹。盡管為每個文件建立一個文件 樹需要消耗
掉不少的內存但是比起維護JFFS2所需的鏈表消耗的內存
還是少一些。在實際運行中YAFFS2占用的內存要小於JFFS2
文件係 統。
使用範圍 要使用Cramfs或JFFS2文件係統離不開MTD驅動程
序層的支持。MTDMemory Technology Device是Linux中
的一個儲存設備通用界麵層。雖然也可以建立在RAM上但它
是專為基於Flash的設備而設計的。MTD包含特定Flash 芯片的驅動程序 Flash芯片驅動向上層提供讀、寫、擦除等基本
的Flash操作方法。MTD對這些操作進行封裝後向用戶層提供
MTD char和MTD block類型的設備。MTD char類型的設備包
括/dev/mtd0等可以對Flash的原始字符訪問MTD block類
型的設備包括/dev/mtdblock0等將Flash模擬成塊設備這樣
就可以在這些塊設備上創建Cramfs或JFFS2等格式的文 件係
統。在對用戶層的界麵上 Cramfs或JFFS2文件係統還需要
操作係統VFS虛擬文件係統的支持。
同樣YAFFS2文件係統支持使用MTD驅動層和VFS層
這也是一般在嵌入式Linux或者μClinux操作係統中使用
YAFFS2文件係統的常用 方法。除此之外YAFFS2還帶有
NAND Flash芯片驅動並為嵌入式係統提供了直接訪問文件係
統的API用戶可以不使用Linux中的MTD和VFS直接對文
件進行操作。圖1 為嵌入式係統的文件係統結構。
YAFFS2中的YAFFS2 Direct提供了直接的文件係統界
麵因此在那些沒有VFS層的嵌入式係統中也可使用YAFFS2。
YAFFS2文件係統的使用範圍要比Cramfs和 JFFS2文件係統
廣泛但是需要注意的是YAFFS2隻能用在NAND Flash儲存
設備上。
結論 這3種嵌入式文件係統在嵌入式係統中的應用非常廣泛
但是又具有各自的特點。表2 比較了3種文件係統的主要性能
並歸納出各自最適用的領域。
具體分析如下
1. Cramfs是最早的一種嵌入式文件係統它隻儲存了最少的信
息對文件內容進行了壓縮運行速度比較
快。但是由於其不能寫入不支持超過16 MB大小的文件因
此廣泛地應用於儲存空間小、文件係統內容
較少並且不需要用戶寫入的嵌入式係統中。
2. JFFS2是一種較早的Flash專用文件係統。目前已有很多
JFFS2應用於μClinux以及嵌入式Linux的例子。事
實上它已經成為新版Linux中的一種標準文件係統。
同時它對NOR Flash和NAND Flash提供支持針對兩種Flash
設備共同的特性提供掉電保護和損耗平衡等
功能可供用戶讀寫十分適合於同時用到這兩種Flash設備的
嵌入式係統。
3. YAFFS2是專為NAND Flash設計的文件係統它充分考慮
了NAND Flash設備的特性支持ECC校驗提 供掉電保護和損耗平衡功能運行和掛載速度都比JFFS2要快。
它支持操作係統廣泛包括常見的嵌入
式Linux、WinCE、μClinux。由於它提供Direct界麵因此稍
加修改也可使用在沒有操作係統的嵌入式
係統中。目前被廣泛應用於使用NAND Flash作為儲存設備的
嵌入式係統中。
針對具體應用可以在考察各種文件係統特點的基礎上
選擇更適合自身係統的一種文件係統解決方案。比如在許多以
NAND Flash為儲存介質的應用係統中都用到「Cramfs
YAFFS2」文件係統。以Cramfs作為根文件係統既提高了啟
動速度也能保護根文件不 受破壞使用YAFFS2作為用戶文
件係統在保證用戶可以自由讀寫文件的基礎上提高了文件係
統的安全性和運行速度不失為一種優良的嵌入式文件係統解
決方案。
由 於嵌入式係統自身存在一些特殊要求使得一些傳
統的文件係統 (如FAT、EXT2等) 並不十分適合。專
用的嵌入式文件係統應有一些自身的特性如文件係統
麵對的儲存介質特殊性、文件係統應具有的跨平台的安
全性以及整個係統的實時性等。本 文介紹了3種源
碼開放的嵌入式文件係統Cramfs、JFFS2、YAFFS2
詳細分析比較了這3種文件係統的主要性能並根據分
析結果指出了各自的適 用領域
Cramfs、JFFS2、YAFFS2是3種性能優越專用於嵌入式係
統的文件係統。本文通過對這3種文件係統的設計原理和主要性
能進行分析與比較歸 納出各自的選型依據據和適用領域。
三種文件係統的介紹 Cramfs Cramfs是Linux的創始人Linus Torvalds開發的一種隻讀
文件係統采用了zlib壓縮壓縮比一般可以達到12但仍
可以做到高效的隨機讀取。在Linux係統中通常把不需 要經
常修改的目錄壓縮存放在係統引導時再將壓縮文件解開。
Cramfs並不需要一次性地把文件係統的所有內容都解壓到內存
中而隻是在係統需要訪問某 個位置的數據時馬上計算出該數據在Cramfs中的位置將其解壓縮到內存之中然後通過對
內存的訪問來獲取需要讀取的數據。
JFFS2 JFFS意為「Journaling Flash File System」該文件係統
是瑞典Axis通信公司開發的一種基於Flash內存的日誌文件係
統。該公司於1999年在GNU/Linux上發行了第一 版JFFS文
件係統後來經過Redhat公司的發展現在已經發行了第二個
版本的JFFS2其全部程序代碼都是可供研究開發的。它在設
計時充分考慮了嵌 入式係統中Flash內存的讀寫特性確保在
係統掉電時正在讀寫的文件不受影響同時其儲存策略以及
抗疲勞性等方麵也在第一版的基礎上進行了改進。 目前JFFS2
廣泛應用於嵌入式係統中尤其是嵌入式μClinux操作係統中。
YAFFS2 YAFFS意為「Yet Another Flash File System」是目前
唯一一個專門為NAND Flash設計的文件係統。它采用了類日誌
結構結合NAND Flash的特點提供了損耗平衡和掉電保護機
製可以有效地避免意外掉電對文件係統一致性和完整性的影
響。Aleph One公司於2002年5月發布了第一版YAFFS程序
代碼用戶可以很方便地在網站上下載到。第一版的YAFFS隻
支持每頁512字節的NAND Flash。 YAFFS2是YAFFS的升級版即支持每頁512字節的NAND Flash內存也支持每頁
2048字節的NAND Flash內存。
Flash內存 Flash設備特點
相對於傳統儲存介質Flash內存具有如下優點
˙ 可靠性高采用Flash為儲存介質可以確保100萬次以上的
可靠寫入
˙ 儲存速度快寫入∕讀取均可接近1Mb/s
˙ 使用方便具有很強的環境適應能力。
但是由於其製造製程的問題還存在以下缺點
˙ 讀取和寫入以頁為單位擦除以塊為單位
˙ 易出現隨機壞塊
˙ 塊與塊之間使用不均衡會導致壽命問題。
NOR Flash和NAND Flash
基於NOR技術的Flash內存是最早出現的Flash內存它
具有以下特點
˙ 程序和數據可存放在同一芯片上擁有獨立的數據總線和地址
總線支持快速隨機讀取允許係統直接從Flash中讀取程序代碼並執行而無需先將程序代碼下載至RAM中再執行
˙ 可以單字節或單字程序化但必須以塊為單位進行擦除操作。
由於NOR Flash內存的擦除和程序化速度較慢而塊尺寸
又比較大因此擦除和程序化操作所花費的時間很長。目前
NOR Flash內存大多隻用於儲存嵌入式係統的啟動程序代碼。
NAND Flash內存可以順序讀取儲存單元的內容由於製
程上的進步其容量越來越大單位價格越來越便宜正逐步成
為Flash內存的主流。NAND Flash內存具有以下特點
˙ 以頁為單位進行讀寫操作以塊為單位進行擦除操作頁大小
為512字節或2048字節每頁不僅有
數據區還有幾十字節的空閑區。
˙ 數據、地址采用同一總線接口串行讀取。
˙ 芯片尺寸小接腳少單位成本低。
˙ 芯片內含有失效塊並且在使用過程中可能會出現隨機壞塊。
表1 比較了這兩種Flash內存的性能參數。
三種嵌入式文件係統主要性能分析與比較 數據安全、運行速度、占用資源、使用範圍等是嵌入式文
件係統的主要性能指針。下麵從這幾個方麵入手對這三種嵌入
式文件係統進行分析與比較。
數據安全 當前的嵌入式係統主要使用固態Flash芯片作為儲存設備。
由於Flash設備自身的特點以及嵌入式係統工作環境的複雜多
樣性如何保證數據的安全是嵌入 式文件係統首先要考慮的問
題。數據安全主要包括數據冗餘和掉電保護等部分。
資料冗餘
提高數據安全性的最有效措施是增加數據的冗餘而數據的大量冗餘又給維護資料一致性
帶來困難。對此應進行合理取舍在盡量降低冗餘的前提下確保數據的安全性和可靠性。
Cramfs文件係統是一種隻讀文件係統文件係統內容不可
更改設計思想遵循「隻儲存最少的信息」甚至沒有時間戳之類的信息除了數據包的CRC校驗 信息外幾乎沒有別的數據
冗餘。
JFFS2文件係統是典型的日誌結構的文件係統它儲存的
數據是日誌式數據信息。JFFS2在Flash上隻有兩種類型的數據
實 體j.ffs2_raw_inode和jffs2_raw dirent。前者包含文件的管
理信息後者用於描述文件在文件係統中的位置。真正的數據信
息就保持在jffs2_raw_inode節點的後麵大部分 管理的信息都
是在係統掛載之後建立起來的。兩種數據實體有著公共的文件頭
結構jffs2 _ unknown_node。在這個結構裏有個jint32 _t類型
的hdr_crc變量它代表文件頭部中其它域的CRC校驗值。這
說明JFFS2文件係統使用的是CRC循環冗餘校驗碼。
YAFFS2文件係統是一種類日誌文件係統專用於NAND
型Flash設備。其儲存數據的基本單位是chunk相當於Flash
的頁。Chunk中的 數據包括兩部分一部分是數據區占用Flash
的一頁另一部分是文件信息及冗餘數據區占用Flash頁的
OOB區。其冗餘數據主要是ECC校驗資 料對於小頁每頁
512字節的Flash每頁有6字節的ECC數據對於大頁每
頁2048字節的Flash每頁有24字節的ECC資 料。
掉電保護 掉電保護的目的是在係統意外失去供電的情況下保證
係統運行狀態的確定性以及記錄數據的完整性當係統供電恢複
後現場數據可以及時恢複避免係統產生 混亂。很多文件係
統出於運行速度考慮在程序運行過程中常將數據暫存在
SDRAM中一旦係統意外掉電往往會造成數據丟失。
Cramfs文件係統將文件係統內容解壓到內存中由於其不
能寫入文件係統的內容無法更改因此不存在掉電保護的問題。
JFFS2是一種日誌結構文件係統因此不論電源以何種方
式在哪個時刻停止供電JFFS2都能保持數據完整性。當係統
遭受不正常斷電後重新啟動 時JFFS2自動將係統恢複到斷電
前最後一個穩定狀態。需要注意的是文件係統在最後一個穩定
狀態之後發生的任何改變都無法進行恢複。
YAFFS2是一種類日誌文件係統可以在意外掉電重啟後
自動提供可靠的數據記錄防止文件係統的崩潰。它使用獨立的
日誌文件跟蹤文件係統內容的變化。舉 例來說當應用程序需
要寫Flash的某一頁時它首先修改的是存放於文件日誌中的一
塊鏡像隻有當日誌中的鏡像複製到文件係統中後數據才真實
地寫到該 頁上。當發生意外掉電重啟後YAFFS2沒有像JFFS2
那樣使用舊文件完全代替新寫文件而是選擇用新文件完全代替舊的文件或者已寫部分使用新文 件未寫部分使用舊文件。
這種方式增強了掉電時未完全寫入文件的安全性能特別是當意
外掉電發生在數據區時意外掉電時的文件幾乎被完好地保存下
來。
運行速度 運行速度可以從以下幾個方麵考察文件係統掛載速度
讀文件速度寫文件速度等。這裏預設的儲存介質是NAND
Flash。
一般而言壓縮的、隻讀的文件係統在啟動時需要將文件
係統解壓到SDRAM中這在一定程度上會減緩文件係統掛載速
度。但是Cramfs文件係統在設計 時充分考慮了係統掛載的時
間並沒有一次性地把文件係統的所有內容都解壓到內存中而
隻是在係統需要訪問某個位置的數據時迅速計算出該數據在
Cramfs中的位置將其解壓縮到內存之中再進行訪問操作。
由於其讀文件速度隻是找出文件地址以及訪問內存的操作所以
無論是掛載速度還是讀文 件速度 Cramfs文件係統都比
JFFS2和YAFFS2文件係統要快。
JFFS2文件係統的掛載可以分為以下幾個步驟進行
1. 檢查每個節點CRC校驗碼的合法性在內存中為每個節點每個節點分配必需的相關的結構
2. 掃瞄每個i節點的物理節點鏈表建立鏈接
3. 釋放掃瞄過程中使用的臨時信息。
可以看出這個過程還是很複雜的更重要的是在JFFS2
文件係統被掛載時需要對整個Flash儲存區域進行掃瞄這就
耗費了大量的時間因此 JFFS2文件係統的開機速度非常緩慢。
與JFFS2相比YAFFS2減少了一些功能掛載時隻需掃瞄Flash
內存的空閑區根據從OOB備份資 料區中讀取的yaffs_tags
信息判讀是文件頭頁麵還是資料頁麵再根據相應信息在內存中
為每個文件建立一個對應的yaffs_object對 象。由於YAFFS2
在係統加載時隻需掃瞄各個頁麵的OOB區即可建立起整個文
件係統的結構而不需要像JFFS2那樣掃瞄整個Flash設備
因此大 大加快了文件係統的啟動速度。但是YAFFS2仍然要
求對整個Flash設備所有頁的空閑進行掃瞄這就導致當Flash
設備儲存空間變大時係統掃瞄 時間會直線上升。
在文件係統運行時JFFS2需要維護幾個鏈表來管理擦寫
塊。根據擦寫塊上的內容一個擦寫塊可能會在不同的鏈表上。
具體來說當一個擦寫塊上都是合法 valid的節點時它會
在clean_list上當一個擦寫塊包含至少一個過時obsolete
的節點時它會在dirty_list上當 一個擦寫塊被擦寫完畢並被寫入Cleanmarker節點後它會在free_list上。正是以這些
鏈表為基礎 JFFS2文件係統才可以實現垃圾回收、損耗平衡
等性能。文件係統掛載時YAFFS2在內存中建立一個層次結構
的索引可以看作是一個文件樹。樹的最底 層指向實際存放文
件的頁麵高層則是一層層的索引目錄。文件樹是通過一個聯合
結構的節點來實現的。聯合結構是固定大小32字節當它
處於最底層時 由16個2字節入口來查找頁麵ID當處於其
它層時由8個4字節指針指向其它更低層的節點。每個文件對
應一個文件樹便於檢索。在以NAND Flash為儲存介質的嵌入
式係統中YAFFS2的文件讀寫性能都優於JFFS2。
占用資源 在嵌入式係統中內存和外部內存資源匱乏需要節約使
用。因此占用的內存和外部內存資源量也是衡量嵌入式文件係統
的一個重要指針。
如果使用RAMDISK方式運行文件係統那麼在係統運行
之後首先要把Flash上的映像文件解壓到內存中才可以開始
運行程序。這樣同樣的程序代碼 不僅在外部內存中占據了空
間而且由於解壓縮還在內存中占用了更大的空間。Cramfs
雖然是一個壓縮式的文件係統但前麵已介紹過它並不需要一
次性地將所有內容解壓到內存之中。由於其對文件內容的壓縮因此無論是外部內存還是內存 Cramfs都比JFFS2和YAFFS2
占用更少的資源。
JFFS2將文件係統的數據和原數據以節點的形式儲存在
Flash上其冗餘數據隻是節點頭部的CRC校驗碼並且在儲
存時對節點的數據進行了壓縮。與之 相比YAFFS2不僅儲存
了頁數據的ECC校驗碼並且沒有Flash設備OOB區儲存數
據而是用來儲存頁節點信息。其映像也是由若幹個頁麵組成
沒 有對數據進行壓縮因此YAFFS2文件係統映像大大超過了
JFFS2文件係統映像。實驗表明普通YAFFS2映像的大小約
為同樣JFFS2映像大小的 2倍。當文件係統在內存中運行時
JFFS2在內存中定義了若幹鏈表YAFFS2在內存中為每個文
件創建一個文件樹。盡管為每個文件建立一個文件 樹需要消耗
掉不少的內存但是比起維護JFFS2所需的鏈表消耗的內存
還是少一些。在實際運行中YAFFS2占用的內存要小於JFFS2
文件係 統。
使用範圍 要使用Cramfs或JFFS2文件係統離不開MTD驅動程
序層的支持。MTDMemory Technology Device是Linux中
的一個儲存設備通用界麵層。雖然也可以建立在RAM上但它
是專為基於Flash的設備而設計的。MTD包含特定Flash 芯片的驅動程序 Flash芯片驅動向上層提供讀、寫、擦除等基本
的Flash操作方法。MTD對這些操作進行封裝後向用戶層提供
MTD char和MTD block類型的設備。MTD char類型的設備包
括/dev/mtd0等可以對Flash的原始字符訪問MTD block類
型的設備包括/dev/mtdblock0等將Flash模擬成塊設備這樣
就可以在這些塊設備上創建Cramfs或JFFS2等格式的文 件係
統。在對用戶層的界麵上 Cramfs或JFFS2文件係統還需要
操作係統VFS虛擬文件係統的支持。
同樣YAFFS2文件係統支持使用MTD驅動層和VFS層
這也是一般在嵌入式Linux或者μClinux操作係統中使用
YAFFS2文件係統的常用 方法。除此之外YAFFS2還帶有
NAND Flash芯片驅動並為嵌入式係統提供了直接訪問文件係
統的API用戶可以不使用Linux中的MTD和VFS直接對文
件進行操作。圖1 為嵌入式係統的文件係統結構。
YAFFS2中的YAFFS2 Direct提供了直接的文件係統界
麵因此在那些沒有VFS層的嵌入式係統中也可使用YAFFS2。
YAFFS2文件係統的使用範圍要比Cramfs和 JFFS2文件係統
廣泛但是需要注意的是YAFFS2隻能用在NAND Flash儲存
設備上。
結論 這3種嵌入式文件係統在嵌入式係統中的應用非常廣泛
但是又具有各自的特點。表2 比較了3種文件係統的主要性能
並歸納出各自最適用的領域。
具體分析如下
1. Cramfs是最早的一種嵌入式文件係統它隻儲存了最少的信
息對文件內容進行了壓縮運行速度比較
快。但是由於其不能寫入不支持超過16 MB大小的文件因
此廣泛地應用於儲存空間小、文件係統內容
較少並且不需要用戶寫入的嵌入式係統中。
2. JFFS2是一種較早的Flash專用文件係統。目前已有很多
JFFS2應用於μClinux以及嵌入式Linux的例子。事
實上它已經成為新版Linux中的一種標準文件係統。
同時它對NOR Flash和NAND Flash提供支持針對兩種Flash
設備共同的特性提供掉電保護和損耗平衡等
功能可供用戶讀寫十分適合於同時用到這兩種Flash設備的
嵌入式係統。
3. YAFFS2是專為NAND Flash設計的文件係統它充分考慮
了NAND Flash設備的特性支持ECC校驗提 供掉電保護和損耗平衡功能運行和掛載速度都比JFFS2要快。
它支持操作係統廣泛包括常見的嵌入
式Linux、WinCE、μClinux。由於它提供Direct界麵因此稍
加修改也可使用在沒有操作係統的嵌入式
係統中。目前被廣泛應用於使用NAND Flash作為儲存設備的
嵌入式係統中。
針對具體應用可以在考察各種文件係統特點的基礎上
選擇更適合自身係統的一種文件係統解決方案。比如在許多以
NAND Flash為儲存介質的應用係統中都用到「Cramfs
YAFFS2」文件係統。以Cramfs作為根文件係統既提高了啟
動速度也能保護根文件不 受破壞使用YAFFS2作為用戶文
件係統在保證用戶可以自由讀寫文件的基礎上提高了文件係
統的安全性和運行速度不失為一種優良的嵌入式文件係統解
決方案。
最後更新:2017-04-03 16:49:01