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

 今回は,(4)のサーバー用ゲストの構築・起動サーバーを説明する。

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

(4)サーバー用ゲストOS構築

 Domain-0が正常に起動したので,いよいよサーバー用ゲストOS「Xen-inet」と「Xen-lan」を構築して動作させよう。

パーティションの作成

 ゲストOSを動かすには,まずルート・ファイル・システムとスワップ領域に割り当てる2種類のパーティションを作成する。これらのパーティションはfdiskコマンドで作成できる。手順は図5に示した通りだ。その後,

図5●Xen-inetとXen-lanに必要なパーティションを作成する
図5●Xen-inetとXen-lanに必要なパーティションを作成する
[画像のクリックで拡大表示]

のコマンドを実行して再起動すると,

(1)CentOSのインストールの図3に示したXen-inetのルート・ファイル・システムとスワップ,Xen-lanのルート・ファイル・システムとスワップに利用する4つのパーティションが作成される。

 最後に,ルート・ファイル・システムとスワップ用のパーティションをフォーマットしておく。

mke2fsコマンドに-jオプションを付けるとExt2にジャーナリング機能が追加され,Ext3でフォーマットされる。

ルート・ファイル・システムの作成

 次に,ルート・ファイル・システムに割り当てるパーティション内に必要なファイルを書き込む。Xen-inetとXen-lan,どちらでも手順はほぼ同様だ。異なる個所には説明を加えるので,ここではXen-inetのルート・ファイル・システムを例にして作成方法を紹介する。

 まず,ルート・ファイル・システムを作成するパーティションを,/mntディレクトリにマウントする(以下,1行のコマンドについても,1段幅に合わせて改行してあるので,ご注意ください)。

Xen-lanのルート・ファイル・システムを構築する場合は「/dev/hdb5」を「/dev/hdb8」と指定する。

 マウントしたパーティション内に/devディレクトリを作成し,必要なデバイス・ファイルをMAKEDEVコマンドで作成する。必要なデバイス・ファイルは「console」「null」「zero」の3つだ。

 /mnt/etcディレクトリを作成し,

そのディレクトリ内に,ゲストOS起動時にファイル・システムのマウント用に用いられる/mnt/etc/fstabファイルを図6のように作成する。

図6●ファイル・システムの情報が記したfstabファイル
図6●ファイル・システムの情報が記したfstabファイル
[画像のクリックで拡大表示]

 ここで,ルート・ディレクトリやスワップ領域に割り当てるパーティションを「/dev/sda1」や「/dev/sda2」としている。後述する,ゲストOSのドメイン設定ファイル内で「/dev/hdb5」を「/dev/sda1」に,「/dev/hdb6」を「/dev/sda2」に再定義しているからだ。

 以上の作業が終了したら,yumコマンドを用いて,サーバーの稼働に必要なソフトを導入する。具体的には,yum groupinstallコマンドを用いる。yum groupinstallコマンドにインストール・グループ名を指定すると,さまざまな用途に応じたLinux環境を構築できる。

 ちなみにインストール・グループ名には「Base」,「GNOME Desktop Environment」や「MySQL Database」,「Web Server」,「Windows File Server」などがある*5。Webサーバーを構築したいのなら「Web Server」を,ファイル共有サーバーなら「Windows File Server」を指定する。

 yum groupinstallコマンドを実行する前に,次回に説明する「CentOSでyumコマンドを実行させる」に記した作業を行い,

のコマンドを実行して必要なソフトを/mntディレクトリ以下に導入する*6。ネットワークから必要なファイルを入手して導入するため,少々時間がかかる。「Complete!」と表示されたら*7,最後に完成したルート・ファイル・システムをゲストOS用にカスタマイズする。

●カーネル・モジュールをコピー
 XenUカーネルのモジュールをコピーしておく。

●TLSライブラリの無効化
 XenUカーネルでも問題が発生するため,作成したルート・ファイル・システム内のTLSライブラリを利用しないように設定する。

●SELinuxの無効化
 SELinuxを無効にする。それには,/mnt/etc/selinux/configファイルの「SELINUX=enforcing」を「SELINUX=disabled」に書き換える。

