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...

Comments (4)
  1. Michael Korp says:

    Schwierige Frage – und ich weiß nicht so genau, wie ich da eine sinnvolle Antwort gebe…

    Offiziell lässt sich in der Microsoft Support Datenbank nachlesen, dass bei Betriebssystemen bis einschließlich Windows XP und Server 2003 der HAL nach dem erstmaligen Setup nicht mehr geändert werden kann. Dies ist eigentlich auch der entscheidende Punkt, warum bei imagebasierten Installationen für die verschiedenen HAL Typen verschiedene Images erstellt werden mussten.

    Bei Vista / Server 2008 hat sich das Thema ja erledigt.

    Trotzdem gibt es Fälle (und Werkzeuge), die genau das machen – wie die oben beschriebenen Fehlermeldungen erkennen lassen aber nur unter bestimmten Bedingungen, also, wenn die Kompatibilität gewährleistet ist.

    Im VMware Fall würde ich, falls es von VMware Seiten keine entsprechenden Tools gibt, den Virtual Machine Manager 2008 empfehlen. Der unterstützt auch die Integration von ESX über Virtual Center. Die Frage, wie man vom VMware Server 2 zu ESX kommt, möchte ich hier aber nicht behandeln wollen… Vorteil: Der VMM erledigt die notwendigen Aufgaben der Migration.

    Warum es mit virtuellen Maschinen des Virtual Servers klemmen sollte, kann ich eigentlich nicht nachvollziehen – der Virtual Server unterstützt standardmäßig ACPI Systeme.

    Der wesentliche Unterschied hier zwischen VS2005 und Hyper-V ist, dass das Virtual Server Hardwaremodell einen "ACPI non-APIC" Rechner zur Verfügung stellt, während Hyper-V einen "ACPI APIC" Rechner emuliert. Hier lässt sich aber der HAL migrieren, was die Installation der Integrationsdienste erledigen würde.

    Sollte aber der Rechner z.B. als "Standard PC" im Gerätemanager auftauchen, gibt es wohl ein Problem…

  2. Toni says:

    HI Michael,

    danke für die feine Zusammenfassung!

    Ich habe jedoch ein paar “alte” XP VMs von VS2005, die ich auf Hyper-V migrieren möchte, wo (nach Deinstall von VM Additions) die Integration Services nicht installiert werden können, weil:

    “Die Hardwareabstraktionsschicht (HAL, Hardware Abstarction Layer) auf diesem Computer kann beim Setup nicht aktualisiert werden. Die Hyper-V-Integrationsdienste können nur auf virtuellen Computern mit einer ACPI-kompatiblen HAL installiert werden….”

    Ich habe es nicht geschafft (sysprep, hal.dll und ntoskrnl ersetzen, Standard-Computer Treiber ändern, etc.), das zu ändern. Beim Suchen habe ich unter anderem gefunden, dass das Ändern einer CPU von “Standard-PC” auf “ACPI-HAL” bei bestimmten “alten” XP od. 2003 Maschinen nicht funktionieren soll (PDF guide for VMWare )?

    Dazu habe ich einen coolen Link gefunden:

    http://www.scribd.com/doc/2682745/Upgrading-CPUs-for-nonACPI-Compliantwhitepaperupgradingcpusonnonacpip2v

    Kennst Du dieses Problem, bzw. hast Du vielleicht noch einen Tipp?

    Danke, Toni

  3. Sebastian says:

    Hallo,

    ich bin wohl ein Kandidat für den Teil der Spezialisten…

    Ich habe eine VM vom VMWare Server 2 zur Hyper-V migriert.

    Soweit alles in Ordnung, ich musste die hal.dll sowieso zurücksetzen. Nur ist er jetzt nicht in der Lage, diese zu ändern.

    Die Fehlermeldung, die kommt liest sich wie folgt:

    "Die Hardwareabstraktionsschicht(HAL[…]) auf diesem virtuellen Computer kann beim Setup nicht aktualisiert werden. Die Hyper-V-Integrationsdienste können nur auf virtuellen Computern mit einer ACPI-kompatiblen HAL installiert werden. Informationen[…]"

    kennt jemand diese Fehlermeldung und noch viel interessanter, hat jemand eine Lösung gefunden??

    Ich werde jetzt nochmal suchen, ob ich noch eine andere hal.dll finden kann, die funktioniert.

    Vielen lieben Dank im Voraus schonmal!!!

    Sebastian

Comments are closed.

Skip to main content