VM Export & Import: Migration von Windows / Linux VMs von VMware zu Proxmox VE

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Dieser Artikel zeigt, wie man virtuelle Maschinen von VMware Hypervisor-Systemen (vSAN / vSphere) zu Proxmox VE Systemen transferieren kann. Dabei gehen wir jeweils auf Linux und Windows VMs ein - unsere VMs in VMware sind alle Thin-Provisioned. Das grundsätzliche Vorgehen bei einem Umzug von VMware zu Proxmox VE ist, dass man die gewünschte VM in VMware exportiert und dann mittels Proxmox VE Boardmitteln importiert, anpasst und konfiguriert.

Update: Seite Ende März 2024 gibt es zusätzlich auch die Möglichkeit der Migration mittels ESXi VM Importer - Proxmox VE Storage Plugin.

Proxmox optimierte Server kaufen

Voraussetzungen

Folgende Voraussetzungen gelten, wenn Sie von VMware zu Proxmox VE wechseln migrieren möchten:

  • Stellen Sie sicher, dass Sie ein Backup Ihrer VM haben für alle Fälle.
  • Die VM muss für den Export ausgeschalten werden. (Offline Migration)
  • Bei Windows VMs: Bitte auf der VM die neusten Virt-IO-Treiber platzieren und herunterladen.
  • Auf dem VMware Host muss SSH Zugriff aktiviert sein.
  • Auf dem / den Proxmox Hosts muss das VMware OVF Tool installiert sein.
    • hier können Sie den oben verlinkten Artikel verwenden, dort wird unter anderem die Installation des OVF-Tools beschrieben.
  • Genügend freier Speicher auf dem Proxmox VE Host (temporär).

VM Export VMware

Wechseln Sie in ein Verzeichnis indem Sie genügend freien Speicherplatz für die temporäre Speicherung der zu importierenden VM haben. Sie werden kurzzeitig doppelten Speicher belegen, solange die Migration nicht abgeschlossen ist. Bei Ceph Systemen verwenden wir gerne den Ceph-FS Speicher dafür - bei Singlehosts müssten Sie für genügend Host auf dem lokalen Host sorgen (Boot-Devices oder ZFS-Filesystem).

Mit dem folgenden Kommando geben Sie dem OVF-Tool den vSphere-Host via IP-Adresse an und sagen dem Tool auch, welche VM er über das Netzwerk exportieren soll. Der "." im Kommando gibt an, dass er die VM im aktuellen Verzeichnis ablegen soll.

root@pve-01:~/VMS# ovftool vi://root@10.2.2.112/JS-AD-01 .

Opening VI source: vi://root@10.2.2.112:443/JS-AD-01
Opening OVF target: .
Writing OVF package: ./JS-AD-01/JS-AD-01.ovf
Disk progress: 11%
.........
Transfer Completed
Completed successfully

Nachdem der Transfer abgeschlossen ist, haben Sie einen neuen Ordner, welcher alle benötigen Dateien der VM enthält.

root@pve-01:~/VMS# cd JS-AD-01 root@pve-01:~/VMS/JS-AD-01# ls JS-AD-01-disk1.vmdk JS-AD-01-file1.nvram JS-AD-01.mf JS-AD-01.ovf

VM Import Proxmox

Mittels des Kommandos qm importovf können Sie dem Proxmox System sagen, dass der eine OVF-Vorlage importieren soll. Das folgende Kommando erstellt eine neue VM-Definition in Proxmox mit der ID 101 und importiert die VM in den Proxmox-Speicher "vm_hdd". 101 ist die ID der neuen VM, stellen Sie auf jeden Fall sicher, dass die ID nicht doppelt in Ihrem Proxmox System vergeben ist. Bitte geben Sie am Kommando Ende Ihren jeweiligen Storage an, auf dem Sie die VM importieren möchten.


root@pve-01:~/VMS/JS-AD-01# qm importovf 101 JS-AD-01.ovf vm_hdd

transferred: 0 bytes remaining: 42949672960 bytes total: 42949672960 bytes progression: 0.00 %
transferred: 429496729 bytes remaining: 42520176231 bytes total: 42949672960 bytes progression: 1.00 %
transferred: 858993459 bytes remaining: 42090679501 bytes total: 42949672960 bytes progression: 2.00 %
...

Konfiguration Linux VM

