🔎 Overview#

EROFS - Enhanced Read-Only File System

A modern, flexible, general-purpose, high-performance, block-based immutable filesystem with a highly optimized on-disk format and runtime implementation, designed for a variety of use cases—not just storage space savings—while maintaining optimal runtime performance.

EROFS has been formally available since Linux 5.4. It is currently maintained by an open-source community from all over the world, and is still under active development.


A modern filesystem more than just another archive format: EROFS is strictly block-aligned to maximize the data utilization of a single disk I/O and enable advanced features like Direct I/O and FSDAX.

📝 Technical Design

Minimal core on-disk format for non-encoded use cases.
Besides, advanced on-disk and/or runtime features can be enabled on demand.

⚖️ Features and Comparison

Compression & Deduplication

Per-file data compression as an option, normally using fixed-sized output compression to fill up each block. Compressed data can be deduplicated with byte-granularity cut points.

Block-aligned fitblk compression


Applications

Architecture

EROFS dataflow in brief

Feedback & Contributing

If you’re interested, feel free to send feedback and/or patches to the linux-erofs mailing list <linux-erofs@lists.ozlabs.org> or join our Matrix room <#erofs:matrix.org>. Developer guides might be a useful start for newcomers as the first step.

Please also take a look at Code of Conduct for all Linux kernel development communities.

Additional resources

EROFS in-tree documentation - kernel.org

An introduction to EROFS - LWN.net

EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices - USENIX ATC’19.

EROFS的介绍与讨论 (chn) - Weixin Official Accounts Platform

EROFS Everywhere: An Image-Based Kernel Approach for Various Use Cases (chn) with slides (eng) - KubeCon + CloudNativeCon + Open Source Summit China 2023

Finding the Best Block Filesystem for Your Embedded Linux System - Michael Opdenacker, Bootlin @ EOSS 2023