当前位置:刘伯温论坛 > 日志文件系统 >

需要了解UBI文件系统的详细介绍

  FLASH具有的“先擦除再写入”、坏块、“有限的读写次数”等特性,目前管理FLASH的方法主要有:

  1、 采用MTD+FTL/NFTL(flash 转换层/nand flash转换层)+ 传统文件系统,如:FAT、ext2等。FTL/NFTL的使用就是针对FLASH的特有属性,通过软件的方式来实现日志管理、坏块管理、损益均衡等技 术。但实践证明,由于知识产权、效率等各方面因素导致本方案有一定的局限性。

  2、采用硬件翻译层+传统文件系统的方案。这种方法被很多存储卡产品采用,如:SD卡、U盘等。这种方案对于一些产品来说,成本较高。

  3、采用MTD+ FLASH专用文件系统,如JFFS1/2,YAFFS1/2等。它们大大提高了FLASH的管理能力,并被广泛应用。

  JFFS2、YAFFS2等专用文件系统也存在着一些技术瓶颈,如:内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差或过渡损益等。在此背景下内核加入了UBI文件系统的支持。

  其中,UBI是一种类似于LVM的逻辑卷管理层。主要实现损益均衡,逻辑擦除块、卷管理,坏块管理等。而UBIFS是一种基于UBI的FLASH日志文件系统。

  一句话解读就是,UBIFS及其使用的UBI子系统,是一种用在大容量flash上的文件系统。

  UBIFS对flash尺寸有着很好的扩展性;也就是说mount时间、内存消耗以及I/O速度都不依赖于flash尺寸(对于内存消耗并不是完全准确的,但是依赖性非常的低);UBIFS可以很好的适应GB以上大小的大容量flash; 当然UBI本身还有扩展性的问题,无论如何, UBI/UBIFS都比JFFS2的可扩展性好,此外如果UBI成为瓶颈,还可以通过升级UBI而不需改变UBIFS。

  不像JFFS2,UBIFS在mount阶段不需要扫描整个文件系统,UBIFSmount介质的时间只是毫秒级,时间不依赖与flash的尺寸;然而UBI的初始化时间是依赖flash的尺寸的,因此必须把这个时间考虑在内。

  UBIFS的回写(延迟写)同JFFS2的write-through(立即写入内存)相比可以显著地提高文件系统的吞吐量。

  UBIFS是一个日志文件系统,可以容忍突然掉电以及unclean重启;UBIFS通过replay日志来恢复uncleanunmount,在这种情况下replay会消耗一些时间,因此mount时间会稍微增加,但是replay过程并不会扫描整个flash介质,所以UBIFS的mount时间大概在几分之一秒。

  即使我们disablewrite-back(可以在unmount时使用-osyncmount选项),UBIFS的性能仍然接近JFFS2。记住,JFFS2的同步I/O是非常惊人的,因为JFFS2不需要在flash上维护indexingdata结构,所以就没有因此而带来的负担;而UBIFS恰恰是有index数据的。UBIFS之所以够快是因为UBIFS提交日志的方式:不是把数据从一个地方移动到另外一个位置,而只是把数据的地址加到文件系统的index,然后选择不同的eraseblock作为新的日志块,此外还有multi-headed日志方式等技巧。

  存储在flash介质上的数据是压缩的;同时也可以灵活的针对单个文件来打开关闭压缩;例如,可能需要针对某个特定的文件打开压缩,或者可能缺省方式下支持压缩,但是对多媒体文件则关闭压缩。

  UBIFS可以从index破坏后恢复;UBIFS中的每一片信息都有一个header来描述,因此可以通过扫描这个flash介质来重构文件系统,这点和JFFS2非常类似;想像一下,如果你擦出了FAT文件系统的FAT表,那么对于FATFS是致命的错误,但是如果擦除UBIFS的index,你人然可以重构文件系统,当然这需要一个特定的用户空间程序来做这个恢复。

http://alanhandle.com/rizhiwenjianxitong/46.html
点击次数:??更新时间2019-05-17??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】