前回は,RHELの新機能を一通り説明した。新機能の中の「Stateless Linux」は,クライアントやサーバーの新しい管理手法である。Stateless Linuxを用いれば,クライアントやサーバーの台数が多い場合でも,運用管理の負荷を軽減できる。Fedora Core 6を使って,実際にStateless Linuxを試してみよう。

 Part1で紹介したようにStateless Linuxは,統合管理するLinux OSのイメージを用いて,ネットワークにつながった各マシン(クライアント・マシンやサーバー・マシン)を動作させる仕組みである。

 個々のマシンの「Linux OSやアプリケーション・ソフト,各種設定ファイル」は,Stateless Linuxのサーバー上で一元管理される。ネットワークにつながったすべてのマシンの状態管理とOSを含むソフトウエアのメンテナンスが1カ所で行えるため,運用管理や保守が楽になる。例えば,個々のマシン上でソフトウエアの更新やセキュリティ対策を実行する代わりに,一元管理しているイメージを入れ替えればよい。

 また,システムの動作に必要なソフトウエアはすべてイメージに含まれているため,個々のホストはハード・ディスクを備える必要がない。ローカルにデータを保存しないシン・クライアントが簡単に実現できるわけだ(図1)。

図1●Stateless Linuxの利点
図1●Stateless Linuxの利点
(1)すべてのマシンの状態を把握可能,(2)ソフトウエアの更新やセキュリティ対策が容易,(3)マシンの追加や入れ替えが比較的簡単――などの利点がある。
[画像のクリックで拡大表示]

Stateless Linuxの仕組み

 Stateless Linuxは,図2のような構成になる。階層的には,個々のマシンである「Stateless Client」と,Stateless Clientの設定や動作状態を管理するサーバー「Stateless Server」で構成する,クライアント/サーバー・システムである。

図2●Stateless Linuxの構成
図2●Stateless Linuxの構成
各クライアントやサーバーの設定や状態を管理するサーバー「Stateless Server」と「Stateless Client」で構成される。

 Stateless Serverは,Stateless ClientのOSやアプリケーションを1つのファイルにまとめたイメージ(これを,「OSのイメージ」と略す)を一元管理する。このOSのイメージとは,具体的には,Linuxマシンの稼働に不可欠な「ルート・ファイル・システム」である。

 Stateless Clientには,ネットワーク経由でOSを起動するタイプと,ローカルのハード・ディスクからOSを起動するタイプの2種類がある。ネットワーク経由でOSを起動するタイプは,ディスクレスにすることが可能だ。

 2種類のStateless Clientが,どのようにStateless Serverに管理されるかを具体的に説明しよう。

(1)ネットワーク経由でOSを起動

 ネットワークからOSを起動する場合,ネットワーク・インタフェースおよびBIOSが備えるネットワーク・ブート機能「PXE(Preboot eXecution Environment)」または同様の仕組みを用いて,Stateless Server上にあるカーネルを読み込んで起動する。

 起動を開始したカーネルは,ネットワーク経由でOSのイメージをルート・ファイル・システムとしてマウントする。これで,Stateless ClientがLinuxマシンとして稼働する(図3)。

図3●ネットワーク経由でOSを起動する
図3●ネットワーク経由でOSを起動する
ネットワーク・インタフェースのハードウエアおよびBIOSが備えるPXE(Preboot eXecution Environment)機能などを用いて,カーネルを起動する。起動したカーネルはネットワーク経由でOSのイメージをルート・ファイル・システムとしてマウントする。

 なお,OSのイメージをルート・ファイル・システムとしてマウントする際は,書き込み禁止にする。これは,どのStateless Clientでも同じOSイメージで動作させるためだ(図4)。個々のStateless Clientで異なる設定やデータなどは,Stateless Server側に別途保存される。

図4●OSのイメージは書き込み禁止でマウントする
図4●OSのイメージは書き込み禁止でマウントする
これによりStateless Clientで共有するOSイメージを同一に保てる。

 ルート・ファイル・システムをネットワーク経由でマウントする方法は,3種類ある(図5)。(1)OSのイメージを格納したディレクトリを, NFS(Network File System)でマウントする,(2)OSのイメージをファイルとして用意し,ループバック・デバイスとしてディレクトリにマウントし,さらにNFSでマウントする,(3)OSのイメージを格納したディスクをiSCSIによって直接マウントする,である。

図5●ルート・ファイル・システムをネットワーク経由としてマウントする方法
図5●ルート・ファイル・システムをネットワーク経由としてマウントする方法
(1)OSのイメージを格納したディレクトリをNFSでマウントする,(2) OSのイメージをファイルとして用意し,ループバック・デバイスとしてディレクトリにマウントし,さらにNFSでマウントする,(3)OSのイメージを格納したディスクをiSCSIによって直接マウントする,の3形態がある。
[画像のクリックで拡大表示]

(2)ローカルHDDからOSを起動

 ローカルのハード・ディスクからOSを起動する場合は,通常のPCやサーバーのローカル・ハード・ディスクからLinux OSを起動するのと同様である。ただし,カーネル起動時には,Stateless Server上に配置したOSのイメージと,ローカル・ハード・ディスク上のOSのイメージが比較される(図6)。

図6●ローカルHDDからOSを起動する
図6●ローカルHDDからOSを起動する
Stateless Server上に配置したOSのイメージとローカル・ハード・ディスク上のOSのイメージが比較される。異なる場合には,同一になるように同期処理が実行される。
[画像のクリックで拡大表示]

 Stateless Server上のリモートのイメージと,ローカルのイメージが異なる場合には,同一になるように同期処理が実行される。同一であることが確認できれば,ローカル・ハード・ディスク内のOSのイメージをルート・ファイル・システムとしてマウントする。これで,Stateless ClientがLinuxマシンとして稼働する。

 なお,ネットワークからOSを起動した場合と同様に,ローカル・ハード・ディスクからOSを起動した場合でもルート・ファイル・システムは書き込み禁止でマウントされる。これならOSのイメージが変更されることはない。個々のStateless Clientで異なる設定やデータなどは,先ほどと同様にStateless Server側に保存される。