Hyper-VのGPUパススルー:初心者向け必携ガイド

Hyper-Vの仮想マシンは、デフォルトでエミュレートされたグラフィックスアダプタを使用します。これは基本的な表示作業には十分ですが、3Dレンダリング、機械学習の推論、CUDAベースの計算など、GPUによる高速化が必要なワークロードには十分なパフォーマンスを発揮できません。Hyper-VのGPUパススルー機能は、エミュレーションをバイパスして物理ビデオカードを仮想マシンに直接割り当てることで、ゲストOSがハードウェアGPUに完全にアクセスできるようにし、この問題を解決します。

このガイドでは、Hyper-V で利用可能な 2 つの GPU 割り当て方法、すなわち"ダイレクト デバイス割り当て (DDA)"と"GPU パーティショニング (GPU-P)"について解説します。本記事では、ハードウェアおよびソフトウェアの要件を満たす方法、Windows Server およびクライアント版 Windows での各方法の設定方法、および一般的な問題のトラブルシューティング方法について説明します。

Hyper-V バックアップ用 NAKIVO

Hyper-V バックアップ用 NAKIVO

Hyper-V 向けのエージェントレスでアプリケーションを認識するバックアップ機能。ランサムウェア対策、バックアップからの仮想マシンの即時起動、その他の仮想/物理プラットフォームへの対応など。

新着情報

このガイドは、Windows Server 2025 および最近の Windows クライアントのリリースで導入された変更を反映するために更新されました:

  • Windows Server 2025 では、GPU パーティショニング(GPU-P)が完全にサポートされたエンタープライズ機能として導入され、SR-IOV に基づく分離機能を通じて、複数の仮想マシンが 1 つの物理 GPU を共有できるようになります。
  • Windows Server 2025 では、GPU パーティションを持つ仮想マシン(VM)に対するライブマイグレーションがサポートされるようになり、VM のダウンタイムを発生させることなくホストのメンテナンスが可能になりました。
  • フェイルオーバー・クラスタリングのサポートが拡充されました。GPU-P VM をクラスタ化されたロールとして構成できるようになり、DDA 対応の VM は、互換性のある GPU が利用可能な場合、別のクラスタノード上で再起動できるようになりました。
  • Windows Server 2025 では、RemoteFX vGPU コンポーネントが完全に削除されました(Windows Server 2019 以降、非推奨となっています)。
  • GPU対応VMに関するトラブルシューティングのガイダンスおよびバックアップに関する注意事項の更新。

GPUパススルーとは何ですか?

Hyper-V 仮想マシンが起動すると、ホスト CPU を通じてグラフィックスをレンダリングするエミュレートされたビデオアダプタが割り当てられます。これはコンソールへのアクセスや基本的なデスクトップ操作には十分ですが、GPU に依存するワークロードが頼りにしているハードウェア機能(コンピュートシェーダー、ハードウェアによるビデオエンコーディング、CUDA コア、DirectX 12 のサポートなど)を利用することはできません。

GPUパススルーにより、このエミュレーション層が排除されます。Hyper-Vは、グラフィックスを仮想アダプタを経由させる代わりに、PCI Express(PCIe)レベルで物理ビデオカードをVMに割り当てます。ゲストOSは、Hyper-Vの抽象化層ではなく、ベンダーのネイティブドライバを使用してGPUと直接通信します。VM内で実行されているアプリケーションから見ると、GPUはあたかも物理マシンに搭載されているかのように動作します。

Hyper-V では、このために 2 つの仕組みがサポートされています。"ダイレクト・デバイス・アサインメント(DDA)"は、物理 GPU 全体を 1 つの仮想マシンに割り当てます。"GPU パーティショニング(GPU-P)"は、1 枚のカードを独立した領域に分割し、複数の仮想マシンで共有できるようにします。これらについては、このガイドの後半で詳しく説明します。

注: GPUは、CPUダイに統合される場合(最近のIntelやAMDのプロセッサで一般的)もあれば、PCIeを介してマザーボードに接続された外付けグラフィックカードに搭載される場合もあります。GPUパススルーやパーティショニングは通常、外付けGPUを対象としていますが、クライアント版WindowsのGPU-Pは、統合グラフィックスでも動作します。

