1 文件系统简介
Linux 目录结构的最顶层是一个被称为“/”的根目录。系统加载Linux 内核之后,会
挂载一个设备到根目录上。存在这个设备中的文件系统被称为根文件系统。所有的系
统命令、系统配置以及其他文件系统的挂载点都位于这个根文件系统中。
根文件系统通常存放于内存和Flash 中。根文件系统中存放了嵌入式系统使用的所有应
用程序、库以及其他需要用到的服务。
嵌入式系统中常用文件系统包括有:cramfs、squashfs、JFFS2、yaffs2、UBIFS、ext4。
它们的特点如下:
? cramfs 和JFFS2 具有好的空间特性,生成的镜像小,占用的Flash 空间小,很适合
小型嵌入式产品应用;
? cramfs 和squashfs 为只读压缩文件系统,squashfs 相比于cramfs,能提供更大的压
缩比,支持更大的镜像和文件;
? JFFS2 为可读写的压缩文件系统,其挂载时间与Flash 容量有关,越大的Flash,
挂载时间越长,而且每次加载都需要将Flash 上的所有节点(JFFS2 的存储单位)加
载到内存,因此内存消耗较大。由于JFFS2 是按字节访问Flash,因此,只能用于
SPI NOR Flash,不能用于NAND Flash;
? yaffs2 文件系统是NAND Flash 上使用较为成熟的文件系统,并且只能用于NAND
Flash,相比于JFFS2,其内存消耗较小,但挂载时间仍然与Flash 容量相关,越大
的Flash,挂载时间越长;
? UBIFS 一种用在大容量Flash 上的可读写文件系统,对Flash 的容量依赖较小,相
比于yaffs2 和JFFS2,其挂载时间和内存消耗都小很多,可以很好的适应GB 以上
大小的大容量Flash;
? ext4 是Linux 系统下的日志文件系统,适用于eMMC 这类块设备存储器件。
2 cramfs
cramfs 是针对Linux 内核2.4 之后的版本所设计的一种新型文件系统,使用简单,加载
容易,速度快。
Linux 开发环境
用户指南 5 Linux 文件系统
文档版本 04 (2016-07-18) 海思专有和保密信息
版权所有 © 深圳市海思半导体有限公司 22
cramfs 的优缺点如下:
? 优点:
将文件数据以压缩形式存储,在需要运行时进行解压缩,能节省Flash 存储空间。
? 缺点:
由于它存储的文件是压缩的格式,所以文件系统不能直接在Flash 上运行。同时,
文件系统运行时需要解压数据并拷贝至内存中,在一定程度上降低读取效率。另
外cramfs 文件系统是只读的。
3 squashfs
squashfs 文件系统也是一种压缩的只读文件系统。与cramfs 相比,能提供更大的压缩
比,支持更大的镜像和文件。
4 JFFS2
JFFS2 是RedHat 的David Woodhouse 在JFFS 基础上改进的文件系统,是用于微型嵌入
式设备的原始闪存芯片的实际文件系统。JFFS2 文件系统是日志结构化的可读写的文
件系统。
JFFS2 的优缺点如下:
? 优点:
使用了压缩的文件格式。最重要的特性是可读写操作。
? 缺点:
JFFS2 文件系统挂载时需要扫描整个JFFS2 文件系统,因此当JFFS2 文件系统分
区增大时,挂载时间也会相应的变长。使用JFFS2 格式可能带来少量的Flash 空间
的浪费,这主要是由于日志文件的过度开销和用于回收系统的无用存储单元,浪
费的空间大小大致是若干个数据段。
JFFS2 的另一缺点是当文件系统已满或接近满时,JFFS2 运行速度会迅速降低。这
是因为垃圾收集的问题。
加载JFFS2 文件系统时的步骤如下:
步骤 1 扫描整个芯片,对日志节点进行校验,并且将日志节点全部装入内存缓存。
步骤 2 对所有日志节点进行整理,抽取有效的节点并整理出文件目录信息。
步骤 3 找出文件系统中无效节点并且将它们删除。
步骤 4 最后整理内存中的信息,将加载到缓存中的无效节点释放。
----结束
由此可以看出,虽然这样能有效地提高系统的可靠性,但是在一定程度上降低了系统
的速度。尤其对于较大的闪存芯片,加载过程会更慢。
Linux 开发环境
用户指南 5 Linux 文件系统
文档版本 04 (2016-07-18) 海思专有和保密信息
版权所有 © 深圳市海思半导体有限公司 23
5 yaffs2
yaffs2 是专门为NAND、SPI NAND 设计的嵌入式文件系统。它是日志结构的文件系
统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整
性的影响。
yaffs2 的优缺点如下:
? 优点:
− 专门针对 NAND、SPI NAND,软件结构得到优化,速度快。
− 使用硬件的 spare area 区域存储文件组织信息,启动时只需扫描组织信息,启
动比较快。
− 采用多策略垃圾回收算法,能够提高垃圾回收的效率和公平性,达到损耗平衡
的目的。
? 缺点:
没有采用压缩的文件格式。如果用同等大小的文件夹制作根文件系统,yaffs2 镜像
文件要比JFFS2 镜像文件大。