首页 > 其他分享 >嵌入式文件系统介绍合集:FAT32、exFAT、ext3、ext4、jffs2、yaffs2、ubifs、squashf

嵌入式文件系统介绍合集:FAT32、exFAT、ext3、ext4、jffs2、yaffs2、ubifs、squashf

时间:2024-08-01 08:56:09浏览次数:13  
标签:squashf ubifs ext4 exFAT flash 文件系统 FAT32 yaffs2

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 成本的目的。

各文件系统工作原理及它们优缺点的详细介绍,可以选择查看前面已经分析过的文章:

文件系统(一):存储介质、原理与架构

文件系统(二):分区、格式化数据结构

文件系统(三):嵌入式、计算机系统启动流程与步骤

文件系统(四):FAT32文件系统实现原理

文件系统(五):exFAT 文件系统原理详解

文件系统(六):一文看懂linux ext4文件系统工作原理

文件系统(七):文件系统崩溃一致性、方法、原理与局限

文件系统(八):Linux JFFS2文件系统工作原理、优势与局限

文件系统(九):一文看懂yaffs2文件系统原理

文件系统(十):一文看懂 UBI 文件系统

文件系统(十一):Linux Squashfs只读文件系统介绍

结尾

文件系统系列介绍,到这里就告一段落了,后续可能会更新一个无线网络开发相关的专题介绍。上面介绍的内容如有错误,欢迎在留言区留言指出,不胜感激。当然,如果你有其它的想法,也欢迎一起交流。

 

------------------End------------------
如需获取更多内容
请关注 liwen01 公众号
 

 

标签:squashf,ubifs,ext4,exFAT,flash,文件系统,FAT32,yaffs2
From: https://www.cnblogs.com/liwen01/p/18335902

相关文章

  • 文件系统(十一):Linux Squashfs只读文件系统介绍
    liwen012024.07.21前言嵌入式Linux系统中,squashfs文件系统使用非常广泛。它主要的特性是只读,文件压缩比例高。对于flash空间紧张的系统,可以将一些不需要修改的资源打包成压缩的只读文件系统格式,从而达到节省空间的目的。另外还有个特性就是它可以分块解压缩,使用数据会更加灵活......
  • 文件系统介绍 --- ubifs
    UBIFS(UnsortedBlockImageFileSystem)无序区块镜像文件系统是用于固态存储设备上,UBIFS在设计与性能上均较YAFFS2、JFFS2更适合MLC(Multi-LevelCell)NANDFLASH。例如:UBIFS支持凑数(write-back),其写入的数据会被缓存起来,直到有必要写入时才写到flash,这样大大降低分散小区......
  • 文件系统(六):一文看懂linux ext4文件系统工作原理
    liwen012024.06.09前言Linux系统中的ext2、ext3、ext4文件系统,它们都有很强的向后和向前兼容性,可以在数据不丢失的情况下进行文件系统的升级。目前ext4是一个相对较成熟、稳定且高效的文件系统,适用于绝大部分规模和需求的Linux环境。ext4它突出的特点有:数据分段管理、多块分......
  • ext4 文件系统相关命令
    日志文件系统大多数linux操作系统中的默认文件系统选择。ext4文件系统由ext3文件系统改进而来,而后者又是从ext2文件系统改进而来。常用的命令:$df-Thdf-T可以流浪当前系统挂载的卷及设备,-T可以打印设备类型,比如ext4tmpfs或者其他。root@ubuntu-server:~#df-ThFi......
  • 释放系统C盘的ext4.vhdx
    ext4.vhdx是个虚拟磁盘,默认位置为C:\Users{用户名}\AppData\Local\Docker\wsl\data\ext4.vhdx,会占用很大磁盘空间,可采用下列办法将其改到其它磁盘或分区,如D分区。1、查看有哪些:#wsl-l-vNAMESTATEVERSION*docker-desktop-dataRunnin......
  • NTFS、exFAT、FAT32、Ext4文件系统的区别
    V1.02024年5月7日发布于博客园NTFS、exFAT、FAT32、Ext4文件系统的区别FAT(FileAllocationTable)FAT(FileAllocationTable,文件分配表)是1977年微软为DOS开发的管理软盘的文件系统。FAT文件系统的最早版本是FAT12,由于其管理的容量非常有限,后来又陆续开发了FAT16文件系统和F......
  • 详解Linux文件系统:ext4及更高版本
    今天带大家了解一下ext4的历史,包括其与ext3和之前的其它文件系统之间的区别大多数现代Linux发行版默认为ext4文件系统,就像以前的Linux发行版默认为ext3、ext2,以及-如果追溯到足够远的话-ext。如果您是Linux新手或者是文件系统新手,您可能会想知道ext4给表带来了什么,而ext3却没......
  • SublimeText4离线安装插件 - 以 terminus 为例
    SublimeText4离线安装插件-以terminus为例在云桌面环境中没有外网,安装terminus插件有点波折,最终能用了,说下过程。网络上的博客,通常会说,点击菜单栏->Preferences->Browsepackages,在C:\Users\xxx\AppData\Roaming\SublimeText\Packages的目录中,或者它的User......
  • 【已解决】squashfs4.3编译过程中的一些问题
    Q:执行./build.sh时,mksquashfs.c和unsquashfs.c报错找不到major()和minor()函数的定义,找不到‘makedev’cc-O2-I.-D_FILE_OFFSET_BITS=64-D_LARGEFILE_SOURCE-D_GNU_SOURCE-DCOMP_DEFAULT=\"gzip\"-Wall-DGZIP_SUPPORT-DXATTR_SUPPORT-DXATTR_DEFAULT-c-omksqua......
  • 更改在EXT2/EXT3/EXT4/NTFS/reiserFS/exFAT和Swap上的分区标签名称
    Linux如何更改硬盘盘符?(linux更改硬盘盘符)硬盘盘符可用于唯一标识硬盘,在Linux系统中,硬盘盘符通常以/dev/sda这样的形式出现。然而,在某些情况下,需要更改硬盘盘符以满足应用程序或存储设备的需要。本文将介绍如何在Linux系统中更改硬盘盘符。步骤一:了解硬盘盘符在Linux系统......