Hyper-VにおけるGPUパススルーの主な利点

GPUパススルーを介して接続された物理グラフィックスカードは、仮想マシン(VM)内でハードウェアアクセラレーションによるグラフィックス処理を必要とする一般ユーザー、開発者、デザイナーなどに役立ちます。代表的な利用例としては、次のようなものがあります:

  • 3Dモデリング、AutoCADによる製図、工学シミュレーション、ゲーム開発、ハードウェアアクセラレーションによるレンダリングなど、グラフィックス処理を多用するアプリケーションの実行;
  • ハードウェアアクセラレーション機能が必要なゲームを実行する場合、一部のタイトルでは、物理的なグラフィックカードがないと動作しない場合があります。
  • GPUの演算能力を活用した機械学習(ML)および人工知能(AI)のワークロードを実行する。

GPUパススルーのメリットには、次のようなものがあります:

  • グラフィック性能が向上しました。 VMは、高負荷なアプリケーションやゲームにおいて、グラフィックカードに直接アクセスできるようになります。動画の再生がよりスムーズになり、最新のグラフィックAPIによるハードウェアアクセラレーションによるレンダリングが可能になります。
  • ハードウェアの柔軟な活用。 専用のワークステーションを導入することが現実的でない場合、1台のHyper-Vホストで、グラフィックス負荷の異なる複数のVMを実行することができます。
  • 費用対効果。 GPUパススルーは、ワークロードを統合することでハードウェアコストを削減できます。この機能は、仮想デスクトップインフラストラクチャ(VDI)の導入環境にも適用可能です。

GPUパススルーとGPUパーティショニング(GPU-P)の比較

Hyper-V では、仮想マシンに GPU リソースを割り当てるために、次の 2 つの方法があります。

  • 直接デバイス割り当て(DDA) 1つのVMに物理GPU全体を排他的に割り当てます。そのVMはハードウェアへの完全なアクセス権と最高のパフォーマンスを得られますが、他のVMはそのGPUを使用することはできません。DDAはWindows Server 2016以降(Datacenterエディション)で利用可能です。DDAで動作するVMはライブマイグレーションを行うことはできません。
  • GPUのパーティショニング(GPU-P) SR-IOV を使用して、1 つの物理 GPU を複数の独立した領域に分割し、複数の仮想マシン (VM) が同じハードウェアを共有できるようにします。各 VM は、ハードウェアによって強制される分離機能により、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)に対応している必要があります。この機能は、GPUパススルーを含むPCI Expressパススルーに必須です。
  • Windows Server 2025 におけるライブマイグレーションを伴う GPU パーティショニングでは、CPU が特定の DMA (ダイレクト・メモリ・アクセス) 追跡機能をサポートしている必要があります。Intel Sapphire Rapids(またはそれ以降)および AMD EPYC Milan(またはそれ以降)プロセッサは、この要件を満たしています。
  • NVIDIA GRID や AMD MxGPU(Multiuser GPU)などの 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 ホストおよび仮想マシンのゲスト OS には、最新の GPU ドライバーをインストールする必要があります。
  • DDA を使用した GPU パススルーには、第 2 世代の Hyper-V 仮想マシンのみを使用できます。

制限事項および未対応の設定

以下の設定については、以下の点に注意してください。 ではない GPUパススルー使用時の対応状況:

  • Hyper-Vのダイナミックメモリが有効になっている仮想マシンでは、GPUパススルーを使用できません。GPUを割り当てる前に、ダイナミックメモリを無効にする必要があります。
  • DDA を使用した GPU パススルーは、Windows Server の Datacenter エディションでのみ利用可能です。また、クラスタ環境での GPU パーティショニングにも、Datacenter エディションが必要です。
  • Hyper-V ホストに Windows Subsystem for Linux が導入されている場合、パーティショニングを通じて GPU を割り当てると、仮想マシンでコード 43 のエラーが発生することがあります。
  • Windows Server 2025 以前のバージョンでは、GPU 対応 VM に対して、高可用性 (HA) や VM のライブマイグレーションなどのクラスタリング機能はサポートされていません。Windows Server 2025 では、GPU-P VM に対するライブマイグレーションのサポートと、DDA VM に対するフェイルオーバー再起動が追加されました。
  • GPUが割り当てられたVMでは、VMの保存・復元および自動チェックポイントはサポートされていません。GPUを割り当てる前に、自動チェックポイントを無効にしてください。

