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

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

このガイドでは、Hyper-V で GPU を割り当てる 2 つの方法、ダイレクトデバイス割り当て(DDA)と GPU パーティショニング(GPU-P)について説明します。この記事を読んで、ハードウェアとソフトウェアの要件を満たす方法、Windows Server およびクライアント Windows バージョンで各方式を構成する方法、一般的な問題を解決する方法をご確認ください。

NAKIVO for Hyper-V バックアップ

NAKIVO for Hyper-V バックアップ

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

最新情報

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

  • Windows Server 2025では、GPUパーティショニング(GPU-P)がエンタープライズ向けに完全にサポートされる機能として導入され、SR-IOVベースの分離によって複数のVMで1台の物理GPUを共有できます。
  • Windows Server 2025では、GPUパーティションを使用するVMのライブマイグレーションがサポートされるようになり、VMを停止せずにホストのメンテナンスを実施できます。
  • フェイルオーバークラスタリングのサポートが拡張され、GPU-P VMをクラスター化されたロールとして構成できます。また、互換性のあるGPUが使用可能な場合、DDAを使用するVMを別のクラスター ノードで再起動できます。
  • RemoteFX vGPUコンポーネントは、Windows Server 2025で完全に削除されました(Windows Server 2019以降、非推奨となっていました)。
  • GPU対応VMのトラブルシューティングに関するガイダンスと、バックアップに関する考慮事項が更新されました。

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

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

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

Hyper-Vでは、次の2つのメカニズムがサポートされています。ダイレクトデバイス割り当て(DDA)は、物理GPU全体を1台のVMに割り当てます。GPUパーティショニング(GPU-P)は、1枚のカードを分離された複数の部分に分割し、複数のVMで共有できるようにします。どちらも、このガイドの後半で詳しく説明します。

注: 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) では、物理GPU全体を1台のVMに専有で割り当てます。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アクセラレーションを必要とするものの、GPUリソースの100%は必要としない環境に適しています。また、GPU-PはWindows Server 2025でライブマイグレーションとフェイルオーバークラスタリングをサポートしていますが、DDAではサポートされていません。

物理GPUは、DDAモードまたはGPU-Pモードのいずれかで動作できますが、両方を同時に動作させることはできません。

要件

Hyper-Vホスト上でGPUパススルーを有効にしたVMを構成するには、特定のハードウェアおよびソフトウェアの要件を満たす必要があります。すべてのビデオカードがこの機能をサポートしているわけではありません。

ハードウェア要件

  • 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(Single Root Input/Output Virtualization)をサポートしている必要があります。サポートされるモデルには、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のゲストOSに、最新のGPUドライバーをインストールする必要があります。
  • DDAを使用したGPUパススルーには、第2世代のHyper-V VMのみを使用できます。

制限事項およびサポート対象外の構成

GPUパススルーを使用する際、以下の構成はサポートされないことに注意してください:

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

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

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

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

ダイレクトデバイス割り当て(DDA)。DDAはWindows Server 2016で導入されました。GPUの性能を最大限に必要とするシナリオでは、RemoteFXに代わる方式です。PCIeデバイス全体(GPU、NVMeドライブ、その他のアダプター)を、共有やエミュレーション層を介さずに、1台の仮想マシンに直接割り当てます。仮想マシンはベンダー純正のドライバーを読み込み、ビデオメモリとフレームレートに制限なくアクセスできます。DDAは、Hyper-VにおけるVMware PCIパススルーに相当します。一方、柔軟性には制約があります。カードを使用できる仮想マシンは1台のみです。仮想マシンはライブマイグレーションできません(ホスト上の物理PCIeパスに結び付けられているためです)。また、DDAはWindows Server Datacenterエディションでのみ利用できます。 Windows Server 2025では、DDAを使用するVMがフェイルオーバークラスタリングをサポートするようになりました。つまり、互換性のあるGPUが利用可能な場合、クラスターは別のノード上でVMを再起動できますが、ライブマイグレーションは引き続きサポートされていません。

GPUパーティショニング(GPU-P)。GPU-Pは、RemoteFXの最新の後継機能です。Windows Server 2025では、SR-IOVを使用して単一の物理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上の単一のVMでGPU全体を使用する必要がある場合は、DDAを使用してください。複数のVMでGPUアクセラレーションが必要な場合、またはライブマイグレーションが必要な場合は、Windows Server 2025でGPU-Pを使用してください。クライアント版Windowsでは、PowerShell経由のGPU-Pが唯一サポートされている方法です。

Hyper-VでのGPUパススルーの構成

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

GPUパススルーの構成準備

  1. ハードウェアとソフトウェアがGPU仮想化の要件を満たしていることを確認してください。
  2. Hyper-Vホスト上のUEFI/BIOSで、CPUの Intel VT-d または AMD-V 仮想化機能を有効にしてください。
  3. IOMMU を有効にしてください。IOMMU設定の所在地は、マザーボードやUEFI/BIOSのバージョンによって異なります。場合によっては、ノースブリッジの構成内にあります。Intel VT-dまたはAMD-Vを有効にする際に、IOMMUも一緒に有効にできます。UEFI/BIOSで”メモリ再マップ”機能を確認してください。

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

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

    True = 有効です; False = 無効です。

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

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

    Set-VM -Name VMName -AutomaticStopAction TurnOff

