Windows Server 2008 R2 SP1が変える仮想環境――RemoteFXを試す
情報だけは先行して出されていたWindows Server 2008 R2/Windows 7 SP1だが、7月にパブリックベータ版が公開され、やっとSP1のテストができるようになった。
今回は、Windows Server 2008 R2/Windows 7 SP1に新機能として搭載される、RemoteFXのグラフィック機能、USB機能を中心に紹介していく。
■VDI環境を大きく変えるRemoteFX
Windows Server 2008 R2 SP1(以下R2 SP1)で機能追加されたRemoteFXは、VDI環境においてDirectX9をサポートする「RemoteFX 3D ビデオ アダプター」、クライアントPCに接続したUSB機器をVDI環境にリダイレクトする「RemoteFX USB」の2つの機能を持っている。
RemoteFX 3D ビデオ アダプター機能を利用すれば、VDI環境でDirectX9を利用したアプリケーションを動かすことができる。これにより、3D CAD/CAMのソフトを動かしたり、FlashやSilverlightをスムーズに動かしたりすることが可能になる(FlashやSilverlightのビデオもスムーズの再生できる)。
RemoteFX 3D ビデオは、サーバー側にインストールされているDirectX対応のグラフィックカード(GPU)を仮想化して使用する。このため、複数のVDI環境が同時にDirectXアプリケーションを動かしても、動作させることができる。
RemoteFX USBは、クライアントPCやターミナルに接続したUSB機器をリダイレクトして、サーバー上のVDI環境で動作しているOSに認識させて、利用できるようにする。この機能を利用すれば、クライアントに挿したUSBメモリを直接VDI環境でドライブとして扱ったり、USB接続のプリンタをVDI環境で利用したりすることができる。
RemoteFXは、GPUの仮想化により、仮想OSでDirectXの機能をサポートする(TechED2010横浜のセッションスライドから) | RemoteFXは、3Dビデオだけでなく、USBのリダイレクト機能もサポートする |
■RemoteFXを利用するためのハードウェア/ソフトウェア条件
RemoteFXのシステム要件 |
RemoteFXを動かすには、DirectX9c以上のスペックに対応したGPUが必要。 |
RemoteFXでは、モニター数と解像度によって、必要とするGPUのグラフィックメモリ容量が変わる。マイクロソフトでは、1GBのグラフィックメモリを推奨している |
RemoteFXを利用するためには、サーバー側はR2 SP1、クライアント側はWindows 7 SP1にアップデートされている必要がある。特にクライアント側は、VDI環境もWindows 7 SP1、アクセスするクライアント側もWindows 7 SP1が必要になる。これは、リモートデスクトップ接続に利用するプロトコルRDPが、7.1にバージョンアップされているためだ。
現状では、RDP 7.1はWindows 7 SP1にしか搭載されていない。しかし、将来的にはXP/Vista用のソフトもリリースされるだろう(ただし、RemoteFXが利用できるVDI側のOSとしてはWindows 7 SP1だけになる)。
サーバー側のCPUとして、仮想メモリのパフォーマンスをアップする仮想化支援機能(Intel EPT/AMD NPT)をサポートしている必要がある。IntelならXeon 5500番台(Nehalem世代)以降、AMDならOpteronのShanghai世代以降でサポートされている。
もう1つ重要なのが、GPUだ。RemoteFX 3D ビデオ アダプターとして利用できるGPUは、DirectX 9c世代以降の製品となっている。正式には、AMDはプロフェッショナルグラフィックカードのATI FirePro 5800/7800/8800、NVIDIAもプロフェッショナルグラフィックカードのQuadro FX3800/4800/5800が対応していると説明している
ただし、サポートを受けられるかどうかを別にすれば、実際はコンシューマ用のグラフィックカード(DirectX 9c世代以降のグラフィックカード)も利用できるようだ。今回は、NVIDIAのGeForce GTS250を使用した。最近では、DirectX 10世代グラフィックカードも低価格でリリースされているため、RemoteFX 3D ビデオ アダプターのテストのために、グラフィックカードを購入しても1万円ほどで購入できる。
ただし、グラフィックカードの内蔵メモリに関しては、1GB以上が推奨となっている。これは、複数のVDI環境で1枚のグラフィックカードを共有するため、グラフィックメモリに関しては余裕があった方がいいためだ。実際に、1つか2つのVDI環境を1280×1024程度の中解像度グラフィック画面で利用するなら、512MBぐらいのグラフィックメモリでも十分だ。
もう1つ注意が必要なのは、コンシューマ用のグラフィックカードを利用する場合、Windows Server 2008 R2用のグラフィックドライバは配布されていないことだ。Windows Server 2008 R2用のグラフィックドライバがない場合は、Windows 7 64ビット版のドライバで代用することになる。このため、本番環境で運用する場合は、テストだけなら、ほとんど問題にはならないだろうが、この点でも保証の範囲外となる。
RemoteFX 3D ビデオは、VDI環境でGPUを仮想化して、複数のVDIで共有するための専用のグラフィックドライバがインストールされる。さらに、RemoteFXの処理は、CPUとGPUでソフトウェア処理されるが、RemoteFXの処理を高速化するためにRemoteFX専用のチップもリリースされている。RemoteFX専用のチップは、シンクライアントなどに使われる予定だ。
このように、ハードウェア/ソフトウェア環境ともに、RemoteFXをテストするには、それほどハードルは高くない。サーバー側もデスクトップ用のIntel Core iシリーズ、AMD Phenom IIシリーズなどのCPUとDirectX 10対応のグラフィックカードを使えば、ハードウェア環境は整う。後は、R2 SP1をインストールすればOKだ。
■RemoteFXを動かしてみる
RemoteFXをテストするには、本来、ターミナルサービスやセッションブローカーなどを設定して、きちんとしたVDI環境を整える必要がある。しかし、今回は、RemoteFXの機能だけをテストしたかったので、1台のPCで環境を構築した。
ハードウェアとしては、AMD PhenomⅡ X945、メモリがDDR3-1333 4GB、HDDが500GB、グラフィックカードがNVIDIA GTS250 1GBという環境でテストした。
RemoteFX 3D ビデオ アダプターは、DirectXに対応しているとはいっても、どのようなアプリケーションでも動作するわけではなさそうだ。試しに、最近話題になっている「ファイナルファンタジーXIV」のベンチマークソフトを動かしてみた。このベンチマークは、DirectX 9c以上がインストールされていること必要になっているので、もしかするとRemoteFX環境で動作するかと思ったからだ。
当初は、DirectX 9の必要なモジュールがないため動作しなかったが、DirectXの最新モジュールをインストールしてみた。すると、なんとかファイナルファンタジーXIVのベンチが動作した。2分ほどのベンチマークに10分ほどかかり、パフォーマンスに関しては、テスト環境では「動作困難」という結果が出たが、動くだけなら動いた。
続いて、Game for Windowsで配布していた「ストリートファイター4」のデモ版を動かしてみると、ファイナルファンタージXIVよりは、快適に動作していたが、これでも十分なパフォーマンスとまではいかなかった。
もっとも、パフォーマンスや互換性に関しては、パブリックベータという段階なので、この段階で評価はできない。できれば、R2 SP1がリリースされる時には、多くのゲームソフトが快適に動作するだけの互換性とパフォーマンスが実現されることを望みたい。
■Google EarthやYouTube、Silverlightビデオの再生はきちんと動作
ゲーム以外には、どんなアプリケーションが動作するのだろうか?
そこで、テストしてみたのは、Google Earthだ。Google Earthは、DirectXを使用して、3Dグラフィックとして地球を表示している。さらに、地形のデータや建物のデータも3D化されているため、東京上空の遊覧飛行も行える。この他には、GPUを使ってWebブラウザの動作を高めるIE9のプラットフォームプレビューも動作した。
Internet Explorer 8でのYouTubeの再生(Flashビデオ)、Silverlightビデオの再生などもスムーズに行えた。
RemoteFX 3D ビデオ アダプターは、RDP 7.0で積み残した機能をサポートしたといえる。これにより、ビジネスアプリケーションが利用する3D CAD/CAMなどが、ある程度動作するだろう(完全に動作するかどうかは今後の課題だ)。また、VDIのユーザーがブラウザでFlashやSilverlightを動かしても、スムーズに動作することが期待できるし、今後リリースされる、GPUのアクセラレーション機能を使ったブラウザも、RemoteFX環境でスムーズに動作するのではないか。
RemoteFXを使えば、Google Earthも仮想マシン上で利用できる。渋谷の交差点も建物が3Dで表示されている。 | RemoteFXがないと、Google Earthを起動しても、このようにエラーになる |
Flashビデオのコンテンツも、Silverlightを使ったコンテンツもスムーズに再生できる | |
IE9のプラットフォームプレビューも動作する |
ただ、クライアントPCのグラフィック機能をVDIで完全に実現するには、まだまだ時間がかかるだろう。実際、DirectX 9cの機能はサポートされているが、完全とまではいかない。また、DirectX 11で追加された、GPU側でプログラムを動かすDirect Compute機能はサポートされていない。
もう1つ重要なのは、RemoteFXはLAN回線(10Mbps以上)のスピードを必要とする点だ。このため、3G回線やWiMAXなどの現状のモバイルインターネットでは、ネットワークがボトルネックになる。
サーバー側のGPUを仮想化してVDIで共有するというRemoteFXのコンセプトは非常に面白い。今までのハイパーバイザーでは、1つの仮想環境がグラフィックカードを占有して利用するといったものだった。占有型に比べると、RemoteFXのGPU仮想化は、非常に将来性を感じる。
テストでは、グラフィックカードを1枚だけ利用したが、パブリックベータでは4枚のグラフィックカードをサポートしている。だいたい、1GPUあたり12台のVDIぐらいが最大構成になる。このため、4枚のグラフィックカードを用意すれば、48台のVDIをRemoteFXベースで動かすことができる(ただし、サーバー側でPCI Express Gen2×16が4スロット必要になるので、ある程度限られた機種での対応になる)。
将来的には、RemoteFXでDirectXの機能がすべて実現できるようになるかもしれないし、なんといっても、RemoteFXのメリットは、GPUがないクライアントからでも、サーバー側のGPUを使って、高度なグラフィックスが表示できることだろう。
現状のRDP 7.1でも、クライアント側ではDirectX 9cのGPUを必要としていない。これは、サーバー側でGPU処理を行って、グラフィックイメージを圧縮して、クライアントに転送しているからだ。だから、シンクライアントなどでも、専用チップを使えば、RemoteFXを利用することが可能になっている。
RemoteFXのようなテクノロジーが進化すれば、クライアントにはシンクライアントを使い、高速なネットワークを通じて、クラウド側にある個人のデスクトップを利用することが当たり前になるかもしれない。高精細な3Dゲーム、ワークステーションでする3D CADなどのアプリケーションもクラウド側で動かせるようになるかもしれない。
■RemoteFX USBを試す
RemoteFX USBの概念図。 |
RemoteFX USBは、クライアントPCにコネクトしたUSB機器をVDIの仮想OSにリダイレクトして、仮想OS上で利用できるようにした機能だ。
RemoteFX USBの機能により、クライアントPCに接続した、USBメモリ/USB接続HDD、プリンタ、スキャナ、指紋認証、ICカード認証などのUSB機器をVDI環境の仮想OS上でも使うことができる。特に、USBメモリやUSB接続HDDが利用できるようになったのは、非常に便利だ。ファイルを仮想OS上にコピーする時など、ネットワーク上で共有フォルダーを設定したりしなくても、簡単にファイルのコピーができるようになる。
RemoteFX USBでは、クライアントPCのUSB機器を仮想マシンにリダイレクトする | RemoteFX USBは、キーボード、USBメモリ、スキャナなど、多くのUSB機器がサポートされている |
RemoteFX USBは、RemoteFX 3D ビデオ アダプターが仮想OS上にインストールされていなければ動作しない。また、RemoteFX USB機能のON/OFFは、OSのグループポリシーによってコントロールされている。デフォルトでは、「未構成」になっているため、事前の準備として、クライアントPCと仮想OSの両方で「有効」に設定しておく必要がある。
RemoteFX USBのテストに、USBメモリとWebカメラを接続してみた。
今回は、RemoteFX USBの機能を確認したかったので、ローカルコンピュータのグループポリシーを変更した(実運用の場合はADを構築して、ドメイン全体のグループポリシーを一括してコントロールすべきだろう)。
まず、クライアントPCにUSBメモリを挿す。クライアントPC側で認識されるが、いったんOS上で取り外しを行っておく。ただし、実際にUSBメモリは、USBポートからは取り外さずにおく。
リモートデスクトップ接続を起動して、オプション→ローカルリソース→ローカルデバイスとリソース→詳細→その他のサポートされているRemoteFX USBデバイス→USB大容量記憶装置を選択する。
注意が必要なのは、クライアントPC側でUSBメモリが認識され、ドライブとして利用できる状態になっていると、ローカルデバイスとリソースにRemoteFX USBデバイスとしてUSB大容量記憶装置が表示されない。この場合は、クライアントPC側でUSBメモリをOSから取り外そう。
この設定で、仮想OSにリモートデスクトップ接続を行う。仮想OSに接続して、ログイン処理が終了すれば、仮想OSが自動的にUSBメモリを認識して、仮想OS側にUSBメモリのドライバをインストールする。これで、USBメモリが仮想OSでドライブとして認識され、利用できるになった。
ただし注意が必要なのは、仮想OSでUSBメモリを認識させて、利用している場合は、クライアントPCではそのUSBメモリは使用できない。これは、USBメモリのアクセスを仮想OSが占有しているためだ。つまり、USB機器は、複数のOSで共有することはできない。1つのOSだけが占有できる。
例えば、複数の仮想OSを起動して、クライアントPCに接続したUSBメモリを起動している複数の仮想OSから、同時にアクセスすることはできない。
Webカメラの場合も、USBメモリと同じように、クライアントPCのUSBポートに挿して、その後クライアントPCのOS上からは切り離す。その後、リモートデスクトップ接続のRemoteFX USBデバイスとして選択して、仮想OSに接続する。
仮想OSに接続すれば、自動的にWebカメラを認識して、必要なドライバをインストールする。もし、インボックスドライバがなければ、Windows Updateの機能を使って、ネットからドライバをダウンロードして、インストールしてくれる。
今回テストしたロジクールのWebカメラでは、Webカメラの標準的なドライバ以外に、ロジクールの専用ソフトをインストールしようとしていた。しかし、このアプリケーションのインストール時に、物理的なUSBポートをチェックしているためか、エラーが起こり、これ以上のインストールはできなかった(ロジクールのサイトから、ドライバソフトをダウンロードして、インストールしようとしても、同じ状況になった)。
ただ、ロジクールのWebカメラ用のアプリケーションはインストールされなかったが、Webカメラのドライバはインストールされているため、Webカメラ自体は動作していた。
RemoteFX USBでも、ドライバ単体のインストールはできても、それに関連するアプリケーションなどのインストールに問題が起こっているようだ。Windows Server 2008 R2/Windows 7 SP1が完成した時には、もう少し互換性がアップしてほしいものだ。ただ、ユーザー側も、すべてのUSBデバイスが仮想OS上で完全に動作すると思わない方がいいだろう。前述したように、USBメモリ、USB接続HDD、スキャナ、プリンタなどは利用できるが、指紋/ICカード認証デバイスは、ログイン処理には利用できない。また、USB接続のLANデバイスは、サポートされていない。
UBSメモリとUSB接続のWebカメラを接続した | Webカメラのドライバは、OSになければ、インターネットから自動的にインストールされる |
Silverlight 4では、Webカメラをサポートしているため、動作を確認した | 今回は、Webカメラにロジクールの製品を利用した。ロジクールのWebカメラ用のアプリケーションをインストールしようとするとエラーが出た |
ここまで、RemoteFX 3DやRemoteFX USBの機能を見てきたが、RemoteFXの登場によりVDI環境がより使いやすくなると感じた。仮想マシンへのUSB接続などは、VMwareなどは先行していた。また、アプローチは異なるが、仮想OS上でのPC over IPにより動画再生などをサポートしている。
USB接続機能などは、VMwareがそれなりの完成度を持っているように感じる。一方DirectXサポートに関しては、アプローチは異なるが、GPUの仮想化に踏み込んだRemoteFX 3Dの先進性が光る。どちらにしても、仮想OSでも、今までのPCと同じ環境を実現しようとしているのだろう。今後は、仮想/物理とも同じユーザーインターフェイス、同じような使い勝手を実現できるようになるのだろう。
次回は、Windows Server 2008 R2 SP1のもう1つの特徴、Dynamic Memoryを紹介する予定だ。
■付録:RemoteFX環境の構築
1)Windows Server 2008 R2をインストール。今回は、NVIDIAのGPUを使用しているため、NVIDIAのサイトからWindows 7 64ビット用のグラフィックドライバをダウンロードしてインストールした。もし、ATIのGPUを使用している場合は、AMDのサイトからグラフィックカードに合わせたWindows 7 64ビット版のドライバをダウンロードして利用する。できるだけ最新のグラフィックドライバを使用した方がいい。
NVIDIAのサイトから、最新版のドライバをダウンロードする。ただし、Windows Server 2008 R2対応のドライバはないので、Windows 7 X64ドライバを利用する。 |
2)Windows Server 2008 R2 SP1をインストール。Windows Server 2008 R2 SP1のパブリックベータサイトから、ダウンロードしたSP1をインストール。SP1は、Windows Update版ではなく、Windows 7/Windows Server 2008 R2用のISOファイルをダウンロードしておく。ISOファイルをDVD-Rに焼き、Windows Server 2008 R2にインストール。また、SP1のISOファイルは、VDI環境のWindows 7にも使用するため、サーバーにISOファイルをコピーしておく。
Windows Server 2008 R2/Windows 7 SP1のダウンロードページ(http://technet.microsoft.com/ja-jp/evalcenter/ff183870.aspx) | Windows Server 2008 R2 SP1をインストール | Windows Server 2008 R2 SP1にインストールしたNVIDIAのドライバ |
3)Hyper-Vの役割を追加。
4)リモートデスクトップ仮想化ホストの役割を追加。コアサービスとRemoteFXのサービスを追加しておく。
リモートデスクトップサービスから、リモートデスクトップ仮想化のコアサービス、RemoteFXの2つを追加する |
5)Hyper-V上でWindows 7の仮想環境をインストール。通常VDI環境をキチンと構築するためには、ADやターミナルセッションブローカーなどの構築が必要になるが、今回はRemoteFXの機能だけをテストしたいため、WorkGroupでWindows 7を構築。ADにクライアントは登録しなかった。
6)ダウンロードしたSP1のISOファイルを仮想環境のWindows7にインストール。
仮想マシンのWindows 7とSP1をインストール |
7)仮想環境のWindows 7 SP1を起動して、コントロールパネル→システムとセキュリティ→システム→リモート設定のリモートデスクトップで、「リモートデスクトップを実行しているコンピュータからの接続を許可する」を指定。ネットワークレベル認証でも動作するが、トラブルが起こった時のことを考えて、セキュリティレベルは高く設定しなかった。
さらに、「ユーザーの選択」ボタンを押して、コンピュータ名¥ユーザー名(仮想環境に構築したWindows 7のコンピュータ名とユーザー名)を登録しておく。このユーザー名でリモート接続する。
その後、いったん仮想環境をシャットダウンする。
リモートデスクトップで、「リモートデスクトップを実行しているコンピュータからの接続を許可する」を選択 | リモートデスクトップ接続ができるユーザーとしてコンピュータ名¥ユーザー名(今回はRemote-FX\masafumi)を登録 |
8)Hyper-VマネージャーでWindows 7の仮想マシンの設定を開く。設定の「ハードウェアの追加」から、「RemoteFX 3D ビデオ アダプター」を追加し、Windows 7の仮想マシンを起動する。起動後、RemoteFX 3D ビデオ アダプターのインストールが行われる。初回起動時には、インストール後、再起動される。
仮想マシンにRemoteFX 3D ビデオ アダプターを追加 | RemoteFX 3D ビデオ アダプターでは、モニター数、画面の解像度などの設定が行える。 |
9)RemoteFX 3D ビデオ アダプターをインストールした仮想マシンを起動する。
10)Hyper-Vを動かしているWindows Server 2008 R2で、リモートデスクトップ接続を起動して、仮想マシンのIPアドレスを直接入力して、Hyper-V上のWindows 7に接続する。
この場合注意が必要なのは、RemoteFX 3D ビデオ アダプターを有効にしている仮想OSでは、Hyper-Vマネージャーから仮想OSに接続して、画面表示を行おうとしても、「ビデオリモート処理の接続は解除されました」というテキストが表示されるだけだという点。画面は、テキスト以外何も表示されない。これは、Hyper-Vマネージャーの「仮想マシン接続コンソール」が、RemoteFX 3Dをサポートしていないためだ。
できれば、何からの画面表示ができると、いちいちリモートデスクトップ接続を使わなくても操作できるので、便利だと思うのだが。このあたりは、完成版での機能アップを期待したい。