vCenter Server 要先执行兼容性检查,之后才会允许迁移正在运行或已挂起的虚拟机,以确保虚拟机与目标主机兼容。

vMotion 在基础 ESXi 系统之间传输虚拟机的运行状况。实时迁移要求目标主机的处理器在迁移后向虚拟机提供的指令与源主机的处理器在迁移前提供的相同。源处理器与目标处理器之间的时钟速度、缓存大小以及核心数量可以不同。但是,处理器必须属于同一供应商类别(AMD 或 Intel),使用 vMotion 迁移时才能实现兼容。

已挂起的虚拟机的迁移还要求虚拟机能够使用等效指令在目标主机上恢复执行。

启动通过 vMotion 迁移或启动已挂起虚拟机的迁移时,迁移虚拟机向导会检查目标主机的兼容性。如果兼容性问题阻止迁移,向导将显示错误消息。

为操作系统以及虚拟机中运行的应用程序提供的 CPU 指令集在打开虚拟机电源时确定。该 CPU 功能集根据以下项目确定:

  • 主机 CPU 系列和型号
  • BIOS 中可能停用 CPU 功能的设置
  • 主机上运行的 ESXi 版本
  • 虚拟机的兼容性设置
  • 虚拟机的客户机操作系统

要提高 CPU 功能集不同的主机之间的 CPU 兼容性,可将主机置于增强型 vMotion 兼容性 (EVC) 集群中,对虚拟机隐藏某些主机 CPU 功能。有关 EVC 的详细信息,请参见关于增强型 vMotion 兼容性

注:

您可将自定义 CPU 兼容性掩码应用于虚拟机,对虚拟机隐藏主机 CPU 功能,但不建议采用这种做法。VMware 正与 CPU 和硬件供应商共同合作,致力于在最大范围的处理器之间实现 vMotion 兼容性。有关其他信息,请在 VMware 知识库中搜索《vMotion 和 CPU 兼容性常见问题解答》

vSphere vMotion和 CPU 兼容性方案

不使用 EVC 时,不管虚拟机自身能否访问这些功能,只要 vCenter Server 的 CPU 兼容性检查发现主机的用户级功能之间存在任何不匹配,都会阻止迁移。但是,仅当虚拟机可以访问目标主机未提供的功能时,主机的内核级功能间的不匹配才会阻止迁移。

vCenter Server 的 CPU 兼容性检查可比较源主机上可用的 CPU 功能、虚拟机可访问的功能子集以及目标主机上可用的功能。

用户级功能是虚拟机应用程序使用的非特权指令。这些指令包括 SSE3、SSSE3、SSE4.1、SSE4.2 和 AES。因为它们属于跳过虚拟化层的用户级指令,如果在通过 vMotion 迁移后出现不匹配,这些指令可能会导致应用程序不稳定。

内核级功能是虚拟机操作系统使用的特权指令。这些指令包括 AMD No eXecute (NX) 和 Intel eXecute Disable (XD) 安全功能。

尝试通过 vMotion 迁移虚拟机时,会出现以下情况之一:

  • 目标主机功能集与虚拟机的 CPU 功能集相匹配。满足 CPU 兼容性要求,可继续通过 vMotion 迁移。
  • 虚拟机的 CPU 功能集包含目标主机不支持的功能。不满足 CPU 兼容性要求,无法继续通过 vMotion 迁移。
    注: 通过为集群中运行的所有虚拟机提供“基准”功能集,EVC 解决了这些不兼容问题。此基准功能集会向虚拟机隐藏集群主机 CPU 之间的差异。
  • 目标主机支持虚拟机的功能集,且在虚拟机的功能集中找不到其他用户级功能(如 SSE4.1)。不满足 CPU 兼容性要求,无法继续通过 vMotion 迁移。
    注: 对于 EVC 集群中主机之间的迁移,将忽略此类不兼容情况。
  • 目标主机支持虚拟机的功能集,且在虚拟机的功能集中找不到其他内核级功能(例如 NX 或 XD)。满足 CPU 兼容性要求,可继续通过 vMotion 迁移。虚拟机保持启动状态时会保留其 CPU 功能集,从而可以自由迁移回原始主机。但是,如果重新引导虚拟机,它将从新主机中获取新的功能集。如果尝试将该虚拟机迁移回原始主机,此过程可能会导致 vMotion 不兼容。

