Tags: Kompatibilität, Hyper-V, Migration, Windows Server 2016
Hyper-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ärtskompatibel sind. Bringt man vorhandene VMs auf den neuesten Stand, dann gibt es keinen Weg mehr zurück. Das Management der VM-Versionen erfolgt weitgehend ü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 Verbesserungen 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.
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 Konfigurationsversion 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.
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.
Um herauszufinden, welche VM Configuration Version eine bestimmte Version von Hyper-V unterstützt, kann man das PowerShell-Cmdlet
Get-VMHostSupportedVersion
nutzen. Es zeigt auch, welche Version als Standard für das jeweilge OS eingestellt ist.
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.
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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
- Hyper-V VM-Konfigurationsversion: Upgrade über GUI oder PowerShell, Feature-Übersicht
- MAP Toolkit 9.6 prüft Voraussetzungen für Migration auf Server 2016
- Anleitung: Windows Server 2016 Cluster OS Rolling Upgrade
- PCs auf Eignung für Windows 11 prüfen mit Microsofts Update Compliance
- Migration auf Windows Server 2022: WSMT versus In-Place-Updates
Weitere Links
2 Kommentare
Redaktioneller Hinweis: Es müsste Get-Module Hyper-V heißen, nicht Get-Modul Hyper-V.
Danke, ist ausgebessert!