Marco Burmeister

  private Homepage



Proxmox - ESXi zu Proxmox Migration

Ich war immer ein Freund der Virtualisierungslösung von VMware in der freien ESXi Variante. Nach der Übernahme von VMware durch Broadcom werden nun viele Produkte abgekündigt. Darunter fällt auch der kostenfreie ESXi Virtualisierer.

Deshalb habe ich mich nach einer Alternative umgeschaut und bin bei Proxmox gelandet.

Nun möchte ich nicht alle meine VMs, die ich im ESXi abgelegt hatte, wieder neu installieren oder schon löschen. Also muss ich sie migrieren. Hier gibt es die folgenden mir bekannten Methoden:


Ein Tool von VMware wollte ich nicht nutzen, weil ich nicht wusste, wie lange ich da noch an das Tool herankomme und wie es weiterentwickelt wird.
Den Weg via Sichern und Wiederherstellen klang mir zu kompliziert.
Den Weg via Proxmox Assistent hatte ich erst zur Verfügung, als meine Migration schon abgeschlossen war.
Ich bin letztlich beim eher händische Weg über das Kopieren der VMDK-Files gelandet.

Dieser Weg funktioniert für Linux und auch für Windows Gast-Betriebssystemen in virtuellen Maschinen.

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!

Die Seite ist in die folgenden Bereiche eingeteilt:




top Voraussetzungen

In meinem Szenario steht das VMware ESXi noch zur Verfügung.
Außerdem ist Proxmox bereits auf einem anderen System installiert. Nacharbeiten zu einer Proxmox Installation habe ich auf der Seite Virtualisierung - Proxmox - Proxmox Einrichtung dokumentiert.
Ich benötige eine NFS-Freigabe, die entweder von einem anderen System kommt oder auf dem Proxmox Server eingerichtet wird. Hier liegen während der Migration dann die VMDK-Files vom ESXi und später auch die Sicherungen im Proxmox.

In meinem Szenario habe ich einen dritten Rechner als Quelle für den NFS-Server genutzt und an diesem eine große externe Festplatte (USB-Disk) gehängt, damit ich temporär die VMDK Files dort ablegen kann und später auch die Backups aus dem Proxmox.

Das von mir gewählte Szenario würde es auch ermögliche, dass wir am Ende das System mit VMware ESXi löschen und darauf Proxmox installieren. Dann wäre das Proxmox nur temporär notwendig und könnte ggfs. sogar in einer VM auf dem VMWare ESXi Server laufen. In dem Anwendungsfall muss darauf geachtet werden, dass am Ende ALLE VMs im Proxmox so gesichert worden sind, dass wir sie unter einer dann neuen Installation wiederherstellen können!
Wie Proxmox als VM innerhalb VMware ESXi betrieben werden kann, habe ich auf der Seite Virtualisierung - Proxmox - Proxmox innerhalb einer VM unterhalb VMware ESXi betreiben beschrieben.

Übersicht über die System und Verzeichnisse, die ich in der Anleitung verwende:

BezeichnungZweck
srvesxiServer mit VMware ESXi
srvproxServer mit Proxmox
srvnfsServer mit NFS-Freigabe
srvnfs:/bckVerzeichnis bck liegt auf dem Server unterhalb /
srvnfs:/bckServer und NFS-Freigabe-Name
srvnfs:/bck/migrationServer und NFS-Freigabe-Name mit Unterverzeichnis zur Ablage von VMDK-Dateien
BackupNFSName Backup Konfiguration im Proxmox als NFS-Ziel srvnfs:/bck


In dieser Anleitung gehe ich davon aus, dass wir VM für VM migrieren. Man kann sonst schnell dern Überblick verlieren.

Sollten Windows-Gäste migriert werden, so ist im Vorwege sicherzustellen, dass die Lizenz-Nummer bekannt ist.


top Migrations-Arbeiten auf der Quelle VMware ESXi

Wir beginnen die Migration auf der Quelle mit den notwendigen Arbeiten.
Hierbei benötige ich das Quell-System als Quelle für die VMDK-Files und für die Einstellung der VM im Zielsystem. Letztere Information könnte auch aus den vmx Dateien extrahiert werden, aber ich wollte einen einfacheren Weg.

