文件系統的概念
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。
操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統。
文件系統由三部分組成:
1. 文件系統的接口 用于管理文件的基礎編程接口
2. 對對象操縱和管理的軟件集使用基礎編程接口實現的具有多種復雜功能的軟件
3. 對象及屬性 文件對象的存儲結構以及保存形式(存儲器的物理介質)
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。
具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶不再使用時撤銷文件等。
嵌入式文件系統
嵌入式文件系統,是嵌入式系統中使用的文件系統,功能與通用的文件系統一樣。
嵌入式系統是與應用緊密結合的,它具有很強的專用性,必須結合實際系統需求進行合理的裁減利用。
嵌入式系統具有一些通用計算機所不具有的一些特點: 嵌入式系統的特點包括:系統內核小、專用性強、系統精簡、實時性等。具體而言,它主要有如下八個特點:
1. 可裁剪性。支持開放性和可伸縮性的體系結構。
2. 強實時性。EOS實時性一般較強,可用于各種設備控制中。
3. 統一的接口。提供設備統一的驅動接口。
4. 操作方便、簡單、提供友好的圖形GUI和圖形界面,追求易學易用;提供強大的網絡功能,支持TCP/IP協議及其他協議,提供TCP/UDP/IP/PPP協議支持及統一的MAC訪問層接口,為各種移動計算設備預留接口。
5. 強穩定性,弱交互性。嵌入式系統一旦開始運行就不需要用戶過多的干預、這就要負責系統管理的EOS具有較強的穩定性。嵌入式操作系統的用戶接口一般不提供操作命令,它通過系統的調用命令向用戶程序提供服務。
6. 固化代碼。在嵌入式系統中,嵌入式操作系統和應用軟件被固化在嵌入式系統計算機的ROM中。
7. 更好的硬件適應性。也就是良好的移植性。
8. 嵌入式系統和具體應用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式系統產品一旦進入市場,具有較長的生命周期。
針對以上特點,嵌入式系統中使用的文件系統,需要專門根據不同情況,進行更加優化的設計,以確保文件數據的安全與可靠。
嵌入式文件系統特點
嵌入式文件系統雖然繼承了通用文件系統的組織結構,但由于功能和作用與普通桌面操作系統的文件系統不同,同時又有自己的特點
1. 在嵌入式系統中,文件系統是嵌入式系統的一個組成模塊。它是作為系統的一個可加載選項提供給用戶,由用戶決定是否需要加載它。
2. 需要滿足結構緊湊、代碼量小的特點,合理地對文件存儲器進行管理。嵌入式系統中的文件存儲器空間相對不會太大,必須對其進行高效的管理,以避免對資源的浪費。
3. 使用簡單便捷。用戶只要知道文件名、文件路徑等簡單信息特征,就可以方便地對文件進行操作,不必知道文件在具體物理存儲空間的運作過程。
4. 安全可靠。對文件、數據的保護是文件系統的基本功能。嵌入式系統的應用通常要求系統必須有較高的可靠性。
5. 支持多種存儲設備、可伸縮、可剪裁、可移植等特點。嵌入式應用的領域相當廣泛,其采用的硬件環境和操作系統也各不相同。為了適應這種差異性,文件系統應降低對具體硬件環境和操作系統的依賴,具備良好的可移植性。
#小型Flash文件系統嵌入式文件系統存儲介質一般是Flash芯片,常用的嵌入式文件系統比較出名的有Cramfs、JFFS、Yaffs三種文件系統。
Flash芯片是嵌入式系統中廣泛采用的主流存儲器,主要特點是按整體/扇區擦除和按字節編程、低功耗、高密度、小體積。
1. JFFS2
JFFS2 是 RedHat 的 David Woodhouse 在 JFFS 基礎上改進的文件系統,是用于微型嵌入式設備的原始閃存芯片的實際文件系統。 JFFS2 文件系統是日志結構化的可讀寫的文件系統。
JFFS2 的優缺點如下: 1. 優點使用了壓縮的文件格式。最重要的特性是可讀寫操作。 2. 缺點 JFFS2 文件系統掛載時需要掃描整個 JFFS2 文件系統,因此當 JFFS2 文件系統分區增大時,掛載時間也會相應的變長。使用JFFS2 格式可能帶來少量的 Flash 空間的浪費。這主要是由于日志文件的過度開銷和用于回收系統的無用存儲單元,浪費的空間大小大致是若干個數據段。 JFFS2 的另一缺點是當文件系統已滿或接近滿時, JFFS2 運行速度會迅速降低。這是因為垃圾收集的問題。加載 JFFS2 文件系統時的步驟如下:
1. 掃描整個芯片,對日志節點進行校驗,并且將日志節點全部裝入內存緩存。
2. 對所有日志節點進行整理,抽取有效的節點并整理出文件目錄信息。
3. 找出文件系統中無效節點并且將它們刪除。
4. 最后整理內存中的信息,將加載到緩存中的無效節點釋放。
由此可以看出雖然這樣能有效地提高系統的可靠性,但是在一定程度上降低了系統的速度。尤其對于較大的閃存芯片,加載過程會更慢。所以JFFS2比較適用于容量較小的Flash,例如路由器等容量在2MB~64MB級別的存儲器中使用的比較多
JFFS2 的制作方法為:
hisilicon$ mkfs.jffs2 -d ./rootfs -l -e 0x20000 -o jffs2-root.img
參數說明
· d:指定根文件系統
· l:little-endian 小端模式
· e:Flash 的塊大小
· o:輸出映像文件
2. YAFFS2
YAFFS2 是專門為 NAND Flash 設計的嵌入式文件系統。它是日志結構的文件系統,提供了損耗平衡和掉電保護,可以有效地避免意外掉電對文件系統一致性和完整性的影響。
YAFFS2 的優缺點如下:
· 優點
1. 專門針對 NAND Flash,軟件結構得到優化,速度快。
2. 使用硬件的 spare area 區域存儲文件組織信息,啟動時只需掃描組織信息,啟動比較快。
3. 采用多策略垃圾回收算法,能夠提高垃圾回收的效率和公平性,達到損耗平衡的目的。
· 缺點 沒有采用壓縮的文件格式。當包含的內容相同時, YAFFS2 鏡像文件要比 jffs2 鏡像文件大。
3. SquashFS
SquashFS 是另一種可用于 flash 設備的 Linux 只讀文件系統。 SquashFS 具有極高的壓縮率,數據(data),節點(inode)和目錄(directories)都被壓縮。常用于存儲介質很有限的場景。
SquashFS 保存了全部的 32 位 UID/GIDS 和文件的創建時間,支持多達 4G 的文件系統, SquashFS 使用簡單,響應速度快。
SquashFS 是一種新的文件系統,它對 CramFS 的特點作了進一步的改進,并突破了CramFS 的一些限制。其優點如下:
1. SquashFS 具有更高的壓縮率
2. SquashFS 的響應速度更快
3. CramFS 文件系統支持的最大文件為 16M,而 SquashFS 多達 4G
4. CramFS 文件系統大小限制略大于 256M,而 SquashFS 多達 4G