嵌套虚拟化:实际应用案例

  • 嵌套虚拟化允许虚拟机管理程序和虚拟机在其他虚拟机内部运行,依赖于 Intel VT-x 和 AMD-V 等 CPU 扩展。
  • 它的主要实际用途是培训、测试和开发实验室、复杂的演示以及在 VMware、Azure Lab Services 和 AWS EC2 上的混合环境。
  • 这需要正确配置网络、安全、存储和许可证,并假设每个虚拟化层都会带来性能损失。
  • 如果规划得当,它可以降低硬件成本,简化高级环境的创建,同时又不牺牲与生产环境非常接近的行为。

嵌套虚拟化实际应用案例

La 嵌套虚拟化 它已从实验室的稀有技术发展成为在公有云中搭建复杂测试、培训、开发环境乃至特定场景的关键组件。能够在虚拟机内运行虚拟机,开启了无限可能,从在笔记本电脑上搭建小型数据中心,到在 Azure 中启动完整的培训基地,再到在 AWS 上测试新版本的虚拟机管理程序,而无需花费巨资。

本文将详细解释什么是嵌套虚拟化以及它是如何实现的。 VMware、Hyper-V(Azure)和 AWS EC2本文涵盖了其要求、主要实际应用场景、性能影响、网络连接、许可协议和最佳实践。目标是让您在阅读完本文后,全面而实用地了解何时适合使用该技术、如何进行设置以及可能遇到的限制。

什么是嵌套虚拟化?

当我们谈到嵌套虚拟化时,我们指的是以下能力: 将虚拟机管理程序作为虚拟机运行 在运行于物理硬件上的另一个虚拟机管理程序中,反过来,又可以在该客户虚拟机管理程序内创建虚拟机。也就是说,在一个虚拟机中嵌套另一个虚拟机,从而实现多层虚拟化。

在此背景下,需要明确几个术语以避免混淆:直接运行在物理服务器上的虚拟机管理程序是…… 主机管理程序而我们安装在虚拟机内部的虚拟机管理程序通常被称为 客户虚拟机管理程序直接在物理主机上运行的虚拟机称为外部客户机,而在该客户机管理程序内部运行的虚拟机称为内部客户机。 内部客户机或嵌套虚拟机.

从技术角度来看,客户虚拟机管理程序认为它正在与真实的物理硬件通信,但实际上它是在与……对抗。 虚拟化硬件 由主机虚拟机管理程序提供。如果资源充足,甚至可以链接更多层(第 4 层、第 5 层等),但性能和管理会变得相当复杂,实际上很少超过两三层。

硬件辅助虚拟化和基本要求

为了使嵌套虚拟化能够较好地运行,以下几点至关重要: 硬件辅助虚拟化 (Intel VT-x、AMD-V 或同等技术)。这些扩展使虚拟机管理程序能够比使用二进制转换或半虚拟化等旧技术更高效地处理上下文转换和指令敏感进程。

实际上,这意味着您必须确保物理服务器的 CPU 支持这些扩展,并且它们 已在 BIOS/UEFI 中启用此外,主机虚拟机管理程序必须能够将这些虚拟化扩展公开给客户操作系统,以便作为虚拟机运行的虚拟机管理程序可以创建 64 位虚拟机并利用硬件加速。

VMware 环境中的另一个重要要求是级别 虚拟机的虚拟硬件 这将托管客户虚拟机管理程序。要启用嵌套虚拟化,虚拟机的硬件版本至少需要 9。此后,Workstation、Player、Fusion 和 ESXi 的较新版本都明确支持在虚拟机内虚拟化 CPU 扩展。

虚拟机管理程序和兼容性

嵌套虚拟化在 Type 1(裸机)和 Type 2 虚拟机管理程序中均可用。 2 型虚拟机管理程序在 VMware 生态系统中,ESXi 是经典的 1 型虚拟机管理程序,而 Workstation、Player 和 Fusion 是安装在主机操作系统之上的 2 型虚拟机管理程序。

