EROFS

From HandWiki

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.[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 and file-backed mounts since v6.12.[8][9]

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

Features

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

  • Little-endian on-disk design[1]
  • 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[1]
  • Support POSIX attributes and permissions, extended file attributes and ACL[1]
  • Fixed-size output transparent compression with LZ4, MicroLZMA (since Linux 5.16[11]), zstd and/or DEFLATE (since Linux 6.6[12]) for relative higher compression ratios[1]
  • In-place decompression for higher sequential read [13][14]
  • Big pcluster feature allowing up to 1 MiB big pclusters for better compression ratios since Linux 5.13.[15][16]
  • Direct I/O, Direct Access (DAX) support, chunk-based data deduplication for uncompressed files since Linux 5.15.[1][17]
  • Multiple device support for multiple layer container images since Linux 5.16.[1]
  • Ztailpacking support since Linux 5.17.[18]
  • File-based Fscache backend support since Linux 5.19 with "on-demand mode".[19][20]
  • Rolling hash deduplicated data compression and fragment support since Linux 6.1. [1]

See also

References

  1. 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 Cite error: Invalid <ref> tag; no text was provided for refs named erofs_documentation
  2. Michael Larabel (2018-11-19). "There Is Finally A User-Space Utility To Make EROFS Linux File-Systems". https://www.phoronix.com/scan.php?page=news_item&px=Linux-EROFS-User-Space. 
  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 Technologies. https://consumer.huawei.com/levant/emui-9-1/. 
  6. "Google's plan to use EROFS on Android". 20 May 2022. https://blog.esper.io/android-dessert-bites-25-erofs-in-android-13-47987123/. 
  7. "The Galaxy S23 might be Samsung's first Android device to use EROFS". 2023-02-07. https://www.realmicentral.com/2023/02/07/the-galaxy-s23-might-be-samsungs-first-android-device-to-use-erofs. 
  8. "The Evolution of the Nydus Image Acceleration". 6 June 2022. https://d7y.io/blog/2022/06/06/evolution-of-nydus/. 
  9. "The 6.12 merge window begins [LWN.net"]. https://lwn.net/Articles/990750/. 
  10. corbet (2019-11-25). "The 5.4 kernel has been released". https://lwn.net/Articles/805462/. 
  11. Michael Larabel. "EROFS File-System Adding LZMA Compression Support Via New MicroLZMA". https://www.phoronix.com/scan.php?page=news_item&px=EROFS-LZMA-Compression. 
  12. Michael Larabel. "EROFS File-System Adding DEFLATE Compression Support". https://www.phoronix.com/news/EROFS-DEFLATE-Coming. 
  13. "staging: erofs: introduce LZ4 decompression inplace". https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/staging?id=0ffd71bcc3a03ebb3551661a36052488369c4de9. 
  14. "staging: erofs: integrate decompression inplace". https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/staging?id=b6a76183dea8df67d5888493afe4181e260fad95. 
  15. Michael Larabel. "EROFS Sends In "Big Pcluster" Support For Linux 5.13, Other Improvements". https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.13-EROFS. 
  16. "erofs: add big pcluster compression support". https://lwn.net/Articles/851388/. 
  17. Michael Larabel. "XFS & EROFS File-Systems Have Big Changes For Linux 5.15". https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.15-XFS-EROFS. 
  18. "EROFS-Utils 1.5 Released With ZTailPacking, FSCK Extraction". https://www.phoronix.com/news/EROFS-Utils-1.5-Released. 
  19. Jonathan Corbet. "5.19 Merge window, part 1". https://lwn.net/Articles/896140/. 
  20. Marius Nestor (31 July 2022). "Linux Kernel 5.19 Officially Released, Linus Torvalds Teases Linux 6.0 as Next Kernel Series". https://9to5linux.com/linux-kernel-5-19-officially-released-this-is-whats-new.