Ausführen von Hyper-V auf einem virtuellen Computer mit geschachtelter VirtualisierungRun Hyper-V in a Virtual Machine with Nested Virtualization

Die geschachtelte Virtualisierung ist ein Feature, mit dem Sie Hyper-V auf einem virtuellen Hyper-V-Computer (VM) ausführen können.Nested virtualization is a feature that allows you to run Hyper-V inside of a Hyper-V virtual machine (VM). 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.This is helpful for running a Visual Studio phone emulator in a virtual machine, or testing configurations that ordinarily require several hosts.

VoraussetzungenPrerequisites

  • Sowohl der Hyper-V-Host als auch der Gast müssen Windows Server 2016/Windows 10 Anniversary Update oder höher ausführen.The Hyper-V host and guest must both be Windows Server 2016/Windows 10 Anniversary Update or later.
  • VM-Konfigurationsversion 8.0 oder höher.VM configuration version 8.0 or greater.
  • Ein Intel-Prozessor mit VT-x- und EPT-Technologie – die Schachtelung ist derzeit nur Intel.An Intel processor with VT-x and EPT technology -- nesting is currently Intel-only.
  • Es gibt einige Unterschiede bei virtuellen Netzwerken für sekundäre virtuelle Computer.There are some differences with virtual networking for second-level virtual machines. Weitere Informationen finden Sie unter "Geschachtelte VM-Netzwerke".See "Nested Virtual Machine Networking".

Konfigurieren der geschachtelten VirtualisierungConfigure Nested Virtualization

  1. Erstellen Sie einen virtuellen Computer.Create a virtual machine. Siehe die obigen erforderlichen Komponenten zum Bestimmen der erforderlichen Betriebssystem- und VM-Versionen.See the prerequisites above for the required OS and VM versions.
  2. Während der virtuelle Computer den Status AUS hat, führen Sie den folgenden Befehl auf dem physischen Hyper-V-Host aus.While the virtual machine is in the OFF state, run the following command on the physical Hyper-V host. Dadurch wird die geschachtelte Virtualisierung auf dem virtuellen Computer aktiviert.This enables nested virtualization for the virtual machine.
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
  1. Starten Sie einen virtuellen Computer.Start the virtual machine.
  2. Installieren Sie Hyper-V auf dem virtuellen Computer ebenso wie auf einem physischen Server.Install Hyper-V within the virtual machine, just like you would for a physical server. Weitere Informationen zum Installieren von Hyper-V finden Sie unter Installieren von Hyper-V.For more information on installing Hyper-V see, Install Hyper-V.

Deaktivieren der geschachtelten VirtualisierungDisable Nested Virtualization

Sie können die geschachtelte Virtualisierung für einen beendeten virtuellen Computer mit dem folgenden PowerShell-Befehl deaktivieren:You can disable nested virtualization for a stopped virtual machine using the following PowerShell command:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false

Ändern der Größe des dynamischen Arbeitsspeichers und LaufzeitspeichersDynamic Memory and Runtime Memory Resize

Wenn Hyper-V auf einem virtuellen Computer ausgeführt wird, muss der virtuelle Computer ausgeschaltet werden, um seinen Arbeitsspeicher anpassen.When Hyper-V is running inside a virtual machine, the virtual machine must be turned off to adjust its memory. Dies bedeutet, dass auch bei aktiviertem dynamischen Arbeitsspeicher die Arbeitsspeichermenge nicht schwankt.This means that even if dynamic memory is enabled, the amount of memory will not fluctuate. Bei virtuellen Computern ohne aktivierten dynamischen Arbeitsspeicher misslingt jeder Versuch, die Arbeitsspeichermenge bei laufendem Betrieb anzupassen.For virtual machines without dynamic memory enabled, any attempt to adjust the amount of memory while it's on will fail.

Beachten Sie, dass das bloße Aktivieren der geschachtelten Virtualisierung keine Auswirkung auf die Änderung der Größe des dynamischen Arbeitsspeichers oder Laufzeitspeichers hat.Note that simply enabling nested virtualization will have no effect on dynamic memory or runtime memory resize. Die Inkompatibilität tritt nur auf, solange Hyper-V auf dem virtuellen Computer ausgeführt wird.The incompatibility only occurs while Hyper-V is running in the VM.

NetzwerkoptionenNetworking Options

