Hyper-V: VM-Versionen unter Windows 10 und Server 2016 verwalten

    Virtual MachineHyper-V in Windows 10 und Server 2016 führt die Versionen 6.2 und 7.0 für virtuelle Maschinen ein, die jedoch nicht abwärts­kompatibel sind. Bringt man vorhandene VMs auf den neuesten Stand, dann gibt es keinen Weg mehr zurück. Das Management der VM-Versionen erfolgt weit­gehend über PowerShell.

    Unter Windows 10 und Server 2016 ändern sich die Dateiformate für virtuelle Maschinen. Das betrifft zum einen die Konfiguration, die bisher in einer XML-Datei gespeichert wurde. Sie besteht nun aus einem binären Inhalt und findet sich in Dateien mit der Endung .vmcx. Geändert hat sich aber auch das Format für Snapshots und zur Speicherung des Zustands von VMs.

    Neue VM-Version für neue Features

    Ob das neue Binärformat für die Konfiguration nennenswerte Verbes­serungen bringt, ist unklar. Kaum jemand würde aber deswegen auf die neuesten VM-Versionen migrieren und damit die Kompatibilität mit Windows 8.1 und Server 2012 R2 aufgeben.

    Der wesentliche Grund für die Umstellung von VMs auf Version 7.0 sind vielmehr die neuen Features von Hyper-V, die nur in den aktuellsten virtuellen Maschinen verfügbar sind. Während sich das in Server 2016 eingeführte Hot-add von NICs auch mit der VM-Version 5.0 von Server 2012 R2 realisieren lässt, erfordern folgende Features ein Upgrade der VMs auf den neuesten Stand:

    • Hot Add/Remove von RAM
    • Secure Boot für Linux-VMs
    • PowerShell Direct
    • Production Checkpoints (Snapshots)

    Diese Liste ist wahrscheinlich nicht vollständig, neue Funktionen wie verschachtelte Virtualisierung dürften ebenfalls eine neue VM-Version erfordern.

    Kein automatisches Upgrade von VMs

    Migriert man Hyper-V-Hosts von Windows 8.1 oder Server 2012 (R2) auf Windows 10 oder Server 2016, dann wird die Version der vorhandenen VMs nicht automatisch aktualisiert. Microsoft weicht damit von der bisherigen Praxis ab. Anwender sollen nämlich in der Lage sein, VMs in gemischten Umgebungen auch weiterhin auf älteren Ausführungen von Hyper-V zu starten.

    Der neue Hyper-V Manager kann ältere VMs auf die aktuelle Version bringen.

    Sind die Voraussetzungen für das Upgrade der VMs gegeben, dann muss man dieses explizit veranlassen. Die neueste Ausführung des Hyper-V Managers bietet im Kontextmenü älterer VMs den Befehl Konfigurations­version upgraden. Bevor er diese Aktion ausführt, weist er darauf hin, dass die VM dadurch nicht mehr kompatibel mit früheren Versionen des Hypervisors ist.

    Migration mit PowerShell

    Das Hyper-V-Modul für PowerShell bietet für diesen Zweck das Cmdlet Update-VMVersion. Im Gegensatz zum Hyper-V Manager erlaubt es die Konvertierung von mehreren VMs in einem Durchgang:

    Get-VM | Update-VMVersion

    Dieser Aufruf würde alle VMs des lokalen Hosts aktualisieren. Möchte man ihn auf einen entfernten Server anwenden, dann gibt man für Get-VM zusätzlich den Parameter ComputerName an.

    Zwei VM-Versionen unter Windows 10

    Keines der beiden Tools sieht eine Möglichkeit vor, auf eine frühere Version der VM zurückzukehren. Im schlimmsten Fall muss man die virtuelle Maschine löschen und auf Basis ihrer VHDX-Laufwerke eine neue VM in der Version 5.0 erstellen.

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

    Welche VM-Version man nach dem Upgrade erhält, hängt davon ab, welche Ausführung des Betriebssystems man verwendet. Das im Sommer 2015 erschienene Windows 10 und Server 2016 TP3 nutzen die 6.2, während Build 1511 vom November ("Threshold 2") und TP4 auf Version 7.0 erhöhen.

    VM auf Basis älterer Version erstellen

    Legt man unter den neuesten Ausführungen der beiden Betriebssysteme mit dem Hyper-V Manager eine neue VM an, dann erhält man automatisch die Version 7.0. Möchte man jedoch eine virtuelle Maschine des Typs 5.0 erstellen, dann muss man dafür auf PowerShell ausweichen:

    New-VM -Version 5.0 -Name Test-VM-Version-5 -NoVHD

    Dieser Befehl würde in den Standardverzeichnissen von Hyper-V eine neue VM mit dem Namen Test-VM-Version-5 erzeugen, die vorerst ohne virtuelle Festplatte auskommt.

    Umschalten zwischen PowerShell-Modulen

    Möchte man virtuelle Maschinen unter Windows 8.x oder Server 2012 (R2) von Windows 10 aus verwalten, dann lässt sich der neueste Hyper-V Manager dafür einsetzen. Nutzt man dafür aber PowerShell, dann sieht Microsoft verschiedene Module für ältere und neuere Hosts vor. Dies kann man unter Windows 10 und Server 2016 mit

    Get-Module Hyper-V -ListAvailable

    überprüfen. In der Ausgabe finden sich die jeweiligen Versionsnummern der Module, das sind 1.1 und aktuell 2.0.0.0.

    Wenn man Hosts mit verschiedenen Versionen von Hyper-V verwalten möchte, dann sieht PowerShell dafür separate Module vor.

    Um in einer Session das automatisch geladene neue Modul zu entfernen und durch die Version 1.1 zu ersetzen, gibt man folgende Befehle ein:

    Remove-Module Hyper-V
    Import-Module Hyper-V -RequiredVersion 1.1

    Anschließend kann man sich mit Get-Module Hyper-V überzeugen, dass nun die ältere Version aktiv ist.

    2 Kommentare

    Bild von Udo
    Udo sagt:
    4. Februar 2018 - 10:45

    Redaktioneller Hinweis: Es müsste Get-Module Hyper-V heißen, nicht Get-Modul Hyper-V.

    Bild von Wolfgang Sommergut
    4. Februar 2018 - 11:51

    Danke, ist ausgebessert!