你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 实验室服务中启用嵌套虚拟化
重要
Azure 实验室服务将于 2027 年 6 月 28 日停用。 有关详细信息,请参阅停用指南。
嵌套虚拟化支持在 Azure 实验室服务中创建包含多虚拟机 (VM) 环境的实验室。 可以为多 VM 环境准备实验室模板。 用户无需在其实验室 VM 上启用嵌套虚拟化或安装嵌套 VM。 发布实验室时,每个实验室用户都会有一个已包含嵌套 VM 的实验室 VM。
先决条件
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
- 有权管理实验室的 Azure 帐户,例如实验室创建者、所有者、参与者或实验室服务参与者等 Azure RBAC 角色。 详细了解 Azure 实验室服务内置角色和工作范围。
- Azure 实验室计划。 如果还没有实验室计划,请按照快速入门:设置资源以创建实验室中的步骤操作。
有关嵌套虚拟化的概念、注意事项和建议,请参阅 Azure 实验室服务中的嵌套虚拟化。
注意
除 Hyper-V 之外的虚拟化应用程序不支持嵌套虚拟化。 这包括需要硬件虚拟化扩展的任何软件。
重要
创建实验室时,选择“大型(嵌套虚拟化)”或“中等(嵌套虚拟化)”作为虚拟机大小。 否则,嵌套虚拟化将不起作用。
启用嵌套虚拟化
若要在模板 VM 上启用嵌套虚拟化,请先使用远程桌面 (RDP) 客户端连接到 VM。 然后,可以通过运行 PowerShell 脚本或使用 Windows 工具来应用配置更改。
重要
建议在 Windows 11 上使用嵌套虚拟化。 可以利用在 Windows 客户端 OS 上安装 Hyper-V 时创建的“默认交换机”。 需要对网络设置进行额外控制时,应使用 Windows Server 操作系统上的嵌套虚拟化。
重要
Azure 实验室服务将于 2027 年 6 月 28 日停用。 有关详细信息,请参阅停用指南。
可以使用 PowerShell 脚本在 Azure 实验室服务中的模板 VM 上设置嵌套虚拟化。 以下步骤将引导你了解如何使用实验室服务 Hyper-V 脚本。 该脚本适用于 Windows 11。
按照以下步骤连接到模板计算机并对其进行更新。
以管理员身份启动 PowerShell。
你可能需要更改执行策略才能成功运行该脚本。 运行以下命令:
Set-ExecutionPolicy bypass -force
下载并运行脚本以启用 Hyper-V 功能和工具。
Invoke-WebRequest 'https://aka.ms/azlabs/scripts/hyperV-powershell' -Outfile SetupForNestedVirtualization.ps1 .\SetupForNestedVirtualization.ps1
注意
该脚本可能需要重启 VM。 如果是这样,请从 Azure 实验室服务网站停止再启动模板 VM,然后重新运行脚本,直到在输出中出现“脚本已完成”。
请不要忘记重置执行策略。
Set-ExecutionPolicy default -force
模板 VM 现已配置为与嵌套虚拟化一起使用。 你可以在其中创建 VM。 创建新的 Hyper-V VM 时请使用脚本指定的开关。
连接到另一个实验室 VM 中的嵌套 VM
需要进行额外的配置才能从一个实验室 VM 上的嵌套 VM 连接到另一实验室 VM 中托管的嵌套 VM。 使用 Add-NetNatStaticMapping PowerShell cmdlet 将静态映射添加到 NAT 实例。
注意
不能使用 ping
命令测试嵌套 VM 之间的连接。
注意
静态映射仅在使用专用 IP 地址时才起作用。 实验室用户从其进行连接的 VM 必须是实验室 VM,或者,如果使用高级网络,该 VM 必须位于同一网络上。
示例方案
考虑以下示例实验室设置:
实验室 VM 1(Windows Server 2022,IP 10.0.0.8)
- 嵌套 VM 1-1(Ubuntu 20.04,IP 192.168.0.102,允许 SSH)
- 嵌套 VM 1-2(Windows 11,IP 192.168.0.103,启用并允许远程桌面)
实验室 VM 2(Windows Server 2022,IP 10.0.0.9)
- 嵌套 VM 2-1(Ubuntu 20.04,IP 192.168.0.102,允许 SSH)
- 嵌套 VM 2-2(Windows 11,IP 192.168.0.103,启用并允许远程桌面)
启用从实验室 VM 2 到嵌套实验室 VM 1-1 的 SSH 连接:
在实验室 VM 1 上,添加静态映射:
Add-NetNatStaticMapping -NatName "LabServicesNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.102 -InternalPort 22 -ExternalPort 23
在实验室 VM 2 上,使用 SSH 进行连接:
ssh user1@10.0.0.8 -p 23
启用从实验室 VM 2 或其嵌套 VM 到嵌套实验室 VM 1-2 的 RDP 连接:
在实验室 VM 1 上,添加静态映射。
Add-NetNatStaticMapping -NatName "LabServicesNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.103 -InternalPort 3389 -ExternalPort 3390
在实验室 VM 2 或其嵌套 VM 上,使用 RDP 连接到
10.0.0.8:3390
。重要
在用户名前面包含
~\
。 例如,~\Administrator
或~\user1
。
故障排除
这些建议可能会解决一些常见问题。
Linux VM 仅显示黑屏
执行以下步骤以验证嵌套 VM 配置:
检查为嵌套 VM 使用了哪个 Hyper-V 虚拟机代系。 某些 Linux 发行版无法与第一代 Hyper-V VM 配合使用。
详细了解 Hyper-V 中支持的来宾操作系统。
Hyper-V 无法启动并出现错误 The virtual machine is using processor-specific xsave features not supported
当实验室用户将 Hyper-V VM 保持为已保存状态时,可能会发生此错误。 可以在 Hyper-V 管理器中右键单击该 VM,然后选择“删除已保存状态”。
注意
删除保存的状态意味着任何未保存的工作将丢失,但已保存到磁盘的任何工作保持不变。
当 Hyper-V VM 关闭且 VHDX 文件损坏时,可能会发生此错误。 如果实验室用户创建了 VDHX 文件的备份或保存了快照,则可以从该备份点还原 VM。
建议 Hyper-V VM 的自动关闭操作设置为关闭。
Hyper-V 速度太慢
在 Hyper-V 管理器中增加分配给 Hyper-V VM 的 vCPU 数量和内存量。 vCPU 总数不能超过主机 VM(实验室 VM )的核心数。 如果使用可变内存(默认选项),请增加分配给 VM 的最小内存量。 分配的最大内存量(如果使用可变内存)可能会超过主机 VM 的内存量。 如果仅需要在一个 Hyper-V VM 上完成资源密集型操作,此方法可以提供更大的灵活性。
如果在实验室中使用中型(嵌套虚拟化)VM 大小,请考虑使用大型(嵌套虚拟化)VM 大小,以便为每个实验室 VM 提供更多计算资源。
Internet 连接不适用于嵌套 VM
验证是否已按照前述步骤启用嵌套虚拟化。 考虑使用 PowerShell 脚本选项。
如果使用的是 Windows Server,请检查主机 VM(实验室 VM)上是否安装了 DHCP 角色。
不支持将实验室 VM 作为 DHCP 服务器运行。 请参阅能否在虚拟网络中部署 DHCP 服务器?。 更改实验室 VM 的设置可能会导致其他实验室 VM 出现问题。
检查 Hyper-V VM 的网络适配器设置。
将 DNS 服务器和 DHCP 服务器的 IP 地址设置为 168.63.129.16。
如果手动设置来宾 VM IPv4 地址,请验证其是否位于连接到 Hyper-V 交换机的 NAT 网络范围内。
-
Get-VMNetworkAdapter * | Set-VMNetworkAdapter -RouterGuard On -DhcpGuard On
注意
不能使用 ping
命令从 Hyper-V VM 到主机 VM。 若要测试 Internet 连接,请启动 Web 浏览器并验证网页是否正确加载。
无法启动 Hyper-V VM
创建实验室时,可以选择创建非管理员用户。 为了能够启动或停止 Hyper-V VM,必须将此类用户添加到“Hyper-V 管理员”组。 有关 Hyper-V 和非管理员用户的详细信息,请参阅非管理员用户。
相关内容
在模板 VM 上配置嵌套虚拟化后,即可使用 Hyper-V 创建嵌套虚拟机。 请参阅 Microsoft 评估中心以查看可用的操作系统和软件。