一、FLASH转换层(FTL)数据结构
EXt2/EXT3/EXT4文件系统能够经过FTL实现对flash的支持,由于FTL能够将闪存flash模拟成磁盘结构。spa
在ext2文件系统的基础上上,为了保证数据的一致性ext3文件系统增长了日志功能。日志
在ext3文件系统的基础上ext4文件系统增长了对大文件(T单位级的文件)的支持,另外对于每一个目录下的文件个数没有了限制。blog
二、JFFS、JFFS2文件系统(链表结构,典型的日志文件系统)接口
书上是这样说的:内存
JFFS2 是一个日志结构(log-structured)的文件系统,它在闪存上顺序地存储包含数据和原数据(meta-data)的节点。 JFFS2 的日志结构存储方式使得它能对闪存进行 out-of-place 更新,而不是磁盘所采用的 in-place 更新方式。它提供的垃圾回收机制,使得咱们不须要立刻对擦写越界的块进行擦写,而只须要对其设置一个标志,标明为“脏”块。当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,因为 JFFS2 基于日志结构,在乎外掉电后仍然能够保持数据的完整性,而不会丢失数据。所以, JFFS2 成为了目前 Flash 上应用最普遍的文件系统。flash
JFFS2 挂载时须要扫描整块 Flash 以肯定节点的合法性以及创建必要的数据结构,这使得 JFFS2 挂载时间比较长。又因为 JFFS2 将节点信息保存在内存中,使得它所占用的内存量和节点数目成正比。再
者,因为 JFFS2 经过随机方式来实现磨损平衡,它不能保证磨损平衡的肯定性 。
三、YAFFS、YAFFS2class
YAFFS2 可以更好地支持大容量的 NAND Flash 芯片,而前者只针对页大小为 512 字节的 NAND 。
基础
四、UBIFS(Unsorted Block Images File System)垃圾回收
UBI:是一种相似于LVM的逻辑卷管理层,主要实现wear-leaving和volume management功能。
UBIFS:这是基于UBI的FLASH日志文件系统。UBIFS并不直接工做于MTD之上而是工做于UBI卷之上。
涉及到三个子系统
一、MTD子系统,提供对flash芯片的访问接口,MTD子系统提供了MTDdevice的概念,能够被认为是裸的flash(raw flash,区别于带有FTL的flash或者SSD)
二、UBI subsystem,为flashdevice提供了wear-leaving和volume management功能。UBI工做在MTD设备之上,提供了UBI volume;UBI是MTD设备的高层表示,对上层屏蔽了一些直接使用MTD设备须要处理的问题,好比wear-leaving以及坏块管理
三、UBIFS文件系统,工做在UBI之上,其中坏块管理,磨损均衡,错误预测等功能有UBI子系统完成,UBIFS不予关心。