Einfache Übertragung von virtualisierten Servern
- Tags:
Das Verschieben großer Blockdevices oder LVM Volumes über eine schmalbandige Leitung hat mehrere Anforderungen:
- Bandbreite schonen
- Übertragungsdauer minimieren
- Fortschritt überwachen
Die folgende Pipe bedient sich insbesonder dem Monitor pv
dd if=/dev/mapper/sourcelv | pv -c -N raw -s 20g | bzip2 -9 | \
pv -N compressed -c -L 400k | ssh root@newserver "bzip2 -d | \
dd of=/dev/mapper/targetlv"
Die Anführungszeichen sind besonders wichtig, da sonst dd auf das lokale LVM schreibt!
Man erhält eine übersichtilche Ausgabe:
raw: 1,8GB 0:21:39 [2,03MB/s] [===> ] 9% ETA 3:38:50
compressed: 473MB 0:21:39 [ 403kB/s] [ <=> ]
Kommentare
Performance im lokalen Netz
Wenn man den Luxus eines Gigabit-Netzwerks ausnützen will, ist es weise, die Kompression auszuschalten, da die CPU sonst nicht hinterher kommt. Der Flaschehals ist dann die CPU, die mit der Kompression nicht hinterher kommt, während sich das Netzwerk langweilt.
Außerdem sollte man den Parameter -L 400k (des 2. pv Befehls) entsprechend anpassen oder weglassen. Damit wird nämlich die Übertragung auf eine maximale Bandbreite gedrosselt - auch etwas, das man im lokalen Netz unter Umständen nicht will.
Compression und Cypher
Ein weiteres Performance Problem im lokalen Netz ist der Overhead der durch SSH an sich entsteht.
Dagegen hilft:
1.) ein schneller Cypher Algorithmus: z.B. Blowfish
2.) keine Compression
Dazu einfach die SSH Optionen " -o Compression=no -c blowfish " verwenden.
Dadurch kann die Performance um einiges gesteigert werden (die Sicherheit ist allerdings nicht mehr gegeben)!