背景 :到目前为止,我一直在configuration虚拟机如下:
创build模板/黄金虚拟机:
上面的结果在一个虚拟机如:
200GB /var/lib/libvirt/images/mytemplate.img
为了从上面产生客人的图像,我做了:
上面的工作很好:我们有一个.xml文件和一个.img文件,可以很容易地在我们的数据场中移动。
问题 :问题是以上是密集configuration。 图像大小为200GB,尽pipe大部分图像可能是未使用的磁盘空间。 我希望将这些精简configuration的最大增长大小更快地移动到networking上。 我们希望guest虚拟机中的df /等命令尽可能地显示guest虚拟机文件系统的最大大小。
另外,我们希望考虑qcow2而不是原始的图像文件,以便拍摄快照。
问题 :如何创build如上所述的LVM分区的精简configuration的KVM映像? 我可以virt-sparsify现有的mytemplate.img文件,并仍然允许图像增长到最大的大小,并有/文件系统有我想要的行为? 请随时提供替代考虑。
virt-sparsify是你需要的。 virt-clone qemu-img convert是更好的方法。 为了真正节省磁盘空间,您可以创build黄金映像,然后使用qemu-img为其创build快照,并将虚拟机基于这些快照。 这样,基础数据将保留在基础映像中,虚拟机将在非常小的映像上,只包含实际虚拟机和黄金映像之间的差异。 不利的一面在于表演,所以select是你的,不论是牺牲空间还是表演。
replace这个:
dd if=mytemplate.img of=myguest.img iflag=direct oflag=direct (vs cp for better copying speed)
附:
cp --sparse=always mytemplate.img mynewguest.img
假设你的文件在尾部是稀疏的,这将导致一个小得多的文件。 如果它不会导致较小的文件,请安装模板图像:
kpartx -va mytemplate.img mount /dev/mapper/loop#p# /mnt/target dd if=/dev/zero of=/mnt/target/zeroes #let it fill the entire drive. rm -f /mnt/target/zeroes umount /mnt/target kpartx -vd mytemplate.img
然后重做cp命令(不要忘记总是稀疏的部分)。