CPU 系列和功能集与 vSphere vMotion 的兼容性

处理器分为多个系列。给定系列的处理器通常具有相似的功能集。

处理器供应商定义处理器系列。可以通过比较处理器的型号、步进级别和扩展功能来区分同一系列中的不同处理器版本。有时,处理器供应商在同一处理器系列中引入了重大的架构更改,例如 SSSE3 和 SSE4.1 指令以及 NX/XD CPU 安全功能。

默认情况下,vCenter Server 将应用程序可使用的功能的不匹配视为不兼容,这是为了确保虚拟机在通过 vMotion 迁移后的稳定性。

服务器硬件的 CPU 规格通常会指示 CPU 是否包含影响 vMotion 兼容性的功能。

有关识别 Intel 处理器及其功能的详细信息,请参见《Application Note 485: Intel® Processor Identification and the CPUID Instruction》(可从 Intel 获得)。有关识别 AMD 处理器及其功能的详细信息,请参见《CPUID Specification》(可从 AMD 获得)。

CPU 兼容性掩码和 vSphere vMotion

通过 CPU 兼容性掩码,可以自定义虚拟机可见的 CPU 功能。

vCenter Server 会将虚拟机可用的 CPU 功能与目标主机的 CPU 功能进行比较,以确定是否允许通过 vMotion 进行迁移。

为了保证虚拟机在通过 vMotion 迁移后的稳定性,VMware 设置了 CPU 兼容性掩码的默认值。

当需要在 CPU 兼容性或客户机操作系统功能(例如 NX/XD)之间做出选择时,VMware 会提供复选框选项以配置各个虚拟机。您可以通过虚拟机 CPU 的“高级设置”选项访问配置选项。为了更有效地控制 CPU 功能的可见性,可以编辑位级别的虚拟机 CPU 兼容性掩码。

小心: 更改 CPU 兼容性掩码可能产生不受支持的配置。请勿手动更改 CPU 兼容性掩码,除非 VMware 支持部门或 VMware 知识库文章要求您这样做。

并非在所有情况下,CPU 兼容性掩码都能阻止虚拟机访问屏蔽的 CPU 功能。在某些环境中,应用程序可以检测和使用已屏蔽的功能,即使这些功能对客户机操作系统是隐藏的。此外,在任何主机上,使用不受支持的 CPU 功能检测方法(而不是使用 CPUID 指令)的应用程序可以访问屏蔽的功能。运行使用不受支持的 CPU 检测方法的应用程序的虚拟机可能会在迁移之后遇到稳定性问题。

增强型 vMotion 兼容性

可以使用增强型 vMotion 兼容性 (Enhanced vMotion Compatibility, EVC) 功能帮助确保集群内主机的 vMotion 兼容性。EVC 可以确保集群内的所有主机向虚拟机提供相同的 CPU 功能集,即使这些主机上的实际 CPU 不同也是如此。使用 EVC 可避免因 CPU 不兼容而导致通过 vMotion 迁移失败。

在“集群设置”对话框中配置 EVC。配置 EVC 时,请将集群中的所有主机处理器配置为提供基准处理器的功能集。这种基准功能集称为 EVC 模式。EVC 使用 AMD-V Extended Migration 技术(适用于 AMD 主机)和 Intel FlexMigration 技术(适用于 Intel 主机)屏蔽处理器功能,以便主机可提供早期版本的处理器功能集。EVC 模式必须等同于集群中具有最小功能集的主机的功能集,或为主机功能集的子集。

