Go to main content
マニュアルページ セクション 5: 標準、環境、マクロ

印刷ビューの終了

更新: 2016年12月6日
 
 

zones (5)

名前

zones - Solaris アプリケーションコンテナ

説明

Solaris のゾーン機能を使用して、アプリケーションを実行するための独立した環境を作成することができます。ゾーンで実行するプロセスは、システム上のほかのアクティビティーから監視されたり干渉されたりすることはありません。ほかのプロセス、ネットワークインタフェース、ファイルシステム、デバイス、およびプロセス間通信機能へのアクセスは、別のゾーンで実行されているプロセスと対話することがないように制限されます。

ゾーンで使用できる特権は、操作がシステム全体に影響することがないように制限されます。privileges(5) を参照してください。

ゾーンの構成と管理は、zoneadm(1M) および zonecfg(1M) ユーティリティーを使って行います。ゾーンごとに詳細な構成を指定し、ファイルシステムの内容 (ソフトウェアパッケージなど) をゾーンにインストールし、ゾーンの実行時の状態を管理することができます。zlogin(1) を使用すると、アクティブなゾーン内でコマンドを実行できます。この操作を行うときに、in.rlogind(1M)sshd(1M) などのネットワークベースのログインサーバー経由でログインする必要はありません。

ゾーンを自動的にブートするかどうかは、次のように FMRI で識別されるゾーンサービスを使って切り替えます。

svc:/system/zones:default

zoneadm(1M) を参照してください。ゾーンの autoboot プロパティーに true を設定して、常に自動的にブートする方法もあります。ただし、ゾーンサービスが無効になっている場合は、ゾーンの autoboot プロパティーの設定に関係なく、ゾーンは自動的にブートしません。大域ゾーンのクリーンシャットダウン時に、このサービスは、その autoshutdown プロパティーに応じて、各ゾーンをシャットダウン、停止、または一時停止します。zonecfg(1M) を参照してください。

アクティブなゾーンは、英数字の名前と数値の ID によって識別されます。英数字の名前は、zonecfg(1M) ユーティリティーを使用して構成されます。数値の ID は、ゾーンがブートするときに自動的に割り当てられます。zonename(1) ユーティリティーは、現在のゾーン名を報告します。また、zoneadm(1M) ユーティリティーを使用すると、構成済みゾーンの名前と ID を報告できます。

ゾーンの状態には、次のいくつかの種類があります。

構成済み

ゾーンの構成が完全に指定および確定されて、安定した記憶領域に保存されていることを示します。

不完全

ゾーンのインストールまたはアンインストールが完了していないか、またはそのような状態への移行中に操作が中断されたことを示します。

インストール済み

ゾーンの構成がシステムにインストールされたことを示します。 パッケージはゾーンのルートパスにインストールされています。

準備完了

ゾーンの仮想プラットフォームが確立されていることを示します。たとえば、ファイルシステムのマウントおよびデバイスの構成は完了していますが、ゾーンに関連付けられているプロセスはまだ開始していません。

RUNNING

ゾーンのアプリケーション環境に関連付けられたユーザープロセスが稼働状態であることを示します。

SHUTTING_DOWN
DOWN

ゾーンが停止していることを示します。アプリケーション環境の状態 (ファイルシステムをマウントした状態など) を切り離せない場合、または仮想プラットフォームの一部を破棄できない場合に、ゾーンがそれらの状態に固定されることがあります。そのような場合には、オペレータの介入が必要です。

UNAVAILABLE

ゾーンがインストールされたが、ブートできないことを示します。ゾーンが利用不可能な状態になるのは、svc:/system/zones:default がオンラインになろうとしているときや、ゾーンがブートしようとしているときにそのゾーンのストレージが使用できないとき、アーカイブの抽出が成功したあとにアーカイブベースのインストールが失敗したとき、および (正しくない強制された接続のあとなど) そのゾーンのソフトウェアに大域ゾーンのソフトウェアとの互換性がないときです。

プロセスのアクセス制限

あるゾーン (大域ゾーンを除く) で実行中のプロセスからほかのプロセスへのアクセスは制限されています。/proc (proc(4) を参照) を使用して、または kill(2)priocntl(2) などの、プロセス ID を取るシステムコールインタフェースを使用して表示できるのは、同じゾーン内のプロセスだけです。ほかのゾーン (大域ゾーンを含む) にあるプロセスにアクセスしようとすると、指定したプロセスがなかった場合に返されるエラーコードと同じエラーコードで失敗します。

