2016-11-12 67 views
0

我想使用libvirt一次运行基于同一图像的多个域(VM)。图像本身不应该被修改。应该将图像视为一个起点或模板。根据单个图像创建多个虚拟机

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

根据documentation of qemu,我可以直接使用qemu,同时通过选项-snapshot。据我没有手动提交更改,它应该工作。

qemu-system-x86_64 -snapshot -hda <image> 

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

回答

1

所有你需要的是使用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也有命令将覆盖文件更改提交到基本映像,在另一个基础上重新绑定等。

+0

谢谢!我会看看。 :) – JojOatXGME

+0

它这样工作。我想避免直接调用'qemu-img',但是用* libvirt *创建这些图像,我必须定义* storage-pools *。我会直接使用'qemu-img',因为在这种情况下使用libvirt似乎有很多开销。 – JojOatXGME