使用单个镜像创建多个虚拟机



我想使用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还提供了将覆盖文件更改提交到基映像、在另一个基映像上重新设置基等命令。

最新更新