●ネットワーク設定
 IPアドレスとドメイン名を関連付けているhostsファイルをコピーしておく。

 次に,/mnt/etc/sysconfig/networkファイルにネットワークの有効化とデフォルト・ゲートウエイのIPアドレスを図7のように,また/mnt/etc/resolve.confファイルにDNSサーバーのIPアドレスを図8のように記述しておく。

図7●networkファイル
図7●networkファイル
ネットワークの有効化とデフォルト・ゲートウエイのIPアドレスを記す。
[画像のクリックで拡大表示]

図8●resolve.confファイル
図8●resolve.confファイル
DNS(Domain Name System)サーバーのIPアドレスを記す。
[画像のクリックで拡大表示]

 ネットワーク・インタフェースの設定として/mnt/etc/sysconfig/network-scripts/ifcfg-eth0ファイルを図9のように作成する。Xen-inetとXen-lanとでは使用するIPアドレスが異なる。Xen-lanの場合,/mnt/etc/sysconfig/network-scripts/ifcfg-eth0ファイルは図10のようになる。

図9●Xen-inetのifcfg-eth0ファイル
図9●Xen-inetのifcfg-eth0ファイル
ネットワーク・インタフェースの設定を記す。
[画像のクリックで拡大表示]

図10●Xen-inetのifcfg-eth0ファイル
[画像のクリックで拡大表示]

 以上のカスタマイズが完了したら,作成したルート・ファイル・システムをアンマウントする*8

ドメイン設定ファイルの作成

 ゲストOSのルート・ファイル・システムが完成したので,それぞれのゲストOSの設定を記したドメイン設定ファイルを作成する。Xen-inet用のドメイン設定ファイル(/etc/xen/inetとした)が図11,Xen-lan用のドメイン設定ファイル(/etc/xen/lanとした)が図12である。

図11●Xen-lanのifcfg-eth0ファイル
図11●Xen-lanのifcfg-eth0ファイル
ゲストOSが利用するカーネル・イメージやRAMディスク・ファイル,メイン・メモリー容量,ネットワーク・インタフェース数,アクセスできるディスクなどを書き込む。
[画像のクリックで拡大表示]

図12●Xen-lan用のドメイン設定ファイル
図12●Xen-lan用のドメイン設定ファイル
[画像のクリックで拡大表示]

サーバー用ゲストOSの起動

 サーバー用ゲストOSの環境はすべて整ったので,すぐに起動してみよう。まずは,

を実行し,ゲストOSの制御や管理を担う「ノード制御デーモン」を自動起動するように設定した上で起動する。ワーニング以外にエラーが発生しなければ,xm createコマンドでゲストOSを起動できる。

 最初にXen-inetを起動しよう。xm createコマンドの引数にドメイン設定ファイルを指定し,

のように発行する。-cオプションを付けることでコンソールがXen-inetのものに切り替わり,Xen-inetの起動処理が表示される。「login:」のログイン・プロンプトが表示されたら,Xen-inetの起動は完了だ。ログインできるユーザーは「root」のみで,rootパスワードは設定されていない。

 続けて,Xen-lanも起動しよう。Xen-inetのコンソール上で〔Ctrl〕キーと〔]〕キーを同時に押す。〔Enter〕キーを押し,「************ REMOTE CONSOLE EXITED *****************」と表示されたら,Xen-inetのコンソールからDomain-0のコンソールに戻る。

と入力してXen-lanを起動する。Xen-inetと同様のログイン・プロンプトが表示されたら,「root」と入力する。すると,Xen-lanにログインができる。ログインしたら,ひとまず〔Ctrl〕キーと〔]〕キーを同時に押し,Domain-0のコンソールに戻しておく。

 これで2つのサーバー用ゲストOSを起動できた。ゲストOSの状態を調べるには,図13のように「xm list」と実行する。それぞれ「Domain-0」は制御用,「Xen-inet」はWebサーバー用,「Xen-lan」はファイル共有サーバー用のゲストOSの状態を示している。「Mem(MB)」はメモリーの容量(Mバイト単位),「CPU」は利用しているCPUの番号,「State」には現在のゲストOSの状態(表2),「Time(s)」にはゲストOSが利用したCPUの時間,「Console」にはゲストOSにコンソールからアクセスするためのポート番号が表示されている。

図13●ゲストOSの状態
図13●ゲストOSの状態
[画像のクリックで拡大表示]

表2●ゲストOSの状態
表2●ゲストOSの状態