如何使具有 LVM 分区的 KVM 映像以最大增长尺寸进行精简配置?

如何使具有 LVM 分区的 KVM 映像以最大增长尺寸进行精简配置?

背景:到目前为止,我已经配置了如下虚拟机:

创建模板/黄金虚拟机:

  • 创建具有原始 200GB 磁盘的新 CentOS 6.6 VM(1 个 .xml 文件、1 个 .img 文件)
  • LVM 分区包括:/boot、swap 和 / 分区(大部分空间在 / 中)
  • 安装所需的软件包

上述操作将导致虚拟机如下:

200GB /var/lib/libvirt/images/mytemplate.img

为了制作上面的来宾图像,我做了以下工作:

  • dd if=mytemplate.img of=myguest.img iflag=direct oflag=direct(与 cp 相比,复制速度更快)
  • 使用 guestfish 修改 /etc/sysconfig/network、/etc/sysconfig/network-scripts/ifcfg-eth0
    • uuidgen 和 MAC 地址生成器脚本生成这些 ID
    • 静态 IP 地址从可用池中提取

上述工作很好:我们有一个.xml文件和一个.img文件,可以轻松地在我们的数据场中移动。

问题:问题是上述操作是厚配置。这些图像的大小为 200GB,尽管图像的大部分可能是未使用的磁盘空间。我希望对这些图像进行薄配置,并设置最大增长大小,以便更快地在网络上移动图像。我们需要以下命令自由度 /在客户虚拟机内部尽可能显示客户文件系统的最大大小。

此外,我们希望考虑使用 qcow2 而不是 raw 作为图像文件,以便可以拍摄快照。

问题:如何创建如上所述的 LVM 分区的精简配置 KVM 映像?我可以virt-稀疏化现有的 mytemplate.img 文件,并仍允许图像增长到最大尺寸,并使 / 文件系统具有我想要的行为?请随意提供替代方案以供考虑。

答案1

  1. 是的,virt-sparsify这就是你需要的。
  2. 要克隆虚拟机,你可以使用virt-clone
  3. 正确复制磁盘映像qemu-img convert是更好的方法。

为了真正节省磁盘空间,您可以制作黄金映像,然后使用 创建它的一些快照qemu-img,并基于这些快照创建虚拟机。这样,基本数据将保留在基本映像中,而虚拟机将位于非常小的映像上,这些映像仅包含实际虚拟机和黄金映像之间的差异。当然,缺点是性能,因此选择权在您手中,是牺牲空间还是牺牲性能。

答案2

替换为:

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 命令(不要忘记 sparse always 部分)。

相关内容