Go to main content

Oracle® Solaris ゾーンの作成と使用

印刷ビューの終了

更新: 2018 年 8 月
 
 

非大域ゾーンが含まれているシステムのモニタリング

通常、大域ゾーンでは非大域ゾーンとそのプロセスを表示できますが、非大域ゾーンでは互いのプロセスを表示することはできません。ゾーンが含まれていないシステムと同様に、リモートで表示できる情報の制限、コアファイルの作成、時間の設定、DTrace の実行、および統計の表示を行うことができます。

大域ゾーンの可視性とアクセス

大域ゾーンは、システムのデフォルトゾーンとしても、システム規模の管理制御用ゾーンとしても機能します。この二重の役割と関係のある管理上の問題が存在します。ゾーン内部のアプリケーションはほかのゾーン内のプロセスおよびほかのシステムオブジェクトにアクセスするため、管理操作の効果が予期したものよりも大きい場合があります。たとえば、サービスの停止スクリプトでは、プロセスを終了させるためのシグナルの送信にしばしば pkill が使用されます。大域ゾーンからこの種のスクリプトを実行すると、システム内の該当するすべてのプロセスが、ゾーンに関係なくシグナルを送信します。

多くの場合、システム規模の範囲が必要になります。たとえば、システム規模のリソース使用状況をモニターする場合、システム全体のプロセス統計情報を表示する必要があります。大域ゾーンのアクティビティーだけのビューには、システムリソースの一部または全体を共有可能なシステム内のほかのゾーンからの関連情報が欠落しています。この種のビューは、CPU などのシステムリソースがリソース管理機能を使用して厳密に区分されていない場合、特に重要です。

このため、大域ゾーン内のプロセスから、非大域ゾーン内のプロセスおよびほかのオブジェクトを監視できます。これにより、この種のプロセスがシステム規模の可観測性を備えることが可能になります。ほかのゾーン内のプロセスを制御したりシグナルを送信したりする機能は、PRIV_PROC_ZONE 特権により制限されます。この特権は、特権のないプロセスに設定された制限をオーバーライドできるため、PRIV_PROC_OWNER に類似しています。この場合の制限は、大域ゾーン内の特権のないプロセスはほかのゾーン内のプロセスにシグナルを送信したり制御したりすることはできない、というものです。これは、プロセスのユーザー ID が一致するか、動作しているプロセスが PRIV_PROC_OWNER 特権を保持している場合でも適用されます。PRIV_PROC_ZONE 特権を、そうでなければ特権の付与されたプロセスから削除して、大域ゾーンへの操作に制限できます。

zoneidlist を使用したプロセスの照合については、pgrep(1) および pkill(1) のマニュアルページを参照してください。

ゾーン内でのプロセス ID の可視性

同一ゾーン内のプロセスだけが、killpriocntl コマンドなどの、プロセス ID を指定するシステムコールインタフェースを介して表示されます。詳細は、kill(1) および priocntl(1) のマニュアルページを参照してください。

ゾーンのシステム可観測性

大域ゾーンで ps コマンドを実行する場合、ユーザーおよびグループ名は大域ゾーンのネームサービスを使用して解決されます。システムの非大域ゾーンで実行しているプロセスは、大域ゾーンのネームサービスに一致したユーザーおよびグループ名を表示します。大域ゾーンでのこれらの名前は、非大域ゾーンのネームサービスで構成された名前とは異なる可能性があります。

    ps コマンドに、ゾーンに関する次の変更が加えられました。

  • 出力形式の指定には –o オプションを使用します。このオプションを使用すると、プロセスのゾーン ID またはプロセスを実行中のゾーンの名前を出力できます。

  • 指定されたゾーン内のプロセスだけをリスト表示するには、–zzonelist オプションを使用します。ゾーンの指定には、ゾーン名またはゾーン ID を使用できます。このオプションは、大域ゾーン内でコマンドを実行する場合にのみ有用です。

  • プロセスに関連するゾーンの名前を出力するには –Z オプションを使用します。列見出し ZONE の下に名前が出力されます。

詳細は、ps(1) のマニュアルページを参照してください。

