KVM 原始映像的备份

KVM 原始映像的备份

我在 CentOS 6.3 上运行 qemu-img-0.12.1.2-2.355.0.1.el6,使用原始映像作为虚拟机。有没有办法安全地备份客户机而不停止它们?我尝试在未运行的测试客户机上创建快照,但出现错误:“此 qemu 二进制文件不支持实时磁盘快照”。这是否意味着原始格式不适合任何类型的快照,还是我的 KVM 包有问题?我读到暂停客户机就足以执行 dd 操作,对吗?请问您能分享一些您在这方面的最佳实践吗?

答案1

如果你使用生的图像文件那么获取一致快照的唯一方法就是暂停或关闭虚拟机。

您可以使用 qcow2 映像文件拍摄快照而无需暂停虚拟机,但快照将成为该文件的一部分。根据您的情况,这可能合适也可能不合适。

如果您使用的是 CentOS 7 或当前的 Fedora 虚拟机管理程序,您将拥有更多选项,例如可快照的 LVM 卷或 ZFS zvols。在这些现代系统上,您将访问virsh domfsfreeze客户机,获取快照,访问virsh domfsthaw客户机,然后备份快照。这需要在客户机中运行 qemu-guest-agent。

答案2

暂停 VMvirsh suspend <domain>只会冻结 VM,根据文档,所有磁盘 I/O 和网络 I/O 都将被暂停,而 VM 仍会消耗主机的 RAM。

如果你有 Centos,那么很有可能你也有 LVM 分区,并且上面还有一个 XFS 分区。如果该说法属实,那么你可以按以下方式备份它:

  • 删除虚拟机上的缓存并暂停它,
  • 删除主机上的缓存并执行 LVM 快照,
  • 在主机的某处安装 LVM 快照并执行备份计划。

对我来说,它甚至适用于数据库服务器。假设主机和 guset 上的内核参数为默认值,甚至可以完全安全地备份文件服务器(例如 samba),而无需在主机或 VM 上删除缓存。数据丢失很少。例如,Ext4 每 5 秒在 RAM 中提交一次脏页(默认设置)。这可能会导致在冻结前不到 5 秒提交的数据丢失。这种数据丢失量对我来说是可以接受的。

每种备份方法都有一些缺点。停机或潜在的数据丢失。许多数据库管理员认为,当数据库引擎(如 MS SQL)在接受更改之前必须将每个事务提交到文件系统时,数据丢失可能会导致数据损坏。另一方面,他们接受从备份中恢复数据并接受数据丢失。

相关内容