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

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

我有一个新安装的 Ubuntu 服务器,它应该是我们虚拟机存储的新备份服务器。该服务器有 4 个网卡,其中 2 个 10Gbit(实际上是具有最新可用驱动程序的 intel x540-T2),用于连接到 SAN。我在本地安装了 nfs-share,并比较了复制包含约 30 个文件、大约 15 个虚拟机映像和相应日志文件的目录时的速度差异。图像大小在 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

答案1

cp我认为这些差异在和之间是相当明确的rsync。请参阅这篇文章作为参考,标题为: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.当我们升级到新版本时,有明显的改进。

答案2

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

尽管净效果可能相同,但这两个命令之间的差异仍然很大。特别是,rsync 会进行大量读取以查看是否应复制某个文件或文件的一部分。

您想使用 rsync 有什么原因吗?因为 cp “盲目”复制,您将看到更高的原始性能。如果对于一组触发条件,使用 rsync 的“增量传输”机制,您将看到传输速率下降,CPU 使用率按照您报告的方式大幅上升。

答案3

对于此用例,rsync是一台不必要的复杂机器。如果您同意基于比较文件修改时间和文件大小的同步,则只需在两端收集文件系统元数据,进行比较,然后通过(本地)命令复制已更改(或新)的文件cp

您可能对这个小型且简单的同步器感兴趣,它可以执行以下操作:Fitus/Zaloha.sh

它的使用方法如下:

$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"

为了实现分析阶段的最大速度,您可能希望跳过恢复脚本的生成:使用选项--noRestore。此外,如果您安装了快速mawk安装程序,请选择--mawk使用它。

Zaloha.sh通过命令收集文件系统元数据find。剩下的一个问题是关于findNFS 共享的性能......

相关内容