Ablauf:

  1. Wir erstellen uns eine Liste der zu migrierenden VMs im VMware ESXi. Hierzu können wir die Web-Oberfläche nutzen.
    Alternativ können wir Kommando-Zeilen Tools auf der Konsole nutzen.
    Auf Kommando-Zeile zum Beispiel folgendes ausführen:
    vim-cmd vmsvc/getallvms
    Alternative Ausgabe:

    (Anmerkung: \ = Zeilenumbruch)
    vim-cmd vmsvc/getallvms | sed -e '1d' -e 's/ \[.*$//' | awk '$1 ~ /^[0-9]+$/ {print $1":"substr($0,8,80)}'
    vim-cmd vmsvc/getallvms | \
    sed -e '1d' -e 's/ \[.*$//' | \
    awk '$1 ~ /^[0-9]+$/ \
    {print $1":"substr($0,8,80)}'
  2. Stoppen alle VMs im VMware ESXi, die migriert werden sollen
  3. Wir eröffnen für die folgenden Arbeiten als OS User root am VMware ESXi Server eine SSH Session
  4. Aktivierung SSH Client
    Wir melden uns als OS User root am VMware ESXi Server an auf dem die zu migrierenden VMs liegen.
    Danach führen den folgenden Befehl aus, um zu prüfen, ob der SSH Client genutzt werden kann und er nicht durch die Firewall blockiert wird.

    (Anmerkung: \ = Zeilenumbruch)
    esxcli network firewall ruleset list --ruleset-id sshClient
    esxcli network firewall ruleset \ list --ruleset-id sshClient
    Wenn in der Ausgabe bei Enabled ein "False" steht, ist die Firewall nicht geöffnet und der folgende Befehl muss ausgeführt werden:

    (Anmerkung: \ = Zeilenumbruch)
    esxcli network firewall ruleset set --ruleset-id sshClient --enabled=true
    esxcli network firewall ruleset set \ --ruleset-id sshClient --enabled=true

    Nun kann vom VMware ESXi Server aus der SSH Client als auch SCP genutzt werden, um mit anderen Servern zu kommunizieren.
  5. Wir suchen uns das Verzeichnis heraus, in dem die VMDK-Dateien der zu migrierenden VMs liegen und wechseln in das Verzeichnis. Von dort kopieren wir dann die Dateien zu NFS-Server.
  6. (Optional): Wir packen die VMDK-Dateien vor der Übertragung. Das ist nur sinnvoll, wenn die Datenübertragung so langsam ist, dass sich der Prozess des Packens und Entpackens zeitlich lohnt.

    Packen VMDK File (nur die *-flat-Datei)

    (Anmerkung: \ = Zeilenumbruch)
    pigz -v -1 -k -p8 "-flat.vmdk"
    pigz -v -1 -k -p8 "-flat.vmdk"
  7. Nun übertragen wir die VMDK-Dateien zum NFS-Server.
    Es betrifft dann *-flat.vmdk-Dateien (Inhalt) und *.vmdk-Dateien (Beschreiungsdatei).

    Beispiel für ein SCP-Kommando:
    scp -p *vmdk* srvnfs:/bck/migration
  8. Nun haben wir die Vorarbeiten auf der VMware ESXi Seite abgeschlossen.
  9. Hinweis: Die kopierte VM sollte nun gestoppt bleiben, da sonst u.U. die Datenverarbeitung auf der alten Plattform weitergeht.


top Migrations-Arbeiten au der Ziel-Plattform Proxmox

