VMs von Virtual Server nach Hyper-V migrieren

Häufig gefragt: Wie migriere ich eine VM von Virtual Server nach Hyper-V?

Manch einfach versucht es dann mit der "Import" Funktion, findet aber nichts, was er importieren kann. Daher hier noch einmal für alle, die es noch vor sich haben:

Migration einer virtuellen Maschine nach Hyper-V geht, ist relativ einfach, aber man muss ein paar Schritte beachten. Einfacher macht es der System Center Virtual Machine Manager 2008, wenn er sowohl den Virtual Server, als auch Hyper-V verwaltet. Nachteil: Die 2008er Version ist aktuell noch Beta.

Weitere Einschränkung: Manch einer meint eigentlich "Virtual PC", wenn er Virtual Server sagt (anders herum manchmal auch). Virtual PC kann nicht durch den VMM verwaltet werden.

Wichtig: Man muss die Konfiguration der virtuellen Maschine kennen - migrieren lässt sich das nicht. Daher sollte man die Konfiguration der virtuellen Maschine im Virtual PC oder Server abschreiben oder eine Bildschirmkopie anfertigen.
STOP: Nicht den Bildschirm zum Kopierer tragen! "Alt+Druck" tut es auch. ;)

Die virtuelle Festplatte (VHD) kann so, wie sie ist, unter Hyper-V verwendet werden.

Jetzt muss unter Hyper-V nur eine neue VM mit der gemerkten Konfiguration erstellt werden. Als virtuelle Festplatte wählt man dabei die existierende VHD aus, die man vorher in einem passenden Verzeichnis abgelegt hat. Danach startet die virtuelle Maschine unter Hyper-V.

Jetzt sollte man als erstes die Integrationskomponenten von Hyper-V installieren. Die Fernsteuerkonsole hat dafür unter "Aktion" einen Eintrag zum Einlegen der passenden CD (ISO). Da es sich hier um eine ehemalige Virtual Server (oder PC) VM handelt, müssen allerdings erst die VM Additions deinstalliert werden - und hier kommt ggf. das nächste Problem. Nur aktuelle VM Additions (ab 13.810) können jetzt noch deinstalliert werden. Wer eine VPC VM hat, die nicht unter Virtual PC 2007 SP1 aktualisiert wurde, hat verloren. Jeder, der nicht mindestens Virtual Server 2005 R2 SP1 hatte, ebenfalls. Hier hilft nur. die VHD nochmal unter Virtual Server / PC zu starten, um dort die Deinstallation vorzunehmen.

Sollte die VM dort nicht mehr starten, ist immer noch nicht alles verloren. Natürlich könnte man auch die ganze VM neu installieren, aber es geht auch anders. Das Windows Server 2003 Ressource Kit enthält ein Tool namens msiZAP, mit dem man die Deinstallation erzwingen kann.

msiZAP TW! {F7D2F453-B593-4875-9635-9B79FD77A81C}

Es bleiben aber einige Reste übrig. Zusätzlich müssen daher noch einige Registry Daten gelöscht werden. Dies geht am einfachsten mit einer .REG Datei:

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1-driver-vmsrvc]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1-vmsrvc]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRxVPC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msvmmouf]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VPCMap]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_1-DRIVER-VMSRVC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_1-VMSRVC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_MRXVPC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VPCMAP]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}]
"UpperFilters"=hex(7):6d,00,6f,00,75,00,63,00,6c,00,61,00,73,00,73,00,00,00,00,00

Diese REG Datei entfernt überflüssige Registry Keys und entfernt die Maus Integration der VM Additions.

Diese Schritte habe ich aber selber nie benötigt (also auch nie verifiziert); sie kommen aber von einem Kollegen, dem ich diesbezüglich erst einmal vertraue.

Trotzdem ein Hinweis: Es ist immer sinnvoll, solche "Holzhammer Methoden" zu vermeiden, wenn es geht - aber manchmal geht es halt nicht anders...

Gelegentlich passiert es dann, dass nach Installation der Integrations-komponenten, die Treiber für den VMBus nicht starten. Dies sollte aber, wenn, nur Vista (SP1) und Windows Server 2008 betreffen. Meistens beobachtet man als Fehler dann den Eintrag "Code 12" in den Eigenschaften des VMBus. Dazu gibt es auch einen KB Artikel, wer lieber dort die Lösung sucht. ;-)

Ursache ist hierbei das geänderte Hardware Modell zwischen VPC/VS und Hyper-V, was einen anderen HAL bedeutet. VS/VPC verwendete den ACPI non-APIC HAL, während Hyper-V den ACPI APIC HAL verwendet. Bei Vista (SP1) und Server 2008 korrigiert man dies mittels msconfig.exe - dort in der Registerkarte "Start" auf "Erweiterte Optionen" und den Haken bei "HAL ermitteln" setzen. Das ginge zwar auch mit bcdedit.exe, dürfte so aber einfache sein. Nach einem neustart sollte das Problem behoben sein und der VMBus Treiber starten. Damit werden dann auch die anderen Geräte erkannt und die Integrationsdienste gestartet. Wenn man bei späteren Systemstarts ein paar Sekunden sparen will, sollte man jetzt die Bootoption wieder zurücknehmen.

Möchte man ein Vista (SP1) oder Server 2008 VM aus irgendeinem Grund später nochmal unter VPC/VS starten, muss man vorher ebenfalls diese Option setzen, weil die VM sonst nicht mehr startet.

Windows XP und Server 2003 beherrschen diese Methode nicht. Hier wird der HAL Upgrade durch die Installation der Integrationskomponenten erledigt, was nicht mehr reversibel ist. Aber wer will auch schon wieder zurück - außer den paar Spezialisten, die immer besondere Herausforderungen lieben...