EVC 只会屏蔽影响 vMotion 兼容性的处理器功能。启用 EVC 不会妨碍虚拟机利用更快处理器速度、更多 CPU 内核或在较新的主机上可能可用的硬件虚拟化支持。

EVC 无法在任何情况下都阻止虚拟机访问隐藏的 CPU 功能。未遵循 CPU 供应商推荐的功能检测方法的应用程序可能在 EVC 环境中会行为异常。此类行为异常的应用程序未遵照 CPU 供应商建议,无法支持 VMware EVC。有关创建行为良好的应用程序的详细信息,请在 VMware 知识库中搜索文章《检测和使用 CPU 中的新功能》

从 vSphere 7.0 Update 1 开始,可以利用虚拟共享图形加速 (vSGA) 的 EVC 功能。vSGA 允许多个虚拟机共享 ESXi 主机上安装的 GPU 并利用 3D 图形加速功能。

主机的增强型 vMotion 兼容性要求

要提高具有不同 CPU 功能集的主机之间的 CPU 兼容性,可通过将主机置于增强型 vMotion 兼容性 (EVC) 集群中来“隐藏”虚拟机中的一些主机 CPU 功能。EVC 集群中的主机和添加到现有 EVC 集群中的主机必须符合 EVC 要求。

  • 关闭集群中所包含的功能集高于您要启用的 EVC 模式的主机上运行的所有虚拟机的电源。也可以将这些虚拟机迁移到集群外面。

  • 集群中的所有主机均须满足以下要求:

要求

描述

受支持的 ESXi 版本

ESXi6.7 或更高版本。

vCenter Server

主机必须连接到 vCenter Server 系统。

CPU

单个供应商,AMD 或 Intel。

启用高级 CPU 功能

如果在 BIOS 中以下 CPU 功能可用,则启用这些功能:

  • 硬件虚拟化支持(AMD-V 或 Intel VT)

  • AMD No eXecute(NX)

  • Intel eXecute Disable (XD)

注:

默认情况下,硬件供应商有时会停用 BIOS 中的特定 CPU 功能。您可能会因为 EVC 兼容性检查检测到缺少某些需要针对特定 CPU 提供的功能,从而在启用 EVC 时遇到问题。如果无法在配备兼容处理器的系统上启用 EVC,请确保在 BIOS 中启用所有功能。

要启用的 EVC 模式所支持的 CPU

要了解 EVC 是否支持特定处理器或服务器型号,请参见《VMware 兼容性指南》,网址为 http://www.vmware.com/resources/compatibility/search.php

配置 vMotion

请参见vSphere vMotion 的主机配置

如何在现有集群上激活 vSphere EVC

了解如何在现有集群上激活 vSphere Enhanced vMotion Compatibility (EVC),以确保集群中主机之间的 vMotion CPU 兼容性。其他集群功能(例如 vSphere DRS 和 vSphere HA)与 EVC 完全兼容。

前提条件

验证集群中的主机是否满足 主机的增强型 vMotion 兼容性要求中所列的要求。

过程

  1. 在 vSphere 清单中选择集群。
  2. 关闭所含功能集高于 EVC 模式的主机上的所有虚拟机的电源。
    要确定集群中主机上所有虚拟机的 EVC 模式,请参见 如何确定虚拟机的 EVC 模式。必须关闭未处于 EVC 模式或者 EVC 模式大于计划在集群上启用的 EVC 模式的所有已打开电源的虚拟机的电源。
  3. 单击配置选项卡,选择 VMware EVC,然后单击编辑
  4. 为适合集群中主机的 CPU 供应商和功能集启用 EVC,然后单击确定

如何更改集群的 vSphere EVC 模式

了解如何配置 vSphere EVC 以确保集群中主机之间的虚拟机迁移不会因为 CPU 功能不兼容而失败。

