增强型只读文件系统(EROFS)是为高性能只读场景量身打造的Linux内核文件系统。Alibaba Cloud Linux操作系统将EROFS应用于云计算场景,从而更好地满足容器镜像、操作系统镜像、软件包及AI模型数据集的分发和存储需求。本文将介绍EROFS的常见特性及使用方法。
特性对比
以下对比了EROFS、EXT4和SquashFS文件系统的常见特性:
特性 | EROFS | EXT4 | SquashFS |
最小块大小 | 512字节 | 1 KiB | 不对齐 |
Inode大小 | 32字节或64字节 | 128字节或256字节 | 不固定,取决文件类型 |
UID/GID总数限制 | 无限制 | 无限制 | 最多65536个 |
纳秒时间戳 | 有 | 有 | 无 |
UUID和卷标 | 支持 | 支持 | 不支持 |
数据压缩 | 支持 | 不支持 | 支持 |
数据去重 | 支持 | 不支持 | 不支持 |
通过文件挂载 | 支持 | 不支持 | 不支持 |
外部数据引用 | 支持 | 不支持 | 不支持 |
POSIX.1e ACL支持 | 支持 | 支持 | 不支持 |
Direct I/O支持 | 支持 | 支持 | 不支持 |
FSDAX支持 | 支持 | 支持 | 不支持 |
FIEMAP支持 | 支持 | 支持 | 不支持 |
SEEK_{DATA,HOLE}支持 | 支持 | 支持 | 不支持 |
创建使用文件系统镜像
确认是否安装
erofs-utils
包。mkfs.erofs -V
如果输出对应的版本号,则说明已经安装。
否则,执行以下命令安装
erofs-utils
包。sudo yum install -y erofs-utils
执行
mkfs.erofs
命令生成文件系统镜像。以
foo
目录生成foo.erofs
为例。mkfs.erofs foo.erofs foo
输出结果如下所示。
mkfs.erofs 1.8.4 Build completed. ------ Filesystem UUID: c11813b0-b657-439c-8484-2196703035b7 Filesystem total blocks: 1 (of 4096-byte blocks) Filesystem total inodes: 1 Filesystem total metadata blocks: 1 Filesystem total deduplicated bytes (of source files): 0
mkfs.erofs
常用参数说明:参数
说明
-zX[,level]
指定压缩算法(X,全小写)及可选的压缩级别(level)。支持LZ4、LZ4HC、LZMA、DEFLATE和Zstd算法。例如
-zlz4hc,12
表示使用LZ4HC算法,并将压缩级别设置为12。若未指定压缩算法,则生成非压缩镜像。-C <size>
设置物理簇大小(单位:字节)。例如,
-C 65536
指定64 KiB簇大小。适当增加物理簇大小以减小镜像体积并提升顺序读性能,但可能影响随机读性能。-T <time>
为所有文件设置固定UNIX时间戳。
-U <UUID>
指定文件系统UUID。
-L <label>
指定文件系统卷标。
执行以下命令,挂载生成的文件系统镜像。
以
foo.erofs
挂载到/mnt/erofs
目录为例。sudo mkdir -p /mnt/erofs sudo mount -t erofs -o loop foo.erofs /mnt/erofs
若您不再使用该文件系统,可执行以下命令,卸载该文件系统。
以
/mnt/erofs
目录为例。sudo umount /mnt/erofs