Xen (仮想化ソフトウェア)

**Xen**（ゼン）は、仮想マシンモニタの一つ。一つのハードウェアを用いて、複数のオペレーティングシステム (OS) を並行実行・制御するサービスを提供する。

## 概要
Xenは、ケンブリッジ大学のComputer Laboratoryにおいて最初のバージョンが開発された。2010年より、XenコミュニティはXenをGPLv2ライセンスの下で、フリーソフトウェアとして開発・メンテナンスしている。Xenは、IA-32、x64、IA-64、そしてARMアーキテクチャにおいて利用が可能である。

Xenでは、仮想マシンの実行単位をドメインと呼ぶ。Xenシステムにおいて、Xenハイパーバイザは最も低い特権層で動作する、中核となるソフトウェアである。Xenハイパーバイザ階層は一つまたは複数のゲストOSをサポートし、物理CPUに対してのスケジューリングを行う。最初のゲストOSは、Xenの専門用語において「*ドメイン 0* (*dom0*)」と呼ぶ。これは標準において、ハイパーバイザが起動する時に自動的に実行され、特別な管理特権と、全ての物理ハードウェアへの直接アクセスを受け持つ。システム管理者は、追加された全てのゲストOSに対して、dom0を通してログインすることができる。このときの管理対象を、Xenの専門用語において「*ドメインU*」(*domU*)と呼び、ドメインUは*user domains*を意味する。

ドメイン0となるOSには、一般的にLinux、NetBSD、Solarisの修正版が用いられる。なお、従来Linuxにおいてもカーネルの修正が必要であったが、Linux kernel 2.6.23においてXenがmain lineに統合されている。これ以降のバージョンにおいてkernelの修正は必要なくなっている。

ドメインUは、完全仮想化または準仮想化において利用可能なオペレーティングシステムに違いがある。ホストプロセッサがIntel VT-xやAMD-Vのようなx86仮想化支援機能を有する場合には、未修正のオープンソース、あるいはMicrosoft WindowsのようなプロプライエタリなOSのコピーが完全仮想化された状態で動作する。修正が行われているOSは、拡張サポートのための特殊なドライバを併用して準仮想化されるのがXenの特徴である。

現在では、XenSourceはシトリックス・システムズの仮想化事業部門として統合されており、製品版の開発・販売を担っている。

## 歴史
Xenのオリジナルは、**XenSource, Inc**の創立者でありケンブリッジ大学の上級講師であるが率いる、ケンブリッジ大学の研究プロジェクトである。XenSourceは、フリーソフトウェア・プロジェクトによる開発と、エンタープライズ版を販売し、一般へのXenの最初の公開は2003年に行われた。

シトリックス・システムズは2007年8月15日にXenSourceの買収を発表し、シトリックス・ブランドに合わせてXenSourceの製品名を次の通り変更した:
* XenExpress : 過去の"XenServer Express Edition" と "XenServer OEM Edition" （組み込み向けのハイパーバイザ）
* XenServer : 過去の "XenServer Standard Edition"
* XenEnterprise 過去の "XenServer Enterprise Edition"
後に、製品名はXenServer（フリー）、Essentials for XenServer Enterprise、そしてEssentials for XenServer Platinumに変更されている。

2007年10月25日、シトリックス・システムズはXenSourceの買収を完了し、Xenプロジェクトを http://www.xen.org/ に移動した。これに伴って、11月頃にはシトリックス・システムズ、IBM、インテル、ヒューレット・パッカード、ノベル、 レッドハット、サン・マイクロシステムズ現在ではオラクルに買収されている。、オラクルをメンバーとして、**Xen Project Advisory Board** (**Xen AB**) を公表している。

2010年の春には、製品名が次のように改められている:
*XenServer（無償版）
*XenServer Advanced Edition
*XenServer Enterprise Edition
*XenServer Platinum Edition

### リリース履歴

## 利点
Xenは、他の仮想マシンに共通する以下の利点を提供する。

