稍后再抨击我正在使用服务控制台在ESXi中执行任何操作的事实…
我有一个可以在ESXi 4.1U1中使用的rsync二进制文件(v3.0.4)。 当将虚拟机或备份从一个本地数据存储复制到另一个本地数据存储时,我倾向于使用rsync over cp。 我已经使用rsync将数据从一个ESXi盒复制到另一个,但只是为了小文件。
现在试图在我的主ESXi机器和辅助机器之间通过ghettoVCB执行备份的真正差异同步。 但即使在本地执行此操作(一个数据存储到同一ESXi计算机上的另一个数据存储),rsync也会显示为完整地复制这些文件。 我有两个VMDK的总大小为80GB,而rsync仍然需要1到2个小时,但VMDK的增长速度并不是很快。
下面是我正在执行的rsync命令。 我在本地复制,因为最终这些文件将被复制到从远程系统上的LUN创build的数据存储中。 它不是由远程系统上的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
这是因为ESXi本身对VMDK进行了如此多的更改,以至于rsync需要重新传输整个文件?
有没有人真的实现了与ESXi的实际差异?
看起来您只能传输2GB的增量更改。 请记住,rsync仍然必须读取整个文件和校验和,所以它必须读取80GB的数据。 在rsync期间检查您的服务器统计信息。 在操作过程中,你是cpu还是IO? 你能从磁盘读取80GB文件有多快? 这将接近您绝对的最短转换时间。
另外值得注意的是,rsync在传输时会创build一个文件副本,然后在primefaces操作中将最终文件移动到位。 您可以通过在目标目录中传输过程中看到一个带有随机后缀的相似文件名来查看。 这意味着您必须读取160GB的数据(每个源和目的地每个80GB),并在目标端写入80GB。 你看过 – 放置选项? 这可能是有益的。
总之你可能只有2GB的变化,但rsync是做很多工作。 你可能会受到IO的限制,因为所有在同一张磁盘上的读写操作都可能导致很多争用和放缓。
这个线程是非常古老的,但它可以帮助一个人。
由于ESX在每次写入新块时都locking了文件系统,所以性能不是很好,使用Option可以获得更好的结果,但请注意,如果取消同步,文件将不会一致更多。 关于一致性,打开文件的rsync可能不一致 – >更好地使用rsync之前的快照。
最好的问候马克
从外观上看,你正在用rsync做一个本地到本地的拷贝。 在这种情况下, rsync的默认行为是closuresdelta传输algorithm,并进行“全文件”传输。 这种默认行为的基本原理是,使用delta-xferalgorithm进行本地到本地的传输通常比简单复制整个文件要慢,因为deltaalgorithm涉及比仅仅执行整个文件复制更多的CPU处理工作。
如果您认为使用delta-xferalgorithm可以使本地到本地副本受益,则可以通过指定--no-W (或--no-whole-file )选项来强制rsync使用它。