Avevo bisogno di trasferire un file vdisk KVM da 20 GB , memorizzando il filesystem di root di una VM CentOS 6.5, da un server di laboratorio a un altro. Le grandi dimensioni del file e il fatto che una volta avevo compresso un tale file vdisk a poche centinaia di mega byte mi hanno istintivamente abilitato la compressione con, scpma sono stato sorpreso di vedere una velocità di trasferimento piuttosto bassa. Poi ho provato bzip2in combinazione con sshed cate sono rimasto sorpreso. Ecco il riepilogo dei metodi e della produttività media.
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. Questo risultato ancora più basso ha richiesto la ricerca in rete.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/, 13 MB / s. Questo uso di-c arcfouras è stato suggerito in una risposta su serverfault. Difficilmente aiutato. Infine, ho disabilitato la compressione.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/, 23 MB / s.
La compressione non avrebbe dovuto essere più veloce?
EDIT: non so perché la domanda sia stata sottoposta a downgrade. Ho pensato che ci fosse qualcosa da imparare qui.
Dopo aver ricevuto il ssh(1)suggerimento sulla pagina man da @sven, ho provato un paio di metodi alternativi di trasferimento dei file che non prevedevano la compressione, entrambi con risultati migliori.
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.imgsul ricevitore enc 192.168.161.62 5678 < vm1-root.imgsul trasmettitore, 40 MB / s. La porta5678è arbitraria disponibile.
L'utilizzo ncsi è rivelato essere il metodo di copia più veloce!
In passato, scp -Cha funzionato molto bene ogni volta che pensavo che avrebbe funzionato. Ad esempio, quando si trasferiscono syslogs ( /var/log/messages*) di dimensioni di pochi GB. Una velocità di trasferimento non compressa di poche centinaia di KB / s aumenterebbe a 1-2 MB / s. Questo esempio cade nel caso di una connessione lenta, come è stato sottolineato nella pagina man.
Ho un caso in cui, un'immagine vdisk appena creata per una partizione da 20 GB ha una dimensione compressa di soli 200 MB. Con una velocità di trasferimento di circa 25 MB / s, potremmo eseguire la copia in soli 8 secondi anziché in 13 minuti! Chiaramente, scpsenza compressione è inefficiente in questo caso ed scp -Cè anche peggio.
Immagino che la lezione principale appresa qui sia che scp -Cdovrebbe essere considerata solo una comodità. Se un file può essere compresso in modo significativo, è meglio comprimerlo prima sull'origine, trasferire il modulo compresso e infine decomprimere sulla destinazione. Gli strumenti che eseguono rapidamente la compressione e la decompressione (ad esempio pbzip2 ) saranno di grande aiuto.