————————————————
原文链接:https://blog.csdn.net/qq_28258885/article/details/118538769
目录
文件系统简介
嵌入式系统中常用文件系统包括有 cramfs
、 JFFS2
、 NFS
、 initrd
、 yaffs2
、 Ext4
以及
squashfs
。
它们的特点如下:
cramfs
和JFFS2
具有好的空间特性,很适合嵌入式产品应用。cramfs
与squashfs
为只读文件系统。squashfs
压缩率最高。JFFS2
为可读写文件系统。NFS
文件系统适用于开发初期的调试阶段。yaffs2
文件系统只用于 NAND Flash。initrd
采用cramfs
文件系统,为只读。Ext4
文件系统用于 EMMC 卡。
cramfs
cramfs
是针对 Linux 内核 2.4 之后的版本所设计的一种新型文件系统,使用简单,加载
容易,速度快。
cramfs 的优缺点如下:
- 优点
将文件数据以压缩形式存储,在需要运行时进行解压缩,能节省 Flash 存储空间。 - 缺点
由于它存储的文件是压缩的格式,所以文件系统不能直接在 Flash 上运行。同时,
文件系统运行时需要解压数据并拷贝至内存中,在一定程度上降低读取效率。另
外cramfs
文件系统是只读的。
jffs2
JFFS2 是 RedHat 的 David Woodhouse 在 JFFS 基础上改进的文件系统,是用于微型嵌入
式设备的原始闪存芯片的实际文件系统。 JFFS2 文件系统是日志结构化的可读写的文
件系统。
JFFS2 的优缺点如下:
- 优点
使用了压缩的文件格式。最重要的特性是可读写操作。 - 缺点
JFFS2 文件系统挂载时需要扫描整个 JFFS2 文件系统,因此当 JFFS2 文件系统分
区增大时,挂载时间也会相应的变长。使用 JFFS2 格式可能带来少量的 Flash 空间
的浪费。这主要是由于日志文件的过度开销和用于回收系统的无用存储单元,浪
费的空间大小大致是若干个数据段。 JFFS2 的另一缺点是当文件系统已满或接近
满时, JFFS2 运行速度会迅速降低。这是因为垃圾收集的问题。
加载 JFFS2 文件系统时的步骤如下:
- 步骤 1. 扫描整个芯片,对日志节点进行校验,并且将日志节点全部装入内存缓存。
- 步骤 2. 对所有日志节点进行整理,抽取有效的节点并整理出文件目录信息。
- 步骤 3. 找出文件系统中无效节点并且将它们删除。
- 步骤 4. 最后整理内存中的信息,将加载到缓存中的无效节点释放。
- ----结束
由此可以看出虽然这样能有效地提高系统的可靠性,但是在一定程度上降低了系统的
速度。尤其对于较大的闪存芯片,加载过程会更慢。
yaffs2
yaffs2 是专门为 NAND Flash 设计的嵌入式文件系统。
它是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。
yaffs2 的优缺点如下:
- 优点
− 专门针对 NAND Flash,软件结构得到优化,速度快。
− 使用硬件的 spare area 区域存储文件组织信息,启动时只需扫描组织信息,启
动比较快。
− 采用多策略垃圾回收算法,能够提高垃圾回收的效率和公平性,达到损耗平衡
的目的。 - 缺点
没有采用压缩的文件格式。当包含的内容相同时, yaffs2 镜像文件要比 jffs2 镜像
文件大。
initrd
initrd 相当于存储介质,它支持的文件系统格式有 ext2、 cramfs 等,因此内核除了支持
initrd 之外,还要支持 cramfs 文件系统。
Squashfs
squashfs 文件系统是一套基于 Linux 内核使用的压缩只读文件系统,压缩率高。
squashfs 具有如下特点:
- 数据(data),节点(inode)和目录(directories)都被压缩
- 保存了全部的 32 位 UID/GIDS 和文件的创建时间
- 最大支持 4G 文件系统
- 检测并删除重复文件
ext4
Ext4 文件系统是一个高效的、优秀的、可靠的和极具特点的文件系统,相对于 Ext3 的
的改进是更深层次的,是文件系统数据结构方面的优化。