我想使用 libvirt 一次运行基于同一图像的多个域(VM)。不应修改图像本身。图像应被视为起点或模板。
显而易见的可能是为每个域创建(临时)副本。由于图像可能需要多GB,因此我不想每次都创建它的完整副本。它只想存储差异。据我了解文档,外部快照正在使用这样的技术。但似乎快照绑定到域,我不能将它们用作模板。
根据documentation of qemu,我可以在传递选项-snapshot
时直接使用qemu。至于我不是手动提交更改,它应该可以工作。
qemu-system-x86_64 -snapshot -hda <image>
有没有办法在 libvirt 中实现类似的东西?
答案 0 :(得分:3)
您只需要使用qcow2支持文件。在接下来的步骤中,我假设您已将基本图像作为qcow2。
创建由基本影像支持的磁盘映像:
qemu-img create -f qcow2 \
-o backing_file=/path/to/base/image.qcow2 \
/path/to/guest/image.qcow2
然后在您的访客中,使用/path/to/guest/image.qcow2
作为磁盘。此文件只会与基本图像有所不同。
查看qemu-img的手册页了解更多详情。 qemu-img还有命令将覆盖文件更改提交到基本映像,另一个基础上的rebase等。