简介 

ext4

  • 特性:支持大容量(单个文件最大16 TiB,总容量可达1 EiB)、日志功能、高稳定性。
  • 适用场景:Yocto根文件系统、Android系统的/system分区、通用存储。
  • 优点:高度可靠,适用于需要大量数据存储和快速访问的应用场景。
  • 缺点:对于闪存等特殊存储介质的支持不如专门设计的文件系统。

SquashFS

  • 特性:高压缩率、只读特性、快速挂载。
  • 适用场景:Yocto固件镜像、只读根文件系统(如/usr)、容器镜像。
  • 优点:节省空间,适合于需要减少存储占用的场景。
  • 缺点:只读特性限制了其在需要动态修改内容的应用中的使用。

UBIFS

  • 特性:NAND闪存优化(坏块管理、压缩)、动态分区调整、日志功能。
  • 适用场景:ARM嵌入式设备的可读写闪存存储(IoT设备、工控系统)。
  • 优点:专为闪存设计,具有良好的磨损均衡和可靠性。
  • 缺点:相比其他通用文件系统,可能不适合非闪存介质。

JFFS2

  • 特性:直接操作闪存块、掉电保护、支持NOR/NAND闪存。
  • 适用场景:小容量闪存分区(Bootloader、内核)、低功耗设备的只读/可写分区。
  • 优点:简单高效,特别适合小型嵌入式系统。
  • 缺点:随着闪存容量增加,性能可能会下降。

tmpfs

  • 特性:基于内存的极速读写、动态调整容量。
  • 适用场景:临时缓存(/tmp)、进程共享内存、运行时临时数据存储。
  • 优点:极快的读写速度,因为数据保存在RAM中。
  • 缺点:数据不持久化,断电后丢失。

FAT32/vfat

  • 特性:跨平台兼容(Windows/Android/Linux)、支持UEFI启动。
  • 适用场景:Android外部存储(SD卡/U盘)、Yocto UEFI启动分区。
  • 优点:广泛的兼容性使其成为外部存储的理想选择。
  • 缺点:单个文件大小限制(最大4GB),缺乏高级功能如权限控制。

F2FS

  • 特性:闪存寿命优化(TRIM、垃圾回收)、高性能随机写入。
  • 适用场景:Android用户数据分区(/data)、闪存设备的频繁读写场景。
  • 优点:专门为闪存设计,提高了数据写入效率和闪存使用寿命。
  • 缺点:主要针对闪存优化,可能不适合其他类型的存储介质。

对比

特性/文件系统 ext4 SquashFS UBIFS JFFS2 tmpfs FAT32/vfat F2FS
类型 通用文件系统 只读压缩 NAND闪存专用 NOR/NAND闪存 内存文件系统 跨平台兼容 闪存专用
读写支持 支持读写 只读支持读写 支持读写 基于内存 支持读写 支持读写
压缩支持 可选
适用存储 硬盘、SSD等 通用存储 NAND闪存 NOR/NAND闪存 RAM SD卡、U盘等 SSD、eMMC等
服务目标 大容量、高稳定性 减少空间占用 提高闪存可靠性 小型嵌入式系统 极速读写 跨平台兼容性 优化闪存寿命
典型用途 根文件系统、系统分区 固件、容器镜像 IoT、工控系统 Bootloader、内核 临时缓存 SD卡、UEFI启动 用户数据分区

特别说明:

嵌入式系统通常会选择使用SquashFS(只读)或UBIFS(可读写)作为rootfs。

特性 SquashFS UBIFS
类型 只读压缩 日志式,支持写入
读写支持 只读 支持读写
压缩 高压缩率,可以减少空间占用 无压缩
存储类型 通用存储 闪存(NAND)
适用场景 固件、只读系统 嵌入式闪存存储

需要注意rootfs并不是具体的文件系统类型,而是指Linux系统启动时首先挂载的根文件系统,可以基于上述任何一种文件系统类型实现。

  • SquashFS 作为只读根文件系统;
  • UBIFS 作为可写分区;
  • rootfs 统一管理这些分区;

实际中,可能会组合使用,比如将rootfs配置为squashfs,将data分区配置为ubifs。

本文转自:https://mp.weixin.qq.com/s/cG3jeRAMEzm6wCvVSJAo0A