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

 リリース履歴 
 バージョン リリース日 備考 1.0 2003-10-02 2.0 2004-11-05 3.0 2005-12-05 Intel VT-x仮想化支援をサポート
 IA-64アーキテクチャをサポート

加えて、3.0.4のリリースにおいて次の機能が加えられた:
 AMD SVM仮想化拡張をサポート
 PowerPCアーキテクチャをサポート
 準仮想化ゲストに対してグラフィカルフレームバッファをサポート 3.1 2007-05-18 3.2 2008-01-17 ホストシステムにPCIパススルーとACPI S3スタンバイモードをサポート 3.3 2008-08-24 PCIパススルーとパワーマネジメントに関する改良 3.4 2009-05-18 4.0 2010-04-07 4.1 2011-03-25ホストの最大物理メモリが5TBにアップ 
 4.2 2012-09-17 
ホストの最大物理CPU数が4095にアップ
PVゲストの最大CPU数が512にアップ 4.3 2013-07-09 ARMアーキテクチャの実験的サポート
 Open vSwitchのサポート 4.4 2014-03-10 ARMアーキテクチャの正式サポート 4.5 2015-01-15 43種類の新機能の追加
 コードが全面的に見直され、約78000行が追加、約141000行が削除された 4.6 2015-10-13 4.7 2016-05-23 4.8 2016-12-05 4.9 2017-05-28 4.10 2017-12-12 4.11 2018-07-10 4.12 2019-04-02 4.13 2019-12-18 4.14 2020-07-24 4.15 2021-04-08 4.16 2021-12-02 4.17 2022-12-14 4.18 2023-11-17

 利点 
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上でも稼動する。

 Hyper-Vとの関係 
XenSourceとマイクロソフトはハイパーバイザ形式の仮想化システムに関し、共同開発を行っており、XenとHyper-Vは共に同一の仮想化コアを用いている。両者はそれぞれ独自の各種用語を用いているが、その主な違いは、実ハードウェアのサポートを受け持つXenで言うところのDOM0に標準搭載されている管理用OSが主にライセンスの関係で、XenではLinuxであり、Hyper-VではWindows Server 2008である程度である。このため、XenとHyper-Vの上で動作する対応OSは同一である。また、両者の仮想ディスクも相互運用が可能となっており、Xenで運用している仮想マシンをHyper-Vに、Hyper-Vで運用している仮想マシンをXenに移行といった事が特に意識せず可能となっている。