–z zonename オプションが、次の Oracle Solaris ユーティリティーに追加されました。このオプションを使用して情報をフィルタ処理し、指定したゾーンだけを含めることができます。

  • ipcs -z zonename - ipcs(1) のマニュアルページを参照してください

  • pgrep -z zonename - pgrep(1) のマニュアルページを参照してください

  • ptree -z zonename - proc(1) のマニュアルページを参照してください

  • prstat -z zonename - prstat(8) のマニュアルページを参照してください

コマンドに加えられたすべての変更の一覧は、図 8, 表 8, ゾーンがインストールされている Oracle Solaris システムで使用するために変更されたコマンドを参照してください。

zonestat ユーティリティーを使用したアクティブなゾーンの統計情報の報告

zonestat ユーティリティーを使用する場合は、zonestat(1) のマニュアルページおよび 非大域ゾーンのリソースの使用状況の報告を参照してください。

zonestat ユーティリティーは、現在実行中のゾーンの CPU、メモリー、およびリソース制御の使用効率について報告します。zonestat ユーティリティーは、指定された間隔で一連のレポートを出力します。必要に応じて、このユーティリティーは 1 つ以上のサマリーレポートを出力できます。

zonestat ユーティリティーは、排他的 IP ゾーン内のネットワーク帯域幅の使用効率についても報告を生成します。排他的 IP ゾーンには、独自の IP に関連付けられた状態と 1 つ以上の専用のデータリンクが保持されます。

非大域ゾーンから実行すると、そのゾーンから参照可能なプロセッサセットのみが報告されます。非大域ゾーンの出力には、すべてのメモリーリソースおよび制限リソースが含まれます。

非大域ゾーンで zonestat サービスを使用するには、大域ゾーンの zonestat サービスがオンラインである必要があります。各非大域ゾーンの zonestat サービスは、大域ゾーンの zonestat サービスからシステム構成および使用効率データを読み取ります。

zonestatd システムデーモンは、システムブート時に開始されます。このデーモンは、ゾーンによるシステムリソースの使用をモニターするほか、psrset プロセッサセット、プールプロセッサセット、リソース制御設定などのゾーンおよびシステム構成情報をモニターします。構成できるコンポーネントはありません。

fsstat ユーティリティーを使用した非大域ゾーンのモニタリング

fsstat ユーティリティーは、ゾーン単位で kstats (アグリゲーションを含む) を収集して出力します。デフォルトでは、このユーティリティーは実行中のすべてのゾーンの集計を報告します。fstype ごとの kstat がそれぞれのゾーン用に生成されます。大域ゾーンの kstat は、その排他的なアクティビティーを報告します。大域ゾーンでは、システム上のすべてのゾーンの kstat を表示できます。非大域ゾーンでは、ユーティリティーが実行されているゾーンに関連付けられた kstats のみが表示されます。非大域ゾーンでは、ほかのゾーンのファイルシステムアクティビティーをモニターできません。

詳細は、fsstat(8) のマニュアルページおよび ゾーンごとのファイルシステム統計情報の報告を参照してください。

非大域ゾーン内での DTrace の実行

dtrace_proc 特権と dtrace_user 特権のみを必要とする DTrace プログラムは、非大域ゾーンで実行できます。非大域ゾーンで使用できる特権のセットにこれらの特権を追加するには、zonecfg limitpriv プロパティーを使用します。手順については、非大域ゾーンに DTrace 特権を追加する方法を参照してください。

dtrace_proc によってサポートされるプロバイダは、fasttrappid です。dtrace_user によってサポートされるプロバイダは、profilesyscall です。DTrace のプロバイダおよびアクションの有効範囲は、ゾーンに制限されます。

詳細は、非大域ゾーン内の特権も参照してください。

ゾーン内のコアファイル

coreadm コマンドを使用して、異常終了するプロセスにより生成されるコアファイルの名前と場所を指定できます。%z 変数を指定することで、プロセスが実行されたゾーンの zonename を含むコアファイルパスを生成できます。パス名は、ゾーンのルートディレクトリに対する相対パスです。

詳細は、coreadm(8) および core(5) のマニュアルページを参照してください。

非大域ゾーンのノード名

ノード名は、システム名のローカルソースです。ノード名はゾーン名などのように一意である必要があります。ゾーンのノード名は、ゾーン管理者が設定できます。たとえば、大域ゾーンでゾーン名を設定します。

$ hostname kzone1

ホスト名を表示するには、hostname コマンドを引数なしで入力します。例:

$ hostname
kzone1