GPUパススルーの設定:知っておくべきこと

Hyper-V 仮想マシンに GPU を割り当てる方法は、お使いの Windows のバージョンや、必要なハードウェア共有のレベルによって異なります。マイクロソフトはこれまで 3 つの手法を提供してきましたが、現在サポートされているのはそのうち 2 つだけです。

RemoteFX vGPU (非推奨)。Windows Server 2012 R2 から Windows Server 2016 まで利用可能だった RemoteFX は、リモート デスクトップ プロトコル(RDP)を拡張し、単一のホスト GPU を複数の仮想マシン(VM)間で共有できるようにする機能でした。これは、各仮想マシンにグラフィックカードを 1 枚ずつ割り当てるのが現実的でない高密度の VDI 環境において有用でした。ただし、RemoteFX では、仮想マシン 1 台あたりの専用ビデオメモリが 1 GB に制限され、フレームレートも 30 FPS に制限されていました。 Microsoftは、Hyper-Vの実装におけるアーキテクチャ上のセキュリティ脆弱性を理由に、Windows Server 2019およびWindows 10 ビルド1809でこの機能を非推奨とし、 完全に削除した Windows Server 2025 では。もしまだ RemoteFX が同梱されているバージョンを使用している場合は、 専用アップデート このコンポーネントを取り外すことができます。

直接デバイス割り当て(DDA). Windows Server 2016で導入されたDDAは、GPUのフルパフォーマンスを必要とするシナリオにおいて、RemoteFXに取って代わりました。DDAは、PCIeデバイス(GPU、NVMeドライブ、その他のアダプタ)全体を、共有やエミュレーション層を介さずに単一のVMに直接パススルーします。VMはベンダーのネイティブドライバをロードし、ビデオメモリやフレームレートに制限なくアクセスできます。DDAは、Hyper-VにおけるVMwareのPCIパススルーに相当する機能です。 その代償として柔軟性が犠牲になります。カードを使用できるのは1台のVMのみであり、そのVMはライブマイグレーションを行うことができません(ホスト上の物理PCIeパスにバインドされているため)。また、DDAはWindows Server Datacenterエディションでのみ利用可能です。Windows Server 2025では、DDAを利用したVMがフェールオーバークラスタリングのサポートを獲得しました。つまり、互換性のあるGPUが利用可能な場合、クラスタは別のノード上でVMを再起動できますが、ライブマイグレーションは依然としてサポートされていません。

GPUのパーティショニング(GPU-P). GPU-P は、RemoteFX の最新の後継技術です。Windows Server 2025 では、SR-IOV を使用して 1 つの物理 GPU を複数の独立したスライスに分割し、各仮想マシン (VM) に、ハードウェアによる分離が確保された専用の演算リソース、メモリ、およびエンコーダーリソースを提供します。DDA とは異なり、GPU-P は Server 2025 Datacenter においてライブマイグレーションとフェイルオーバークラスタリングをサポートしているため、VM の移動性が求められる本番環境での利用が可能です。 クライアント版の Windows(Windows 10 ビルド 1903 以降および Windows 11)では、GPU-P は PowerShell を通じて利用可能ですが、真の SR-IOV パーティショニングではなく、WDDM パラ仮想化に依存しています。ホストとゲストは同じ OS バージョンを実行している必要があり、GPU ドライバーはホストからゲストへ手動でコピーする必要があります。

