增强型只读文件系统(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