以编程方式从快照运行QEMU VM实例

时间:2014-06-01 16:17:54

标签: system qemu kvm libvirt

我有一个QEMU图像,其中存储有快照。现在我正在使用libvirt启动它。

但是,我希望能够从同一个图像/快照中运行多个实例。

我想我可以通过克隆virtual-hd并安装/创建一个新域( virsh ),然后从快照运行revert来实现。但是,我希望能够在运行时尽可能地“延迟”执行该操作,从我决定运行映像X的另一个实例到实例从存储的快照运行的时间开始。

有人这样做过吗?我开始想,也许libvirt不够低级吗?

[编辑:对不起,如果不清楚 - 我说的是RAM +高清快照,而不仅仅是高清快照,我已经知道如何制作......]

由于

1 个答案:

答案 0 :(得分:3)

我能够使用如下命令从同一快照运行多个并发qemu。 (显然-arm-kernel-cpu等参数在您的情况下会有所不同)

qemu-system-arm -hda snapshot.qcow2 -snapshot -kernel some_vmlinux \
                -serial stdio -append 'root=/dev/sda2 rootfstype=ext4 rw'\
                -cpu arm1176 -m 256 -M versatilepb

这里的重要参数是-snapshot,因此临时内存用于磁盘写入。

没有尝试的是强制回写底层设备,我怀疑如果可能的话会发生各种各样的破坏并且它发生了...基本上,不要忘记{{ 1}}参数!

如果你想要一个每个实例不同的可写存储,你可能需要添加第二个虚拟硬盘并以某种方式安装公共快照:

-snapshot

如果您正在使用网络,请不要忘记使MAC地址和任何qemu-system-arm -hda snapshot.qcow2 -snapshot -kernel some_vmlinux \ -serial stdio -append 'root=/dev/sda2 rootfstype=ext4 rw'\ -cpu arm1176 -m 256 -M versatilepb -hdb drive_system1.img & qemu-system-arm -hda snapshot.qcow2 -snapshot -kernel some_vmlinux \ -serial stdio -append 'root=/dev/sda2 rootfstype=ext4 rw'\ -cpu arm1176 -m 256 -M versatilepb -hdb drive_system2.img & 端口值不同。