ここでは,ハード・ディスクに対するXenの入出力性能について調べる。Xenは仮想マシン・モニター・タイプの仮想化ソフトウエアであり,Xen自体がハードウエア上で直接動作する。OS(ゲストOS)は,Xenの上に作られたドメインと呼ばれる仮想的なハードウエア環境内にインストールされる。

 加えて,Xenは内部にデバイス・ドライバを備えていない。ドメイン0と呼ばれる特別なドメインが,実デバイスの制御を取りまとめて実行する。そのほかのドメインはドメインUと呼ばれる。

 このような構造を採るため,ドメインU上から入出力要求が出されると,その要求はそのままドメイン0に渡され,ドメイン0が実デバイスを操作する(図1)。

図1●Xenのアーキテクチャ
図1●Xenのアーキテクチャ
ドメイン0に入出力が集中する。

OSのインストール位置

 XenでゲストOSを構築する場合,大きく分けて2種類の方法がある(図2)。

図2●ドメインUのインストール位置は二つある
図2●ドメインUのインストール位置は二つある

 一つはドメイン0のファイル・システム上にイメージ・ファイル(仮想ハード・ディスク)を作成し,そこにゲストOSをインストールする方法である。図2の右側に示すこの方法で仮想実行環境を構築すれば,OSを一つのファイルとして管理できるため,ほかの物理コンピュータに簡単にゲストOSを丸ごとコピー/移動できるといった利点がある。多くの場合,この方法が用いられている。

 もう一つは,ハード・ディスクの空いている領域(パーティション)にゲストOSをインストールする方法だ(図2の左側)。一般的な手法でハード・ディスクの空いている領域にゲストOSをインストールしてXenから起動するか,またはディストリビューションに搭載されているGUIを使用してハード・ディスクの空き領域にゲストOSを作成する。ゲストOS自体のコピーや移動にはあまり向いていない。

 イメージ・ファイルとしてゲストOSを作成する場合に比べ,ハード・ディスクの空いている領域にゲストOSを作成した方が,アクセス性能は高いといわれている。

 そこで,今回の検証では,ディスク上にゲストOSを作成する場合とイメージ・ファイルにゲストOSを作成する場合の性能の違いについても検証する*1

ゲストOSの構築

 テストに用いるLinuxディストリビューションは,CentOS 5である。CentOS 5には,ゲストOSを作成するためのツールが用意されている。端末上でvirt-managerを起動し,[ファイル]-[新規作成]を選択すると,GUIの画面が現れる。ウィザードに従って操作を進めるだけで,簡単にゲストOSを作成できる。

 イメージ・ファイルとしてゲストOSを作成する場合は,ストレージ領域の割り当ての画面で「シンプルファイル」を選択する。

 物理デバイス上にゲストOSを作成する場合は,通常のディスク・パーティションを選択する。ただし,この場合はあらかじめfdiskコマンドなどを使って,図3のように物理デバイスを作成しておく必要がある。図3では16Gバイトの場合を例示している。

# fdisk /dev/cciss/c0d1 

The number of cylinders for this disk is set to 17840. 
There is nothing wrong with that, but this is larger than 1024, 
and could in certain setups cause problems with: 
1) software that runs at boot time (e.g., old versions of LILO) 
2) booting and partitioning software from other OSs 
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n 
Command action 
   e   extended 
   p   primary partition (1-4) 
p 
Selected partition 4 
First cylinder (12817-17840, default 12817): 
Using default value 12817 
Last cylinder or +size or +sizeM or +sizeK (12817-17840, default 17840): +16G
図3●空きパーティション上にXen用の物理デバイスを用意する手順