实时虚拟机上的 qemu-img 快照

实时虚拟机上的 qemu-img 快照

我已经使用 QCOW2 映像创建了多个 KVM VM。
每个 VM 都有自己的 qcow2 文件,并且不基于任何备份文件。
我的问题具体与这些正在运行的 VM 上的 QCow2 映像快照有关。
如果我在正在运行的 VM 上运行以下命令:
qemu-img snapshot -c backup /vms/vm10001.qcow2

上述命令会损害正在运行的虚拟机文件系统吗?
我的目的是使用以下命令将快照转换为 qcow2 映像:
qemu-img convert -s backup /vms/vm10001.qcow2 /vms/output.qcow2

我无法使用“virsh”命令,因此我试图找出一种方法来使用 qemu-img 完成我的任务

回答/更新 1
好的,我在我的几台测试虚拟机上测试了这一点,但上述操作不可行。qemu-img snapshot如果不暂停虚拟机,则无法在实时虚拟机上运行。

在 RHEL 基本节点上执行此操作的唯一方法是使用:
virsh snapshot-create <dom>

上述代码将保存虚拟机状态,然后在内部调用qemu-img snapshot -c。然而,这可能需要一些时间,这让我想到了第二个问题

问题2 : virsh snapshot-create <dom> --disk-only --atomic由于 qemu-kvm 太旧,因此不支持 RHEL 类型(包括 RHEL 7)的基本节点。
因此,唯一的选择是使用virsh snapshot-create <dom>速度有点慢的。
是否可以执行以下操作:
virsh suspend <dom>
qemu-img snapshot -c backup /vms/<dom>.qcow2
virsh resume <dom>

上述操作似乎比快照创建快得多

回答/更新 2

甚至上面的问题2也是不可能的。经过大量研究,我得出了同样的结论。

问题 3:

有没有方法可以在 RHEL 6/7 基本节点上为具有 Qcow2 磁盘的在线 VM 创建快照,然后备份该快照以便稍后恢复?

答案1

这不是一个确切的答案,但会为你指明方向。

我们使用 Linux KVM 已有很长时间了。以前 qcow2 不支持快照。在我们的第一台 KVM 主机中,我们不想使用 LVM 快照,因此我们无法进行实时备份。

然后我们发现Linux 热复制工具

使用此工具,我们可以冻结整个主机文件系统,并使用自定义备份脚本将 qcows 复制到外部磁盘。

我们的备份脚本是这样的;

# Mount Usb
mount /dev/sdb1 /USBDISK
# Mount file system as ro to temp folder
hcp --read-only --mount-point /SNAPSHOT /dev/md1
# Copy files out
cp /SNAPSHOT/*.qcow2 /USBDISK
# Stop Hot Copy
hcp --remove /dev/hcp1
# Remove Usb
umount /USBDISK

答案2

我对 KVM 的经验实际上非常有限,但处于非常相似的情况,这对我来说很有效:

首先,我对名为 MACHINE 的虚拟机的配置进行备份:

# virsh dumpxml MACHINE > /path/to/configfile.xml

然后我暂停名为 MACHINE 的虚拟机以防止新创建的机器出现损坏:

# virsh suspend MACHINE

接下来我使用 qemu-img 命令从名为 MACHINE 的虚拟机创建一个名为 MACHINE-BAK.qcow2 的快照,即使通常用于在格式之间进行转换:

# qemu-img convert -O qcow2 /path/to/MACHINE.qcow2 /path/to/MACHINE-BAK.qcow2

接下来我恢复名为 MACHINE 的原始 VM 的正常运行:

# virsh resume MACHINE

在通过 crontab 自动化运行的脚本中应用这些简单的步骤,我能够获得正在运行的虚拟机的定期完整备份,同时将停机时间降至最低(取决于原始虚拟机的大小,如上所述,最好在复制时暂停原始虚拟机)

相关内容