Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

ゾーンの構成要素

この節では、構成できる必須および省略可能なゾーン構成要素について説明します。詳細は、「ゾーン構成データ」を参照してください。

ゾーンの名前とパス

ゾーンの名前とパスを選択する必要があります。

ゾーンの自動起動

autoboot プロパティーの設定により、大域ゾーンの起動時にこのゾーンが自動的に起動されるかどうかが決まります。ゾーンサービス svc:/system/zones:default も有効になっている必要があります。

資源プールの関連付け

第 13 章資源プールの作成と管理 (手順)の説明に従ってシステムで資源プールを構成した場合は、ゾーンを構成するときに pool プロパティーを使用して、資源プールの 1 つにゾーンを関連付けることができます。

Solaris 10 8/07 以降のリリースでは、資源プールが構成されていない場合でも、非大域ゾーンの実行中にシステムのプロセッサの一部をそのゾーン専用に割り当てるよう、dedicated-cpu 資源を使用して指定できます。ゾーンの実行中に使用される一時プールが動的に作成されます。zonecfg によって指定すると、移行時にプールの設定が伝達されます。


注 –

pool プロパティーによって設定される持続的プールを使用するゾーン構成と、dedicated-cpu 資源によって構成される一時プールには、互換性がありません。これら 2 つのプロパティーは、どちらか 1 つしか設定できません。


Solaris 10 8/07: dedicated-cpu 資源

dedicated-cpu 資源は、非大域ゾーンの実行中にシステムのプロセッサの一部をそのゾーン専用に割り当てることを指定します。ゾーンの起動時に、ゾーンの実行中に使用される一時プールが動的に作成されます。

zonecfg で指定すると、移行時にプールの設定が伝達されます。

dedicated-cpu 資源は、ncpus の制限を設定し、必要に応じて importance も設定します。

ncpus

CPU の数を指定するか、CPU の数の範囲を 2–4 などと指定します。資源プールの動的な動作を得るために範囲を指定する場合は、次の手順も実行してください。

importance

動的な動作を得るために CPU 範囲を使用する場合は、importance プロパティーも設定してください。importance は「省略可能な」プロパティーであり、プールの相対的な重要性を定義します。このプロパティーが必要となるのは、ncpus に範囲を指定した場合で、poold によって管理される動的資源プールを使用しているときだけです。poold が実行されていない場合、importance は無視されます。poold が実行されている場合、importance が設定されていないと、importance はデフォルト値の 1 になります。詳細は、 pool.importance プロパティーの制約」を参照してください。


注 –

capped-cpu 資源と dedicated-cpu 資源には互換性がありません。cpu-shares 資源制御と dedicated-cpu 資源には互換性がありません。


Solaris 10 5/08: capped-cpu 資源

capped-cpu 資源は、1 つのプロジェクトまたは 1 つのゾーンで消費可能な CPU 資源量に対して絶対的できめの細かい制限を設けます。プロセッサセットと組み合わせて使用すると、CPU キャップはセット内の CPU 使用率を制限します。capped-cpu 資源には、小数点第 2 位までの正の小数である 1 つの ncpus プロパティーがあります。このプロパティーは、CPU のユニット数に対応しています。この資源には範囲を指定できません。この資源には小数を指定できます。ncpus を指定する場合、1 の値は 1 つの CPU の 100% を意味します。1.25 の値は 125% を意味します。100% がシステム上の 1 つの CPU の上限となります。


注 –

capped-cpu 資源と dedicated-cpu 資源には互換性がありません。


ゾーンのスケジューリングクラス

公平配分スケジューラ (FSS) を使用すると、使用可能な CPU 資源のゾーン間での割り当てを、ゾーンの作業負荷の重要性に基づいて制御できます。この作業負荷の重要性は、各ゾーンに割り当てる CPU 資源の「配分」で表します。CPU 資源のゾーン間での割り当てを管理するために FSS を使用していない場合でも、ゾーン内のプロジェクトに配分を設定するために FSS を使用するよう、ゾーンのスケジューリングクラスを設定することができます。

cpu-shares プロパティーを明示的に設定すると、公平配分スケジューラ (FSS) はそのゾーンのスケジューリングクラスとして使用されます。ただし、この場合に望ましい FSS の使用方法は、dispadmin コマンドを使用して、FSS をシステムのデフォルトのスケジューリングクラスに設定する方法です。このようにすると、すべてのゾーンがシステムの CPU 資源の公平配分を受けることができます。ゾーンに対して cpu-shares が設定されていない場合、そのゾーンはシステムのデフォルトのスケジューリングクラスを使用します。ゾーンのスケジューリングクラスは、次の処理によって設定されます。

