以下の内容はhttps://blogs.networld.co.jp/entry/2026/02/09/090320より取得しました。


Windows Server 2025 Hyper-VでDDA!

みなさん、こんにちは。ネットワールドでSA(ソリューションアーキテクト)として活動している後藤です。

前回の記事では、Windows Server 2025 Hyper-Vの新機能である「GPU パーティション分割(GPU-P)」を取り上げました。前回の記事はこちら。

blogs.networld.co.jp

今回は、前回の記事の中でもちらと触れました「個別デバイス割り当て(Discrete Device Assignment:DDA)」を取り上げたいと思います。

1:最初に注意事項とお願い

本記事は、筆者の知りうる公開情報と実機検証をもとに記述しています。

内容については、正確を期することを心がけていますが、万が一誤った記述があればご指摘いただけると幸いです。

また、Microsoftの公式見解が必要な場合は、Microsoftサポートまでお問い合わせいただけますよう、よろしくお願いします。

2:個別デバイス割り当て(Discrete Device Assignment:DDA)とは

前回の記事の中でも少し触れましたが、個別デバイス割り当て(Discrete Device Assignment:DDA)とは、PCIデバイスを直接仮想マシンにマッピングして占有利用する手法を指します。

Hyper-Vをはじめとするハードウェア仮想化技術では、物理デバイスを仮想化して仮想デバイスとして仮想マシンに提供します。そのため仮想化のレイヤーが挟まるので、どうしてもオーバーヘッドやエミュレーションによる機能制約がついて回ります。

仮想マシンから直接ハードウェアを接続して、その性能をフルに仮想マシンで使用できないか、という観点から誕生した技術ではないかと筆者は考えています。

Microsoftのドキュメントでも「これにより、デバイスのネイティブ ドライバーを適用しながら、VM 内から NVMe ストレージ やグラフィックス カードなどのデバイスに高パフォーマンスでアクセスできます。」と記述されているところからも、パフォーマンス的な課題解決のための技術と考えてよいかと思います。

learn.microsoft.com

ここでも言及のあるグラフィックス カード、すなわちGPUですが、単一の仮想マシンにGPUを割り当てたいのであれば、前回紹介したGPUパーティション分割(GPU-P)よりもDDAのほうがスマートかもしれません。

DDAはGPU専用というわけではなく、前述の通り高速ストレージであるNVMeデバイスも仮想マシンに直接接続することが可能です。仮想ディスクではなく物理ディスクに対してIOできますので、仮想マシンでありながら物理ディスクのパフォーマンスが享受できるのは、IOヘビーなワークロードにとってはメリットだと思います。

今回は、前回のGPU-Pの記事の続編、という感じなので、GPUをDDAによって割り当てていきたいと思います。

3:Windows Server 2025 Hyper-VでのDDAの要件

GPUをDDAで仮想マシンに割り当てる場合の要件は、以下の公式ドキュメントにまとまっています。

learn.microsoft.com

GPU-Pほど条件は厳しくなく、別のページに書いてある「Windows Server 2016 Hyper-V以降」と合わせても、そこまでデプロイのハードルは高くないです。

ハードウェア的な要求も上記のページ書いておりますが、SR-IOVが使用可能なCPUとチップセットを装備したサーバー、ミドルエンドサーバーであればほぼ問題なく扱えるかと思いますが、対応の詳細についてはハードウェアベンダーに確認してみてください。

4:DDAのリスク的なアレコレ

DDAは、PCIデバイスを仮想マシンに接続します。これが何を指すかというと、物理ホストのデバイスを仮想マシンからコントロールできるようにするため、仮想マシンの操作によって、ハードウェアの動作が不安定になり、ひいてはHyper-Vホストに影響を与える可能性があります。

これはリスクにもなりうる話でして、DDAは仮想マシンや仮想マシンを操作するユーザーが信頼できる場合にのみ使用すべきかと思います。

