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. Die geschachtelte Virtualisierung 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.
Weitere Informationen zur geschachtelten Virtualisierung und unterstützten Szenarien finden Sie unter Was ist geschachtelte Virtualisierung für Hyper-V?.
Voraussetzungen
Intel-Prozessor mit VT-x- und EPT-Technologie
- Der Hyper-V-Host muss mindestens unter Windows Server 2016 bzw. mindestens unter Windows 10 ausgeführt werden.
- VM-Konfigurationsversion 8.0 oder höher.
AMD EPYC/Ryzen-Prozessor oder höher
- Der Hyper-V-Host muss mindestens unter Windows Server 2022 bzw. mindestens unter Windows 11 ausgeführt werden.
- VM-Konfigurationsversion 9.3 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. Um die geschachtelte Virtualisierung in einer Azure-VM zu aktivieren, stellen Sie sicher, dass sie den Sicherheitstyp als Standard festlegen.
Konfigurieren der geschachtelten Virtualisierung
Erstellen Sie eine VM. Sehen Sie sich die Anforderungen für die erforderlichen Betriebssystem- und VM-Versionen an.
Während der virtuelle Computer ausgeschaltet ist, führen Sie den folgenden Befehl auf dem physischen Hyper-V-Host aus, um die geschachtelte Virtualisierung für den virtuellen Computer zu aktivieren.
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.
Hinweis
Wenn Sie Windows Server 2019 als VM der ersten Ebene verwenden, sollte die Anzahl der vCPUs maximal 225 betragen.
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
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. Um das Spoofing von MAC-Adressen zu aktivieren, führen Sie den folgenden PowerShell-Befehl aus.
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, beispielsweise in einer öffentlichen Cloudumgebung.
Zunächst muss ein virtueller NAT-Switch auf dem virtuellen Hostcomputer (dem "mittleren" virtuellen Computer) erstellt werden. Im folgenden Beispiel werden ein neuer interner Switch namens VmNAT
und ein NAT-Objekt für alle IP-Adressen im Subnetz 192.168.100.0/24
erstellt.
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. Die Gateway-IP muss auf den NAT-Adapter aus dem vorherigen Schritt verweisen. 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>