RemoteFX vGPU を使用したグラフィックスデバイスの展開方法
パフォーマンスや画質を向上させるために、物理コンピュータにビデオアクセラレーションやグラフィックカードを導入することはよく行われる作業です。しかし、VM上でビデオレンダリングや3Dモデリング用のアプリケーションを実行する際、ハードウェアビデオアクセラレーションやグラフィックカードが必要になった場合はどうすればよいのでしょうか?
VMの場合、リソースを柔軟かつ合理的に活用するために、ハードウェアリソースは仮想マシン間で共有されます。 VMが負荷の高いアプリケーションを実行している場合、アイドル状態にある他のVMや、リソース消費の少ない操作を実行しているVMよりも多くのCPUやメモリリソースを消費する可能性があります。さらに、VMはデフォルトでは、データを表示するために基本的なビデオ機能のみを使用します。Microsoft Hyper-V環境では、Hyper-V RemoteFXを使用することで、VMがビデオカードのリソースと3Dアクセラレーションを共有できるようにすることができます。
このブログ記事を読んで、Hyper-V RemoteFX について、および Windows マシンでの RemoteFX の設定方法について学びましょう。
RemoteFXとは
RemoteFX は、Hyper-V 仮想マシンが物理 GPU(グラフィックス処理ユニット)を共有できるようにする機能です。ビデオカードのリソースは複数の仮想マシン間で共有されます。これは、ビデオカードの専用リソースを常時必要としない、高負荷のワークロードに最適なシナリオです。Hyper-V RemoteFX を使用して、VDI(仮想デスクトップインフラストラクチャ)を展開することができます。 RemoteFX GPUとは、Hyper-Vホストにインストールされた物理ビデオカードの資源(GPUおよびビデオメモリ)を共有する、仮想マシンに接続された仮想デバイスです。
RemoteFXはWindows 7で導入され、Windows 8、Windows 10、Windows Server 2008 R2 SP1、Windows Server 2012、およびWindows Server 2016で利用可能です。 この機能は、最新バージョンの Windows Server 2019 の Hyper-V マネージャーには存在せず、グラフィカル ユーザー インターフェイス (GUI) では Hyper-V RemoteFX を有効にすることはできません。RemoteFX を使用すると、仮想環境における CPU (中央処理装置) の負荷が軽減され、スケーラビリティが向上します。 Hyper-V RemoteFXを使用する場合、仮想マシンがワークロードに応じてGPUを動的に共有できるため、VMごとに専用のGPUを接続する必要はありません。
動画のレンダリング、高負荷な画像の処理、CADアプリケーションの操作、3Dモデリングなどは、VM内で3DアクセラレーションやRemoteFX GPUが必要となる代表的なケースです。最新のGPUはCPUよりも並列処理に適しており、より多くのタスクを同時に処理でき、より多くの処理コアを備えています。 使用できるモニターの数や解像度は、ビデオカードのビデオメモリとGPUの性能によって異なります。RemoteFXを使用してVMに接続するには、VMConnect(Virtual Machine Connection)ではなく、リモートデスクトップを使用してください。
RemoteFXの利点は、デスクトップ版およびサーバー版のWindowsで利用できることです。サーバーハードウェアと互換性のあるサポート対象のビデオカードを購入するのは容易ではないかもしれませんが、通常クライアント版のWindowsオペレーティングシステムを実行しているほとんどのデスクトップコンピュータには、PCI Expressグラフィックアダプタが搭載されています。
サポート終了
サイバー犯罪者がリモートコード実行に悪用できる脆弱性(CVE-2020-1036)が存在します。ハッカーは、RemoteFX GPUを搭載した仮想マシン上で特別に細工されたアプリケーションを使用し、Hyper-Vホスト上のビデオドライバを攻撃することで、ホストマシン上でリモートコードを実行することが可能です。この場合、ホストサーバーはゲストOS上の認証済みユーザーからの入力を適切に検証することができません。 マイクロソフトはこの脆弱性を修正するパッチを提供しておらず、これはアーキテクチャ上の問題であると述べています。これらのセキュリティ上の懸念から、マイクロソフトは自動更新を通じて、すべてのWindowsバージョンからRemoteFXを無効化し、削除することを決定しました:
- 2020年7月14日、すべてのWindowsバージョンにおいてRemoteFX vGPUが無効化されました。
- RemoteFX vGPUは2021年4月13日に廃止されました。
RemoteFXは、Windows 10 バージョン 1803 およびそれ以前の Windows バージョンで動作します(Hyper-V マネージャーの GUI で数回のクリックで設定可能です)。KB4571756 アップデート(2020年9月にリリースされた累積更新プログラム)の適用後、この機能は GUI 上で無効化されています。 その結果、Windows 10 バージョン 1809 の Hyper-V マネージャーの GUI では、この機能が無効化されているため、Windows 10 の RemoteFX 設定を行うことはできません。2021年4月の更新プログラムが適用されるまでは、PowerShell で特別なコマンドを使用して RemoteFX GPU を有効にする必要がありました。
RemoteFX の要件
- Hyper-V ホスト上でサポートされている Windows バージョン(Windows 7 Ultimate/Enterprise、Windows 8 Ultimate/Enterprise、Windows 10、Windows Server 2008 R2 SP1、Windows Server 2012、Windows Server 2016、Windows Server 2019)。Hyper-V RemoteFX を削除する更新プログラムはインストールしないでください。
- ホストマシン上のGPUは、DirectX 11に対応している必要があります(物理マシンにWindows Server 2008またはWindows 7がインストールされている場合は、DirectX 10を使用できます)。Hyper-Vホストに複数のビデオカードがインストールされている場合、それらはすべて同一のものである必要があります。ゲストVMでは、Windows 8.1以降のWindowsバージョンでDirectX 11が利用可能です。
- CPUはSLAT(セカンドレベル・アドレス変換)に対応している必要があります。この機能は、Intelプロセッサでは"拡張ページテーブル(EPT)"、AMDプロセッサでは"ネスト型ページテーブル(NPT)"と呼ばれています。
- 対応しているゲストOSは、Windows 7 SP1、Windows 8 および 8.1、Windows 10 バージョン 1703 以降、Windows Server 2008 R2、Windows Server 2012、Windows Server 2016(シングルセッション展開のみ)です。
RemoteFXの設定方法
Hyper-V ホストとなる物理マシンを準備します。Hyper-V ホスト上のグラフィックスアダプタ用のグラフィックスドライバがインストールされていることを確認してください。GPU ベンダー(NVIDIA や AMD など)が提供する最新の安定版ドライバをインストールすることをお勧めします。
Hyper-V RemoteFX を使用するために、サポートされているバージョンの Windows を実行している仮想マシンを準備します。この例では、仮想マシンの名前は Windows-VM、Hyper-V ホストの名前は Hyper-V-prim です。
必要な機能のインストール
をインストールしてください Remote Desktop Virtualization Host Hyper-V ホスト上のサービス。
開く Server Manager, をクリックして Manage > Add Roles and Features.
The "役割と機能の追加ウィザード" 開きます。
Installation Type. 選択 Role-based or feature-based installation. ヒット Next ウィザードの各ステップで、続行してください。
Server Selection. サーバープールからサーバーを選択してください。Hyper-V ホストが選択されていることを確認してください。
Server Roles. 選択 Remote Desktop Services 役割の一覧で。Hyper-V 役割がインストールされていない場合は、Hyper-V 役割を選択してインストールしてください。
Features. この手順はスキップしてください。
Remote Desktop Services. 説明をよく読んで、次のステップに進んでください。
Role Services. 選択 Remote Desktop Virtualization Host. 説明は右側のペインでご覧いただけます。
ロールのインストールが完了したら、Hyper-V ホストを再起動してください。
Hyper-V の設定
開く Hyper-V Manager 実行することで virtmgmt コマンドラインまたはWindowsのGUIを使用して。その後、 Hyper-V Settings.
のナビゲーションペインで Hyper-V の設定 ウィンドウで、クリック Physical GPUs. ドロップダウンメニューから使用しているグラフィックボードを選択し、次に Use this GPU with RemoteFX チェックボックス。
このチェックボックスを選択できない場合は、お使いのビデオアダプタがRemoteFXに対応していないか、RemoteFXが無効になっていることを意味します。
仮想マシンを停止します。
開く Hyper-V Manager、VMを選択し、VMを右クリックして、[開く] を選択します VM Settings.
において VMの設定 ウィンドウで、クリック Add Hardware 左ペイン(ナビゲーションペイン)に表示されます。右ペインには、仮想マシンに追加できるデバイスのリストが表示されます。このワークフローは、Generation 1および 第2世代VM.
もし RemoteFX 3D Video Adapter が有効になっている(黒色のフォントで表示されている)場合は、このアダプタを選択してクリックしてください Addこのオプションは、2020年7月14日以前のWindowsバージョンで有効であり、更新プログラムがインストールされています。
Windowsが更新された場合、"RemoteFX 3Dビデオアダプター"オプションは無効(文字が灰色で表示)となり、Hyper-V マネージャーのGUIからこのアダプターを追加することはできません。同時に、 Physical GPUs オプションは、 Hyper-V Settings.
この問題は PowerShell で修正できます。
Hyper-V ホストの PowerShell で次のコマンドを実行し、仮想マシンに RemoteFX 3D ビデオアダプタを追加します。
Add-VMRemoteFx3dVideoAdapter -VMName your_VM_name
コマンドが正常に実行されると、警告メッセージが表示されます。
警告:RemoteFX 3D ビデオアダプタは、現在サポート対象外となっています。このアダプタを引き続き使用している場合、セキュリティ上のリスクにさらされる可能性があります。
次のエラーが表示された場合は: Add-VMRemoteFx3dVideoAdapter: このデバイスを有効にするには、サーバー マネージャーを使用して"リモート デスクトップ仮想化ホスト"の役割サービスをインストールしてください
リモートデスクトップ仮想化サービス Hyper-V ホストにインストールされていません。詳しくは Installing the needed features この記事の前半で。
Enabling Windows 10 RemoteFX after installing updates
前述の通り、2020年7月14日のWindows更新プログラムをインストールすると、Microsoft RemoteFXが無効になります。RemoteFXを使用するように構成された仮想マシン(VM)がある場合、それらは起動しなくなります。2020年7月14日の更新プログラムが適用されたWindows 10でVMを起動しようとすると、次のようなRemoteFXのエラーが表示されます:
選択した仮想マシンの起動中にエラーが発生しました:
"VM-name"の起動に失敗しました。
合成3Dディスプレイコントローラー(インスタンスID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx):エラー"要求されたサービスを完了するためのシステムリソースが不足しています"が発生し、電源投入に失敗しました。
Hyper-V マネージャーで、RemoteFX 対応の GPU がすべて無効になっているため、仮想マシンを起動できません。少なくとも 1 つの GPU を有効にする必要があります。
このエラーの別のバリエーション:
サーバーのGPUリソースが不足しているため、仮想マシンを起動できません。
この問題は PowerShell で修正できます。この方法は、Windows 10 および対応する Windows Server の各バージョンで利用可能です。PowerShell のコマンドを使用してこのエラーを修正し、RemoteFX を有効にします。次のコマンドを実行して、Hyper-V ホスト上のビデオアダプタに関する情報を確認してください:
Get-VMRemoteFXPhysicalVideoAdapter
次の文字列を検索してください:
Enabled: False
これは、RemoteFXが無効になっていることを意味します。この値を True.
ビデオカードの名前をコピーしてください(この例では、 NVIDIA GeForce GTX 1060).
以下のコマンドを実行してください:
Enable-VMRemoteFXPhysicalVideoAdapter -Name "video_card_name"
グラフィックカードの名前を入力してください。
もう一度、RemoteFX を使用して VM を起動してみてください。これで VM が起動するはずです。
また、RemoteFX 3D ビデオアダプタを管理するための以下の PowerShell コマンドレットもご参照ください:
Set-VMRemoteFx3dVideoAdapter
Get-VMRemoteFXPhysicalVideoAdapter
仮想マシンに RemoteFX 3D ビデオアダプタを追加すると、そのアダプタが仮想マシンのハードウェア一覧に表示され、解像度、モニター数、および専用ビデオメモリを設定するオプションが利用可能になります。
Hyper-V マネージャーの GUI にこれらのオプションが表示されない場合は、PowerShell で仮想マシンに RemoteFX ビデオアダプタを追加する際に、追加のパラメーターを使用してください。例:
Set-VMRemoteFx3dVideoAdapter -VMName Windows-VM -MaximumResolution 1024x768 -VRAMSizeBytes 536870912
Microsoft RemoteFX の設定が正常に完了した場合、仮想マシン上で実行されているゲスト Windows では、 Microsoft RemoteFX Graphics Device – WDDM デバイス内の ディスプレイアダプタ ~のセクション デバイスマネージャーこのRemoteFX 3Dビデオアダプタは、RemoteFXを使用して、物理Hyper-Vホストに搭載された物理ビデオカードのリソースを共有する仮想デバイスです。
トラブルシューティング
場合によっては、その他のエラーが発生することもあります。ここでは、ユーザーがリモートデスクトップ RemoteFX を使用して、実行中の仮想マシンに接続できないというよくあるエラーについて説明します。
症状:
- ビデオリモート接続が切断され、対応するメッセージが表示されました。
- RDP の接続に失敗しました:以下のいずれかの理由により、リモート デスクトップ セッションが終了しました。
VMでこのエラーが発生した場合は、VM上のゲストWindowsでグループポリシーを編集してください。
をクリック Start > Run > gpedit.msc ローカル マシンのグループ ポリシー エディターを開くには。
左ペインの グループ ポリシー エディター ウィンドウで、次の場所に移動します
Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment > RemoteFX for Windows Server. ダブルクリック Configure RemoteFX ウィンドウの右ペインに。
ウィンドウに RemoteFXの設定 プロパティが開きます。選択してください Enabled、そしてクリックして OK 設定を保存するには、
をダブルクリックします。 Use WDDM graphics display driver for Remote Desktop Connections (Windows 10 バージョン 1903 以降に対応)。
開いたウィンドウで、[選択] をクリックします。 Disabled、そしてクリックして OK.
次のコマンドを使用して、新しい設定を適用するようにグループポリシーの構成を更新します:
gpupdate /force
仮想マシンを再起動してください。拡張セッションモードを使用して、仮想マシンに接続してみてください。
Hyper-V ホストで RemoteFX が無効化されないようにする方法
2021年4月にリリースされたWindows Updateをインストールすると、RemoteFX 3Dビデオアダプタを使用している仮想マシンが起動しなくなります。RemoteFXを引き続き使用するには、自己責任でWindowsコンピューターの自動更新を無効にしてください。なお、Windows Updateを無効にすると、Windowsマシンにはセキュリティパッチが自動的にインストールされなくなります。パッチが適用されていない脆弱性はコンピューターに対する脅威となり、ランサムウェア、ウイルス、その他のマルウェアに感染するリスクが高まります。
MicrosoftのサイトからWindows Update(パッチ)を手動でダウンロードしてインストールすることができます。どのWindows UpdateがRemoteFXの削除を目的としているかを確認し、それらをインストールしないようにしてください。組織内でWSUS(Windows Server Update Services)を導入し、不要な更新プログラムの選択を解除することを検討してください。
Windows サーバーおよび Hyper-V 仮想マシンのバックアップを忘れないでください。災害やランサムウェア攻撃が発生した場合、バックアップがあればデータを復元し、ワークロードを復旧させ、短時間で業務を再開することができます。使用 NAKIVO Backup & Replication 物理マシンおよび仮想マシンのバックアップを行うため。
Hyper-V RemoteFXの代替手段
マイクロソフトは、2021年4月以降はRemoteFXの代わりにDDAを使用することを推奨しています。
DDA(Discrete Device Assignment)は、デバイス(私の場合はPCI Expressデバイス)をVMに直接接続できる機能です。グラフィックカードの場合、そのカードをホストマシンから切り離し、VMに接続する必要があります。DDAを使用してビデオカードを利用できるVMは、一度に1台のみです。
GPU用のビデオドライバは、ホストマシンではなく、VMのゲストOSにインストールする必要があります。この場合、DirectX 12やCUDA(Compute Unified Device Architecture)などの機能がVM上で利用可能になります(RemoteFXを使用している場合、CUDAはVM上で利用できません)。Direct Device Assignmentを使用している場合、Hyper-Vホスト間のVM移行はできません。
VMを実行するサーバーやデスクトップには、VMwareの代替ソリューションの利用を検討してください。VMware vSphereのVirtual Shared Graphics Acceleration (vSGA) およびVirtual Shared Pass-Through Graphics Accelerationを使用して、複数のVMでGPUを共有してください。GPU仮想化をサポートし、適切なハードウェア機能を備えた互換性のあるビデオカードを使用してください:
nVidia GRID vGPUAMD Multiuser GPU
VMの高速3Dグラフィックスを有効にするには、 VMware Workstation サーバーではなくデスクトップPCを使用する場合。
結論
Hyper-V RemoteFX は、仮想マシンが Hyper-V ホストにインストールされた物理ビデオアダプタのハードウェアリソースを共有し、仮想マシン上のアプリケーションで 3D アクセラレーションを利用できるようにする便利な機能です。 仮想マシンで RemoteFX を構成するには、Hyper-V ホストに"リモート デスクトップ仮想化ホスト"サービスをインストールし、Hyper-V の一般設定を編集してビデオアクセラレーションに使用する GPU を選択し、仮想マシンの仮想ハードウェアオプションに RemoteFX 3D ビデオアダプタを追加します。残念ながら、Hyper-V RemoteFX は Microsoft によって非推奨となっており、2021 年 4 月の Windows 更新プログラムをインストールするまでは RemoteFX を使用することができます。