実用上の意味合いは単純明快です。Windows Server 上の単一の仮想マシンで GPU をフルに活用する必要がある場合は、DDA を使用してください。複数の仮想マシンで GPU アクセラレーションが必要な場合や、ライブマイグレーションが必要な場合は、Windows Server 2025 で GPU-P を使用してください。クライアント版の Windows では、PowerShell 経由での GPU-P のみがサポートされています。

Hyper-V での GPU パススルーの設定

以下の手順に従って、環境の準備を行い、Hyper-VのGPUパススルーを設定してください。

GPUパススルーの設定準備

  1. お使いのハードウェアおよびソフトウェアが、GPU仮想化の要件を満たしていることを確認してください。
  2. 有効にする Intel VT-d または AMD-V Hyper-V ホストの UEFI/BIOS における、お使いの CPU の仮想化機能。
  3. 有効にする IOMMU. IOMMUの設定場所は、マザーボードやUEFI/BIOSのバージョンによって異なります。場合によっては、ノースブリッジの設定項目に表示されることもあります。また、Intel VT-dやAMD-Vを有効にすると、IOMMUも有効になることがあります。UEFI/BIOSの"メモリリマップ"機能を確認してください。

    Hyper-V ホストで IOMMU が有効になっているかどうかは、次の PowerShell コマンド(管理者として実行)で確認できます:

    (Get-VMHost).IovSupport; (Get-VMHost).IovSupportReasons

    True = 有効; 偽 = 無効。

  4. GPUパススルーを使用するVMのチェックポイントをすべて削除してください。

    VMの自動チェックポイントを無効にするには、次のコマンドを実行します:

    Set-VM -Name VMName -AutomaticStopAction TurnOff

Windows Server における GPU パススルー

以下の手順では、DDA を使用して Windows Server 上の仮想マシンに物理 GPU を割り当てます。

  1. VMのキャッシュタイプとMMIO(メモリマッピングI/O)領域の上限を設定します。このPowerShellコマンドを管理者として実行してください:
    Set-VM -Name VMName -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb

    また、3つのコマンドを個別に実行することもできます:

    Set-VM -GuestControlledCacheTypes $true -VMName YourVMName
    Set-VM -LowMemoryMappedIoSpace 3Gb -VMName YourVMName
    Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName YourVMName

    これらの制限は、VM からデバイスにアクセスできるメモリウィンドウを定義します。次の マシンプロファイルスクリプト Microsoftの指示に従って、最適なMMIO値を算出してください。適切な値は、使用するビデオアダプタによって異なります。VMの起動時にリソース不足を示すメッセージが表示された場合は、VMをシャットダウンし、これらの値を調整してください。33280 MBという値は、32ビットを超えるMMIO領域に使用されます(3 GBは32ビットのMMIOウィンドウに適用されます)。

  2. パススルーしたいグラフィックカードのPCI Express接続パスを特定してください。

    これは"デバイスマネージャー"で確認できます。次のコマンドを実行して、"デバイスマネージャー"を開いてください:

    Devmgmt.msc

    "デバイスマネージャー"で:

    • [ディスプレイアダプタ] の下にある対象のディスプレイアダプタを右クリックし、[ プロパティ.
    • [選択] 詳細 タブ。
    • 選択 場所のパス プロパティのドロップダウンメニューから選択し、その値をコピーします。

    Viewing the location path of a video card in Device Manager

    あるいは、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)”

    Identifying the GPU location path in PowerShell

  3. "デバイスマネージャー"でグラフィックカードを無効にします。ビデオアダプタを右クリックし、[ デバイスを無効にする.Disabling a video card
  4. PowerShell で動作しないディスプレイアダプタを取り外します:
    Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" -Force

    その -フォース パーティションドライバがインストールされていない場合は、このフラグが必要です。デバイスメーカーがこのオプションのセキュリティ対策ドライバを提供している場合があります。これをインストールする場合は、ホストからPCIeデバイスをアンマウントする前にインストールしてください。

    上記で使用されているパスはあくまで例示のためのものであり、実際の環境に合わせて適切な値に置き換えてください。

  5. 割り当てる VMへのビデオカードの接続:
    Add-VMAssignableDevice -VMName VMName -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)"
  6. VMの電源を入れ、物理ビデオカードが デバイスマネージャー デフォルトの Microsoft Hyper-V ビデオアダプタと並んで。
  7. VMのゲストOSにグラフィックカードのドライバをインストールします。NVIDIAまたはAMDの公式サイトからドライバをダウンロードしてください。
  8. VMからビデオカードを切断するには、VMを停止してから次のコマンドを実行してください:
    Remove-VMAssignableDevice -VMName YourVMName -LocationPath $locationPath

    次に、GPUをHyper-Vホストに再接続します:

    Mount-VMHostAssignableDevice -LocationPath $locationPath