priocntl (priocntl(1) のマニュアルページを参照) を使用すると、デフォルトのスケジューリングクラスの変更や再起動を行うことなく、実行中のプロセスを別のスケジューリングクラスに移動できます。

Solaris 10 8/07: 物理メモリーの制御と capped-memory 資源

capped-memory 資源は、physicalswap、および locked メモリーの制限を設定します。各制限は省略可能ですが、少なくとも 1 つは設定する必要があります。


注 –

通常はアプリケーションが多量のメモリーをロックすることはありませんが、ゾーンのアプリケーションによってメモリーがロックされることがわかっている場合は、ロックされるメモリーを設定するとよいでしょう。ゾーンの信頼が問題になる場合は、ロックされるメモリーの上限を、システムの物理メモリーの 10 パーセントまたはゾーンの物理メモリー上限の 10 パーセントに設定することもできます。


詳細は、第 10 章資源上限デーモンによる物理メモリーの制御 (概要)第 11 章資源上限デーモンの管理 (手順)、および 「ゾーンの構成方法」を参照してください。ゾーンに一時的な資源上限を設定する方法については、「ゾーンに一時的な資源上限を指定する方法」を参照してください。

ゾーンネットワークインタフェース

ネットワーク接続を提供するために zonecfg コマンドによって構成されるゾーンネットワークインタフェースは、ゾーンの起動時に自動的に設定されてゾーン内に配置されます。

インターネットプロトコル (IP) 層は、ネットワークのパケットの受信と配信を行います。この層には、IP ルーティング、アドレス解決プロトコル (ARP)、IP セキュリティーアーキテクチャー (IPsec)、および IP フィルタが含まれます。

非大域ゾーンに使用できる IP タイプには、共有 IP と排他的 IP の 2 種類があります。共有 IP ゾーンはネットワークインタフェースを共有し、排他的 IP ゾーンには専用のネットワークインタフェースが必要です。

各タイプの IP 機能については、「共有 IP 非大域ゾーンにおけるネットワーク」および 「Solaris 10 8/07: 排他的 IP 非大域ゾーンにおけるネットワーク」を参照してください。

共有 IP 非大域ゾーン

デフォルトのタイプは共有 IP ゾーンです。ゾーンには、1 つ以上の専用 IP アドレスが必要です。共有 IP ゾーンは、IP 層の構成と状態を大域ゾーンと共有します。次の両方の条件が満たされる場合、ゾーンは共有 IP インスタンスを使用すべきです。

共有 IP ゾーンには、zonecfg コマンドを使用して 1 つ以上の IP アドレスを割り当てます。大域ゾーンでデータリンク名も構成する必要があります。

これらのアドレスは、論理ネットワークインタフェースに関連付けられます。大域ゾーンから ifconfig コマンドを使用すると、稼働中のゾーンの論理インタフェースを追加したり削除したりできます。詳細は、「共有 IP ネットワークインタフェース」を参照してください。

Solaris 10 8/07: 排他的 IP 非大域ゾーン

排他的 IP ゾーンでは、IP レベルのすべての機能が使用可能です。

排他的 IP ゾーンは、IP 関連の状態を独自に保持します。

排他的 IP ゾーンでは次のような機能を使用できます。

排他的 IP ゾーンには、zonecfg コマンドを使用して独自のデータリンクセットを割り当てます。net 資源の physical プロパティーを使用して、ゾーンに xge0e1000g1bge32001 などのデータリンク名を割り当てます。net 資源の address プロパティーは設定されません。

データリンクを割り当てると snoop コマンドが使用可能になります。

dladm コマンドを show-linkprop サブコマンドとともに使用して、実行中の排他的 IP ゾーンに対するデータリンクの割り当てを表示できます。dladm コマンドを set-linkprop サブコマンドとともに使用すると、実行中のゾーンに対して追加のデータリンクを割り当てることができます。使用例については、「Solaris 10 8/07: 排他的 IP 非大域ゾーンでのデータリンクの管理」を参照してください。

実行中の排他的 IP ゾーンの内部で、ifconfig コマンドを使用して IP を構成できます。これには、論理インタフェースの追加や削除も含まれます。ゾーンの IP 構成は、大域ゾーンの場合と同様に sysidtools を使用して設定できます。詳細は、sysidcfg(4) のマニュアルページを参照してください。


注 –

