Мені потрібно було перенести файл Vdisk KVM розміром 20 Гб , зберігаючи кореневу файлову систему CentOS 6,5 ВМ, з одного лабораторного сервера на інший. Великий розмір файлу і той факт, що я колись стискав такий файл vdisk до кількох сотень мегабайт, змусив мене інстинктивно включити компресію, scp
але я був здивований, побачивши досить низьку швидкість передачі. Тоді я спробував bzip2
в поєднанні з ssh
і cat
і був вражений. Ось підсумок методів та середня пропускна здатність.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 11 Мб / с.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
, 5 Мб / с. Цей ще нижчий результат спонукав до пошуку в мережі.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 13 Мб / с. Це використання-c arcfour
як було запропоновано в одній відповіді на сервері за замовчуванням. Це навряд чи допомогло. Нарешті, я відключив стиснення.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 23 Мб / с.
Чи не слід було стиснення бути швидшим?
EDIT: Я не знаю, чому це питання було скасовано. Я думав, що тут є чому навчитися.
Отримавши ssh(1)
підказку щодо чоловічої сторінки від @sven, я спробував пару альтернативних способів передачі файлів, що не передбачають стиснення, обидва з кращими результатами.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
, 26 Мб / с.nc -l 5678 > /mnt/vdisks/vm1-root.img
на приймачі таnc 192.168.161.62 5678 < vm1-root.img
на передавачі, 40 Мб / с. Порт5678
є довільним, який був доступний.
Використання nc
виявилося найшвидшим методом копіювання!
У минулому scp -C
дуже добре працював, коли я думав, що це буде. Наприклад, при передачі системних журналів ( /var/log/messages*
) розміром декількох ГБ. Швидкість нестисненої передачі в декілька сотень КБ / с збільшиться до 1-2 МБ / с. Цей приклад потрапляє у випадку повільного з’єднання, як було зазначено на сторінці man.
У мене є випадок, коли новостворене зображення vdisk для розділу 20 ГБ має стислий розмір всього 200 МБ. З швидкістю передачі близько 25 Мб / с, ми могли зробити копіювання всього за 8 секунд замість понад 13 хвилин! Зрозуміло, що scp
без стиснення в цьому випадку неефективно і scp -C
ще гірше.
Я здогадуюсь, головний урок, який тут засвоїли, - це те, що його scp -C
слід вважати лише зручністю. Якщо файл можна значно стиснути, то краще спершу стиснути його на джерело, перенести стиснуту форму і, нарешті, dcompress у пункті призначення. Інструменти, які швидко стискають і декомпресують (наприклад, pbzip2 ), будуть кориснішими .