VMs von ESXi nach Proxmox migrieren

Eine unter VMware ESXi betriebene VM auf einen Proxmox-Server migireren

Dieser Eintrag behandelt die Migration von VMs von einer existierend VMware ESXi Installation zu einer Proxmox Installation auf der gleichen Hardware. Dabei wird der ESXi Server vollständig formatiert.

Genutzt wurde VMware ESXi 7.0 u2 und als Ziel wurde Proxmox 8.0 verwendet.

Backup erstellen

Zunächst muss ein Backup erstellt werden. Hier gibt es mehrere Wege dies zu tun.

Option 1 – Für ESXi Hosts mit Lizenz

Diese Option beinhaltet die kürzeste Downtime, erfordert aber dass der ESXi Host mit einer Kauf-Lizenz ausgestattet ist.

Das Vorgehen ist hier wie folgt:

Zunächst ein Backup-System installieren und dort eine Backupsoftware installieren. Ich habe dazu auf einem PC eine VM mit Windows 10 erstellt und dort Veeam Backup and Recovery installiert. Veeam lässt sich mit einer Testlizenz 30 Tage kostenlos nutzen. Zu Veeam habe ich dann den ESXi Host verbunden und von allen VMs jeweils ein Backup erstellt. Je nach Größe der VMs und Geschwindigkeit der Internetleitung dauert dies natürlich eine Weile. Nachdem die erste Vollsicherung aller VMs durchgelaufen ist, habe ich gleich die nächste Sicherung gestartet um eine inkrementelle Sicherung auszuführen. Diese sichert nur noch die Unterschiede, wodurch das Backup in der Regel innerhalb weniger Minuten durch ist. Dann habe ich eine VM nach der Anderen zunächst heruntergefahren und anschließend, nachdem diese aus war, erneut ein Backup erstellt. Die Reihenfolge der VMs sollte von unwichtig nach wichtig sein, wobei die wichtigste VM zuletzt bearbeitet wird. Somit ist das Backup auf dem letzten Stand der jeweiligen VMs. WICHTIG: Achtet darauf, dass VOR dem letzten Backup die VMs keine Snapshots mehr haben. Ansonsten haben wir später ein Problem. In Veeam können dann die VMs unter Restore => VMware vSphere => Restore from backup => Disk restore => VM files restore (VMX, NVRAM) die VMs mit allen Dateien wiederhergestellt werden. Dies geht jetzt superschnell, da die VMs jetzt nicht mehr über die Internetleitung übertragen werden müssen. Anschließend haben wir die VM Dateien in dem Restore Ordner liegen.

Option 2 – Ohne Lizenz Variante 1

Hier benötigen wir keine ESXi Lizenz, müssen dafür aber mehr Downtime einberechnen, da wir die „Vorabübertragung“ der Daten, was in Option 1 durch Veeam erledigt wird, nicht durchführen können.

Das Vorgehen ist für jede VM wie folgt. Dabei sollte von der unwichtigsten (längste Downtime) zur wichtigsten (kürzeste Downtime) vorgegangen werden. Die Downtime wird für alle VMs dennoch signifikant sein. Je VM zunächst die VM herunterfahren und sicherstellen, dass kein Snapshot mehr existiert. Anschließend in der ESXi Verwaltung auf den Datastore der VM gehen und alle Dateien der VM in einen lokalen Ordner herunterladen. Dabei darauf achten, dass die VM komplett auf dem einen Datastore liegt. Ist dies nicht so, auch die Dateien der anderen Datastores herunterladen. Dies nach und nach für jede VM ausführen. Anschließend haben wir die VM Dateien in dem Restore Ordner liegen.

Option 3 – Ohne Lizenz Variante 2

Hier benötigen wir keine ESXi Lizenz, müssen dafür genau so viel Downtime einberechnen, wie bei Option 2, da wir die „Vorabübertragung“ der Daten, was in Option 1 durch Veeam erledigt wird, nicht durchführen können.

Zunächst benötigen wir von VMware das Tool „VMware Converter Standalone“. Nun sicherstellen, dass die VMs keine Snapshots beinhalten und anschließend die VMs nacheinander herunterfahren. Im VMware Converter dann unter „Convert machine“ als Source den ESXi Server konfigurieren und als Destination dann eine „VMware Workstation or other VMware virtual machine“. Diese dann in einen lokalen Ordner ablegen. Dies nach und nach für jede VM ausführen. Anschließend haben wir die VM Dateien in dem Restore Ordner liegen.

