【UBI文件系统制作】-(1)UBI文件系统简介

1 引言

    在Linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到CRAMFS、JFFS2、YAFFS2等文件系统。它们也都是基于文件系统+MTD+Flash设备的架构。Linux-2.6.27后,内核加入了一种新型的Flash文件系统UBI(Unsorted Block Images)。下面将详细介绍UBI文件系统的制作方法。

2 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文件系统的支持。无排序区块图像文件系统(Unsorted Block Image File System,UBIFS)是用于固态硬盘存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一。真正开始开发于2007年,并于2008年10月第一次加入稳定版本于Linux核心2.6.27版。

    UBIFS最早在2006年由IBM与Nokia的工程师Thomas Gleixner,Artem Bityutskiy所设计,专门为了解决MTD(Memory Technology Device)设备所遇到的瓶颈。由于NAND Flash容量的暴涨,YAFFS等皆无法再去控制NAND Flash的空间。UBIFS通过子系统UBI处理与MTD device之间的动作。与JFFS2一样,UBIFS 建构于MTD device 之上,因而与一般的block device不兼容。JFFS2运行在MTD设备之上,而UBIFS则只能工作于UBI volume之上。也可以说,UBIFS涉及了三个子系统:

    1)MTD subsystem:
    MTD 子系统, 提供对Flash芯片的访问接口,MTD子系统提供了MTD device的概念,比如/dev/mtdx,MTD可以认为是raw Flash。

    2)UBI subsystem:
    为Flash device提供了wear-leveling和 volume management功能;UBI工作在MTD设备之上,提供了UBI volume;UBI是MTD设备的高层次表示,对上层屏蔽了一些MTD不得不处理的问题,比如wearing以及坏块管理。

    3)UBIFS filesystem:
    UBIFS 文件系统,工作于UBI之上。
    1

图2. 1 UBIFS子系统
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值