XenによるFedoraの仮想化

 仮想化システムは、1つのコンピューター上で複数のオペレーティング・システムを動かす仕組みだ。Xenは、新しい仮想化方式を採用した強力な仮想化システムである。以下、Fedoraマシンへのインストールの方法と環境に応じた構成の仕方を説明する。

本記事は、2007年8月に出版されたAndrew Hudson、Paul Hudson著Fedora 7 Unleashed(SAMS Publishing)からの抜粋である。

仮想化と疑似仮想化

 仮想マシン(VM)は割り当てられたRAM上で、外部の世界に対して完全に自己充足的に動作する。仮想化システムの一つであるVMwareなどは、この仮想世界を完全なものにすべくBIOSさえも仮想化している。したがって、一般に、VM同士が情報を交換するには、たとえ同じコンピューター上にある場合でも、異なるコンピューター上にある場合と同じようにTCP/IPネットワークを利用する必要がある。実際、VM上にインストールされたオペレーティング・システム(OS)から見える環境はハードウェアに直接インストールされた場合とまったく同じため、OSはVM上にあることすら認識できない。

 しかし、この方式による仮想化には動作速度が著しく低下するという欠点がある。VMはハードウェアに頻繁にアクセスする必要があるが(ファイルを保存したりディスプレイに表示したりするため)、当然のことながら、ハードウェアに直接アクセスすることはできない。直接アクセスすれば、ほかのVMと干渉する可能性があるからだ。そこで、ハードウェアに対するリクエストはホストOSに対して処理を依頼する形に変換する必要がある。同様に、VMであることがわかるようなCPU命令については、ホストOSがVMによる実行を捕捉して、VMであることを悟らせないよう命令の結果を偽装しなければならない(バイナリー・パッチと呼ばれている技法)。こうした条件により、動作速度が低下するのだ。

 この問題を解決するために考案されたのが、仮想化ならぬ疑似仮想化である。Xenはこの方式を採用している。Linuxはオープンソースであるため、ソース・コードを変更することができる。これを利用して、LinuxがVMであることを認識し、仮想Linuxがハードウェアにアクセする場合はXenに許可を求めるように改造する。バイナリー・パッチをなどの仮想化技法を使わないというこの違いが、大きな効果を生む。通常のVMはハードウェアの能力の50%ほどでしか動作しないが、Xen VMは最大95%で動作できるのだ。

 Xenの弱点はソースコードにパッチを当てる必要があること。したがって、ソースコードが公開されていないオペレーティング・システムには適用することができない。VMwareはLinux上でWindows XPをそのまま動かすことができるが、Xenでは不可能だ。ご存じのように、Xenでも、Linux上でWindowsをそのままの形でフルスピードで動かせる。しかし、これはIntelやAMDがハードウェアによる仮想化機能を持つ新しいチップを出したからであり、この技術がなければ、Xenは、LinuxやNetBSD、FreeBSDなど、ソース・コードの変更が可能なオープンソース・ディストリビューションにしか適用することはできない。

Xenの仕組み

 Xenの実態は、VMのリソースを管理することを唯一の目的とするごく小さなオペレーティング・システムだ。Xen OSの上に従来ホストOSと呼ばれてきたものが載り、これがマシンの主たるOSとなる。VMwareとは異なり、このホストOS(Xenではドメイン0またはdom0と呼ばれている)はVMだ。ただし、応答性を改善するために特権が与えられている。

 ドメイン0 VMはXenを制御する場であり、ほかのVMを起動する場でもある。ここから起動されたVMは非特権ドメインまたはdomUと呼ばれている。起動するVMの数に制限はなく、マシンに搭載されているRAMの大きさで実質的な制約を受けるだけだ。domU OSはXen VM上にあることを完全に把握しているため、VMに割り当てるRAMの大きさを稼働中に変更することができる。ただし、最初に割り当てたRAMの大きさを超えることはできない。

 Fedora LinuxのRAMに関する最小システム要件は256MBだ。したがって、Fedora上でFedoraを動かすには、少なくとも512MBのRAMが必要になる。Xen自体が使用するRAMはごくわずかなので、計算上は、768MBのRAMがあれば2つのOSをフルスピードで併走させることができることになる。

 なお、旧版のFedoraではSELinuxを無効にしないとXenは動作しなかったが、今、その必要はない。