며칠 전에 나는 다소 이상하다고 생각했다. 동일한 데이터를 복사하고 나중에라는 NFS 마운트로 rsync를 실행했습니다 /nfs_mount/TEST
. 이것은 /nfs_mount/TEST
호스팅 /에서 내 보낸 nfs_server-eth1
. 두 네트워크 인터페이스의 MTU는 9000이며, 스위치 간 점보 프레임도 지원합니다. 내가 rsync -av dir /nfs_mount/TEST/
네트워크 전송 속도 X MBps를 얻습니다. 내가 rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
네트워크 전송 속도를 2X MBps 이상으로 얻는 다면 . 내 NFS 마운트 옵션은 nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp
입니다.
결론 : 두 전송 모두 동일한 네트워크 서브넷, 동일한 와이어, 동일한 인터페이스, 동일한 데이터 읽기, 동일한 디렉토리에 쓰기 등을 거치게됩니다. 차이점은 NFSv3을 통한 것이고 다른 하나는 rsync를 통한 것입니다.
클라이언트는 Ubuntu 10.04, 서버 Ubuntu 9.10입니다.
어떻게 rsync가 훨씬 빠릅니까? NFS를 그 속도와 일치시키는 방법?
감사
편집 : rsync를 사용하여 NFS 공유 또는 SSH를 NFS 서버에 쓰고 로컬로 씁니다. rsync -av
명확한 목적지 디렉토리로 시작하여 두 번 . 내일 나는 평범한 사본으로 시험 할 것이다.
Edit2 (추가 정보) : 파일 크기는 1KB-15MB입니다. 파일이 이미 압축되어 있으므로 성공하지 않고 더 압축하려고했습니다. 나는 그것에서 tar.gz
파일을 만들었습니다 dir
. 패턴은 다음과 같습니다.
rsync -av dir /nfs_mount/TEST/
= 가장 느린 전송;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
= 점보 프레임이 활성화 된 가장 빠른 rsync; 점보 프레임이 없으면 약간 느리지 만 여전히 NFS에 직접 전송하는 것보다 훨씬 빠릅니다.rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/
= 그것의 non-tar.gz와 거의 같습니다;
함께 테스트 cp
및 scp
:
cp -r dir /nfs_mount/TEST/
=보다 약간 빠르지rsync -av dir /nfs_mount/TEST/
만 여전히 상당히 느립니다rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
.scp -r dir /nfs_mount/TEST/
= 전체적으로 가장 빠름, 약간 극복 됨rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
;scp -r dir.tar.gz /nfs_mount/TEST/
= 그것의 non-tar.gz와 거의 같습니다;
결론 :이 결과에 근거 :이 테스트의 경우 tar.gz 큰 파일 또는 많은 작은 파일을 사용하는 경우 큰 차이가 없습니다. 점보 프레임을 켜거나 끄는 것도 거의 차이가 없습니다. cp
그리고 scp
빨리 각각의보다 rsync -av
등가물. 내 보낸 NFS 공유에 직접 쓰는 것은 사용 된 방법에 관계없이 SSH를 통해 동일한 디렉토리에 쓰는 것보다 훨씬 느립니다 (최소 2 회).
이 경우 차이점 cp
과 rsync
관련이 없습니다. 나는 시도하기로 결정 cp
하고 scp
2 배의 차이를 - 그들은 같은 패턴을 보여주고 그들이 할 경우 바로 볼 수 있습니다.
내가 사용 rsync
하거나 cp
두 경우 모두 NFS가 SSH를 통해 동일한 명령의 전송 속도에 도달하지 못하게하는 이유를 이해할 수 없습니다.
SSH를 통해 같은 장소에 쓰는 것보다 NFS 공유에 쓰는 속도가 2 배 느린 이유는 무엇입니까?
Edit3 (NFS 서버 / etc / exports 옵션) : rw,no_root_squash,no_subtree_check,sync
. 클라이언트의 / proc / mounts는 다음을 보여줍니다 : nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp
.
다들 감사 해요!