据EDN电子技术设计报道,谷歌正在对Android 13做出一个有趣但可能引起争议的决定,即部署由华为开发的文件系统。
据外媒Esper 称,谷歌计划在 Android 13 中加入增强型只读文件系统 (EROFS),使其成为默认的只读系统。该文件系统是高翔在华为担任工程师时创建的,与现有文件系统相比,EROFS 具有显着优势,包括节省空间的压缩和速度。这可能会使安卓手机更新速度更快,占用存储空间更小,拥有更快的读写速度。
EROFS全称为Enhanced Read-Only File System(可扩展的只读文件系统),由华为开发,并被称为超级文件系统。
早在 2018 年年中,EROFS 就在 4.14 版本的 Linux 内核的暂存区域中首次引入, 华为工程师高翔当时表示EROFS仍然处于早期发展阶段特点改进压缩模式比其他文件sstems追求不同的设计方法,主要关注性能和速度华为工程师保证EROFS将提供改进磁盘性能和速度相比其他只读文件系统同时还节省了磁盘空间。
该文称:文件系统是一种概述如何存储和检索数据的技术。有许多不同的种类文件系统,每个都有各自的优点,可以从中选择。您可能听说过exFAT、F2FS、ext4之类的文件系统。选择一个文件系统而不是另一个文件系统会对存储性能和稳定性产生深远的影响,因此设备制造商不会轻易做出决定。大多数设备制造商都满足于流行的、经过良好测试的文件系统,比如ext4,但这并不意味着公司不愿意尝试替代方案。这正是华为在开源的Linux文件系统EROFS上所做的事情,该系统被称为EROFS。值得一提的是,当时报道称EROFS未来会被用于Android设备上,如今这一预测真的实现了。
经过一年的持续开发,高翔使 EROFS 文件系统驱动程序在 5.4 版本正式升为主线。他说,EROFS 已被证明足够稳定,可以部署在超过 1000 万台运行基于 Android 的 EMUI 9.0.1 的华为设备中。华为甚至有足够的信心将其作为 EMUI 9.1 的一个关键特性进行推广。
尽管华为的 EROFS 内核驱动程序在 2019 年末成为 5.4 版主线 Linux 内核的一部分,但文件系统本身直到 2021 年年中才被其他 Android 设备制造商使用。
部分原因是内核版本要求,Android 设备倾向于运行较旧的 Linux 内核版本,因此如果 OEM想要在具有较旧 Linux 版本的设备上支持该功能,他们必须向后移植一些补丁。此外,OEM 必须在其 OTA 更新基础架构中构建对 EROFS 的支持,因为Android的 A/B 更新守护进程 update_engine 尚不支持 EROFS 有效负载。不过,最终,OPPO 和小米等几家著名的 Android OEM开始使用 EROFS 发布产品。
其他 OEM 将很快效仿华为、OPPO 和小米使用 EROFS,这在很大程度上要归功于 Google。由于 EROFS 内核驱动程序在 Linux 内核 5.4 中进行了主线化,因此 Android Common Kernel 继承了从开始的更改。(这是允许的,因为),因此每个 Android 13 启动设备都将具有与 EROFS 兼容的内核。Google 还为 update_engine 带来了,添加了用于构建 EROFS 映像的,并且最近使和墨鱼AVD 成为可能与 EROFS。近几个月来,EROFS 得到了 Google 的大力支持,原因最近也很清楚:他们计划用它来替换 EXT4,至少对于 Android 的只读分区是这样。
上:通过 Linux 'mount' 命令显示的 Pixel 6 Pro 的系统分区及其文件系统;左下:通过 DiskInfo 应用程序显示的 Pixel 6 Pro 的系统分区及其文件系统;右下:Pixel 6 Pro 的用户数据分区及其通过 DiskInfo 应用程序显示的文件系统
如前所述,EROFS 提供了比现有解决方案更好的随机读/写性能。此外,EROFS 还可以显着节省存储空间。例如,构建使用 EROFS 而不是 EXT4 的墨鱼图像可以节省大约 800MB 的空间。
随着大小的减小,额外的空间可用于将更多的系统应用程序和文件打包到这些分区中。额外的空间也可以分配给用户数据分区,以容纳更多用户的应用程序和文件。带宽节省也不容忽视。当 OEM 必须将完整的 OTA 更新推送给数十万甚至数百万用户时,尺寸减小确实会增加。
由于文件系统架构是一个复杂的主题,因此很难解释它究竟是如何实现这些改进的。2019 年的论文摘要显示:
智能手机通常具有有限的存储和运行时内存。压缩的只读文件系统可以显着减少只读系统资源使用的存储空间。然而,现有的压缩只读文件系统使用固定大小的输入压缩,这会导致显着的 I/O 放大和不必要的计算。它们还会在解压过程中消耗过多的运行时内存,并在运行时内存不足时降低性能。在本文中,我们描述了 EROFS,这是一种新的压缩友好型只读文件系统,它利用固定大小的输出压缩和内存高效的解压缩来实现高性能,而几乎没有额外的内存开销。我们还报告了我们在数千万智能手机上部署 EROFS 的经验。
论文中比较了 EROFS 与其他文件系统的性能的各种基准和指标(来源:EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices)
更多技术细节可从高翔在USENIX或KubeCon + CloudNativeCon的演讲,以及kernel.org 上 EROFS的文档和自述文件中查看。