智简魔方文档

Hyper-V如何开启嵌套虚拟化

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


一、修改配置

Hyper-V 默认不支持嵌套虚拟化功能,需要修改相关配置文件才能支持。

1. 打开 Windows PowerShell

打开 Windows PowerShell界面截图

2. 查看虚拟机名称

命令:

Get-VM

命令:get-vm界面截图

3. 将嵌套虚拟化选项的值设置为:true

命令:

Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName 虚拟机名称

示例:

Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName beikong

示例:Set-VMProcessor -Expo 相关操作界面截图

4. 查看嵌套虚拟化选项的值

命令:

Get-VMProcessor -VMName 虚拟机名称 | fl

示例:

Get-VMProcessor -VMName beikong | fl

示例:Get-VMProcessor -VMNa 相关操作界面截图

二、开启混杂功能

另外在虚拟交换机的端口组需要开启混杂功能,否则通信会有问题。

开启混杂的原因: Hyper-V 虚拟交换机上只能感知到其上的虚拟机,但无法感知到嵌套后其上虚拟机的子虚拟机的 MAC 地址,所以通信时候,用子虚拟机通信到 Hyper-V 最底层虚拟交换机就会丢包。

开启方法

1. 在 PowerShell 中查看无连接符的 MAC 地址

命令:

Get-VM -Name 虚拟机名称 | Get-VMNetworkAdapter

示例:

Get-VM -Name beikong | Get-VMNetworkAdapter

注:①获得的 MAC 地址无连接符。

②多个适配器将有多个 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

示例:Get-VM -Name beikong 相关操作界面截图

通过以上操作,Hyper-V 便能正常部署。