erofs-utils使用说明

本文系初学者所作。如有错误,欢迎读者纠正。       

Erofs.utils是针对于华为开发的erofs文件系统的处理开发工具,主要功能包括创建、检查、解包EROFS镜像文件。包括mkfs.erofs命令、dump.erofs命令、fsck.erofs命令和erofsfuse命令。

      

       简单说明erofs文件系统的独特之处,相比于以往的文件系统,erofs最大的不同就是采用了一种新的压缩方式:fixed-sized output compression.什么意思呢?就是说erofs在压缩文件时,将从文件的首部开始压缩,每当压缩文件满4K(可以调节),将把这4K放进一个chunk,然后开始压缩新的一个chunk.与以往的固定输入大小压缩方式相比,这样的压缩方式更加有规律性,更加方便查找,解压等操作,因为压缩好的文件都是以4K的chunks压缩保存的;而固定输入大小压缩方式将4K的block压缩保存,然而这4k的文件并不知道会压缩成多大的文件,所以查找时会有更大的时间和空间消耗.

1.安装使用erofs-utils

1.1直接安装:

       在Ubuntu系统中只需要输入:

apt install erofs-utils

       系统就能安装好。想要检查是否能够正常使用mkfs.erofs命令只需要输入:

which mkfs.erofs

       如果shell输出了,mkfs.erofs可执行文件的地址,那么就能说明已经成功安装了,或直接输入:

mkfs.erofs (--help)

       如果能成功输出mkfs.erofs的参数说明面板,就能够说明已经安装好了。

       但是这种安装方式安装的工具包,可能不是最新版本。若想要安装最新版本就需要手动下载了

1.2手动安装:

       需要到工具包下载地址下载,解压

       然后到docs目录下的INSTALL.md文件查看详细的编译信息

       一般的在下载好LZ4压缩方式,后执行

       $ ./autogen.sh

       $ ./configure

       $ make

       即可。

2.命令的使用:

2.1 mkfs.erofs

       上文已经说明了命令mkfs.erofs是用于制作erofs的文件系统镜像。想要将某个文件路径制作成erofs文件系统镜像,只需要输入下面的指令:

mkfs.erofs [options] FILE DIRECTORY

下面是我的运行示例:

将下载好的linux系统的源码打包为erofs文件系统镜像。

下面是相关参数:

-d 可以调节输出信息的详细程度(最大是9).如果是打包大文件,且想要看详细信息,那么建议通过重定向’>’ or ‘>>’ 输出到一个txt文件最好,因为有可能把缓冲区冲满

-x 是文件系统的拓展属性

-z 就可以指定压缩方式了 比如 -zlz4hc 如果没有指定压缩器,那么制作erofs镜像文件将不会压缩

重新制作一个新的镜像文件,采用lz4hc作为compressor

可以看出两个镜像文件大小是有区别的:未添加-z参数制作出来的镜像文件的blocks数量比 添加过-z参数的镜像文件多,也就说明,前者所占的存储比后者更多

至于[,Y]中的 Y指的是压缩等级(compress level)等级越高,压缩后的文件越小,相应的压缩的时间就更长

--all-root 让所有文件所有者为root

-L 参数是为制作的镜像文件设置个卷标,其实就是起个名字 比如:

我的E盘叫extra就是E盘的卷标

--chunk-size 参数就是可以设置前面提到的fixed-sized output的那个可以设定的4KB的块

--ignore-mtime 意思是把镜像文件的建立时间作为文件的最后修改时间,可以用于让所有文件的时间戳同一,所以可以查看文件的变化

--preserve-mtime 与之相反,要求在制作镜像文件时,严格保留文件的最后修改时间

--exclude-path和—exclude-regex可以设置不把某或某些文件弄到制作的镜像文件中去

2.2dump.erofs

dump.erofs 是erofs文件系统提供的分析工具

当不加参数查看某img镜像文件时,dump.erofs只会输出简单的文件信息(下图):

可以看到在linux_erofs.img中的块数、inode数等等信息

其中inode是erofs文件系统中很重要的第一个数据,它是一个文件在文件系统存储的起始,也就是说一个inode就代表了文件系统中的一个文件,后面我们将看到这个镜像文件的源文件中同文件数(包括目录)也是90540.

-S查看镜像文件的统计信息:

(上图是linux_erofs.img文件的统计信息)

除了上述信息,命令还将返回源文件在各个文件大小区间的个数比例

                                            文件系统中各文件在各个文件大小区间个数比例

                                            各种文件类型的比例

这类信息在文中不予展示,有兴趣的读者可以自行查看

-s展示超级块的详细信息:

所谓超级块,就是整个文件系统结构的信息,是整个文件系统的“入口”

--path= X查看某文件的inode信息:

下面就能看到README文件在文件系统中的相关信息,包括NID、多少inode指向这个文件、inode size等。

通过 –-nid=# 参数也可以指向README文件,返回的信息是相同的

在给出了特定的nid之后(包括两种途径 –nid   --path),就可以通过-e和-ls获得更多的信息

-e:

--ls:

如上图,会展示出目录下各文件的nid、文件类型、文件名称

2.3fsck.erofs命令:

 fsck.erofs主要有两个功能:检查erofs镜像文件、解压erofs镜像文件

在不加参数的情况下, 如果想要检查的镜像文件没有问题,命令是不会返回东西的

如果想要返回信息,那么就会用到-d#参数,#的数字越大,表示返回的信息量就越大:

同mkfs.erofs命令 如果是大文件,-d9返回的信息量相当大

-p会返回文件的压缩率(需要搭配-d#参数使用,否则将没有信息返回):

(从上面也可以看出制作镜像文件时,如果不加-z参数是不会对源文件进行压缩的)

--extract[=X] 参数会检查文件的编码正确性,如果给出了X,那么文件还会把整个镜像文件提取到X目录中

特别的如果使用了 –extract=X参数,那么就能使用下面的额外针对于提取文件的参数:

--force 参数将允许将镜像文件提取到根目录‘/’下

--overwrite 参数将会把原有文件覆写掉,要谨慎使用,尤其提取到根目录时

--preserve是关于提取出来的文件的权限和所有者的参数,会全部保留原有的权限信息

              --preserve-owner 保留所有者

              --preserve-perms 保留权限信息

              --no-preserve 以当前用户的身份提取

              --no-preserve-owner 以当前用户为所有者

              --no-preserve-perms 以当前用户的权限信息设置权限

其实erofs-utils还提供了一个erofsfuse的命令,主要用于让低版本的不适配erofs文件系统的系统有方式处理erofs的镜像文件,但是这种方式终究是不会很高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值