この章では、Solaris プラグインが提供される Solaris 10 ゾーン固有のコンポーネントおよびプランを使用する方法について説明します。この章では、次の内容について説明します。
Solaris ゾーンのパーティション分割技術は、オペレーティングシステムのサービスを仮想化し、分離およびセキュリティー保護された環境でアプリケーションの実行を可能にするために使われます。ゾーン とは、Solaris オペレーティングシステム (OS) の単独インスタンス内で作成される、仮想化されたオペレーティングシステム環境です。ゾーンを作成することで生まれるアプリケーション実行環境では、システムのほかの部分からプロセスが分離されます。この分離を行うことで、1 つのゾーン内で稼動しているプロセスがほかのゾーンで稼動しているプロセスを監視したりそれらのプロセスに影響を及ぼしたりすることが防止されます。スーパーユーザーの資格で実行されるプロセスでも、ほかのゾーンでの活動を見たり、影響を与えたりすることはできません。
ゾーンは、Solaris 10 OS を実行しているコンピュータであれば、どれでも使用できます。すべてのゾーンで実行されるアプリケーションソフトウェアの合計リソース要件は、1 つのシステムでいくつのゾーンを効果的にホストできるかを決定します。Solaris ゾーンに関する詳細については、『Solaris のシステム管理 (Solaris コンテナ: 資源管理と Solaris ゾーン)』のPart II, 「ゾーン」を参照してください。
ソフトウェアの「Common Tasks」ページでは、Solaris 10 ゾーンの作成と管理を行えます。
大域ゾーンとは、個々のゾーンが定義されるホストを指します。ローカルゾーンを作成する前に、ホストセット com.sun.solaris#global_zones に少なくとも 1 つのホストを定義する必要があります。このタスクは、ホストを大域ゾーンとして定義する方法を説明します。
コントロールパネルの左側、「Hosts Setup」セクションの下にある「Hosts」をクリックします。
次のいずれかのオプションを選択し、ホストシステムを指定します。
ホストタイプのメニューから com.sun.solaris#global_zone を選択します。
必要に応じて属性の値を変更します。
たとえば、接続タイプを RAW (デフォルト) から SSH や SSL に変更できます。
ローカルゾーン接続に SSH を使用するには、ポートを 70000 に設定する必要があります。
物理ホストにリモートエージェントまたはローカルディストリビューターを組み込むには、適切なチェックボックスをクリックします。
「Save」をクリックします。
ネームサーバーがない場合は、マスターサーバーの /etc/hosts ファイルを、リモートエージェント上のローカルゾーンの hostname:ip_address で更新する必要があります。
左側のコントロールパネルの「Common Tasks」から、「Solaris」リンクをクリックします。
「Solaris Container: Create and Manage」リンクをクリックします。
「Install: Create」の横の「Run action」をクリックします。
ローカルゾーンを作成するターゲットホストを選択します。
ターゲットホストは、com.sun.solaris#global_zones ホストセットのメンバーでなければなりません。
「Plan Variables」設定から、ローカルゾーンのホスト名を選択します。
目的のローカルゾーン名がない場合は、新しいゾーン名を作成します。新しいゾーン名を作成するには、次の手順を実行します。
プランパラメータテーブルから「Select From List」をクリックします。
「Variable Setting」ウィンドウから「Create Set」をクリックします。
「New Set Name」フィールドで、新しいゾーンセット名を入力します。
「Zone Name」プロンプトの横にあるボックスをクリックし、新しい変数セット名を入力します。
ローカルゾーンの作成時は、ゾーン名はネットワークのゾーンホスト名になります。ローカルゾーンのホスト名は、ローカルネットワークの IP アドレスに解決できる必要があります。
ローカルゾーンファイルシステムを「疎」または「完全」のどちらにするかを決定します。
疎ローカルゾーンファイルシステムは、/lib、 /sbin、/platform、および /usr ディレクトリを大域ゾーンと共有します。これらのディレクトリの 1 つにファイルをインストールする必要があるアプリケーションをローカルゾーンが実行する場合は、フルファイルシステムを使用してローカルゾーンをインストールしてください。完全ローカルゾーンファイルシステムは、ディレクトリを大域ゾーンと共有しません。
デフォルトの設定では、プロビジョニングシステムはローカルゾーンファイルシステムを「疎」としてインストールします。完全ローカルゾーンファイルシステムをインストールする場合は、デフォルトを無効にしてください。
(省略可能) ローカルゾーンに論理ネットワークインタフェースを追加する必要がある場合は、zoneIfaceDetails コンポーネント変数に値を入力します。
各エントリは、次の形式の 3 つのフィールドから構成されます。network interface,IPAddress/netmask。各エントリはセミコロンで区切られます。例を示します。hme0,123.123.123.123/24;eri0,124.124.124.124/8
(省略可能) ローカルゾーンに大域ゾーンファイルシステムをマウントする必要がある場合は、zoneFsLayout コンポーネント変数に値を入力します。
各ファイルシステムは、セミコロンで区切る必要があります。例を示します。dir=/usr/local special=/opt/local raw=/dev/rdsk/c0t0d0s7 type=lofs [ro,nodevices];dir=/opt/mystuff special=/empty type=lofs ro
詳細については、zonecfg(1M) のマニュアルページを参照してください。
「Save and Select」をクリックします。
ターゲットホストの「Select From List」をクリックします。
「Current Found Hosts」のいずれかを選択します。
「Add Hosts To Main Window」をクリックします。
「Run Plan (includes preflight)」をクリックします。
デフォルトでは、Sun N1 Service Provisioning System のコマンド行インタフェースは次のディレクトリに格納されています。/opt/SUNWn1sps/N1_Service_Provisioning_System_5.2/cli/bin/cr_cli
Container プロシージャーを実行する Solaris ゾーンのプラグインプランは、/com/sun/solaris/zones フォルダに格納されています。
この例では、Sun N1 Service Provisioning System のコマンド行インタフェースを使用して Solaris ゾーンを作成する方法を示します。この例には、3 つのコマンドセグメントが含まれます。すべてのコマンドでは、例としてユーザー名 spsadmin、パスワード x1y2z3 を使用します。
1 つめのコマンドは、server10 の大域ゾーンにホストを作成し、local_zone_default_name、local_zone_connection_type、および local_zone_port 変数にデフォルト値を定義します
% cr_cli -cmd hdb.h.mod host modify -ID "NM:server10" target global host -tID "NM:com.sun.solaris#global_zone" host type -attr "local_zone_default_name=server10_z1; local_zone_default_filesystem=FULL; local_zone_connection_type=RAW; local_zone_port=1131" local zone attributes -u spsadmin user name -p x1y2z3 password |
2 つめのコマンドは、デフォルト変数を使用してローカルゾーンを作成します。
% cr_cli -cmd pe.p.run plan execution -PID "NM:/com/sun/solaris/Container-create" create zone plan ID -tar "H:NM:server10" target global host -vs "+" default var set "default set" -comp "+" default component "latest build" -pto 6000 plan time 1 hr max [6000 secs] -nto 6000 call time 1 hr max [6000 secs] -u spsadmin user name -p x1y2z3 user password |
3 つめのコマンドは、ローカルゾーンを有効にします。
% echo "server10_z1" | cr_cli -cmd pe.p.run plan execution, std input is zone name -PID "NM:/com/sun/solaris/Container-activate" attach zone plan ID -tar "H:NM:server10" target global host -f "-" standard input args -pto 6000 plan time 1 hr max [6000 secs] -nto 6000 call time 1 hr max [6000 secs] -u spsadmin user name -p x1y2z3 user password |
Solaris コンテナには、特定のコンポーネントタイプはありません。ただし、Solaris コンテナに関連付けられているホストタイプはあります。詳細については、「ホストと Solaris ゾーン」を参照してください。
コンテナコンポーネントは、Solaris ゾーンで使用するために、Solaris プラグインが提供する主なコンポーネントです。コンテナコンポーネントは、入力されないコンポーネントです。
Container コンポーネントには、いくつかのプロシージャーが含まれます。これらのプロシージャーは、Sun N1 Service Provisioning System インタフェースから直接実行するか、実行プラン内から実行します。
Container コンポーネントの作成により、対応する Solaris 10 ゾーンが作成されます。このプロシージャーのホストターゲットは、プロビジョニングシステム リモートエージェントを実行する Solaris 10 ホストです。ターゲットホストタイプは、com.sun.solaris#global_zone に設定する必要があります。作成プロシージャーでは、Solaris 10 の zonecfg および zoneadm コマンドを使用し、Solaris 10 大域ゾーンからローカル Solaris 10 ゾーンの構成とインストールを行います。インストールが完了すると、このプロシージャーは新しく作成されたローカルゾーンにリモートエージェントをインストールします。タイプが com.sun.solaris#local_zone の新規ホストがホストページに表示されます。
このプロシージャーは作成プロシージャーに似ていますが、ゾーンは作成しません。その代わりに、このプロシージャーは既存のローカルゾーンをホストに接続します。このプロシージャーは プロビジョニングシステム データベースにコンテナコンポーネントを作成し、既存のローカルゾーンにリモートエージェントをインストールします。接続プロシージャーは、Sun N1 Service Provisioning System 以外のツールによってゾーンが作成された場合に便利です。たとえば、ゾーンが Solaris API を通じて直接作成された場合や、ほかのソフトウェア管理アプリケーションによって作成された場合に、接続プロシージャーを使用します。
markOnly:install プロシージャーは、プロビジョニングシステムのデータベースに Solaris ゾーンコンテナコンポーネントを追加します。markOnly:install プロシージャーは、ローカルゾーンを作成しません。markOnly: install プロシージャーは、リモートエージェントをインストールしません。
削除プロシージャーでは Solaris 10 の zonecfg および zoneadm コマンドを使用し、大域ゾーンのホストから指定の Solaris 10 ローカルゾーンを削除します。また、対応するコンテナコンポーネントを プロビジョニングシステム データベースから削除します。
切り離しプロシージャーは、削除プロシージャーに似ています。このプロシージャーは、プロビジョニングシステム データベースからコンテナコンポーネントを削除し、リモートエージェントをアンインストールします。ただし、大域ゾーンのホストからローカルゾーンは削除しません。ローカルゾーンが起動されている場合は、起動された状態が保持されます。ローカルゾーンが停止している場合は、停止した状態が保持されます。
markOnly:uninstall プロシージャーは、プロビジョニングシステムのデータベースから Solaris ゾーンコンテナコンポーネントを削除します。markOnly:uninstall プロシージャーは、ローカルゾーンを削除しません。markOnly:uninstall プロシージャーは、リモートエージェントをアンインストールしません。
このプロシージャーは、ローカルゾーンを起動します。ターゲットの Solaris 10 ホストで、インストール済みの Container コンポーネントのリストからゾーンを選択します。このプロシージャーでは、zoneadm -z zonename boot コマンドを使用します。また、準備されていないホストに対しては、プロビジョニングシステム のホスト準備機能を起動します。
このプロシージャーは、ローカルゾーンを停止します。ターゲットの Solaris 10 ホストで、インストール済みの Container コンポーネントのリストからゾーンを選択します。このプロシージャーでは、zoneadm -z zonename halt コマンドを使用します。
Container コンポーネントについて解説したプロシージャーのそれぞれに対し、/com/sun/solaris plan フォルダに関連プランが格納されています。これらのプランは、例 6–1 で示すように、コマンド行のシェルコールで使用する際に便利です。
Solaris プラグインには、Solaris 10 ゾーン用の特定のホストセット、ホスト検索、および 2 つのホストタイプがあります。
Global Zone ホストセット – ゾーンをインストールするすべてのホストは、大域ゾーンのホストセットのメンバーである必要があります。この関係を確立するため、ターゲットホストのホストタイプを com.sun.solaris#global_zone に設定する必要があります。
大域ゾーンのホスト検索 – 大域ゾーンのホスト検索は、大域ゾーンに含まれるホストに一致する検索文字列を提供します。
Global Zone ホストタイプ – ゾーンをインストールするすべての物理ホストは、ホストタイプが com.sun.solaris#global_zone である必要があります。
Local Zone ホストタイプ – 大域ゾーンのホストに Container コンポーネントをインストールすると、プロビジョニングシステム はタイプが com.sun.solaris#local_zone のホストを作成します。
プロビジョニングシステム を通じて Solaris ゾーンを管理するときに問題が発生すると、問題があることを示すメッセージが画面に表示されることがあります。
たとえば、大域ゾーンであると認識されていないターゲットホストに対し、ローカルゾーンを作成しようとすると、次のようなメッセージが表示されます。
Problems encountered during plan run or preflight The plan (or preflight) "/system/autogen/Container-inst-create-1098225529078" finished with 1 failed host(s). The specified target host "masterserver" was not in the required host set "com.sun.solaris#global_zones" for component "/com/sun/solaris/Container". |
この例のメッセージは明確に表示されていますが、すべてのメッセージが必ずしもこのメッセージのようにわかりやすいわけではありません。特定の問題に関する詳細については、「Details」リンクをクリックしてください。