Win11下 VMware Workstation 和 Hyper-V 嵌套虚拟化
前提:
我们有时候需要测试一些虚拟化系统(如ESXi、PVE、Hyper-V等),但是直接用物理机有时候并不方便,我们希望在虚拟机中模拟物理机来先行测试方案,此时我们就会用到嵌套虚拟化。本文默认看到此文的朋友已经对各种虚拟化系统和软件操作熟练,因此相关设置和安装都会简化,仅说重要的部分。测试嵌套虚拟化是否生效我这里采用Proxmox VE(PVE)。
一、 VMware Workstation
(1)正常不需要嵌套虚拟化的情况下,Win11,WIN2022,WIN2025的虚拟化组件部分(如:Hyper-V、安全的内核隔离、沙盒等) 与 VMware Workstation 17已经很好的兼容。Hyper-V也可以和VMware Workstation 17同时使用。
(2)但要使用嵌套虚拟化,则情况会有不同,VMware Workstation的嵌套虚拟化需要关闭Win11的虚拟化相关的功能组件。
首先我们先打开VMware虚拟机的嵌套虚拟化功能(虚拟化intel vt-x/ept or amd-v/rvi)尝试启动,大多数情况下会启动失败:

如果提示不支持虚拟化VT-x请测试如下操作
3)此时我们如果想要继续使用VMware来做测试,那么就应该关闭Win11系统自带的一些虚拟化相关的组件(包括:Hyper-V、虚拟机平台、虚拟机监控程序平台、沙盒、以及安全中心的内核隔离):



(4)关闭以上选项并分别重启完成后,我们再次尝试启动虚拟机,会发现VMware内的PVE已经可以启动,PVE内的测试虚拟机也可以正常启动,说明嵌套虚拟化生效。
二、 然而对于使用微软原生Hyper-V虚拟化软件来运行虚拟机的情况下,怎么对虚拟机开启嵌套虚拟化呢:
(1) 安装Hyper-V,并创建PVE虚拟机

2)启动PVE虚拟机并安装PVE系统,会报一个没有启用虚拟化的提示,这是因为默认情况下Hyper-V虚拟机没有启用嵌套虚拟化,但这不影响继续安装,我们可以继续安装系统完成。
3) 我们通过浏览器进入PVE的WEB管理后台,创建并试图启动一个虚拟机,会提示启动失败,因为我们还没有启动嵌套虚拟化
4) 关闭PVE虚拟机,然后PowerShell执行如下命令启用指定名称虚拟机的嵌套虚拟化:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
说明:以上<VMName>为虚拟机名
如本例为:Set-VMProcessor -VMName Win2025-PIIS -ExposeVirtualizationExtensions $true
如果要关闭嵌套虚拟化:
Set-VMProcessor -VMName Win2025-PIIS -ExposeVirtualizationExtensions $false
查看本机hyper-v中的虚拟机清单(执行PowerShell命令):
Get-VM
查看相关虚拟机是否开启嵌套:
Get-VMProcessor -VMName www.piis.cn | fl
上面www.piis.cn为虚拟机的名称,ExposeVirtualizationExtensions参数为True就是开启了嵌套,否则就是false状态
如果要停用相关虚拟机的嵌套就是:Set-VMProcessor -VMName www.piis.cn -ExposeVirtualizationExtensions $false
动态内存和运行时内存大小调整
当 Hyper-V 在虚拟机内运行时,必须关闭虚拟机以调整其内存。 这意味着,即使启用了动态内存,内存量将不会波动。 对于没有启用动态内存的虚拟机,在虚拟机开启情况下对调整内存量的任何尝试都将失败。
请注意,只启用嵌套虚拟化不会影响动态内存或者运行时内存大小调整。 仅当 Hyper-V 在 VM 中运行时会出现不兼容。
前提:
我们有时候需要测试一些虚拟化系统(如ESXi、PVE、Hyper-V等),但是直接用物理机有时候并不方便,我们希望在虚拟机中模拟物理机来先行测试方案,此时我们就会用到嵌套虚拟化。本文默认看到此文的朋友已经对各种虚拟化系统和软件操作熟练,因此相关设置和安装都会简化,仅说重要的部分。测试嵌套虚拟化是否生效我这里采用Proxmox VE(PVE)。
一、 VMware Workstation
(1)正常不需要嵌套虚拟化的情况下,Win11,WIN2022,WIN2025的虚拟化组件部分(如:Hyper-V、安全的内核隔离、沙盒等) 与 VMware Workstation 17已经很好的兼容。Hyper-V也可以和VMware Workstation 17同时使用。
(2)但要使用嵌套虚拟化,则情况会有不同,VMware Workstation的嵌套虚拟化需要关闭Win11的虚拟化相关的功能组件。
首先我们先打开VMware虚拟机的嵌套虚拟化功能(虚拟化intel vt-x/ept or amd-v/rvi)尝试启动,大多数情况下会启动失败:

如果提示不支持虚拟化VT-x请测试如下操作
3)此时我们如果想要继续使用VMware来做测试,那么就应该关闭Win11系统自带的一些虚拟化相关的组件(包括:Hyper-V、虚拟机平台、虚拟机监控程序平台、沙盒、以及安全中心的内核隔离):



(4)关闭以上选项并分别重启完成后,我们再次尝试启动虚拟机,会发现VMware内的PVE已经可以启动,PVE内的测试虚拟机也可以正常启动,说明嵌套虚拟化生效。
二、 然而对于使用微软原生Hyper-V虚拟化软件来运行虚拟机的情况下,怎么对虚拟机开启嵌套虚拟化呢:
(1) 安装Hyper-V,并创建PVE虚拟机

2)启动PVE虚拟机并安装PVE系统,会报一个没有启用虚拟化的提示,这是因为默认情况下Hyper-V虚拟机没有启用嵌套虚拟化,但这不影响继续安装,我们可以继续安装系统完成。
3) 我们通过浏览器进入PVE的WEB管理后台,创建并试图启动一个虚拟机,会提示启动失败,因为我们还没有启动嵌套虚拟化
4) 关闭PVE虚拟机,然后PowerShell执行如下命令启用指定名称虚拟机的嵌套虚拟化:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
说明:以上<VMName>为虚拟机名
如本例为:Set-VMProcessor -VMName Win2025-PIIS -ExposeVirtualizationExtensions $true
如果要关闭嵌套虚拟化:
Set-VMProcessor -VMName Win2025-PIIS -ExposeVirtualizationExtensions $false
查看本机hyper-v中的虚拟机清单(执行PowerShell命令):
Get-VM
查看相关虚拟机是否开启嵌套:
Get-VMProcessor -VMName www.piis.cn | fl
上面www.piis.cn为虚拟机的名称,ExposeVirtualizationExtensions参数为True就是开启了嵌套,否则就是false状态
如果要停用相关虚拟机的嵌套就是:Set-VMProcessor -VMName www.piis.cn -ExposeVirtualizationExtensions $false
动态内存和运行时内存大小调整
当 Hyper-V 在虚拟机内运行时,必须关闭虚拟机以调整其内存。 这意味着,即使启用了动态内存,内存量将不会波动。 对于没有启用动态内存的虚拟机,在虚拟机开启情况下对调整内存量的任何尝试都将失败。
请注意,只启用嵌套虚拟化不会影响动态内存或者运行时内存大小调整。 仅当 Hyper-V 在 VM 中运行时会出现不兼容。
文章来源:
网络小编D
版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站立刻删除。