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に必要なパーティションを作成する [画像のクリックで拡大表示] |
のコマンドを実行して再起動すると,
(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ファイル [画像のクリックで拡大表示] |
ここで,ルート・ディレクトリやスワップ領域に割り当てるパーティションを「/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ファイル ネットワークの有効化とデフォルト・ゲートウエイのIPアドレスを記す。 [画像のクリックで拡大表示] |
図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ファイル ネットワーク・インタフェースの設定を記す。 [画像のクリックで拡大表示] |
図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ファイル ゲストOSが利用するカーネル・イメージやRAMディスク・ファイル,メイン・メモリー容量,ネットワーク・インタフェース数,アクセスできるディスクなどを書き込む。 [画像のクリックで拡大表示] |
図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の状態 [画像のクリックで拡大表示] |
表2●ゲストOSの状態 |