Musiałem przenieść plik vdisk KVM o pojemności 20 GB , przechowujący główny system plików maszyny Wirtualnej CentOS 6.5 z jednego serwera laboratoryjnego na drugi. Duży rozmiar pliku i fakt, że kiedyś skompresowałem taki plik vdisk do kilkuset megabajtów, sprawiły, że instynktownie umożliwiłem kompresję, scp
ale byłem zaskoczony, widząc raczej niską prędkość transferu. Potem próbowałem bzip2
w połączeniu z ssh
a cat
i był zaskoczony. Oto podsumowanie metod i średniej przepustowości.
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. Ten jeszcze niższy wynik skłonił do wyszukiwania w sieci.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 13 MB / s. Takie użycie-c arcfour
jak sugerowano w jednej odpowiedzi dotyczącej błędu serwera. To prawie nie pomogło. W końcu wyłączyłem kompresję.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 23 MB / s.
Czy kompresja nie powinna być szybsza?
EDYCJA: Nie wiem, dlaczego pytanie zostało odrzucone. Myślałem, że jest tu coś do nauczenia.
Po otrzymaniu ssh(1)
końcówki strony podręcznika od @sven wypróbowałem kilka alternatywnych metod przesyłania plików bez kompresji, oba z lepszymi wynikami.
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
na odbiorniku inc 192.168.161.62 5678 < vm1-root.img
nadajniku, 40 MB / s. Port5678
jest dowolnym, który był dostępny.
Używanie nc
okazało się najszybszą metodą kopiowania!
W przeszłości scp -C
działało bardzo dobrze, ilekroć myślałem. Na przykład podczas przesyłania syslogs ( /var/log/messages*
) o wielkości kilku GB. Nieskompresowana szybkość przesyłania wynosząca kilkaset KB / s wzrośnie do 1-2 MB / s. Ten przykład przypada w przypadku wolnego połączenia, jak wskazano na stronie podręcznika.
Mam przypadek, w którym nowo utworzony obraz dysku vdisk dla partycji 20 GB ma skompresowany rozmiar zaledwie 200 MB. Przy szybkości transferu około 25 MB / s kopiowanie byłoby możliwe w zaledwie 8 sekund zamiast ponad 13 minut! Oczywiście scp
bez kompresji jest w tym przypadku nieefektywny, a scp -C
nawet gorzej.
Wydaje mi się, że główna lekcja, jakiej się tutaj nauczyłem, jest taka, że scp -C
należy ją traktować jako wygodę. Jeśli plik można znacznie skompresować, lepiej najpierw skompresować go w źródle, przesłać skompresowaną formę i wreszcie skompresować w miejscu docelowym. Narzędzia, które szybko kompresują i dekompresują (np. Pbzip2 ), będą bardziej pomocne.