只读与闪存文件系统

只读与闪存文件系统

1. EROFS

erofs/ 面向只读镜像:

  • compact inode;
  • chunk/flat block mapping;
  • inline tail;
  • LZ4/LZMA 等压缩(按配置);
  • page cache 和 readmore;
  • fscache 模式(按分支能力);
  • 适合 Android/rootfs/container image。

强调随机读和较低 metadata 开销。

2. SquashFS

squashfs/ 以 block 压缩:

  • metadata/data/fragment table;
  • 多种 compressor;
  • read-only;
  • image 构建时确定 block size;
  • 常用于固件 rootfs。

较大压缩块提高压缩率和顺序吞吐,但随机读解压放大更大。

3. CramFS/RomFS

更简单、功能有限的只读格式,适合兼容或极简场景。新产品通常优先评估 EROFS/SquashFS。

4. UBIFS

ubifs/ 工作在 UBI volume 上,不直接面向普通块设备:

1
raw NAND -> MTD -> UBI -> UBIFS

特点:

  • journal;
  • tree node;
  • LEB/PEB 抽象;
  • wear leveling 由 UBI;
  • compression;
  • budgeting;
  • orphan/recovery。

5. JFFS2

直接面向 MTD,节点日志和 GC。小 flash 可用,但大容量 mount scan、内存和 GC 成本可能明显。

6. eMMC 与 raw NAND

  • eMMC/UFS/SD/NVMe 是块设备,通常 ext4/F2FS/EROFS/SquashFS;
  • raw NAND 需要坏块和磨损管理,通常 UBI/UBIFS;
  • 不要在 raw NAND 上直接使用假设可靠块设备的 ext4;
  • 不要把 UBIFS 镜像挂到普通 block device。

7. Overlay 组合

只读 lower + 可写 upper:

1
2
3
EROFS/SquashFS lower
+ ext4/F2FS/tmpfs upper
-> OverlayFS merged root

升级可替换 lower image,但必须设计 upper schema migration、whiteout 和回滚。

8. RK3588 调优

  • 根据 Cortex-A76/A55 CPU 与存储带宽选择压缩算法;
  • 测量冷启动、随机 fault、顺序读和 CPU;
  • 多媒体文件通常已压缩,再压缩收益低;
  • image block size 与访问粒度匹配;
  • 验证 dm-verity/fs-verity;
  • A/B 更新做断电测试。

9. 观测

1
2
3
4
5
findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS
cat /sys/class/mtd/mtd*/name
ubinfo -a
cat /proc/meminfo
cat /proc/pressure/io

文章互动

阅读 --

留言

0 条留言

正在加载留言…