特権の制限

非大域ゾーンで実行されるプロセスでは、あるゾーンで実行する操作がほかのゾーンの操作に影響することがないように、一部の特権が制限されています。特権が制限されることによって、そのゾーンで特権ユーザー (スーパーユーザー、ルートユーザーなど) が実行できる操作が制限されます。ゾーン内で使用可能な特権のリストは、ppriv(1) ユーティリティーを使用すると表示できます。特権の詳細は、privileges(5) を参照してください。

デバイスの制限

あるゾーンのプロセスが別のゾーンのプロセスに干渉することがないよう、ゾーン内部で利用可能なデバイスセットには制限があります。たとえば、ゾーンで実行されるプロセスから、/dev/kmem を使用してカーネルメモリーを変更したり、ルートディスクの内容を変更したりすることはできません。このため、デフォルトでは、ゾーン内で安全に利用可能であると見なされるいくつかの仮想デバイスだけを使用できます。zonecfg(1M) ユーティリティーを使用すると、追加のデバイスを特定のゾーン内で使用できます。

デバイスおよび特権が制限されることで、非大域ゾーンで実行できるユーティリティーにもいくつかの影響があります。たとえば、eeprom(1M)prtdiag(1M)、および prtconf(1M) ユーティリティーは、通常は使用できないデバイスに依存するため、ゾーン内では機能しません。

ブランド

ゾーンを最初に作成するとき、ゾーンにブランドを割り当てることができます。ブランドゾーン内のソフトウェアは、大域ゾーンにある同じソフトウェアとは異なります。ソフトウェアには構成または配置が異なる Solaris ソフトウェアを含めることができます。このような特定のソフトウェアの集まりを「ブランド」と呼びます (brands(5) を参照)。いったんインストールされると、ゾーンをアンインストールしない限り、ゾーンのブランドは変更できません。solaris-kz ブランドはさらに多くの柔軟性を提供し、ここで説明している多くの制限を変更します。

ファイルシステム

各ゾーンは、ゾーンの root と呼ばれるディレクトリをルートとする、ファイルシステム階層の独自領域を保持します。ゾーンで実行されるプロセスがアクセスできるファイルは、階層のその領域にあるファイル (ゾーンのルートにあるファイル) だけです。この制限により、あるゾーンのプロセスから、別のゾーンに関連付けられているファイルシステムのデータを破壊または検査できないようになっています。chroot(1M) ユーティリティーは、ゾーン内で使用できますが、そのプロセスをゾーン内でアクセス可能なルートパスだけに制限できます。

ファイルシステム容量を保持するために、lofs(7FS) ファイルシステムの読み取り専用オプションを使用すると、ファイルシステムのセクションを 1 つ以上のゾーンにマウントできます。このように操作することで、同じファイルシステムのデータを複数のゾーンで共有するときに、ゾーンのセキュリティーを確保することができます。

あるゾーンで確立された NFS および autofs マウントへのアクセスは、そのゾーンだけに制限され、ほかのゾーン (大域ゾーンを含む) からアクセスすることはできません。ゾーンが停止またはリブートすると、マウントは削除されます。

ゾーンに委任された ZFS データセットは、そのゾーン内で管理できます。委任されたデータセット内に子データセットを作成できます。委任されたデータセット内にデータセットを作成すると、それらも委任されます。委任されたデータセットは、最上位のもの以外は破棄できます。委任されたデータセットには、ほとんどのプロパティーを設定できます。詳細は、zfs(1M) を参照してください。

各ゾーンには委任された最上位のデータセットがあり、さらにそのデータセットには ROOT のほか、.../export.../export/home などのその他のデータセットも含まれる可能性があります。ROOT データセットの下にあるデータセットは、そのゾーンのブート環境を構成します。ブート環境のデータセットを作成または破棄する場合は、必ず zoneadm(1M) または beadm(1M) コマンドを使用するようにしてください。

ネットワーク処理

ゾーンには、TCP、UDP、および SCTP アプリケーションのための独自のポート番号空間があり、通常は 1 つ以上の個別の IP アドレスがあります (ただし、Trusted Extensions の一部の構成ではゾーン間で IP アドレスが共有されます)。

ゾーンでは、IP レイヤー (IP ルーティング、ARP、IPsec、IP フィルタなど) の構成および状態を大域ゾーンと共有するか (共有 IP ゾーン)、または個別の IP レイヤーの構成および状態を使用できます (排他的 IP ゾーン)。

