ゾーンは、Solaris 10 オペレーティングシステムのアプリケーションおよびリソース管理機能です。この機能により、オペレーティングシステムはアプリケーションに対して、分離およびセキュリティー保護された複数の仮想オペレーティングシステム環境 (ゾーン) として表されます。これらのゾーンを使用すると、オペレーティングシステムに独立性を持たせながら、ある程度の集中リソース管理が可能になるという利点があります。そのため、アプリケーションを互いに別々のゾーンにインストールおよび実行して分離しながらも、特定のオペレーティングシステムリソースを中央に割り当てて集中管理することが可能です。
複数のゾーンをサポートするオペレーティングシステムの観点から見れば、オペレーティングシステムリソースにはプロセス管理、メモリー、ネットワーク構成、ファイルシステム、パッケージレジストリ、ユーザーアカウント、共用ライブラリ、および場合によってはインストール済みのアプリケーションが含まれます。
複数ゾーン環境は、1 つの大域ゾーン (デフォルトのオペレーティングシステム) と 1 つ以上の非大域ゾーンで構成されます。大域ゾーンには、大域 (ゾーン) 管理者が複数の非大域ゾーンに割り振ることのできるリソースが含まれます。非大域ゾーンには次の機能があります。
セキュリティー。分散サービスを非大域ゾーンで実行すると、セキュリティー違反が発生した場合の損害を抑えることができます。あるゾーンでソフトウェアのセキュリティーの欠陥を突いて侵入に成功したとしても、侵入はそのゾーンに限られます。非大域ゾーン内で使用できる特権は、大域ゾーンで使用できる特権の一部のみです。
ランタイムの分離。複数のアプリケーションに異なるレベルのセキュリティー、大域リソースへの排他アクセス、または個別の設定が必要となる場合でも、非大域ゾーンを使用することで、それらのアプリケーションを同じコンピュータ上に配備することが可能となります。たとえば、異なるゾーンで実行中の複数のアプリケーションは、各非大域ゾーンに関連付けられている別個の IP アドレスを使用することで、同じネットワークポートにバインドできます。これにより、アプリケーションが互いのネットワークトラフィック、ファイルシステムデータ、プロセスの活動などを監視したり妨害したりすることが防止されます。
管理の独立。オペレーティングシステム環境を仮想化することで、非大域ゾーンをそれぞれ個別に管理できます。大域管理者ではなくゾーン管理者が非大域ゾーンで行う、ユーザーアカウントの作成、ソフトウェアのインストールと設定、プロセスの管理などのアクションは他のゾーンに影響しません。
非大域ゾーンには、完全ルートゾーンと疎ルートゾーンの 2 種類があります。
完全ルートゾーン: 大域ゾーン上に存在するファイルシステムの読み取り/書き込みコピーがあります。完全ルートゾーンが作成されると、大域ゾーン上にインストールされているすべてのパッケージは完全ルートゾーンで使用可能になります。パッケージデータベースを作成すると、ゾーンを専用かつ単独で使用するために、すべてのファイルが完全ルートゾーンにコピーされます。
疎ルートゾーン: 大域ゾーンに存在するファイルシステムの一部の読み取り/書き込みコピーのみがあり (そのために疎ルートという名前で呼ばれる)、それ以外のファイルシステムは大域ゾーンから読み取り専用でループバック仮想ファイルシステムとしてマウントされます。大域管理者は、疎ルートゾーンの作成時に、この疎ルートゾーンとどのファイルシステムを共有するかを選択します。デフォルトでは、/usr、/lib、/sbin、および /platform が読み取り専用ファイルシステムとして共有されます。大域ゾーンにインストールされているすべてのパッケージが、疎ルートゾーンで利用できるようになります。パッケージデータベースが作成され、マウントされているファイルシステム内のすべてのファイルがゾーンで共有されます。
完全ルート非大域ゾーンと疎ルート非大域ゾーンのどちらを使用するかは、リソースの効率化と管理統制のどちらに重点を置くかによって左右されます。完全ルートゾーンではメモリーや他のリソースを犠牲にして管理統制 (独立性や分離) を最大化できますが、疎ルートゾーンでは管理の独立性を犠牲にして実行可能ファイルや共用ライブラリが効率的に共用されるよう最適化されます (ディスク使用量はずっと少なくなる)。疎ルートゾーンが完全ルートゾーンよりどれだけパフォーマンスに優れているかを測る尺度は今のところありません。通常、それはソフトウェアによって異なります。
パッケージが大域ゾーンにインストールされると、そのパッケージはすべての非大域ゾーンでデフォルトで使用可能となります。このプロセスをパッケージの伝播といいます。この伝播が実行されるには、新たに作成された非大域ゾーンを完全にブートする、つまり実行状態にする必要があります。伝播によって、大域ゾーンにインストールされているパッケージが、ローカルつまり非大域ゾーンから表示および使用できるようになります。伝播によってアプリケーションパッケージのライフサイクル管理 (インストール、アップグレード、アンインストール) は大域管理者が一括して行えるようになりますが、アプリケーション設定とランタイム管理は (非大域) ゾーン管理者が行います。
完全ルートゾーンの場合、伝播は、大域ゾーンから完全ルートゾーンへのインストール済みファイルの自動コピーと、レジストリ情報の自動同期化によって行われます。疎ルートゾーンの場合、伝播は大域ルートゾーンと疎ルートゾーンとが共有する読み取り専用ファイルにより、レジストリ情報の自動同期化によって行われます。
非大域ゾーンへのパッケージの伝播は、内部パッケージ属性を使用してパッケージレベルで制御されます。これらの属性の値の一部、少なくともデフォルト値については、インストール時に pkgadd —G オプションを使用して属性値を上書きすることで、伝播を無効にすることができます。一度インストールした後は、パッケージをアンインストールしてインストールし直さないかぎり、パッケージの伝播の動作を変更できません。たとえば、パッチでパッケージの伝播の動作を変更することはできず、アップグレードする対象のパッケージの伝播の動作に合わせてパッチを適用する必要があります。