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速度较慢。

Android 系统(65)---Android修改分区格式为F2FS相关推荐

  1. Android修改分区格式为F2FS

    谁人没试过犹豫,达到理想不太易 -–Beyond 本文介绍如何将Android系统的/data分区改变成F2FS格式.修改的原因是F2FS分区格式拥有更加的I/O性能. 修改文件系统格式成F2FS方法 ...

  2. 安卓system镜像分区_如何完全备份android系统上的system分区和data分区

    安卓的系统备份在很多场合下可能会用到,下面这个python的脚本,可以用来备份整个的data分区:将所有data分区的文件和目录打包到data.zip,并生成recovery的专用edify脚本到up ...

  3. 安卓修改电池容量教程_安卓(Android)系统电池电量修改图文教程

    安卓( Android )系统电池电量修改图文教程 有机友不喜欢新 rom 的电池图标, 想要官方的原版电池 图标,也有机友想更换其他电池图标.为了方便想更换电池 图标的机友,发一个最简易的教程. 在 ...

  4. 【android系统】android系统升级流程分析(二)---update升级包分析

    接下来我们将通过几篇文章来分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.今天让我先来分析下升级包update.zip. 一 ...

  5. android 服务端技术,移动应用服务器端开发(基于JSP技术)-2017 Android系统构架 Android系统构架.docx...

    Android系统构架 PAGE 1 目 录 TOC \o "1-3" \h \z \u 一.Android系统构架 1 二.Linux内核层 2 三.系统运行库层 3 (一)系统 ...

  6. 【android系统】android系统升级流程分析(一)---recovery模式中进行update包升级流程分析

    今天我们直接来看下android中具体的升级过程是如何的. 升级流程概述 升级的流程图: 升级流程分析 第一步:升级包获取 升级获取可以通过远程下载,也可直接拷贝到指定目录即可. 第二步:准备升级 然 ...

  7. android log抓取方法,Android系统之Android抓取各种log的方法

    Android系统之Android抓取各种log的方法 2018年11月25日 | 萬仟网移动技术 | 我要评论 android之android抓取各种log的方法 1.logcat (四类log b ...

  8. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  9. MTK android系统源码修改快速上手

    1.拷贝代码仓库 从git@192.168.1.3:a89.git 到work目录下: cbk@YCS:~/work$ ll cbk@YCS:~/work$ rm -rf a89/ cbk@YCS:~ ...

最新文章

  1. ARM研发进展与企业清单
  2. Office 365系列之十:批量部署O365客户端
  3. VS2017中C++无法将参数1从const char [8] 转换为char[]
  4. python九九乘法口诀表-python打出九九乘法口诀表
  5. [转]JAVA实现文件压缩
  6. 福田车载无线充电器方案开发设计_过年自驾回家,带上优胜仕车载无线充电器,一放即充导航无忧...
  7. 【数据库系统概论】考研第四部分重点分析【4.1】
  8. 用Nginx+Lua实现高性能、高可靠、安全的登陆验证
  9. linux 部署项目
  10. java访问oracle集群,JAVA查询Oracle数据库集群连接字符串
  11. Mybatis的SQL注入
  12. 你想让自己的产品像病毒一样疯传吗
  13. 【计算机图形学】几何
  14. 计算机主板pci插槽,什么是PCI插槽 PCI-E插槽如何辨别【详解】
  15. 9.MVC模式 -- 改造源代码
  16. esp8266基本使用 - WebServer
  17. ubuntu上使用certbot安装ssl证书到nginx
  18. 对cross-env的理解
  19. 未来十年的暴富机会--屌丝离财务自由到底有多远?(三)
  20. .Net插件编程模型:MEF和MAF

热门文章

  1. HTTP协议 (七) Cookie
  2. ARM开发步步深入之NandFlash 4KB突围
  3. 嵌入式Linux系统编程学习之十五sigaction信号处理机制
  4. mysql c测试程序_Linux平台下从零开始写一个C语言访问MySQL的测试程序
  5. mysql 在结果集中随机_MySql从表结果集中随机取一条数据
  6. Java多线程(十):BlockingQueue实现生产者消费者模型
  7. HTML页面的参数化实现(仿ASP)
  8. a good website to test OTP
  9. hdu 3966(树链剖分+线段树区间更新)
  10. sql server 事务与try catch