(2020/9/2 追記:2020-07 B のセキュリティ更新以降、RemoteFX vGPU は脆弱性問題(CVE-2020-1036)があるため無効化され、2021 年 2 月に完全に削除されるそうです。完全削除は 4 月 13 に変更。→ Update to disable and remove the RemoteFX vGPU component in Windows
https://support.microsoft.com/en-us/help/4570006/)
Windows Server 2019 の RemoteFX 3D ビデオ アダプター (RemoteFX vGPU) についてメモ。
このブログ:
Windows Server 2019 から削除される役割と機能 (予定)
@IT 記事:
こんにちはWindows 10 October 2018 Update、さようならRemoteFX 3Dビデオアダプター
http://www.atmarkit.co.jp/ait/articles/1810/09/news009.html
これらの記事のフォローアップを簡単に(より詳しくは @IT で書くつもり)。
結論から言うと、Windows Server 2019 の Hyper-V ホストで RemoteFX vGPU を仮想マシンに割り当てるためには、RemoteFX vGPU 対応の物理 GPU 搭載マシンに加え、「リモート デスクトップ(RD)仮想化ホスト」(RDVH)の役割が必要。ここまでは Windows Server 2016 と同じ。
「Hyper-V の設定」に「物理 GPU」の項目はないけど、Hyper-V と RD 仮想化ホストの役割がインストールされていて、RemoteFX vGPU 対応の物理 GPU が存在すれば、自動的に物理 GPU を RemoteFX vGPU で利用可能になる。これは、Get-VMRemoteFXPhysicalVideoAdapter で答えが返ってきて、CompatibleForVirtualization:True と Enabled:True になってることでわかる。物理 GPU が見えれば、Disable/Enable-VMRemoteFXPhysicalVideoAdapter で無効化/有効化も可能(ホストの再起動必要かも)。Get-VMRemoteFXPhysicalVideoAdapter は Hyper-V モジュールのコマンドレットだけど、RDVH の役割がインストールされていない、OR RemoteFX vGPU 対応 GPU が存在しない場合、物理 GPU を返してくれない。(Windows 10 Pro 以上のクライアント Hyper-V の場合、RDSH とは関係なく利用できるようになるはず)
Windows Server 2016 の RDVH な Hyper-V ホスト(または Windows 10 ver 1803 以降のクライアント Hyper-V)からエクスポートして、インポートした、RemoteFX vGPU 割り当て済み仮想マシンは、デバイスを構成でき、ゲスト OS で利用もできた。”RemoteFX 3D ビデオ アダプターはサポートされなくなりました...”というメッセージが表示されますが、動かないわけではありません。
「仮想マシンの設定」からは「RemoteFX 3D ビデオ アダプター」を追加できなくなった。けど、Add-VMRemoteFx3DVideoAdapter コマンドレットでやれば、新規仮想マシンにも追加できた。「仮想マシンの設定」をリフレッシュすれば、デバイスを構成できる。
これは 2019 だからというわけではありませんが、RemoteFX vGPU のディスプレイ数、解像度、専用メモリの割り当てが、仮想マシンのメモリ割り当てに対して大きすぎると、デバイスがエラー状態になる(左)。
おまけ
「サーバーマネージャー」の「リモートデスクトップサービスのインストール」で、接続ブローカーや RD Web アクセスとともに展開するのは面倒で、最小限の役割サービス(例えば RemoteFX vGPU のために RDVH だけとか)だけを展開している。でも、RDS CAL は持っている(購入している)という場合は、どうやって RDS CAL を使ってこの表示(↓)を消せばよいか悩むかもしれません。気にせず放置しておくと、RDS 関連の機能が停止します(管理接続は可能)。
ローカルにリモート デスクトップ(RD)ライセンスの役割を追加して、ライセンス サーバーのアクティブ化、RDS CAL のインストール後に、次のコマンドラインでライセンス モードとライセンス サーバーを指定すればよいみたい。(接続ブローカーやセッション ホストがない、仮想化ホストだけの環境でもこれで OK でした)
ライセンス モードの設定(接続ユーザー数<per User>モードは 4、接続デバイス<per Device>数モード は 2 ←ワークグループ環境の場合はデバイスごとの CAL に)
PS C:\> (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).ChangeMode(4)
ライセンス サーバーの設定
PS C:\> New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "ローカルのIP" -PropertyType MultiString
確認。
PS C:\> Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers
参考:
Windows Server 2012 リモート デスクトップ環境の構成について(Ask CORE)
https://blogs.technet.microsoft.com/askcorejp/2012/12/27/windows-server-2012/
2020/10/28 追記:
公式情報 Installing the Remote Desktop Session Host role service on Windows Server without the Connection Broker role service (Last Updated: May 28, 2020)
https://support.microsoft.com/en-us/help/2833839/guidelines-for-installing-the-remote-desktop-session-host-role-service
"ImportantIf you are using a workgroup server, you must use per-device CALs. For more information, see License your RDS deployment with client access licenses (CALs)."
@ITさんの所の記事に関してはすでに読ませていただきました。
返信削除動いたとの記載に何が悪いのか?と悩んでおりました。
まずはWindows10のクライアントHyper-Vでは2018/10/11の品質更新プログラム
KB4465477
KB4464330
が適用された後、無事起動できました。。。
ノートPC上で実験していますのでその辺りにも問題はあるのかなと思われます。