Tags: Hyper-V, Windows 10, Windows Server 2016
In Windows 10 und Server 2016 kann man Hyper-V in einer virtuellen Maschine installieren und so mehrere virtuelle Hosts erzeugen. Nested Virtualization erfreut sich großer Beliebtheit in Lab-Umgebungen und bildet auch die technische Grundlage für Hyper-V Container in Server 2016.
Grundsätzlich ist die Möglichkeit zum Verschachteln virtueller Maschinen keine neue Erfindung. VMware bietet dieses Feature schon lange, und zwar sowohl in der Workstation als auch in ESXi.
Doch Microsoft zieht vor allem aufgrund seiner Container-Technologie in Windows Server 2016 nach, wo die Nested Virtualization stärker isolierte Container auf Basis des Microkernel-Hypervisors ermöglicht.
Voraussetzungen und Einschränkungen
Leichtgewichtige Hyper-V-Container sind jedoch nicht das einzige Einsatzszenario für diese Technik, sie dient auch häufig dem Aufbau eines Testlabors. Dort kann man damit beispielsweise einen Hyper-V Cluster auf einem einzigen Rechner einrichten. In diesem Artikel konfiguriere ich die verschachtelte virtuelle Ebene für eine Testumgebung auf Basis von Windows 10 Hyper-V.
Bei der Hardware setzt die Installation von Hyper-V in einer VM einen Intel Prozessor mit Intel-VT-X -und EPT-Technologie (SLAT, Second Level Address Translation) voraus. Ob diese Bedingung erfüllt ist, lässt sich mit Coreinfo oder auch CPU-Z prüfen.
Der Screenshot zeigt die CPU eines Surface Pro als Beispiel, welches aktuell nicht dem Labor dient. Der Hypervisor ist hier nicht präsent und somit werden die Virtualisierungsfähigkeiten der CPU an coreinfo kommuniziert.
Als Einschränkung für einen virtualisierten Host gilt außerdem, dass dieser nicht mit einer Live Migration verschoben werden kann. Zudem konnten bislang keine Snapshots der virtuellen Computer erzeugt werden, in denen Hyper-V läuft. Dies ist mit VM-Version 8.0 möglich.
Basis für Nested Virtualization
Zuerst richte ich Hyper-V "ganz normal" direkt auf der Hardware ein und erstelle wie üblich auf dieser Ebene virtuelle Maschinen. In diesen VMs wird wiederum ein Hypervisor-Layer eingezogen, um darüber erneut VMs platzieren zu können.
Basis-OS für mein Labor ist ein Windows 10 Pro Build 14393, in dem Hyper-V über die Systemsteuerung unter Programme und Features => Windows-Features aktivieren hinzugefügt wird.
Möchte man den Hypervisor alternativ mit PowerShell aktivieren, kann das mit diesem Aufruf erledigt werden:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -All
Aktivieren der Nested Virtualization
Nachdem Hyper-V in Windows 10 installiert wurde, öffne ich nach dem erforderlichen Neustart über Ausführen => virtmgmt.msc den Hyper-V Manager. Dort erstelle ich mit dem Wizard einen neuen virtuellen Computer ohne dynamischen, aber mit genügend statischem Arbeitsspeicher. Die vCPUs dieser VM muss man noch im ausgeschalteten Zustand für eine verschachtelte Virtualisierung vorbereiten.
Tut man das nicht und versucht Hyper-V in der virtuellen Maschine zu aktivieren, dann läuft man unweigerlich in das Validierungsergebnis "Hyper-V kann nicht installiert werden, da der Prozessor nicht über die erforderlichen Virtualisierungsfunktionen verfügt".
Diese Funktionen werden über das Cmdlet
Set-VMProcessor -VMName HV-HOST-01 -ExposeVirtualizationExtensions $true
sichtbar gemacht und mit $false können sie wieder maskiert werden. Für ein Testlabor verwende ich das ISO-Image von Windows Server 2016 TP5, welches als Betriebssystem für die zukünftigen Hyper-V Host-Nodes dient.
Mit einem ungepatchten Windows Server 2016 TP5 in einer VM Generation 2 und Windows 10 1607 als Basis war nach erfolgreicher Installation des Betriebssystems ein Bootvorgang nicht möglich.
Der Bildschirm des VMConnect mit der Hyper-V Virtual Machine Boot Summary brachte die Meldung "The image´s hash was denied" und "No Operating system was loaded". KB3172729 bietet hierfür zumindest einen Workaround.
Spoofing von MAC-Adressen einschalten
Damit die verschachtelten virtuellen Computer Netzwerkpakete erhalten, ist es nötig, in den Einstellungen des virtuellen Hosts das MAC Address Spoofing zu aktivieren. Die entsprechende Option findet sich im Hyper-V Manager unter Netzwerkkarte => Erweiterte Features.
Über PowerShell wird das Feature mit dem Cmdlet
Get-VMNetworkAdapter -VMName HV-HOST-01 | select MacAddressSpoofing
verifiziert und mit
Get-VMNetworkAdapter -VMName HV-HOST-01 |
Set-VMNetworkAdapter -MacAddressSpoofing On
eingeschaltet.
Täglich Know-how für IT-Pros mit unserem Newsletter
Marcel Küppers arbeitet seit über 25 Jahren in der IT, aktuell als Team Leader, zuvor als Consultant und Infrastructure Architect unter anderem für den japanischen Konzern JTEKT/TOYODA mit Verantwortung über die Europastandorte Krefeld und Paris.
Darüber hinaus wirkte er als Berater im EU-Projekt-Team für alle Lokationen des Konzerns mit und ist spezialisiert auf hochverfügbare virtualisierte Microsoft-Umgebungen plus Hybrid Cloud Solutions.
Zertifizierungen: MS Specialist und MCTS für Hyper-V/SCVMM, MCSE, MCITP, MCSA. Zusätzlich zertifiziert für PRINCE2 Projektmanagementmethode.
Verwandte Beiträge
- MAP Toolkit 9.6 prüft Voraussetzungen für Migration auf Server 2016
- NAT-Switch in Hyper-V einrichten unter Windows 10 und Server 2016
- VMware Workstation 15.5.5: kostenloses Upgrade, eingeschränkte Nested Virtualization
- Einstellungen für Windows Sandbox (Netzwerk, Scripts, Transferordner) konfigurieren mit kostenlosem GUI-Tool
- Windows 10 Sandbox installieren, isolierte Umgebung ausführen
Weitere Links