Android修改分區格式爲F2FS

誰人沒試過猶豫,達到理想不太易 —–Beyond

本文介紹如何將Android系統的/data分區改變成F2FS格式。修改的原因是F2FS分區格式擁有更加的I/O性能。

修改文件系統格式成F2FS方法

在改動之前我們先看看當前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

第3點的修改可以參考:
https://github.com/anpage/android_device_asus_grouper/commit/9d6899d95af972ae7613d02dc30eb36bb74062b8

以上修改完畢,查看當前的/data分區已經變成了F2FS格式。

F2FS vs EXT4

修改了之後爲了驗證I/O性能確實提升了,可以藉助Androbench APK測試。結果如下圖。
這裏寫圖片描述

從跑分結果看f2fs格式的結果要好於ext4,但似乎優勢不明顯。我們在用dd命令測試:
這裏寫圖片描述

最後放上一個官方的分區格式不同的性能對比圖。
這裏寫圖片描述

拓展知識點

  • 什麼是文件系統:
    文件系統是用來控制如何存取數據的一套規則。如果沒有這套規則,那麼所有數據都會放在一個大的存儲區域上,我們很難找到需要的數據位於該區域的哪一個地方。於是就制定了一套規則,它將整個大的存儲區域分割成若干個獨立的子區域,每個子區域對應一個名稱,如何分割子區域,以及從子區域中讀寫目標數據的整套規則就是文件系統。

F2FS文件系統優缺點

F2FS (Flash-Friendly File System)文件系統格式是由三星公司開發的,它專爲移動設備而生。
優點:

  • 卓越的讀寫速度
  • 降低了寫的的次數,因此延長了磁盤的壽命。

缺點:

  • 佔用的空間更大
  • 沒有ext4穩定
  • 沒有ext4通用,某些手機可能不支持

EXT4文件系統優缺點

EXT4是Linux的標準文件系統,它基於EXT3而來,EXT3又基於EXT2而來,但從EXT3到EXT4做的改動巨大。
優點:

  • 良好的穩定性,使用廣泛
  • 所有的智能手機都支持。

缺點:

  • 相對與F2FS I/O速度較慢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章