WinHEC2007レポート
Microsoftが熱中する仮想技術の実際と展開会期: 2007年5月15日~17日(現地時間) 会場: Los Angeles Convention Center 今回は、WinHEC 2007のセッションから、仮想技術関連の話題を拾ってレポートする。これまで、Windowsでは、仮想化技術は、あとから追加するアドオンとして提供されてきたが、Windows Server 2008登場後、「Windows Server Virtualization」からは、オペレーティングシステム組み込みの標準機能となる。また、クライアント側には、Virtual PC 2007が用意され、ハードウェア仮想化技術への対応が行なわれている。これにより、Microsoftは、ほとんどの領域で仮想化技術を利用できるようになる。今回、仮想化関連のセッションにいくつか出たが、仮想化は、今後のWindowsの中で重要な地位を占めるキーワードになっていた。 64bit化は、今後の発展を考える上での義務のようなものだが、仮想化は、Microsoftが積極的に取り組んでいる技術であり、重要度としては同じようなものの、この2つの間には温度差がある。いわばMicrosoftは今、仮想化に「熱中」している感じがある。 この中でも大きいのは、Windows Server 2008に搭載される予定のWindows Server Virtuilaizationである。βテストのスケジュールは遅れたが、現時点では、Windows Server 2008出荷後180日以内に提供が行なわれることになっている。 しかし、こうしたストレートな仮想化だけでなく、Microsoftは、さまざまな対応を考えている。たとえば、仮想化技術により作られる仮想マシンは、これまでの物理的なハードウェアと見かけ上同じになる。ハードウェアは1つだけでも、複数のマシンを管理するのと同じことをやらねばならなくなる。Microsoftは、これまで提供してきた、マシン群の管理システムであるSystem Centerを、仮想マシンにまで拡張、これを仮想マシンの標準的な管理ツールとすることにしたようだ。 また、買収したSoftGrid技術をアプリケーション仮想化(Application Virtualization)、仮想マシンと組み合わせるターミナルサーバー機能(リモートデスクトップ)をPresentation Virtualizationと呼んでいる。 前者は、基調講演レポートでも少し書いたが、買収したSofGridというソフトウェアにより行なうもので、後者が、これまでのWindows Server 2003でもサポートされていたターミナルサービスの機能である。 SoftGridは、通常のアプリケーションから、ネットワーク配布用のパッケージを作る。これは、実行時の依存関係などを見て、プログラムやレジストリ設定、必要なファイルなどを細かく分割し、ネットワークで素早く送れるようにしたもの。 クライアント側には、専用の実行環境が必要で、これは一種の仮想マシンになっている。アプリケーションは、最初、サーバー側に置かれていて、クライアントで実行が開始されると、バラバラにしたアプリケーションを必要に応じて転送する。通常のプログラム実行では、ファイルがメモリに読み込まれ、それが実行されるのだが、SoftGridでは、それをネットワーク経由で、細かく分けて行なう。通常のプログラムでいえば、アプリケーションが複数のファイルに分かれていて、必要に応じてメモリに読み込んで、実行イメージを作っていくようなものであり、実行と読みこみが並行して行なわれるため、ファイルの読みこみ時間に相当する待ち時間がなく、ネットワークからの転送であるにもかかわらず、比較的高速に実行が可能だ。また、必要なものがすべて送られてしまえば、通常のアプリケーション実行となんら変わることがなく、また、次回からは、サーバー側のソフトウェアがアップデートなどされていない限り、キャッシュしたイメージで起動する。 単に、インストールイメージをサーバー側に持ち、クライアントにインストールするのとは違って、サーバー側には、基本的な設定が終了した実行イメージがあるため、企業などでは、一定の設定を行なった実行ファイルを配布できる。 こうした実行環境の構築に仮想技術を使っているのがミソである。仮想技術を使うことで、システムとアプリケーションの間に容易に処理を挟み込むことができる。SoftGridは、Windowsの中に独自の実行環境を作り、アプリケーションの起動処理を独自に行なう。アプリケーション自体の実行は、WindowsのAPIをそのまま使うために、実行効率の問題は発生しない。 Presentation Virtuailzationは、仮想環境と組み合わせて使うターミナルサービスである。仮想マシンを実行する「実行サーバー」とターミナルサービスを組合せることで、シンクライアントなどを使ってデスクトップ環境を構築できる。こうした仕組みとしてMicrosoftは、VECD(Vista Enterprise Centralized Desktop)と呼ばれるものを提供する予定だ。 これは、クライアントマシンが、Windows Vistaの起動を要求したら、System Centerが稼働率などを見て、実行サーバーを決定、Vista環境を仮想マシンで実行して、ターミナルサービス経由でデスクトップをクライアントに表示させる。こうした管理をWindows Server Virtualizationに対応したSystem CenterとWindows Server 2008を使って構築できるというわけだ。 ●Windows Server Virtualization では、Windows Server Virtualization(Viridian)はどういう構造になっているのだろうか。これまでのVirtual Serverと違い、Windows Server Virtualizationは、HyperVisorと呼ばれる構造を持つ。これは、ホストオペレーティングシステムの上に仮想環境を作るのではなく、仮想環境がハードウェアの上に乗り、その上ですべてのオペレーティングシステムが乗るものだ。ただし、Windows Server Virtualizationは、Windows Server 2008用に作られており、ペアレントパーティションと呼ばれる最初に作られる実行環境では、Windows Server 2008が動作する。 それ以外の仮想環境は、チャイルドパーティションとなり、その中でWindowsやLinuxなどのオペレーティングシステムが動作する。なお、実行には、ハードウェアによる仮想化支援機能も使われるが、より、効率的な実行を可能にするため、チャイルドパーティションの中から、HyperVisorの機能を呼び出すことができる。つまり、オペレーティングシステムが、仮想環境の中で動作してていることを検出して、クリティカルな処理などをHyperVisor側にまかせることなどが可能になるわけだ。この機構は「Enlightenments」と呼ばれている。Windows VistaやWindows Server 2008は、こうした機構を備えると思われる。 Microsoftは、XenやNovellと提携しており、Linux系でもEnlightenmentsをサポートするカーネルが利用できるようになる予定だ。また、HyperVisorを呼び出すためのHypercall APIは、文書化されて公開されているため、他のオペレーティングシステムでも対応することは不可能ではないと思われる。 こうしたHypervisor構造を持つ仮想環境としては、VMWare ESX Serverがあるが、最大の違いは、Windows Server Virtualizationの物理デバイスのデバイスドライバは、ペアレントパーティションで動作しているWindows Server 2008内で動くことだ。つまり、デバイスは、すべてWindows Server 2008のデバイスとして管理され、これを仮想化してチャイルドパーティションに対して提供するわけである。 これに対して、VMWare ESX Serverは、HyperVisorが直接デバイスドライバを動作させ、これを仮想化してゲストオペレーティングシステム側に提供している。後者の方が効率はよいものの、デバイスドライバを専用に作る必要がある。逆に、Windows Server Virtualizationの方式は、Windows Server 2008用のデバイスドライバをそのまま利用できる。ただし、どんな場合でもデバイス処理は、Windows Server 2008を経由するため、効率が犠牲になるという欠点がある。 豊富なボックスドライバを持つMicrosoftとしては、効率よりもデバイスサポートの広さを選んだわけだ。 こうした仮想マシン(パーティション)間のデータ転送の機構としてはVMBusと呼ばれるソフトウェアによるバスが用意される。ただし、これを使うためには、前述のEnlitenmentsに対応している必要がある。対応していない場合には、パーティションに対して、ソフトウェアによるデバイスのエミュレーションが行なわれる。これは、現在のVirtual PCと同じく、一定仕様のハードウェアをソフトウェアでエミュレーションするものだ。 仮想化にからんで、Microsoftが提案しているのがVHD(Virtual Hard Disk)である。これは、仮想環境から見えるストレージを、ファイル形式にしたものだ。現在のVirtual PCでは、ゲストOSの起動イメージやファイルシステム、仮想マシン状態などを保存するファイルとして利用されているものだ。Microsoftは、このVHDを標準としてロイヤリティフリーでの提供を計画中で、他の仮想環境とも共通して利用できるようにする考えだ。 Microsoftは、たとえば、Exchangeなどのサーバー系ソフトウェアを動くようにしたVHD(Windows Server 2003の上でExchange Serverが動くなような環境が作られている)などを配布、こうした専用のシステムが必要となるソフトウェアを仮想マシン上で簡単に評価できるようにしている。 ●仮想化技術はまだまだ発展途上 デバイスの仮想化は、ハードウェアによる支援がまだ、一部しか行なわれておらず、また、Windows Server Virtualizationでも、現時点のハードウェアが持つ支援機能を完全には利用していない。現時点で一番問題になっているのはDMAのサポートである。 現在では、大量のデータをやりとりするデバイスは、バス・マスターとなりDMAを行なうのが普通になっている。このとき、デバイスは物理メモリ空間内に割り当てられ、物理アドレスを使って、転送を行なう。しかし、これに対して指示を出すソフトウェアが扱うのは仮想アドレスである。 現在でも、仮想アドレスと物理アドレスの変換は行なわれているが、仮想化になると、各仮想マシンの仮想アドレスは個々に独立している。このため、仮想マシンごとに変換テーブルなどを持つ必要があるし、デバイスのアドレス割り当ても個々の仮想マシンごとに行なう必要がある。 これをソフトウェアで行なうとかなりの負担となるため、Intelは、VT-d、AMDは、IOMMUという機構を用意する予定だ。簡単にいえば、これは、ハードウェアによるアドレス変換機構である。また、PCI Expressに関しては、デバイス仮想化の仕様IOvを策定中である。 Microsoftは、これをDMA Remapping(DMAr)という形で取り込む予定だが、最初に登場するWindows Server Virtualization(Viridian)には間に合わないようだ。 WinHECのセッションでも、DMAに関しては、「まだ、長期的な方向性は未定」となっていて、WinHEC参加者向けのページには、WindowsでのDMAサポートに関するアンケートさえ作られている。 また、今回のWindows Server Virtualizationからは落ちてしまったが、実行中の仮想環境を他の仮想マシンへと移動させるLive Migrationを開発中である。こうした機能は、先行するVMwareではすでに実現されており、Microsoftとしては、まずは、これに追いつくというのが現在の目標である。 仮想化技術は、メインフレームで始まり、Unix系のサーバーで先行して開発が続けられた。PCに導入されてしばらく経つが、ハードウェアでの支援が開始されたのはごく最近である。また、メインフレームやUnixサーバーは、単一メーカーがマシンや大半の周辺機器を提供していたため、そのサポートは容易だったが、PCとなるとさまざまなマザーボードがあり、さまざまなデバイスのサポートが必要となるほか、過去との互換性も重要となる。このため、デバイスの仮想化やサポートは、いわば未踏領域ともいえる。広範囲な仮想化技術の利用に踏み切ったMicrosoftだが、対応しなければならない問題はまだまだ沢山ある状態だ。 □Microsoftのホームページ(英文) (2007年5月21日) [Reported by 塩田紳二]
【PC Watchホームページ】
|