Azure Stack HCI 中的动态处理器兼容性模式

适用于:Azure Stack HCI 版本 22H2

Azure Stack HCI 中的动态处理器兼容性模式已更新,可以在群集环境中利用新的处理器功能。 处理器兼容性通过确定群集中每个节点支持的处理器功能,并计算所有处理器的公分母来发挥作用。 虚拟机 (VM) 配置为使用群集中所有服务器可用的最大数量的功能。 与默认使用最少的固定处理器功能集的前一处理器兼容性版本相比,这提高了性能。

有关 Windows Server 中的处理器兼容性模式的信息,请参阅 Hyper-V 中的处理器兼容性模式

何时使用处理器兼容性模式

处理器兼容性模式允许你移动实时 VM(实时迁移),或者移动在使用不同处理功能集的节点之间保存的 VM。 但是,即使启用了处理器兼容性,你也无法在其处理器制造商不相同的主机之间移动 VM。 例如,无法将正在运行的 VM 或处于已保存状态的 VM,从搭载 Intel 处理器的主机移到搭载 AMD 处理器的主机。 如果必须以这种方式移动某个 VM,请先关闭该 VM,然后在新主机上将它重启。

重要

只有使用最新配置版本 (10.0) 的 Hyper-V VM 才能受益于动态配置。 使用较旧版本的 VM 无法受益于动态配置,将继续使用前一版本中的固定处理器功能。

我们建议为 Azure Stack HCI 上运行的 VM 启用处理器兼容性模式。 这可以提供最高级别的功能,并且在需要迁移到新硬件时,移动 VM 不需要停机。

注意

如果你打算停止 VM 并将其重启,则无需使用处理器兼容性模式。 每当重启 VM 时,来宾操作系统将枚举新主机上可用的处理器兼容性。

为何需要处理器兼容性模式

处理器制造商经常在其处理器中引入优化和功能。 这些功能通常会将专用硬件用于特定任务来提高性能或安全性。 例如,许多媒体应用程序使用处理器功能来加速矢量计算。 运行应用程序时极少需要用到这些功能;这些功能只是用于提升性能。

处理器上提供的功能集因其品牌、型号和面市时间而异。 操作系统和应用程序软件在首次启动时,通常会枚举系统的处理器功能集。 软件会预期可用的处理器功能在其生命周期内没有变化,当然,如果这些功能在物理计算机上运行,则它们就永远不会发生变化,因为除非升级处理器,否则处理器功能是静态的。

但是,可以通过 VM 移动功能将正在运行的 VM 迁移到新的虚拟化主机。 如果 VM 中的软件已检测到特定的处理器功能并开始使用该功能,然后该 VM 移到缺少该功能的新虚拟化主机,则该软件可能会出现故障。 这可能导致应用程序或 VM 崩溃。

为避免故障,每当启动 VM 实时迁移或启动保存/还原操作时,Hyper-V 将执行预先检查。 这些检查会将源主机上的 VM 可用的处理器功能集与目标主机上可用的功能集进行比较。 如果这些功能集不匹配,则会取消迁移或还原操作。

处理器兼容性模式的新增功能

过去,所有新的处理器指令集都是隐藏的,这意味着来宾操作系统和应用程序软件无法利用新的处理器指令集增强功能来帮助应用程序和 VM 保持高性能。

为了摆脱这一限制,处理器兼容性模式现已更新,可在支持二级地址转换 (SLAT) 的处理器上提供增强的动态功能。 此新功能将计算群集中的节点所支持的 CPU 功能的公分母,并更新 VM 上的现有处理器兼容性模式,以使用此动态计算的功能集,而不是旧的硬编码功能集。

在 Azure Stack HCI 环境中,新的处理器兼容性模式将在群集中的所有服务器上提供一个通用功能集,从而确保各个虚拟化主机中的 VM 可用的处理器功能集相匹配。 每个 VM 将接收在群集中的所有服务器上提供的最大数量的处理器指令集。 此过程是自动进行的,并始终在整个群集中启用并复制,因此无法通过任何命令来启用或禁用该过程。

