Android 将 ext4
文件系统用于只读分区,但我认为对于闪存只读驱动器ext2
更合适,因为它没有性能开销,并且在没有写入操作的情况下使用安全。
我对吗?
Android 将 ext4
文件系统用于只读分区,但我认为对于闪存只读驱动器ext2
更合适,因为它没有性能开销,并且在没有写入操作的情况下使用安全。
我对吗?
我没有真正的答案,但这里有一些可能性。
ext4
ext2
即使在只读模式下也有改进,例如使用范围而不是块映射。这节省了元数据开销。
系统分区可以在有根设备上和系统更新期间以读写方式重新安装(除了在Nougat + 设备上使用两个系统分区进行无缝更新)。ext4
通常具有比 更好的分配行为ext2
。
文件系统可以用 来创建-O ^has_journal
,这消除了 ext4 的日志开销。(见-j
选项mkuserimg_mke2fs.sh
。)
此外,鉴于ext4
读写用户分区已经在使用它,我怀疑会倾向于避免ext2
仅仅减少正在运行的不同代码的总量(并且需要测试)。某些端口未设置CONFIG_EXT2_FS
以缩小内核。(ext2
文件系统仍然可以使用ext4
驱动程序安装,尽管我不希望这样做。)
为什么Android将
ext4
文件系统用于只读分区?
这里不是真正的专家,可能不会给出具体的答案,但你肯定知道,Android严重依赖Linux,选择可能是Linux决定的。
乔纳森·莱文(Jonathan Levin )的伟大作品最近变得免费,我强烈建议您熟悉以下内容*:
“ Android 对文件系统类型没有任何限制,但 eMMC 和 MMC 设备目前使用 Linux Ext4 文件系统(从 Gingerbread 开始,代替旧的 YAFFS 系统),因为存储层导出块设备。Ext4 已成为默认Linux 2.6.27 中的文件系统,并且是一个经过良好测试的文件系统,尽管不一定是闪存优化的文件系统。”
* 第二章 -> 分区方案 -> 文件系统
同样ext4
不使用 journal有更好的性能ext2
:
ext2 ext4, default ext4, no journal
initial writes 13.0 MB/s 15.4 MB/s 15.7 MB/s
rewrites 13.1 MB/s 15.6 MB/s 15.9 MB/s
reads 15.2 MB/s 16.9 MB/s 17.2 MB/s
re-reads 15.3 MB/s 16.9 MB/s 17.2 MB/s
re-reads 15.3 MB/s 16.9 MB/s 17.2 MB/s