【问题标题】:Programatically run a QEMU VM instance from snapshot以编程方式从快照运行 QEMU VM 实例
【发布时间】:2014-06-01 16:17:54
【问题描述】:

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

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

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

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

[编辑:抱歉,如果不清楚 - 我说的是 RAM+HD 快照,而不仅仅是 HD 快照,我已经知道如何创建...]

谢谢

【问题讨论】:

  • 这既是一个编程问题,也是一个系统问题,所以我希望这是正确的地方。
  • 你有没有设法让它与 libvirt 一起工作,而不是直接在 qemu 上使用 -snapshot

标签: system qemu kvm libvirt


【解决方案1】:

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

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

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

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 端口值不同。

【讨论】:

  • 谢谢,但这不是我想要的。我已经在 qcow2 映像中存储了一个快照(可以使用 qemu-img info <image_file> 观看。我希望能够从那个快照恢复(也包括 RAM 状态)
  • 上面的解决方案是从以前创建的快照中运行的......诚然,它不包括 RAM 状态,也许你可以在问题中添加这个要求?
  • 不用担心。没有用 qemu 尝试过,我通常对需要节省内存的 vm 使用虚拟盒,所以我会感兴趣地看这个....
猜你喜欢
  • 2018-02-14
  • 1970-01-01
  • 2012-12-24
  • 2023-04-02
  • 1970-01-01
  • 2019-03-12
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多