Xenは,英国ケンブリッジ大学コンピュータ研究所で2002年ころに始まった,広域分散コンピューティングのインフラ作りを目指す「Xenoserverプロジェクト」から生まれた。2005年にはXenをベースとしたエンタープライズ・ソリューションを提供するXensource社が発足し,現在では様々な企業がXenに対する支持を表明している。近年のIT環境の複雑化に伴って様々な仮想化の技術や製品が登場し,それらがしのぎを削る中でも,特に高い注目と関心を集めている仮想化ソフトウエアの1つである。

 Xenが注目を集めている理由は大きく分けて2つある。1つは非常に高い性能と機能を持ち合わせている点,もう1つはそれがオープンソース・ソフトウエアで構成されているという点である。

 まず性能,機能の点であるが,Xenは,後述する準仮想化(パラバーチャライゼーション)の技術を利用することで,仮想化による処理性能の低下が非常に小さくなるように設計されている。従来の物理マシンをエミュレートするタイプの仮想化ソフトウエアでは,その段階でオーバーヘッドが生じる。そのため,仮想マシン上で動作するソフトウエアの処理性能は,実機で動かしたときよりも低下してしまう。だが,Xenにおける仮想化では,実機と比べても遜色のないベンチマーク結果が報告されている。また,ダウン・タイムなしで仮想マシンを別の物理マシンに移動させるライブ・マイグレーションなどの便利な機能も実装されている。

 また,もう1つの特徴であるオープンソース・ソフトウエアであるという点は,ほかの仮想化ソフトウエアと最も大きく異なるポイントだ。一昔前までは商用のOSやアプリケーションは,それらを作成し販売する企業の資産であり,ソース・コードの中身についてはブラックボックスであるのが一般的だった。しかし,Linuxの登場を皮切りに様々なOSやアプリケーションのソースが公開され,だれでもその中身を見られるようになった。オープンソース・ソフトウエアであることの利点は,大きく次の3つが挙げられる。

(1)世界中の人がだれでも開発にかかわることができるため,日々技術が更新される
(2)無料で使える
(3)特定メーカーの製品に依存しない

 オープンソースは主としてコミュニティによって開発が進められるため,エンタープライズ領域で運用する場合では,サポート面などが心配されることがある。しかし先述の通り,Xenには数多くの企業が支持を表明している。また,2006年5月時点でXenの開発コミュニティ用メーリング・リストの登録者は1300を超えている。Xenは今後さらに開発が進むと見られ,エンタープライズ領域での仮想化技術として様々な場面での活躍が期待されている。

準仮想化技術を利用するXen

 それではXenの仕組みを説明しよう。図1はXenの仕組みのイメージだ。

 
図1●Xenの仕組み

 Xenはオープンソースの準仮想化仮想マシン・モニター(Para-virtualizing virtual machine monitor)を利用している。このタイプの仮想マシン・モニターは,特に「Hypervisor(ハイパーバイザ)」と呼ばれることもある。ここでは特に断りがない限り,仮想マシン・モニターと表現する。

 Xenのシステムでは物理ハードウエアの上に仮想化のためのレイヤーとして仮想マシン・モニターがあり,その上で仮想マシンが動作する。この仮想マシンは「ドメイン」と呼ぶ単位で管理され,ドメインの中でOS(ゲストOS)が動作する仕組みとなっている。ここで言うドメインは,インターネットやWindowsネットワークのドメインとは全く関係ない。早い話が仮想マシン・モニターの上で動く各OSをイメージしていただければよい。

 Xenのドメインには2つの種類がある。1つは「ドメイン0」,もう1つが「ドメインU」と呼ばれる。ドメイン0は,ほかのドメインを管理する特権を持つ,ホストOSの役割を果たす。ドメインUはいわゆるゲストOSで,ドメイン0以外のドメインはすべてドメインUである。まとめると,仮想マシン・モニターが仮想化のための土台となり,その上で動いているのがドメインと呼ばれる仮想マシンである。そして,ホストOSが動いているのがドメイン0,ゲストOSが動いているのがドメインUである。

 Xenでは,ドメイン0のみが,物理ハードウエアにアクセスするためのデバイス・ドライバや,ほかのドメインを管理するための管理コマンドなどを備えている。ゲストOSとなるドメインUは物理ハードウエアに直接アクセスするためのドライバ類を持たない。ドメインUが持っているのは「ドメイン0が備えるドライバにアクセスを依頼するためのドライバ」である。ドメインUが物理ハードウエアを使用する場合は,この「アクセスを依頼するためのドライバ」を使って,仮想マシン・モニター経由でドメイン0の持つドライバ類にアクセス処理を依頼する。