排他的 IP ゾーンの IP 構成は、大域ゾーンから zlogin コマンドを使用することによってのみ表示できます。次に例を示します。


global# zlogin zone1 ifconfig -a

共有 IP 非大域ゾーンと排他的 IP 非大域ゾーンのセキュリティーの相違

共有 IP ゾーン内のアプリケーションは、スーパーユーザーも含め、zonecfg ユーティリティーを介してゾーンに割り当てられた IP アドレス以外を送信元 IP アドレスとしてパケットを送信することはできません。このタイプのゾーンには、任意のデータリンク (レイヤー 2) パケットを送受信するアクセス権はありません。

一方、排他的 IP ゾーンの場合は、zonecfg によって指定されたデータリンク全体がゾーンに対して許可されます。その結果、スーパーユーザーは、排他的 IP ゾーンでも大域ゾーンと同様に、偽のパケットをこれらのデータリンク上で送信できます。

共有 IP 非大域ゾーンと排他的 IP 非大域ゾーンの同時使用

共有 IP ゾーンは常に IP 層を大域ゾーンと共有し、排他的 IP ゾーンは常に独自の IP 層インスタンスを持っています。共有 IP ゾーンと排他的 IP ゾーンの両方を同じマシンで使用することができます。

ゾーンでマウントされるファイルシステム

通常、ゾーンでマウントされるファイルシステムには、次のものが含まれます。

これには、たとえば次のようなファイルシステムが含まれます。

アプリケーション環境内部から実行されるマウントには、いくつかの制限事項があります。これらの制限事項は、ほかのゾーンに悪影響を与えないようにするために、ゾーン管理者がシステムのほかの部分に対するサービスを拒否できないようにします。

一部のファイルシステムについては、ゾーン内部からマウントする場合にセキュリティー制限があります。ほかのファイルシステムは、ゾーン内でマウントされたときに特有の動作を行います。詳細は、「ファイルシステムと非大域ゾーン」を参照してください。

ゾーンで構成されるデバイス

zonecfg コマンドは、規則照合方式を使って、特定のゾーンにどのデバイスを配置するかを指定します。いずれかのルールに一致するデバイスは、ゾーンの /dev ファイルシステムに追加されます。詳細は、「ゾーンの構成方法」を参照してください。

ゾーン内のホスト ID

非大域ゾーンでは、大域ゾーンの hostid とは異なる hostid プロパティーを設定できます。この設定は、P2V (Physical-To-Virtual) 機能を使用して物理マシンをゾーンに統合する場合に行われます。ゾーン内に配置されたアプリケーションが元の hostid に依存する場合があり、アプリケーション構成を更新できないことがあります。詳細は、「資源タイプとプロパティータイプ」を参照してください。

ゾーン規模の資源制御の設定

大域管理者は、ゾーン規模の特権付き資源制御をゾーンに対して設定できます。ゾーン規模の資源制御は、ゾーン内のすべてのプロセスエンティティーによる総資源消費を制限します。

これらの制限は、大域ゾーンと非大域ゾーンのどちらに対しても、zonecfg コマンドを使用して指定します。「ゾーンの構成方法」を参照してください。

Solaris 10 8/07 以降のリリースでは、ゾーン規模の資源制御を設定する場合に望ましい、より簡単な方法は、rctl 資源の代わりにプロパティー名を使用する方法です。

Solaris 10 5/08: zone.cpu-cap 資源制御は、1 つのゾーンで消費可能な CPU 資源量に対する絶対的な制限を設定します。project.cpu-cap 設定と同様、100 の値は 1 つの CPU の 100% を意味します。125 の値は 125% になります。CPU キャップの使用時は、100% がシステム上の 1 つの CPU の上限となります。


注 –

capped-cpu 資源を設定する場合は、単位に小数を使用できます。この値は zone.capped-cpu 資源制御と相互に関連していますが、設定値はその 100 分の 1 になります。設定値 1 は資源制御の設定値 100 に等しくなります。


zone.cpu-shares 資源制御は、公平配分スケジューラ (FSS) の CPU 配分の制限をゾーンに対して設定します。CPU 配分は、まずゾーンに対して割り当てられたあとで、project.cpu-shares エントリの指定に従って、ゾーン内のプロジェクトに分配されます。詳細は、「ゾーンがインストールされている Solaris システムでの公平配分スケジューラの使用」を参照してください。この制御のグローバルプロパティー名は cpu-shares です。

