'virsh save' 后 VM 的状态

Let*_*t4U 5 linux libvirt kvm-virtualization virsh

virsh save vm_name memdump然后virsh restore memdump恢复一个(正在运行的)VM 就好了。

但是,VM 在 之后关闭virsh save。我正在为 KVM 虚拟机编写“实时”备份和恢复脚本,因此在备份部分,我显然需要在备份后运行虚拟机。virsh restore memdump备份后立即执行不是问题,但在我看来基本上没有必要 - 我“应该”能够暂停虚拟机,将其内存保存到文件中,然后简单地恢复/取消挂起虚拟机。

这对于内存很少的虚拟机来说并不是真正的问题,但是如果虚拟机有相当大的工作内存,那么它会不必要地延长备份时间。

不幸的是,即使我virsh suspendvirsh save.

有没有办法做到这一点?(即暂停、保存、取消暂停)

dya*_*sny 2

如果虚拟机有大量内存,在任何情况下保存它都意味着要花费大量时间来保存内存状态。

如果没有硬性要求备份完整的虚拟机状态(因为通常是多余的,恢复时会因为时间差异而出错,甚至可能导致崩溃)。

通常情况下,虚拟机的备份方式如下:

  1. 静默 Vm 的文件系统
  2. 拍摄虚拟机磁盘的实时快照
  3. 备份磁盘和 VM 的配置 ( virsh dumpxml VM)
  4. 实时合并磁盘,使快照消失

现在,kvm 唯一可能棘手的部分是最后一部分。大多数当前发行版都支持使用它blockpull,但这不会将快照合并到基本映像中,它会执行相反的操作 - 将数据从基本映像提取到快照中,以便您可以删除基本映像。更好的命令是blockcommit,它将更改的位从快照推送到基础映像中,但是,它仅在非常前沿的发行版中可用。我希望它能进入 RHEL 7.1,我们拭目以待