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

sou*_*ath 21 performance ubuntu cp rsync

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

使用:

cp -rf /mnt/nfs-share /backup-storage/
Run Code Online (Sandbox Code Playgroud)

bmon 因此显示大约 600 MiB/s。

使用

rsync -av /mnt/nfs-share /backup-storage/
Run Code Online (Sandbox Code Playgroud)

bmon 在前几秒显示一些数据包,暂停大约 30 秒,然后增加到大约 60-75 MiB/s。CPU在60%左右。

我应该/可以更改什么以使用rsync与 相同的性能cp

slm*_*slm 22

我认为这些差异在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
Run Code Online (Sandbox Code Playgroud)

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

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

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)
Run Code Online (Sandbox Code Playgroud)

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


msw*_*msw 15

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

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

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

  • 你可以称我为经验主义者,但是当你的期望和现实不一致时,通常不是现实是错误的。您可能会受到这种处罚的原因有很多;即使在 SAN 上交错读取和写入也会对性能产生巨大影响,具体取决于软件的细节。 (7认同)
  • 我不怀疑现实,只是怀疑 rsync-但由于这些差异,我将继续使用 cp 和一些校验和编写脚本。谢谢你的建议! (3认同)