Windows Server での GPU パススルー

次の手順では、DDA を使用して Windows Server 上の VM に物理 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 からデバイスへのアクセスを可能にするメモリ ウィンドウを定義します。最適な MMIO 値の計算には、Microsoft の マシン プロファイル スクリプト を使用できます。適切な値はビデオ アダプターによって異なります。VM の起動時にリソース不足を示すメッセージが表示された場合は、VM をシャットダウンして値を調整します。32 ビットを超える MMIO 領域には 33280 MB の値を使用します(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

    パーティション ドライバーが未インストールの場合は、-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
Hyper-V向けNAKIVO Backup & Replicationをお試しください

Hyper-V向けNAKIVO Backup & Replicationをお試しください

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内の デバイス マネージャー に対応するディスプレイアダプターが表示されます。また、ゲストWindowsのテーマでデスクトップが透明になるなどの視覚効果も確認できます。

GPUパススルーの構成を完了しても、一部のゲームやアプリケーションが動作しない場合があります。アプリケーションがハードウェア互換性チェックを実施しており、ゲストOSで報告されるGPU情報がホスト上の情報と異なる場合に、この問題が発生することがあります。また、一部のアプリケーションは、VM内で実行されていることを検出します。

OpenGLに依存するアプリケーションがVMで動作しない場合は、OpenGL Compatibility Pack をインストールすると解決することがあります。

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

RDPセッションを先に切断せずに閉じると、別の問題が発生する場合があります。この場合、VMがGPUメモリにアクセスできなくなり、GPUに依存するアプリケーションはビデオメモリにアクセスできないと報告します。RDP経由で再接続しても、この問題は解決しません; 影響を受けるアプリケーションを再起動する必要があります。

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

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

  • 最新のGPUドライバーがインストールされており、ドライバー関連のエラーが発生していないことを確認してください。デバイス マネージャーを開き、デバイスの状態を確認してください。Windows Updateに頼らず、ベンダー(NVIDIA、AMD、Intel)のWebサイトからドライバーをインストールしてください。
  • VMに十分なMMIO領域を割り当ててください。
  • お使いのグラフィックスアダプターでGPUパススルーが正式にサポートされていることをベンダーに確認してください。すべてのコンシューマー向けビデオカードがこの機能をサポートしているわけではありません。一部のベンダーでは、上位モデルにのみGPUパススルーを許可しています。
  • VM内で実行するアプリケーションがお使いのビデオカードとそのドライバーをサポートしていることを確認してください。
  • リモートデスクトップ経由でGPUを使用できるようにするには、次のグループポリシーを有効にしてください:
    Computer ConfigurationTemplatesComponentsDesktop ServicesDesktop Session HostSession Environmenthardware graphics adapters for all Remote Desktop Services sessions

    この値を有効に設定してください。

  • “オブジェクトが見つからなかったため、操作に失敗しました”やエラー12などのエラーが表示された場合は、次の場所に以下のレジストリキーを追加してください:

    HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\HyperV

    値:

    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内でハイパーバイザードライバーのチェックを回避するには、Enterprise Windows Driver Kit(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”

    仮想ハードディスクに複数のパーティション(ボリューム)があることが原因の可能性があります。 データをバックアップしたうえで、システム以外のパーティションに hidden 属性を設定するか、一時的に取り外してみてください。または、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)…) が存在しないか、別のデバイスに割り当てられている可能性があるため、VM の起動に失敗する可能性が高くなります。

復旧後にハードウェアの不一致を解決するには、次の手順を実行します。

  1. VM 構成から、存在しない GPU デバイスを削除します。
  2. 新しいホスト上の互換性のある GPU をマウント解除します。
  3. PowerShell を使用して、新しい GPU を復元した VM に再割り当てします。

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

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

Windows Server 2025 では、GPU 対応 VM のモビリティが向上しています。GPU-P VM は、クラスター構成とスタンドアロン構成の両方でライブ マイグレーションをサポートしています。フェイルオーバーのシナリオでは、ターゲット ホストで DDA または GPU-P 用に互換性のある GPU が構成されていれば、クラスターは別のノードで VM を再起動できます。

GPU 対応 VM のバックアップと復旧には、次の推奨事項に従ってください。

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

結論

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

NAKIVO Backup & Replication をお試しください

NAKIVO Backup & Replication をお試しください

無料体験で、このソリューションのデータ保護機能をすべてお試しいただけます。15日間無料。機能や容量の制限はありません。クレジットカードは不要です。

よくある質問

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

Hyper-V の GPU パススルーを有効にするには、VM の自動チェックポイントと動的メモリを無効にします。デバイス マネージャーまたは PowerShell で、対象 GPU の PCI Express 所在地パスを特定します。ホスト上で GPU を無効にし、 Dismount-VmHostAssignableDevice コマンドレットを使用してマウント解除してから、 Add-VMAssignableDevice を使用して VM に割り当てます。クライアント Windows バージョン(Windows 10 および 11)では、代わりに Add-VMGpuPartitionAdapter コマンドレットを使用して GPU パーティショニングを行います。

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

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

Hyper-V で GPU パススルーを使用するための要件は何ですか?

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

Hyper-V における GPU パススルーの制限事項は何ですか?

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

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

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

関連記事