Saya perlu mentransfer file vdisk KVM 20 GB , menyimpan root filesystem dari CentOS 6.5 VM, dari satu server lab ke yang lain. Ukuran file yang besar dan fakta bahwa saya pernah memampatkan file vdisk menjadi beberapa ratus mega-byte membuat saya secara naluriah mengaktifkan kompresi dengan scp
tetapi saya terkejut melihat kecepatan transfer yang agak rendah. Kemudian saya mencoba bzip2
dalam kombinasi dengan ssh
dan cat
terkejut. Berikut ini adalah ringkasan metode dan throughput rata-rata.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 11 MB / s.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
, 5 MB / s. Hasil yang lebih rendah ini mendorong pencarian di Internet.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 13 MB / s. Penggunaan-c arcfour
seperti ini disarankan dalam satu jawaban di serverfault. Itu hampir tidak membantu. Akhirnya, saya menonaktifkan kompresi.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 23 MB / s.
Bukankah seharusnya kompresi lebih cepat?
EDIT: Saya tidak tahu mengapa pertanyaannya dibatalkan. Saya pikir ada sesuatu yang bisa dipelajari di sini.
Setelah menerima ssh(1)
tip halaman manual dari @sven, saya mencoba beberapa metode alternatif transfer file yang tidak melibatkan kompresi, keduanya dengan hasil yang lebih baik.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
, 26 MB / s.nc -l 5678 > /mnt/vdisks/vm1-root.img
pada penerima dannc 192.168.161.62 5678 < vm1-root.img
pada pemancar, 40 MB / s. Port tersebut5678
adalah porta arbitrer yang tersedia.
Menggunakan nc
ternyata menjadi metode penyalinan tercepat!
Di masa lalu, scp -C
telah bekerja dengan sangat baik kapan pun saya berpikir akan melakukannya. Misalnya, saat mentransfer syslogs ( /var/log/messages*
) berukuran beberapa GB. Laju transfer tanpa kompresi beberapa ratus KB / s akan meningkat menjadi 1-2 MB / s. Contoh ini jatuh dalam kasus koneksi yang lambat seperti yang telah ditunjukkan di halaman manual.
Saya punya kasus di mana, gambar vdisk yang baru dibuat untuk partisi 20 GB memiliki ukuran terkompresi hanya 200 MB. Dengan kecepatan transfer sekitar 25 MB / s, kita bisa menyalin hanya dalam 8 detik, bukan lebih dari 13 menit! Jelas, scp
tanpa kompresi tidak efisien dalam kasus ini dan scp -C
bahkan lebih buruk.
Saya kira, pelajaran utama yang dipelajari di sini adalah bahwa, scp -C
harus dianggap hanya sebagai kenyamanan. Jika suatu file dapat dikompres secara signifikan, maka lebih baik kompres terlebih dahulu pada sumbernya, transfer formulir terkompresi dan akhirnya tekan kompres pada tujuan. Alat yang melakukan kompresi dan dekompresi dengan cepat (mis. Pbzip2 ) akan sangat membantu.