ゾーンが大域ゾーンと同じデータリンクに接続される、つまり、同じ IP サブネット上に配置される場合は、ゾーンに共有 IP インスタンスを使用することをお勧めします。

ゾーンが大域ゾーンやほかの非大域ゾーンとは異なる VLAN や LAN に接続される場合など、ネットワークの IP レイヤーで隔離されている必要がある場合は、隔離の理由から、ゾーンに排他的 IP を使用するようにしてください。

共有 IP ゾーンでは、ネットワークに対する特定の操作 (IP アドレスの変更、IP または Ethernet の偽装パケットの送信など) が禁止されます。これに対し、排他的 IP ゾーンでは、同じネットワークインタフェースに接続されている独立したホストと同等のネットワーク機能を使用できます。特に、そのようなゾーンのスーパーユーザーは、IP アドレスの変更および ARP パケットの偽装を行うことができます。

共有 IP ゾーンには、1 つ以上のネットワークインタフェース名と IP アドレスが zonecfg(1M) で割り当てられます。ネットワークインタフェース名は大域ゾーンでも構成する必要があります。

排他的 IP ゾーンには、1 つ以上のネットワークインタフェース名が zonecfg(1M) で割り当てられます。ネットワークインタフェース名はそのゾーンに排他的に割り当てる必要があります。つまり、同じネットワークインタフェース名をほかの稼働中のゾーンに割り当てたり、大域ゾーンで使用したりすることはできません。

DHCP クライアント、IPsec、および IP フィルタという形での IP レベルの完全な機能は、排他的 IP ゾーンでは使用できますが、共有 IP ゾーンでは使用できません。

ホスト識別子

ゾーンは 32 ビットのホスト識別子をエミュレートできます。ホスト識別子は、システム統合を目的として、zonecfg(1M) を使用すると構成できます。ゾーンがホスト識別子をエミュレートした場合は、hostid(1)sysdef(1M) などのコマンドだけでなく、そのゾーンのコンテキスト内で実行される sysinfo(2)gethostid(3C) などの C インタフェースもホストマシンの識別子ではなく、そのゾーンのエミュレートされたホスト識別子を表示するか、または返します。

ロギング

ゾーンのコンソールの出力は、/var/log/zones/console.<zonename> に記録されます。その他の実行時情報は /var/log/zones/messages.<zonename> に記録されます。各ログは、logadm(1M) を使用して定期的にローテーションされます。

ライブゾーン再構成

実行中のゾーンをリブートせずに再構成できます。実行中のゾーンのライブ構成を検査することもできます。zonecfg(1M) により、ライブ構成を取得および検査し、必要な変更を行い、実行中のゾーンに変更を一時的に適用できます。zonecfg(1M) により、保存されたゾーン構成に基づき実行中のゾーンを永続的に再構成できます。詳細は、zonecfg(1M) を参照してください。

ゾーン構成は、zonecfg(1M) マニュアルページで定義されているリソースおよびリソースプロパティーで構成されます。ライブゾーン再構成のために、zonecfg(1M) で認識され、関連付けられたブランドによる許可も受けているリソースおよびリソースプロパティーのみがサポートされます。

選択されたブランドのライブゾーン再構成によってサポートされるリソースおよびリソースプロパティーの一覧は、ブランド固有のマニュアルページを参照してください。ただし、すべてのブランドに該当する制限事項もあります。

次のリソースおよびリソースプロパティーは、すべてのブランドのライブゾーン再構成でサポートされません。

brand
zonename
zonepath
ip-type
rootzpool

リストされているリソースおよびリソースプロパティーが実行中のゾーンに適用された場合、そのリソースおよびリソースプロパティーに加えたあらゆる変更は、ライブゾーン再構成の失敗の原因となります。

次に一覧で示すリソースおよびリソースプロパティーは、実行中のゾーンに直接影響しません。このため、これらは永続的な構成内でいつでも変更できます。ただし、これらをライブ構成で変更するあらゆる試行は拒否されます。これはすべてのブランドに該当します。

admin
attr
autoboot
autoshutdown
bootargs
suspend

属性

次の属性については、attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/zones

関連項目

hostid(1), zlogin(1), zonename(1), beadm(1M), in.rlogind(1M), logadm(1M), solaris-kz(5), sshd(1M), sysdef(1M), zfs(1M), zoneadm(1M), zonecfg(1M), kill(2), priocntl(2), sysinfo(2), gethostid(3C), getzoneid(3C), ucred_get(3C), proc(4), attributes(5), brands(5), privileges(5), crgetzoneid(9F)