由于超大容量Nand Flash的普及,YAFFS等皆无法再去控制Nand Flash的空间,于是在2006年由IBM与Nokia的工程师设计开发了UBI(Unsorted Block Image)及其UBIFS文件系统,专门为了解决MTD(Memory Technology Device)设备所遇到的瓶颈。UBIFS可以认为是JFFS2文件系统的下一代产品。JFFS2运行在MTD设备之上,而UBIFS则只能工作于UBI volume之上,且与一般的block device不兼容,UBIFS涉及三个子系统:
MTD子系统,提供对flash芯片的访问接口,MTD子系统提供了MTD device的概念,比如/dev/mtdx,MTD可以认为是raw flash;
UBI subsystem,为flash device提供了wear-leveling和 volume management功能;UBI工作在MTD设备之上,提供了UBI volume;UBI是MTD设备的高层次表示,对上层屏蔽了一些直接使用MTD设备需要处理的问题,比如磨损平衡以及坏块管理;
UBIFS文件系统,工作于UBI之上。
EXT4介绍:ext4是专门为Linux开发的原始的扩展文件系统(ext或extfs)的第四版。在2006年发表的ext4,2008年在2.6.28内核版本中被加入到了Linux主线。Ext4具有很好的兼容性、伸缩性、稳定性、以及优秀的性能表现。
特性:
1.ext4属于日志型文件系统,且具有日志校验,快速的fsck支持; 2.多blocks的分配(一次分配多个空闲块)、延迟分配(空闲块分配器延迟分配空间)、在线碎片整理; 3.ext4有三种模式,分别为:journal、ordered、writeback,默认为ordered模式;
EXT4的三种模式:
1.journal
journal模式提供了完全的数据和元数据(描述数据的数据结构)的日志,所有的数据都会被先写入到日志里,然后再写入磁盘上。在文件系统崩溃的时候,日志就可以进行重放,把数据和元数据带回到一个一致性的状态,journal模式性能是三种模式中最低的,因为所有的数据都需要日志来记录。这个模式不支持延迟分配特性以及 O_DIRECT。
2.ordered(*)
在ordered模式下,ext4文件系统只提供元数据的日志,但它逻辑上将与数据更改相关的元数据信息与数据块分组到一个称为事务的单元中。当需要把元数据写入到磁盘上的时候,与元数据关联的数据块会首先写入。也就是数据先落盘,再做元数据的日志。一般情况下,这种模式的性能会略逊色于 writeback 但是比 journal 模式要快的多。
3.writeback
在writeback模式下,当元数据提交到日志后,data可以直接被提交到磁盘。即会做元数据日志,数据不做日志,并且不保证数据比元数据先落盘。writeback是ext4提供的性能最好的模式。