有多种 EVC 方法可用于确保 CPU 兼容性:

  • 如果集群中的所有主机均与新 EVC CPU 或图形 (vSGA) 模式兼容,则可以更改现有 EVC 集群的 EVC CPU 或图形 (vSGA) 模式。

  • 您可以为没有启用 EVC 的集群启用 EVC。

  • 您可以提升 EVC 模式以公开更多 CPU 功能。

  • 您可以降低 EVC 模式以隐藏 CPU 功能并提高兼容性。

前提条件

  • 验证集群内的所有主机是否都配备了要启用的 EVC 模式所支持的 CPU。有关受支持 CPU 的列表,请参见知识库文章 KB 1003212

  • 验证集群中的所有主机是否均已连接并已在 vCenter Server 上注册。集群不能包含已断开连接的主机。

  • 虚拟机必须处于以下电源状态,具体取决于您提升还是降低 EVC 模式。

    EVC 模式

    虚拟机电源操作

    将 EVC 模式提升到具有更多功能的 CPU 基准。

    正在运行的虚拟机可以保持打开电源状态。在虚拟机关闭电源并再次打开电源后,新 EVC 模式的功能才会适用于虚拟机。必须完成先关闭然后重新启动这一过程。仅重新引导客户机操作系统或挂起和恢复虚拟机是不够的。

    提示:

    通过将 vmx.reboot.powerCycle 虚拟机参数设置为 TRUE,可将虚拟机配置为在重新引导客户机操作系统时重新启动。重新打开虚拟机电源后,将移除此配置参数。要编辑虚拟机配置设置,可以使用 VMware Host Client。请参见《vSphere 单台主机管理 - VMware Host Client》指南中的“在 VMware Host Client 中编辑配置文件参数”主题。有关如何使用 VMware PowerCLI 为一组虚拟机设置此参数的信息,请参见 VMware vSphere 博客帖子。

    将 EVC 模式降低至具有更少功能的 CPU 基准。

    如果虚拟机已打开电源并且其正在运行的 EVC 模式高于您计划启用的模式,请关闭虚拟机电源。

    注:

    生成 EVC 集群中虚拟机的快照时,请记住以下用例:

    • 如果在 EVC 降级之前生成正在运行的虚拟机的快照,则在 EVC 降级后尝试恢复到该快照将失败,并且虚拟机将处于挂起状态。
    • 如果在 EVC 升级之前生成虚拟机的快照,则可以在 EVC 升级之前或之后恢复到该快照。

    要验证虚拟机的 EVC 模式,请参见如何确定虚拟机的 EVC 模式

过程

  1. 在清单中选择集群。
  2. 单击配置选项卡。
  3. 配置下,选择 VMware EVC,然后单击编辑
  4. 更改 EVC 模式页面中,选择是激活还是停用 EVC。

    选项

    描述

    禁用 EVC

    EVC 功能已停用。不强制要求该集群内主机的 CPU 兼容。

    为 AMD 主机启用 EVC

    为 AMD 主机启用 EVC 功能。

    为 Intel 主机启用 EVC

    为 Intel 主机启用 EVC 功能。

  5. CPU 模式下拉菜单中,选择要为集群启用的基准 CPU 功能集。

    如果无法选择 EVC CPU 模式,兼容性窗格会显示原因,以及每个原因相关的主机。

  6. (可选) 图形模式 (vSGA) 下拉菜单中,选择基准图形功能集。

    如果无法选择 EVC vSGA 模式,兼容性窗格会显示原因,以及每个原因相关的主机。

    选项

    描述

    基准图形

    应用包含直至 Direct3D 10.1/OpenGL 3.3 的功能的基准图形功能集。

    注:

    要配置 vSGA 模式以应用通过 Direct3D 10.1/OpenGL 3.3 包含功能的基准图形集,虚拟机必须与 ESXi 6.5 或更高版本兼容。

    D3D 11.0 类功能

    应用包含直至 Direct3D 11.0/OpenGL 4.3 的功能的基准图形功能集。

    注:

    创建集群并启用 EVC 图形模式 Direct3D 11.0/OpenGL 4.3 类功能时,只能向集群添加支持 Direct3D 11.0/OpenGL 4.3 的 ESXi 8.0主机。如果尝试将不支持 Direct3D 11.0/OpenGL 4.3 的 ESXi 8.0 主机添加到集群,操作将失败并显示错误消息。

  7. 单击确定

