![xenserver Infrastructure 3徹底入門(1)](/fserver/articles/xenserver/images/title_xenserver.gif)
第1回 Xenハイパーバイザを使う意義
シトリックス・システムズ・ジャパン株式会社
2008/8/7
シトリックス・システムズが提供しているXenServerは、オープンソースのXenハイパーバイザをベースとし、この上に各種の制御・管理環境を構築している。オープンソースXenハイパーバイザを採用するメリットは何か。この連載ではまず、XenServerの基盤になっているXenハイパーバイザと、これを利用するメリットを解説する |
Citrix XenServerはオープンソースのXenをベースとしてハードウェアの上で直接動作するハイパーバイザ型の仮想化ソフトウェアである。本連載ではまず、XenServerのアーキテクチャを4回にわたり解説する。1回目はXenServerの仮想化の中枢であるXenについて紹介する。
「Xen」はどこから来たか
仮想化に多少なりとも興味を持ったことがある人なら、「Xen」という言葉を聞いたことがあると思う。仮想化でXenが注目され始めたのは2005年頃であるが、Xenはその数年前からイギリスのケンブリッジ大学でIan Pratt教授が中心となって研究されてきた技術である。
X86システムの仮想化が行うことは、物理ハードウェアの抽象化と仮想ハードウェア(仮想マシン)を同時に複数実行させることである。この仮想化技術により、仮想マシンは異なるハードウェア上でも移動可能になり、異なるOSが動いている仮想マシンを同時に何台も実行することが可能になる。この仮想化の基本的な機能を提供しているのが、Xenハイパーバイザである。Xenハイパーバイザが目指していたもの、それは仮想化オーバヘッドを限りなく少なくすること、信頼性の向上、そしてオープンソースであるということである。
仮想化オーバヘッドの回避
X86システムを仮想化するためには、CPU、I/O、メモリの3つのコンポーネントを仮想化する必要がある。それぞれのコンポーネントにおいて仮想化の手段は異なるのだが、物理マシンに比べて「仮想化のための処理」が入るため、そこに仮想化オーバヘッドが発生する。Xenはこの仮想化オーバヘッドを準仮想化(Para virtualization)によって解決している。準仮想化は仮想マシンがXenハイパーバイザ仮想化レイヤと協調して実行する考えであり、CPUとI/Oの仮想化において使用されている。
仮想マシンでは、ゲストOS(仮想マシン上で動くOS)のカーネルで実行される特権命令はそのままCPUで実行できな。Xenではこれら特権命令を「Hyper call」と呼ばれる方法を使用してXenハイパーバイザに伝え、XenハイパーバイザからCPUに対して命令が実行される。すなわち、ゲストOSのカーネルを修正し、物理マシンで直接CPUに対して行っていた特権命令はハイパーバイザに処理を通知する仕組みに変更したのである。このカーネルのことを準仮想化カーネルと呼ぶ。この処理は、仮想化オーバヘッドを劇的に削減できるが、一方でゲストOSのカーネルをXen用に変更する必要もある。現在、準仮想化カーネルを使用できるのはLinuxだけである。WindowsにおいてはCPU仮想化の処理を行うためにCPUのハードウェアアシスト機能が使われている。
![]() |
図1 特権命令の1つ(Halt Instruction)をゲストOSから実行した場合の例 |
I/Oに関するオーバヘッドも、仮想化では頭の痛い問題の一つである。ゲストOSの中からのI/Oは直接ネットワークやディスクに対して行われず、Domain0 (XenServerでは「Control Domain」と呼ぶ)を経由してI/Oが行われる。この時に問題となるのが、ゲストOSからDomain0(もしくはDomain0からゲストOS)へのデータコピーである。メモリのコピーは非常に低速で、物理マシンと比較してかなりのパフォーマンス劣化となってしまう。
![]() |
図2 ディスクドライブとネットワークアダプタにはPV (Paravirtualization:準仮想化)デバイスドライバが使用され、I/Oのオーバヘッドを小さくしている |
I/Oで使用している準仮想化の考えは、ゲストOSのI/Oの入り口であるデバイスドライバにある。XenServerで作成した仮想マシンに対し、XenServer Toolsというツールをインストールすることにより、ネットワークとディスクのデバイスドライバがPV(Para Virtualization)デバイスドライバに置き換わる。このデバイスドライバはXenハイパーバイザと協調して動作し、I/Oのオーバヘッドを限りなく小さくしている。具体的には、ゲストOSとDomain0間のメモリーコピーを行わず、メモリのアドレスのみをXenハイパーバイザを経由して送っている。
1/2 |
![]() |
Index | |
第1回 Xenハイパーバイザを使う意義 | |
![]() |
Page1 「Xen」はどこから来たか 仮想化オーバーヘッドの回避 |
Page2 信頼性の向上 オープンソースであるということ |
- Windows 10の導入、それはWindows as a Serviceの始まり (2017/7/27)
本連載では、これからWindows 10への移行を本格的に進めようとしている企業/IT管理者向けに、移行計画、展開、管理、企業向けの注目の機能について解説していきます。今回は、「サービスとしてのWindows(Windows as a Service:WaaS)」の理解を深めましょう - Windows 10への移行計画を早急に進めるべき理由 (2017/7/21)
本連載では、これからWindows 10への移行を本格的に進めようとしている企業/IT管理者に向け、移行計画、展開、管理、企業向けの注目の機能を解説していきます。第1回目は、「Windows 10に移行すべき理由」を説明します - Azure仮想マシンの最新v3シリーズは、Broadwell世代でHyper-Vのネストにも対応 (2017/7/20)
AzureのIaaSで、Azure仮想マシンの第三世代となるDv3およびEv3シリーズが利用可能になりました。また、新たにWindows Server 2016仮想マシンでは「入れ子構造の仮想化」がサポートされ、Hyper-V仮想マシンやHyper-Vコンテナの実行が可能になります - 【 New-ADUser 】コマンドレット――Active Directoryのユーザーアカウントを作成する (2017/7/19)
本連載は、Windows PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「New-ADUser」コマンドレットです
![]() |
|
|
|
![]() |