Drei Wege um virtuelle Maschinen zu migrieren

OpenNebulaConf Grafiken 09Neue Storage-Lösungen sprießen wie Tulpen im Frühling aus dem Boden. Jede einzelne ist flexibler, schlanker und hochverfügbarer.
Da kommt meine Cloud ins Spiel, die eigentlich gut läuft aber so ein schnelleres Storage ist eine willkommene Abwechslung.
So ein neues Storage ist schnell aufgesetzt, was uns dann aber vor eine neue Aufgabe stellt,
denn unsere VMs laufen… nur nicht auf unserem hippen Storage.
Nun gibt es diverse Methoden um eine virtuelle Maschine in ein neues Image bzw. neues Storage zu transferieren.
Da haben wir zum einen die altbewährte Methode, mit dem Urgestein aller blockorientierten Kopiervorgänge dd.
Dazu muss die virtuelle Maschine komplett ausgeschaltet sein. Da sich der Zustand der VMs nicht mehr ändert, kann man beruhigt die VM kopieren.
dd if=/path/to/input/file of=/path/to/output/file bs=4096
Zum anderen die Methode ein qcow2 Image in ein Blockdevice zu schreiben.
In Worten gesagt: das Image wird mit “qemu-img convert” in Raw umgewandelt und danach mit dd auf das neue Blockdevice kopiert. (Auch hier sollte die VM nicht mehr laufen!)
qemu-img convert -p -f qcow2 -O raw /path/to/input/file /path/to/outputfile.raw && dd if=/path/to/outputfile.raw of=/path/of/device bs=4M
Da die beiden genannten Arten eine lange Downtime benötigen, sind sie nur für VMs geeignet die nicht zeitkritisch sind.
Ein UNIX System kann mit guten Kenntnissen, mit relativ kurzer Ausfallszeit migriert werden. Ein hilfreiches Werkzeug dabei ist Rsync.
Leider kann ich hierzu kein fixes Beispiel vorzeigen, da die einzelnen Schritte von System zu System unterschiedlich ausfallen.
Die essentiellen Schritte sind:
1. Neues Device in der VM mounten und das gewünschte Filesystem erstellen.
2. Systemverzeichnisse auf dem neuen Device erstellen.
3. Das komplette System mit Rsync auf das neue Device kopieren. Hier muss man natürlich etwas aufpassen und Verzeichnisse wie /proc oder ggf. /mnt exkludieren. Auch auf bind Mounts sollte man achten, damit man Daten nicht ausversehen doppelt kopiert.
4. Die grub.cfg natürlich im neuen /boot Pfad aktualisieren. (grub-install und update-grub sind hierfür hilfreich)
5. Das “alte Device” als read-only einbinden und die neue fstab anpassen.
6. Und last but not least, einen weiteren Rsync in dem die restlichen Files auf das neue Image übertragen werden. (auch hier bitte das Exkludieren von wichtigen Pfaden nicht vergessen. z.B.: /etc/fstab oder auch /boot !!)
Der Vorteil hierbei ist: die Downtime erstreckt sich dabei nur über den zweiten Rsync, bei dem die Festplatte im “read-only” Modus ist.
Habt Ihr weitere coole Möglichkeiten einen VM zu migrieren?
Dann dürft ihr euch in den Kommentaren dazu äußern.
Oder seid Ihr interessiert an dem Thema Cloud und alles was damit zu tun hat? Dann besucht uns einfach auf der OpenNebula Conf 2014

Thilo Wening
Thilo Wening
Senior Consultant

Thilo hat bei NETWAYS mit der Ausbildung zum Fachinformatiker, Schwerpunkt Systemadministration begonnen und unterstützt nun nach erfolgreich bestandener Prüfung tatkräftig die Kollegen im Consulting. In seiner Freizeit ist er athletisch in der Senkrechten unterwegs und stählt seine Muskeln beim Bouldern. Als richtiger Profi macht er das natürlich am liebsten in der Natur und geht nur noch in Ausnahmefällen in die Kletterhalle.

Einfache Galerie in HTML aus der Shell

Es gibt unzählige Webgalerien oder auch Werkzeuge mit graphischem Frontend die Galerien erzeugen. Hier wir von mir ein einfacher Weg aufgezeigt, fiffige Galerie-Seiten zu von der Kommandozeile aus zu erstellen. Das Tool convert aus dem ImageMagick-Projekt ist sicherlich dem ein oder anderen ein Begriff. Auch mit diesem ist die Erstellung einfacher HTML-Seiten schon möglich, aber ein weiteres Tool aus dem selben Projekt bietet jedoch noch weiter reichende Möglichkeiten. Mit montage sind nicht nur Rahmen, Beschriftungen und Schatten möglich, sondern auch mit der Option +polaroid die Darstelung als polaroidähnliches Thumbnail.
montage *.JPG -thumbnail 192×192 -background grey20 +polaroid -background white -geometry +1+1 -tile 5x -title “Wo ich schon mal war…” index.html

Außerdem sorgt +polaroid auch für die hier zu sehende leichte zufällg erzeugte Drehehung. Mit tile wird die maximale Anahl von Bildern in eine Reihe angegeben, alle anderen Parameter sollten selbsterklärend sein. Einen Untertitel, hier den Datenamen ohne Endung, zu jedem Bild erhält man durch das Hinzufügen von der Option -set caption ‘%t’. Möchte man z.B. zusätzlich noch die Größe des Orginalbildes in eine weiter Zeile des Untertitels anzeigen lassen, kann man dies durch ‘%t\n%b’ erreichen.
In der heutigen Zeit der hochauflösenden Digitalkamaras, sind die Orginalbilder vorher noch mit beispielsweise convert -resize 800×800 *.JPG auf eine Angemessende Größe für die Anzeige auf Webseiten zu skalieren. Wobei hier das Seitenverhältnis erhalten bleibt und jeweils die längere Seite auf 800 Pixel reduziert wird.
Auch das Tool jhead sollte nicht unerwähnt bleiben, dies kann dazu verwendet werden die Bilder automatisch drehen. Hierfür ist jedoch erforderlich, dass die Orientierung in den Exif Dateien hinterlegt ist. Desweiteren ist mit jhead auch eine Manipulation dieser Daten möglich.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.