如何确定虚拟机的 EVC 模式

虚拟机的 EVC 模式确定了将虚拟机迁移到主机并打开电源所需的主机 CPU 和图形功能。虚拟机的 EVC 模式独立于为其所在集群配置的 EVC 模式。

打开虚拟机电源时将确定虚拟机的 EVC 模式。打开电源时,虚拟机还会确定其所在集群的 EVC 模式。如果正在运行的虚拟机或整个 EVC 集群的 EVC 模式有提高,则只有关闭虚拟机电源并重新打开电源,虚拟机才会改变其 EVC 模式。这意味着,只有关闭并重新打开虚拟机电源后,虚拟机才能利用由新 EVC 模式公开的任何 CPU 功能。

例如,创建一个 EVC 集群,其中包含使用 Intel 处理器的主机,并将 EVC 模式设置为 Intel "Merom" Generation (Xeon Core 2)。在此集群中打开电源的虚拟机将在 Intel Merom Generation (Xeon Core 2) EVC 模式下运行。如果将该集群的 EVC 模式提高到 Intel "Penryn" Generation (Xeon 45 nm Core 2),虚拟机仍处于较低的 Intel "Merom" Generation (Xeon Core 2) EVC 模式。要使用较高 EVC 模式的功能集(例如 SSE4.1),则必须关闭虚拟机电源并再次打开电源。

过程

  1. vCenter Server 清单中导航到集群或主机。
  2. 单击虚拟机 > 虚拟机选项卡。
    此时将显示选定集群或选定主机上的所有虚拟机列表。
  3. 要验证 CPU 模式的状态,请选中 EVC CPU 模式列。
    1. 如果该列不可见,请单击虚拟机表左下角的管理列
      此时将弹出 显示列窗口。
    2. 要显示 EVC CPU 模式列,请从列表中找到并选中相应的复选框。
    EVC CPU 模式列将显示该集群或主机上的所有虚拟机的 CPU 模式。
    重要说明: 对于每个虚拟机, EVC CPU 模式列显示在虚拟机级别定义的 EVC 模式。

    但是,如果没有为虚拟机配置基于虚拟机的 EVC,虚拟机将继承其父 EVC 集群或主机的 EVC 模式。因此,对于尚未配置基于虚拟机的 EVC 的所有虚拟机,EVC CPU 模式列将显示继承父主机或集群的 EVC 模式。

    如果虚拟机位于 EVC 集群,将按以下方式定义 EVC CPU 模式列中显示的 EVC 模式。
    • 当虚拟机打开电源时,EVC CPU 模式列显示基于虚拟机的 EVC 模式或集群级别的 EVC 模式。
      基于虚拟机的 EVC 集群级别的 EVC 虚拟机的 EVC 模式
      已激活 已激活 已启用。EVC CPU 模式列显示虚拟机的 EVC 模式。
      已取消激活 已激活 已启用。EVC CPU 模式列显示 EVC 集群的 EVC 模式。
    • 当虚拟机关闭电源时,EVC CPU 模式列显示基于虚拟机的 EVC 模式。如果停用基于虚拟机的 EVC,则虚拟机的 EVC CPU 模式列为空。
    如果虚拟机不位于 EVC 集群且未配置基于虚拟机的 EVC,将按以下方式定义 EVC CPU 模式列中显示的 EVC 模式。
    • 当虚拟机打开电源时,EVC CPU 模式列显示父主机的 EVC 模式。
    • 当虚拟机关闭电源时,EVC CPU 模式列为空。
  4. 要验证图形模式的状态,请选中 EVC 图形模式 (vSGA) 列。
    1. 如果该列不可见,请单击虚拟机表左下角的管理列
      此时将弹出 显示列窗口。
    2. 要显示 EVC 图形模式 (vSGA) 列,请从列表中找到并选中相应的复选框。
    EVC 图形模式 (vSGA)列显示基准图形功能集。要查看基准图形,必须在虚拟机中启用 3D 图形

    有关在虚拟机中配置 3D 图形的信息,请参见《vSphere 虚拟机管理》文档中的“配置 3D 图形和显卡”

