「e2image(8)」-

  LINUX MANUAL PAGES

将关键的ext2/ext3/ext4文件系统元数据保存到文件中

命令语法格式

e2image [ -r|Q ] [ -f ] device image-file

e2image -I device image-file

e2image -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]

命令描述

命令e2image程序将设备上的关键ext2,ext3,ext4文件系统元数据保存到image-file指定的文件中。 dumpe2fs和debugfs可以通过对这些程序使用-i选项来检查映像文件。这可以帮助专家恢复灾难性损坏的文件系统。将来,e2fsck将得到增强,能够使用映像文件来帮助恢复严重受损的文件系统。

保存e2image以进行调试时,使用-r或-Q选项,必须卸载文件系统或以只读方式挂载文件系统,以使映像文件处于一致状态。可以使用-f选项覆盖此要求,但生成的镜像文件很可能不会有用。

如果image-file是”-“,那么e2image的输出将被发送到标准输出,这样输出就可以通过管道输送到另一个程序,例如gzip(1)。 (请注意,目前仅在使用-r选项创建原始映像文件时支持此功能,因为创建普通映像文件或QCOW2映像的过程当前需要随机访问该文件,而无法使用管道进行此操作。希望在未来版本的e2image中解除限制。)

为系统上的所有文件系统创建映像文件,并定期(在启动时、每周,或类似)保存分区布局(可以使用fdisk -l命令生成)。image-file应存储在”除了其包含数据的文件系统之外”的某些文件系统上,以确保在文件系统严重损坏的情况下可以访问此数据。

为节省磁盘空间,e2image将映像文件创建为“稀疏文件”或“QCOW2格式“。因此,如果需要将稀疏映像文件复制到另一个位置,则应先将其压缩或使用GNU版本的cp的–parse=always选项复制。这不适用于QCOW2映像,它不是稀疏的。

ext2映像文件的大小主要取决于文件系统的大小以及正在使用的inode数量。对于典型的10千兆字节文件系统,在120万个inode中使用200,000个inode,映像文件大约为35兆字节;一个4千兆字节的文件系统,在550,000个inode中使用了15,000个inode,将产生一个3兆字节的映像文件。映像文件往往是可压缩的;占用磁盘空间32兆字节的映像文件通常会压缩到3或4兆字节。

使用映像文件恢复文件系统元数据

选项-I将使e2image将存储在映像文件中的元数据安装回设备。 它可用于在紧急情况下将文件系统元数据恢复回设备。

警告!!!! 只有当其他替代方法失败时,选项-I才应用作绝望措施。如果自创建映像文件后文件系统已更改,则数据将丢失。 通常,您应首先对文件系统进行完整映像备份,以防您以后尝试其他恢复策略。

RAW映像文件

选项-r将创建原始映像文件,而不是普通映像文件。 原始映像文件在两种方式与普通映像文件不同。首先,将文件系统元数据放置在正确的位置,以便可以直接在原始映像文件上运行e2fsck,dumpe2fs,debugfs等。 为了最小化原始映像文件占用的磁盘空间量,该文件将创建为稀疏文件。(注意使用不了解如何创建稀疏文件的实用程序复制或压缩/解压缩此文件;文件将变得与文件系统本身一样大!)其次,原始映像文件还包括间接块和目录块,而标准映像文件没有,虽然这可能在将来发生变化。

作为向e2fsprogs发送错误报告的一部分,有时会将文件系统发送给维护者时使用原始映像文件。 在此容量中使用时,建议的命令如下(用适当的设备替换hda1):

# e2image -r /dev/hda1 – | bzip2 > hda1.e2i.bz2

这将仅发送元数据信息,而不包含任何数据块。 但是,目录块中的文件名仍然可以显示有关bug报告者可能希望保密的文件系统内容的信息。 要解决此问题,可以指定-s选项。 这将导致e2image对目录块进行加扰,并在写入映像文件之前将目录块的任何未使用部分清零。 但是,-s选项将阻止分析与哈希树索引目录相关的问题。

请注意,即使您将“/dev/hda1”替换为以前由e2image创建的另一个原始磁盘映像或QCOW2映像,这也可以使用。

QCOW2映像文件

-Q选项将创建QCOW2映像文件,而不是普通映像文件或原始映像文件。 QCOW2映像包含原始映像所具有的所有信息,但与原始映像不同,它不是稀疏的。 QCOW2映像通过将数据以特殊格式存储在一起,将数据包紧密地放在一起,最大限度地减少了磁盘空间量,从而避免了洞,同时仍然将尺寸降低。

为了将文件系统作为错误报告的一部分发送给维护者,请使用以下命令(将hda1替换为适当的设备):

# e2image -Q /dev/hda1 hda1.qcow2

# bzip2 -z hda1.qcow2

这将仅发送元数据信息,而不包含任何数据块。 但是,目录块中的文件名仍然可以显示有关bug报告者可能希望保密的文件系统内容的信息。 要解决此问题,可以指定-s选项。 这将导致e2image对目录块进行加扰,并在写入映像文件之前将目录块的任何未使用部分清零。 但是,-s选项将阻止分析与哈希树索引目录相关的问题。

请注意,e2image创建的QCOW2映像是常规的QCOW2映像,可以通过知道QCOW2格式的工具进行处理,例如qemu-img。

您可以使用以下命令将qcow2映像转换为原始映像:

# e2image -r hda1.qcow2 hda1.raw

这可以将包含所有数据的qcow2映像写入可以循环安装的稀疏映像文件或磁盘分区。 请注意,这可能不适用于e2image不生成的qcow2映像。

包含数据

通常,e2image仅包含文件系统元数据,而不包括常规文件数据。 可以指定-a选项以包括所有数据。 这将提供适合用于克隆整个FS或用于备份目的的映像。 请注意,此选项仅适用于raw或QCOW2格式。 可以给出-p开关以显示进度。 如果文件系统被克隆到基于闪存的存储设备(其中读取非常快并且希望避免不必要的写入以减少设备上的写入磨损),则-c选项会导致e2image尝试从目的地读取块,以查看它是否与e2image即将复制的块相同。 如果块已经相同,则可以跳过写入。 -n选项将导致所有写操作都为no-ops,并打印已写入的块。

偏移量

通常,文件系统从分区的开头开始,并且在分区上运行e2image。 使用映像文件时,您无法使用分区设备,因此可以使用-o选项指定文件系统直接启动的偏移量。 类似地,-O选项指定在写入文件系统之前应在目标中寻找的偏移量。

例如,如果您有一个整个硬盘驱动器的dd映像,其中包含从1 MiB开始的分区中的ext2文件系统,则可以使用以下命令克隆该文件系统:

# e2image -aro 1048576 img /dev/sda1

或者您可以将文件系统克隆到映像文件中,在第一个MiB中为分区表留出空间:

# e2image -arO 1048576 /dev/sda1 img

如果指定至少一个偏移量,并且只指定一个文件,则将执行就地移动,允许您安全地将文件系统从一个偏移移动到另一个偏移。

相关手册

dumpe2fs(8), debugfs(8)

参考文献

  • man 8 e2image, Version 1.44.4-2

更新日志

  • 11/17/2018 创建文章