尽管与其他即将发生的变化相比,它并没有引起太多关注,但 Android 13 已准备好对智能手机制造商提出新的要求。所有搭载 Android 13 或更高版本的设备如果想要访问 Google 的服务和 Play 商店,都必须使用华为的 EROFS 文件系统格式作为只读分区。但这不是任意更改,客户将从中获得一些真正的好处,例如可能更快的更新下载和更少的系统存储空间损失。
Esper.io 的 Mishaal Rahman在最近几个月的一系列提交中首次发现了这一变化,而谷歌即将举行的预定谈话中传达了这一变化。谷歌的许可要求有时可能是秘密的,尽管像这样的某些技术更改经常在Android 兼容性定义文档等内容中突出显示,并且在 Android 13 即将发布时可能会提供更详细的信息。
文件系统是一个非常复杂的主题,但简而言之,不同类型的存储介质和不同的用例需要不同的优化才能发挥最佳效果。与只读光学介质或闪存相比,旋转机械磁盘具有不同的要求,并且对每一个都施加完全相同的规则会消除优势并造成不必要的性能损失。文件系统并不是万能的,为给定的存储类型和应用程序选择正确的文件系统可以带来真正的好处。
例如,2018 年,谷歌在 Pixels 上为用户数据分区采用了三星时髦的闪存优化 F2FS 。其他安卓手机(前后都有)也用过。虽然它为基于闪存的存储系统提供了多种优势,但其中最大的优势是提高了写入速度并减少了空间有限时的性能下降。但是,如果您不需要像只读系统分区那样担心写入速度怎么办?在这种情况下,大多数 Android 手机只使用 EXT4,但该文件系统不像其他最近的文件系统那样支持压缩,从而为进一步优化打开了大门。
我不知道华为的 EROFS 在技术层面与其他文件系统格式有多少共享,但它提供了自己的改进,使其非常适合系统分区用例。Android 设备上的某些系统和隐藏分区是只读的,这意味着它们不必不断修改,即使它们最终会通过更新偶尔更改。
在这种情况下,压缩它们似乎很容易,但压缩通常会对内存使用或读/写速度造成性能损失。当然,写入速度在只读分区中并不重要,但读取速度却很重要。值得庆幸的是,EROFS 在从压缩的只读分区中随机读取时速度更快,并且在您必须这样做时减少了内存开销。而且,由于被压缩,它减少了这些只读分区可能需要占用的空间,将它们释放用于其他用途,甚至可能将节省的空间返还给客户。Rahman 报告说,使用该格式构建的 Cuttlefish 虚拟 Android 设备映像可以节省大约 800MB 的空间。这也可以减少在 OTA 更新中部署的图像大小,为客户节省宝贵的数据。
演示文稿和研究论文的基准。简而言之:只读分区用例有很多好处,缺点很少。
在文件系统的一位创建者提交的论文中,EROFS“将实际应用程序的启动时间减少了高达 22.9%,同时将存储使用量减少了近一半。” 尽管研究论文中实际显示的数字各不相同,并且示例基准测试在大多数情况下都显示出较小的收益,但改进仍然很大,新文件系统甚至可以在非压缩应用程序中击败标准的 Android EXT4:“与没有压缩支持的 Ext4 和 F2FS,EROFS 的性能始终与它们相当,甚至优于它们。”
将 EROFS 用于只读系统分区似乎没有任何真正的缺点,而且 Google 似乎同意。最近几个月,它的更多内部工具已经更新以更好地支持它。OPPO和小米等一些厂商实际上已经在使用它。而且,根据最近的提交模式,谷歌将其作为搭载 Android 13 的设备的一项要求——至少,如果你想使用谷歌的应用程序和商店的话。
Rahman 告诉我们,Pixel 7 将成为首批满足这一即将实施的要求的新手机之一,并在今年晚些时候推出新的文件系统格式。在此期间,大多数手机上的用户数据分区可能仍将是 EXT4 或 F2FS——除非 Google 稍后对此提出任何新要求。