rsync从一个磁盘缓慢复制到另一个磁盘

rsync从一个磁盘缓慢复制到另一个磁盘

我有两个相同型号的驱动器,它们使用 SATA 连接。

当使用 来对读取速度进行基准测试时hdparm -t /dev/sdX160MB/s返回的速度约为。当使用 来对写入速度进行基准测试时dd if=/dev/zero of=testfile bs=1M count=500 conv=fdatasync,返回的速度约为140MB/s

然而,当使用复制单个10GB文件时rsync --progress /mnt/hd1/file /mnt/hd2/file,写入速度仅为约35MB/s

为什么这么慢?我怎样才能让它更快?

答案1

根据我在研究此问题时发现的许多网站(例如一),这是很正常的,因为 rsync 的瓶颈通常是 CPU 能力。

dd 和 cp 的结果接近我最初测试的速度。看来 2.2Ghz 双核对于硬盘速度的 rsync 来说还不够。

在进一步的研究中,我还发现

正确,rsync 没有选项可以完全禁用传输后校验和。我为 rsync 2.6.9 实施了一个补丁,该补丁添加了一个选项 --trust-append,将传输后校验和限制为添加的部分,而不是整个文件。补丁已附加。这应该足够好了,但如果您真的想完全禁用校验和,只需注释掉 match.c 和receiver.c 中剩余的 sum_update 调用即可。

Rsync 总是对整个文件进行校验,这需要花费很多时间。使用上面提到的补丁,我设法将 rsync 速度提高到大约 90MB/s。仍然不是很好,但比以前好多了。遗憾的是,该补丁尚未进入 rsync-trunk。

答案2

我遇到了完全相同的问题(在 Linux 上),即:35BM/s。

事实证明,rsync 受 CPU 限制,并且不会触发 CPU 按需调节器,因此 CPU 停留在最慢的速度(我的情况是 800MHz,而我的情况是 3000MHz)

您可以使用以下方法进行测试:

cat /proc/cpuinfo | grep MHz

修复方法是调整 CPU 调节器。

回显“70”> /sys/devices/system/cpu/cpufreq/ondemand/up_threshold

为了使其永久生效,请将其放入 /etc/rc.local

请参阅解释: http://random-linux-stuff.blogspot.co.nz/2013/01/boost-performance-of-ondemand-cpu.html

相关内容