嵌入式文件系统介绍合集:FAT32、exFAT、ext3、ext4、jffs2、yaffs2、ubifs、squashf
liwen01 2024.07.21
前言
在嵌入式 Linux 系统中常用的文件系统有:FAT32、exFAT、ext3、ext4、jffs2、yaffs2、ubifs、squashfs。不管是在文件系统类型选型还是嵌入式应用软件面试中,关于文件系统的问题都会经常被提起。
就目前而言,并没有哪款文件系统可以适用于所有应用场景,它们各有优缺点,各有适用领域。
(一)存储设备简介
目前主流的存储设备有3类:机械硬盘、FTL 闪存设备、裸flash。
机械硬盘:日常使用比较多的是在PC机上,还有一部分是在大容量的MDVR上,它使用的文件系统,一般是跟随使用的操作系统,window 使用 NTFS, Linux 使用 ext4。
FTL闪存设备:指有带 flash 转换层的 flash 储存设备,比如常用的:U盘、SD、TF卡、emmc、ssd设备。它们上面常用的文件系统是 FAT32、exFAT。
裸flash:直接将 flash 焊接在板子上直接使用,没有flash 转换层,一般容量较小,用来存储固件程序或是少量的用户配置信息等,有 nor 和 nand 两种,nor flash 上常用的是 jffs2, nand flash 常用的是 yaffs2,有些nand flash容量会比较大,一般用来存储媒体数据,比如图片和视频,对于大容量的nand flash, 使用 ubifs 会更加合适。
(二)文件系统简介
(1)FAT32
FAT32 兼容性很高,可以在不同的系统上使用,软件实现简单、支持在嵌入式设备和PC机上使用。传统安防及行车记录仪大部分都是使用 FAT32 文件系统格式。在嵌入式设备上采集录制了数据,可以在嵌入式设备或PC机上查看。
FAT32 文件系统的缺点是不带日志功能,在热拔插的情况下,容易导致数据丢失,如果丢失的是元数据,那文件系统就会出现异常,常见的是文件名乱码。另外一个缺点是有容量大小限制,在大容量存储设备中响应缓慢。
(2)exFAT
exFAT 是在FAT32基础上发展而来,在window系统,如果FTL闪存设备容量大于32G,window默认会将卡格式化成exFAT格式。exFAT 主要解决 FAT32 大容量限制及大容量工作效率问题。
微软拥有 exFAT 的绝大部分专利,如果要使用 exFAT 到产品上,需要考虑版权风险。
(3)ext4
ext4 适用于 Linux 操作系统,有带日志功能,数据分块存储,安全和效率都比较好,如果是要在 Linux 系统中存储比较大容量的音视频数据,可以选择 ext4 文件系统。
ext4 的缺点是不能跨平台使用,如果在嵌入式设备中使用 ext4 作为 TF 卡的文件系统,那么 TF 卡放置到 window 系统上就不能识别,会直接提示需要格式化。对于那些需要在设备和window PC机上查看存储数据的存储设备就不适合使用 ext4 文件系统了。
(4)jffs2
jffs2 是一个日志型文件系统,常用在 nor flash 上,用来存储程序或是用户配置数据。因为是日志文件系统,所以文件系统的崩溃一致性会比较好。一般是用作 nor flash 嵌入式设备的参数分区文件系统。
jffs2 的缺点是,在挂载的时候,需要全盘扫描 flash 以建立完整的文件信息,这也导致了它在大容量 flash 分区中使用效率不高。
(5)yaffs2
yaffs2 与 jffs2 类似, yaffs2 主要应用于 nand flash 上,它与 jffs2 的区别是,yaffs2 使用了nand flash 的 OOB 区来存储一些元数据,所以 yaffs2 在挂载时只扫描 OOB 区域就可以构建出文件的依赖关系,从而提升文件系统的效率。
yaffs2 的缺点是不支持数据压缩,元数据开销大,扩展性能差。
(6)ubifs
ubifs 主要应用于大容量的 nand flash, 它使用逻辑擦除块与物理擦除块分离的方法,可以为整个 flash 空间提供磨损平衡功能。另外它支持动态调大小,整体的扩展性能好。
ubifs 的缺点是软件复杂度高,调试难度比较大。
(7)squashfs
squashfs 是一个压缩文件系统,它最大的优势是压缩比例高,最大的限制是文件系统为只读。它主要应用于一些不需要修改内容的资源分区上,比如字体,语音提示文件等。压缩比高表示可以在有限空间存储更多的数据内容,从而达到降低 flash 成本的目的。
各文件系统工作原理及它们优缺点的详细介绍,可以选择查看前面已经分析过的文章:
文件系统(六):一文看懂linux ext4文件系统工作原理
文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
文件系统(十一):Linux Squashfs只读文件系统介绍
结尾
文件系统系列介绍,到这里就告一段落了,后续可能会更新一个无线网络开发相关的专题介绍。上面介绍的内容如有错误,欢迎在留言区留言指出,不胜感激。当然,如果你有其它的想法,也欢迎一起交流。