Vài ngày trước tôi nhận thấy một điều khá kỳ lạ (ít nhất là đối với tôi). Tôi đã chạy rsync sao chép cùng một dữ liệu và xóa nó sau đó đến NFS mount, được gọi /nfs_mount/TEST
. Điều này /nfs_mount/TEST
được lưu trữ / xuất khẩu từ nfs_server-eth1
. MTU trên cả hai giao diện mạng là 9000, chuyển đổi ở giữa cũng hỗ trợ các khung jumbo. Nếu tôi làm, rsync -av dir /nfs_mount/TEST/
tôi nhận được tốc độ truyền mạng X MBps. Nếu tôi làm, rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
tôi nhận được tốc độ truyền mạng ít nhất là 2 lần MBps. Tùy chọn gắn NFS của tôi là 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
.
Điểm mấu chốt: cả hai lần chuyển đều đi qua cùng một mạng con, cùng một dây, cùng giao diện, đọc cùng một dữ liệu, ghi vào cùng một thư mục, v.v.
Máy khách là Ubuntu 10.04, máy chủ Ubuntu 9.10.
Làm thế nào đến rsync là nhanh hơn nhiều? Làm thế nào để làm cho NFS phù hợp với tốc độ đó?
Cảm ơn
Chỉnh sửa: xin lưu ý Tôi sử dụng rsync để ghi vào chia sẻ NFS hoặc SSH vào máy chủ NFS và ghi cục bộ tại đó. Cả hai lần tôi làm rsync -av
, bắt đầu với thư mục đích rõ ràng. Ngày mai tôi sẽ thử với bản sao đơn giản.
Edit2 (thông tin bổ sung): Kích thước tệp nằm trong khoảng từ 1KB-15MB. Các tập tin đã được nén, tôi đã cố gắng nén chúng hơn nữa nhưng không thành công. Tôi đã làm tar.gz
tập tin từ đó dir
. Đây là mẫu:
rsync -av dir /nfs_mount/TEST/
= chuyển chậm nhất;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
= rsync nhanh nhất với khung jumbo được bật; không có khung jumbo thì chậm hơn một chút, nhưng vẫn nhanh hơn đáng kể so với khung trực tiếp đến NFS;rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/
= về tương tự như không tương đương tar.gz của nó;
Các thử nghiệm với cp
và scp
:
cp -r dir /nfs_mount/TEST/
= nhanh hơn một chútrsync -av dir /nfs_mount/TEST/
nhưng vẫn chậm hơn đáng kểrsync -av dir nfs_server-eth1:/nfs_mount/TEST/
.scp -r dir /nfs_mount/TEST/
= tổng thể nhanh nhất, vượt qua một chútrsync -av dir nfs_server-eth1:/nfs_mount/TEST/
;scp -r dir.tar.gz /nfs_mount/TEST/
= về tương tự như không tương đương tar.gz của nó;
Kết luận, dựa trên kết quả này: Đối với thử nghiệm này, không có sự khác biệt đáng kể nếu sử dụng tệp lớn tar.gz hoặc nhiều tệp nhỏ. Khung jumbo bật hoặc tắt cũng làm cho hầu như không có sự khác biệt. cp
và scp
nhanh hơn tương rsync -av
đương của chúng. Viết trực tiếp vào chia sẻ NFS xuất khẩu chậm hơn đáng kể (ít nhất 2 lần) so với ghi vào cùng thư mục qua SSH, bất kể phương thức được sử dụng.
Sự khác biệt giữa cp
và rsync
không liên quan trong trường hợp này. Tôi quyết định thử cp
và scp
chỉ để xem liệu họ có hiển thị cùng một mẫu không và họ làm - chênh lệch 2 lần.
Khi tôi sử dụng rsync
hoặc cp
trong cả hai trường hợp, tôi không thể hiểu điều gì ngăn NFS đạt tốc độ truyền của các lệnh tương tự trên SSH.
Làm thế nào để viết vào chia sẻ NFS chậm hơn 2 lần so với viết vào cùng một nơi trên SSH?
Edit3 (tùy chọn máy chủ NFS / etc / export) : rw,no_root_squash,no_subtree_check,sync
. / Proc / mounts của khách hàng hiển thị : 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
.
Cảm ơn tất cả!