这些产品可以运行另一个 ESXi 虚拟机,甚至可以运行第三方虚拟机管理程序,例如: 微软 Hyper-V 或 VirtualBox前提是宿主机管理程序支持内部硬件虚拟化 (HV)。一般来说,技术上支持的组合包括:

  • ESXi 作为虚拟机 在 VMware Workstation、Player 或 Fusion 中。
  • ESXi 作为 ESXi 中的虚拟机 (环境完全嵌套在 VMware 堆栈内部)。
  • ESXi 作为第三方虚拟机管理程序上的虚拟机 (例如,在 Hyper-V 上)。
  • 非VMware虚拟机管理程序 例如 ESXi、Workstation、Player 或 Fusion 上的虚拟机,只要它们能够利用硬件虚拟化即可。

在 Hyper-V 中,嵌套虚拟化主要用于以下场景: Azure 实验室服务在实验室虚拟机中启用 Hyper-V 可以创建嵌套虚拟机。而在 AWS 上,对嵌套虚拟化的官方支持也即将到来。 EC2 标准 (不仅仅是裸机实例)对于许多测试和开发环境来说都是一次重大飞跃。

VMware 的官方支持和限制

虽然嵌套虚拟化在 VMware 中实际运行良好,但需要考虑以下方面: 官方支持VMware 不认为嵌套虚拟机是生产环境支持的配置,这意味着如果您提交支持案例的问题与嵌套环境有关,他们很可能不会提供支持。

VMware 生态系统中的主要例外是使用 vSAN 见证设备在 vSAN 扩展集群架构中,嵌套的 ESXi 虚拟机充当见证服务器。VMware 明确认可并记录了这种用法,因为它构成了产品官方架构的一部分。

还有另一种相关的情况: 微软基于虚拟化的安全(VBS) 在 Windows 虚拟机中。自 vSphere 6.7 起,VMware 支持在 Windows 虚拟机中启用 VBS,这实际上意味着在虚拟机内运行 Hyper-V 和某些虚拟化隔离功能。此方案已有详细文档说明,如果您满足版本和配置要求,即可获得支持。

嵌套环境中的许可

当以虚拟机形式安装 ESXi、vCenter 或其他 vSphere 组件来设置嵌套环境时,务必记住以下几点: 许可方式完全相同 相比之下,它们安装在物理服务器上则成本更高。每个 ESXi 实例,即使是虚拟实例,也需要单独的许可证;或者,也可以在实验室环境中使用免费版或试用版。

无论您是在 VMware 之上部署嵌套的 ESXi,还是在第三方虚拟机管理程序上以虚拟机形式运行它们,此方法都适用。在这些实验室中,优化 CPU 许可证的常用方法是调整 CPU 许可证的数量。 每个插槽的核心数 分配给 ESXi VM(cpuid.coresPerSocket 参数),前提是许可条件允许并且您遵守合同版本的限制。

VMware 中嵌套虚拟化的实际应用案例

嵌套虚拟化实际应用案例

嵌套虚拟化的最大吸引力在于它允许你挂载 高度复杂的环境 在单个物理主机上即可运行,无需部署服务器机架、存储阵列或专用交换机。VMware 的一些最常见用途尤为明显。

培训和自学实验室

或许最典型的例子是…… 训练实验室您可以在单个物理主机上部署多个 ESXi 虚拟机、一个 vCenter Server 和一个用于共享存储(虚拟 NAS、vSAN 或类似)的虚拟机,并几乎完全复制生产 vSphere 环境:集群、HA、DRS、存储 DRS、vMotion 等。

这种方法非常适合管理员进行设置。 家庭实验室 无论是在家用电脑或服务器上,还是用于公司内部培训,都可以使用。所有程序都嵌套运行,这大大简化了测试:如果学员破坏了虚拟 ESXi 主机或嵌套的虚拟机,只需从备份中恢复外部 ESXi 虚拟机,即可恢复正常。

为 vSphere 开发解决方案

