嵌入式系統中常用的文件系統


嵌入式系統中常用文件系統包括cramfs、jffs2NFSinitrdext4、squashfsubifs等。它們的特點如下:

1、cramfs jffs2 具有好的空間特性,很適合嵌入式產品應用。 

2、cramfs squashfs 為只讀文件系統,目前只有 SPI Nor FLASH 支持這兩種文件系統 。

3、squashfs 壓縮率最高。

4、jffs2 為可讀寫文件系統。

5、NFS 文件系統適用於開發初期的調試階段。

6、initrd 采用 cramfs 文件系統,為只讀。

7、ext4 文件系統用於 eMMC 卡。

一、cramfs

cramfs 是針對 Linux 內核 2.4 之后的版本所設計的一種新型文件系統,使用簡單,加載容易,速度快。

cramfs 的優點如下:

1、將文件數據以壓縮形式存儲,在需要運行時進行解壓縮,能節省 Flash 存儲空間。

cramfs 的缺點如下:

1、由於它存儲的文件是壓縮的格式,所以文件系統不能直接在 Flash 上運行。

2、文件系統運行時需要解壓數據並拷貝到內存中,在一定程度上降低讀取效率。

3、cramfs 文件系統是只讀的。

二、jffs2

jffs2 RedHat David Woodhouse jffs 基礎上改進的文件系統,是用於微型嵌入式設備的原始閃存芯片的實際文件系統。 jffs2 文件系統是日志結構化的可讀寫的文件系統。

jffs2 的優點如下:

1、使用了壓縮的文件格式。最重要的特性是可讀寫操作。

jffs2 的缺點如下:

1、jffs2 文件系統掛載時需要掃描整個 jffs2 文件系統,因此當 jffs2 文件系統分區增大時,掛載時間也會相應的變長。

2、使用 jffs2 格式可能帶來少量的 Flash 空間的浪費。 這主要是由於日志文件的過度開銷和用於回收系統的無用存儲單元,浪費的空間大小大致是若干個數據段。

3、jffs2 的另一缺點是當文件系統已滿或接近滿時,jffs2 運行速度會迅速降低。這是因為垃圾收集的問題。

加載 jffs2 文件系統時的步驟如下:

步驟1、掃描整個芯片,對日志節點進行校驗,並且將日志節點全部裝入內存緩存。

步驟2、對所有日志節點進行整理,抽取有效的節點並整理出文件目錄信息。

步驟3、找出文件系統中無效節點並且將它們刪除。

步驟4、最后整理內存中的信息,將加載到緩存中的無效節點釋放。

總結:由此可以看出雖然這樣能有效地提高系統的可靠性,但是在一定程度上降低了系統的速度。尤其對於較大的閃存芯片,加載過程會更慢。

三、ubifs

ubifs unsorted block images file system 的簡稱,用於 raw flash 設備。 ubifs 通過ubi 子系統處理與 mtd 設備之間動作。 ubifs 只能工作於 ubi volume 之上。 ubifs 涉及到的系統層次由下到上依次是:

mtd 子系統: 提供對 flash 的訪問接口;

ubi 子系統:flash device 提供了 wear-leveling volume management 功能,ubi 子系統工作在 mtd 設備之上,提供了 ubi volumeubi 子系統是 mtd 設備的高層次表示,對上層屏蔽了一些直接使用 mtd 設備需要處理的問題,比如 wearing-leveling 以及壞塊管理; ubifs 本身則工作在 ubi 子系統之上。

ubifs 具有如下優點:

1、ubifs flash 尺寸有着很好的擴展性。

2、回寫(write-back): 同 jffs2 write-through(立即寫入)相比可以顯著的提高文件系統的讀寫性能。

3、異常 unmount 適應度: ubifs 是一個日志文件系統可以容忍突然掉電以及unclean 重啟。

4、on-the_flight compression 存儲在 flash 介質上的數據是壓縮的, 同時也可以靈活的針對單個文件來打開關閉壓縮。

5、ubifs 可以從 index 破壞后恢復: ubifs 中的每一片信息都用一個 header 來描述,因此可以通過掃描整個 flash 介質來重構文件系統。

6、完整性: ubifs 通過把 checksum 寫到 flash 介質上來保證數據的完整性,文件數據或 meta-data 不會損壞;缺省的情況, ubifs 僅僅檢查 meta-data CRC 校驗。

ubifs 具有如下缺點:

1、ubifs 文件系統所有數據結構都是使用 treeubifs flash 尺寸大小在算法上是可擴展的。 但是 ubi 子系統復雜度隨着 flash size 線性增長,因此 ubi 子系統加 ubifs 整體上是線性增大的。

四、Initrd

 initrd 相當於存儲介質,它支持的文件系統格式有 ext2cramfs 等,因此內核除了支initrd 之外,還要支持 cramfs 文件系統。

五、squashfs 

squashfs 文件系統是一套基於 Linux 內核使用的壓縮只讀文件系統,壓縮率高。與 cramfs 相比,能提供更大的壓縮比,支持更大的鏡像和文件。

squashfs 具有如下特點:

1、數據(data)、 節點(inode)和目錄(directories)都被壓縮。

2、保存了全部的 32 UID/GIDS 和文件的創建時間。

3、最大支持 4G 文件系統。

4、檢測並刪除重復文件。

六、ext4

ext4 文件系統是一個高效的、優秀的、可靠的和極具特點的文件系統,相對於 ext3 改進是更深層次的,是文件系統數據結構方面的優化。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM