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の仕組みのイメージだ。

図

 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の持つドライバ類にアクセス処理を依頼する。

準仮想化によって高い性能を発揮

 冒頭で,Xenがその性能の高さで注目を集めていると述べたが,高い性能を発揮している理由は「準仮想化」と呼ばれる仮想技術を採用しているところにある。

 物理ハードウエアをソフトウエア的にエミュレーションして,その上に仮想OSを構築するPCエミュレータ型の場合,エミュレーションに伴うオーバーヘッドが大きくなる欠点がある。ただしこの場合,物理ハードウエアを仮想的に構築しているため,その上にインストールするOSにはあらかじめ変更を加える必要が一切なく,そのまま使用できる。

 一方Xenは物理ハードウエアをエミュレーションするのではなく,OS自体をXen用にあらかじめ修正しておくことでオーバーヘッドを少なくしている。そのため,高い性能が発揮される。だが,Xen用にOS(カーネル)を修正する必要があるため,使用できるOSの種類が限られてしまう。例えば一般にソース・コードが公開されていないWindowsには,手を加えることができない。結果としてXenの上でWindowsを動かすことはできない(現在のXenはWindowsも動作可能。詳細は後述)。

 ここではゲストOSに修正を加える必要がない仮想化技術を「完全仮想化」,ゲストOSに何らかの変更をあらかじめ加えなければならないものを「準仮想化」と定義し,話を進める。

完全仮想化されるXen

 先ほどからXenは準仮想化による仮想マシン・ソフトだと述べてきた。だがこれはXen2.0までの話である。2005年12月にリリースされたXen3.0では,Intel Virtualization Technology(VT)に対応し,完全仮想化への道が開かれた。VTはIntelが開発したCPUに実装されている仮想化技術で,AMDも同じようにAMD Virtualization(AMD-V)と呼ぶ仮想化技術を実装したCPUを開発している。両者は同じような技術だが,命令セットに互換性はない。

 CPUに実装されたVTは,これまで仮想マシン・モニターが実行していた一部の処理を肩代わりする。VTを使うと,OSを変更しなくてもXenの上で実行できるようになる。

 ただし,Xen3.0で,VTを使用した完全仮想化環境としてドメインUを構築すると,準仮想化環境のドメインUを動かしたときに比べて性能が悪くなる。もちろんXen3.0では,2.0と同様に準仮想化としてXen用に修正したOSも動作する。従って今のところは,Xen用に修正可能なOSのみを動かすならば,準仮想化技術を利用した方がよい。

 しかし,完全仮想化を実現することでゲストOSの選択肢が広がることは,非常に重要である。また,VTやAMD-VといったCPUの仮想化技術がさらに高機能化されることで,オーバーヘッドによるゲストOSのパフォーマンス低下はさらに軽減されると予想される。そうなれば,完全仮想化と準仮想化の特徴や性能をより詳しく検証した上で,適切な方式を選択するとよいだろう。

Xen2.0とXen3.0の違い

 Xen2.0からXen3.0への変更点を簡単にまとめておく。VT対応のCPUを用いることで,未修正OSを動作させられるようになったこと以外にも,次のような点が改善されている。

 まずドメインUが最大32wayのSMP(対象型マルチプロセッサ)に対応した。32ビット・アーキテクチャで4Gバイト以上の主記憶を扱うPAE(物理アドレス拡張)にも対応し,省電力化のためのACPI(Advanced Configuration and Power Interface)の機能も改善されている。

 Intel EM64T対応プロセッサとAMD64対応プロセッサの64ビット・モード(Xenでは「x86/64」と呼ぶ)にも対応した。ほかにも,IPF(Itanium)やPowerなどに関しても開発が進められている。

 なお,Xen3.0では,ドメイン0で動作するOSはカーネル2.6系のLinuxのみとなっており,カーネル2.4系LinuxやNetBSD3.0は対象OSから外れた。

 2006年6月現在のXensource社によるXenの対応OSリストを表1にまとめた。表1には掲載されていないが,SolarisがXen上で動作したという報告もある。

 今回は,Xenの技術概要を中心に,話を進めてきた。Xenは,まだほかの商用製品と比べて実績が短く,安定性や信頼性もまだまだといった段階である。処理性能以外にも解決しなければならない課題がたくさん残っているし,エンタープライズ領域での運用を考えた場合,トラブル・シューティングの機能や,操作性の高い監視/管理ツールとの連携,クラスタリング機能への対応などが必要だ。

 しかし,Xenがその最大の強みであるオープンソースであるという点を活かし,今後開発が進んでこれらの機能が実装され,また支持を表明した多くの企業によるサポート体制が整えば,将来は強力な仮想化ソフトウエアの1つに位置づけられることは間違いないだろう。

 次回以降では,実際にXenを使った仮想環境の構築方法について紹介する。