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.
Developer(s) | Huawei originally, Alibaba Cloud, Bytedance, Coolpad, Google, OPPO |
---|---|
Full name | Enhanced Read-Only File System |
Introduced | November 24, 2019 | with Linux 5.4
Limits | |
Max volume size | 16 TiB |
Max file size | |
Max no. of files | Depends on volume size |
Max filename length | 255 bytes |
Features | |
Dates recorded | File change time (extended only)[1] |
Date resolution | 1 ns |
Attributes | POSIX, Extended file attributes |
File system permissions | POSIX, ACL |
Transparent compression | Yes (LZ4; LZMA since 5.16; DEFLATE since 6.6)[1] |
Data deduplication | Yes (extent-based) |
Other | |
Supported operating systems | Linux |
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.[1]
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.[2][3] All of Huawei's new products shipped with EMUI 9.0.1 or later used EROFS,[4] and it was promoted as one of the key features of EMUI 9.1.[5] Oppo, Xiaomi and some Samsung products also use EROFS.[6][7]
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.[8]
The file system was formally merged into the mainline kernel with Linux kernel v5.4.[9]
Features
editThe file system has two different inode on-disk layouts. One is compact, and the other is extended.[1]
- Little-endian on-disk design[1]
- 32-bit block addressing, which currently limits the total possible capacity of an EROFS filesystem to 16 TiB of 4 KiB block size.[1]
- Metadata and data can be mixed by design for on-disk flexibility together with tail-packing inline data technology[1]
- Support POSIX attributes and permissions, extended file attributes and ACL[1]
- Fixed-size output transparent compression with LZ4, MicroLZMA (since Linux 5.16[10]) and/or DEFLATE (since Linux 6.6[11]) for relative higher compression ratios[1]
- In-place decompression for higher sequential read [12][13]
- Big pcluster feature allowing up to 1 MiB big pclusters for better compression ratios since Linux 5.13.[14][15]
- Direct I/O, Direct Access (DAX) support, chunk-based data deduplication for uncompressed files since Linux 5.15.[1][16]
- Multiple device support for multiple layer container images since Linux 5.16.[1]
- Ztailpacking support since Linux 5.17.[17]
- File-based Fscache backend support since Linux 5.19 with "on-demand mode".[18][19]
- Rolling hash deduplicated data compression and fragment support since Linux 6.1. [1]
See also
editReferences
edit- ^ a b c d e f g h i j k l m Gao Xiang. "erofs.html". www.kernel.org. Retrieved 2022-08-04.
- ^ Michael Larabel (2018-11-19). "There Is Finally A User-Space Utility To Make EROFS Linux File-Systems". Phoronix. Retrieved 2018-12-13.
- ^ Xiang, Gao (2018-05-31). "erofs: introduce erofs file system". Linux kernel (Mailing list). Retrieved 2018-12-13.
- ^ Xiang, Gao (2019-07-04). "erofs: promote erofs from staging". Linux kernel (Mailing list). Retrieved 2019-09-03.
- ^ "EMUI 9.1, the Intelligent Android OS". HUAWEI Global. Huawei Technologies. Retrieved 2022-01-10.
- ^ "Google's plan to use EROFS on Android". 20 May 2022. Retrieved 2022-08-04.
- ^ "The Galaxy S23 might be Samsung's first Android device to use EROFS". 2023-02-07. Retrieved 2023-07-22.
- ^ "The Evolution of the Nydus Image Acceleration". 6 June 2022. Retrieved 2022-08-04.
- ^ corbet (2019-11-25). "The 5.4 kernel has been released". LWN.net. Retrieved 2019-12-01.
- ^ Michael Larabel. "EROFS File-System Adding LZMA Compression Support Via New MicroLZMA". Phoronix. Retrieved 2022-01-10.
- ^ Michael Larabel. "EROFS File-System Adding DEFLATE Compression Support". Phoronix. Retrieved 2023-09-03.
- ^ "staging: erofs: introduce LZ4 decompression inplace". Retrieved 2020-12-03.
- ^ "staging: erofs: integrate decompression inplace". Retrieved 2020-12-03.
- ^ Michael Larabel. "EROFS Sends In "Big Pcluster" Support For Linux 5.13, Other Improvements". Phoronix. Retrieved 2021-07-11.
- ^ "erofs: add big pcluster compression support". Retrieved 2021-07-11.
- ^ Michael Larabel. "XFS & EROFS File-Systems Have Big Changes For Linux 5.15". Phoronix. Retrieved 2021-11-02.
- ^ "EROFS-Utils 1.5 Released With ZTailPacking, FSCK Extraction". Retrieved 2022-08-04.
- ^ Jonathan Corbet. "5.19 Merge window, part 1". Retrieved 2022-08-04.
- ^ Marius Nestor (31 July 2022). "Linux Kernel 5.19 Officially Released, Linus Torvalds Teases Linux 6.0 as Next Kernel Series". Retrieved 2022-08-04.
External links
edit- Official website
- EROFS Linux kernel repo - git.kernel.org
- erofs-utils - git.kernel.org
- ATC '19 - EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices
- An introduction to EROFS - LWN.net
- EROFS, an Introduction and our Smartphone Practice on YouTube
- EROFS vs. SquashFS: A Gentle Benchmark - blog.sigma-star.at
- Finding the Best Block Filesystem for Your Embedded Linux System - Michael Opdenacker, Bootlin on YouTube