首页 文章

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

提问于
浏览
4

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

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

我想我可以通过克隆virtual-hd并安装/创建一个新域(virsh)然后从快照运行revert来做到这一点 . 但是我希望能够做到这一点,从我决定运行图像X的另一个实例到实例从存储的快照运行的时间起,尽可能少的延迟 .

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

[编辑:对不起,如果这还不清楚 - 我在谈论RAM高清快照,而不仅仅是高清快照,我已经知道如何创建...]

谢谢

1 回答

  • 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 ,因此临时内存用于磁盘写入 .

    我没有尝试过强制回写底层设备,我怀疑如果这是可能的话会发生各种各样的破坏并且它发生了......基本上,不要忘记 -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 端口值不同 .

相关问题