Hyper-V GPU 直通:初學者必備指南
Hyper-V 虛擬機器預設使用模擬的顯示卡,這雖足以應付基本的顯示任務,但缺乏執行 3D 渲染、機器學習推論或基於 CUDA 的運算等 GPU 加速工作負載所需的效能。Hyper-V GPU 直通功能透過將實體顯示卡直接指派給虛擬機器來解決此問題,藉此繞過模擬過程,並讓來賓作業系統能完全存取硬體 GPU。
本指南涵蓋 Hyper-V 中可用的兩種 GPU 指派方法:直接裝置指派 (DDA) 與 GPU 分割 (GPU-P)。閱讀這篇文章,了解如何滿足硬體與軟體需求、在 Windows Server 及客戶端 Windows 版本上設定各方法,以及排除常見問題。
新增功能
本指南已更新,以反映 Windows Server 2025 和近期 Windows 用戶端版本所導入的變更:
- Windows Server 2025 將 GPU 分割 (GPU-P) 作為完全支援的企業級功能推出,讓多個虛擬機器透過以 SR-IOV 為基礎的隔離機制,共享單一實體 GPU。
- Windows Server 2025 現已支援 GPU 分割虛擬機器的即時移轉,讓您可以在不造成虛擬機器停機的情況下維護主機。
- 故障移轉叢集支援已擴充:GPU-P 虛擬機器可設定為叢集角色;如果有相容的 GPU,DDA 支援的虛擬機器也可以在另一個叢集節點上重新啟動。
- RemoteFX vGPU 元件已在 Windows Server 2025 中完全移除(自 Windows Server 2019 起已淘汰)。
- 已更新 GPU 啟用虛擬機器的疑難排解指引和備份注意事項。
什麼是 GPU 直通?
Hyper-V 虛擬機器啟動時,會取得一個模擬的視訊介面卡,由主機 CPU 負責轉譯圖形。這足以供主控台存取和基本桌面使用,但無法提供 GPU 相依工作負載所需的硬體功能:計算著色器、硬體視訊編碼、CUDA 核心或 DirectX 12 支援。
GPU 直通可消除此模擬層。Hyper-V 不會透過虛擬介面卡傳送圖形,而是在 PCI Express (PCIe) 層級將實體視訊卡指派給虛擬機器。客體作業系統會使用供應商的原生驅動程式直接與 GPU 通訊,而非透過 Hyper-V 抽象層。從虛擬機器內執行的應用程式來看,GPU 的運作方式就如同安裝在實體機器中一樣。
Hyper-V 支援兩種機制。直接裝置指派 (DDA) 會將整個實體 GPU 指派給單一虛擬機器。GPU 分割 (GPU-P) 則會將單一顯示卡分割成彼此隔離的部分,讓多個虛擬機器共享。稍後本指南將詳細介紹這兩種機制。
注意: GPU 可以整合在 CPU 晶粒上(常見於近期的 Intel 和 AMD 處理器),也可以安裝在透過 PCIe 連接至主機板的獨立視訊卡上。 GPU 直通和分割通常以獨立 GPU 為目標,不過用戶端 Windows 版本上的 GPU-P 也可搭配整合式顯示卡運作。
Hyper-V 中 GPU 直通的主要優點
透過 GPU 直通連接的實體顯示卡,可供需要在虛擬機器中使用硬體加速圖形的家庭使用者、開發人員、設計師及其他人使用。常見情境包括:
- 執行 3D 建模、AutoCAD 製圖、工程模擬、遊戲開發和硬體加速算繪等圖形密集型應用程式;
- 執行需要硬體加速功能的遊戲;某些遊戲若沒有實體顯示卡可能無法運作;
- 執行運用 GPU 運算能力的機器學習 (ML) 和人工智慧 (AI) 作業量。
GPU 直通的優點包括:
- 提升圖形效能。 虛擬機器可直接存取顯示卡,以執行要求嚴苛的應用程式或遊戲。影片播放更加流暢,並可使用最新圖形 API 進行硬體加速算繪。
- 彈性運用硬體。 在專用工作站不切實際的情況下,單一 Hyper-V 主機可執行多部具有不同圖形作業量的虛擬機器。
- 成本效益。 GPU 直通可透過整合作業量降低硬體成本。此功能也適用於虛擬桌面基礎結構 (VDI) 部署。
GPU 直通與 GPU 分割 (GPU-P) 的比較
Hyper-V 提供兩種將 GPU 資源指派給虛擬機器的方法:
- 直接裝置指派 (DDA)會將整個實體 GPU 專屬指派給單一虛擬機器。虛擬機器可完整存取硬體並獲得最高效能,但其他虛擬機器無法使用該 GPU。Windows Server 2016 及更新版本的資料中心版本支援 DDA。使用 DDA 的虛擬機器無法進行即時移轉。
- GPU 分割 (GPU-P)使用 SR-IOV 將單一實體 GPU 分割成多個彼此隔離的部分,讓多部虛擬機器共享相同硬體。每部虛擬機器都會獲得專用的 GPU 資源(記憶體、運算資源和編碼器),並受到硬體強制隔離。GPU-P 是 Windows Server 2025 中受到完整支援的企業功能,也可透過 PowerShell 用於 Windows 10/11 用戶端版本。
當作業量需要使用完整 GPU,或硬體不支援分割時,建議使用 DDA。 GPU-P 更適合需要讓多個虛擬機器(VM)獲得 GPU 加速,但無需佔用顯示卡 100% 資源的環境。此外,GPU-P 還支援 Windows Server 2025 中的即時遷移與故障移轉叢集功能,而 DDA 則不支援。
實體 GPU 可以運作於 DDA 或 GPU-P 模式,但無法同時運作於兩種模式。
需求
若要在 Hyper-V 主機上為虛擬機器配置 GPU 直通,必須滿足特定的硬體與軟體需求。並非所有顯示卡都支援此特點。
硬體需求
- Hyper-V 主機上的 CPU 必須支援 Intel VT-d 或 AMD-V 虛擬化功能。 必須在 UEFI/BIOS 設定中啟用相應特點。
- CPU 必須支援輸入輸出記憶體管理單元 (IOMMU)。此特點是進行 PCI Express 直通(包括 GPU 直通)的必要條件。
- 若要在 Windows Server 2025 中進行帶有即時遷移的 GPU 分割,CPU 必須支援特定的 DMA(直接記憶體存取)追蹤功能。 Intel Sapphire Rapids(或更新版本)及 AMD EPYC Milan(或更新版本)處理器均符合此需求。
- 需配備支援 GPU 虛擬化技術(例如 NVIDIA GRID 或 AMD MxGPU(多使用者 GPU))之 GPU 的顯示卡。這些技術因供應商而異。採用伺服器級硬體可提高成功率。 使用 PCI 中斷 (INTx) 的舊式裝置不被支援。
- 進行 GPU 分割時,GPU 必須支援 SR-IOV(單根輸入/輸出虛擬化)。支援的型號包括 NVIDIA A2、A10、A16 及 A40 GPU。
軟體需求
- DDA 需使用 Windows Server 2016 或更新版本。若需支援叢集與即時遷移的 GPU 分割功能,建議使用 Windows Server 2025 Datacenter。
- 若要在客戶端系統上進行 GPU 分割,需使用 Windows 10(版本 1903 或更新)或 Windows 11。客戶端 Windows 版本不支援 DDA。
- 必須在 Windows 中啟用 Hyper-V 角色。
- Hyper-V 主機及虛擬機器 (VM) 來賓作業系統中必須安裝最新的 GPU 驅動程式。
- 僅能使用第 2 代 Hyper-V 虛擬機器進行 DDA 的 GPU 直通。
限制事項與不支援的設定
請注意,在使用 GPU 直通時,以下設定 不 受支援:
- 已啟用 Hyper-V 動態記憶體的虛擬機器無法使用 GPU 直通。 指派 GPU 之前,必須停用動態記憶體。
- 使用 DDA 進行 GPU 直通僅適用於 Windows Server 資料中心版本。叢集環境中的 GPU 分割也需要資料中心版本。
- 如果 Hyper-V 主機上部署了適用於 Linux 的 Windows 子系統,透過分割指派 GPU 時,虛擬機器可能會發生代碼 43 錯誤。
- 在 Windows Server 2025 之前的版本中,GPU 虛擬機器不支援高可用性 (HA) 和虛擬機器即時移轉等叢集功能。Windows Server 2025 新增了對 GPU-P 虛擬機器即時移轉的支援,以及對 DDA 虛擬機器的故障移轉重新啟動功能。
- GPU 指派給虛擬機器時,不支援虛擬機器儲存/還原和自動檢查點。指派 GPU 之前,請停用自動檢查點。
設定 GPU 直通:須知事項
指派 GPU 給 Hyper-V 虛擬機器時所採用的方法,取決於您的 Windows 版本,以及您需要的硬體共享程度。Microsoft 曾先後提供三種方法,目前僅有兩種仍受支援。
RemoteFX vGPU (已淘汰)。RemoteFX 從 Windows Server 2012 R2 到 Windows Server 2016 皆有提供,擴充了遠端桌面通訊協定 (RDP),可讓多部虛擬機器共享單一主機 GPU。對於無法實際為每部虛擬機器配置一張完整顯示卡的高密度 VDI 環境而言,此功能相當實用。然而,RemoteFX 將每部虛擬機器的專用視訊記憶體限制為 1 GB,並將影格速率限制為 30 FPS。由於 Hyper-V 實作中存在架構安全性漏洞,Microsoft 在 Windows Server 2019 和 Windows 10 組建 1809 中將其淘汰,並且已將其完全移除在 Windows Server 2025 中。如果您仍在執行隨附 RemoteFX 的版本,可使用專題更新移除此元件。
直接裝置指派 (DDA)。DDA 在 Windows Server 2016 中推出,取代 RemoteFX,適用於需要完整 GPU 效能的情境。它會將整個 PCIe 裝置(GPU、NVMe 磁碟機或其他介面卡)直接指派給單一虛擬機器,不進行共享,也不使用模擬層。虛擬機器會載入供應商的原生驅動程式,並可不受限制地存取視訊記憶體和影格速率。DDA 相當於 Hyper-V 版本的 VMware PCI 直通。其取捨在於彈性:只有一部虛擬機器可以使用該顯示卡;虛擬機器無法即時移轉(因為它會繫結至主機上的實體 PCIe 路徑);而且 DDA 僅適用於 Windows Server 資料中心版本。. 在 Windows Server 2025 中,使用 DDA 的虛擬機器已獲得故障移轉叢集支援,這表示如果有相容的 GPU,叢集就能在另一個節點上重新啟動虛擬機器,但仍不支援即時移轉。
GPU 分割 (GPU-P)。GPU-P 是 RemoteFX 的新一代技術。在 Windows Server 2025 上,它使用 SR-IOV 將單一實體 GPU 分割成多個彼此隔離的區塊,讓每個虛擬機器都能專用一部分運算、記憶體和編碼器資源,並由硬體強制隔離。與 DDA 不同,GPU-P 在 Windows Server 2025 資料中心版中支援即時移轉和故障移轉叢集,因此適用於需要虛擬機器移動性的生產環境。在用戶端 Windows 版本 (Windows 10 組建 1903 以上版本和 Windows 11) 上,可透過 PowerShell 使用 GPU-P,但其仰賴 WDDM 半虛擬化,而非真正的 SR-IOV 分割。主機和來賓必須執行相同的作業系統版本,而且必須手動將 GPU 驅動程式從主機複製到來賓。
實際上很簡單:如果您在 Windows Server 上需要讓單一虛擬機器使用完整的 GPU,請使用 DDA。如果多個虛擬機器需要 GPU 加速,或您需要即時移轉,請在 Windows Server 2025 上使用 GPU-P。在用戶端 Windows 上,透過 PowerShell 使用 GPU-P 是唯一受支援的方式。
在 Hyper-V 中設定 GPU 直通
請依照下列步驟準備環境並設定 Hyper-V GPU 直通。
準備設定 GPU 直通
- 確認您的硬體和軟體符合 GPU 虛擬化需求。
- 在 Hyper-V 主機的 UEFI/BIOS 中,為 CPU 啟用 Intel VT-d 或 AMD-V 虛擬化功能。
- 啟用 IOMMU 。IOMMU 設定的位置會因主機板和 UEFI/BIOS 版本而異。在某些情況下,該設定會位於 North Bridge 組態中。啟用 Intel VT-d 或 AMD-V 時,也可能會一併啟用 IOMMU。請檢查 UEFI/BIOS 中的 Memory Remap 功能。
您可以在 Hyper-V 主機上使用下列 PowerShell 命令 (以系統管理員身分執行),確認是否已啟用 IOMMU:
(Get-VMHost).IovSupport; (Get-VMHost).IovSupportReasonsTrue = 已啟用; False = 已停用。
- 移除將使用 GPU 直通的虛擬機器的所有檢查點。
若要停用虛擬機器的自動檢查點,請執行:
Set-VM -Name VMName -AutomaticStopAction TurnOff
Windows Server
中的 GPU 直通 以下步驟會使用 DDA,在 Windows Server 上將實體 GPU 指派給虛擬機器。
- 設定虛擬機器的快取類型和 MMIO(記憶體對應 I/O)空間限制。請以系統管理員身分執行此 PowerShell 命令:
Set-VM -Name VMName -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb您也可以分別執行三個命令:
Set-VM -GuestControlledCacheTypes $true -VMName YourVMName Set-VM -LowMemoryMappedIoSpace 3Gb -VMName YourVMName Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName YourVMName這些限制會定義記憶體視窗,讓虛擬機器能夠存取裝置。您可以使用 Microsoft 提供的 機器設定檔腳本 計算最佳 MMIO 值。不同的視訊介面卡所需的正確值各不相同。如果啟動虛擬機器時看到資源不足的訊息,請將其關機並調整這些值。MMIO 空間中 32 位元以上部分使用的值為 33280 MB(32 位元 MMIO 視窗適用 3 GB)。
- 識別您要直通的顯示卡之 PCI Express 位置路徑。
您可以在裝置管理員中找到此資訊。執行下列命令以開啟裝置管理員:
Devmgmt.msc在裝置管理員中:
- 在"顯示卡"下方,以滑鼠右鍵按一下目標顯示卡,然後按一下 "屬性"。
- 選取 "詳細資訊" 索引標籤。
- 從屬性下拉式選單中選取 "位置路徑",然後複製該值。

