非大域ゾーンは、1 つの箱と考えることができます。この箱の中では、システムのほかの部分と相互に作用することなく、1 つ以上のアプリケーションを実行できます。Solaris ゾーンは、ソフトウェアで定義される柔軟な境界を使用して、ソフトウェアアプリケーションやサービスを隔離します。これにより Solaris オペレーティングシステムの 1 つのインスタンス内で実行されるアプリケーションを互いに独立して管理することができます。したがって、同じアプリケーションのさまざまなバージョンをそれぞれ異なるゾーンで実行でき、構成の要件を満たすことができます。
ゾーンに割り当てられたプロセスは、同じゾーンに割り当てられたほかのプロセスを操作、監視したり、これらのプロセスと直接通信したりできます。システムのほかのゾーンに割り当てられたプロセスや、ゾーンに割り当てられていないプロセスに対しては、このような機能は実行できません。異なるゾーンに割り当てられたプロセスどうしでは、ネットワーク API を介した通信のみ可能です。
Solaris 10 8/07 以降では、ゾーンが独自の排他的 IP インスタンスを持っているか、または IP 層の構成と状態を大域ゾーンと共有しているかに応じて、IP ネットワーク接続を 2 通りの方法で設定できます。ゾーンの IP タイプの詳細については、「ゾーンネットワークインタフェース」を参照してください。構成については、「ゾーンの構成方法」を参照してください。
Solaris システムごとに 1 つの「大域ゾーン」があります。大域ゾーンは 2 つの機能を持っています。大域ゾーンは、システムのデフォルトのゾーンであり、システム全体の管理に使用されるゾーンでもあります。「大域管理者」が「非大域ゾーン」(単にゾーンとも呼ばれる) を作成した場合を除き、すべてのプロセスが大域ゾーンで実行されます。
非大域ゾーンの構成、インストール、管理、およびアンインストールは、大域ゾーンからのみ行うことができます。システムハードウェアから起動できるのは、大域ゾーンだけです。物理デバイス、共有 IP ゾーンでのルーティング、動的再構成 (DR) といったシステム基盤の管理は、大域ゾーンでのみ行うことができます。大域ゾーンで実行されるプロセスは、適切な権限が付与されていれば、ほかのゾーンに関連付けられているオブジェクトにもアクセスできます。
非大域ゾーンの特権付きプロセスには許可されていない操作を、大域ゾーンの特権のないプロセスが実行できることもあります。たとえば、大域ゾーンのユーザーは、システムのすべてのプロセスに関する情報を表示できます。この機能がサイトで問題になる場合は、大域ゾーンへのアクセスを制限します。
大域ゾーンも含め、各ゾーンにはゾーン名が割り当てられます。大域ゾーンの名前は常に global となります。各ゾーンには、一意の数値 ID も与えられます。これは、ゾーンの起動時にシステムによって割り当てられます。大域ゾーンには、常に ID 0 が割り当てられます。ゾーンの名前と数値 ID については、「zonecfg コマンドの使用」を参照してください。
各ゾーンには、ノード名も割り当てられます。これは、ゾーン名とは完全に独立した名前です。ノード名は、ゾーンの管理者によって割り当てられます。詳細は、「非大域ゾーンのノード名」を参照してください。
各ゾーンには、ルートディレクトリのパスが設定されます。これは、大域ゾーンのルートディレクトリに対する相対パスです。詳細は、「zonecfg コマンドの使用」を参照してください。
デフォルトでは、非大域ゾーンのスケジューリングクラスは、システムのスケジューリングクラスと同じに設定されます。ゾーンのスケジューリングクラスを設定する方法については、「ゾーンのスケジューリングクラス」を参照してください。
priocntl (priocntl(1) のマニュアルページを参照) を使用すると、デフォルトのスケジューリングクラスの変更や再起動を行うことなく、実行中のプロセスを別のスケジューリングクラスに移動できます。
大域管理者は、スーパーユーザー特権または Primary Administrator の役割を持ちます。大域ゾーンにログインすると、大域管理者はシステム全体を監視したり制御したりできます。
非大域ゾーンは「ゾーン管理者」が管理できます。大域管理者が Zone Management プロファイルをゾーン管理者に割り当てます。ゾーン管理者の特権は、非大域ゾーンに対してのみ有効です。
大域管理者が zonecfg コマンドを使ってゾーンを構成します。このとき、ゾーンの仮想プラットフォームやアプリケーション環境に応じて、各種のパラメータを指定します。次に、大域管理者がゾーンをインストールします。大域管理者は、ゾーン管理コマンド zoneadm を使用して、ゾーンに対応するファイルシステム階層にソフトウェアをパッケージレベルでインストールします。大域管理者は、zlogin コマンドを使用して、インストールされたゾーンにログインできます。初回ログイン時にゾーンの内部構成が完了します。次に、zoneadm コマンドを使ってゾーンを起動します。
ゾーンの構成については、第 17 章非大域ゾーンの構成 (概要)を参照してください。ゾーンのインストールについては、第 19 章非大域ゾーンのインストール、停止、複製、およびアンインストールについて (概要)を参照してください。ゾーンへのログインについては、第 21 章非大域ゾーンへのログイン (概要)を参照してください。
ゾーンの構成は完了し、安定した記憶領域に確定されています。ただし、ゾーンのアプリケーション環境の要素のうち、最初の起動後に指定する必要のあるものは、まだ含まれていません。
インストール処理やアンインストール処理の途中は、zoneadm によってターゲットゾーンの状態が「不完全」に設定されます。処理が正常に完了すると、適切な状態に設定されます。
ゾーンの構成はシステム上でインスタンス化されています。zoneadm コマンドにより、指定された Solaris システムでその構成を正常に使用できるかどうかが確認されます。パッケージはゾーンのルートパスにインストールされます。この状態では、ゾーンに関連付けられた仮想プラットフォームはありません。
ゾーンの仮想プラットフォームが確立されています。カーネルにより zsched プロセスが作成され、ネットワークインタフェースが設定されてゾーンで使用可能になり、ファイルシステムがマウントされ、デバイスの構成が完了しています。システムにより、一意のゾーン ID が割り当てられます。この状態では、ゾーンに関連付けられたプロセスは起動されていません。
ゾーンのアプリケーション環境に関連付けられたユーザープロセスが稼働状態です。アプリケーション環境に関連付けられた最初のユーザープロセス (init) が作成されるとすぐに、ゾーンの状態は「稼働」になります。
これらは、ゾーンの停止処理の間に見られる遷移状態です。ただし、なんらかの理由でゾーンを停止処理できない場合は、ゾーンがどちらかの状態で停止します。
zoneadm コマンドを使用してこれらの状態間の遷移を開始する方法については、第 20 章非大域ゾーンのインストール、起動、停止、アンインストール、および複製 (手順)および zoneadm(1M) のマニュアルページを参照してください。
表 16–1 ゾーンの状態に影響を与えるコマンド
ゾーンの現在の状態 |
適用できるコマンド |
---|---|
構成済み |
zonecfg -z zonename verify zonecfg -z zonename commit zonecfg -z zonename delete zoneadm -z zonename attach zoneadm -z zonename verify zoneadm -z zonename install zoneadm -z zonename clone zonecfg を使用して、構成済みまたはインストール済みの状態にあるゾーンの名前を変更することもできます。 |
不完全 |
zoneadm -z zonename uninstall |
インストール済み |
zoneadm -z zonename ready (省略可能) zoneadm -z zonename boot zoneadm -z zonename uninstall は、指定されたゾーンの構成をシステムからアンインストールします。 zoneadm -z zonename move path zoneadm -z zonename detach zonecfg -z zonename を使用すると、attr、bootargs、capped-memory、dataset、dedicated-cpu、device、fs、ip-type、limitpriv、net、rctl、または scheduling-class プロパティーを追加または削除することができます。インストール済み状態のゾーンの名前を変更することもできます。inherit-pkg-dir 資源は変更できません。 |
準備完了 |
zoneadm -z zonename boot zoneadm halt とシステム再起動を実行すると、準備完了状態のゾーンがインストール済み状態に戻ります。 zonecfg -z zonename を使用すると、attr、bootargs、capped-memory、dataset、dedicated-cpu、device、fs、ip-type、limitpriv、net、rctl、または scheduling-class プロパティーを追加または削除することができます。inherit-pkg-dir 資源は変更できません。 |
稼働 |
zlogin options zonename zoneadm -z zonename reboot zoneadm -zzonename halt を実行すると、準備完了状態のゾーンがインストール済み状態に戻ります。 zoneadm halt とシステムの再起動を実行すると、稼働状態のゾーンがインストール済み状態に戻ります。 zonecfg -z zonename を使用すると、attr、bootargs、capped-memory、dataset、dedicated-cpu、device、fs、ip-type、limitpriv、net、rctl、または scheduling-class プロパティーを追加または削除することができます。zonepath 資源と inherit-pkg-dir 資源は変更できません。 |
zonecfg 経由で変更されたパラメータは、稼働中のゾーンには影響しません。変更を適用するには、ゾーンを再起動する必要があります。
ゾーンを使用すると、必要に応じてほぼどのような単位にも細かく隔離できます。専用の CPU、物理デバイス、物理メモリーの一部分などをゾーンに割り当てる必要はありません。このような資源は、1 つのドメインまたはシステムで実行される複数のゾーンに渡って多重化するか、オペレーティングシステムに用意されている資源管理機能を使ってゾーンごとに割り当てることができます。
ゾーンごとにカスタマイズされたサービスを提供できます。基本的なプロセス隔離を強化するために、同じゾーン内のプロセスのみ互いに認識したりシグナルを送信したりできます。ゾーン間で基本的な通信を行うには、各ゾーンに IP 接続機能を持たせます。あるゾーンで実行中のアプリケーションが、別のゾーンのネットワークトラフィックを監視することはできません。それぞれのパケットストリームが同じ物理インタフェースを通過する場合でも、この隔離は維持されます。
各ゾーンには、ファイルシステム階層の一部分が割り当てられます。各ゾーンは、ファイルシステム階層で割り当てられた部分ツリーに限定されます。したがって、特定のゾーンで実行されている作業負荷は、別のゾーンで実行されているほかの作業負荷のディスク上のデータにアクセスすることはできません。
ネームサービスで使用されるファイルは、ゾーン独自のルートファイルシステムのビュー内に置かれます。したがって、異なるゾーンのネームサービスは互いに隔離され、サービスごとに異なる設定を使用できます。
資源管理機能を使用する場合は、資源管理制御の境界とゾーンの境界をそろえる必要があります。このように境界をそろえることで、名前空間のアクセス、セキュリティー隔離、および資源の使用状況をすべて制御できる、より完成された仮想マシンのモデルを作成できます。
ゾーンで各種の資源管理機能を使用するための特殊要件については、このマニュアルでこれらの機能に関連する各章を参照してください。