試してみてください NAKIVO Backup & Replication Hyper-V用

試してみてください NAKIVO Backup & Replication Hyper-V用

15日間の無料トライアルを開始して、エージェントレスでアプリケーションを認識するHyper-Vバックアップを実行しましょう。即時フルリカバリやきめ細かなリカバリ、組み込みのランサムウェア対策機能も備わっています。

Windows 10 および 11 での設定

クライアント側の Windows バージョン(Windows 10 ビルド 1903 以降、Windows 11)では、DDA は利用できません。サポートされている方法は GPU パーティショニングです:

  1. お使いのグラフィックカードがGPUパーティショニングに対応しているかどうかを確認してください。Windows 10では、次のコマンドを実行してください:
    Get-VMPartitionableGpu

    Windows 11 では:

    Get-VMHostPartitionableGpu
  2. ""を使用してください。 Add-VMGpuPartitionAdapter VMにGPUパーティションを割り当てるためのコマンドレットです。ただし、Hyper-Vホストから仮想マシンにGPUドライバーをコピーする必要があります。ホストとゲストのドライバーのバージョンは一致している必要があります。 Easy-GPU-PV このスクリプトを使用すると、このプロセスを自動化できます。スクリプトをZIPファイルとしてダウンロードし、Hyper-Vホスト上のフォルダに解凍してください。このスクリプトは、Windows Subsystem for Linux (WSL2) および Windows Sandbox で使用される GPU パラ仮想化メカニズムを活用しています。
  3. PowerShell を管理者として開き、スクリプトの実行を許可します:
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  4. VMをシャットダウンします。スクリプトを実行して、ホストからVMへGPUドライバをコピーします:
    .\Update-VMGpuPartitionDriver.ps1 -VMName YourVMName -GPUName "AUTO"
  5. GPUパーティショニング用にVMを設定します:
    Set-VM -VMName VMName -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb
    Add-VMGpuPartitionAdapter -VMName YourVMName
  6. Hyper-V ホストで GPU ドライバーを更新したら、VM 内のドライバーも更新してください。この際、VM の電源はオフになっている必要があります:
    .\Update-VMGpuPartitionDriver.ps1 -VMName YourVMName -GPUName "AUTO"
  7. VMからGPUパーティションを削除するには:
    Remove-VMGpuPartitionAdapter -VMName "YourVMName"

    設定が正常に完了すると、対応するディスプレイアダプタが デバイスマネージャー VM内で。また、ゲストOSのWindowsテーマでは、デスクトップの透明化などの視覚効果も確認できます。

GPUパススルーの設定を完了しても、一部のゲームやアプリケーションが動作しない場合があることにご注意ください。これは、アプリケーションがハードウェアの互換性チェックを強制しており、ゲストOSで報告されるGPU情報がホスト上の情報と異なる場合に発生することがあります。また、一部のアプリケーションは、自身が仮想マシン内で実行されていることを検知することもあります。

OpenGLに依存するアプリケーションがVM上で動作しない場合は、 OpenGL 互換パック 役に立つかもしれません。

Windows 10 または 11 で GPU パーティショニングを使用する場合、デバイスマネージャーに表示されるビデオアダプタには、物理的な GPU モデルではなく、Microsoft のドライバーが表示されます。NVIDIA コントロールパネルなどのベンダー固有のツールは、VM では利用できません。

