基于单个镜像创建多个虚拟机

Joj*_*GME 3 qemu libvirt

我想使用libvirt一次运行基于同一映像的多个域 (VM)。不应修改图像本身。图像应被视为起点或模板。

一个明显的可能性是为每个域创建一个(临时)副本。由于图像可能需要多个 GB,我不想每次都创建它的完整副本。它只想存储差异。据我了解文档,外部快照正在使用这种技术。但似乎快照绑定到一个域,我不能将它们用作模板。

根据qemu 的文档,我可以在传递 option 时直接使用 qemu -snapshot。就我没有手动提交更改而言,它应该可以工作。

qemu-system-x86_64 -snapshot -hda <image>
Run Code Online (Sandbox Code Playgroud)

有没有办法在libvirt 中实现类似的东西?

Ced*_*nat 6

您所需要的只是使用 qcow2 支持文件。在接下来的步骤中,我将假设您已经拥有作为 qcow2 的基本映像。

创建由基本映像支持的磁盘映像:

qemu-img create -f qcow2 \
                -o backing_file=/path/to/base/image.qcow2 \
                /path/to/guest/image.qcow2
Run Code Online (Sandbox Code Playgroud)

然后在您的来宾中,/path/to/guest/image.qcow2用作磁盘。这个文件只会得到与基本图像的差异。

查看 qemu-img 的手册页以获取更多详细信息。qemu-img 也有命令将覆盖文件更改提交到基础映像中,在另一个基础上变基等。