题 在压缩之前,我是否需要对qcow2图像进行零填充?


我想重新创建一个动态分配的qcow2图像,以便缩小它。是否足以删除所有不必要的文件,或者是否还需要用零填充以前被这些文件占用的空间?换句话说,qemu-img文件系统是否可识别?


5
2017-12-30 02:12






答案:


是的,如果要恢复已删除文件使用的空间,则需要对文件系统进行零填充。不,qemu-img不支持fs。

我忘了为我今天创建的一个虚拟机映像(工作时我的openstack云的最小Debian Sid映像)执行此操作,它最终几乎达到900MB,即使使用“-c”进行qcow2压缩也是如此。

我在运行“dd if = / dev / zero of = / root / zero; rm -f / root / zero; shutdown -h now”之后重新创建它,并且图像大小缩小到大约335MB。每当我启动一个新实例时,要复制的数据要少得多(无用)。

有很多已删除的文件,因为VM最初是作为debian squeeze开始的,并且被apt-get升级为sid。


3
2018-02-23 11:19





也可以看看: virt-sparsify,一个可以对磁盘映像中的文件系统进行零填充的实用程序(支持各种格式):

http://libguestfs.org/virt-sparsify.1.html


3
2018-02-05 06:47





我正在使用zerofree( apt-get install zerofree )为此任务:

Zerofree查找具有非零值内容的未分配块   一个ext2,ext3或ext4文件系统并用零填充它们

之后你可以缩小你的形象:
kvm-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2


1
2018-02-05 07:05





就个人而言,我认为使用Clonezilla或Symantec Ghost克隆磁盘效果更好。它比用零填充驱动器要快得多。此外,它还避免了图像的增长。

我无数次与Ghost和Win客人一起做过这件事。如果“已用空间”小于要被归零的那些,则实际上更快。你也可以使用 qemu-nbd 安装映像并从主机运行Clonezilla,避免Clonezilla-guest-guest的麻烦。无论哪种方式,它总是快得多 sdelete/dd 在我的经验中。 (另外,我经常最终在主机上没有空间可用于完全零客户机磁盘操作,因此填写客户机中的可用空间对我来说很少可行。)


0
2018-04-03 14:43



在VM中运行Clonezilla或Ghost?好像很多不必要的工作。
@AndréDaniel我曾经无数次与Ghost和Win客人一起做过这件事。如果“已用空间”小于要被归零的那些,则实际上更快。你也可以使用 qemu-nbd 安装映像并从主机运行Clonezilla。无论哪种方式,它总是快得多 sdelete/dd 对我来说。 (另外,我经常在主机上没有空间可用于完全零客户机磁盘操作。 - phoeagon
请将您的评论添加到答案中,以使其更具实质性。 - Deer Hunter