Virtuelle Maschinen unter Hyper-V von Generation 1 auf 2 konvertieren


    Tags: , ,

    VM der Generation 2Hyper-V führte mit Windows Server 2012 R2 virtuelle Maschinen der zweiten Genera­tion ein. Sie bieten gegenüber VMs Gen1 einige Vor­teile, so dass man eine Kon­vertierung in Erwägung ziehen sollte. Eine auto­matische Umwan­dlung ist zwar nicht vor­gesehen, eine Neu­installation kann man aber ver­meiden.

    Es gibt ver­schiedene Gründe, warum Workloads nach wie vor in einer VM der ersten Generation laufen. Häufig haben sie schon einige Jahre auf dem Buckel und wurden unter einer Version von Hyper-V erstellt, unter der es nur diesen VM-Typ gab. Sie lassen sich auch unter einer neueren Version des Hypervisors weiter­nutzen und genießen vollen Support.

    Umgekehrt kann es natürlich auch sein, dass in der VM ursprünglich eine Version von Windows installiert wurde, die nur VMs Gen1 unterstützt. Das Gast-OS wurde inzwischen möglicher­weise zwar aktualisiert, aber es ist in der alten VM gefangen.

    Für neue VMs ist im Hyper-V Manager immer noch die Generation 1 vorausgewählt.

    Schließlich kann es natürlich vorkommen, dass man beim Erstellen einer VM versehentlich Gen1 gewählt hat, weil dies im Hyper-V Manager immer noch die Vorgabe ist.

    Vorteile der Generation 2

    Zu den wichtigsten Vorzügen der neueren VMs gehört eine höhere Performance, weil das Gast-OS dort "weiß", dass es auf einem Hypervisor läuft und daher keine Hardware emuliert werden muss. VMs Gen2 unterstützen nur virtuelle SCSI-Controller, und VHDs, die an ihnen hängen, lassen sich zur Laufzeit hinzufügen (Hot-add), entfernen, vergrößern und verkleinern. Im laufenden Betrieb lassen sich zudem Netzwerk­adapter hinzufügen.

    Möchte man eine VM auf Basis von UEFI einrichten, dann geht das nur mit einer der Generation 2. Entsprechend ist Secure Boot nur dort verfügbar. Virtuelle Maschinen Gen1 hingegen unter­stützen nur BIOS und sind entsprechend auch auf das MBR-Layout der Disks beschränkt. Dies erweist sich als die wesentliche Hürde bei der Migration.

    Alte VMs finden

    Im ersten Schritt wird man sich einen Überblick verschaffen, um zu sehen, welche VMs noch Gen1 sind. Mit PowerShell lässt sich das relativ leicht herausfinden:

    Get-VM | select vmname, generation

    Dieser Befehl listet alle virtuellen Maschinen auf dem lokalen Host auf und gibt deren Namen sowie Generation aus.

    Alle VMs auf dem lokalen Host inklusive Namen und Generation auflisten

    Grundsätzlich könnte man sich nun daran machen, die alten VMs zu konvertieren. Allerdings lässt sich dieses Vorhaben nicht umsetzen, wenn das Gast-OS älter als Windows Server 2012 R2 ist oder in einer 32-Bit-Version vorliegt.

    Daher muss man zusätzlich ermitteln, welches OS in einer VM installiert ist. Wenn diese angeschaltet ist, lässt sich das relativ einfach über WMI feststellen:

    Get-CimInstance -ComputerName <myComputer> -ClassName win32_operatingsystem |
    select Caption, OSArchitecture

    Namen und Bit-Breite des Gast-OS über WMI herausfinden

    Ist eine VM dagegen ausgeschaltet, dann müsste man die VHD mit der Systempartition mounten und darin nachschauen.

    Disk-Layout auf GPT ändern

    Ist geklärt, welche VMs sich zur Konvertierung eignen, dann sollte man zuerst das Gast-OS auf die Version von Windows aktualisieren, die man für die neue Umgebung vorgesehen hat.

    Anschließend konvertiert man das System­laufwerk nach GPT. Microsoft sieht seit Windows 10 1703 dafür MBR2GPT.exe vor. Man ruft es auf einem Live-System so auf:

    mbr2gpt.exe /convert /allowFullOS

    Das Tool befindet sich in %SystemRoot%\system32 und lässt sich einfach auf andere Rechner kopieren, wenn es dort nicht vorhanden ist. Das gilt etwa für Windows Server.

    Die Empfehlung lautet aber in diesem Fall, die VM herunterzufahren, von einem aktuellen Windows PE zu booten und die Umwandlung zu GPT von dort zu starten. Der Befehl sieht dann anders aus:

    mbr2gpt.exe /convert /disk:<disknumber>

    Die Nummern der Laufwerke kann man sich in diskpart mit

    list disk

    anzeigen lassen.

    VHDs in neue VM übernehmen

    Nachdem es nicht möglich ist, eine VM Gen1 in eine des Typs Gen2 zu konvertieren, muss man nun eine neue virtuelle Maschine des Typs 2 anlegen und die VHDs mit ihr verbinden.

    Ein Nebeneffekt dieser Aktion besteht darin, dass man damit auch die VM-Version auf einen aktuellen Stand bringt. Nur dadurch sind viele der neueren Funktionen auf Hyper-V in Server 2016 oder 2019 verfügbar.

    Der Hyper-V Manager warnt davor, dass ein Downgrade nicht möglich ist.

    Allerdings führt auch von dort kein Weg mehr zurück, so dass die VM dann nicht mehr auf einem älteren Hypervisor läuft. Beim expliziten Upgrade gibt daher die Hyper-V Manager eine entsprechende Warnung aus.

    Keine Kommentare