EROFS文件系统工具简介

1. EROFS工具安装

1.1. apt安装

在较新的Debian/Ubuntu系统上,可以直接使用apt命令安装。

apt install erofs-utils

1.2. 源码安装

https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git

1.2.1. 编译依赖

如果需要支持Lz4压缩特性,需要Lz4 1.8.0+,强烈建议Lz4 1.9.3+。

1.2.2. 编译方法

对于一些旧的lz4版本(lz4-1.8.0~1.8.3),如果没有安装lz4-static, lz4hc算法将无法得到支持。可以使用apt install lz4-static.x86_64安装lz4-static。但是这些版本在压缩时存在某些bug,不建议直接使用这些版本。
如果使用lz4 1.9.0+,可以直接使用如下命令编译。

cd erofs-utils
./autogen.sh
./configure
make

编译生成的mkfs.erofs程序会保存在mkfs目录下。之后,可以使用make install将生成的工具安装到系统目录(需要root权限)。

2. EROFS工具使用方法

2.1. 命令帮助

mkfs.erofs 1.3
usage: [options] FILE DIRECTORY

Generate erofs image from DIRECTORY to FILE, and [options] are:
 -zX[,Y]               X=compressor (Y=compression level, optional)
 -C#                   specify the size of compress physical cluster in bytes
 -d#                   set output message level to # (maximum 9)
 -x#                   set xattr tolerance to # (< 0, disable xattrs; default 2)
 -EX[,...]             X=extended options
 -T#                   set a fixed UNIX timestamp # to all files
 -UX                   use a given filesystem UUID
 --exclude-path=X      avoid including file X (X = exact literal path)
 --exclude-regex=X     avoid including files that match X (X = regular expression)
 --force-uid=#         set all file uids to # (# = UID)
 --force-gid=#         set all file gids to # (# = GID)
 --help                display this help and exit
 --max-extent-bytes=#  set the maximum decompressed extend size # in bytes

Available compressors are: lz4hc, lz4

2.2. EROFS镜像格式

mkfs.erofs可以生成压缩和非压缩两种格式的EROFS镜像。

  • 对于非压缩镜像,不会对任何文件进行压缩。但是,可以选择是否将文件尾部的数据块与元数据进行内联。
  • 对于压缩镜像,会对每个文件尝试使用lz4或lz4hc算法进行压缩,并确认是否可以节省空间。如果压缩不能节省空间,则使用不对文件进行压缩。

2.3. 生成EROFS镜像(Linux 5.3+)

目前可以使用lz4和lz4hc进行压缩,例如:

mkfs.erofs -zlz4hc foo.erofs.img foo/

或者不进行压缩:

mkfs.erofs foo.erofs.img foo/

此外,还可以指定更高的压缩级别,以获得比默认级别更好(略好)的压缩比,例如:

mkfs.erofs -zlz4hc,12 foo.erofs.img foo/

2.4. 生成大物理扇区的EROFS镜像(Linux 5.13+)

为了获得更好的压缩比(对于普通存储设备有更好的顺序读性能),从linux-5.13开始引入了大物理扇区特性,这与旧内核不向前兼容。

具体来说,-C用于指定每个物理扇区的最大大小(以字节为单位)。

mkfs.erofs -zlz4hc -C65536 foo.erofs.img foo/

在这种情况下,物理扇区大小最多可以是64KiB。

注意,较大的物理扇区大小会导致不好的随机性能,所以需要提前仔细评估。或者根据需要,根据文件访问模式制定自己的文件压缩策略。

2.5. 生成早期的EROFS镜像(Linux 4.19+)

linux-5.3中引入了就地解压和压缩索引,这一特性不向前兼容旧内核。为了生成旧内核支持的legacy格式的EROFS镜像,可以考虑在命令行中添加"-E legacy-compress",例如:

mkfs.erofs -E legacy-compress -zlz4hc foo.erofs.img foo/

对于5.3及之后版本的内核,不推荐使用legacy格式的EROFS镜像,因为其运行时性能会下降。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值