Ausführen von Hyper-V auf einem virtuellen Computer mit geschachtelter Virtualisierung
Die geschachtelte Virtualisierung ist ein Feature, mit dem Sie Hyper-V auf einem virtuellen Hyper-V-Computer (VM) ausführen können. Dies ist bei der Ausführung eines Smartphone-Emulator in Visual Studio auf einem virtuellen Computer hilfreich, oder beim Testen von Konfigurationen, die normalerweise mehrere Hosts erfordern.
Hinweis
Die geschachtelte Virtualisierung wird sowohl in Azure als auch lokal unterstützt. Wenn Sie jedoch einen nicht von Microsoft stammenden Hypervisor wie KVM verwenden, kann Microsoft keinen End-to-End-Support bereitstellen. Stellen Sie sicher, dass Ihr Anbieter dieses Szenario unterstützt.
Voraussetzungen
Intel-Prozessor mit VT-x- und EPT-Technologie
- Der Hyper-V-Host muss Windows Server 2016/Windows 10 oder höher sein
- VM-Konfigurationsversion 8.0 oder höher
AMD EPYC/Ryzen-Prozessor oder höher
- Der Hyper-V-Host muss Windows Server 2022/Windows 11 oder höher sein
- VM-Konfigurationsversion 10.0 oder höher
Hinweis
Der Gast kann ein beliebiges von Windows unterstütztes Gastbetriebssystem sein. Neuere Windows Betriebssysteme unterstützen möglicherweise Optimierungen, die die Leistung verbessern.
Konfigurieren der geschachtelten Virtualisierung
- Erstellen Sie eine VM. Siehe die obigen erforderlichen Komponenten zum Bestimmen der erforderlichen Betriebssystem- und VM-Versionen.
- Während der virtuelle Computer den Status AUS hat, führen Sie den folgenden Befehl auf dem physischen Hyper-V-Host aus. Dadurch wird die geschachtelte Virtualisierung auf dem virtuellen Computer aktiviert.
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
- Starten Sie den virtuellen Computer.
- Installieren Sie Hyper-V auf dem virtuellen Computer ebenso wie auf einem physischen Server. Weitere Informationen zum Installieren von Hyper-V finden Sie unter Installieren von Hyper-V.
Deaktivieren der geschachtelten Virtualisierung
Sie können die geschachtelte Virtualisierung für einen beendeten virtuellen Computer mit dem folgenden PowerShell-Befehl deaktivieren:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false
Ändern der Größe des dynamischen Arbeitsspeichers und Laufzeitspeichers
Wenn Hyper-V auf einem virtuellen Computer ausgeführt wird, muss der virtuelle Computer ausgeschaltet werden, um seinen Arbeitsspeicher anpassen. Dies bedeutet, dass auch bei aktiviertem dynamischen Arbeitsspeicher die Arbeitsspeichermenge nicht schwankt. Bei virtuellen Computern ohne aktivierten dynamischen Arbeitsspeicher misslingt jeder Versuch, die Arbeitsspeichermenge bei laufendem Betrieb anzupassen.
Beachten Sie, dass das bloße Aktivieren der geschachtelten Virtualisierung keine Auswirkung auf die Änderung der Größe des dynamischen Arbeitsspeichers oder Laufzeitspeichers hat. Die Inkompatibilität tritt nur auf, solange Hyper-V auf dem virtuellen Computer ausgeführt wird.
Netzwerkoptionen
Es gibt zwei Optionen für das Verwenden von Netzwerke mit geschachtelten virtuellen Computern:
- Spoofing von MAC-Adressen
- NAT-Networking
Spoofing von MAC-Adressen
Damit Netzwerkpakete über zwei virtuelle Switches geleitet werden können, muss das Spoofing von MAC-Adressen auf der ersten Ebene (L1) des virtuellen Switches aktiviert sein. Dies kann mithilfe des folgenden PowerShell-Befehls erreicht werden.
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
Netzwerkadressübersetzung (NAT)
Die zweite Option basiert auf Netzwerkadressübersetzung (NAT). Dieser Ansatz eignet sich am besten für Situationen, in denen das Spoofing von MAC-Adressen nicht möglich ist, wie in beispielsweise in einer öffentlichen Cloudumgebung.
Zunächst muss ein virtueller NAT-Switch auf dem virtuellen Hostcomputer (dem "mittleren" virtuellen Computer) erstellt werden. Beachten Sie, dass die IP-Adressen nur beispielhaft sind und in unterschiedlichen Umgebungen variieren:
New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”
Als Nächstes weisen Sie dem Netzadapter eine IP-Adresse zu:
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Jedem geschachtelten virtuellen Computer muss eine IP-Adresse und ein Gateway zugewiesen sein. Beachten Sie, dass die Gateway-IP auf den NAT-Adapter aus dem vorherigen Schritt verweisen muss. Gegebenenfalls sollten Sie auch einen DNS-Server zuweisen:
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “vEthernet (VmNat)” address=<my DNS server>
So funktioniert die geschachtelte Virtualisierung
Moderne Prozessoren enthalten Hardwarefeatures, die die Virtualisierung schneller und sicherer machen. Hyper-V erfordert die Unterstützung der Prozessorerweiterungen (z. B. Intel VT-X und AMD-V), um virtuelle Computer ausführen zu können. Sobald Hyper-V startet, kann keine andere Software mehr auf die Funktionen dieser Prozessoren zugreifen. Dadurch wird verhindert, dass Gastcomputer Hyper-V ausführen.
Eine geschachtelte Virtualisierung macht diese Hardwareunterstützung für virtuelle Gastcomputer verfügbar.
Das folgende Diagramm zeigt Hyper-V ohne Schachtelung. Der Hyper-V-Hypervisor hat die vollständige Kontrolle über die Hardwarevirtualisierungsfunktionen (orangefarbener Pfeil) und macht diese nicht für das Gastbetriebssystem verfügbar.
Im Gegensatz dazu zeigt das folgende Diagramm Hyper-V mit aktivierter geschachtelter Virtualisierung. In diesem Fall stellt Hyper-V die Hardwarevirtualisierungserweiterungen seinen virtuellen Computern zur Verfügung. Bei aktivierter Schachtelung können Gast-VMs ihren eigenen Hypervisor installieren und eigene Gast-VMs ausführen.
Virtualisierungs-Apps anderer Anbieter
Andere Virtualisierungsanwendungen als Hyper-V werden in Hyper-V-VMs nicht unterstützt und lassen sich wahrscheinlich nicht erfolgreich ausführen. Hierzu gehört jede Softwareanwendung, die Hardwarevirtualisierungserweiterungen erfordert.