在具有嵌套虚拟化功能的虚拟机中运行Hyper-V

 

嵌套虚拟化是一项功能,允许您在Hyper-V虚拟机(VM)内运行Hyper-V。这对于在虚拟机中运行Visual Studio电话仿真器或测试通常需要多个主机的配置很有帮助。

ESCXI怎样关闭嵌套硬件辅助的虚拟化时 嵌套虚拟化性能_嵌套

先决条件

  • Hyper-V主机和来宾必须都为Windows Server 2016 / Windows 10周年更新或更高版本。
  • VM配置版本8.0或更高版本。
  • 具有VT-x和EPT技术的Intel处理器-嵌套当前仅适用于Intel
  • 二级虚拟机的虚拟网络存在一些差异。请参阅“嵌套的虚拟机网络”。

配置嵌套虚拟化

  1. 创建一个虚拟机。有关所需的OS和VM版本,请参阅上面的前提条件。
  2. 虚拟机处于关闭状态时,请在物理Hyper-V主机上运行以下命令。这样可以为虚拟机启用嵌套虚拟化。

复制

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
  1. 启动虚拟机。
  2. 就像在物理服务器上一样,在虚拟机中安装Hyper-V。有关安装Hyper-V的更多信息,请参见安装Hyper-V

禁用嵌套虚拟化

您可以使用以下PowerShell命令为已停止的虚拟机禁用嵌套虚拟化:

复制

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

动态内存和运行时内存大小调整

当Hyper-V在虚拟机中运行时,必须关闭虚拟机以调整其内存。这意味着即使启用了动态内存,内存量也不会波动。对于未启用动态内存的虚拟机,任何尝试在其开启时调整内存量的尝试都会失败。

请注意,仅启用嵌套虚拟化将不会对动态内存或运行时内存调整大小产生影响。仅在VM中运行Hyper-V时才会发生不兼容。

联网选项

使用嵌套虚拟机联网有两种选择:

  1. MAC地址欺骗
  2. NAT组网

MAC地址欺骗

为了使网络数据包通过两个虚拟交换机进行路由,必须在虚拟交换机的第一个(L1)级别上启用MAC地址欺骗。使用以下PowerShell命令完成此操作。

电源外壳复制

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

网络地址转换(NAT

第二个选项依赖于网络地址转换(NAT)。这种方法最适合无法进行MAC地址欺骗的情况,例如在公共云环境中。

首先,必须在主机虚拟机(“中间” VM)中创建虚拟NAT交换机。请注意,IP地址只是一个示例,在不同环境下会有所不同:

电源外壳复制

New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”

接下来,为网络适配器分配一个IP地址:

电源外壳复制

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

每个嵌套虚拟机必须为其分配IP地址和网关。请注意,网关IP必须指向上一步中的NAT适配器。您可能还想分配一个DNS服务器:

电源外壳复制

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>

嵌套虚拟化如何工作

现代处理器包括使虚拟化更快,更安全的硬件功能。Hyper-V依靠这些处理器扩展来运行虚拟机(例如Intel VT-x和AMD-V)。通常,一旦Hyper-V启动,它将阻止其他软件使用这些处理器功能。这样可以防止来宾虚拟机运行Hyper-V。

嵌套虚拟化使此硬件支持可用于来宾虚拟机。

下图显示了没有嵌套的Hyper-V。Hyper-V管理程序可以完全控制硬件虚拟化功能(橙色箭头),并且不会将其公开给来宾操作系统。

ESCXI怎样关闭嵌套硬件辅助的虚拟化时 嵌套虚拟化性能_NAT_02

相反,下图显示了启用了嵌套虚拟化的Hyper-V。在这种情况下,Hyper-V向其虚拟机公开硬件虚拟化扩展。启用嵌套后,来宾虚拟机可以安装自己的虚拟机管理程序并运行自己的来宾VM。

ESCXI怎样关闭嵌套硬件辅助的虚拟化时 嵌套虚拟化性能_嵌套_03

第三方虚拟化应用

Hyper-V虚拟机不支持Hyper-V以外的虚拟化应用程序,并且可能会失败。这包括需要硬件虚拟化扩展的所有软件。