GPUの場合はセキュリティ的な話もふくめ、そういった事柄を一切考慮せずにデバイスをDDAで仮想マシンに割り当てようとした場合、Hyper-Vホストでは画面1のようなエラーを出力してDDAの前提となる「デバイスのホストからの切り離し」に失敗します。

画面1:GPUをホストから切り離そうとした場合、切り離し時にエラーが発生する

前回も使用したWindows Admin Center(WAC)から操作を行った場合(後述するGPUプールを作成する際)には、画面2のようなエラーが表示されます。

画面2:Windows Admin Centerでのエラー

デバイスのベンダーによってはリスクの軽減を図る「リスク軽減ドライバー」を提供している場合がありますので、詳細はGPUベンダーにお問い合わせください。

GPUのリスク軽減ドライバーが存在しない場合、もしくはエラーは発生するけどリスクを軽減する必要がない場合(単なる検証とか)には、強制的にデバイスを切り離す「-Force」オプションがあります。

ただし、このオプションを使用する場合には、テストされていない前提での使用になりますので、場合によっては問題が発生しても非サポートとなることが予想されますので、それを認識のうえで使用してください。

では、今回のNVIDIA A2の場合はどうなるか、というと、NVIDIAのサイトにリスク軽減ドライバーは公開されています。

docs.nvidia.com

このサイトで公開されているリスク軽減ドライバーをダウンロードして使用します。

ダウンロードする際は NVIDIA エンド ユーザー 使用許諾契約書の同意をお忘れなく。

www.nvidia.com

「Download INF」からファイルをダウンロードして回答すると、GPUごとにリスク軽減ドライバーのINFファイルが展開されますので、使用するGPUに応じた(今回の場合はNVIDIA A2用の)INFファイルをインストールします。

インストール方法はGPU-P同様pnputilを使用します。

コマンドラインはこんな感じですね。


    pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force
  

インストールを実行すると(画面3)「デバイスにインストールされました」と表示はでるものの、特にデバイスマネージャーに変化はなく……。

画面3:リスク軽減ドライバーのインストール

といいつつも、リスク軽減ドライバーをインストールしないと画面1のエラーが表示されることは確認できましたので、インストールは必要かと思います。

5:Windows Server 2025 Hyper-VでのDDA設定 with WAC

ハードウェア側の前提条件がクリアできている前提で、早速DDAの設定を行ってみましょう。

まず、Hyper-Vホストのデバイスですが、画面4のような状態になっています。

画面4:Hyper-Vホストのデバイスマネージャー

「3Dビデオコントローラー」はドライバーがインストールされていないNVIDIA A2です。前回記事でも使用したGPUですね。

この状態でDDA設定を開始します。

操作は前回同様Windows Admin Center(WAC)から行います。

WACの前提条件などは前回記事をご参照ください。

GPU拡張機能を開いたところが画面5になります。「3Dビデオコントローラー」が認識されていますね。「割り当て状態」は「DDA割り当ての準備完了」となっています。

画面5:WACのGPU設定画面

この状態で「GPUプール」タブをクリックすると、クラスター環境でも統一したDDA設定を行う「GPUプール」の設定画面に遷移します(画面6)。まずはDDAで仮想マシンにGPUを割り当てる場合には、まずGPUプールを作成する必要があります。

画面6:GPUプール初期画面

「新しいGPUプール」の作成画面でサーバーを選択してGPUプール名を入力します(画面7)。「GPUの選択」では。「3Dビデオコントローラー」にチェックを入れます。

画面7:GPUプール新規作成画面

画面7の詳細設定を開くと「ホストINFファイルなしで割り当てる(推奨されません)」の設定があります。

これが前項で触れたリスク軽減ドライバーの話になります。リスク軽減ドライバーはインストール済みのため今回はチェック不要です。

