EROFS

In this article we will explore the topic of EROFS from various perspectives, covering its historical, cultural, social and emotional implications. EROFS is a topic of great relevance today, which has sparked interest and debate in different areas. Throughout the article we will analyze the different aspects of EROFS, delving into its meaning, impact and possible solutions. Through a multidisciplinary approach, we seek to provide a comprehensive look that allows the reader to understand the complexity and importance of EROFS in the contemporary context.

EROFS
Developer(s)Huawei originally, Alibaba Cloud, Bytedance, Coolpad, Google, OPPO
Full nameEnhanced Read-Only File System
IntroducedNovember 24, 2019 (2019-11-24) with Linux 5.4
Limits
Max volume size16 TiB
Max file size
  • 4 GiB (compact)
  • 16 EiB (extended, also limited by volume size)
Max no. of filesDepends on volume size
Max filename length255 bytes
Features
Dates recordedFile change time (extended only)
Date resolution1 ns
AttributesPOSIX, Extended file attributes
File system
permissions
POSIX, ACL
Transparent
compression
Yes (LZ4; LZMA since 5.16; DEFLATE since 6.6)
Data deduplicationYes (extent-based)
Other
Supported
operating systems
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 from all over the world.

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.

The file system was formally merged into the mainline kernel with Linux kernel v5.4.

Features

The file system has two different inode on-disk layouts. One is compact, and the other is extended.

  • Little-endian on-disk design
  • 32-bit block addressing, which currently limits the total possible capacity of an EROFS filesystem to 16 TiB 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) 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 de-duplication 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.

See also

References

  1. ^ a b c d e f g h i j k l m Gao Xiang. "erofs.html". www.kernel.org. Retrieved 2022-08-04.
  2. ^ Michael Larabel (2018-11-19). "There Is Finally A User-Space Utility To Make EROFS Linux File-Systems". Phoronix. Retrieved 2018-12-13.
  3. ^ Xiang, Gao (2018-05-31). "erofs: introduce erofs file system". Linux kernel (Mailing list). Retrieved 2018-12-13.
  4. ^ Xiang, Gao (2019-07-04). "erofs: promote erofs from staging". Linux kernel (Mailing list). Retrieved 2019-09-03.
  5. ^ "EMUI 9.1, the Intelligent Android OS". HUAWEI Global. Huawei Technologies. Retrieved 2022-01-10.
  6. ^ "Google's plan to use EROFS on Android". 20 May 2022. Retrieved 2022-08-04.
  7. ^ "The Galaxy S23 might be Samsung's first Android device to use EROFS". 2023-02-07. Retrieved 2023-07-22.
  8. ^ "The Evolution of the Nydus Image Acceleration". 6 June 2022. Retrieved 2022-08-04.
  9. ^ corbet (2019-11-25). "The 5.4 kernel has been released". LWN.net. Retrieved 2019-12-01.
  10. ^ Michael Larabel. "EROFS File-System Adding LZMA Compression Support Via New MicroLZMA". Phoronix. Retrieved 2022-01-10.
  11. ^ Michael Larabel. "EROFS File-System Adding DEFLATE Compression Support". Phoronix. Retrieved 2023-09-03.
  12. ^ "staging: erofs: introduce LZ4 decompression inplace". Retrieved 2020-12-03.
  13. ^ "staging: erofs: integrate decompression inplace". Retrieved 2020-12-03.
  14. ^ Michael Larabel. "EROFS Sends In "Big Pcluster" Support For Linux 5.13, Other Improvements". Phoronix. Retrieved 2021-07-11.
  15. ^ "erofs: add big pcluster compression support". Retrieved 2021-07-11.
  16. ^ Michael Larabel. "XFS & EROFS File-Systems Have Big Changes For Linux 5.15". Phoronix. Retrieved 2021-11-02.
  17. ^ "EROFS-Utils 1.5 Released With ZTailPacking, FSCK Extraction". Retrieved 2022-08-04.
  18. ^ Jonathan Corbet. "5.19 Merge window, part 1". Retrieved 2022-08-04.
  19. ^ 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