SOHOや自宅で,Red Hat Enterprise Linux(RHEL)を導入したサーバーを2台使う。ぜいたくな使い方だが,これに近いことは簡単に実現できる。RHELのクローンOSで無償で入手できる「CentOS」と仮想化技術「Xen」を組み合わせる手法だ。今回はXen環境構築に必要な各種ソフトを整備する。

 今回は,サーバーを統合する手順の(2)と(3)を説明する。

(1)CentOSのインストール
(2)Xen関連ソフトの作成
(3)Domain-0の起動
(4)サーバー用ゲストの構築・起動
(5)各サーバー環境を構築

(2)Xen関連ソフトの作成

 CentOSを導入したら,Xenを構築,稼働させる環境を整える。Xenを構築するにはgccやbinutils,makeなどの開発環境が必要である。また,Xenを実行するにはオブジェクト指向型プログラミング言語「Python」の実行環境や,Pythonを使ったイベント駆動型のネットワーク・ライブラリ集「Twisted」,イーサネット・ブリッジ用ソフト「bridge-utils」などが必要になる。

 このうちTwisted以外のソフトはCentOSにすべて含まれているが,インストール時に導入されなかったソフトも存在する。そこで,yumコマンドでインストールする。(以下,1行のコマンドについても,1段幅に合わせて改行してあるので,ご注意ください)

 次に,CentOSに含まれていないTwistedを導入する。Twistedを導入するには,Webアプリケーション・サーバー「Zope」のインタフェース「ZopeInterface」が必要になる。そのため,まずはZopeInterfaceをインストールする。ZopeInterfaceのソース・アーカイブは,

を実行して入手する。入手したソース・アーカイブを展開して導入する。

 ZopeInterfaceをインストールしたら,続けてTwistedを導入する。「Twisted Web」というソフトも必要なため,Twistedと一緒に導入する。TwistedとTwisted Webのソース・アーカイブは,

のコマンドを実行すると入手できる。入手したソース・アーカイブを次のように展開して導入する。

 これでXenを構築,稼働させる環境が整った。

Xenをソースから導入

 Xenのファイルは英ケンブリッジ大学コンピュータ研究室のWebサイトから入手できる。入手できるファイルは2種類。コンパイルされたバイナリ・ファイル「xen-2.0.7-install-x86_32.tgz」とソース・アーカイブ「xen-2.0.7-src.tgz」だ。

 バイナリ・ファイルの方がインストールは簡単である。しかしバイナリ・ファイルに含まれる,Domain-0用に用意されたカーネル(vmlinuz-2.6.11.12-xen0)では使えるネットワーク・デバイスが限られており,今後利用する予定のシリアル・ポートも有効になっていない。そのため,ここではXenをソース・アーカイブからコンパイルして導入する。

Xenのコンパイルと導入

 Xenのソース・アーカイブは,

のコマンドを実行して入手する。入手したソース・アーカイブを次のように展開し,まずはデフォルト(初期設定)のままコンパイルする*2

 コンパイル途中で,Linuxカーネルのソース・アーカイブがネットワーク経由でダウンロードされる。このダウンロードされるLinuxカーネルがDomain-0用カーネル(便宜上「Xen0カーネル」と呼ぶ)と,Xen-inet用やXen-lan用のカーネル(便宜上「XenUカーネル」と呼ぶ)の基になる。

 コンパイルが正常終了すると,XenのバイナリやXen0カーネル,XenUカーネルが作成される。その際,xen-2.0ディレクトリ下にlinux-2.6.11-xen0というディレクトリが作られる。この中のファイル群がXen0カーネルのソース・コードである。このファイル群の中からXen0カーネルの設定を見つけて書き換え,コンパイルを再度実行する。

 カーネルの設定は一般的なLinuxカーネルと同様,.configファイルに書き込まれている。設定を書き換える前に,現在の設定ファイルを別名(ここではconfig.bak)でバックアップする。

 make menuconfigコマンドを実行し,カーネルの設定ツールを起動する。なお,make menuconfigコマンドを発行する際,ARCHオプションに「xen」を指定する。

 起動した設定ツールを用いて変更する個所は,ネットワーク・インタフェースとシリアル・ポートの設定の2つだ。

●ネットワーク・インタフェースの設定
 ここで用いたキューブ型PCは「SiS 661FX/963」というチップセットに統合されているネットワーク・インタフェースを利用している。Xen0カーネルのデフォルトではこのネットワーク・インタフェースのドライバが組み込まれない。

 ドライバを組み込むには「Device Drivers --->」-「Networking support --->」-「Ethernet (10 or 100Mbit) --->」を順に選択し,「SiS 900/7016 PCI Fast Ethernet Adapter support」のメニューを選んでスペース・バーを押し,「< >」部分を「<*>」に変更する(写真3)。

写真3●ネットワーク・インタフェースのドライバを組み込む
写真3●ネットワーク・インタフェースのドライバを組み込む
[画像のクリックで拡大表示]

●シリアル・ポートの設定
 シリアル・ポートを有効にするには,「Device Drivers --->」-「Character devices --->」-「Serial drivers --->」を選択し,「8250/16550 and compatible serial support」のメニューを選び,スペース・キーを押して「< >」部分を「<*>」に変更する(写真4)。

写真4●シリアル・ポートを有効にする
写真4●シリアル・ポートを有効にする
[画像のクリックで拡大表示]

 そのほか有効にしたい項目や無効にしたい項目があれば適宜設定し,「Do you wish to save your new kernel configuration?」画面で<Yes>ボタンを押下し,変更した設定を.configファイルに保存する。そして,コンパイルを再度実行する。

 make installコマンドでは,Xenのバイナリ・イメージとXen0カーネルおよびXenUカーネルのイメージ・ファイルなどが/bootディレクトリに,Xen0カーネルとXenUカーネルのモジュール・ファイルが/lib/modules以下に,Xenの制御用アプリケーションが/usr/sbinディレクトリに,Xenに関する各種設定が/etc/xenディレクトリに格納される。

 最後に,Xen0カーネルとXenUカーネルが起動時に用いるRAMディスク・ファイルを作成しておく。このRAMディスク・ファイルにはゲストOSを起動する際に必要なドライバや設定が書き込まれる。

(3)Domain-0の起動

 Xenを稼働させるために必要なファイルがすべてそろったので,CentOSのブート・ローダー「GNU GRUB」(以下,GRUB)を用いてXenを起動してみよう。まずはGRUBの設定ファイルである/etc/grub.confファイルを,図4のようにXenを起動できるように書き換える。

図4●Xenの起動設定を追加したgrub.confファイル
図4●Xenの起動設定を追加したgrub.confファイル
[画像のクリックで拡大表示]

 そして,ルート・ファイル・システム内のTLSライブラリ*3を利用しないようにディレクトリ名を書き換える。こうしておかないと,Domain-0が正常に起動しない。

 これで再起動した際,XenとDomain-0が自動的に立ち上がる。

のコマンドを発行してCentOSを再起動しよう。再起動後,ログイン・プロンプトに「CentOS release 4.1(Final) Kernel 2.6.11.12-xen0 on an i686」とXen0カーネルである「Kernel 2.6.11.12-xen0」の名前が表示されていれば,XenとDomain-0が正常に動作している*4