自2012年向Linux内核社区贡献第一个补丁以来,华为在这十年间不断增加对Linux 社区的投入,从1个补丁/1个开发者参与到1434个补丁/95个开发者参与,从0个Maintainer到26个Maintainer。作为Linux的开发者和使用者,华为在使用代码的同时也在丰富并修改过往的错误代码内容。
尽管因为美国制裁的原因,目前华为已经无法正常使用Android系统,华为软件团队的主要精力也已经转移到鸿蒙生态的开发上,但是他们对于Linux社区作出的贡献,他们在ARM 64架构、ACPI子系统、文件系统、和代码重构方面的改良依然在散发着光芒,甚至对同样采用Linux内核的Android 13原生系统产生了深远的影响。
近日,根据XDA Developers前任主编、外网博客Esper高级技术编辑Mishaal Rahman报道,谷歌正在对Android 13原生系统作出一个有趣且可能引起争议的决定,即在Android 13中部署由华为开发的增强型只读文件系统,使其成为默认的只读文件系统。
(图源:Esper@Mishaal Rahman)
消息一出,就像是一石激起千层浪,整个社交媒体即刻沸腾起来。Android 13原生系统居然要用华为开发的文件系统,莫非是谷歌要向华为低头了?诸如此类的言论不胜枚举。借此机会,我们就来好好研究一下这个EROFS文件系统,顺便分析一个谷歌这个操作对其他安卓厂商可能带来的影响。
更快、更省、更安全
什么是EROFS?
所谓EROFS,指的是是华为为Linux内核设计的Enhanced Read-Only File System(增强式只读文件系统),该系统旨在提供一种解决方案,通过对硬件资源有限的设备(例如Android等智能手机)需要高性能只读要求的场景使用透明压缩来节省存储空间,并通过就地解压缩以实现更高的顺序读取。
2018年5月,前华为工程师高翔首次在Linux 4.14版内核的暂存区域中引入EROFS系统。按照高翔当时的说法,EROFS更多地关注性能,而不是仅仅关注尽可能多地节省存储空间。当时公布的测试数据显示,EROFS随机数据读取速度对比ext4有明显优势,最高提升超过500% 。
(图源:华为论坛)
2019年4月,在华为P30系列国内发布会上,华为终于宣布了EROFS超级文件系统的到来。在官方宣传中,华为表示EROFS超级文件系统不仅可以将随机读取速度平均提高20%至200%,同时还能节省超过2%的系统存储空间,甚至能让你的手机文件变得更加安全。
(图源:Twitter@EMUI)
问题来了,一个简单的文件系统,究竟是怎么给手机带来这么大提升的?简单地说,这里面的玄机在于「压缩」和「只读」这两个关键词。
首先,由于Android系统是基于Linux内核开发的,所以理所当然地沿用了Linux的主流文件管理系统Ext4。因为当时的储存介质普遍还是机械硬盘(HDD)的原因,这个诞生自2006年的文件系统,并没有针对闪存作太多的优化,更不可能支持系统文件压缩算法。
作为对比,华为研发的EROFS是一个压缩文件系统,可以通过改进的fixed-sized output压缩算法,将需要读写的数据压缩为固定大小的文件块,这样每次读写文件需要读取的数据量更少,可以解决传统文件系统「读写问题」带来的损耗,降低IO读取量,从而提升读取速度。
(图源:CSDN@P2_62476)
在华为P30系列发布会上,华为表示,比起安卓Linux内核的EXT4文件系统,EROFS 的随机读性能平均提升达20%,在4%的压缩率时,性能提升甚至可以达到288%。
(图源:华为P30发布会)
除了提升手机的读取速度之外,EROFS文件系统还能节省存储空间。一般来说,系统文件是以压缩后的形式存储在ROM上,借助EROFS文件系统的压缩算法,智能手机的系统文件可以进一步压缩。华为表示,以一款128GB ROM的手机为例,EROFS 可以减少2GB的空间占用,让你多存储1000张照片或者500首歌曲,同时系统升级包的大小同样得以压缩,平均升级时间缩短约20%。
(图源:华为P30发布会)
至于让手机文件变得更加安全,则跟「只读」特性有关。传统的Ext4文件系统是可写入的,Android系统是通过Ext4的只读挂载参数和挂载dm-verity虚拟块设备来配合实现只读,依然还有被绕过的潜在风险。和Ext4不同,EROFS天生就是个只读文件系统,无法被挂载成读/写模式,这样系统分区自然更安全。
人人皆可用
由此看来,EROFS文件系统确实可以称得上是华为的黑科技,解决了不少传统文件系统遗留下来的优化问题,会被谷歌盯上自然是一件顺理成章的事情。问题在于,在这美国制裁华为的大背景下,为什么谷歌还有权利使用华为研发出来的EROFS超级文件系统?
原因其实很简单,因为EROFS文件系统早就开源了,EROFS内核驱动程序在2019年底已经成为Linux 5.4版内核主线的一部分。Android系统本身就是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统,因此从Linux 5.4版开始,任何手机厂商都可以方便地将EROFS系统应用到自家设备。
(图源:Linux社区)
话虽如此,但在实际应用的过程中,EROFS文件系统的推进是比较缓慢的。为什么会这样?根据Mishaal Rahman的分析,因为追求系统稳定性的缘故,各家Android手机厂商倾向于在自己定制的系统中使用旧版的Linux内核,此外,因为Android系统的更新引擎尚不支持EROFS有效负载,各家厂商必须在其OTA更新基础架构中构建对EROFS的支持才行。
最终,还是国产厂商的行动要更快。自2021年开始,OPPO和小米等几家著名的国产厂商都开始使用EROFS文件系统作为自己的卖点。在OPPO最新发布的Reno8系列官方宣传中,赫然写着支持「只读分区压缩」技术,进一步节省系统空间,优化读写存储的性能的宣传语。
(图源:OPPO官网)
在几家国产主流厂商的带领下,包括酷派等小众厂商也加入了EROFS文件系统的行列。现如今,只要你的安卓手机采用的是Linux 5.4及以后的内核版本,那么就很有可能就在使用这项技术。如果你有兴趣,可以通过第三方应用AIDA64查看你的手机是否采用EROFS文件系统。
(图源:雷科技自制)
至于谷歌这边,去年12月,一位谷歌工程师在实施新的system_dlkm分区时复述了一位同事告诉他的有关Android即将推出的文件系统要求的内容,该分区包含系统分区的动态可加载内核模块,里面显示system_dlkm分区的文件系统应该是 EROFS 而不是Ext4。
此外,根据Mishaal Rahman爆料,谷歌在Android 13测试版中的PackageManager 加入两个新功能声明:android.software.erofs和android.software.erofs_legacy。此外,Android 13测试版还会检查内核中的EROFS支持,Google似乎正在努力让 海外Android厂商适应EROFS的到来。
总结一下,考虑到爆料人的身份和目前曝光的信息,小雷认为谷歌确实可能会在Android 13系统中采用EROFS文件系统。谷歌主动在最新的系统中采用华为研发的底层技术,证明了EROFS文件系统的先进性、可靠性,以及华为出色的研发实力,值得国人好好骄傲一番。
能够取得这样的成功,和华为坚定自主研发道路的战略是分不开的。根据相关统计,华为的研发费用从2011年之后就一直保持在10%以上,近年来甚至在14%以上,在受到全面制裁的2021年,华为研发费用甚至达到了人民币1427亿元,约占全年收入的22.4%,超越了微软、苹果、英特尔等一众科技巨头。
如今的华为,已然成为了不少国产手机厂商的榜样。诸如小米、OPPO、vivo等国内手机厂商也在不断加大研发投入,都希望在芯片领域留下自己的足迹,各种自研充电芯片、影像芯片都已经投入市场之中。小雷希望,各家国产厂商都走出属于自己的自研道路,只有到那一天,我们才能拍着自己的胸脯说:“中国的技术要走向世界了!”