专门为 VMware 开发应用程序或集成(插件、备份工具、自动化、编排等)的团队通常需要可重复使用的环境,在这些环境中, 提出特定版本 ESXi、vCenter 以及不同的网络和存储配置。

得益于嵌套虚拟化技术,您可以快速部署多个测试环境,并可组合不同的版本、集群和策略,而无需大量物理服务器或昂贵的存储阵列。您只需在同一主机虚拟机管理程序上启动环境、运行测试,然后根据需要销毁或克隆环境即可。

测试、更新和演示

另一个非常强大的用途是…… 测试新版本的虚拟机管理程序 或者架构变更。在升级物理生产主机上的 ESXi 或引入新的存储解决方案之前,许多管理员会设置嵌套环境,模拟升级,并验证一切是否按预期运行。

同样,销售和售前团队经常使用嵌套的 vSphere 环境来执行以下操作: 让我们生活吧 对于客户而言:他们可以在一台物理实验室机器甚至一台功能强大的笔记本电脑上设置多个 ESXi 主机、一个 vCenter、一个虚拟存储服务器和一些虚拟机,并且可以演示 vMotion、HA、DRS 或 SRM 等功能,而无需依赖完整的机房。

混合环境和公有云

嵌套虚拟化也被用于允许托管服务提供商托管 VMware on public cloud 或者在异构平台上。一个实际例子是在公有云主机上部署虚拟 ESXi,并将客户的虚拟机托管在该平台上,同时保留他们的工具和流程。

此外,还有这样做的可能性 嵌套环境备份 在这些混合场景中,它可以通过多种方式(备份包含客户虚拟机管理程序的虚拟机或单独备份嵌套虚拟机)提供很大的数据保护灵活性。

嵌套虚拟机的性能

就性能而言,我们需要实事求是:每增加一层虚拟化都会引入额外的开销。在 VMware 中,每个运行中的虚拟机都对应着一个额外的开销。 在 ESXi 主机上进行进程 这会消耗内存和 CPU 资源。如果在其中一个虚拟机中,你又运行着一个包含多个嵌套虚拟机的 ESXi 主机,那么实际上就是在相同的物理核心上累积多层进程、上下文切换和调度操作。

实际上,嵌套虚拟机通常比普通虚拟机慢。影响程度取决于多种因素,例如物理处理器的性能、可用​​内存量、存储类型,以及最重要的嵌套层级和并发虚拟机的数量。对于轻量级的实验室工作负载,这完全可以接受,但对于…… 要求生产 这通常不是最佳选择。

专门用于嵌套 ESXi 的 VMware 工具

在虚拟机内部安装 ESXi 时,同样重要的是要有以下条件: VMware Tools 对于虚拟化的 ESXi 系统而言,它是一组驱动程序和服务,使主机管理程序能够更好地与客户虚拟机通信并改进其管理。

对于嵌套的 ESXi,VMware Tools 提供了一些功能,例如从 vSphere Client 显示虚拟 ESXi 的 IP 地址和主机名,以及以下功能: 有序关机或重启 通过管理控制台对嵌套的 ESXi 进行控制,并在其电源状态改变时执行脚本,此外还支持通过客户机操作 API 在虚拟机内进行操作。

在旧版本的 ESXi 5.x 中,这些工具需要使用 VIB 包手动安装。从 vSphere 6.0 开始,所需的工具已包含在内。 集成到 ESXi 中因此,当您以标准方式在虚拟机上安装 ESXi 时,VMware Tools 会直接显示为存在并正在运行,从而大大简化日常管理。

VMware 嵌套环境中的网络和安全策略

网络平面是搭建嵌套式 ESXi 环境最具挑战性的方面之一。默认情况下,ESXi 虚拟交换机的设计并未考虑到这一点。 虚拟机内的虚拟机管理程序因此,需要调整某些安全策略,以便嵌套虚拟机能够与外部世界正确通信。

在将托管嵌套虚拟机管理程序的物理 ESXi 主机上,必须通过启用以下功能来修改 vSwitch(或相应的端口组): 混杂模式这允许更改 MAC 地址,并接受源 MAC 地址伪造的帧(伪造传输)。如果这些参数保留默认值(拒绝),虚拟交换机将丢弃来自嵌套虚拟机的流量,因为有效 MAC 地址与客户机 ESXi 虚拟网卡的 MAC 地址不匹配。

滥交行为及其影响

混杂模式是一种安全策略,它会导致网络接口接收混杂信号。 所有L2图 流经虚拟交换机的流量,不仅仅是发往其自身 MAC 地址的流量。它通常用于网络监控、流量分析,在本例中,还用于让嵌套虚拟机管理程序查看其内部虚拟机的流量。

在虚拟交换机或端口组上启用混杂模式,会使其行为更像一个集线器:所有流量都会转发到该接口。这使得 ESXi 虚拟机更容易学习和管理嵌套虚拟机的 MAC 地址,但作为交换,也会带来一些问题。 降低网络性能如果负载非常高,流量很大,这一点就尤其明显。

MAC地址变更和伪造传输

默认情况下,ESXi 中的标准虚拟交换机不允许虚拟机 (VM) 接入。 更改您的 MAC 地址 关于 VMX 文件中的配置,这是为了防范 ARP 欺骗攻击和身份欺骗而采取的安全措施。同样,源 MAC 地址与虚拟机实际 MAC 地址不匹配的出站帧会被阻止,因为它们被认为是伪造的传输。

在嵌套场景中,内部虚拟机通常与客户 ESXi 主机具有不同的 MAC 地址。如果这些策略未设置为“接受”,则物理主机上的虚拟交换机会将来自具有不同 MAC 地址的虚拟 ESXi 主机的帧视为可疑帧并进行转发。 丢弃破坏嵌套虚拟机与网络其余部分的连接。

从 vSphere 6.7 开始,分布式虚拟交换机 (VDS) 集成了以下选项: MAC地址学习 通过 macManagementPolicy 选项,减少了使用混杂模式的需要,并在嵌套环境中提供了更类似于传统物理交换机的行为。

设置嵌套 ESXi 环境的关键步骤

实际上,在物理 ESXi 主机上部署嵌套 ESXi 环境的典型步骤涉及一系列相对标准的流程,但也存在一些关键的细微差别,以确保一切正常运行。

首先, 将作为 ESXi 主机的虚拟机在向导中,您可以选择合适的硬件兼容级别(例如,ESXi 6.5 或更高版本),选择“VMware ESXi”作为客户操作系统,并在硬件部分分配至少 2 个 vCPU、8 GB 或更多 RAM 以及足够的虚拟磁盘(ESXi 7.x 的最小值为 32 GB,但最好提供更多)。

关键在于选择该选项 揭示硬件辅助虚拟化 到客户操作系统。如果未执行此操作,则在虚拟机上安装 ESXi 期间会出现警告,指出 CPU 不支持硬件虚拟化或未启用硬件虚拟化,并且无法在该虚拟 ESXi 中启动嵌套虚拟机。

虚拟机创建完成后,从数据存储中挂载 ESXi 安装 ISO 映像,并将虚拟机管理程序安装到该虚拟机上,就像安装到物理服务器上一样:格式化磁盘,使用 IP 地址和主机名配置管理网络,并验证访问权限。 VMware 主机客户端 通过浏览器。

嵌套式 ESXi 存储和数据存储

与之前的版本相比,ESXi 7.x 的分区方案发生了变化。在容量较小的磁盘(小于 128 GB)上,会创建一个 VMFSL 分区用于存储系统数据(核心转储、工具、临时文件等),但可能没有足够的空间来创建其他分区。 VMFS 数据存储 用于托管嵌套虚拟机的额外空间。

因此,向客户 ESXi 虚拟机添加一个或多个额外的虚拟磁盘非常常见。这首先需要关闭虚拟机,编辑其设置,然后使用精简配置创建新磁盘(例如,30 GB、50 GB 或更大,具体取决于需求)。之后,嵌套的 ESXi 主机客户端会检测到这个新磁盘,并创建一个 VMFS 数据存储(通常为 VMFS 6)来存储内部虚拟机。

挂载 ISO 镜像并创建嵌套虚拟机

要在 ESXi 客户机内部的嵌套虚拟机上安装操作系统,您可以选择两种主要方法。 使用 ISO 映像 安装方式:

一方面,您可以将 ISO 文件直接上传到嵌套的 ESXi 数据存储区,并在创建内部虚拟机时从中选择它们。这种方法虽然简单,但会占用嵌套环境本身的存储空间。另一方面,您可以将 ISO 文件从物理主机上的数据存储区挂载到客户 ESXi 虚拟机的 CD/DVD 驱动器,然后在虚拟 ESXi 中将嵌套虚拟机的 CD/DVD 驱动器配置为“主机设备”,从而利用直通功能。

第二种方法通常更可取,因为它允许将 ISO 集中在物理主机上的单个数据存储中,节省客户机 ESXi 数据存储的空间,并提供了一种 轻量级 性能更佳 媒体访问。ISO 挂载后,创建嵌套虚拟机的过程与其他虚拟机类似:定义名称、客户操作系统类型(Windows、Linux 等)、资源(CPU、RAM、磁盘),然后开始安装。

在嵌套虚拟机上安装操作系统后,添加以下内容至关重要: VMware Tools 在该虚拟机内部,可以优化网络性能、视频以及关机和重启操作。根据所使用的 ESXi 发行版,这些工具的 ISO 镜像可能已包含在内,也可能需要从 VMware 门户下载。

嵌套 ESXi 主机的克隆和复制

一旦嵌套的 ESXi 主机配置好了所需的版本、网络、数据存储和一些内部虚拟机,下一步通常就是…… 克隆该虚拟机 例如,可以创建多个相同的虚拟 ESXi 主机,以便与 vCenter 组成实验室集群。

在开始克隆之前,建议对原始 ESXi 主机进行一些调整:在 ESXCLI 中使用相应的参数启用 VMkernel 以跟踪虚拟硬件的 MAC 地址,并从 /etc/vmware/esx.conf 文件中移除系统 UUID,以便在克隆开始时,能够正确识别虚拟机。 新的唯一标识符克隆完成后,启动每个虚拟 ESXi 时,需要更改其主机名、IP 地址以及任何其他需要不同的设置。

Azure 实验室服务 (Hyper-V) 中的嵌套虚拟化

Azure 实验室服务提供了一种非常便捷的方式,可以使用虚拟实验室机器向学生或内部用户交付完整的实验室环境。此外,它还支持嵌套虚拟化。 Hyper-V 作为虚拟机管理程序 在模板虚拟机内部。其理念是,基于此模板虚拟机,启用 Hyper-V 功能,创建必要的嵌套虚拟机,并在发布实验环境时,为每个用户提供一份已完成所有设置的模板副本。

在这种情况下,嵌套虚拟化仅在以下情况下可用: 基于 Windows 的实验室虚拟机虽然 Windows 和 Linux 客户机都可以在 Hyper-V 中运行,但如果模板操作系统是 Windows Server,通常需要在实验室虚拟机中配置 NAT 网络,以便嵌套的虚拟机可以相互通信并访问互联网。

在设置这些实验室时,必须考虑几个实际方面:如果创建了没有管理员权限的用户帐户,则必须将其添加到“Hyper-V 管理员“这样他们就可以启动和停止虚拟机。此外,嵌套虚拟机的 VHDX 文件必须位于该用户可以访问的路径中,为了节省磁盘空间,建议使用动态 VHDX 格式而不是大型扁平磁盘。”

就计算能力而言,Azure 中专为嵌套虚拟化设计的虚拟机规格(例如 Standard_D4s_v4 和 Standard_D8s_v4)基于第三代英特尔® 至强® 铂金处理器。由于在 Azure 中停止和启动虚拟机时,底层处理器可能属于同一系列的不同处理器,因此建议启用相应的模式。 处理器兼容性 在嵌套的 Hyper-V 虚拟机中,最大限度地减少不同物理主机之间的迁移问题。