また、RDPセッションを切断せずに終了すると、別の問題が発生する可能性があります。この場合、VMがGPUメモリへのアクセスを失う可能性があり、GPUに依存するアプリケーションでは"ビデオメモリにアクセスできない"というエラーが表示されることがあります。RDP経由で再接続してもこの問題は解決しないため、影響を受けたアプリケーションを再起動する必要があります。

GPUパススルーに関する問題のトラブルシューティング

ビデオカードを仮想マシンに割り当てた後、正常に動作しない場合は、以下の点を確認してください:

  • 最新のGPUドライバーがインストールされており、ドライバーに関連するエラーがないことを確認してください。"デバイスマネージャー"を開き、デバイスの状態を確認してください。Windows Updateに頼るのではなく、メーカーのウェブサイト(NVIDIA、AMD、Intel)からドライバーをインストールしてください。
  • VM に対して十分な MMIO 領域が割り当てられていることを確認してください。
  • お使いのグラフィックアダプタについて、そのベンダーがGPUパススルーを公式にサポートしていることを確認してください。すべての民生用グラフィックカードがこの機能をサポートしているわけではありません。ベンダーによっては、GPUパススルーを上位モデルに限定している場合もあります。
  • VM内で実行されているアプリケーションが、お使いのグラフィックカードとそのドライバーに対応していることを確認してください。
  • リモートデスクトップ経由での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
  • VM内のハイパーバイザードライバのチェックをバイパスするには、 エンタープライズ Windows ドライバー キット (WDK):
    • WDKのISOイメージをVMの仮想DVDドライブにマウントします。
    • 実行 E:LaunchBuildEnv.cmd (ここで、E: は仮想DVDドライブです)その後、次のコマンドを実行します PowerShell.
    • が格納されているディレクトリに移動します。 Remove-HypervisorChecks.ps1 スクリプト。
    • 以下のコマンドを実行して、ビデオドライバのハイパーバイザーチェックを無効にします(NVIDIAの例):
      ./Remove-HypervisorChecks.ps1 -Nvidia -DriverPath "C:\path-to-driver\package.exe"
    • スクリプトの実行が完了するまでお待ちください。
    • 生成されたドライバー(patched-driver.zip)をVMにコピーし、テストモードを有効にして、ドライバーをインストールしてください。
  • もし次のような状況に遭遇した場合は エラー 43、GPUとそのサウンドコントローラ(NVIDIA製カードには多くの場合、オーディオデバイスが搭載されています)が、VMにまとめて割り当てられていることを確認してください。
  • 実行中にエラーが発生した場合は:
    Update-VMGpuPartitionDriver.ps1 -VMName “YourVMName” -GPUName “AUTO”

    この現象は、仮想ハードディスク上に複数のパーティション(ボリューム)が存在することが原因である可能性があります。システムパーティション以外のパーティションに"隠し"属性を設定するか、データをバックアップした後に一時的にそれらを削除してみてください。あるいは、PowerShell スクリプトまたはコマンドでシステムパーティションを明示的に指定してください。

GPU対応VMのバックアップと復旧に関する考慮事項

標準的な Hyper-V バックアップワークフローでは、VM は移植可能であることが前提となっています。つまり、互換性のある任意のホストに復元して起動できるということです。しかし、GPU 対応の VM では、この前提が成り立ちません。DDA または GPU-P を通じて割り当てられた場合でも、その VM は物理ハードウェアに紐付けられており、復元先にはそのハードウェアが存在しないか、あるいは同一の構成になっていない可能性があります。このため、バックアップ自体は簡単に行えますが、復元はハードウェアの可用性に左右されることになります。

GPU自体に関しては、データの一貫性という観点も考慮する必要があります。バックアップソフトウェアはディスクの状態をキャプチャしますが、GPUのビデオRAM内の内容をスナップショットとして取得することはできません。GPUに負荷のかかるワークロードを実行しているVMの場合、これはバックアップが オフライン または クラッシュ耐性あり ディスク上のデータがアプリケーションと一貫性を保っている場合でも、ハードウェアの状態を把握できます。このギャップを最小限に抑えるには、本番環境のチェックポイントを使用し、 ボリューム・シャドウ・コピー・サービス (VSS) または VSS に対応したバックアップツールを使用することで、GPU メモリからディスクへフラッシュされたデータが、一貫性のある状態で確実に取得されます。

