本文介绍如何将Android系统的/data分区改变成F2FS格式。修改的原因是F2FS分区格式拥有更加的I/O性能。
在改动之前我们先看看当前Android系统的主要分区格式,可以用如下方式查看
- $ adb shell df -t ext4
- Filesystem 1K-blocks Used Available Use% Mounted on
- /dev/block/bootdevice/by-name/system 1007736 907964 83388 92% /system
- /dev/block/bootdevice/by-name/userdata 12168972 6740960 5411628 56% /data
- /dev/block/bootdevice/by-name/cache 259856 332 254160 1% /cache
- /dev/block/bootdevice/by-name/persist 28144 200 27292 1% /persist
大多数情况下可以看到我们系统当前的主要分区格式都是EXT4。
现在来将/data分区格式更改成F2FS格式,因为应用的好多私有数据都存放在该分区知悉,比如database,SharedPreferences.更改成F2FS格式能有效提升应用的I/O访问速度,提升性能。
修改的地方有三点:
1.打开kernel config中对F2FS的支持
项目的kernel config 文件中加入
- CONFIG_F2FS_FS=y
- CONFIG_F2FS_STAT_FS=y
- CONFIG_F2FS_FS_XATTR=y
- CONFIG_F2FS_FS_POSIX_ACL=y
- CONFIG_F2FS_FS_SECURITY=y
- CONFIG_F2FS_CHECK_FS=y
2.配置/data分区文件格式为F2FS.
在文件BoardConfig.mk中做如下修改
- TARGET_USERIMAGES_USE_F2FS := true
- BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
3.更改分区文件fstab,使得mount /data分区时的文件类型为F2FS。
fstab可能有多个类似文件,需要根据具体项目定位。修改形式大致如下:
- - /data ext4 noatime,nosuid,nodev,discard
- + /data f2fs noatime,nosuid,nodev,discard
以上修改完毕,查看当前的/data分区已经变成了F2FS格式。
修改了之后为了验证I/O性能确实提升了,可以借助Androbench APK测试。结果如下图。
转存失败重新上传取消
从跑分结果看f2fs格式的结果要好于ext4,但似乎优势不明显。我们在用dd命令测试:
转存失败重新上传取消
最后放上一个官方的分区格式不同的性能对比图。
转存失败重新上传取消
F2FS (Flash-Friendly File System)文件系统格式是由三星公司开发的,它专为移动设备而生。
优点:
缺点:
EXT4是Linux的标准文件系统,它基于EXT3而来,EXT3又基于EXT2而来,但从EXT3到EXT4做的改动巨大。
优点:
缺点: