如何(正确)备份现场QEMU / KVM虚拟机?

我目前正在为KVM虚拟机devise备份解决scheme,作为传统备份的附加措施。

不幸的是,目前为止(2013年8月)我现在遇到的所有解决scheme都是:

  • 不保证VM的一致备份(失去内存状态,创build一个脏的图像,或其他东西),
  • 或者需要很长的停机时间 (备份时完全closures虚拟机)。

我知道QEMU / libvirt拍摄快照的function,但是,它不可用,因为:

  • 图像内部快照为您提供了一个不断变化的图像文件,导致可能的脏备份( 假设一个使用qcow2图像 )。
  • 还不能将当前活动的外部快照合并到原始支持图像( “blockcommit” )中。

出于以上原因,我现在正在实施一个脚本:

  1. 保存虚拟机的状态并暂停
  2. 在虚拟机磁盘映像和状态所在的位置设置设备映射程序快照
  3. 恢复VM
  4. 安装步骤2的快照。
  5. 备份虚拟机的磁盘和状态(configuration方便)
  6. 合并快照(s)。

如果我把所有事情都做好了,这将只需要几秒钟的时间就可以对虚拟机进行一致的备份(因为1-3是快速的,可能是亚秒级的)。 当然,恢复时,虚拟机将是过去的方式,但至less给我一个有序的关机/重新启动的选项。

我是否错过了这个解决scheme? 或者有人确实已经实施了这个?

停止虚拟机将不会刷新正在运行的IO,您应该使用qemu-ga来暂停虚拟机。

由于QEMU引入了块迁移,您可以尝试使用它将虚拟机迁移到备份映像中,同时保存内存状态和磁盘