我想使用libvirt一次运行基于相同映像的多个域(vm)。图像本身不应该被修改。该图像应被视为起点或模板。
一个明显的可能性是为每个域创建一个(临时)副本。由于图像可能占用多个GB,所以我不想每次都创建它的完整副本。它只希望存储差异。根据我对文档的理解,外部快照正在使用这种技术。但是,快照似乎是绑定到一个域,我不能使用它们作为模板。
根据qemu的文档,我可以在传递选项-snapshot
时直接使用qemu。只要我没有手动提交更改,它应该可以工作。
qemu-system-x86_64 -snapshot -hda <image>
是否有办法在libvirt中实现类似的东西?
您所需要的就是使用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还提供了将覆盖文件更改提交到基映像、在另一个基映像上重新设置基等命令。