なお、検証の時にわかった(念のためクリーンインストールしたWindows Server 2025で再現テストしてわかった)のですが、リスク軽減ドライバーは一度インストールするとpnputilコマンドでアンインストールしても、ドライバー(INFファイル)そのものは削除されないようです。

ですので、真っ白な状態に戻したいのであればWindows Serverの再インストールが良いようです(INFファイルを探して削除すればいいのかもしれませんが……)。

さて、プールが出来上がると、もとの「GPUプール」画面に戻り、出来上がったGPUプールを確認できます。仮想マシンに割り当てを行う場合は、この画面から「VMをプールに割り当てます」をクリックします(画面8)。

画面8:GPUプールへの仮想マシンの割り当て

「VMをGPUプールに割り当てる」画面では、割り当ての種類が「GPU全体の割り当て(DDA)」であることを確認しつつ、「サーバー」「GPUプール」を選択して、割り当てる仮想マシンを選択します(画面9)。

画面9:「VMをGPUプールに割り当てる」画面

詳細設定ではメモリのマップ済みIO(MMIO)スペースを設定できますが、この値はデフォルトで問題ないと思います。

「割り当て」ボタンをクリックすると、仮想マシンに対するGPU割り当てが実行されます。

完了すると画面9のように、割り当てが表示されます。

画面10:仮想マシンの割り当て完了

これでDDAの割り当ては完了となります。

6:動作確認

割り当てた仮想マシンを起動してみましょう。

割り当てに問題がなければ正常に起動するはずです。

デバイスマネージャーを確認すると、画面11のように「Display Controller」として不明なデバイスが存在していることがわかります。これがDDAで割り当たったGPUになりますので、ドライバーをインストールします。

画面11:割り当て直後の仮想マシン

インストールするドライバーは前回GPU-Pの際に利用したNVIDIAのVirtual GPU Softwareに入っているWindows用のドライバーです。

インストール後は画面12のようにGPUが認識されていることが確認できます。

画面12:ドライバー導入後の仮想マシン

GPU-Pの時と違い、単純に「NVIDIA A2」というデバイスで認識していますし、専用GPUメモリも表示上15GBなので単一カードとして認識していることがわかります。

こんな感じで、非常に簡単なステップでWindows Server Hyper-VでもDDAにてGPUを割り当てられることがお分かりいただけたかと思います。

7:最後に

DDA設定も、WACからの操作であればそこまで難しいこともなく、GPU-P同様簡単に割り当てが完了しました。

仮想マシン上でGPUを必要とするアプリケーションもばっちり動きます。

GPU-Pに比べてDDAは制約が緩いので、GPUは仮想マシンに必要なんだけども、仮想マシンは1台でいいし、そのためにWindows Server 2025を新規導入するのは……、という場合にはWindows Server 2016以降のHyper-VでDDAという選択肢もアリかもしれませんね。

ぜひお試しください!

8:リスク軽減ドライバーの確認(2026/02/10追記)

インストール後デバイスマネージャーに変化がない(「3Dビデオコントローラー」のまま変化がない)と記述したリスク軽減ドライバーですが、いろいろと確認している中で「システム」デバイスとして導入されていることが確認できました。

画面13:リスク軽減ドライバーはシステムデバイスとして認識される

導入確認の際は、システムデバイスをご確認ください。

書いた人:後藤 諭史(Satoshi GOTO)

ソリューションアーキテクト部所属。

専門はWindows Server Hyper-VやAzure LocalといったMicrosoft仮想化技術。Microsoft SDN(Hyper-V Network Virtualization)などのWindows Server ネットワーク技術も。
Microsoft オンプレ技術以外にも、エンタープライズネットワークとかMicrosoft Azureとか、運用とか。
ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。

Microsoft MVP for Cloud and Datacenter Management(2012-2026)
Microsoft MVP for Microsoft Azure(2024-2026)




以上の内容はhttps://blogs.networld.co.jp/entry/2026/02/09/090320より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14