![实时虚拟机上的 qemu-img 快照](https://linux22.com/image/658418/%E5%AE%9E%E6%97%B6%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%8A%E7%9A%84%20qemu-img%20%E5%BF%AB%E7%85%A7.png)
我已经使用 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 自动化运行的脚本中应用这些简单的步骤,我能够获得正在运行的虚拟机的定期完整备份,同时将停机时间降至最低(取决于原始虚拟机的大小,如上所述,最好在复制时暂停原始虚拟机)