Nun beginnen wir mit dem Aufbau auf der Ziel-Plattform.

  1. Einmalig Einrichtung: Zu Beginn konfigurieren wir ein Backup im Proxmox mit einem Ziele NFS. Wie das eingerichtet wird, kann auf der folgenden Seite nachgelesen werden: Virtualisierung - Proxmox - Proxmox Einrichtung

    Der Name ist dann nachher im Proxmox BackupNFS.
  2. Wir eröffnen für die folgenden Arbeiten als OS User root am Proxmox Server eine SSH Session
  3. Einmalig Einrichtung: Wir prüfen auf dem Proxmox Server in der SSH Session, ob die notwendigen Programme installiert sind.

    Das geht am einfachsten durch den Aufruf des Programms qemu-img. Sollte dieses fehlen, so kann es mit dem Befehl
    yum install -y qemu-img
    nachinstalliert werden.

    Danach prüfen wir ob gunzip installiert ist. Das ist nur notwendig, wenn wir auf der Quelle die VMDK-Dateien gepackt hatten.
    Sollte dieses fehlen, so kann es mit dem Befehl
    yum install -y gunzip
    nachinstalliert werden.
  4. Wir wechseln in das Verzeichnis in dem die VMDK-Dateien liegen.
    cd /mnt/pve/BackupNFS/migration
  5. Optional: Wenn wir vorher die VMDK-Dateien gepackt hatten, müssen wir sie nun wieder entpacken.

    Beispiel-Befehl:
    gunzip "<Name>-flat.vmdk.gz"
  6. Im nächsten Schritt konvertieren wir die VMDK-Dateien in das richtige Format, welches Proxmox unterstützt. Hierzu rufen wir den folgenden Befehl auf:

    (Anmerkung: \ = Zeilenumbruch)
    qemu-img convert -p -f vmdk -O qcow2 "<Name>.vmdk" "<Name>.qcow2"
    qemu-img convert -p -f vmdk -O qcow2 \
    ".vmdk" ".qcow2"

    Die Optionen bedeuten:
    OptionBedeutung
    -pStatus-Anzeige bei Verarbeitung
    -fFormat Quell-Datei
    -OFormat Ziel-Datei
  7. Optional: Sparse-Datei aus der neuen QCOW2-Datei machen (weiteres siehe unten in der Link-Sektion).
    Der Befehl hierfür lautet:

    (Anmerkung: \ = Zeilenumbruch)
    virt-sparsify --tmp tmp --compress "<Name>.qcow2" "<Name>-sparsed.qcow2"
    virt-sparsify --tmp tmp --compress \
    "<Name>.qcow2" \
    "<Name>-sparsed.qcow2"
  8. Nun legen wir die neue VM in Proxmox an. Das geht normal über die Oberfläche. Parallel muss in der alten Umgebung im VMware ESXi geschaut werden, wie dort die VM bisher aussieht, damit im Nachgang die VM auch erfolgreich gestartet werden kann.
    Folgende Eingaben sind zu machen / zu überprüfen (sind nur eine grobe Vorgabe):
    TabFeldHinweis
    AllgemeinKnotenAuswählen aus verfügbaren
    AllgemeinNameAnalog alte VM (Leerzeichen sind nicht erlaubt!)
    OSMediumKein Medium verwenden
    SystemGrafikkarteStandard
    SystemMaschinentypi440fx
    SystemBIOSSeaBios oder OVMF (UEFI)
    SystemSCSI ControllerVirIO SCSI single
    SystemQemu AgentCheckbox aktivieren
    Disks---(keine definieren)
    CPUSockets1 (oder was im Alt-System eingestellt war)
    CPUKerne2 (oder was im Alt-System eingestellt war)
    CPUTypx86-64-v2-AES
    SpeicherRAMmind. 2-4 GB (bzw. wie Quelle)
    SpeicherBallooningCheckbox aktivieren
    NetzwerkBridgevmbr0
    NetzwerkModellVirtIO

    Nach der Auswahl muss die VM anglegt werden.
  9. Wir merken uns die ID der VM im Proxmox, da wir sie im nächsten Schritt für den Import der Disks aus der Quelle benötigen.
    In dem Beispiel gehen wir von der ID 123 aus.
  10. Import der Disk in die neue VM.
    Wir importieren nun die konvertierte Disk in die neue VM.
    Beispiel:

    (Anmerkung: \ = Zeilenumbruch)
    qm importdisk 123 "/mnt/pve/BackupNFS/migration/<Name>.qcow2" local-lvm --format=qcow2
    qm importdisk 123 \
    "/mnt/pve/BackupNFS/migration/<Name>.qcow2" \
    local-lvm --format=qcow2

    Es gibt bei dem Prozess eine Status-Ausgabe mit der der Fortschritt beobachtet werden kann. Am Ende muss es in der letzten Zeile eine Ausgabe der folgenden Art geben, wenn der Import erfolgreich war:
    "Successfully imported disk as"
  11. Wechsel auf die Web-Oberfläche von Proxmox
  12. Controller für die importierte Disk in der VM auswählen und Boot-Reihenfolge festlegen
    Hierfür die Eigenschaften der VM öffnen.
    Analog Quell-VM SATA oder SCSI wählen. (Zumindest beim ersten Start scheint die Wahl von SATA in meinem Umfeld notwendig zu sein.)
    Falls Proxmox eine SSD für die VM verwendet, so auch die Checkbox SSD Emulation auswählen.

    Bei der Umstellung von Disks kann die Boot-Reihenfolge geändert werden. Im schlimmsten Fall kann die VM dann nicht mehr gestartet werden, weil keine Boot-Disk definiert ist.
    Die Umstellung kann in der VM an der Stelle VM -> Optionen -> Boot-Reihenfolge angepasst werden. Hier muss auf jeden Fall die neu eingefügte Disk markiert/aktiviert und ggfs. nach oben in der Reihenfolge verschoben werden.
    Die Checkbox "Aktiviert" ist für die Platte zu aktivieren, von der das Starten des Betriebssystem stattfinden soll.

    UDEV-Regeln: Wer mittels UDEV-Regeln Devices verändert hat (Namensanpassung, symbolische Links), muss nach dem Import der Disks in der gestarten VM prüfen, ob diese anzupassen sind!

    Bei Windows-Gästen mit SCSI-Controller in der Quelle an dieser Stelle erstmal SATA wählen. Nach dem ersten Boot muss dann die ISO mit den VirtIO Treibern eingehängt und installiert werden. Dann eine neue SCSI Disk einhängen (muss nur wenge GB groß sein) und die VM neu starten. Danach im Geräte-Manager von Windows schauen, ob es da noch Einträge mit gelben Dreieck gibt und beheben. Danach kann die VM gestoppt werden. Die zugefügte SCSCI kann wieder gelöscht werden. Im Anschluß dann die ursprünglich gewünschten SCSI Controller für die Disk definieren.
    Die VirtIO Treiber und deren Nutzung kann auch in der Link Sektion dieser Seite nachvollzogen werden.
  13. Nun kann die VM gestartet werden.
  14. Nun müssen wir die alten VMware Tools deaktivieren / löschen und den neuen qemu-guest-agent installieren.

    Bei Windows-Gästen haben wir die Agenten durch die VirtIO Treiber installiert.

    Bei Linux-Gästen muss qemu-guest-agent installiert werden.

    Linux:
    Beispiel VNware Tools bei openSUSE:
    /usr/bin/vmware-uninstall-tools.pl
    (Sollte die Deinstallation nicht funktionieren, so sind die alten Tools auf jeden Fall mittels systemctl disable <ToolsName> zu deaktivieren.)

    Installation neuer Agent am Beispiel openSUSE:
    zypper install -y qemu-guest-agent
    systemctl enable qemu-guest-agent
    systemctl start qemu-guest-agent
  15. Windows-Lizenzen bei Windows-Gästen.
    Hier ist aller Wahrscheinlichkeit davon auszugehen, dass die Lizenz neu eingespielt werden muss.
    Es hat sich einfach zu viel geändert.
  16. Die Migration ist abgeschlossen.


