Skip to content

Hyper-v嵌套虚拟化

什么是嵌套虚拟化

简单来说嵌套虚拟化就是在虚拟机里再开虚拟机。

如何开启

在VMware Workstation中,只要打个勾就可以开启了。

但是在Hyper-v中,并没有这个选项。(再一次吐槽Hyper-v的图形化什么都没有)

想要开启,需要在Powershell中进行相关的操作。

  • 需要用到Get-VM系列的命令 首先查看当前存在的虚拟机及名称等
    PS C:\Windows\system32> Get-VM
    
    Name       State   CPUUsage(%) MemoryAssigned(M) Uptime           Status   Version
    ----       -----   ----------- ----------------- ------           ------   -------
    DNS-Server Off     0           0                 00:00:00         正常运行 8.0
    Nas        Running 1           1024              02:22:59.3840000 正常运行 9.0
  • 然后使用Get-VMProcessor -VMName 虚拟机名称 | fl 获取需要进行嵌套虚拟化的虚拟机的相关信息(下面是部分的信息)
    PS C:\Windows\system32> Get-VMProcessor -VMName Proxmox | fl
    
    ResourcePoolName                             : Primordial
    Count                                        : 1
    CompatibilityForMigrationEnabled             : False
    CompatibilityForOlderOperatingSystemsEnabled : False
    HwThreadCountPerCore                         : 0
    ExposeVirtualizationExtensions               : False

可以看到ExposeVirtualizationExtensions的值为False,这里就是嵌套虚拟化的参数了。

  • 使用Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName 虚拟机名称进行修改即可 修改后再次查看虚拟机相关信息
    PS C:\Windows\system32> Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName Proxmox
    PS C:\Windows\system32> Get-VMProcessor -VMName Proxmox | fl
    
    ResourcePoolName                             : Primordial
    Count                                        : 1
    CompatibilityForMigrationEnabled             : False
    CompatibilityForOlderOperatingSystemsEnabled : False
    HwThreadCountPerCore                         : 0
    ExposeVirtualizationExtensions               : True

可以发现ExposeVirtualizationExtensions的值为True,嵌套虚拟化已经开起了。 接下来就可以在虚拟机里开虚拟机了(禁止套娃)

详细可以参照微软的Docs