Ubuntu 11.10ではLinux 3.0カーネルを採用しているため、とても簡単にXenの環境を構築できるようになりました。そこで今回は、UbuntuをXenのホスト環境(Dom0)として設定し、Ubuntuを含むいくつかのゲストOSをインストールする手順を紹介します。
Xenとは
Xenはハイパーバイザーと呼ばれる仮想マシンを実行するソフトウェアで、多種多様なプラットフォームをサポートし、Amazon Web Serviceでも使われている仮想化技術の一つです。
Ubuntuでよく使われている仮想マシン実行環境と言えばKVMやVirtualBoxがありますが、Xenはこれらに対して「準仮想化」と呼ばれる技術もサポートしており、IntelVTやAMD-VなどのCPUの仮想化支援機構がない環境でもゲストOSを高速に動作させられるといった特徴を持っています。
XenはホストOSをDomain 0(Dom0)、ゲストOSをDomain U(DomU)と呼び、Dom0と準仮想化を使う場合はDomUもXenに対応したカーネルを使う必要があります。Ubuntuでは10.04以降、Xen対応のカーネルを公式には提供していなかったため、UbuntuにXenを導入するためにはユーザーがカーネルのコンパイルから行わなければならないというハードルの高い状態でした。
しかしながら、Linux 3.0からLinuxの公式カーネルでXenがサポートされるようになりました。そしてUbuntu 11.10ではLinux 3.0.4ベースのカーネルを採用しているため、カーネルを変更することなくDomUとしてもDom0としても使えるようになったのです[1]。
UbuntuをDom0として使う
UbuntuをDom0として使うには以下のパッケージをインストールします。
これにより、GRUBの設定(/boot/grub/grub.cfg)にXen本体をロードしてからカーネルをブートするエントリーが追加されます。そこで、一度再起動を行い、GRUBメニューで"Xen 4.1-amd64"エントリーを選択し、さらにサブエントリーからリカバリーモードでない方のエントリーを選択してください[2]。
Xenが無事動いていれば、以下のコマンドで各種情報が表示されるはずです。
無事に起動できたら、次回以降Xenエントリーが自動選択されるよう、GRUBの設定を行います。まず、/etc/default/grubのGRUB_DEFAULTの値をsavedに変更します。
次に以下のコマンドを実行します。
一つ目のコマンドの最後の数字はメニューエントリーの一番上を0としたときの位置です。Xenのエントリーは特に、他のOSやカーネルが入っていなければ3番目になるはずなので2としています。各自の環境にあわせて調整してください。
ネットワーク設定
UbuntuのXenパッケージは、DomUのためのネットワーク設定がすべて無効化されています。もしXen標準のブリッジモードを有効化したい場合は、以下の設定をおこなった上で、xendを再起動します[3]。
DomUをDom0がつながっているネットワークから切り離したい時は、ブリッジモードの設定をコメントアウトし、NATモードを有効化します。
DomUを作成する
Debian/Ubuntuの場合
Debian/Ubuntuは、ネットワークインストーラーパッケージにXen用の設定ファイルが用意されています。そのため、これを流用するだけでDomUにDebian/Ubuntuをインストールできます[4]。
あらかじめ、任意の場所にディスクイメージを作成しておきます。LVMやデバイスファイルにDomUを作る場合は必要ありません。
設定ファイルをダウンロードし、編集します。
設定は完了したので、ネットワークインストールを開始します。"-c"オプションによって、シリアルコンソールが端末に接続されます。インストール手順は、Ubuntu Serverのそれと同じです。
インストールが完了したら、オプションを指定せずにxm-ubuntu.cfgを読み込むことで通常の起動になります。設定ファイルの読み込みパスは/etc/xenなので、問題なく起動するようなら、設定ファイルをそちらに移動しておくと良いでしょう。
Ubuntuインストール時にOpenSSHサーバーにチェックを入れた場合は、Dom0からSSHログインできるようになっていますので、"-c"オプションを外してSSH越しに作業を行った方が便利です。
Dom0上で仮想マシンのリストを見ることで、DomUが起動していることがわかります。
Scientific Linuxの場合
Xenの設定マネージャーであるxmコマンドは、xm-ubuntu.cfgのような設定ファイルを渡すことで動作を変えることができます。
xm-ubuntu.cfgはさまざまなオプションを変更しつつDebian/Ubuntuのネットワークインストールを行うために若干複雑になっていますが、本来の設定ファイルはカーネルやinitrd、起動ディスク、メモリサイズなどを指定するだけのシンプルなつくりです。そこで、今度はScientific Linuxをインストールするために、設定ファイルを0から書いてみましょう。
まず、インストールに必要なもろもろのファイルをダウンロードします。
次にインストール用の設定ファイルを作成します。diskはCD-ROMデバイスに起動用のイメージファイルを、二つ目の要素にインストール先のディスクファイルを指定しています。
設定が完了したので、DomUを起動しインストールを開始します。
インストールが完了したら、xm-sl6.cfgのkernel、ramdiskの行をコメントアウトし、diskのboot.isoの要素を削除しておきます。その上で、もう一度上記のコマンドを実行すると、Scientific Linuxが起動します。
まとめ
これまで見てきたように、Ubuntu 11.10/Linux 3.0によってXen自体のインストールは非常に簡単になりました。また、Xen上にゲストOSをインストールする方法も、KVMに負けず劣らず簡単です。
今回はXenのxmコマンド[5]を使ってインストールや設定を行いましたが、virt-managerを使ってグラフィカルに仮想マシンを管理することも可能ですし、VNCを使ったグラフィカルインストールもできます。なんといっても、CPUの仮想化支援機構が動作しない古いCPUやVPS上で動作しているマシンでも、準仮想化により仮想マシンを使えることは魅力的です。
Xen自体もLinuxメインラインにマージされたことに加えて、ARM対応やXen Cloud Platformといった意欲的な取り組みを推し進めている成長分野の技術です。Ubuntuでは次期LTSである12.04でXenのサポートを拡充する予定ですので、この機会に触れてみてはいかがでしょうか。