どちらを選ぶか ホストレベルおよびゲストレベルのバックアップ GPU対応のVMの場合、標準的なVMに比べてその点はあまり明らかではありません:

  • ホストレベルのバックアップでは、以下の内容を取得します。 VHDX ファイルとVMの設定。これは標準的な方法ですが、復元後にGPUの手動による再マッピングが必要となります。
  • ゲストレベルのバックアップを行うには、VM内にバックアップエージェントをインストールする必要があります。このアプローチは、VMを標準的なサーバーとして扱うため、データ取得時のGPUパススルーに伴う複雑さを回避できることから、GPUワークロードにおいてより実用的な場合が多いです。

排他的なパススルーが設定された DDA 構成の場合、VM はホスト上の特定の PCI Express パスにバインドされます。DDA が有効になっている VM を別のホストに復元すると、元の PCIe パス(例えば PciRoot(0x0)/Pci(0x3,0x0)…) が存在しないか、別のデバイスに割り当てられている可能性があります。

復旧後のハードウェアの不整合を解決するには:

  1. VMの設定から、存在しないGPUデバイスを削除してください。
  2. 新しいホストから、互換性のあるGPUを取り外します。
  3. PowerShell を使用して、復元された VM に新しい GPU を再割り当てします。

Windows Server 2025 および Windows 11 の GPU パーティショニング機能により、構成の柔軟性は高まりますが、回復に関する独自の考慮事項も生じます。GPU-P では、ホストとゲストの GPU ドライバーのバージョンが一致している必要があります。異なるドライバーバージョンが実行されているホストに仮想マシンを復元した場合、GPU アクセラレーションの初期化に失敗する可能性があります。

回復期(特に Hyper-V フェイルオーバー クラスター)、ターゲットホストには十分なGPUパーティション容量が確保されている必要があります。ホストのGPUが、すでに実行中の他のVM間で完全にパーティション分割されている場合、復元されたVMは起動に失敗するか、ソフトウェアレンダリングに切り替わります。

Windows Server 2025 では、GPU 対応仮想マシンのモビリティが向上しています。GPU-P 仮想マシンは、クラスター構成およびスタンドアロン構成でのライブマイグレーションに対応しています。フェイルオーバーが発生した場合、ターゲット側に DDA または GPU-P 用の互換性のある GPU が構成されていれば、クラスターは別のノード上でその仮想マシンを再起動することができます。

GPU対応のVMのバックアップおよび復旧については、以下の推奨事項に従ってください:

  • PCI パスを記録し、GPU を割り当てるために使用した PowerShell コマンドを記録しておきます。あらかじめ作成しておいたスクリプトがあれば、別のホストでの復旧作業中のダウンタイムを短縮できます。
  • すべてのクラスタノードで同一のGPUモデルとドライババージョンを使用することで、ハードウェアを標準化します。これにより、復元されたVMは、どのホストで起動しても、同じハードウェア環境が確保されます。
  • GPU対応VMについて、定期的に別のホストへの復元テストを実施し、復旧チームがPCIデバイスを再マッピングできることを確認してください。
  • 復元後に、利用可能なGPUを検出し、それらを復元されたVMに自動的に割り当てるスクリプトを作成します。

結論

Hyper-V ホスト上で GPU パススルー機能を備えた仮想マシンを使用することは、特定のワークロードにとって最適なソリューションとなり得ますが、その制限事項を考慮して綿密な計画を立てる必要があります。DDA ベースのディスクリート GPU パススルーには、一般的にサーバークラスのハードウェアと Windows Server が推奨されます。構成を開始する前に、ソフトウェアとハードウェアの互換性を確認してください。また、GPU のセットアップ中や運用中に問題が発生した場合のデータ損失に備え、Hyper-V 仮想マシンのバックアップを定期的に取得するようにしてください。

