为什么 rsync 比 NFS 慢?

为什么 rsync 比 NFS 慢?

使用 rsync 复制一些大文件(每个 24MB):

bronger@steed:/tmp$ time rsync -r root@my_nas::media/distortion .
Password: 

real    0m18.128s
user    0m2.600s
sys     0m5.756s

(输入密码时减去 2 秒。)现在,NFS 也是一样:

bronger@steed:/tmp$ time cp -a /mnt/media/distortion .

real    0m5.569s
user    0m0.036s
sys     0m2.128s

怎么会这样?没有压缩或加密,但服务器端的 CPU 使用率却高达 100%。这是一台 ARM CPU 速度较慢的 NAS,但即便如此,任何复制操作都应该受到 IO 的限制。

rsyncd.conf 文件说明:

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
use chroot = no

[media]
path = /volume1/media 
comment = Main volume                      
fake super = yes                         
uid = 1000
gid = 1000    
read only = no
list = yes     
charset = utf-8  
auth users = root                 
secrets file = /etc/rsyncd.secrets

答案1

如果 rsync 是 CPU 密集型的,则 rsync 比 NFS 慢。rsync 是很多仅就数据传输而言,效率不如 NFS。在我的例子中,rsync 消耗了 100% 的 CPU,而 NFS 仅需要 20%,而且 NFS 的速度仍快 3 倍。这意味着,在网络流量相同的情况下,rsync 消耗的 CPU 资源比 NFS 多 15 倍 (!)。我传输了大文件。

在这种情况下,最好的方法是在更快的机器上使用 NFS 挂载目录,并在本地使用 rsync 复制文件。

参见LWN 文章有类似问题的人。

答案2

RSync 在开始之前会做一些准备工作,以确保复制是一项要求。

如果您已经拥有相同文件的本地版本,rsync 就会获胜,因为它更智能。

相关内容