Go to main content

マニュアルページ セクション 7: 標準、環境、マクロ、文字セット、その他

印刷ビューの終了

更新: 2022年7月27日
 
 

zones (7)

名前

zones - Solaris オペレーティングシステムコンテナ

説明

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

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

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

ゾーンは、次の SMF FMRI で識別されるゾーンの委任リスタータによって管理されます。

svc:/system/zones:default

システムブート時のゾーンの自動ブートは、その autoboot プロパティーによって決まります。Conversely, zones are shut down according to their autoshutdown property when the global zone is gracefully shutdown.autoboot および autoshutdown の詳細は、zonecfg(8) のマニュアルページを参照してください。

ゾーンの委任リスタータでは、依存関係と優先度を使用してブート順序をコントロールできます。同時に発生する状態遷移の調整もサポートされています。詳細は、svc.zones(8) のマニュアルページを参照してください。

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

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

CONFIGURED

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

不完全

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

インストール済み

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

準備完了

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

RUNNING

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

SHUTTING_DOWN
DOWN

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

UNAVAILABLE

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

共有ゾーンの状態

ゾーンの状態はホストシステムのすべてのブート環境 (BE) 間で共有されます。ゾーンの状態が変更された場合、現在ブートされている BE に関係なく、すべての BE に影響します。それは、インストールから構成までゾーンの変更を含めて、すべての状態にも影響します。ゾーンがアンインストールされると、それはすべての BE からアンインストールされます。そのようなゾーンを回復する方法は、以前にバックアップしたデータからに限られます。

プロセスのアクセス制限

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

特権の制限

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

デバイスの制限

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

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

ブランド

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

ファイルシステム

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

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

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

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

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

ゾーンが不変ゾーンである、つまり file-mac-profile が「none」以外の値に設定されている場合、最上位の関連データセットは一定の例外を除き読み取り専用です。

ネットワーク処理

ゾーンには、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(8) で割り当てられます。ネットワークインタフェース名は大域ゾーンでも構成する必要があります。

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

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

ホスト識別子

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

ロギング

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

ライブゾーン再構成

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

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

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

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

brand
zonename
zonepath
ip-type
rootzpool

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

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

admin
attr
autoboot
autoshutdown
bootargs
suspend

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

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

関連項目

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