使用 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 就会获胜,因为它更智能。