1つのコンピュータ上で複数のOSを動作させることができる仮想化システム。本稿ではXenについて、Fedoraマシンへのインストールの方法と環境に応じた構成の仕方を説明する。
仮想化システムは、1つのコンピュータ上で複数のオペレーティングシステム(OS)を動かす仕組みだ。Xenは、新しい仮想化方式を採用した強力な仮想化システムである。以下、Fedoraマシンへのインストールの方法と環境に応じた構成の仕方を説明する。
本記事は、2007年8月に出版されたアンドリュー・ハドソン、ポール・ハドソン著『Fedora 7 Unleashed』(SAMS Publishing)からの抜粋である。
仮想マシン(VM)は割り当てられたRAM上で、外部の世界に対して完全に自己充足的に動作する。仮想化システムの1つである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の弱点はソースコードにパッチを当てる必要があること。したがって、ソースコードが公開されていないOSには適用できない。VMwareはLinux上でWindows XPをそのまま動かすことができるが、Xenでは不可能だ。ご存じのように、Xenでも、Linux上でWindowsをそのままの形でフルスピードで動かせる。しかし、これはIntelやAMDがハードウェアによる仮想化機能を持つ新しいチップを出したからであり、この技術がなければ、Xenは、LinuxやNetBSD、FreeBSDなど、ソースコードの変更が可能なオープンソースディストリビューションにしか適用することはできない。
Xenの実態は、VMのリソースを管理することを唯一の目的とするごく小さなOSだ。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のRAMに関する最小システム要件は256Mバイトだ。したがって、Fedora上でFedoraを動かすには、少なくとも512MバイトのRAMが必要になる。Xen自体が使用するRAMはごくわずかなので、計算上は、768MバイトのRAMがあれば2つのOSをフルスピードで併走させることができることになる。
なお、旧版のFedoraではSELinuxを無効にしないとXenは動作しなかったが、今、その必要はない。
Copyright © 2010 OSDN Corporation, All Rights Reserved.