top Nacharbeiten nach der Migration

In diesem Bereich sammel ich die allgemeinen Aufgaben nach der erfolgreichen Migration.

Sicherung durchführen

Via Proxmox sollte vor der aktiven Nutzung zunächst eine Sicherung der migrierten VM durchgeführt werden.

Abschalten SSH Client auf VMware ESXi

Nachdem die Migrationen beendet sind, sollte der SSH Client auch wieder in der Firewall deaktiviert werden.
Hierzu via SSH an ESXi Konsole anmelden.

(Anmerkung: \ = Zeilenumbruch)
esxcli network firewall ruleset set --ruleset-id sshClient --enabled=false
esxcli network firewall ruleset set \
--ruleset-id sshClient --enabled=false



top Migration mittels Clonezilla

Einleitung

Zwischenzeitlich musste ich für die Migration einer VM auch den Weg via Clonezilla gehen, weil mein ursprünglicher Weg zu keiner startfähigen VM führte und mir der Aufwand für die Analyse zu groß war.

Die Beschreibung hier ist nur eine stark verkürzte Anleitung.

Voraussetzungen

Für die Arbeiten brauche ich das ISO-File von clonezilla auf dem Quell-System und auf dem Ziel-System.
Ferner benötige ich zur Ablage des Backups und für den späteren Restore einen NFS-Server.
Dann muss auf dem Ziel-System eine VM angelegt sein, deren Einstellungen und vor allem die Plattenstruktur dem des Ausgangssystem entsprechen. CPU und Memory kann natürlich anders eingestellt werden. Aber die Festplatten müssen mind. so groß sein, wie im Quell-System.