Proxmox installieren

Nun kann der ESXi-Server formatiert werden und durch Proxmox ersetzt werden.

VMDK normalisieren

Nach dem Wiederherstellen der VM-Dateien bzw. dem Kopieren, sind ist die VMDK ggf. noch als „-flat“ file vorhanden. Ist dies der Fall, müssen wir noch eine Konvertierung durchführen. Hierzu brauchen wir das Tool „VMware Converter Standalone“. Dort wählen wir als Source System „VMware Workstation or other VMware virtual machine“ und wählen dort den Ordner mit der vmx-Datei der VM aus. Als Destination System geben wir die gleichen Einstellung an, jedoch in einen eigenen Ausgabeordner. Ein Weiterer Vorteil dieser Methode: think provisioned VMDK Dateien werden so zu thin provisioned, was das Volumen ggf. deutlich reduziert. Wer wirklich thick provisioned benötigt, kann diese nach dem Upload auf dem Hypervisor wieder auf think konvertieren. Nach dem normalisieren ist die -flat-Datei der VMDK verschwunden und die vmdk-Datei selbst ist so groß wie die Daten der VM.

VMDK konvertieren

Nun müssen wir die VMDK zum qcow2-Format konvertieren. Dazu benötigen wir eine Linux-VM mit dem qemu-img CLI-Programm. Dies geht in einer WSL-Instanz (Das Windows Subsystem for Linux) oder in einer weiteren VM z.B. mit Debian. In der VM dann folgenden Befehl nutzen um die VMDK zu formatieren:

qemu-img convert -f vmdk -O qcow yourfile.vmdk yourfile.qcow2

Proxmox konfigurieren

Unter Proxmox muss auf dem „local“-Datastore noch konfiguriert werden, dass dieser VM Disks speichert. Leider kann nicht direkt in die LVM-Datastores gespeichert werden. In Proxmox im Menü „Datacenter“ => „Storage“ auswählen. Dort „local“ anklicken und unter „Edit“ den Haken zusätzlich bei „Disk image“ setzen. Nun können auch Disk images hier gespeichert werden.

QCOW2 Datei hochladen

Mittels folgendem Befehl kann dann qcow2-Datei zum Proxmox Server hochgeladen werden:

scp yourfile.qcow2 root@yourProxmoxIP:/var/lib/vz/images

Ggf. wird noch ein Passwort für den root-user verlangt sowie das Bestätigen des SSH Fingerprints.

VM erstellen und Disk verbinden

Erstelle in Proxmox die VM, wie du sie benötigst. Achte ggf. darauf UEFI als BIOS-Option einzustellen. Erstelle auch eine neue Disk. Wähle dazu den „local“-Datastore. Dies werden wir auf Dateisystemebene ersetzen. Nachdem die qcow2-Datei hochgeladen ist, gehen wir per SSH auf den Proxmox Server. Nun wechseln wir nach /var/lib/vz/images. Dort sehen wir unsere hochgeladene Datei und einen Ordner mit der ID der erstellten VM. In den Ordner gehen wir herein. Den Namen der dort vorhandenen Datei merken wir uns und löschen anschließend die Disk. Nun verschieben wir die hochgeladene Datei in den ID-Ordner und geben der Datei den Namen der gelöschten Disk.

VM starten

Starte nun die VM. Wenn UEFI/BIOS sowie der Storage Controller korrekt erkannt werden, ist die VM somit umgezogen.

Neuste Blogposts

Install Mattermost behind OPNsense Reverse Proxy

This article is about installing mattermost behind a OPNsense reverse proxy using Ubuntu and the official Omnibus deployment method of Mattermost.

Mattermost hinter einem OPNsense Reverse Proxy installieren

Dieser Artikel beschreibt die Installation von Mattermost hinter einem OPNsense Reverse Proxy mit Ubuntu und der offiziellen Omnibus Deployment Methode von Mattermost.

Cluster Shared Volume (CSV) has redirected access

Troubleshooting guide for cluster shared volumes (CSV). From easy to hard.