或者,使用 PowerShell 擷取位置路徑:
Get-PnpDevice | Where-Object {$_.Present -eq $true} | Where-Object {$_.Class -eq "Display"}|select Name,InstanceId以及:
Get-PnpDevice -Class Display | ForEach-Object { Write-Output "$($_.FriendlyName) has a device id of $($_.DeviceId) and is located at $($_ | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths | Select-Object -ExpandProperty Data | Where-Object { $_ -like "PCIROOT*" })"; }輸出應包含類似下列的字串:
"PCIROOT(0)#PCI(0300)#PCI(0000)"

- 在裝置管理員中停用顯示卡。以滑鼠右鍵按一下視訊介面卡,然後按一下 "停用裝置"。

- 在 PowerShell 中卸載已停用的顯示卡:
Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" -Force未安裝分割區驅動程式時,必須使用 -Force 旗標。裝置供應商可能會提供此選用的安全性緩解驅動程式。如果您打算安裝此驅動程式,請先安裝,再從主機卸載 PCIe 裝置。
上述使用的位置路徑僅供說明之用; 將其替換為您的特定值。
- 將 顯示卡指派給虛擬機器:
Add-VMAssignableDevice -VMName VMName -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" - 開啟虛擬機器電源,並確認實體顯示卡與預設的微軟 Hyper-V 視訊介面卡一同出現在 裝置管理員 中。
- 在虛擬機器的客體作業系統中安裝顯示卡的驅動程式。從 NVIDIA 或 AMD 官方網站下載驅動程式。
- 若要從虛擬機器中中斷顯示卡連線,請停止虛擬機器並執行:
Remove-VMAssignableDevice -VMName YourVMName -LocationPath $locationPath然後將 GPU 重新連線至 Hyper-V 主機:
Mount-VMHostAssignableDevice -LocationPath $locationPath
。以下內容據此翻譯。
Windows 10 和 11 中的組態
在用戶端 Windows 版本(Windows 10 組建 1903 及更新版本、Windows 11)中,DDA 無法使用。支援的方法是 GPU 分割:
- 確認您的顯示卡是否支援 GPU 分割。在 Windows 10 中,請執行:
Get-VMPartitionableGpu在 Windows 11 中 :
Get-VMHostPartitionableGpu - 使用
Add-VMGpuPartitionAdapterCmdlet 將 GPU 分割指派給虛擬機器。不過,您必須將 GPU 驅動程式從 Hyper-V 主機複製到虛擬機器。主機和客體上的驅動程式版本必須相同。Easy-GPU-PV 指令碼可自動執行此程序。請將指令碼下載為 ZIP 檔案,並解壓縮至 Hyper-V 主機上的資料夾。此指令碼運用 Windows Subsystem for Linux (WSL2) 和 Windows Sandbox 所使用的 GPU 半虛擬化機制。 - 以系統管理員身分開啟 PowerShell,並允許執行指令碼:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser - 關閉虛擬機器。執行指令碼,將 GPU 驅動程式從主機複製到虛擬機器:
.\Update-VMGpuPartitionDriver.ps1 -VMName YourVMName -GPUName "AUTO" - 設定虛擬機器以使用 GPU 分割:
Set-VM -VMName VMName -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb Add-VMGpuPartitionAdapter -VMName YourVMName - 更新 Hyper-V 主機上的 GPU 驅動程式後,也請更新虛擬機器中的驅動程式。虛擬機器必須關閉電源:
.\Update-VMGpuPartitionDriver.ps1 -VMName YourVMName -GPUName "AUTO" - 若要從虛擬機器移除 GPU 分割:
Remove-VMGpuPartitionAdapter -VMName "YourVMName"成功完成組態後,虛擬機器內的 裝置管理員 中應會出現相應的顯示卡。您也會在客體 Windows 佈景主題中看到桌面透明等視覺效果。
請注意,即使完成 GPU 直通組態,某些遊戲和應用程式仍可能無法執行。若應用程式強制執行硬體相容性檢查,而客體作業系統回報的 GPU 資訊與主機上的資訊不同,就可能發生此情況。有些應用程式也會偵測到自己正在虛擬機器內執行。
如果相依於 OpenGL 的應用程式無法在虛擬機器中運作,安裝 OpenGL 相容性套件 可能會有幫助。
在 Windows 10 或 11 上使用 GPU 分割時,裝置管理員中列出的顯示卡會顯示為 Microsoft 驅動程式,而非實體 GPU 型號。NVIDIA 控制台等廠商專用工具無法在虛擬機器中使用。
若您未先中斷連線就關閉 RDP 工作階段,可能會發生另一個問題。在此情況下,虛擬機器可能會失去對 GPU 記憶體的存取權,而依賴 GPU 的應用程式會回報視訊記憶體無法存取。透過 RDP 重新連線無法解決此問題; 您必須重新啟動受影響的應用程式。
GPU 直通問題疑難排解
如果視訊卡指派給虛擬機器後無法正常運作,請檢查下列項目:
- 確認已安裝最新的 GPU 驅動程式,且沒有與驅動程式相關的錯誤。開啟"裝置管理員"並檢查裝置狀態。請從供應商網站(NVIDIA、AMD、Intel)安裝驅動程式,而不要依賴 Windows Update。
- 確認已為虛擬機器配置足夠的 MMIO 空間。
- 確認供應商正式支援在您的特定圖形介面卡上使用 GPU 直通。並非所有消費級視訊卡都支援此功能。有些供應商只在較高階的型號上提供 GPU 直通。
- 確認在虛擬機器內執行的應用程式支援您的視訊卡及其驅動程式。
- 啟用下列群組原則,以允許透過遠端桌面使用 GPU:
Computer ConfigurationTemplatesComponentsDesktop ServicesDesktop Session HostSession Environmenthardware graphics adapters for all Remote Desktop Services sessions將此值設為 已啟用 。
- 如果您看到類似 "作業失敗,因為找不到物件" 或 錯誤 12 的錯誤,請將下列登錄機碼新增至:
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsHyperV
值:
RequireSecureDeviceAssignment = 0 (REG_DWORD)
RequireSupportedDeviceAssignment = 0 (REG_DWORD)
您可以使用 PowerShell 設定這些值:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\HyperV" -Name "RequireSecureDeviceAssignment" -Type DWORD -Value 0 -Force Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\HyperV" -Name "RequireSupportedDeviceAssignment" -Type DWORD -Value 0 -Force
- 若要略過虛擬機器內的 Hypervisor 驅動程式檢查,請使用 Enterprise Windows 驅動程式開發套件 (WDK):
- 將 WDK ISO 掛接至虛擬機器的虛擬 DVD 磁碟機。
- 執行 E:LaunchBuildEnv.cmd (其中 E: 是虛擬 DVD 磁碟機),然後執行 PowerShell 。
- 瀏覽至包含 Remove-HypervisorChecks.ps1 指令碼的目錄。
- 執行命令以移除視訊驅動程式的 Hypervisor 檢查(以 NVIDIA 為例):
./Remove-HypervisorChecks.ps1 -Nvidia -DriverPath "C:\path-to-driver\package.exe" - 等待指令碼執行完成。
- 將產生的驅動程式(patched-driver.zip)複製到虛擬機器,啟用測試模式並安裝驅動程式。
- 如果遇到 錯誤 43 ,請確認 GPU 及其音效控制器(NVIDIA 顯示卡通常包含音訊裝置)已一併指派給虛擬機器。
- 如果執行下列項目時出現錯誤:
Update-VMGpuPartitionDriver.ps1 -VMName “YourVMName” -GPUName “AUTO”這可能是由虛擬硬碟上有多個分割區(容量卷)所造成。 請嘗試在非系統磁碟分割區上設定 hidden 屬性,或先備份資料,再暫時移除這些磁碟分割區。或者,請在 PowerShell 指令碼或命令中明確指定系統磁碟分割區。
GPU 虛擬機器的備份與還原考量
標準 Hyper-V 備份工作流程假設虛擬機器具有可攜性:您可以將其還原至任何相容的主機並啟動。啟用 GPU 的虛擬機器打破了這項假設。無論是透過 DDA 還是 GPU-P 指派,虛擬機器都會與實體硬體連結,而復原目標上可能沒有該硬體,或其設定可能不完全相同。這使得備份過程簡單明瞭,但復原則取決於硬體是否可用。
GPU 本身也帶來資料一致性方面的考量。備份軟體會擷取磁碟狀態,但無法對 GPU 影片記憶體的內容建立快照。對於執行大量 GPU 工作負載的虛擬機器,這表示即使磁碟資料符合應用程式一致性,備份所反映的仍是硬體狀態的 離線 或 與崩潰一致 檢視。若要盡量縮小差距,請使用搭配 卷影複本服務 (VSS) 的生產檢查點,或使用支援 VSS 的備份工具,確保從 GPU 記憶體寫入磁碟的資料能以一致的狀態擷取。
對啟用 GPU 的虛擬機器而言,選擇 主機層級與虛擬機器層級的備份 比標準虛擬機器更不明顯:
- 主機層級備份會擷取 VHDX 檔案和虛擬機器組態。這是標準做法,但還原後需要手動重新對應 GPU。
- 客體層級備份需要在虛擬機器內安裝備份代理程式。對 GPU 工作負載而言,這種做法通常更實用,因為它會將虛擬機器視為標準伺服器,並在擷取資料時避開 GPU 直通的複雜性。
對於採用專用直通的 DDA 組態,虛擬機器會繫結至主機上的特定 PCI Express 路徑。如果您將啟用 DDA 的虛擬機器還原至不同的主機,虛擬機器可能無法啟動,因為原始 PCIe 路徑 (例如 PciRoot(0x0)/Pci(0x3,0x0)…) 可能不存在,或可能已指派給不同的裝置。
若要在復原後解決硬體不相符的問題:
- 從虛擬機器組態中移除遺失的 GPU 裝置。
- 在新主機上卸載相容的 GPU。
- 使用 PowerShell 將新的 GPU 重新指派給還原後的虛擬機器。
在 Windows Server 2025 和 Windows 11 中,GPU 分割功能讓組態更具彈性,但也帶來了自身的復原考量。 GPU-P 要求主機與客體 GPU 驅動程式版本相符。如果您將虛擬機器還原至執行不同驅動程式版本的主機,GPU 加速可能會無法初始化。
在復原期間(尤其是在 Hyper-V 故障移轉叢集 中),目標主機必須有足夠可用的 GPU 分割容量。如果主機的 GPU 已完全分配給其他正在執行的虛擬機器,還原的虛擬機器將無法啟動,或會改用軟體呈現。
Windows Server 2025 改善了啟用 GPU 的虛擬機器的移動性。GPU-P 虛擬機器支援叢集和獨立組態中的即時移轉。在故障移轉情境中,只要目標上已設定相容的 GPU 供 DDA 或 GPU-P 使用,叢集就能在另一個節點上重新啟動虛擬機器。
請遵循下列建議,備份和復原啟用 GPU 的虛擬機器:
- 記錄 PCI 路徑,並記下用來指派 GPU 的 PowerShell 命令。準備好可直接使用的指令碼,可減少在不同主機上還原時的停機時間。
- 使用所有叢集節點上相同的 GPU 型號和驅動程式版本,將硬體標準化。如此可確保還原的虛擬機器無論在哪個主機上啟動,都會使用相同的硬體環境。
- 定期將啟用 GPU 的虛擬機器測試還原至不同主機,以確認復原團隊能夠重新對應 PCI 裝置。
- 建立還原後指令碼,以偵測可用的 GPU,並自動將其指派給還原的虛擬機器。
結論
在 Hyper-V 主機上使用具備 GPU 直通功能的虛擬機器,對某些工作負載而言可能是最佳解決方案,但其限制需要仔細規劃。一般建議使用伺服器級硬體和 Windows Server,以透過 DDA 將獨立 GPU 直通。開始設定之前,請驗證軟體和硬體的相容性。請定期備份 Hyper-V 虛擬機器,以便在 GPU 設定或持續運作期間發生問題時,避免資料遺失。
.
FAQ
如何在 Hyper-V 中啟用 GPU 直通功能?
若要啟用 Hyper-V GPU 直通,請停用虛擬機器的自動檢查點和動態記憶體。在裝置管理員或 PowerShell 中,識別目標 GPU 的 PCI Express 位置路徑。在主機上停用 GPU,使用 Dismount-VmHostAssignableDevice Cmdlet 卸載 GPU,然後使用 Add-VMAssignableDevice 將 GPU 指派給虛擬機器。在用戶端 Windows 版本(Windows 10 和 11)上,請改用 Add-VMGpuPartitionAdapter Cmdlet 進行 GPU 分割。
Hyper-V 中的 GPU 直通是什麼?
GPU 直通是一項 Hyper-V 特點,可將實體顯示卡直接指派給虛擬機器。虛擬機器會直接使用硬體 GPU 而不進行模擬,相較於預設的模擬顯示卡,在處理圖形密集型及運算密集型工作負載時,能提供顯著更佳的效能。 Hyper-V 支援兩種方法:直接裝置指派 (DDA),將整個 GPU 指派給單一虛擬機器;以及 GPU 分割 (GPU-P),允許多個虛擬機器共用單一 GPU。
Hyper-V 中執行 GPU 直通功能有哪些需求?
GPU 直通功能需要配備 NVIDIA 或 AMD 的獨立 PCIe GPU,且該 GPU 須支援 NVIDIA GRID 或 AMD MxGPU 等 GPU 虛擬化技術。CPU 必須支援 IOMMU(Intel VT-d 或 AMD-Vi),且此特點必須在 UEFI/BIOS 中啟用。Hyper-V 主機與來賓虛擬機器兩者皆須安裝最新的 GPU 驅動程式。 若要使用 DDA,您至少需要 Windows Server 2016;若要使用 GPU 分割,則需 Windows 10(版本 1903 以上),並已啟用 Hyper-V 角色。DDA 僅支援第 2 代虛擬機器。
Hyper-V 中 GPU 直通技術有哪些限制?
使用 Hyper-V GPU 直通功能的虛擬機器無法使用"動態記憶體"或自動檢查點。DDA 僅限於 Windows Server Datacenter 版本,且每台虛擬機器僅分配一顆 GPU,不支援即時遷移。GPU 分割功能需要主機與來賓作業系統的驅動程式版本相符。 在 2025 年之前的 Windows Server 版本中,啟用 GPU 的虛擬機器無法使用故障移轉叢集和即時遷移功能。主機上的 Windows Subsystem for Linux 可能會導致虛擬機器發生錯誤 43。
如何在 Hyper-V 中排除 GPU 直通問題?
首先,確認已從供應商網站安裝正確的 GPU 驅動程式(而非透過 Windows Update)。確認已停用虛擬機器的動態記憶體和自動檢查點。確認已配置足夠的 MMIO 空間。如果出現錯誤 43,請確認 GPU 和其音訊控制器已一併指派,並嘗試在主機上停用 WSL2。若出現錯誤 12 或"找不到物件"錯誤,請在 HKLM 下將 RequireSecureDeviceAssignment 和 RequireSupportedDeviceAssignment 登錄值設為 0。