Hyper-V与虚拟化

Hyper-V GPU 分配、分区和直通的故障排除指南 - Windows Server

· 52CE 我爱测

适用于: Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows 11 和 Windows 10 本文提供有关与 Hyper-V 环境中 GPU 直通相关的问题的故障排除指南。 本文包括用于故障排除的清单、已知问题的说明以及解决常见问题的说明。 设置主机服务器以提供 GPU 直通或配置虚拟机(VM)以使用 GPU 直通时,可能会遇到常见问题。 故障排除清单 以下清单提供了针对任

适用于: Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows 11 和 Windows 10

本文提供有关与 Hyper-V 环境中 GPU 直通相关的问题的故障排除指南。 本文包括用于故障排除的清单、已知问题的说明以及解决常见问题的说明。 设置主机服务器以提供 GPU 直通或配置虚拟机(VM)以使用 GPU 直通时,可能会遇到常见问题。

故障排除清单

以下清单提供了针对任何 GPU 直通问题应遵循的常规故障排除步骤。 你可能会遇到的许多问题都源于涉及硬件兼容性、作系统兼容性、驱动程序或基本配置的问题。 如果这些步骤无法解决问题,请继续阅读“常见问题和解决方案”部分。

步骤 1:验证所需的功能是否受支持

确保要使用的特定方法支持你的环境。 请遵循这些指导:

  • 若要对使用 GPU 加速的 VM 使用实时迁移,必须在主计算机上使用 GPU-P 和 Windows Server 2025 或更高版本。 有关离散设备分配(DDA)和 GPU-P 之间功能差异的详细信息,请参阅 Windows Server 中的 GPU 加速计划。
  • 若要使用故障转移群集并使用 DDA 部署 GPU,必须使用 Windows Server 2025。 有关详细信息,请参阅在 群集 VM 中使用具有离散设备分配的 GPU。
  • 不能同时使用 DDA 和 GPU-P 分配相同的 GPU。
  • 若要在任务管理器中监视 GPU 使用情况,主计算机必须运行 Windows Server 2022 或更高版本。
  • 桌面级硬件或客户端作系统(如 Windows 10 或 11 专业版)不支持 DDA 和 GPU-P。
  • 若要使用 DDA 分配 GPU,主计算机必须运行 Windows Server 2016 或更高版本。
  • 如果要使用 GPU-P,主机必须运行 Windows Server 2025 或更高版本。
  • 目前只能将单个 GPU 分区分配到 VM。 VM 和 GPU 分区必须位于同一台主计算机上。

步骤 2:验证服务器和 GPU 硬件是否支持 GPU 直通

