嵌套虚拟化简介


本文档介绍了 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 虚拟机具有以下限制:

  • 您必须运行基于 Linux 的操作系统;您不能使用 Windows Server 映像。

  • 您不能使用 E2 和 N2D 机器类型

  • 您必须使用 Intel Haswell 或更高版本的处理器;AMD 处理器不受支持。如果某个可用区的默认处理器是 Sandy BridgeIvy Bridge,请将为该可用区中的虚拟机选择的最低要求 CPU 更改为 Intel Haswell 或更高版本。如需了解每个可用区支持的处理器,请参阅可用区域和可用区

L2 虚拟机具有以下限制:

  • 您必须使用可以运行 QEMU 的操作系统。
  • 对于许可操作系统,您必须自带许可

经过测试的操作系统

下表显示了 Google 在其中运行基本启动和集成测试的 L1 和 L2 操作系统的组合。如果您在运行该表中未显示的虚拟机组合时遇到问题,请在联系 Cloud Customer Care 之前,先使用一个经过测试的操作系统组合重现该问题。对于 L2 虚拟机操作系统,Google 不提供支持,您必须自带许可

L1 虚拟机操作系统 L2 虚拟机操作系统
Debian 9,内核版本 4.9 CentOS 6.5,内核版本 2.6
Debian 9,内核版本 4.9
RHEL 5.11,内核版本 2.6
SLES 12 SP3,内核版本 4.4
Ubuntu 16.04 LTS,内核版本 4.15
Windows Server 2016 Datacenter
SLES 12 SP3,内核版本 4.4 SLES 12 SP3,内核版本 4.4
Ubuntu 16.04 LTS,内核版本 4.15 Ubuntu 16.04 LTS,内核版本 4.15

使用嵌套虚拟化

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

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

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

  3. 创建嵌套 L2 虚拟机

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