另一个关键点是配置 Hyper-V 虚拟机,使其在实验室虚拟机关闭时也能正常关闭,通常使用 cmdlet。 设置虚拟机 定义自动关机操作并防止数据损坏。此外,一如既往,您需要仔细规划每个嵌套虚拟机的内存和虚拟 CPU 数量,以确保整体性能达到可接受的水平。

此外,还有一些重要的限制:并非所有 Azure VM 大小都支持嵌套虚拟化,嵌套 VM 无法直接访问 Azure 资源(例如 VNet DNS),并且仅支持某些 VM。 Hyper-V 作为一种虚拟化技术这不包括该层中需要硬件扩展(例如 KVM 或 VMware)的其他解决方案。

AWS EC2 中的嵌套虚拟化

直到最近,如果你想在 AWS 上实现嵌套虚拟化,实际上你只能选择…… 裸机实例虽然可以直接访问硬件,但成本更高,灵活性也更差。标准 EC2 虚拟实例正式支持嵌套虚拟化的消息彻底改变了这一格局。

此次更新(例如,已体现在最新版本的 AWS SDK for Go 中)使得在非裸机 EC2 实例中运行客户虚拟机管理程序和嵌套虚拟机成为可能,前提是这些实例属于兼容的系列(通常是配备 Intel VT-x 或 AMD-V CPU 的 M、C、R 系列等)。这为以下方面打开了大门: 初创公司和开发团队 在不超出预算的情况下,搭建复杂的实验室、高级 CI/CD 平台或 VM 编排环境。

在此背景下,最常见的用例包括测试复制管道。 完整的生产架构 (不同的操作系统、网络层、防火墙等),技术培训平台为每个学生在 EC2 中提供一个小型数据中心,或者开发需要管理虚拟机作为其功能一部分的云原生工具(例如,备份、安全或自动化解决方案)。

从经济角度来看,标准 EC2 中的嵌套虚拟化支持与裸机相比,在许多实验室场景中可显著降低成本,降幅可达 60-70%。此外,它还具有以下优势: 弹性按需实例可以与竞价实例结合使用,根据测试需要进行扩展或缩减,与通常的裸机部署时间相比,环境可以在几秒钟内完成配置。

然而,同样重要的是要记住,每一层虚拟化都会增加性能开销。EC2 中的嵌套虚拟机相比同等配置的非嵌套虚拟机,性能通常会降低 10% 到 20%,因此它们更适合用于开发、测试、概念验证和实验室环境。而对于关键的生产环境,建议仔细评估这种性能损失是否值得。

对于生态系统 拉丁美洲的初创企业 在其他对成本敏感的云市场中,这种可能性尤其重要:网络安全公司可以在云端建立多层恶意软件实验室而无需支付裸机费用,DevOps 团队可以在预发布环境中以可控的成本复制生产拓扑,SaaS 提供商可以在不部署物理硬件的情况下,为客户准备具有真实架构的复杂演示。

最后,通过与 AWS SDK for Go 和其他 SDK 的集成,可以实现这些嵌套环境的自动化管理,包括实例兼容性验证、启用虚拟化功能以及通过管道协调 EC2 实例中的 VM 生命周期。 基础架构即代码.

嵌套虚拟化已成为一种高度灵活的工具,无需大量硬件投资即可在复杂的基础设施上进行基于实验室的测试和培训。从 Azure 中基于嵌套 ESXi 和 Hyper-V 实验室的培训场景,到 AWS EC2 中的高级测试平台,其应用模式始终如一:只要充分考虑其性能、支持和许可限制,并妥善规划网络、安全和资源,智能运用这项技术就能提高灵活性、降低成本并加快测试周期。

GNS3 与 EVE-NG 对比
相关文章:
虚拟网络模拟器:GNS3 与 EVE-NG