从快照以编程方式运行QEMU虚拟机实例



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

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

我想我可以通过克隆虚拟高清和安装/创建一个新的域(virsh),然后运行从快照恢复。但是,我希望能够做到这一点,几乎"即时"与尽可能少的延迟,从我决定我需要运行另一个实例的图像X的时间,该实例从存储的快照运行。

有人做过那样的事吗?我开始想,也许libvirt还不够低级?

[编辑:抱歉,如果这不是很清楚-我说的是一个RAM+高清快照,而不仅仅是高清快照,我已经知道如何创建…]

谢谢

我可以使用如下命令从同一个快照运行多个并发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,因此临时内存用于磁盘写。

没有尝试的是强制回写到底层设备,我怀疑如果这是可能的,那么可能会发生各种各样的破坏。基本上,不要忘记-snapshot参数!

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

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 &

如果你正在使用网络,不要忘记使MAC地址和任何hostfw端口值不同。

最新更新