使用嵌套虚拟化在虚拟机中运行 Hyper-V
嵌套虚拟化是一项功能,可用于在 Hyper-V 虚拟机(VM)内运行 Hyper-V。 嵌套虚拟化有助于在虚拟机中运行 Visual Studio 手机模拟器,或测试通常需要多个主机的配置。
若要详细了解嵌套虚拟化和支持的方案,请参阅 Hyper-V 的嵌套虚拟化是什么?。
先决条件
采用 VT-x 和 EPT 技术的 Intel 处理器
- Hyper-V 主机必须是 Windows Server 2016 或更高版本,或者 Windows 10 或更高版本。
- VM 配置版本 8.0 或更高版本。
AMD EPYC/Ryzen 处理器或更高版本
- Hyper-V 主机必须是 Windows Server 2022 或更高版本,或者 Windows 11 或更高版本。
- VM 配置版本 9.3 或更高版本。
注
来宾可以是任何 Windows 支持的来宾操作系统。 较新的 Windows 操作系统可能支持“启发”,可提高性能。 若要在 Azure VM 中启用嵌套虚拟化,请确保将安全类型设置为“标准”。
配置嵌套虚拟化
创建虚拟机。 请参阅所需 OS 和 VM 版本的先决条件。
当虚拟机处于 OFF 状态时,请在物理 Hyper-V 主机上运行以下命令,为虚拟机启用嵌套虚拟化。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
启动虚拟机。
像安装物理服务器一样,在虚拟机中安装 Hyper-V。 有关安装 Hyper-V 的详细信息,请参阅 安装 Hyper-V。
注意
将 Windows Server 2019 用作第一级 VM 时,vCPU 数应小于 225。
禁用嵌套虚拟化
可以使用以下 PowerShell 命令为已停止的虚拟机禁用嵌套虚拟化:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false
网络选项
有两个选项可用于使用嵌套虚拟机进行网络:
- MAC 地址欺骗
- NAT 网络
MAC 地址欺骗
若要通过两个虚拟交换机路由网络数据包,必须在虚拟交换机的第一个 (L1) 级别启用 MAC 地址欺骗。 若要启用 MAC 地址欺骗,请运行以下 PowerShell 命令。
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
网络地址转换 (NAT)
第二个选项依赖于网络地址转换(NAT)。 此方法最适合无法实现 MAC 地址欺骗的情况,例如在公有云环境中。
首先,必须在主机虚拟机(“中间”VM)中创建虚拟 NAT 交换机。 以下示例创建一个名为 VmNAT
的新内部交换机,并为 192.168.100.0/24
子网中的所有 IP 地址创建 NAT 对象。
New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”
接下来,将 IP 地址分配给 net adapter:
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
每个嵌套虚拟机必须分配一个 IP 地址和网关。 网关 IP 必须指向上一步中的 NAT 适配器。 可能还需要分配 DNS 服务器:
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>
后续步骤
- 使用 Hyper-V Manager 远程管理 Hyper-V 主机