有没有可能在迁移后使用 KVM/QEMU/libvirt 执行实时迁移而不停止源 VM?
我想在 KVM 管理程序下对 VM 进行完全一致的备份而不停止此 VM。
因此,想法是在不停止源 VM 的情况下执行实时迁移,然后在迁移成功后使用完全正确的停止程序在目标主机上停止 VM,并在不中断源 VM 工作的情况下对其进行完全脱机复制。
但在默认设置中,源 VM 在迁移成功后停止工作,因此我必须重新启动它。有没有可能改变这种行为?
欢迎提出任何建议。
答案1
实时迁移无法实现这一点 —— 无法阻止 libvirt 将执行切换到目标 VM 并在迁移完成后拆除源 VM。
幸运的是,您不需要迁移即可在正在运行的虚拟机上进行完整磁盘备份。Libvirt/QEMU 支持实时磁盘快照。
本质上,您告诉 QEMU 将临时 qcow2 覆盖添加到现有磁盘,因此写入开始转到覆盖磁盘。现在,您可以使用 cp、rsync、$whatever 安全地备份原始基础磁盘映像。备份完成后,您可以告诉 QEMU 将覆盖合并回基础映像,将写入转移到基础映像,并丢弃临时覆盖。示例命令如下所示:
https://wiki.libvirt.org/page/Live-disk-backup-with-active-blockcommit
如果虚拟机上有多个磁盘,并且希望快照在所有磁盘上处于一致的时间点,则可以使用 QEMU 客户机代理在添加覆盖时静默客户机 I/O。客户机代理是不是如果您只有一个磁盘,则需要这样做,因为在这种情况下 QEMU 可以原子地执行磁盘旋转。