[an error occurred while processing the directive]

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を使って構築できるというわけだ。

仮想化技術を使ったMicrosoftの製品展開。管理、サーバー、デスクトップ、アプリケーション、プレゼンテーションの各分野に仮想化技術を利用する SoftGridの動作解説。最初にアプリケーションを加工して、細かく分割した配置イメージを作る。実行時には、クライアント上の実行環境が、細かく分けられたパーツを必要に応じてネットワークから転送する。パーツは、クライアント上でキャッシュされ、一度動作すれば、オフラインでも実行が可能となる 仮想マシンとターミナルサービスを使うVista Enterprise Centralized Desktop。仮想マシンの表示機能をターミナルサービス(リモートデスクトップ)で行なうことで、仮想マシンとクライアントを柔軟に結びつけることができる

●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の構造図。仮想環境を作るHyperVisorの上にパーティションと呼ばれる仮想マシンが作られる。なお、ペアレントパーティションは、Windows Server 2008になる。Enlightenmentsを使い、WindowsカーネルがHyperViosrを呼び出すことでより効率的な実行が可能となる Windows Server Virtualizationとさまざまなオペレーティングシステムの実行。Enlightenmentsに対応したオペレーティングシステムでは、VMBusデータ転送サービスを経由したデータ転送がペアレントパーティションと可能になる。非対応オペレーティングシステムでは、ソフトウェアエミュレーションによるデバイスサポートが行なわれる

●仮想化技術はまだまだ発展途上

 デバイスの仮想化は、ハードウェアによる支援がまだ、一部しか行なわれておらず、また、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のホームページ(英文)
http://www.microsoft.com/
□WinHECのホームページ(英文)
http://www.microsoft.com/whdc/winhec/
□関連記事
【5月18日】【WinHEC】Windows Server 2008の製品展開やロードマップが公開
http://pc.watch.impress.co.jp/docs/2007/0518/winhec03.htm
【5月17日】【WinHEC】ビル・ゲイツ会長基調講演レポート
http://pc.watch.impress.co.jp/docs/2007/0517/winhec02.htm
【5月16日】マイクロソフト、次期サーバーOSの名称を「Windows Server 2008」に決定
http://pc.watch.impress.co.jp/docs/2007/0516/ms.htm

(2007年5月21日)

[Reported by 塩田紳二]

【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp
お問い合わせに対して、個別にご回答はいたしません。

Copyright (c)2007 Impress Watch Corporation, an Impress Group company. All rights reserved.