有没有人在 ESXi 中使用 rsync 实现了真正的差异同步?

Jul*_*PIV 11 rsync vmware-esx vmware-esxi

稍后责备我使用服务控制台在 ESXi 中执行任何操作的事实...

我有一个可以在 ESXi 4.1U1 中使用的有效 rsync 二进制文件 (v3.0.4)。将虚拟机或备份从一个本地数据存储复制到另一个本地数据存储时,我倾向于使用 rsync over cp。我已经使用 rsync 将数据从一个 ESXi 盒子复制到另一个盒子,但这仅适用于小文件。

现在尝试在我的主要 ESXi 机器和辅助机器之间通过ghettoVCB进行备份的真正差异同步。但即使我在本地执行此操作(一个数据存储到同一台 ESXi 机器上的另一个数据存储),rsync 似乎也能完整地复制文件。我有两个总大小为 80GB 的 VMDK,而 rsync 仍然需要 1 到 2 个小时,但 VMDK 的每天增长并不多。

下面是我正在执行的 rsync 命令。我正在本地复制,因为最终这些文件将被复制到从远程系统上的 LUN 创建的数据存储上。它不是由远程系统上的 rsync 守护程序提供服务的 rsync。

rsync -avPSI VMBACKUP_2011-06-10_02-27-56/* VMBACKUP_2011-06-01_06-37-11/ --stats --itemize-changes --existing --modify-window=2 --no-whole-file
sending incremental file list
>f..t...... VM-flat.vmdk
 42949672960 100%   15.06MB/s    0:45:20 (xfer#1, to-check=5/6)
>f..t...... VM.vmdk
         556 100%    4.24kB/s    0:00:00 (xfer#2, to-check=4/6)
>f..t...... VM.vmx
        3327 100%   25.19kB/s    0:00:00 (xfer#3, to-check=3/6)
>f..t...... VM_1-flat.vmdk
 42949672960 100%   12.19MB/s    0:56:01 (xfer#4, to-check=2/6)
>f..t...... VM_1.vmdk
         558 100%    2.51kB/s    0:00:00 (xfer#5, to-check=1/6)
>f..t...... STATUS.ok
          30 100%    0.02kB/s    0:00:01 (xfer#6, to-check=0/6)

Number of files: 6
Number of files transferred: 6
Total file size: 85899350391 bytes
Total transferred file size: 85899350391 bytes
Literal data: 2429682778 bytes
Matched data: 83469667613 bytes
File list size: 129
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 2432530094
Total bytes received: 5243054

sent 2432530094 bytes  received 5243054 bytes  295648.92 bytes/sec
total size is 85899350391  speedup is 35.24
Run Code Online (Sandbox Code Playgroud)

这是因为 ESXi 本身对 VMDK 进行了如此多的更改,以至于就 rsync 而言,必须重新传输整个文件?

有没有人真正实现了与 ESXi 的实际差异同步?

小智 6

看起来您只传输了 2GB 的增量更改。请记住,rsync 仍然必须读取整个文件并对其进行校验和,因此它必须读取 80GB 的数据。在 rsync 期间检查您的服务器统计信息。你在操作过程中是cpu还是IO绑定的?从磁盘读取 80GB 文件的速度有多快?这将接近您的绝对最短传输时间。

另外值得注意的是 rsync 在传输时制作文件的副本,然后在原子操作中将最终文件移动到位。您可以通过在目标目录中的传输过程中看到带有随机后缀的类似文件名来看到这一点。这意味着您必须读取 160GB 的数据(每个源和目标各 80GB)并在目标端写出 80GB。你看过 --inplace 选项吗?这可能是有益的。

简而言之,您可能只有 2GB 的更改,但 rsync 正在做很多工作。您可能受到 IO 限制,因为在同一个磁盘上进行的所有读取和写入操作可能会导致大量争用和速度减慢。