Die Migration von virtuellen Maschinen von VMware ESXi bzw. vSphere zu Proxmox ist für viele aktuell ein großes Thema. Spätestens seit den Lizenzänderungen bei VMware (Broadcom) schauen sich viele nach den vielen (nicht) Alternativen um. Ich habe diesen Schritt inzwischen mehrfach beim Kunden und bei mir durchgeführt und kann sagen: Der Umstieg funktioniert wirklich gut und einfach– wenn man weiß, worauf man achten muss bei einer Migration von VMware zu Proxmox (KVM).

Besonders spannend wird es bei Windows-VMs. Während Linux-Systeme wie Debian meist einfach und entspannt migriert werden können, reagiert Windows deutlich sensibler auf Änderungen an der virtuellen Hardware. Besonders die VirtIO Treiber für die Harddisk und dem Netzwerkdevice muss man vorher installieren. Genau deshalb möchte ich hier meinen persönlichen Weg teilen – so, wie ich das bereits in der Praxis mehrfach erledigt habe.

Warum Windows-VMs bei der Migration zickig sind

Das zentrale Problem bei Windows ist weniger die Migration selbst, sondern die Änderung der darunterliegenden „Hardware“. Auch wenn es sich nur um virtuelle Geräte handelt, sieht Windows nach der Migration plötzlich einen anderen Storage-Controller, eine andere Netzwerkkarte und oft auch eine andere CPU-Konfiguration. (VirtIO)

Wenn man das nicht vorbereitet, sind typische Szenarien vorprogrammiert: Die VM startet mit einem Bluescreen, die Netzwerkkarte ist verschwunden, eine andere IP-Adresse wird vom DHCP vergeben oder Windows weigert sich schlicht zu booten. Ich habe genau diese Fehler am Anfang gehabt, aber deswegen hier ja meine Erfahrungen.

Die Vorbereitung auf ESXi / vSphere – der wichtigste Teil

Der eigentliche Erfolg der Migration entscheidet sich nicht später in Proxmox, sondern bereits auf der VMware-Seite bevor wird die VM verschoben haben.

Der mit Abstand wichtigste Schritt ist für mich aber die Vorbereitung der VirtIO-Treiber. Proxmox setzt standardmäßig auf diese paravirtualisierten Treiber, weil sie deutlich bessere Performance liefern.
Das Problem ist nur: Windows kennt sie von Haus aus nicht. Wenn ich also einfach eine VM importiere und die Disk direkt auf VirtIO setze, endet das fast immer im bekannten „INACCESSIBLE_BOOT_DEVICE“-Bluescreen.

Deshalb mounte ich bereits unter ESXi das VirtIO-ISO und installiere die relevanten Treiber manuell. Besonders wichtig sind dabei die Storage-Treiber (viostor oder vioscsi) und die Netzwerktreiber (NetKVM). Damit stelle ich sicher, dass Windows diese Komponenten bereits kennt, bevor es sie wirklich braucht.

Der eigentliche Umzug nach Proxmox

Für die Migration selbst empfehle ich euch den ESXi Importer, damit ist das „Rüber schieben“ wirklich super einfach und es wird nix vergessen. Man kann natürlich auch drölf andere Methoden wählen und die Harddisk händisch importieren, aber der Importer läuft wirklich gut.

Klar kann das einen Moment dauern, aber die Daten der ausgewählten VM müssen schließlich auch erstmal transferiert werden.

Der erste Start der VM: bewusst Schritt für Schritt

Wenn die VM in Proxmox angekommen ist, widerstehe der Versuchung, direkt alles auf VirtIO umzustellen, denn genau hier passieren die meisten Fehler.

Stattdessen konfiguriere ich die VM zunächst so, dass sie möglichst kompatibel ist. Für die Festplatte / Harddisk verwende ich SATA und für den Storage-Controller VirtIO single und als Netzwerkkarte setze ich auf die e1000. Das ist zwar nicht optimal in Sachen Performance, aber extrem zuverlässig für den ersten Start bei Windows und einer frisch importierten VM. Haltet euch dran, das wird euch echt Ärger vermeiden.

Mein einziges Ziel in diesem Moment ist: Die VM soll erstmalig unter Proxmox booten, ich will sehen das alles einwandfrei läuft.

Wenn Windows sauber hochfährt, weiß ich, dass die Hardware-Basis stimmt. Falls nicht, liegt das Problem fast immer an fehlenden Treibern oder einer falschen Hardware-Konfiguration. In diesem Schritt wird Windows ein wenig neue Hardware erkennen.

VM anpassen auf VirtIO (Storage und Netzwerk)

Erst wenn die VM stabil läuft, beginne ich mit der eigentlichen Optimierung. Stabil nenne ich mal die VM läuft und alles läuft so wie es soll in der Kiste.

