Nested Virtualization, zu deutsch mitunter als verschachtelte Virtualisierung genannt, ist eine Technik um eine virtuelle Maschine innerhalb einer virtuellen Maschine ausführen zu können. In der Windows-Welt also Hyper-V in Hyper-V oder beispielsweise Proxmox VE in Hyper-V, usw.

So ist es möglich Cluster-Umgebungen nahezu komplett für Test- oder Ausbildungszwecke zu virtualisieren oder andere Hypervisor zu testen ohne diese direkt auf der Hardware installieren zu müssen.

Die notwendigen Voraussetzungen in Sachen CPU (Intel VT-x, AMD-V) sollten so ziemlich alle Prozessoren der letzten Jahre erfüllen. Für diesen Beitrag wurden die unten genannten Befehle unter Windows Server 2022 auf einem Server mit einem Intel Xeon E3-1240 v6 von 2017 erfolgreich getestet. Windows 10 oder 11 sowie andere Windows Server-Versionen funktionieren mit entsprechender Hardware ebenfalls.

Zunächst legt man eine neue virtuelle Maschine an und lässt diese ausgeschaltet. Anschließend führt man die folgenden beiden Befehle in der PowerShell aus:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

Der erste Befehl ermöglicht Nested Virtualization an sich und der Zweite aktiviert das MAC-Adress-Spoofing damit die virtuelle Maschine(n) innerhalb der virtuellen Maschine eine Netzwerkverbindung erhalten können.

Der Vollständigkeit halber: NAT ist zwar für’s Netzwerk ebenfalls möglich (siehe Quellen), erfahrungsgemäß aber eher unüblich.

Nun kann man die virtuelle Maschine starten und einen anderen Hypervisor oder ein OS samt Desktop-Virtualisierung, o.ä. installieren und dort wiederum virtuelle Maschinen ausführen.

Quellen

Microsoft – Learn  – Virtualization – Hyper-V on Windows 10 – What is Nested Virtualization?

Microsoft – Learn  – Virtualization – Hyper-V on Windows 10 – Run Hyper-V in a Virtual Machine with Nested Virtualization