Es gibt zwei Optionen für das Verwenden von Netzwerke mit geschachtelten virtuellen Computern:There are two options for networking with nested virtual machines:

  1. Spoofing von MAC-AdressenMAC address spoofing
  2. NAT-NetworkingNAT networking

Spoofing von MAC-AdressenMAC Address Spoofing

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.In order for network packets to be routed through two virtual switches, MAC address spoofing must be enabled on the first (L1) level of virtual switch. Dies kann mithilfe des folgenden PowerShell-Befehls erreicht werden.This is completed with the following PowerShell command.

Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

Netzwerkadressübersetzung (NAT)Network Address Translation (NAT)

Die zweite Option basiert auf Netzwerkadressübersetzung (NAT).The second option relies on network address translation (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.This approach is best suited for cases where MAC address spoofing is not possible, like in a public cloud environment.

Zunächst muss ein virtueller NAT-Switch auf dem virtuellen Hostcomputer (dem "mittleren" virtuellen Computer) erstellt werden.First, a virtual NAT switch must be created in the host virtual machine (the "middle" VM). Beachten Sie, dass die IP-Adressen nur beispielhaft sind und in unterschiedlichen Umgebungen variieren:Note that the IP addresses are just an example, and will vary across environments:

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:Next, assign an IP address to the net adapter:

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.Each nested virtual machine must have an IP address and gateway assigned to it. Beachten Sie, dass die Gateway-IP auf den NAT-Adapter aus dem vorherigen Schritt verweisen muss.Note that the gateway IP must point to the NAT adapter from the previous step. Gegebenenfalls sollten Sie auch einen DNS-Server zuweisen:You may also want to assign a DNS server:

Get-NetAdapter "Ethernet" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “Ethernet” address=<my DNS server>

So funktioniert die geschachtelte VirtualisierungHow nested virtualization works

Moderne Prozessoren enthalten Hardwarefeatures, die die Virtualisierung schneller und sicherer machen.Modern processors include hardware features that make virtualization faster and more secure. Hyper-V erfordert die Unterstützung der Prozessorerweiterungen (z. B. Intel VT-X und AMD-V), um virtuelle Computer ausführen zu können.Hyper-V relies on these processor extensions to run virtual machines (e.g. Intel VT-x and AMD-V). Sobald Hyper-V startet, kann keine andere Software mehr auf die Funktionen dieser Prozessoren zugreifen.Typically, once Hyper-V starts, it prevents other software from using these processor capabilities. Dadurch wird verhindert, dass Gastcomputer Hyper-V ausführen.This prevents guest virtual machines from running Hyper-V.

Eine geschachtelte Virtualisierung macht diese Hardwareunterstützung für virtuelle Gastcomputer verfügbar.Nested virtualization makes this hardware support available to guest virtual machines.

Das folgende Diagramm zeigt Hyper-V ohne Schachtelung.The diagram below shows Hyper-V without nesting. Der Hyper-V-Hypervisor hat die vollständige Kontrolle über die Hardwarevirtualisierungsfunktionen (orangefarbener Pfeil) und macht diese nicht für das Gastbetriebssystem verfügbar.The Hyper-V hypervisor takes full control of the hardware virtualization capabilities (orange arrow), and does not expose them to the guest operating system.

Im Gegensatz dazu zeigt das folgende Diagramm Hyper-V mit aktivierter geschachtelter Virtualisierung.In contrast, the diagram below shows Hyper-V with nested virtualization enabled. In diesem Fall stellt Hyper-V die Hardwarevirtualisierungserweiterungen seinen virtuellen Computern zur Verfügung.In this case, Hyper-V exposes the hardware virtualization extensions to its virtual machines. Bei aktivierter Schachtelung können Gast-VMs ihren eigenen Hypervisor installieren und eigene Gast-VMs ausführen.With nesting enabled, a guest virtual machine can install its own hypervisor and run its own guest VMs.

Virtualisierungs-Apps anderer Anbieter3rd Party Virtualization Apps

Andere Virtualisierungsanwendungen als Hyper-V werden auf virtuellen Hyper-V-Computern nicht unterstützt und funktionieren wahrscheinlich nicht.Virtualization applications other than Hyper-V are not supported in Hyper-V virtual machines, and are likely to fail. Dies schließt jegliche Software ein, die Virtualisierungserweiterungen für Hardware benötigt.This includes any software that requires hardware virtualization extensions.