知方号

知方号

借助嵌套虚拟化在虚拟机中运行 Hyper

借助嵌套虚拟化在虚拟机中运行 Hyper-V

嵌套虚拟化是一项功能,使你可以在 Hyper-V 虚拟机 (VM) 内运行 Hyper-V。 这适用于在虚拟机中运行 Visual Studio 手机仿真器或测试通常需要多台主机的配置。

 备注

Azure 和本地都支持嵌套虚拟化。 但是,如果使用非 Microsoft 虚拟机监控程序(如 KVM),Microsoft 无法提供端到端支持。 请确保你的供应商支持此方案。 

先决条件

采用 VT-x 和 EPT 技术的 Intel 处理器

Hyper-V 主机必须是 Windows Server 2016/Windows 10 或更高版本

VM 配置版本为 8.0 或更高版本

AMD EPYC/Ryzen 处理器或更高版本

Hyper-V 主机必须是 Windows Server 2023/Windows 11 或更高版本

VM 配置版本 10.0 或更高版本

 备注

来宾可以是任何 Windows 支持的来宾操作系统。 较新的 Windows 操作系统可能支持“启蒙”,可提高性能。

配置嵌套虚拟化

创建虚拟机。 请参阅以上针对必需 OS 和 VM 版本的先决条件。

虚拟机处于关闭状态时,请在物理 Hyper-V 主机上运行以下命令。 这样可以实现虚拟机的嵌套虚拟化。

复制

Set-VMProcessor -VMName -ExposeVirtualizationExtensions $true

启动虚拟机。

在虚拟机中安装 Hyper-V,就像针对物理服务器一样。 有关安装 Hyper-V 的详细信息,请参阅安装 Hyper-V。

禁用嵌套虚拟化

可使用以下 PowerShell 命令禁用已停止虚拟机的嵌套虚拟化:

复制

Set-VMProcessor -VMName -ExposeVirtualizationExtensions $false

动态内存和运行时内存大小调整

当 Hyper-V 在虚拟机内运行时,必须关闭虚拟机以调整其内存。 这意味着,即使启用了动态内存,内存量将不会波动。 对于没有启用动态内存的虚拟机,在虚拟机开启情况下对调整内存量的任何尝试都将失败。

请注意,只启用嵌套虚拟化不会影响动态内存或者运行时内存大小调整。 仅当 Hyper-V 在 VM 中运行时会出现不兼容。

网络连接选项

以下两个选项适用于嵌套虚拟机网络:

MAC 地址欺骗

NAT 网络

MAC 地址欺骗

为了通过两台虚拟交换机路由网络数据包,必须在第一级 (L1) 虚拟交换机上启用 MAC 地址欺骗。 使用以下 PowerShell 命令完成此操作。

PowerShell复制

Get-VMNetworkAdapter -VMName | Set-VMNetworkAdapter -MacAddressSpoofing On

网络地址转换 (NAT)

第二个选项依赖于网络地址转换 (NAT)。 此方法非常适合于无法使用 MAC 地址欺骗的情况,例如在公有云环境中。

首先,必须在主机虚拟机(“中间”虚拟机)中创建一个虚拟 NAT 交换机。 请注意,IP 地址仅作举例之用,会因环境不同有所差异:

PowerShell复制

New-VMSwitch -Name VmNAT -SwitchType InternalNew-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”

接下来,将 IP 地址分配给网络适配器:

PowerShell复制

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

每个嵌套的虚拟机必须分配有一个 IP 地址和网关。 请注意,网关 IP 必须指向上一步中的 NAT 适配器。 您可能想要分配 DNS 服务器:

PowerShell复制

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24Netsh interface ip add dnsserver “vEthernet (VmNat)” address=

嵌套虚拟化的工作方式

现代处理器包括可使虚拟化更快且更安全的硬件功能。 Hyper-V 依赖这些处理器扩展来运行虚拟机(例如 Intel VT-x 和 AMD-V)。 通常,Hyper-V 启动后,它会阻止其他软件使用这些处理器功能。 这会阻止来宾虚拟机运行 Hyper-V。

嵌套式虚拟化会向来宾虚拟机提供此硬件支持。

下图显示了没有嵌套的 Hyper-V。 Hyper-V 虚拟机监控程序完全控制硬件虚拟化功能(橙色箭头),并且不会向来宾操作系统公开它们。

相反,下图显示了已启用嵌套虚拟化的 Hyper-V。 在此情况下,Hyper-V 会向其虚拟机公开硬件虚拟化扩展。 启用嵌套后,来宾虚拟机可以安装其自己的虚拟机监控程序并运行其自己的来宾 VM。

第三方虚拟化应用

除 Hyper-V 外的虚拟化应用程序在 Hyper-V 虚拟机中不受支持,可能会失败。 这包括需要硬件虚拟化扩展的任何软件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。