在群集之间迁移正在运行的 VM

假设每个群集中的所有服务器都运行相同的硬件(这是 Azure Stack HCI 的一项要求),则可以在群集之间实时迁移正在运行的 VM。 有三个常见方案。

  • 将 VM 从具有新处理器的群集实时迁移到具有相同处理器的群集。 VM 功能将转移到目标群集。 此方案不需要启用处理器兼容性模式;不过,使该模式处于启用状态不会导致任何问题。

  • 将 VM 从具有较旧处理器的群集实时迁移到具有较新处理器的群集。 VM 功能将转移到目标群集。 在此方案中,如果 VM 重启,它将接收最新计算的目标群集功能。

  • 将 VM 从具有较新处理器的群集实时迁移到具有较旧处理器的群集。 需要在 PowerShell 中将 VM 处理器设置为对 CompatibilityForMigrationMode 参数使用 MinimumFeatureSet,或者在 Windows Admin Center 中的“虚拟机”>“设置”>“处理器”下选择“在 CPU 制造商相同的其他主机之间兼容”。 这会将 VM 分配到服务器上提供的至少需要的处理器功能。 将兼容性切换为“在整个群集中兼容(建议)”并重启 VM 后,它将获得目标群集的最新计算出的功能。

将 VM 配置为使用处理器兼容性模式

本部分介绍如何使用 Windows Admin Center 或 PowerShell 将 VM 配置为使用处理器兼容性模式。 可以在同一群集中运行使用和不使用兼容性模式的 VM。

重要

必须先关闭 VM,然后才能启用或禁用处理器兼容性模式。

使用 Windows Admin Center 启用处理器兼容性模式

若要使用 Windows Admin Center 启用处理器兼容性模式,请执行以下操作:

  1. 连接到群集,然后在“工具”窗格中选择“虚拟机” 。

  2. 在“库存”下,选择要在其上启用处理器兼容性模式的 VM,展开“电源”菜单,然后选择“关闭” 。

  3. 依次选择“设置”、“处理器”,然后选中“处理器兼容性”对应的框 。

    Check the box to enable processor compatibility

  4. 若要将 VM 的 CPU 功能设置为群集中所有服务器支持的最大级别,请选择“在整个群集中兼容(建议)”。 这会最大限度地提高 VM 性能,同时保留将正在运行的 VM 移到群集中的其他服务器的功能。 建议为 Azure Stack HCI 21H2 群集上运行的所有 VM 启用此功能;如果禁用,则必须重启 VM 才能切换到具有不同的受支持 CPU 指令级别(对于不同代的 CPU 很常见)的主机。

    或者,若要将 VM 的 CPU 功能设置为最低以确保可将正在运行的 VM 移到群集外部的其他 Hyper-V 主机(前提是它们的 CPU 制造商相同),请选择“在 CPU 制造商相同的其他主机之间兼容”。

    注意

    与动态处理器兼容性模式一样,“在整个群集中兼容”仅适用于 Azure Stack HCI 21H2,不受任何其他操作系统的支持。

  5. 选择“保存处理器设置”并重启 VM。

使用 PowerShell 启用处理器兼容性模式

若要启用处理器兼容性模式,请运行以下 cmdlet:

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $true 

我们建议将 VM 的 CPU 功能设置为群集中所有服务器支持的最大级别。 这会最大限度地提高 VM 性能,同时保留将正在运行的 VM 移到群集中的其他服务器的功能。

若要使 VM 能够使用群集节点通用功能,请运行以下 cmdlet:

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $true -CompatibilityForMigrationMode CommonClusterFeatureSet

也可将 VM 的 CPU 功能设置为最小值,确保可以将正在运行的 VM 移到群集外的其他 Hyper-V 主机(如果它们的 CPU 制造商相同)。

若要使 VM 能够使用默认至少需要的功能跨群集进行迁移,请运行以下 cmdlet:

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $true -CompatibilityForMigrationMode MinimumFeatureSet

后续步骤

有关详细信息,请参阅: