Hyper-V如何开启嵌套虚拟化
在虚拟机上部署被控,需支持嵌套虚拟化功能。在默认情况下 Hyper-V 修改相关配置才可支持。另得开启虚拟机交换机端口的混杂功能,不然影响正常通信。
一、修改配置
Hyper-V 默认不支持嵌套虚拟化功能,需要修改相关配置文件才能支持。
1. 打开 Windows PowerShell

2. 查看虚拟机名称
命令:
Get-VM
3. 将嵌套虚拟化选项的值设置为:true
命令:
Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName 虚拟机名称示例:
Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName beikong
4. 查看嵌套虚拟化选项的值
命令:
Get-VMProcessor -VMName 虚拟机名称 | fl示例:
Get-VMProcessor -VMName beikong | fl
二、开启混杂功能
另外在虚拟交换机的端口组需要开启混杂功能,否则通信会有问题。
开启混杂的原因: Hyper-V 虚拟交换机上只能感知到其上的虚拟机,但无法感知到嵌套后其上虚拟机的子虚拟机的 MAC 地址,所以通信时候,用子虚拟机通信到 Hyper-V 最底层虚拟交换机就会丢包。
开启方法:
1. 在 PowerShell 中查看无连接符的 MAC 地址
命令:
Get-VM -Name 虚拟机名称 | Get-VMNetworkAdapter示例:
Get-VM -Name beikong | Get-VMNetworkAdapter注:①获得的 MAC 地址无连接符。
②多个适配器将有多个 MAC 地址,都需开启混杂功能。

2. 开启混杂功能
命令:
Get-VM -Name 虚拟机名称 | Get-VMNetworkAdapter | Where-Object { $_.MacAddress -eq "MAC 地址" } | Set-VMNetworkAdapter -MacAddressSpoofing On示例:
Get-VM -Name beikong | Get-VMNetworkAdapter | Where-Object { $_.MacAddress -eq "00155D7F3D02" } | Set-VMNetworkAdapter -MacAddressSpoofing On
通过以上操作,Hyper-V 便能正常部署。