【发布时间】:2018-01-05 00:51:15
【问题描述】:
Android uses ext4 用于只读分区的文件系统,但我认为对于闪存只读驱动器ext2 更合适,因为它没有性能开销和无需写操作即可安全使用。
我说的对吗?
【问题讨论】:
标签: android filesystems android-source ext4 ext2
Android uses ext4 用于只读分区的文件系统,但我认为对于闪存只读驱动器ext2 更合适,因为它没有性能开销和无需写操作即可安全使用。
我说的对吗?
【问题讨论】:
标签: android filesystems android-source ext4 ext2
我没有真正的答案,但这里有一些可能性。
ext4 即使在只读模式下也比ext2 有改进,例如使用范围而不是块映射。这节省了元数据开销。
系统分区可以在有根设备和系统更新期间以读写方式重新挂载(Nougat+ 设备除外,使用两个系统分区进行无缝更新)。 ext4 通常比 ext2 具有更好的分配行为。
可以使用-O ^has_journal 创建文件系统,这消除了 ext4 的日志开销。 (参见mkuserimg_mke2fs.sh 的-j 选项。)
另外,鉴于ext4 已经用于读写用户分区,我怀疑会倾向于避免ext2 只是为了减少正在运行的不同代码的总量(并且需要待测试)。一些端口未设置CONFIG_EXT2_FS 以缩小内核。 (ext2 文件系统仍然可以使用 ext4 驱动程序挂载,尽管我不希望这样做。)
【讨论】:
为什么Android 将
ext4文件系统用于只读分区?
这里不是真正的专家,可能不会给出具体答案,但您肯定知道,Android 严重依赖 Linux,而选择可能是 Linux - 口授。
Jonathan Levin 的great work 最近变成了free,我强烈建议您熟悉以下状态*:
"Android enforces no constraints as to the filesystem types,但 eMMC 和 MMC 设备目前使用 Linux Ext4 文件系统(从 Gingerbread 开始,代替旧的 YAFFS 系统),因为存储层导出块设备。Ext4 已成为默认Linux 2.6.27 中的文件系统,并且是经过良好测试的文件系统,尽管不一定是闪存优化的。”
* 第二章 -> 分区方案 -> 文件系统
还有ext4 不使用日志has better 性能然后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
【讨论】: