本地磁盘文件系统对比
1. ext4
目录:fs/ext4/,日志:fs/jbd2/。
特点:
- extent tree;
- block group/mballoc;
- ordered/writeback/journal data mode;
- delayed allocation;
- metadata checksum;
- fast commit;
- fscrypt/fs-verity/quota;
- 成熟、适合 eMMC/NVMe 通用场景。
已有逐模块文档见 ext4/。
2. F2FS
面向 flash 的 segment/log-structured 设计:
- NAT/SIT/SSA;
- checkpoint;
- node/data logs;
- garbage collection;
- SSR/LFS;
- compression、checkpoint disable 等可选功能。
适合写入模式和 flash 特性匹配的设备,但 GC、checkpoint 和空间预留会影响尾延迟。
3. XFS
特点:
- allocation group 并行;
- B+tree metadata;
- delayed logging/CIL;
- iomap;
- reflink/rmap/refcount;
- online scrub/repair 部分能力;
- 大文件、大容量和并发。
小容量 eMMC 并不天然受益,需考虑内存和运维工具。
4. Btrfs
CoW tree 架构:
- metadata/data checksum;
- snapshot/subvolume;
- reflink;
- compression;
- multi-device/RAID;
- scrub;
- delayed refs/extent tree。
功能丰富但写放大、fragmentation、ENOSPC 语义和恢复运维更复杂。
5. 一致性模型
| 文件系统 | 主要恢复机制 |
|---|---|
| ext4 | JBD2 metadata journal/fast commit |
| F2FS | checkpoint + roll-forward |
| XFS | metadata log |
| Btrfs | CoW transaction + tree log |
“有日志”不代表最近应用数据一定持久;应用仍需 fsync 和正确 rename protocol。
6. 选择建议
| 场景 | 常见选择 |
|---|---|
| 通用系统盘/eMMC | ext4 |
| 高频 flash 写、已充分验证 | F2FS |
| NVMe 大文件/并发 | ext4 或 XFS |
| snapshot/checksum/compression | Btrfs |
| 极简无日志 | ext2(需接受恢复风险) |
最终选择应基于掉电测试、空间占用、升级恢复工具、写放大和 p99,不仅是峰值带宽。
7. 通用调用边界
四者都通过 VFS ops 接入,但内部 extent、日志和 writeback 完全不同。不能把 ext4 mount option 或 fsck 工具用于其他文件系统。
8. RK3588 验证
- eMMC cache/flush 是否正确;
- 供电掉电窗口;
- NVMe thermal throttle;
- discard 策略;
- journal/checkpoint latency;
- 多媒体大文件删除/循环覆盖;
- inode 和空间耗尽;
- 内核与用户态修复工具版本匹配。
正在加载留言…