vMotion 迁移和具有不采用 3Dnow! 的 AMD 处理器的 ESXi 主机

如果 vSphere 集群中的主机具有不同代别的 AMD 处理器,有些处理器带有 3DNow! 指令集,有些没有指令集,则您无法在主机之间成功迁移虚拟机。您必须使用 EVC 模式或 CPU 兼容性掩码来隐藏指令。

新一代 AMD 处理器不包含 3DNow! 处理器指令。vCenter Server AMD Opteron Gen. 3 (不支持 3DNow!) EVC 模式将屏蔽来自虚拟机的 3DNow! 指令。您可以将此 EVC 模式应用到仅包含 AMD Opteron Generation 3 主机的 EVC 集群。通过应用此模式,集群将能够保持 vMotion 与不包含 3DNow! 指令的 AMD Opteron 主机的兼容性。包含 AMD Opteron Generation 1 或 AMD Opteron Generation 2 主机的集群无法与不包含 3DNow! 指令的主机 vMotion 兼容。

前提条件

确保该集群仅包含使用 AMD Opteron Generation 3 或更新处理器的主机。

过程

  • 为 EVC 集群启用 AMD Opteron Gen. 3 (不支持 3DNow!) EVC 模式。
    根据是创建集群还是在现有集群上启用 EVC 模式,以及根据现有集群是否包含已启动的虚拟机,启用 EVC 模式的步骤可能会有所不同。
    选项 描述
    创建集群 在“新建集群”向导中,为 AMD 主机启用 EVC 并选择 AMD Opteron Gen. 3 (不支持 3DNow!) EVC 模式。
    编辑不包含已打开电源的虚拟机的集群 在“集群设置”对话框中,编辑 VMware EVC 设置并选择 AMD Opteron Gen. 3 (不支持 3DNow!) EVC 模式。
    编辑包含已打开电源的虚拟机的集群 在集群中存在已打开电源的虚拟机时,无法启用 AMD Opteron Gen. 3 (不支持 3DNow!) EVC 模式。
    1. 关闭集群中正在运行的虚拟机的电源,或者使用 vMotion 将其从集群中迁移出来。

      使用 vMotion 将虚拟机从集群中迁移出来使您能够将关闭虚拟机延迟到一个更加方便的时间。

    2. 在“集群设置”对话框中,编辑 VMware EVC 设置并选择 AMD Opteron Gen. 3 (不支持 3DNow!) EVC 模式。
    3. 如果已将虚拟机从集群中迁移出来,请关闭这些虚拟机的电源并将它们冷迁移回集群中。
    4. 打开虚拟机电源。

结果

现在可以将使用不包含 3DNow! 指令的 AMD 处理器的主机添加到集群中,并保持新主机与集群中的现有主机之间的 vMotion 兼容性。

如何查看 EVC 集群的功能详细信息

由 EVC 集群公开的功能集对应于特定处理器类型的功能集。处理器功能集由一组功能标记进行描述,您可以使用 CPUID 指令对这组标记进行检查。

您可以查看当前由 EVC 集群中的主机公开的 CPUID 功能标记。

过程

  1. 在清单中选择集群。
  2. 单击配置选项卡。
  3. 选择 VMware EVC 并展开当前功能详细信息

结果

该“VMware EVC”面板会显示 EVC 为此集群中的主机实施的 CPUID 功能标记。有关 CPUID 功能标记的信息,请参见 Intel 和 AMD 网站。