只读与闪存文件系统
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 | EROFS/SquashFS lower |
升级可替换 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 | findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS |
正在加载留言…