在 Hyper-V 虚拟机中配置处理器兼容性模式

处理器兼容性模式允许在具有不同处理器功能的主机之间迁移虚拟机。 它限制虚拟机(VM)可用的处理器功能,以确保在具有不同处理器的主机或群集之间移动 VM 时兼容。

有时,可能需要限制传递的处理器功能,例如,想要在具有不同处理器功能的主机或群集之间移动实时虚拟机(VM)或保存的 VM,或者开发需要在各种硬件上运行的应用程序。 在这些情况下,可以使用处理器兼容性模式。 建议仅在迁移过程中启用处理器兼容性模式,然后禁用它以允许 VM 利用主机处理器的完整功能。 如果有具有不同处理器代系的群集,则需要使处理器兼容性模式保持启用,以便实时迁移正常工作。

Windows Server 2025 中引入的动态处理器兼容性模式适用于使用配置版本 10.0 或更高版本的 VM,通过允许 VM 使用群集中所有节点中通用的动态计算处理器功能集,从而增强处理器兼容模式的早期版本。 这意味着 VM 可以利用群集中可用的最大功能,同时在主机之间移动 VM 时仍确保兼容性。

若要了解处理器兼容性模式,请参阅 Hyper-V 虚拟机中的处理器兼容性

本文介绍如何使用 Hyper-V Manager、PowerShell 或 Windows Admin Center 为 VM 配置处理器兼容性模式。

先决条件

在开始之前,请确保满足以下先决条件:

  • 对运行 VM 的 Hyper-V 主机或群集以及要将 VM 迁移到的位置具有管理访问权限。

  • 要配置处理器兼容性模式的 VM 已关闭。 在 VM 运行时,无法启用或禁用处理器兼容性模式。

  • 为运行 Windows Server 2025 或 Azure 本地(以前为 Azure Stack HCI)版本 21H2 的 Hyper-V 主机上的 VM 引入了动态处理器兼容性模式,并使用配置版本 10.0 或更高版本。 如果 VM 使用的是早期配置版本,请升级其配置版本,否则使用标准处理器兼容性模式。

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

本部分介绍如何使用 Hyper-V 管理器、PowerShell 或 Windows Admin Center 将 VM 配置为使用处理器兼容性模式。 可以在同一群集中运行使用和不使用兼容性模式的 VM。 以相同的方式启用和禁用两种处理器兼容性模式。 动态处理器兼容性模式对用户是透明的,并在 VM 在群集上运行时启用。

选择要使用的方法的相关选项卡。

若要使用 Hyper-V Manager 为 VM 启用或禁用处理器兼容性模式,请执行以下步骤。 无法在 Hyper-V Manager 中配置动态处理器兼容性模式;请改用 PowerShell 或 Windows Admin Center。

  1. 打开“Hyper-V 管理器”。

  2. 选择运行 Hyper-V 的服务器和所需的 VM。

  3. 如果 VM 正在运行,则必须关闭 VM 才能更改处理器兼容性模式设置。

  4. 在 VM 的 “操作”窗格中,选择 “设置”

  5. “硬件 ”窗格中,选择“ 处理器”。 展开 “处理器”,然后选择 “兼容性”。

  6. 若要启用处理器兼容性模式,请选中“ 迁移到具有不同处理器的物理计算机”框。 若要禁用它,请取消选中该框。

    Hyper-V 管理器 VM 设置的屏幕截图,其中显示了“处理器兼容性”页,其中复选框用于迁移到具有不同处理器的物理计算机。

  7. 选择 “确定 ”以保存更改,然后启动 VM。

验证 Hyper-V 主机和 VM 上的处理器功能

配置处理器兼容性模式后,可以验证 Hyper-V 主机和 VM 上可用的处理器功能。 如果想要检查 VM 是否具有可用的预期功能集,则此信息非常有用。

若要检查 Hyper-V 主机和 Windows VM 上的处理器功能,可以从 Sysinternals 运行 Coreinfo

  1. 登录到主机或 VM 并下载并提取 Coreinfo 工具

  2. 以管理员身份打开 PowerShell 并导航到提取 Coreinfo 的目录。

  3. 运行以下命令。 如果是首次在此主机上运行 Coreinfo,则需要接受许可协议。

    .\Coreinfo.exe -f
    

    下面是你可能会看到的输出的截断示例,其中每行表示处理器功能和星号 \ 指示该功能可用:

    HTT             *       Hyperthreading enabled
    CET             -       Supports Control Flow Enforcement Technology
    Kernel CET      -       Kernel-mode CET Enabled
    User CET        -       User-mode CET Allowed
    HYPERVISOR      *       Hypervisor is present
    VMX             -       Supports Intel hardware-assisted virtualization
    SVM             -       Supports AMD hardware-assisted virtualization
    X64             *       Supports 64-bit mode
    
    SMX             -       Supports Intel trusted execution
    SKINIT          -       Supports AMD SKINIT
    SGX             -       Supports Intel SGX
    
    ...
    

启用处理器兼容性模式后,当与主机的输出进行比较时,可以看到某些功能不可用(由短划线 -指示)。 减少的列表指示 VM 在处理器兼容模式下运行,并且仅限于一组常见的功能。

如果使用动态处理器兼容性模式,则 VM 中可用的功能是群集中所有节点中通用的最大功能集。

Linux 虚拟机

下面是有关如何检查基于 Debian 或基于 Red Hat 的 Linux VM 上的处理器功能的示例:

  1. 登录到 VM 并打开终端。

  2. 运行以下命令列出处理器功能:

    lscpu | grep Flags
    

    下面是你可能看到的输出的截断示例:

    Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
    pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl 
    xtopology aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt 
    tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single 
    ssbd ibrs ibpb stibp ibrs_enhanced kaiser fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid 
    avx512f avx512dq rdseed adx smap clflushopt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec 
    xgetbv1 xsaves rdpid md_clear flush_l1d arch_capabilities
    

启用处理器兼容性模式时,您会注意到与主机的输出结果相比,有些功能没有列出。 减少的列表指示 VM 在处理器兼容模式下运行,并且仅限于一组常见的功能。

如果使用动态处理器兼容性模式,则 VM 中可用的功能是群集中所有节点中通用的最大功能集。

独立群集之间的 VM 实时迁移行为

假设每个群集中的所有服务器都运行相同的硬件,则可以在群集之间实时迁移正在运行的 VM。 有三个常见方案。

  • 将 VM 从具有新处理器的群集实时迁移到具有相同处理器的群集。 VM 功能将传输到目标群集。 此方案不需要启用处理器兼容性模式;但是,保持启用状态不应导致任何迁移问题。

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

  • 将 VM 从具有较新处理器的群集实时迁移到具有较旧处理器的群集。 需要将 VM 处理器设置为在 PowerShell 中使用 MinimumFeatureSet 对应于 CompatibilityForMigrationMode 参数,或者在 Windows Admin Center 中选择 与相同 CPU 制造商的其他主机兼容。 重启 VM 后,它将收到目标群集的最新计算功能。