Skip to main content

Migration von OpenVZ zu Xen

Ein neuer Server - eine neue Technik. Bisher haben ich für die Virtualisierung der Server OpenVZ eingesetzt. Das gute daran war die einfache Bedienung. Und da sich der Hostserver und die virtuellen Server den Kernel teilen, ist der Overhead gering. Nun wollte ich aber bei einem neuen Server Xen verwenden. Zum einen gefällt mir hier, dass die virtuellen Server besser getrennt sind (man kann den vServern festen Speicher zusichern und bei der Zuteilung der CPUs ist Xen auch flexibler). Zum anderen enthält das Debian Repository bereits einen aktuellen Xen Kernel. Bei OpenVZ muss man immer einen etwas älteren 2er Kernel aus einem externen Repository benutzen.

Nun habe ich die Umstellung gewagt. Der Xen Beginners Guide war eine große Hilfe. Nur kurz der Hinweis: Ich hatte zum einen Probleme mit den xen-tools. Diese habe ich mit dem Paket von Debian sid ausgetauscht. Wie das geht, hatte ich schon mal im Artikel zu duplicity erklärt. Außerdem gibt es den Bug (im Code habe ich die Ursache noch nicht gefunden), dass der Gateway im neuen vServer nicht gesetzt war, obwohl ich diesen dem Befehl “xen-create-image” übergeben hatte. Daher war der vServer auch nicht von außen erreichbar. Also falls ihr das Problem habt, dann müsst ihr ihn unter “/etc/network/interfaces” selber setzen (am besten da wo die leere Zeile ist ^^).

Nun aber zur Migration: Ich hatte keine Lust die vServer neu aufzusetzen. Der Vorteil war, dass der bisherige vServer unter Debian wheezy lief und der neue das ebenfalls tun sollte. Das ist auch die Vorraussetzung für eine erfolgreiche Migration. Nun aber zu den Schritten:

1. Auf dem neuen Hostserver den neuen vServer erstellen (xen-create-image). Bei Bedarf das Netzwerk noch fixen (siehe oben).

2. Den neuen vServer wieder stoppen.

3. Den neuen vServer mounten (hier gehe ich davon aus, dass LVM benutzt wird):

mount /dev/vg0/servername-disk /mnt

4. Auf dem alten Hostserver habe ich dann eine Datei angelegt (/root/exclude.txt), wo ich eingetragen habe, was alles nicht übertragen werden soll:

/etc/fstab
/etc/securetty
/boot
/etc/inittab
/etc/network
/proc
/lib/modules
/sys
/etc/resolv.conf
/etc/hosts
/tmp
/dev
/var/lock
/etc/mtab

5. Dann habe ich während der alte vServer noch läuft, folgenden Rsync gestartet (muss entsprechend angepasst werden - es macht Sinn den Befehl in “screen” laufen zu lassen):

rsync -azvP --delete --exclude-from="/root/exclude.txt" -e "ssh -p $port" --numeric-ids /var/lib/vz/private/$vservernummer/ root@neuerhostserver:/mnt/

6. Anschließend habe ich den alten vServer heruntergefahren und anschließend den vorherigen rsync-Befehl noch einmal ausgeführt (für die in der Zeit geänderten Dateien).

7. Zum Schluss brauchte ich nur noch die Partition aus Schritt 3 unmounten (umount) und den Server starten. Nun sollte alles funktionieren. Man sollte hier alles testen ehe man den alten vServer entsorgt. Außerdem sollte man nicht die DNS Einträge vergessen bzw. an z.B. die IP beim externen Monitorings anpassen. ;)

Das war es eigentlich schon. Diese Anleitung habe ich mir aus folgenden Quellen zusammengestellt: