Suche

Migration „klassischer“ XEN-Maschinen in Citrix XenServer

Migration von „Xen-Classic“ mittels xva.py (Paravirtualisiert oder QEMU)

Hintergrund: Häufig kommt es vor, dass virtualisierte Maschinen aus der XEN-Welt in den proprietären Zweig von Citrix XenServer übernommen werden sollen. Hierfür ist das Python-Skript  „xva.py“ hervorragend geeignet. Mehr Infos und den Link zum Download gibt es hier: http://www.xen.org/files/xva/

Mit Hilfe des Python-Skripts „xva.py“ lassen sich sowohl paravirtualisierte (Linux-)Maschinen als auch hardwarevirtualisierte (QEMU-)Maschinen vom „alten“ Xen auf Citrix XenServer portieren. Die Vorgehensweise ist hierbei für beide Varianten identisch. Für nachfolgende Anleitung gehen wir davon aus, dass auf der Quell- und der Zielmaschine das Verzeichnis „/mnt/tmp/“ identisch ist (NFS-Share), sowie genügend Platz bietet und dass das Script xva.py ausführbar in /root/ liegt.

1. Download und Vorbereitungen auf dem Quell-System:

cd /root
wget http://www.xen.org/files/xva/xva.py 
chmod +x xva.py

2. Vorbereitung in der „alten“ VM:
Vor dem Umzug ist es ratsam, nicht mehr benötigten Dateien zu entfernen, um das Export-File nicht unnötig groß werden zu lassen.

PV-Linux (Paravirtualisierung): Unter paravirtualisierten Maschinen sollte möglichst vor dem Umzug die Standardkonsole von TTY1 auf HVC0 umgestellt werden, dafür in der Datei /etc/inittab folgende Anpassungen vornehmen:

1:2345:respawn:/sbin/getty 38400 tty1

ändern in:

1:2345:respawn:/sbin/getty 38400 hvc0

Dies kann ich im Nachinein geschehen, doch bevor diese Zeile nicht angepasst wurde, funktioniert die „Console“ im XenCenter nicht!

3. HVM / QEMU Windows / Linux:
Unter QEMU Windows VMs sind unnötige Treiber zu entfernen, sowie mögliche VM-Tools zu deinstallieren.

4. Start der Portierung:
Auf der Quellmaschine wird zuerst die alte Maschine heruntergefahren, dann mittels xva.py in eine .xva-Datei exportiert:

cd /root/
./xva.py --config=/etc/xen/auto/maschine.conf --filename=/mnt/tmp/maschine.xva

5. Import der VM auf Citrix-Xen

xe vm-import filename=/mnt/maschine.xva

Unter Umständen muss die SR-UUID des Local-Storage mit angegeben werden (Software-RAID-Maschinen), dies funktioniert wie folgt:

xe vm-import filename=/mnt/maschine.xva sr-uuid=<>

„sr-uuid“: Kann auf dem Ziel-System angezeigt werden mit: xe sr-list
z.B.:

uuid ( RO) : f9bd32ec-b63f-5be1-1f9c-274aefd4a7b8
name-label ( RW): Local storage

Hinweis: Der Importvorgang kann mittels folgendem Befehl live geprüft werden: watch xe task-list

6. Nachbereitung:
Nachdem die Maschine dann fertig importiert ist, kann diese im XenCenter bearbeitet werden (Name, Netzwerk etc.). Es ist ratsam, direkt einen Snapshot zu erstellen.

PV-Linux (Paravirtualisiert): Hinweis: Zum Anzeigen der ID folg. Befehl anwenden:

xe vm-list

Für ursprüngliche PV-Maschinen muss noch gemäß den Anweisungen der Kernel bzw. die Initrd bereitgestellt werden, z.B.:
Auf dem Quellhost:

scp /boot/initrd.img-2.6.26-2-xen-amd64 root@:/boot/guest/<<***>>/initrd

und:

scp /boot/vmlinuz-2.6.26-2-xen-amd64 root@<>:/boot/guest/<<***>>/vmlinuz

***Anmerkung: Wird genannt nach der Ausführung von des oben genannten Skriptes xva.py

Auf dem Zielhost ausführen:

xe vm-param-set uuid=<> PV-bootloader=

(Ja, nach dem Gleichzeichen kommt nichts mehr)

Außerdem muss über die „Einstellungen“-Seite unter Boot-Optionen im XenCenter folgende Zeile ergänzt bzw. angepasst werden:

root=/dev/hda1 console=tty

ändern in:

root=/dev/xvda console=hvc0

Anmerkungen:
Grundsätzlich ist übrigens auch das direkte „Streamen“ einer Classic-Xen-Maschine zu XenServer möglich. Hierbei wird ein wenig im Quellcode des Python-Skriptes verändert. Demnächst in diesem Blog!

 

Thilko Cullmann

Thilko Cullmann

Technisch begeisterter Gründer und Geschäftsführer der OMG-Gruppe

1 Kommentar

anonym

Über 6 Jahren her

Toller Artikel, hat bei mir reibungslos funktioniert. Danke!

Antworten

Hinterlassen Sie eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht.