クライアント仮想化を果たしたWindows 8~Hyper-V 3.0レポート


 9月に開催されたMicrosoftのカンファレンス「BUILD」で発表されたWindows 8(開発コード名)は、クライアントハイパーバイザーを搭載したクライアントOSとなった。

 Windows Server 2008にサーバー仮想化機能のHyper-Vが搭載されてから、クライアントOSにハイパーバイザーを搭載するうわさは何度となく出ていた。特に、Windows 7のXPモードによって、クライアントPCの仮想化に注目が集まった。XPモードは、ホスト型の仮想化システムのVirtual PC上でWindows XPを動作させていたので、実用的なパフォーマンスで利用できるまでには達していない。

 企業の多くでは、Windows XPのアプリケーションが残っているため、後方互換性という意味でも、Windows XPが動作するというのは重要だった。しかし前述のように、Virtual PC環境では、あまりにもパフォーマンスが悪く、今後を考えればベアメタルのハイパーバイザーが必要になっている。こういったことから、サーバー側で使われていたハイパーバイザーのHyper-Vが、クライアントOSでも利用されることになった。

 今回は、Windows 8のHyper-Vについて、試用も含めてレポートする。


Hyper-V 3.0で搭載された機能。クライアントPC向けには、WiFi NICの仮想化も行われている

 

Windows 8のHyper-Vの動作環境は?

 Windows 8に搭載されたハイパーバイザー、Hyper-V 3.0には、いくつか動作要件がある。

Windows 8のHyper-Vは、64ビット版環境でしか動作しない。CPUも第2世代の仮想化支援機能が必要

 まず、64ビット環境であることだ。Windows 8にはx86(32ビット)とx64(64ビット)が存在する。Hyper-V 3.0を動かすには、64ビット環境のx64版が必要となる。

 CPUの要件としては、第2世代の仮想化支援機能であるIntel EPT(Extended Page Tables )やAMD RVI(Rapid Virtualization Indexing)が必要になる。現在、第2世代の仮想化支援機能を搭載したCPUとしては、インテルならCore iシリーズ、AMDならPhenomシリーズとなる。インテルCPUに関しては、CPUのバリエーションによってサポートされていない場合もあるので、注意が必要だ。

 Windows7のXPモードは、当初は第1世代の仮想化支援機能を必要とした。しかし、PCに搭載されているCPUではサポートされているが、BIOSで仮想化支援機能のサポートをオフにしているPCがあり市場では混乱していた。これを受けてMicrosoftでは、性能を犠牲にしても、多くのPCで動作させるために、仮想化支援機能を使用しなくても、XPモードが利用できるパッチを提供した。

 Windows 8のHyper-V 3.0は、ハイパーバイザーのアーキテクチャからいっても、第2世代の仮想化支援機能が必須となる。XPモードのように、リリース後に要件が変更されることはないだろう。PCメーカーでは、Windows 8のHyper-Vの動作検証を行う必要があるが、動作検証に手間がかかるため、クライアント仮想化は、ビジネス向けのPCでしかサポートされない可能性が高いのではないか。

 ちなみに、Windows 8ではARM版も登場するが、ARM版は32ビット版しか存在しないため、Hyper-Vは動作しないだろう。現在のARM CPUのアーキテクチャでは、CPUによる仮想化支援機能がサポートされていないことも大きな理由だ。

 なお、CPUに搭載されている仮想化支援関連の機能としては、このほかにI/O仮想化支援機能(Intel VT-d、AMD IOMMU)があるが、今回発表されたWindows 8 Developer PreviewのHyper-V 3.0を動かすには、I/Oの仮想化支援機能は必要ない。

 余談であるが、サーバー側のHyper-V 3.0では、仮想マシンが直接NICにアクセスできるSR-IOVがサポートされている。この機能は、I/Oの仮想化機能を利用して作られている(ちなみに、サーバーのHyper-V 3.0は、第1世代の仮想化支援機能でも動作する。ただ、性能を生かすには第2世代の仮想化支援機能が推奨されている)。

 クライアントでは、仮想マシンがNICに直接アクセスするということはほとんどメリットはない。しかし、同じ仕組みを利用して、仮想マシンが直接グラフィックカードにアクセスするGPUパススルー機能が実現する。GPUパススルー機能が採用されれば、仮想マシン上のWindows 8でDirectXを利用したゲームやCADソフトなどを動かすことができるかもしれない。

 Windows 8 Developer Previewは、開発者がテストするためのリリースだ。このため、まだ搭載されていない機能も多くある。今後Windows 8の評価を考えているIT管理者は、Windows 8 Developer Previewではなく、β版やRC版を待った方がいいだろう。β版やRC版がリリースされるころには、機能もフィックスして、キチンとした評価ができるだろう。

 