Backup mit Clonezilla

Auf dem Quell-System / der Quell-VM muss das System mit der ISO von clonezilla gestartet werden. Dann muss als Modus device-image (Images von Platte) gewählt werden.
Als Ziel wird ein NFS Server gewählt.
Im späteren Verlauf wird noch gefragt, was konkret getan werden soll. Hier ist die Option savedisk (Lokale Platte als Image) zu wählen (Optionen zur Auswahl:savedisk, saveparts, restoredisk, restoreparts, etc).

Restore mit Clonezilla

Auf dem Ziel-System / der Ziel-VM muss das System mit der ISO von clonezilla gestartet werden. Dann muss als Modus device-image (Images von Platte) gewählt werden.
Die Quelle ist der NFS Server aus dem vorherigen Bereich.
Im weiteren Verlauf wird wieder gefragt, was denn getan werden soll. Hier ist dann restoredisk (Image auf lokale Festplatte wiederherstellen) oder 1-2-mdisks (Image auf mehrere lokale Festplatten wiederherstellen) zu wählen. Das ist abhängig davon, was zutrifft.

Nacharbeiten

Nach dem erfolgreichen Restore kann die Ziel-VM gestartet werden.


top Migration mittels Proxmox Storage ESXi / Asssistent / Import-Wizard

Einleitung

Nachdem ich meine Migration schon via VMDK-Files vorbereitet hatte, habe ich mit Proxmox Version 8.1.0 gesehen, dass es einen Weg durch Proxmox selbst gibt, um von VMware ESXi zu Proxmox zu kommen.
Der Import-Wizard ist laut Forums-Eintrag ab Version 8.1.8 vorhanden.
Zur Vollständigkeit soll der Weg hier grob beschrieben werden.

Durchführung

Zunächst muss im Proxmox ein neuer Storage angelegt werden. Dieser ist vom Typ "ESXi".

Als Parameter werden benötigt: Servername vom ESXi, Username und Passwort vom Administrator
Falls kein offizielles Zertifikat hinterlegt war, so kann da eine Rückfrage unterbunden werden.

Nachdem der Storage angelegt worden ist, wird beim Wechsel auf dieses Storage eine Liste der VMs als Liste der VMX-Files angezeigt.
Nun kann via Eintrag markieren und drücken auf den Buttonn Import ein Wizard für die Übernahme Richtung Proxmox gestartet werden.
Der Wizard fragt grundlegende Einstellungen zur VM auf Proxmox Seite ab. Es wird auf der Einstiegsseite abgefragt bzw. kann angepasst werden:

Auf dem Tab "Erweitert" kann noch das Storage der Disk, die DVD Laufwerke der VM (inkl. einzulegendes Image) und die Netzwerkeinstellung ein wenig angepasst werden.
Eine Vergrößerung des Storage Disk war nicht möglich.

Ein Druck auf den Button "Import" holt dann vom ESXi System die VM zum Proxmox.


top Links zum Thema


Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Für den Inhalt von Internet-Seiten, auf die von dieser Seite verwiesen wird, übernehme ich keine Verantwortung!