什么是嵌套虚拟化?
嵌套虚拟化是可以让你在 Hyper-V 虚拟机 (VM) 中运行 Hyper-V 的一项功能。 多年来,硬件得到了改进,嵌套虚拟化的用例也得到了扩展。 例如,嵌套虚拟化可用于:
- 在嵌套 VM 中运行应用程序或仿真器
- 在 VM 上测试软件发行版
- 减少训练环境的部署时间
- 对容器使用 Hyper-V 隔离
现代处理器包括可使虚拟化更快且更安全的硬件功能。 Hyper-V 依赖这些处理器扩展来运行虚拟机(例如 Intel VT-x 和 AMD-V)。 嵌套式虚拟化会向来宾虚拟机提供此硬件支持。
下图显示了没有嵌套的 Hyper-V。 Hyper-V 虚拟机监控程序完全控制硬件虚拟化功能(橙色箭头),并且不会向来宾操作系统公开这些功能。
相反,下图显示了已启用嵌套虚拟化的 Hyper-V。 在此情况下,Hyper-V 会向其虚拟机公开硬件虚拟化扩展。 启用嵌套后,来宾虚拟机可以安装其自己的虚拟机监控程序并运行其自己的来宾 VM。
动态内存和运行时内存大小调整
当 Hyper-V 在虚拟机内运行时,必须关闭虚拟机以调整其内存。 这意味着,即使启用了动态内存,内存量也不会波动。 只启用嵌套虚拟化不会影响动态内存或者运行时内存大小调整。
对于未启用动态内存的虚拟机,在运行时尝试调整内存量会失败。 仅当 Hyper-V 在 VM 中运行时会出现不兼容。
第三方虚拟化应用
Hyper-V 虚拟机中不支持除 Hyper-V 之外的虚拟化应用程序,并且这些应用程序可能会失败。 虚拟化应用程序包括需要硬件虚拟化扩展的任何软件。
支持的方案
在以下方案中,Azure 和本地都支持在生产环境中使用嵌套的 Hyper-V VM。 我们还建议确保你的服务和应用程序也受支持。
嵌套虚拟化不适用于 Windows Server 故障转移群集和性能敏感型应用程序。 建议全面评估服务和应用程序。
Hyper-V VM 上的 Hyper-V VM
运行嵌套在 Hyper-V VM 上的 Hyper-V VM 非常适合测试实验室和评估环境。 特别是在可轻松修改配置,并且可使用保存的状态来还原特定配置的情况下。 测试实验室通常不需要与生产环境相同的服务级别协议 (SLA)。
如果生产环境运行的 Hyper-V VM 正在 Hyper-V VM 上运行,那么这些生产环境受到支持。 不过,建议确保你的服务和应用程序也受支持。 如果在生产环境中使用嵌套的 Hyper-V VM,建议全面评估服务或应用程序是否提供预期行为。
若要详细了解如何在 Azure 上设置嵌套虚拟化,请查看技术社区博客:How to Setup Nested Virtualization for Azure VM/VHD(如何为 Azure VM/VHD 设置嵌套虚拟化)。
Hyper-V 虚拟化上的第三方虚拟化
虽然第三方虚拟化可能能够在 Hyper-V 上运行,但 Microsoft 不对这种方案进行测试。 不支持 Hyper-V 虚拟化上的第三方虚拟化,请确保你的虚拟机监控程序供应商支持此方案。
第三方虚拟化上的 Hyper-V 虚拟化
虽然 Hyper-V 虚拟化可能能够在第三方虚拟化上运行,但 Microsoft 不对此方案进行测试。 不支持第三方虚拟化上的 Hyper-V 虚拟化,请确保你的虚拟机监控程序供应商支持此方案。
嵌套在 Hyper-V VM 上的 Azure Stack HCI
Azure Stack HCI 经过设计和测试,可在经过验证的物理硬件上运行。 Azure Stack HCI 可在虚拟机中嵌套运行来进行评估,但不支持嵌套配置中的生产环境。
若要详细了解嵌套在 Hyper-V VM 上的 Azure Stack HCI,请参阅 Azure Stack HCI 中的嵌套虚拟化。
在 Hyper-V 上嵌套运行的 Hyper-V 隔离容器
Microsoft 为容器提供了 Hyper-V 隔离。 此隔离模式在主机和容器版本之间提供增强的安全性和更广泛的兼容性。 借助 Hyper-V 隔离,多个容器实例可在主机上并发运行。 每个容器在经过高度优化的虚拟机内部运行,并有效地获得它自己的内核。 由于 Hyper-V 隔离容器通过其自身与容器主机之间的虚拟机监控程序层来提供隔离,因此当容器主机是基于 Hyper-V 的虚拟机时,会产生性能开销。 在容器启动时间、存储、网络和 CPU 操作方面会产生相关的性能开销。
Hyper-V 隔离容器在 Hyper-V VM 中运行时,是以嵌套方式运行的。 使用 Hyper-V VM 可实现很多有用的方案,但着也会增加延迟,因为有两个级别的虚拟机监控程序在物理主机上运行。
支持运行嵌套在 Hyper-V 上的 Hyper-V 隔离容器。 生产环境中支持一级嵌套虚拟化,这允许对隔离的容器进行部署。
若要详细了解嵌套 Hyper-V 容器,请参阅 Windows Server 容器的性能优化。
在 Hyper-V 上嵌套运行的 Hyper-V VM 中运行 WSL2
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 操作系统的一项功能,除了使用 Linux 命令行工具和 GUI 应用,还可通过该功能直接在 Windows 上运行 Linux 文件系统。
支持在 Hyper-V 上嵌套运行的 Hyper-V VM 中运行 WSL2。
若要详细了解如何启用 WSL 2 以在 VM 中运行,请参阅有关适用于 Linux 的 Windows 子系统的常见问题解答。