WDDM 1.2でクライアント仮想化が変わる?

Windows 8で採用されるWDDM 1.2は、ディスプレイ表示部分とレンダリング部分を2つに分割することが可能だ

 Buildカンファレンスのセッションで紹介されたのが、WDDM(Windows Display Driver Model)1.2だ。Microsoftは、Windows 8においてグラフィックドライバの機能アップを計画しているようだ。

 Windows 7では、WDDM 1.1を採用している。WDDM 1.1までは、GPUを使ったレンダリングやディスプレイ表示を一体化したドライバで行っていた。しかし、WDDM 1.2では、ディスプレイ表示だけ、レンダリングだけに2つのドライバに分けることが可能になっている(もちろん、WDDM 1.2でも一体化したドライバはサポートされる)。ちなみに、WDDM 1.2では3Dステレオ表示に対応している。

 ドライバを2つの部分に分けるWDDM 1.2を利用すれば、RemoteFXのように複数の仮想マシンでGPUを利用したアプリケーションを動かすことができるかもしれない。通常のGPUパススルーのように、あらかじめ決められた仮想マシンだけがGPUを使えるというのではなく、さまざまな仮想マシンでGPUが利用できるようになるだろう。

 RemoteFXは、ソフトウェアでGPUの機能をエミュレーションしているため、ゲームを動かすほどの性能は持っていなかった。また、エミュレーションしているDirectXもDirectX 9までで、DirectX 10/11には対応していなかった。

 しかし、WDDM 1.2を利用すれば、GPUの性能を生かしてゲームを複数の仮想マシンで楽しむことも可能になるかもしれない。もしかすると、サーバー側に高機能なGPUカードを用意しておき、レンダリングなどはサーバー側で行い、表示は低スペックのPCで行うといったことも可能になるかもしれない。

 このあたりは、グラフィックチップベンダーの対応にもかかわるため、Microsoftのシナリオ通りに進むとは限らない。しかし、仮想化でもGPUが生かせるような仕組み考えているのは確かだろう。

 

Hyper-V 3.0をテストする

 実際に、Windows 8 Developer Previewを使って、Hyper-V 3.0の機能をテストしてみた。

 Windows 8 Developer PreviewにHyper-V 3.0をインストールするには、Metroスタイルのスタート画面にあるControl Panelを起動し、More Settingを選択する。More Settingを選択すると、Winodws7でおなじみのコントロールパネルの画面が表示される。

 コントロールパネルからProgramsを選択し、さらにPrograms and Featuresを選択する。現在使用しているWindows 8にインストールされているプログラムが表示されているが、左側にあるTune Windows Features on or offを選択。

 Windows Featuresが表示される。この中から、Hyper-Vの項目を選択。Hyper-V CoreとHyper-V Manager Toolsの2つの項目共にチェックを入れて、インストールする。

 再起動後、スタート画面を見るとHyper-V ManagerとHyper-V Virtual Machine Connectionの2つのタイルが追加されている。


スタート画面にあるコントロールパネルから、More Settingを選択して、Windows7でおなじみのコントロールパネルを表示コントロールパネルのProgramsから、Windows機能の有効/無効を選択する
Windows機能の有効/無効で、Hyper-Vを選択。Hyper-V CoreとHyper-V Management Toolsをインストール再起動後、スタート画面を見ると、Hyper-V ManagerとHyper-V Virtual Machine Connectionが追加されている
Hyper-V Managerを起動すると、Windows Server 2008 R2でおなじみの画面が表示される

 仮想マシンを作成するには、Hyper-V Managerを使用する。Windows 8のHyper-V Manager自体は、Windows Server 2008 R2のHyper-V Managerとほとんど同じユーザーインターフェイスだ。このため、サーバーのHyper-Vを一度でも利用したことがあるユーザーなら、操作に戸惑うことはないだろう。

 Hyper-V Virtual Machine Connectionは、仮想マシンに接続するためのアプリケーションだ。接続するホスト名、仮想マシン名を入力すれば、仮想マシンを表示することができる。ホスト名を入力するため、ローカルPCだけでなく、ネットワーク上にあるサーバー上の仮想マシンにアクセスすることもできる。

 今回は、Windows XPとWindows 7をインストールしてみた。Windows 8 Developer Previewは、日本語化されていないが、Hyper-V 3.0の仮想環境上には、日本語のWindows XPやWindows7をインストールして、動かすことができた。


Hyper-V ManagerでWindows XPとWindows 7の仮想マシンを作成してみたWindows 8 Developer Preview上で、Windows XPとWindows 7の2つの仮想マシンが動作している

 

Windows 8のHyper-V 3.0の利用シーン

 Microsoftでは、Windows 8のHyper-V 3.0をアプリケーション開発のシーンでも使ってもらおうと考えている。

Buildでは、Hyper-V上で動作している仮想マシン(VHDXファイル)を物理環境に移して、ブートするデモが行われていた

 BUILDカンファレンスでは、Windows 8のホストOS上でVisual Studioなどの開発ツールを利用してアプリケーションを開発し、Hyper-v上の仮想マシンに開発したアプリケーションをインストールしてテストするといったことが簡単にできる。

 さらに、仮想マシンを物理環境で起動することも可能になっている。これを使えば、アプリケーションをインストールした仮想ディスクを直接物理マシンで起動することもできる。最終的に物理マシンでの動作をテストすることも可能だ。

 BUILDのデモでは、アプリケーション開発においてのクライアント仮想化の利用シーンが紹介されたが、仮想と物理が自在に行き来ができるようになれば、企業でのPCの利用方法も変わってくるかもしれない。

 最近注目されているデスクトップ仮想化(VDI)の1つとして、サーバー上で動作しているVDIの仮想ディスクをクライアントPCにコピーすれば、仮想環境としても、物理環境としても動かすことができる。後は、サーバー側とクライアントPCの同期させる仕組みを用意すれば、VDIでも、物理環境でも同じデスクトップを利用することができるようになるだろう。

 また、USB 3.0のメモリにVDIイメージをコピーしておけば、ネットカフェなどにある共用PCでも自分のデスクトップ環境を動かすこともできる。このときは、USBメモリを起動ドライブとして利用するため、ネットカフェのPCには個人データなどが保存されることもない。このため、安心して、共用PCを使うことが可能になる。サードパーティなどの既存ソリューションでも実現されているが、仮想化によって、より簡単にできるようになるということだ。

 Hyper-V 3.0を使ったクライアント仮想化に関しては、新しいPCの使い方を提案してくれるだろう。Windows 8のリリースに向けては、仮想環境を構築するの簡単にできるツールの提供、Active Directoryとの連携など、今後一層機能の充実に期待をしたい。


Windows To Goは、USB 3.0メモリをブートディスクとして使う。OSの入った仮想ディスク(VHDXファイル)をUSB 3.0に入れて使う
関連情報