必须在bios/uefi、虚拟机管理程序(vmware/hyper-v)及客户机中逐层启用嵌套虚拟化:先开启cpu硬件虚拟化,再配置vmware的vhv.enable与hyper-v的exposevirtualizationextensions,最后在客户机验证vmx/svm标志并合理分配资源。

如果您希望在 VMware 或 Hyper-V 中运行嵌套虚拟化(即在虚拟机内部再运行另一台虚拟机),必须先在宿主机 BIOS/UEFI 和虚拟机管理程序中启用对应支持。以下是具体操作步骤:
一、确认 CPU 支持并开启 BIOS/UEFI 中的虚拟化选项
嵌套虚拟化依赖于物理 CPU 的硬件虚拟化能力(Intel VT-x 或 AMD-V),且需在固件层启用,否则上层软件无法调用该功能。
1、重启宿主机,在开机自检阶段按 Del、F2、F10 或 F12 进入 BIOS/UEFI 设置界面(具体按键因主板品牌而异)。
2、导航至 Advanced → CPU Configuration(Intel 平台)或 Advanced → SVM Mode(AMD 平台)。
3、将 Intel Virtualization Technology 或 SVM Mode 设置为 Enabled。
4、保存设置并退出,系统自动重启。
二、在 VMware Workstation/ESXi 中启用嵌套虚拟化
VMware 需通过修改虚拟机配置文件(.vmx)或图形界面启用嵌套虚拟化支持,否则客户机无法识别 VT-x/AMD-V 指令。
1、关闭目标虚拟机(确保其处于关机状态,不可仅挂起)。
2、右键虚拟机 → Settings → Processors → 勾选 Virtualize Intel VT-x/EPT or AMD-V/RVI。
3、若使用 VMware Workstation Pro 16+ 或 ESXi 7.0+,还需手动编辑 .vmx 文件,在末尾添加两行:
vhv.enable = "TRUE"
hypervisor.cpuid.v0 = "FALSE"
4、重新启动该虚拟机。
三、在 Hyper-V 主机上启用嵌套虚拟化
Hyper-V 对嵌套虚拟化的支持需通过 PowerShell 启用,且仅适用于第 2 代虚拟机,同时要求宿主机运行 Windows 10 1803+ 或 Windows Server 2016+。
1、以管理员身份打开 PowerShell。
2、执行命令查询目标虚拟机是否为第 2 代:
Get-VM "VMName" | Select-Object Generation
3、若为第 2 代,运行以下命令启用嵌套虚拟化:
Set-VM "VMName" -EnableEnhancedSessionMode $false
Set-VMProcessor "VMName" -ExposeVirtualizationExtensions $true
4、确保该虚拟机未启用动态内存与实时迁移功能(二者与嵌套虚拟化互斥)。
四、在客户机操作系统中验证嵌套虚拟化是否生效
启用后需在虚拟机内部确认 CPU 暴露了虚拟化扩展,否则内层虚拟机将无法启动或报错“VT-x is not available”。
1、在 Windows 客户机中,以管理员身份运行 PowerShell,输入:
systeminfo | find "Hyper-V Requirements"
2、在 Linux 客户机中,执行:
grep -E "(vmx|svm)" /proc/cpuinfo
3、若输出包含 vmx(Intel)或 svm(AMD),说明嵌套虚拟化已成功暴露给客户机。
五、在客户机中安装内层虚拟机的注意事项
即使嵌套虚拟化已启用,内层虚拟机仍受限于资源分配策略和兼容性约束,需规避常见冲突配置。
1、避免在客户机中使用与宿主机相同的虚拟化平台(例如宿主机为 Hyper-V,客户机再安装 Hyper-V 角色——可能触发驱动签名冲突)。
2、在客户机中部署内层虚拟机时,选择与宿主机不同的网络模式:宿主机使用外部交换机,客户机应改用内部或专用交换机。
3、为内层虚拟机分配的 vCPU 数量不得超过客户机所获 vCPU 总数的 50%,防止调度竞争导致性能骤降或蓝屏。










