我有一个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
端口值不同。