; 可用性の向上 : 動作中の仮想マシンをほぼ瞬時に別ハードウェアに移動すること（マイグレーション）ができるため、ハードウェアのメンテナンスやアップグレードがサービスを停止せずに行える。
; 柔軟性の向上 : 仮想マシン間でCPUやメモリなどの資源配分を指定することで、ニーズに応じて適切な資源を無駄なく割り当て活用できる。
; 運用コストの低下 : サーバ群において、他のサーバに環境を構築するのが容易である。
; セキュリティの向上 : 仮想マシン環境は互いに隔離されており、ある仮想マシンで動作する有害なソフトウェアがほかの環境や仮想マシンモニタに悪影響を与えることはできない。

また、Xenは準仮想化手法も採用しており、完全仮想化のそれにくらべより小さいオーバーヘッドを実現している。

## Xenの特徴
### 仮想化モデル
#### 準仮想化 (ParaVirtualization)
Xenは準仮想化と呼ばれる実装手法を標準採用している。
実在のハードウェアを完全にエミュレートする代わりに、仮想マシン環境を実現するのに都合の良い仮想的なハードウェアを再定義する。
この仮想ハードウェアは、実在のハードウェアに似ているが、操作をするためにはハイパーバイザコールを呼び出す必要がある。
Xenはこのハイパーバイザコールの要求に応じて、仮想マシン環境に変更を加える。

この実装手法はエミュレーションのオーバーヘッドを最小限に抑えることができるため、性能面で大きなアドバンテージがあるが、
OSをXen仮想ハードウェア上に移植する必要がある。

#### 完全仮想化 (FullVirtualization)
Xenはハードウェアの完全仮想化機能も提供している。この機能を利用すると、実ハードウェア用に用意されたOSをそのままXen上で動作させることが可能となる。Xenでは、完全仮想化されたドメインを*HVMドメイン* (*Hardware Virtual Machine*) と呼ぶ。

この完全仮想化機能が提供する仮想マシン環境内のOSは、特権モードで動作し完全に物理ハードウェアを支配しているかのように振る舞う。実際には、仮想マシン側のOSが仮想ハードウェアを制御する命令を実行したとき、仮想ハードウェアがそれを検出し、例外のようなものが発生してXenに制御を渡す。制御を渡されたXenは、OSが行おうとした処理を分析し、仮想ハードウェアの動作をエミュレートする。完全仮想化の環境は、準仮想化方式に比べると、エミュレーションのためのコストが大きくなるが、ソフトウェアをユーザの手で変更することが難しいWindowsなどのOSも動作させることができる。

エミュレーションのオーバヘッドを最小限に抑えるために、デバイスドライバのみ準仮想化されたものを用いることも可能である。

### デバイスドライバのモデル
Xen自体はデバイスドライバを持たず、ドメイン0上のOSが物理デバイスの制御を行う。
この仕組みにより、そのOSが動作するハードウェアであればどこでもXenによる仮想マシン環境を利用できる。

## 動作するOS
2009年6月現在、Linux、MINIX、Plan 9 from Bell Labs、NetBSD、OpenBSD、FreeBSD、OpenSolaris、NetWare、GNU/Hurd/Mach、OZONEがXenの上で動作する。

## 動作環境
多くのLinuxディストリビューションが標準でXenを含んでいる。Fedora Core 4以降、Xenoppix、SUSE Linux 10.0、Debian Etch、RHEL5、Ubuntu、NetBSDなどでサポートされている。またSolaris/OpenSolarisにも移植されている。

Xen3.0.2はP6 (Pentium Pro) 以上のCPUで動作する。（一部のモバイル向けCPUはPAE非対応のため動作しない）

完全仮想化機能を用いるためにはインテル製のIntel VT対応CPU、もしくはAMDのAMD-V対応CPUが必要となる。他に、サポートしているプラットフォームとしては、IA-64やPowerPC上でも稼動する。

## 脚注

## 参考文献
* 

## 関連項目

* 仮想マシン
* リングプロテクション
* x86仮想化

## 外部リンク
* The Xen virtual machine monitor
** Xenの開発元となったケンブリッジ大学のプロジェクト。
* Xen Project
** 現在の開発拠点。Xen のパッケージやソースコード、構築済み仮想マシンを提供している。
* XenSource
* Xenをベースとしたハイパーバイザー
** Oracle VM
** Sun xVM Server
** Citrix XenServer
* WindowsPVドライバー
** XenWindowsGPLPVドライバwiki
** WindowsPVドライバーバイナリ
* メーリングリスト
** 日本語のXen
*** メーリングリスト登録
*** メーリングリストリリース