試してみてください NAKIVO Backup & Replication

試してみてください NAKIVO Backup & Replication

無料トライアルを利用して、本ソリューションのデータ保護機能をすべてお試しください。15日間無料です。機能や容量の制限は一切ありません。クレジットカードも不要です。

よくある質問

Hyper-V で GPU パススルーを有効にするにはどうすればよいですか?

Hyper-V の GPU パススルーを有効にするには、仮想マシンの自動チェックポイントとダイナミック メモリを無効にしてください。デバイスマネージャーまたは PowerShell で、対象の GPU の PCI Express 接続パスを特定します。ホスト上でその GPU を無効にし、次のコマンドを使用してマウントを解除します。 Dismount-VmHostAssignableDevice コマンドレットを作成し、それを次のようにVMに割り当てます。 Add-VMAssignableDevice. クライアント側の Windows バージョン(Windows 10 および 11)では、 Add-VMGpuPartitionAdapter その代わりに、コマンドレットを使用します。

Hyper-VにおけるGPUパススルーとは何ですか?

GPUパススルーは、物理グラフィックカードを仮想マシンに直接割り当てることができるHyper-Vの機能です。仮想マシンはエミュレーションを行わずにハードウェアGPUを使用するため、デフォルトのエミュレートされたビデオアダプタと比較して、グラフィックスを多用するワークロードや計算負荷の高いワークロードにおいて、大幅なパフォーマンス向上を実現します。 Hyper-V では、GPU 全体を 1 つの仮想マシンに割り当てる"ダイレクト デバイス割り当て (DDA)"と、複数の仮想マシンが 1 つの GPU を共有できる"GPU パーティショニング (GPU-P)"の 2 つの方法がサポートされています。

Hyper-V での GPU パススルーにはどのような要件がありますか?

GPUパススルーを利用するには、NVIDIA GRIDやAMD MxGPUなどのGPU仮想化技術をサポートする、NVIDIAまたはAMD製のディスクリートPCIe GPUが必要です。CPUはIOMMU(Intel VT-dまたはAMD-Vi)をサポートしている必要があり、この機能はUEFI/BIOSで有効化されている必要があります。Hyper-VホストとゲストVMの両方に、最新のGPUドライバーがインストールされている必要があります。 DDA には Windows Server 2016 以上、GPU パーティショニングには Windows 10 (ビルド 1903 以降) が必要であり、Hyper-V ロールが有効になっている必要があります。DDA では、第 2 世代の仮想マシンのみがサポートされています。

Hyper-VにおけるGPUパススルーの制限事項にはどのようなものがありますか?

Hyper-VのGPUパススルーを使用するVMでは、ダイナミックメモリや自動チェックポイントを使用できません。DDAはWindows Server Datacenterエディションに限定されており、VMごとに1つのGPUが割り当てられますが、ライブマイグレーションはサポートされていません。GPUパーティショニングを行うには、ホストOSとゲストOSのドライバーバージョンが一致している必要があります。 2025年以前のバージョンのWindows Serverでは、GPU対応VMに対してフェールオーバークラスタリングおよびライブマイグレーションは利用できません。ホスト上のWindows Subsystem for Linux(WSL)により、VMでエラー43が発生する可能性があります。

Hyper-V における GPU パススルーの問題をどのようにトラブルシューティングすればよいですか?

まず、ベンダーのウェブサイトから(Windows Update ではなく)、正しい GPU ドライバーがインストールされていることを確認してください。VM において、"ダイナミックメモリ"と"自動チェックポイント"が無効になっていることを確認してください。十分な MMIO 領域が割り当てられているか確認してください。エラー 43 が表示された場合は、GPU とそのオーディオコントローラーが一緒に割り当てられていることを確認し、ホスト上で WSL2 を無効にしてみてください。エラー 12 または"オブジェクトが見つかりません"というエラーが発生した場合は、 RequireSecureDeviceAssignment そして サポート対象デバイスの割り当てを必須とする HKLM 配下のレジストリ値を 0 に設定します。

関連記事