Dann fährt man die VM herunter, Detached man die Harddisk und hängt diese wieder als SCSI wieder ein. Danach direkt die Netzwerkkarte auf VirtIO (para..) umstellen. Ihr könnte das auch einzelnd machen, aber ey, ich hab doch keine Zeit.Wenn nach einer Umstellung ein Fehler auftritt, gehe ich einfach einen Schritt zurück und prüfe die Treiber erneut.

Jetzt könnt Ihr im System auch die kompletten VirtIO Treiber von der VirtIO ISO nachinstallieren und auch den QEMU-Guest-Agenten denken, damit geht dann auch das KSM und das Memory Ballooning.

Nacharbeiten im Windows-System

Nach der erfolgreichen Migration ist die Arbeit noch nicht ganz erledigt. Windows hat jetzt neue Hardware erkannt und alte Komponenten sind oft noch im System vorhanden. Gehe deshalb noch einmal durch den Gerätemanager und entferne alte VMware-Geräte sowie nicht mehr benötigte Netzwerkkarten.

Ein wichtiger Punkt, ist die Windows-Aktivierung. Je nach Version und Lizenzmodell kann es sein, dass Windows die neue Proxmox Hardware erkennt und eine erneute Aktivierung verlangt. In den meisten Fällen ist das schnell erledigt, aber man sollte es im Hinterkopf behalten. Also habt zur Not entsprechende Keys und Logins zu Hand.

Typische Probleme aus meiner Erfahrung

Der häufigste Fehler ist ganz klar der „INACCESSIBLE_BOOT_DEVICE“-Bluescreen. Wenn das passiert, weiß ich sofort was zu tun ist: Stelle den Controller wieder auf SATA zurück, starte die VM und installiere die fehlenden Treiber nach. Du Clown hast vergessen die richtigen Treiber zu installieren.

Hier hilft es kurzfristig eine weitere Harddisk ans System durchzureichen, welche mit SCSI angebunden ist. Dieser können wir nach der Treiberinstallation wieder entfernen.

Ein weiteres klassisches Problem ist das Netzwerk. Durch die neue virtuelle Netzwerkkarte ändert sich die MAC-Adresse und Windows behandelt die Verbindung oft als neues Netzwerk. Dadurch gehen statische IPs oder Firewall-Regeln verloren. Hier hilft es, die Netzwerkkonfiguration nach der Migration gezielt zu überprüfen. Das Problem kann aber auch vom DHCP kommen wenn eine neue MAC-Adresse bekannt gegeben wird.

Auch Performance-Probleme können auftreten, wenn die VM nicht optimal konfiguriert ist. In Proxmox achte deshalb darauf, einen sinnvollen CPU-Typ zu wählen, beispielsweise „host“ oder eine aktuelle x86-64-Variante. (Default x86-64-v2-AES)

Mein Fazit

Die Migration einer Windows VM (egal ob Server oder Client) ist eigentlich recht simpel und schnell erledigt, erfordert aber leider händisches eingreifen im System. Aber ey, schließlich wechselst du gerade von einem Monopolprodukt zu der KVM-Virtualisierung, da kommt sowas eben vor.

Wenn du wirklich nur bei dem Thema Treiber (VirtIO) aufpasst, dann wird auch nichts schlimmes passieren. Deine Applikationen werden sauber weiterlaufen danach. Und mit dem Proxmox ESXi Importer ist das ganze sogar noch ganz einfach.

Trotzdem ist wichtig, finde den Richtigen Weg für deine Umgebung, denn nicht überall funktioniert alles gleich gut.

Kurzanleitung: Windows VM – ESXi zu Proxmox Migration

  1. Erstelle ein Backup der VM!
  2. VirtIO ISO herunterladen und in der VM auf dem ESXi Host einbinden
  3. Storage- und Netzwerk-Treiber in Windows vorab installieren (viostor oder vioscsi)
  4. VM herunterfahren und mit dem ESXi Import Wizard migrieren
  5. Festplatte zunächst als SATA konfigurieren mit VirtIO Storage Controller
  6. Netzwerkkarte auf e1000 lassen
  7. VM erstmalig starten und prüfen, ob Windows sauber bootet und startet
  8. VirtIO Treiber in Windows vervollständigen
  9. VM herunterfahren und Harddisk auf SCSI stellen, Netzwerk auf VirtIO
  10. VM wieder hochfahren und prüfen ob alles läuft
  11. Netzwerk und Windows-Aktivierung prüfen
  12. Backup wieder aktivieren im Proxmox
  13. Fertig
Windows Migration – VMware / ESXi / vSphere zu Proxmox VE – Schritt für Schritt Anleitung