嵌套虚拟化简介


本文档介绍了 Compute Engine 对嵌套虚拟化的支持。通过嵌套虚拟化,您可以在其他虚拟机内运行虚拟机 (VM) 实例,从而创建自己的虚拟化环境。为了支持嵌套虚拟化,Compute Engine 会向虚拟机添加 Intel VT-x 指令,因此在创建虚拟机时,该虚拟机上已有的 Hypervisor 可以运行其他虚拟机。

Compute Engine 虚拟机在具有 Google 安全强化型、基于 KVM 的 Hypervisor 的物理主机上运行。使用嵌套虚拟化时,物理主机及其 Hypervisor 处于 0 级 (L0) 环境。L0 环境可以托管多个 1 级 (L1) 虚拟机。在每个 L1 虚拟机上,都有另一个 Hypervisor,用于安装 2 级 (L2) 虚拟机。图 1 展示了物理主机、L1 虚拟机和 L2 虚拟机之间的关系:

图 1. 具有 L1 虚拟机和 L2 虚拟机的 L0 物理主机。

使用场景

您可以考虑使用嵌套虚拟化的场景包括:

  • 您的虚拟机无法在 Compute Engine 上运行:例如,您可能有一个故障切换解决方案,用于在故障切换到 Compute Engine 虚拟机的虚拟机上运行的本地工作负载。运行嵌套虚拟化可以为您节省将虚拟机移植到 Compute Engine 所使用的时间。

  • 您有一个软件验证框架,用于在大量不同版本的操作系统上测试和验证软件包的新版本:使用嵌套虚拟化可以避免转换和管理 Compute Engine 映像库。

性能考虑因素

即使利用硬件辅助的嵌套虚拟化,嵌套虚拟机的性能也可能会下降 10% 或更高(对于受 CPU 限制的工作负载),并且可能会下降超过 10%(对于受输入/输出限制的工作负载)。

限制

L1 虚拟机具有以下限制:

  • L1 虚拟机唯一支持的 Hypervisor 是 Linux KVM;Microsoft Hyper-V 不受支持。
  • 您不能使用由 AMD 和 Arm 处理器提供支持的虚拟机。对于由 Intel 处理器提供支持的虚拟机,您不能使用任何内存优化、E2 通用或 A3 加速器优化机器类型

    如需了解每个可用区支持的处理器,请参阅可用区域和可用区

L2 虚拟机具有以下限制:

使用嵌套虚拟化

如需使用嵌套虚拟化,请完成以下步骤:

  1. 检查嵌套虚拟化限制条件是否已停用

  2. 创建启用了嵌套虚拟化的 L1 虚拟机

  3. 创建嵌套 L2 虚拟机

如果您在创建启用了嵌套虚拟化的虚拟机或创建嵌套虚拟机时遇到任何问题,请参阅排查嵌套虚拟化的问题