zone.max-locked-memory 資源制御は、ゾーンで使用できるロックされた物理メモリーの量を制限します。ゾーン内のプロジェクト間でのロックされたメモリー資源の割り当ては、project.max-locked-memory 資源制御を使用して制御できます。詳細は、表 6–1 を参照してください。

1 つのゾーンの LWP が多くなりすぎると、ほかのゾーンに影響を与えることがあります。zone.max-lwps 資源制御は、これを防ぐことで、資源の隔離を向上させます。ゾーン内のプロジェクト間での LWP 資源の割り当ては、project.max-lwps 資源制御を使用して制御できます。詳細は、表 6–1 を参照してください。この制御のグローバルプロパティー名は max-lwps です。

zone.max-msg-idszone.max-sem-idszone.max-shm-ids、および zone.max-shm-memory の各資源制御は、ゾーン内のすべてのプロセスで使用される System V 資源を制限します。ゾーン内のプロジェクト間での System V 資源の割り当ては、これらの資源制御の project バージョンを使用して制御できます。これらの制御のグローバルプロパティー名は、max-msg-idsmax-sem-idsmax-shm-ids、および max-shm-memory です。

zone.max-swap 資源制御は、ゾーン内のユーザープロセスのアドレス空間マッピングと tmpfs マウントで消費されるスワップを制限します。prstat -Z の出力は「スワップ」列を表示します。報告されるスワップは、ゾーンのプロセスと tmpfs マウントで消費されるスワップの合計量です。この値により、各ゾーンで予約されているスワップを監視しやすくなり、適切な zone.max-swap 設定を選択することができます。

表 17–1 ゾーン規模の資源制御

制御名 

グローバルプロパティー名 

説明 

デフォルトの単位 

使用される値 

zone.cpu-cap

 

Solaris 10 5/08: このゾーンに対する CPU 資源量の絶対的な制限。

数量 (CPU の数)、パーセントで表されます。 


注 –

capped-cpu 資源として設定する場合は、単位に小数を使用できます。


 

zone.cpu-shares

cpu-shares

このゾーンに対する公平配分スケジューラ (FSS) の CPU 配分。 

数量 (配分) 

 

zone.max-locked-memory

 

ゾーンで使用できるロックされた物理メモリーの合計量。 

priv_proc_lock_memory がゾーンに割り当てられている場合、そのゾーンがすべてのメモリーをロックするのを防ぐため、この資源制御の設定も検討してください。

サイズ (バイト) 

capped-memorylocked プロパティー。

zone.max-lwps

max-lwps

このゾーンで同時に使用できる LWP の最大数。 

数量 (LWP 数) 

 

zone.max-msg-ids

max-msg-ids

このゾーンに許容されるメッセージキュー ID の最大数。 

数量 (メッセージキュー ID の数) 

 

zone.max-sem-ids

max-sem-ids

このゾーンに許容されるセマフォー ID の最大数。 

数量 (セマフォー ID の数) 

 

zone.max-shm-ids

max-shm-ids

このゾーンに許容される共有メモリー ID の最大数。 

数量 (共有メモリー ID の数) 

 

zone.max-shm-memory

max-shm-memory

このゾーンに許容される System V 共有メモリーの合計量。 

サイズ (バイト) 

 

zone.max-swap

 

このゾーンのユーザープロセスのアドレス空間マッピングと tmpfs マウントで消費できるスワップの合計量。

サイズ (バイト) 

capped-memoryswap プロパティー

prctl コマンドを使用すると、実行中のプロセスに対してこれらの制限を指定できます。例については、prctl コマンドを使用して大域ゾーンの FSS 配分を設定する方法」を参照してください。prctl コマンドで指定された制限には持続性がありません。システムが再起動されると、制限は無効になります。

Solaris 10 11/06 以降: 構成可能な特権

ゾーンの起動時に、safe 特権のデフォルトセットが構成に含められます。これらの特権は、ゾーン内の特権プロセスがシステムのほかの非大域ゾーン内のプロセスや大域ゾーン内のプロセスに影響を及ぼすことを防ぐため、安全と見なされます。 zonecfg コマンドを使用して、次の操作を実行できます。


注 –

わずかですが、この時点でゾーンのデフォルト特権セットから削除できない特権があります。同じように、特権セットに追加できない特権もあります。


詳細は、「非大域ゾーン内の特権」「ゾーンの構成方法」、および privileges(5) のマニュアルページを参照してください。

ゾーンのコメントの追加

attr 資源の型を使ってゾーンのコメントを追加できます。詳細は、「ゾーンの構成方法」を参照してください。