1、FLASH轉換層(FTL)
EXt2/EXT3/EXT4文件系統可以通過FTL實現對flash的支持,因為FTL可以將閃存flash模擬成磁盤結構。
在ext2文件系統的基礎上上,為了保證數據的一致性ext3文件系統增加了日志功能。
在ext3文件系統的基礎上ext4文件系統增加了對大文件(T單位級的文件)的支持,另外對於每個目錄下的文件個數沒有了限制。
2、JFFS、JFFS2文件系統(鏈表結構,典型的日志文件系統)
書上是這樣說的:
JFFS2 是一個日志結構(log-structured)的文件系統,它在閃存上順序地存儲包含數據和原數據(meta-data)的節點。 JFFS2 的日志結構存儲方式使得它能對閃存進行 out-of-place 更新,而不是磁盤所采用的 in-place 更新方式。它提供的垃圾回收機制,使得我們不需要馬上對擦寫越界的塊進行擦寫,而只需要對其設置一個標志,標明為“臟”塊。當可用的塊數不足時,垃圾回收機制才開始回收這些節點。同時,由於 JFFS2 基於日志結構,在意外掉電后仍然可以保持數據的完整性,而不會丟失數據。因此, JFFS2 成為了目前 Flash 上應用最廣泛的文件系統。
JFFS2 掛載時需要掃描整塊 Flash 以確定節點的合法性以及建立必要的數據結構,這使得 JFFS2 掛載時間比較長。又由於 JFFS2 將節點信息保存在內存中,使得它所占用的內存量和節點數目成正比。再
者,由於 JFFS2 通過隨機方式來實現磨損平衡,它不能保證磨損平衡的確定性 。
3、YAFFS、YAFFS2
YAFFS2 能夠更好地支持大容量的 NAND Flash 芯片,而前者只針對頁大小為 512 字節的 NAND 。
4、UBIFS(Unsorted Block Images File System)
UBI:是一種類似於LVM的邏輯卷管理層,主要實現wear-leaving和volume management功能。
UBIFS:這是基於UBI的FLASH日志文件系統。UBIFS並不直接工作於MTD之上而是工作於UBI卷之上。
涉及到三個子系統
1、MTD子系統,提供對flash芯片的訪問接口,MTD子系統提供了MTDdevice的概念,可以被認為是裸的flash(raw flash,區別於帶有FTL的flash或者SSD)
2、UBI subsystem,為flashdevice提供了wear-leaving和volume management功能。UBI工作在MTD設備之上,提供了UBI volume;UBI是MTD設備的高層表示,對上層屏蔽了一些直接使用MTD設備需要處理的問題,比如wear-leaving以及壞塊管理
3、UBIFS文件系統,工作在UBI之上,其中壞塊管理,磨損均衡,錯誤預測等功能有UBI子系統完成,UBIFS不予關心。