确保主计算机使用服务器类硬件,并包括受支持的 CPU、主板和 GPU。 如果在群集主机上使用 GPU-P,处理器必须能够进行输入/输出内存管理单元 (IOMMU) DMA 位跟踪。 (此要求包括支持 Intel VT-D 或 AMD-Vi 的处理器。

查看硬件的供应商文档,以根据需要验证它是否支持 Hyper-V GPU-P 或 DDA。 可以使用供应商提供的脚本,例如 SurveyDDA.ps1 来自Microsoft的开源 GitHub 存储库 https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/main/hyperv-tools/DiscreteDeviceAssignment。

重要

目前,以下 GPU 支持 GPU-P:

  • NVIDIA A2
  • NVIDIA A10
  • NVIDIA A16
  • NVIDIA A40
  • NVIDIA L2
  • NVIDIA L4
  • NVIDIA L40
  • NVIDIA L40S

有关详细信息,请参阅 NVIDIA 虚拟 GPU 软件用户指南。

注释

检查供应商信息,了解适用于 GPU 的任何兼容性限制。

有关 DDA 的主计算机先决条件的详细信息,请参阅 使用离散设备分配部署图形设备:先决条件。

有关 GPU-P 的主计算机先决条件的详细信息,请参阅 GPU 分区:要求。

如果硬件不支持要使用的 GPU 直通功能,请升级硬件。 尝试配置或使用 GPU 时,不兼容的硬件可能会导致各种问题。

步骤 2:检查主计算机作系统和 BIOS 或 UEFI 设置

  1. 请确保在主计算机上安装并启用 Hyper-V 服务器角色,并且你对计算机具有管理权限。

  2. 检查主机的 BIOS/UEFI 配置:

    • 如果使用 GPU-P,请确保启用了 单根 I/O 虚拟化(SR-IOV) 和 VT-d/IOMMU。
    • 如果使用的是 DDA,请考虑启用 SR-IOV。 此设置可能会解决一些问题。

    重要

    如果更改任何 BIOS 或 UEFI 设置,请在继续之前重新启动计算机。

步骤 4:检查来宾作系统的版本

确保 VM 使用支持 GPU 直通的作系统。

  • 第 1 代或 2 代 VM 支持 DDA。 支持的来宾包括:

    • Windows 10 或更高版本
    • Windows Server 2016 或更高版本

    有关非 Windows VM 的详细信息,请参阅 Windows Server 和 Windows 上 Hyper-V 支持的 Linux 和 FreeBSD 虚拟机。

  • 使用以下作系统的第 2 代 VM 支持 GPU-P:

    • Windows 10 或更高版本
    • Windows 10 企业版多会话或更高版本
    • Windows Server 2019 或更高版本
    • Linux Ubuntu 18.04 LTS、Linux Ubuntu 20.04 LTS、Linux Ubuntu 22.04 LTS

步骤 5:检查 Windows 更新状态

确保主机和所有 VM 都安装了相关的 Windows 更新。

如果安装任何更新,请重启受影响的计算机。

步骤 6:检查驱动程序和 GPU 许可

若要使用 GPU 直通,必须具有正确的软件和正确的许可证。 所需的驱动程序可能有所不同,具体取决于使用的是 DDA 还是 GPU-P,还取决于要使用的功能。 例如,若要将实时迁移与 GPU-P 一起使用,必须使用 NVIDIA vGPU Software v18 中包含的驱动程序。x 或更高版本。 此外,必须具有支持 GPU-P 的许可证。

许可证或驱动程序问题可能会导致以下症状,等等:

  • Hyper-V 或 Windows Admin Center 不会将 GPU 列为可用于预配。
  • Hyper-V 或 Windows Admin Center 将 GPU 列为“准备好进行 DDA 分配”,但不适用于 GPU-P。
  • VM 或主计算机上的设备管理器将 GPU 列为已禁用或无法识别。
  • 你会看到包含错误代码 48F 或错误代码 003 的错误消息。
  • 无法为 GPU-P 配置 GPU 池。

若要检查驱动程序和许可,请执行以下步骤:

  1. 查看 GPU 供应商文档,并验证是否已在主计算机和 VM 上安装正确的最新 GPU 驱动程序。

    重要

    NVIDIA 的 vGPU 驱动程序不会更新或替换安装在主计算机上的数据中心版本驱动程序(非 vGPU 驱动程序)。 若要使用 GPU-P,必须在安装 vGPU 软件之前手动删除任何 NVIDIA 数据中心版本驱动程序。

  2. 如果必须进行任何驱动程序更改,请执行以下步骤:

    1. 卸载任何不正确的驱动程序。 例如,如果要将 GPU-P 与 NVIDIA vGPU 硬件一起使用,请卸载所有非 vGPU NVIDIA 驱动程序。
    2. 安装正确的驱动程序。
    3. 重启受影响的计算机(主计算机或 VM)。
  3. 确保你拥有你正在使用的 GPU 的正确许可证、拥有正确的许可证数以及正确安装或激活许可证。

    注释

    有关 NVIDIA 许可证的详细信息,请参阅 NVIDIA 许可证系统用户指南。

  4. 若要验证 GPU 现已可用,请在主计算机上打开 Windows PowerShell 命令提示符窗口,然后运行以下命令:

    Get-VMHostPartitionableGpu
    

注释

如果 GPU 仍然不可用,请参阅 更新 Windows 后,GPU 无法运行或显示为未知设备。

步骤 7 检查管理工具

  • Windows Admin Center:
    • 安装最新版本的 Windows Admin Center。
    • 安装 GPU 扩展 2.8.0 或更高版本。
  • Windows PowerShell:安装 Hyper-V 模块。

步骤 8 检查 VM 配置

如果使用 GPU-P,请参阅 “分区”并将 GPU 分配到虚拟机 ,了解有关如何配置 GPU 以及如何配置 VM 的详细信息。 本文还提供了有关配置或分配 GPU 分区时可能会遇到的常见问题的信息。

如果使用 DDA 分配 GPU,请为每个 VM 执行以下步骤,确保 VM 已正确配置:

  1. 以管理员身份登录到 Hyper-V 主机。

  2. 打开提升的 PowerShell 命令提示符窗口,然后运行以下命令:

    Get-VM -Name <VMName>
    

    注释

    在此命令中, <VMName> 是正在检查的 VM 的名称。

  3. 检查下表中列出的设置是否具有指定的值。

    设置 价值
    Automatic Stop Action TurnOff
    GuestControlledCacheTypes 正确
    LowMemoryMappedIoSpace 3000000000
    HighMemoryMappedIoSpace 33280000000

如需了解更多信息,请参阅以下文章:

常见问题和解决方案

Windows Server 2022 Hyper-V 或 VMWare:任务管理器进程选项卡不显示 GPU 或 vGPU 使用情况

请考虑以下方案:

  • 在 Windows Server 2022 主机上运行 Hyper-V 或 VMWare VM。
  • VM 配置为使用 GPU。
  • 打开任务管理器以检查 GPU 进程。

在此方案中,在“进程”选项卡上或“列”菜单上看不到 GPU 列。 在这种情况下,VM 默认使用 Windows 显示驱动程序模型 (WDDM) 1。x. 此模型不支持任务管理器中的 GPU 监视。

若要解决此问题,请执行以下步骤:

  1. 确保主机和所有 VM 都安装了相关的 Windows 更新。

    如果安装任何更新,请重启受影响的计算机。

  2. 在每个受影响的 VM 上,按照以下步骤检查显示驱动程序版本:

    1. 打开命令提示符窗口,然后运行 dxdiag 该命令。
    2. 在 DirectX 诊断工具中,选择“ 显示 ”选项卡,然后查找 驱动程序模型。 此值应为 WDDM 2。x 或更高版本。
    3. 如果驱动程序模型为 2。x 或更高版本,请考虑将主计算机升级到 Windows Server 2025。 否则,请转到下一步。
  3. 在每个受影响的 VM 上,按照以下步骤更新驱动程序并重新生成性能计数器:

    1. 卸载不正确的驱动程序。

    2. 安装正确的驱动程序。

    3. 重启受影响的 VM。

    4. VM 重启后,重新生成性能计数器。 在命令提示符下,按顺序运行以下命令:

      lodctr /R
      diskperf -y
      
  4. 如果上述步骤未解决问题,请考虑将主计算机升级到 Windows Server 2025

更新 Windows 后,GPU 无法正常运行或显示为未知设备

在这种情况下,VM 突然无法使用 GPU。 设备管理器可能会将 GPU 列为已禁用或未知设备。 还可能会看到包含错误代码 48F 或错误代码 003 的错误消息。

这种情况通常意味着驱动程序已损坏,或更新期间安装了驱动程序的过时版本。 只需重新安装正确的驱动程序可能无法解决问题,因为过时或不正确的信息可能保留在注册表或系统文件中。

重要

  • 请确保完成 “故障排除清单 ”部分中介绍的步骤。 如果问题仍然存在,请使用以下过程。
  • 在使用此过程之前,请与供应商联系,以确保在情况中建议清理注册表信息或系统文件。 如果不是,请跳过这些步骤。
  • 必须具有管理权限才能使用此过程。

若要清理此信息并解决此问题,请在受影响的 VM 上执行以下步骤:

  1. 将 VM 重启为 安全模式。

  2. 若要枚举当前驱动程序,请打开提升的命令提示符窗口,然后运行以下命令:

    pnputil /enum-drivers
    
  3. 若要删除旧驱动程序并清理相关的系统文件和注册表项,请执行以下步骤:

    1. 卸载任何不正确的驱动程序。 例如,如果要将 GPU-P 与 NVIDIA vGPU 硬件一起使用,请卸载所有非 vGPU NVIDIA 驱动程序。 若要卸载驱动程序,请在命令提示符处运行以下命令:

      pnputil /delete-driver <Published Name> /uninstall /force
      

      注释

      在此命令中, <已发布的名称> 是驱动程序的名称。

    2. 使用 DevNodeClean 工具删除过时的设备节点。

    3. 若要修复系统文件,请在命令提示符下按顺序运行以下命令:

      sfc /scannow
      DISM /Online /Cleanup-Image /RestoreHealth
      
    4. 从供应商安装正确的 GPU 驱动程序。

  4. 重启 VM。

  5. 若要验证 GPU 现已可用,请在主计算机上打开 Windows PowerShell 命令提示符窗口,然后运行以下命令:

    Get-VMHostPartitionableGpu
    

由于资源不足,无法将 GPU 分配给 VM

将 GPU 分配到 VM 时,可能会看到错误消息,例如以下消息:

此设备找不到足够的可用资源来使用 (Code:12)

GPU 分区:系统资源不足,无法完成请求的服务。

此类消息表示 VM 分配 Memory-Mapped IO (MMIO) 空间不足,或者配置错误。 有关如何计算和配置 VM 所需的资源的信息,请参阅以下文章:

数据收集

如果仍无法解决问题,请联系Microsoft支持部门或 vGPU 供应商获取更多帮助。 准备共享你在故障排除时收集的信息以及故障排除结果。 此外,请收集以下信息:

  • 若要收集有关 GPU 的信息,请运行以下 PowerShell 命令:

    Get-PnpDevice -FriendlyName "<device-friendly-name>"
    
  • 如果使用 GPU-P,请在主计算机上运行以下 PowerShell 命令以获取可分区 GPU 的详细信息:

    Get-VMHostPartitionableGpu | FL Name, ValidPartitionCounts
    
  • 记下 DirectX 诊断工具的**“显示**”选项卡上的**“驱动程序模型**”信息。

  • 在 Device Manager 中,请注意“ 常规”、“ 驱动程序 ”和 “位置路径 ”选项卡中受影响 GPU 的属性。

  • 在 Windows Admin Center 中,记下 GPU 状态。

  • 请注意在任务管理器和 nvidia-smi任务管理器中看到的任何适用的加载信息。

详细信息

有关 NVIDIA 硬件、软件和许可证的详细信息,请参阅以下文章:

第三方信息免责声明

本文讨论的第三方产品由独立于微软的公司制造。 Microsoft对这些产品的性能或可靠性不作任何明示或暗示的保证。

第三方联系人免责声明

为了帮助您获取有关此主题的更多信息,Microsoft 提供了第三方的联系信息。 该联系信息可能会在不通知的情况下更改。 微软不保证第三方联系信息的准确性。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
适用于: Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows 11 和 Windows 10
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。