与cp从nfs-share复制文件到本地目录的cp相比,rsync非常慢(8到10倍)


17

我有一个全新安装的Ubuntu服务器,它应该是我们VM存储的新备份服务器。该服务器有4个网卡,其中2个为10Gbit(实际上是具有最新驱动程序的Intel x540-T2),用于连接到SAN。我将nfs共享安装在本地,并在复制包含约30个文件,约15个vm映像和相应日志文件的目录时比较了速度差异。映像的大小在8 GB到600 GB之间。

使用方法:

cp -rf /mnt/nfs-share /backup-storage/

因此,bmon的显示速度约为600 MiB / s。

使用

rsync -av /mnt/nfs-share /backup-storage/

bmon在最初的几秒钟内显示一些数据包,暂停约30秒钟,然后累积速度达到约60-75 MiB / s。CPU约为60%。

我应该/应该改变什么以使其rsync具有相同的性能cp

Answers:


20

我认为,这些差异是相当不错之间建立cprsync。请参阅本文作为参考,标题为:看rsync性能

摘抄:
The four commands tested were:

    rsync $SRC $DEST
    echo $SRC | cpio -p $DEST
    cp  $SRC $DEST
    cat $SRC > $DEST/$SRC

The results for rsync, cpio, cp, and cat were:

user    sys     elapsed hog MiB/s   test
5.24    77.92   101.86  81% 100.53  cpio
0.85    53.77   101.12  54% 101.27  cp
1.73    59.47   100.84  60% 101.55  cat
139.69  93.50   280.40  83% 36.52   rsync

rsync每天使用。您可以采取一些措施来改善这种情况。

例如,您可以尝试使用-W开关:

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)

另外,我建议您确保拥有3.x版本的rsync。当我们升级到较新的版本时,有了明显的改进。


15

使rsync具有与cp相同的性能的方法是将其拼写为“ cp”。

即使最终效果可能相同,两个命令之间的差异也很明显。特别是,rsync会进行大量读取,以查看是否应复制某些文件或文件的一部分。

您是否有某些原因想要使用rsync?由于cp是“盲目的”复制,因此您将看到更高的原始性能。如果对于一组触发条件,使用rsync的“增量传输”机制,则您会看到传输速率下降,并且CPU使用率以您报告的方式大大增加。


我知道这种行为,但是没想到会有这种效果。我认为,考虑到CPU功耗和IOPS,rsync至少应以300 MiB / s的速度执行,如果不存在要复制的文件,则尤其容易。我还没有完成测试。使用rsync进行备份将更方便,但是我也可以使用cp,dd或任何想到的方式编写脚本。现在,我想测试不同文件系统上的各种可能性,以评估最合适的文件系统。
soulpath 2013年

6
您可能称我为经验主义者,但是当您的期望与现实不一致时,通常就不会误认为现实。有十多种原因使您可能受到这种处罚;取决于软件的详细信息,即使是在SAN上进行交错的读写操作也会对性能产生重大影响。
msw

3
我对rsync并不怀疑现实,但是由于这些差异,我将继续使用cp和一些校验和编写脚本。谢谢你的建议!
soulpath 2013年

不,只是不要在网络文件系统上使用rsync。您的计算机需要下载整个文件,因此您将失去rsync的所有优势。
Giacomo Catenazzi

可悲的是,这个答案在细节上是错误的。在“本地”文件系统之间进行复制时(是的,在这种情况下,NFS挂载是本地文件系统),复制时rsync 不会读取目标文件,除非您使用明确启用了这种适得其反的操作--whole-file。在这种情况下,这就像一个非常缓慢的过程cp
roaima
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.