Linux: LVM-Partitionen kopieren

Wer unter Linux vor der Aufgabe steht eine LVM-Partition zu kopieren, kann dieses Vorhaben recht einfach mit Hilfe des Tools dd erledigen.

Im simpelsten Fall wird durch folgenden Aufruf eine lokale Kopie in Form einer Image-Datei erzeugt (Zur Sicherheit sollte die Partition immer ausgehangen sein):

dd if=/dev/mapper/LV-NAME of=/backup/LV-NAME.iso

Es ist natürlich auch möglich, die Kopie direkt in eine weitere LVM-Partition einzuspielen. (Zuvor muss ein identisches großes logisches Volumen angelegt werden.)

dd if=/dev/mapper/LV-NAME of=/dev/mapper/LV-NAME-KOPIE

Ein klein wenig aufwändiger wird dieser Vorgang, wenn die Ziel-Partition auf einem anderen Server liegt. In diesem Fall wird der Datenstrom von dd über ssh getunnelt auf der Zielmaschine eingespielt (Netzwerkverbindung und vorbereitete LVM-Partition vorausgesetzt.)

dd if=/dev/mapper/LV-NAME | ssh root@ZIELHOST dd of=/dev/mapper/LV-NAME

Leider kommt es bei der zuletzt genannten Variante manchmal zu der Erscheinung, dass dd seine Aufgabe mit der Meldung „No space left on device“ abbricht, und das obwohl Quell- und Zielpartition identisch sind. Die Ursache hierfür habe ich leider noch nicht herausgefunden. Geholfen hat mir letztendlich die Zielpartition um einige GB größer als die Quellpartition anzulegen.

Tipps:

  • Beim remotegesteuerten Kopieren über das Netzwerk nohup verwenden. Nichts ist ärgerlicher, als wenn 45 von 50 GB kopiert sind und die Netzwerkverbindung unterbrochen wird.
  • dd erzeugt hohe I/O-Last. Soll es im laufenden Betrieb ausgeführt werden, reduziert ionice die Last auf dem Quellsystem.
  • Haben Quell- und Zielserver jeweils zwei NICs, sollten sie über die zwei NIC direkt verbunden und diese NIC zum Datentransfer verwendet werden. Das reduziert auch noch einmal die Systemlast und steigert die Übertragungsgeschwindigkeit.