Beberapa hari yang lalu saya melihat sesuatu yang agak aneh (setidaknya untuk saya). Saya menjalankan rsync menyalin data yang sama dan menghapusnya kemudian ke NFS mount, dipanggil /nfs_mount/TEST
. Ini /nfs_mount/TEST
dihosting / diekspor dari nfs_server-eth1
. MTU pada kedua antarmuka jaringan adalah 9000, pergantian di antara mendukung bingkai jumbo juga. Jika saya melakukannya, rsync -av dir /nfs_mount/TEST/
saya mendapatkan kecepatan transfer jaringan X MBps. Jika saya melakukannya, rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
saya mendapatkan kecepatan transfer jaringan minimal 2X MBps. Opsi pemasangan NFS saya adalah 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
.
Intinya: kedua transfer melewati subnet jaringan yang sama, kabel yang sama, antarmuka yang sama, membaca data yang sama, menulis ke direktori yang sama, dll. Satu-satunya perbedaan adalah melalui NFSv3, yang lain melalui rsync.
Klien adalah Ubuntu 10,04, server Ubuntu 9,10.
Kenapa rsync jauh lebih cepat? Bagaimana membuat NFS cocok dengan kecepatan itu?
Terima kasih
Sunting: harap dicatat saya menggunakan rsync untuk menulis ke share NFS atau ke SSH ke server NFS dan menulis secara lokal di sana. Kedua kali saya lakukan rsync -av
, mulai dengan direktori tujuan yang jelas. Besok saya akan coba dengan salinan biasa.
Edit2 (info tambahan): Ukuran file berkisar dari 1KB-15MB. File-file sudah dikompresi, saya mencoba kompres lebih lanjut tanpa hasil. Saya membuat tar.gz
file dari itu dir
. Berikut polanya:
rsync -av dir /nfs_mount/TEST/
= transfer paling lambat;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
= rsync tercepat dengan bingkai jumbo diaktifkan; tanpa bingkai jumbo sedikit lebih lambat, tetapi masih secara signifikan lebih cepat daripada yang langsung ke NFS;rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/
= hampir sama dengan non-tar.gz yang setara;
Tes dengan cp
dan scp
:
cp -r dir /nfs_mount/TEST/
= sedikit lebih cepat daripadarsync -av dir /nfs_mount/TEST/
tetapi masih jauh lebih lambat darirsync -av dir nfs_server-eth1:/nfs_mount/TEST/
.scp -r dir /nfs_mount/TEST/
= keseluruhan tercepat, sedikit mengatasirsync -av dir nfs_server-eth1:/nfs_mount/TEST/
;scp -r dir.tar.gz /nfs_mount/TEST/
= hampir sama dengan non-tar.gz yang setara;
Kesimpulan, berdasarkan hasil ini: Untuk tes ini tidak ada perbedaan yang signifikan jika menggunakan file tar.gz besar atau banyak yang kecil. Frame jumbo hidup atau mati juga hampir tidak membuat perbedaan. cp
dan scp
lebih cepat dari rsync -av
padanannya masing-masing . Menulis langsung ke pangsa NFS yang diekspor secara signifikan lebih lambat (setidaknya 2 kali) daripada menulis ke direktori yang sama melalui SSH, terlepas dari metode yang digunakan.
Perbedaan antara cp
dan rsync
tidak relevan dalam hal ini. Saya memutuskan untuk mencoba cp
dan scp
hanya untuk melihat apakah mereka menunjukkan pola yang sama dan mereka melakukannya - perbedaan 2X.
Seperti yang saya gunakan rsync
atau cp
dalam kedua kasus, saya tidak bisa mengerti apa yang mencegah NFS untuk mencapai kecepatan transfer dari perintah yang sama melalui SSH.
Kenapa menulis ke saham NFS 2X lebih lambat daripada menulis ke tempat yang sama melalui SSH?
Edit3 (NFS server / etc / ekspor pilihan): rw,no_root_squash,no_subtree_check,sync
. Klien / proc / mounts menunjukkan: 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
.
Terima kasih semua!