オープンソースから始まったシトリックスの仮想化ソフトウェア「Xen」。オープンソース版との違いは? など、Xenに関するさまざまな疑問をシトリックスの方に直接教えていただきます。
答える人:シトリックス SVセールス部システムエンジニア エンジニアリング部長 平谷靖志氏
Xenってどういうものですか?
Xenはオープンソースの仮想化ソフトウェアで、イギリスのケンブリッジ大学で研究されていたソフトウェアがベースとなっています。
研究されていた当時にリリースされていた他社の仮想化ソフトウェアは、CPU、メモリ、I/Oの仮想化をすべてソフトウェアで実装していたため、物理コンピュータと比較すると、処理に時間がかかっていました。これを「仮想化のオーバーヘッドが大きい」と表現します。またCPUパワーも現在ほど高くなかったため、同時に実行できる仮想マシンの数も限られていました。さらに当時の仮想化システムでは、物理マシン上で動いているOSを一切変更せずに仮想マシン上で動かすため、仮想マシンは、OSに対して物理マシンと同様の動きをするように作られていました。しかしこの形式のシステムは、結果的にオーバーヘッドが大きくなります。
これに対してXenでは、ゲストOSに仮想マシン上で動作していることを認識させます。すなわちXenの上で動くゲストOSは、カーネルを少し変更することでXenと協調して動作するようにし、仮想化オーバーヘッドが最低限となるようにしています。
現在のXenはオープンソースとして誰でも開発プロジェクトに参加できるとともに、誰でも自由にXenを使用することができます。このプロジェクトには多くのハードウェアベンダー、ソフトウェアベンダーが参画しており、仮想化の新しいテクノロジーが迅速に市場に投入されています。
準仮想化って何ですか?
準仮想化は「仮想化ソフトウェアとゲストOSを協調して実行させる仕組み」といえます。Xenの最初のバージョンでは、準仮想化されたLinuxのみをゲストOSとして実行させることができました。当時のx86 CPUは仮想化を前提として設計されていなかったため、仮想化ソフトウェア上ではWindowsやLinuxに含まれる一部の命令(特権命令)をそのまま実行できません。Xenの中でこれらOSのCPU命令をエミュレートすることは、オーバーヘッドになります。そこでOSのカーネルに変更を加え、仮想マシン上で処理できるようにしてあるのです。
このカーネルは「準仮想化カーネル」と呼ばれ、仮想化ソフトウェアでCPU命令のエミュレートを行なわなくても済むようにしています。この考えは、ディスクやネットワークのI/Oについても採用されています。準仮想化ではゲストOSがXenと連携して動くため、従来の方式と比較して仮想化オーバーヘッドが少なくなるというのが大きな特徴です。
準仮想化に対して、OSの変更を必要としない従来の方式を「完全仮想化」と呼びます。これらは、それぞれにメリット/デメリットがあるので、単純に優劣はつけられません。
この連載の記事
-
第3回
ソフトウェア・仮想化
XenServerで何ができますか? -
第2回
ソフトウェア・仮想化
XenServerはXenとは違うものですか? - この連載の一覧へ