我找不到任何关于备份 qcow2 kvm 客户端的好信息。我对客户端的运行状态不感兴趣,只对文件系统感兴趣。这个问题建议使用savevm
,但这会创建快照。我想远程备份文件系统。
有没有比以下更好的方法:
- 暂停 virt_machine#暂停虚拟机
- rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # 将图像复制到同一驱动器上
- 恢复 virt_machine
- rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh://backup@backupmachine:/vmbackups
这样做有几个缺点。首先,复制一个巨大的映像文件需要(相对)很长时间。其次,我必须始终确保有足够的空间来备份我的机器。这并不理想。还有其他更好的方法来管理 KVM 备份吗?
谢谢。
答案1
我建议使用 qemu-nbd 的快照功能:
qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2
然后挂载 /dev/nbd0p1 (分区 1),rsync,卸载并最后断开连接:
qemu-nbd --disconnect /dev/nbd0
答案2
这是肮脏的图像(你的暂停可能会有帮助,但可能仍然不完全一致):
对保存 qcow2 稀疏文件的 LVM 文件系统进行快照(再次假设您有足够的空间用于 LVM 快照)
挂载 LVM 快照。
使用 sshfs 挂载远程。
使用稀疏复制 (cp --sparse=always src dest) 复制到 sshfs 挂载点
复制所需的时间较少,但如果图像大部分已满,则仍将占用全部时间。
从虚拟机内部备份数据可能是一个更好的主意(节省空间/时间)。将各个虚拟机视为要备份/恢复的常规主机 - 即只获取所需的内容并保留一组没有数据的存根虚拟机以快速恢复运行。
答案3
就我个人而言,我曾非常难以解决这个问题,并且发现,即使处于静止状态,客户机备份也经常不稳定。请记住 - 如果您不定期尝试恢复这些备份,您真的不知道它们是否有效。
经过大量试验后,我完全放弃了映像备份,转而采用传统的网络备份解决方案,这种解决方案可能用于裸机服务器。就我而言,我们选择了 BackupPC,它虽然老旧,但非常可靠。在每台服务器上,我为正在使用的特定应用程序配置了备份解决方案。例如,MySQL 的 sqldump、Joomla 的插件等。
它是一种 PIA,但速度更快,而且非常可靠。
答案4
无论您在哪里创建快照 - LVM 或 qcow2,在创建快照之前仍需要让虚拟机处于静止状态。否则,数据会丢失,图像会损坏。