Windows Server 2008には新機能や機能強化がいくつもあるが、その中で、なぜ仮想化の説明から始めるのか。顧客にとって、その答えは「ニーズ」である。われわれITプロフェッショナルにとって、その技術的な答えは「アーキテクチャ」である。

 ここでは,Windows Server 2008における仮想化の現在および将来の姿を、ITプロフェッショナル向けに説明しよう。

仮想化の現状

 Windowsプラットフォームにおける仮想化は、現状では「タイプ2」または「ハイブリッド」のいずれかの形式で実装されている。Java VMはタイプ2の仮想化の典型的な例だが、別の例として.NET Frameworkの共通言語ランタイム(CLR)もある。どちらの例も、ホストOSが開始点となる。つまり、OSが物理ハードウェア上に直接インストールされている。ホストOSの上の層ではVMM(Virtual Machine Monitor:仮想マシンモニタ)が実行される。

 VMMの役割は、VMを作成して管理し、VMにリソースを分配して、それらのVMが互いに分離された状態を保つことである。別の言い方をすれば、このシナリオにおけるVMMは「仮想化層」である。VMMの上の層には、実行中のゲストが存在する。Javaアプリケーションまたは.NETアプリケーションがこれに相当する。

 以上の配置を示したのが図1である。ゲストはVMMとホストOSの両方を経由してハードウェアにアクセスする必要があるため、一般的にこのシナリオでは最適なパフォーマンスは得られない。

図1●タイプ2形式のVMMのアーキテクチャ
図1●タイプ2形式のVMMのアーキテクチャ

 ITプロフェッショナルならば、図2に示したハイブリッド形式の仮想化の方がなじみ深いだろう。この形式では、ホストOSとVMMの両方が基本的にハードウェア上で直接実行される(ただし、ハードウェア・コンポーネントごとにアクセスのレベルはさまざまに異なる)。

 一方、ゲストOSは仮想化層の上の層で実行される。より厳密な言い方をすれば、この構成でも、VMMはハードウェアにアクセスするために、ホストOSを経由する必要がある。しかし、ホストOSとVMMはどちらもカーネルモードで実行されるため、本質的にはCPUサイクルを互いに奪い合っている。

 ホストでは、ホストコンテキストの中で必要になったときにCPUサイクルを取得し、次にVMMにサイクルを渡す。VMMサービスでは、さらにサイクルをゲストOSに提供する。このように、CPUサイクルが受け渡しされるのである。ハイブリッドモデルの方が高速になる理由は、タイプ2モデルのようにVMMが一般に「ユーザー」モードで実行されるのではなく、カーネルモードで実行されるからである。

 ハイブリッド形式のVMMによるアプローチは、現在、マイクロソフトから提供されている2つの仮想化ソリューション、Virtual PC 2007とVirtualServer 2005 R2で採用されている。ハイブリッド形式のVMMはタイプ2形式のVMMよりもパフォーマンスが良いが、それでも、2台の別の物理マシンほどではない。

図2●ハイブリッド形式のVMMのアーキテクチャ
図2●ハイブリッド形式のVMMのアーキテクチャ

注意
 タイプ2のVMMとハイブリッドのVMMでもう1つ異なる点は、タイプ2のVMMが「プロセス仮想マシン」であるのに対し、ハイブリッドのVMMは「システム仮想マシン」であることだ。前者は各プロセス(サービスやアプリケーション)が物理システム上で別々のゲストとして分離されるためにこう呼ばれるが、後者はWindowsやLinuxなどのOS全体が別々のゲストとして分離されるので、このように呼ばれる。

 3種類目の仮想化テクノロジとして現在利用できるのが、タイプ1のVMM、つまり「ハイパーバイザテクノロジ」である。

 ハイパーバイザ(Hypervisor)とは、ハードウェアのすぐ上の層で、かつ、1つまたは複数のOSのすぐ下の層に常駐するソフトウェア層のことである。ハイパーバイザの主な目的は、パーティションと呼ばれる分離された実行環境を提供することである。

 ゲストOSを含むVMは、このパーティションの中で実行される。各パーティションには、メモリー、CPUサイクル、デバイスなどの独自のハードウェア・リソース群が提供され、ハイパーバイザはこの基になるハードウェアへのアクセスの制御や調整を行う役割を担う。

 タイプ1のVMMの単純な構造を図3に示す。VMM(ハイパーバイザ)は、地金(ベアメタル:基になるハードウェア)のすぐ上の層で実行され、いくつかのゲストOSがVMMの上の層で実行されている。

図3●タイプ1形式のVMMのアーキテクチャ
図3●タイプ1形式のVMMのアーキテクチャ

 将来的に、ハイパーバイザをベースとする仮想化はパフォーマンスに関して特に大きな可能性を秘めており、Windows Server 2008でハイパーバイザをどのように実装するかについては、まもなく明らかになるだろう。ここでは、タイプ1のVMMのバリエーションである「モノリシック型」と「マイクロカーネル型」について、比較してみよう。