通过嵌套虚拟化,您可以在其他虚拟机内运行虚拟机 (VM) 实例,从而创建自己的虚拟化环境。为了支持嵌套虚拟化,Compute Engine 会向虚拟机添加 Intel VT-x 指令,因此在创建虚拟机时,该虚拟机上已有的 Hypervisor 可以运行其他虚拟机。
使用嵌套虚拟化时,物理主机及其 Hypervisor 处于 0 级 (L0) 环境。L0 环境可以托管多个 1 级 (L1) 虚拟机。在每个 L1 虚拟机上,都有另一个 Hypervisor,用于安装 2 级 (L2) 虚拟机。图 1 展示了物理主机、L1 虚拟机和 L2 虚拟机之间的关系:
image.png
图 1. 具有 L1 虚拟机和 L2 虚拟机的 L0 物理主机。
相关文档:https://cloud.google.com/compute/docs/instances/nested-virtualization/overview?hl=zh-cn

使用场景

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

  • 您的虚拟机无法在 Compute Engine 上运行:例如,您可能有一个故障转移解决方案,用于在故障转移到 Compute Engine 虚拟机的虚拟机上运行的本地工作负载。运行嵌套虚拟化可以为您节省将虚拟机移植到 Compute Engine 所使用的时间。
  • 您有一个软件验证框架,用于在大量不同版本的操作系统上测试和验证软件包的新版本:使用嵌套虚拟化可以避免转换和管理 Compute Engine 映像库。

    性能考虑因素

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