我们目前运行一堆物理机器。对于备份,我们一直在使用 dirvish,它本质上是 rsync 的包装器,并且以增量方式进行。我们目前正在将一台新机器投入生产,它将运行一大堆虚拟机。理想情况下,我想备份虚拟机映像,而不是从 VM 本身进行文件级备份。考虑到每个图像都是一个巨大的文件,是否有办法逐步执行此操作,并且任何时候发生任何变化都需要新的备份?其他人在这里怎么做VM备份,只是把他们当作物理机?
如果重要的话,我们正在使用 Xen 来实际进行虚拟化。
谢谢
我们目前运行一堆物理机器。对于备份,我们一直在使用 dirvish,它本质上是 rsync 的包装器,并且以增量方式进行。我们目前正在将一台新机器投入生产,它将运行一大堆虚拟机。理想情况下,我想备份虚拟机映像,而不是从 VM 本身进行文件级备份。考虑到每个图像都是一个巨大的文件,是否有办法逐步执行此操作,并且任何时候发生任何变化都需要新的备份?其他人在这里怎么做VM备份,只是把他们当作物理机?
如果重要的话,我们正在使用 Xen 来实际进行虚拟化。
谢谢
您可以继续做您目前正在做的事情,只需对 rsync 备份脚本进行一些小改动。
rsync 可以在 VM 内运行并通过 ssh 备份到远程主机,就像它可以从物理机运行一样。例如,我将 /etc、/usr/local/、/home、/var 的一部分和一些其他目录从我的所有机器备份到我的备份服务器上的 /var/backups/hosts/$HOSTNAME(反过来,得到备份rsync 到另一台机器和磁带)。数据库服务器还运行脚本,在 rsync 之前将其 dbs 转储为文本。
要恢复,只需创建一个新虚拟机(有一些可以克隆的各种大小的最小安装映像很方便),然后重新同步备份文件。
顺便说一句,我通常不会费心备份 /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 映像的有效方法。
我不确定您是否可以轻松地进行增量备份,因为机器的状态会发生变化,因此您可能会在瞬态(因此损坏)状态下捕获数据。我这样做的唯一方法是关闭虚拟机进行复制。
我认为您需要使用某种形式的快照的特殊软件来获取副本。
或者,您可以查看使用 DRDB 在两个系统之间实时复制文件系统,因此托管 VM 映像的文件系统将自动复制到故障转移系统。
我对 Xen 特定的 VM 映像无能为力,但我使用 rsync 备份了我的 VMware 映像。您必须在复制之前暂停或关闭映像。可以使用 LVM 快照代替,但我发现您需要有一个巨大的快照分区来保存更改。
我使用以下 rsync 命令备份到安装了 cifs 的远程服务器:
增量副本不值得计算差异所需的 CPU,但我确实发现一些 VM 映像没有改变——只有大部分 :(