Bei Linux VMs müssen Sie in der Regel keine Anpassungen machen, Linux VMs booten ohne weitere Anpassungen der QEMU-Konfiguration. Für eine optimale Performance ändern Sie den SCSI Treiber noch auf Virt-IO-SCSI. Moderne Linux VMs haben den VirtIO-SCSI Treiber bereits im Kernel integriert und booten ohne weitere Konfiguration - überprüfen können Sie die Umstellung mittels des Kommandos lspci.

Konfiguration Windows VM

Bei Windows VMs sind einige Schritte notwendig, damit diese booten nach dem Import. Das BIOS muss auf OVMF (UEFI) gesetzt werden (sofern Windows unter UEFI installiert wurde), außerdem werden die Treiber von SCSI auf SATA abgeändert (nur für die ersten Boot-Vorgänge). Um die maximale Performance zu erzielen werden die VirtIO-SCSI Treiber installiert, welche einige Zusatzschritte benötigen.

root@pve-01:~/VMS/JS-AD-01# qm set 101 --bios ovmf
update VM 101: -bios ovmf
root@pve-01:~/VMS/JS-AD-01# sed -i 's/scsi/sata/g' /etc/pve/qemu-server/101.conf

Nach diesen Anpassungen sollten Sie die VM starten und über die Proxmox eigene Konsole beobachten können. Bevor Sie dies jedoch tun fügen Sie der VM über die GUI eine weitere Festplatte mit dem Typ: VirtIO-SCSI hinzu. Dies ist notwendig, damit Windows während der danach folgenden Virt-IO Treiber-Installation eine SCSI-Disk im System vorfinden kann. Findet er diese nicht, so wird der Treiber zwar installiert, aber nicht während des Bootens des Windows geladen (ergo Bootplatten mit Virt-IO-SCSI würden trotzdem nicht booten, obwohl der Treiber installiert ist). Ggf. kann es vorher notwendig sein den in Proxmox eingestellten SCSI-Controller von Default (LSI 53C895A) auf VirtIO-SCSI zu ändern:

Sie sollten nun bei den Festplatten der VM sata verwenden und bei der hinzugefügten Festplatte (temporär) scsi. Danach booten Sie das Windows und installieren Sie die Virt-IO Treiber:

Danach können Sie die VM herunterfahren und müssen nun die temporäre Festplatte zuerst abkoppeln "detach" und dann mit "remove" entfernen. Bitte achten Sie darauf, dass Sie nicht eine der VM-Festplatten löschen, auf denen Ihre Daten liegen. Sie müssen die temporäre Festplatten verwenden. Außerdem müssen Sie die Festplatten wieder von SATA auf SCSI ändern:

root@pve-01:/mnt/pve/cephfs# sed -i 's/sata/scsi/g' /etc/pve/qemu-server/101.conf

Sobald Sie diese Änderungen alle befolgt haben, können Sie die Windows VM nun mit installierten VirtIO-SCSI Treibern starten und verwenden.

Netzwerk-Interfaces

Bitte beachten Sie auch dass mit dem Import der OVF das Netzwerk-Interface oder die Netzwerk-Interfaces der VMs nicht übernommen wurden, diese müssen manuell über Hardware -> Add wieder hinzugefügt werden. Verwenden Sie auch hier bitte Virt-IO. Dies betrifft sowohl Windows als auch Linux-VMs. Bei Linux VMs bitte auch beachten, dass sich aufgrund der Migration ggf. auch die Namen der Interfaces geändert haben und Sie unter Umständen diese in der jeweiligen Netzwerk-Konfiguration abändern müssen (bspw. in der /etc/network/interfaces Datei).


Foto Jonas Sterr.jpg

Autor: Jonas Sterr

Ich beschäftige mich mit den Themen Software Defined Storage, Proxmox Virtualisierung auf Basis von KVM, QEMU & Ceph im Produktmanagement der Thomas-Krenn.AG in Freyung. Proxmox ist meine absolute Leidenschaft und ich freue mich gerne über Kontaktanfragen und einen Austausch auf LinkedIn.


Das könnte Sie auch interessieren

InfluxDB2 + Grafana Konfiguration eines Metric-Servers für Proxmox VE
Monitoring eines Proxmox Clusters mit checkmk
Monitoring eines Proxmox VE Ceph Hosts mit checkmk