Bos*_*llo 9 backup vps snapshot qemu kvm-virtualization
我想要一种在运行时备份 qcow2 文件的 KVM VPS 的强大方法。找了半天,发现可以用rsync做实时备份。我对 rsync 使用了以下命令:
rsync -avh /vms/base.qcow2 /backup/backup.qcow2
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是我担心如果在由于写入和删除操作(例如安装新软件或更新)而更改 VPS 时进行备份,则可能会损坏备份 qcow2 映像。
因此,从实时 VPS 的快照中进行备份似乎是更有趣的选择。
我使用以下命令来备份正在运行的 VPS:
1.创建快照:
qemu-img create -f qcow2 -b base.qcow2 snapshot.qcow2
Run Code Online (Sandbox Code Playgroud)
2.以原始图像格式(.img)转换快照:
qemu-img convert -O raw snapshot.qcow2 /backup/backup.img
Run Code Online (Sandbox Code Playgroud)
要恢复 VPS:
3.在qcow2图像中转换原始图像:
qemu-img convert -O qcow2 /backup/backup.img base.qcow2
Run Code Online (Sandbox Code Playgroud)
然后我们就可以通过virsh create base.xml命令启动VPS了。
即使这种方法也很有效,但我仍然不确定这是否是备份运行 VPS 的正确方法。我在这里和这里找到了关于 qemu-img 命令的很好的文档。但是他们没有提到将实时 VPS 的快照转换为原始图像的任何内容。
哪种方式更适合VPS实时备份?在原始图像中转换快照安全吗?
如果我能得到关于快照和基本文件在某些条件下如何表现的详细文档,那将非常有帮助。
也许我们也可以将基本 qcow2 映像转换为原始备份文件,而不是转换快照。所以命令流将是:
1. 创建快照
2. 将基本 qcow2 转换为备份原始映像
3. 将快照更改提交到基本映像
4. 删除快照
我试过了,它在 5GB 的小型 VPS 上运行良好。但是当 VPS 大小很大时,是否有任何错误或 VPS 损坏的可能性?
提前致谢...
Mic*_*ton 12
您唯一缺少的是在拍摄快照之前停顿来宾文件系统,以确保它是一致的。virsh domfsfreeze如果您使用的是 libvirtd ,则可以这样做。
例如,操作的顺序是:
# Freeze guest filesystems
virsh domfsfreeze $VM_NAME
# Create snapshot
qemu-img create -f qcow2 -b $VM_NAME.qcow2 snapshot.qcow2
# Thaw guest filesystems
virsh domfsthaw $VM_NAME
# Take backup from snapshot
qemu-img convert -O raw snapshot.qcow2 /backup/backup.img
Run Code Online (Sandbox Code Playgroud)
请注意,这需要qemu-guest-agent在 VM 中安装并运行。根据分发和安装选择,情况可能是这样,也可能不是。
该qemu-guest-agent也是可扩展的; 您可以向其中添加脚本以支持特定软件。例如,它包含一个示例脚本,用于将 MySQL 置于一致状态。