EROFS
Read-only file system for Linux
EROFS (Enhanced Read-Only File System) is a lightweight read-only file system initially developed by Huawei, originally for the Linux kernel and now maintained by an open-source community.
EROFS aims to form a generic read-only file system solution for various read-only use cases (embedded devices, containers and more) instead of just focusing on storage space saving without considering any side effects of runtime performance.
For example, it provides a solution to save storage space by using transparent compression as an option for scenarios that need high-performance read-only requirements on their devices with limited hardware resources, e.g. smartphones like Android and IoT operating systems such as HarmonyOS alongside its HarmonyOS NEXT core system iteration. All of Huawei's new products shipped with EMUI 9.0.1 or later used EROFS, and it was promoted as one of the key features of EMUI 9.1. Oppo, Xiaomi and some Samsung products also use EROFS.
Also, it provides a content-addressable chunk-based container image solution together with lazy pulling feature to accelerate container startup speed by using new file-based fscache backend since Linux kernel v5.19 and file-backed mounts since v6.12.
The file system was formally merged into the mainline kernel with Linux kernel v5.4.
01Features
The file system has two different inode on-disk layouts. One is compact, and the other is extended.
- Little-endian on-disk design.
- 48-bit block addressing, which currently limits the total possible capacity of an EROFS filesystem to 1 EiB of 4 KiB block size.
- Metadata and data can be mixed by design for on-disk flexibility together with tail-packing inline data technology.
- Support POSIX attributes and permissions, extended file attributes and ACL.
- Fixed-size output transparent compression with LZ4, MicroLZMA (since Linux 5.16), zstd and/or DEFLATE (since Linux 6.6) for relative higher compression ratios.
- In-place decompression for higher sequential read.
- Big pcluster feature allowing up to 1 MiB big pclusters for better compression ratios since Linux 5.13.
- Direct I/O, Direct Access (DAX) support, chunk-based data deduplication for uncompressed files since Linux 5.15.
- Multiple device support for multiple layer container images since Linux 5.16.
- Ztailpacking support since Linux 5.17.
- File-based Fscache backend support since Linux 5.19 with "on-demand mode".
- Rolling hash deduplicated data compression and fragment support since Linux 6.1.
Sources and credits
This article is adapted from the Wikipedia article “EROFS”, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.
Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.