EROFS(Enhanced Read-Only File System )是华为最初为Linux内核 开发的轻量级只读文件系统。
EROFS 旨在为各种只读用例(嵌入式设备、容器等)形成一个通用的只读文件系统解决方案,而不是仅仅关注存储空间的节省而不考虑运行时性能的任何副作用。
例如,它提供了一种通过透明压缩来节省存储空间的解决方案,用于在硬件资源有限的设备上需要高性能只读的场景,例如Android和HarmonyOS等智能手机。 华为EMUI 9.0.1及以后的所有新产品都使用了EROFS,被宣传为EMUI 9.1的关键特性之一。 OPPO、小米产品也使用EROFS。
此外,它还提供了一个基于内容寻址的基于块的容器镜像解决方案以及延迟拉取功能,通过使用Linux 内核v5.19 以来新的基于文件的 fscache 后端来加速容器启动速度。
文件系统与Linux 内核v5.4正式合并到主线内核中。
特征:
文件系统有两种不同的inode磁盘布局。一个是紧凑的,另一个是扩展的。
Little-endian磁盘设计
4KB 块大小和 32 位块地址,这将 EROFS 文件系统的总可能容量限制为 16 TB。
元数据和数据可以通过尾部打包内联数据技术进行混合
支持POSIX属性和权限,xattr和ACL
使用LZ4进行固定输出透明压缩以实现相对更高的压缩比
就地解压缩以实现更高的顺序读取
自 Linux 5.13 以来,Big pcluster 功能允许高达 1 MiB 的大 pcluster 以获得更好的压缩比。
自 Linux 5.15 以来,直接 I/O、直接访问 (DAX) 支持、基于块的未压缩文件的重复数据删除。
自 Linux 5.16 起对多层容器映像的多设备支持。
自 Linux 5.16 起支持 MicroLZMA 算法。
自 Linux 5.17 起支持 Ztailpacking。
从 Linux 5.19 开始,基于文件的 Fscache 后端支持“按需模式”。