赞
踩
2019年开年,智能手机市场异常热闹,各家厂商都使出浑身解数吸引眼球,各种黑科技简直眼花缭乱。华为P30凭借无可匹敌的摄影效果和逆天颜值成功跑出,傲视群雄之际,当然不得不提“天生快一生快”这个王炸的加持。从2016年Mate9发布以来,“天生快一生快”一直作为华为手机的优良基因,集结了众多的先进技术,其中之一就是文件系统的持续进化。而刚刚发布的P30系列使用了全新的超级文件系统(EROFS),据称能显著提升文件访问性能。
......
那么文件系统到底是什么?
这些年来华为手机在这方面做了哪些努力?
今天就来好好聊一聊。
∨
◆ ◆ ◆ ◆ ◆
【从HDD时代走来的Ext4,并不适合手机】
大家知道,手机上的文件是存储在手机本身的存储器件(存储介质为闪存)上的,而如今各家高端机型基本上都采用UFS标准的闪存,绝对速度已经不相上下。在此情形下,一个高效的文件系统就显得尤为重要了。
文件系统是一种用于向用户提供底层数据访问的机制,可以简单的理解为有一个笔记本记录里硬盘中所有的文件名,文件所在位置以及文件的大小。有了这个笔记本,在读写文件时就能快速的找到目标文件和位置。
关于文件系统,不同平台有着不同标准,所能支持的文件大小、读写性能也不尽相同。Android系统由于基于Linux开发,所以Android手机在文件系统上也选择了Linux的主流文件系统Ext4。Ext4首次出现在2006年,当时的储存介质普遍还是机械硬盘(HDD),所以Ext4并没有针对闪存作太多的优化。
◆ ◆ ◆ ◆ ◆
【一次革命: F2FS初试牛刀,解决碎片化带来的性能下降问题】
2012年面世F2FS文件系统,全称“Flash Friendly File System”,看名字就知道,这是专门为闪存而生的文件系统。但是F2FS诞生之初还不够完善,业界普遍担忧其稳定性,特别是在长期使用后会导致性能急剧下降这一点上争议甚多,所以始终没有迈过规模商用的门槛。
华为经过大量的优化和测试之后,在2016年旗舰机Mate 9上率先规模商用采用了F2FS,其中一个关键举措就是对于空闲空间回收机制的优化,可以复用离散的数据页写入数据,显著减少GC带来的卡顿。此举能够有效应对手机长期使用后的碎片化导致的性能下降问题,经过测试,相比Ext4,长期使用后的F2FS文件系统访问流畅度提升20%。
在华为“吃螃蟹”之后,其他的厂商也在F2FS上陆续跟进,如2018年谷歌在自己的旗舰Pixel 3中使用了F2FS。
◆ ◆ ◆ ◆ ◆
【二次革命:EROFS炸裂出街,速度容量安全我都要】
由于F2FS着重改善了随机写性能,华为将F2FS仅仅用于用户分区,系统分区(只读属性)仍然保留了Ext4的结构。那么有没有一种文件系统能够提升随机读的性能,让系统分区也能够受益呢?
2018年6月,华为工程师在开源社区展示了基于Linux的全新只读文件系统EROFS(Extendable Read-Only File System),采用改进的压缩算法,致力于提高文件访问性能,特别是随机读性能。根据当时公布的测试数据,可以看到执行随机读取数据时,EROFS有着一边倒的优势,并且文件压缩率越小时优势越明显:当文件压缩率为4%(即100MB文件压缩为4MB)时,提升高达172%。在EROFS面世后的半年多里,华为工程师对其持续打磨,终于在P30上实现了规模商用。
1. 4K固定压缩输出,有效减少读放大
如前所述,EROFS是一种压缩文件系统,采用了一种叫做fixed-sized output文件压缩算法, 压缩后的物理块大小为固定值(4K)。相比于以固定大小为输入,变长输出的fixed-size input文件压缩算法(如squashfs文件系统),前者的压缩率更高,并且能够有效的减少读放大问题,降低IO读取量。
fixed-sized output文件压缩算法
例如一个128k的文件, squashfs会采用固定大小(比如32K)为输入,即会将每32k数据压缩成不确定的大小,比如可能是12K;那么读取文件中的任意4k数据,都需要至少读取完整的12k压缩数据,然后解压再读取其中的4k,这多读取的8K就是所谓的读放大问题。
而EROFS采用的是固定大小为压缩输出,即可能会将这128k数据的[0-7k]压缩成4k,[7-25k]也压缩成4k,[25-32k]也压缩成4k,以此类推;那么读取文件中的任意4k数据,只要读取最少4k,最多8k(任意4k数据压缩后最多分布到两个block中,即上图中的蓝色区域)的压缩数据,相比squashfs读放大问题明显减少了。
通过fixed-sized output压缩算法加持,EROFS的带来的性能提升肉眼可见: 在最新发布的P30上,压缩率为4%时随机读性能提升接近300%。而综合了各级压缩率的整体用户使用场景来看,系统的随机读性能提升平均也达到了20%,用户能感受到应用启动更快了,操作也更流畅了。
2. 节省空间,多存1000张照片
由于采用了改进的压缩算法,EROFS文件系统更节省空间。以P30的初始占用空间为例,采用EROFS和Ext4文件系统相比,前者比后者占用空间减少2GB,相当于用户可以多存储1000张照片或500首歌曲。
空间节省不仅体现在新机可用空间上,系统升级时同样能够获益。根据测算,采用EROFS 后,升级包大小下降约5%-10%,升级时间缩短约20%。以用户平均换机时间两年为例,一台手机至少需要经历10次以上的升级,那么使用EROFS后,节省流量和时间都十分可观。
3. 想要安全?加锁还不够那就筑一道墙
为了避免系统分区被篡改,Android将系统分区设置成只读的。由于Ext4本身是可写的,Android 是通过Ext4的只读挂载参数 和挂载dm-verity虚拟块设备(用于文件系统校验)来配合实现只读,相当于给系统分区加了两把锁。而通过去除Ext4只读挂载选项并且不挂载dm-verity设备,就可以绕过这两把锁对系统分区进行写操作。
相比之下EROFS是天然只读的,没法通过任何手段挂载成可写的,这就相当于筑了一道难以逾越的墙,使用EROFS的系统分区更加安全了。
◆ ◆ ◆ ◆ ◆
【底气源于实力,文件系统的进化不会止步】
此次P30系统分区使用EROFS替换Ext4 ,可以算是系统升级的重点。每一项提升都直击要害,更快更精简更安全。正是源于华为多年来在安卓底层技术的积累,才有底气对文件系统进行改造,以此应对比PC端更加复杂多变的移动端使用场景。EROFS将安卓手机的性能推向了一个新高度,未来华为还会在文件系统这方面带来怎样惊艳的体验,一起拭目以待吧。
—广告—
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。