虚拟机的增量备份

虚拟机的增量备份

我们目前运行着一堆物理机器。对于备份,我们一直在使用 dirvish,它本质上是 rsync 的包装器,并以增量方式进行备份。我们目前正在将一台新机器投入生产,它将运行一大堆虚拟机。理想情况下,我希望备份虚拟机映像,而不是从虚拟机本身进行文件级备份。有没有办法以增量方式执行此操作,因为每个映像都是一个巨大的文件,每当有任何变化时都需要进行新的备份?其他人在这里如何进行虚拟机备份,只是将它们视为物理机器?

如果重要的话,我们会使用 Xen 来实际进行虚拟化。

谢谢

答案1

您可以继续执行当前正在执行的操作,只需对 rsync 备份脚本进行一些小的更改即可。

rsync 可以在 VM 内部运行并通过 ssh 备份到远程主机,就像从物理机器备份一样。例如,我将 /etc、/usr/local/、/home、/var 的部分内容和其他一些目录从我的所有机器备份到我的备份服务器上的 /var/backups/hosts/$HOSTNAME(然后,使用 rsync 将其备份到另一台机器和磁带上)。数据库服务器还运行脚本,在 rsync 之前将其数据库转储为文本。

要恢复,只需创建一个新的 VM(拥有几个可以克隆的各种大小的最小安装映像会很方便),然后将备份文件 rsync 回来。

顺便说一句,我通常不备份 /bin、/sbin、/usr,因为我在几乎所有的机器上运行 Debian。备份我在本地 Debian 镜像中打包的程序会浪费太多磁盘空间和时间。相反,我使用以下方法备份已安装软件包的列表dpkg --get-selections “*” > $hostname.sel并使用cat $hostname.sel | dpkg --set-selections; apt-get dselect-upgrade

这就是我目前克隆物理机器的方式...我正在将几台机器转换为虚拟机(在 KVM 下运行),到目前为止还没有发现任何理由为什么我必须对该过程进行大量的更改。

有一天,我会改用 rdiff-backup 而不是 rsync,这样我也可以在线获得版本备份。

最后,你也可以尝试搜索http://libvirt.org/网站或谷歌搜索“+libvirt +rsync”。有人可能已经想出了一种直接 rsyncing VM 映像的有效方法。

答案2

我不确定您是否可以轻松进行增量备份,因为机器的状态会发生变化,因此您可能会冒着捕获瞬态(因此损坏)数据的风险。我这样做的唯一方法是关闭虚拟机进行复制。

我认为您需要使用某种形式的快照来获取副本的特殊软件。

或者,您可以考虑使用 DRDB 在两个系统之间实时复制文件系统,这样托管 VM 映像的文件系统将自动复制到故障转移系统。

答案3

我无法帮助处理 Xen 特定的 VM 映像,但我使用 rsync 备份我的 VMware 映像。您必须在复制之前暂停或关闭映像。使用 LVM 快照也可以,但我发现您需要有一个巨大的快照分区来保存更改。

我使用以下 rsync 命令备份到安装了 cifs 的远程服务器:

rsync -irvtuh --inplace --delete --timeout=120 --whole-file --stats "${DIR}" /mnt/backup

增量复制不值得花费 CPU 来计算差异,但我发现一些 VM 映像没有改变 - 只有大多数没有改变 :(

相关内容