人们为什么不只使用rsync备份vmware guest虚拟机?


12

如果运行的是现代vmware ESXi系统,则可以通过SSH将静态链接的rsync二进制文件和rsync文件放入任何目标位置。

我试图了解为什么大多数(全部?)vmware guest虚拟机备份不是通过这种方式完成的。

如果VM正在运行,则可以简单地使用'vim-cmd vmsvc / snapshot.create'创建快照,然后将该快照重新同步到远程主机。(甚至可以选择“静默”快照)

或者,如果您想要更强大的备份,则可以正常停止VM并通过vmdk文件进行rsync。

所以...似乎我是一个简单的Shell脚本,可以使用普通的旧rsync轻松,轻松地完成所有我想做的备份。

我在这里想念什么?


1
因为如果在VM中更改单个文件,您将必须备份整个vmdk?
骗子

不,rsync将仅使用自上次传输以来的更改来有效地更新单个文件。当然,VM的操作可能会产生比您期望的更多的变化,但这不会使您重新发送整个vmdk ...
user227963 2014年

除了您除了维护之外不应该使用esxi shell之外,esxi OS不能以这种方式工作,并且您将不受支持,我认为您误解了快照的概念。在这种情况下,快照是增量。因此,如果您拍下快照并立即复制,它会很小,并且几乎不包含任何信息。您正在考虑后端存储快照,是的,人们以这种方式备份虚拟机
Rqomey 2014年

1
@Rqomey-ESXi中有不同类型的“快照”。您所谈论的是通过vSphere Client可见的一种-但使用API​​时,您还有其他选择,例如:完全克隆。
masi 2014年

@MASI您的意思是克隆,而不是快照吗?;)
Rqomey 2014年

Answers:


32
  • 因为故意限制了ESXi控制台的传输速度。
  • 因为这无法以任何方式扩展。
  • 因为您必须将静态编译的rsync二进制文件拖放到ESXi主机上。
  • 因为VM,VMDK,它们的ramdisk文件和其他组件的变化足以使rsync成为失败的命题…… 您是否真的要重新同步200GB重启并有少量文件更改的VM?
  • 由于源或目标上的CPU /内存资源要求。Rsync不是免费的。
  • 因为市场上还有其他产品,所以第三方和VMware都提供了该产品。查找更改的块跟踪
  • 因为ESXi 不是通用操作系统。

另请参阅:在VMware ESX 4.1服务器上安装rsync


1
出色的答案。
EEAA 2014年

3
他们不是……我的意思是,它的名字是:ghettoVCB。有更好的解决方案。Veeam,vSphere Data Protection等
ewwhite14年

2
如果切换到xen / kvm,则当然可以使用rsync方法。
Zoredache 2014年

9
@ user227963 Rsync的效率也很低-大量文件以及大文件。尽管它可能不必通过网络重新发送整个文件,但它必须在源和目标上都重新读取它。CBT将在这里为您提供帮助,但是rsync对CBT一无所知。
the-wabbit

2
@ user227963复制文件很简单。现在,使其快速运行,而不是对具有较小常量更改的大型文件进行资源消耗。rsync是不错的,但是与内部信息有关的任何块更改相比,它的性能都差得远。
JamesRyan 2014年

4

几年前我曾经这样做。(编辑:VMWare在CentOS主机上运行,​​而不是在ESXi上运行)

每天晚上,我都有一个脚本来挂起VM,将文件从磁盘同步到备份服务器,然后再次启动VM。除了...以外,它运作良好。

Rsync不适用于2GB的文件。

不是因为rsync不够出色,而是因为每个2GB的vmdk文件以对rsync非常不透明的方式进行更改,即使对封闭的文件系统进行很小的更改也会导致vmdk(或出于某种原因而导致的所有vmdks)发生更改,这归咎于我Windows,可以自动进行碎片整理或执行其他所有其他操作,这与运行真实系统无关紧要,但是在尝试同步VM时会显示出来!

我认为用于检测更改的rsync机制在2GB的文件上不能很好地工作,尽管它经常跳过了vmdk开头的大部分,一旦发现差异,它只会复制文件的其余部分。我不知道这是由于rsync无法检测到移动的二进制数据块,或者源盒上内存不足,还是vmdk是否一直被更新而导致的问题。没关系,结果是一样的-大多数vmdk被复制了。

最后,我仍然使用rsync简单地复制了所有更改的文件并覆盖了它们。仅覆盖备份文件而不是让rsync复制并替换那里的文件,我的性能也更好。

我们的备份服务器也不是最快的,它达到了一个晚上,不足以备份所有正在运行的VM的地步。

但是,当我们确实需要还原VM时,它确实非常容易并且运行良好。


好的,这很有帮助。我对rsync的工作方式有些了解,我可以告诉你它与文件的大小无关-但是,您所描述的是文件更改的数量比您预期的要多得多...即例如,您将虚拟机运行一天,然后只对其做了一些小事情,然后将其停止...但是vmdk文件变化了30-40%(即使您做得很少)。因此rsync会做的很好,它还有很多工作要做...比您期望的还要多。谢谢!
user227963 2014年

1
但是,这又引发了一个问题……“专业”工具是如何做到的?他们在做哪种魔术比rsync(或scp,甚至cp)做的更好?归根结底,您拥有一个Unix环境(ESXi控制台),并且想要将文件移入或移出文件...可能涉及到哪些秘密?
user227963 2014年

@ user227963专业工具利用了诸如更改块跟踪之类的功能,或者可以访问其他vSphere或ESXi API。
ewwhite 2014年

2

同步单个文件不是备份解决方案,

删除虚拟机和文件时发生什么事,但是在rsync重新运行后才注意到这一点?您现在将用错误的映像覆盖文件的良好“备份”。

如果要备份,则需要将旧版本或diff保留在某个位置。Rsync只会为您复制差异文件,但不会仅存储差异文件,而是会覆盖前一个文件。

在这里,可以使用rsync和带有版本信息的写时复制文件系统为您提供选择,这些文件系统实际上将在每次rsync脚本运行时存储差异。该解决方案已经开始变得更加复杂,因此这就是为什么人们诉诸已知的可行解决方案imho的原因。


当然,这里涉及的复杂性比我最初想象的要复杂得多,但是您要提到的不是问题。当然,如果您一遍又一遍地盲目运行rsync,您将遇到麻烦,正如您所建议的那样,但是有很多简单的方法可以克隆/旋转rsync创建的备份(甚至是单文件备份)……这个问题已经解决了很长时间。时间前,谢天谢地。
user227963

0

没有任何理由不能在ESXi服务器中使用Rsync。我们在这里提供了一个静态编译的版本,https://33hops.com/rsync-for-vmware-vsphere-esxi.html效果很好。也有关于如何编译自己的信息。

但是,任何愿意使用它的人都必须考虑到Rsync及其Delta算法并未考虑备份庞大的固定长度稀疏文件(如VM硬盘),而是同步了可变长度的较小文件。因此,它确实可以工作,但是计算差异数据需要花费大量时间和CPU。实际上,这只是通过CPU交换带宽的一种方式。无论如何,它仍然是相当可行的,尤其是当您的虚拟磁盘大约为几十GB时。

我已经在此处发布了有关该主题的完整文章,详细介绍了所有利弊https://33hops.com/blog_xsibackup-rsync-considerations.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.