DLPAR スクリプトによって実行されるアクション

アプリケーション・スクリプトは、追加と除去の両方の操作について開始されます。

リソースを除去するときには、アプリケーションによってもたらされた、リソースを除去する上で障害となる条件を解決するためのスクリプトが提供されます。 特定のプロセッサー・バインディングが存在したり固定可能メモリーが不足していたりすると、除去要求が失敗することがあります。 これらの状況を識別して、それを解決するスクリプトを作成できるようにするために、コマンドのセットが用意されています。

DLPAR 依存関係を識別して解決するには、以下のコマンドを使用できます。
  • ps コマンドは、bindprocessor 接続と plock システム・コール状況をプロセス・レベルで表示します。
  • bindprocessor コマンドは、オンライン・プロセッサーを表示し、新規接続を作成します。
  • kill コマンドは、プロセスにシグナルを送信します。
  • ipcs コマンドは、 固定された共有メモリー・セグメントをプロセス・レベルで表示します。
  • lsrset コマンドは、プロセッサー・セットを表示します。
  • lsclass コマンドは、プロセッサー・セットを含む可能性がある ワークロード・マネージャー ・クラスを表示します。
  • chclass コマンドは、クラス定義を変更するために使用されます。

スクリプトは、スケーラビリティーや一般的なパフォーマンスに関する問題にも使用することができます。 リソースが除去されるときに、使用されるスレッドの数やアプリケーション・バッファーのサイズを削減することができます。 リソースが追加されるときに、これらのパラメーターを増やすことができます。 こうした調整を動的に行うために使用できるコマンドを提供し、それをこれらのスクリプトで呼び出すことができます。 DLPAR 操作のコンテキスト内でこれらのコマンドを開始するためのスクリプトをインストールします。

DLPAR スクリプトの高水準構造

この項では、スクリプトについて概説します。スクリプトには、Perl スクリプト、シェル・スクリプト、またはコマンドがあります。 以下のコマンドを提供するには、アプリケーション・スクリプトが必要です。
  • scriptinfo

    スクリプトのバージョン、日付、およびベンダーを識別します。 これは、スクリプトがインストールされるときに呼び出されます。

  • 登録

    スクリプトによって管理されるリソースを識別します。 スクリプトがリソース名 cpu, memを戻す場合、 capacityまたは var_weightDLPAR がプロセッサーとメモリーを再構成しようとすると、スクリプトが自動的に開始されます。 ライセンス済み容量、または可変の重み。 登録コマンドは、スクリプトが DLPAR サブシステムにインストールされるときに呼び出されます。

  • の使用法 resource_name

    アプリケーションによるリソースの使用法を説明する情報が戻されます。 説明は、ユーザーがスクリプトをインストールするかアンインストールするかを決定できるよう、具体的なものでなければなりません。 これは、影響を受けるアプリケーションのソフトウェア機能を識別している必要があります。 usage コマンドは、register コマンドで識別された各リソースに対して呼び出されます。

  • チェックポイント・リリース resource_name

    DLPAR サブシステムが、指定されたリソースの除去を続行するかどうかを示します。 アプリケーションが DLPAR対応ではなく、アプリケーションがシステムの操作にとって重要と見なされる場合は、スクリプトによってリソースを除去してはならないことが示されることがあります。

  • プレリリース resource_name

    アプリケーションを再構成、中断、または終了することによって、このアプリケーションが保持している指定されたリソースが解放されるようにします。

  • リリース後 resource_name

    アプリケーションを再開または再始動します。

  • undoprerel別 resource_name

    エラーが発生し、リソースが解放されない場合に開始されます。

  • チェック獲得 resource_name

    DLPAR サブシステムがリソースの追加を続行するかどうかを示します。 これは、ライセンス・マネージャーによって使用され、そのリソースがライセンスされるまで CPU などの新規リソースの追加を防ぎます。

  • preacquire リソース名

    リソースの追加の準備するために使用されます。

  • undopreacquire リソース名

    preacquire フェーズで、またはイベントに対して処置が講じられたときに、エラーが発生すると開始されます。

  • ポスタスタック resource_name

    アプリケーションを再開または始動します。

  • preaccevent リソース名

    DLPAR 更新を準備するために使用します。

  • postaccevent リソース名

    アプリケーションを再開または始動します。

  • undopreaccevent リソース名

    preaccevent フェーズで、またはイベントに対して処置が講じられたときに、エラーが発生すると開始されます。

  • pretopolgyupdate リソース名

    システム・トポロジー更新の準備をするのに 使用されます。

  • postopolgyupdate resource_name

    アプリケーションを再開または始動します。

drmgr コマンドを使用したアプリケーション・スクリプトのインストール

drmgr コマンドは、 インストール済みスクリプト情報の内部データベースを保守します。 この情報はシステムのブート時に収集され、 新規スクリプトがインストールまたはアンインストールされたときにリフレッシュされます。 この情報は、scriptinforegister、および usage コマンドから派生します。 スクリプトのインストールは、drmgr コマンドによってサポートされます。このコマンドは、指定されたスクリプトを後でアクセスできるようにスクリプト・リポジトリーにコピーします。 このリポジトリーのデフォルト・ロケーションは /usr/lib/dr/scripts/all です。 ワークロード区画では、スクリプト・リポジトリーのデフォルト・ロケーションは /var/dr/scripts です。 このリポジトリーには代替の位置を指定することもできます。 スクリプトが使用されるマシンを決定するには、スクリプトのインストール時にターゲットのホスト名を指定します。

ベース・リポジトリーの位置を指定するには、以下のコマンドを使用します。
drmgr -R base_directory_path
スクリプトをインストールするには、以下のコマンドを使用します。
drmgr -i script_name [-f] [-w mins] [-D hostname]
定義されているフラグを以下に示します。
  • -i フラグは、スクリプトの名前を指定するために使用します。
  • -f フラグは、登録済みのスクリプトを置き換えるために使用します。
  • -w フラグは、スクリプトが実行される分数を指定するために使用します。 これは、ベンダーによって指定された値に対する指定変更オプションとして提供されています。
  • -D フラグは、特定のホストで使用するスクリプトを登録するために使用します。
スクリプトをアンインストールするには、以下のコマンドを使用します。
drmgr -u script_name [-D hostname]
定義されているフラグを以下に示します。
  • -u フラグは、アンインストールするスクリプトを示すために使用されます。
  • -D フラグは、特定のディレクトリー用に登録されているスクリプトをアンインストールするために使用します。
既にインストールされているスクリプトに関する情報を表示するには、以下のコマンドを使用します。
drmgr -l

スクリプトの命名規則

スクリプト名は、ベンダー名と制御されるサブシステムで構成することをお勧めします。 システム管理者は、そのスクリプト名に sysadmin という接頭部を付ける必要があります。 例えば、 ワークロード・マネージャー 割り当てを制御するスクリプトを提供するシステム管理者は、そのスクリプトに sysadmin_wlmという名前を付けることができます。

スクリプト実行環境と入力パラメーター

スクリプトは、次のような実行環境で開始されます。
  • プロセス UID がスクリプトの UID に設定されている。
  • プロセス GID がスクリプトの GID に設定されている。
  • PATH 環境変数が /usr/bin:/etc:/usr/sbin ディレクトリーに設定されている。
  • LANG 環境変数は、設定されている場合と設定されていない場合がある。
  • 現行作業ディレクトリーは /tmpに設定されます。
  • コマンド引数および環境変数は、 DLPAR イベントを記述するために使用されます。

スクリプトはコマンド引数と環境変数を介して入力パラメーターを受け取り、 標準出力に name=value の対を書き込む (name=value の対は、改行で区切られる) ことによって出力を出します。 name は期待される戻りデータ項目の名前として定義されており、 value はそのデータ項目に関連した値です。 テキスト・ストリングは、DR_ERROR="text" のように括弧で囲む必要があります。 環境変数と name=value の対はすべて、アプリケーション・スクリプトとの通信用に予約されている DR_ で始まっていなければなりません。

スクリプトは、DR_ERROR name=value 環境変数対を使用してエラー説明を出力します。

スクリプトのコマンド引数を調べて、 DLPAR 操作のフェーズ、アクションのタイプ、および保留中の DLPAR 要求の対象となるリソースのタイプを判別することができます。 例えば、スクリプト・コマンドの引数が checkrelease memの場合、フェーズは check、アクションは remove、リソースのタイプは memoryになります。 関係する特定のリソースは、環境変数を検査することによって識別できます。

メモリーの追加または除去に関して、以下の環境変数が設定されます。
注: 以下の説明では、1 つのフレームは 4 KB に相当します。
  • DR_FREE_FRAMES=0xFFFFFFFF

    現在システム内にある空きフレームの数 (16 進数形式)。

  • DR_MEM_SIZE_COMPLETED=n

    正常に追加または除去されたメガバイト数 (10 進数形式)。

  • DR_MEM_SIZE_REQUEST=n

    メモリー要求のサイズ (メガバイト単位、10 進数形式)。

  • 「DR_PINNABLE_FRAMES」=0xFFFFFFFF

    現在システム内にある固定可能フレームの合計数 (16 進数形式)。 このパラメーターは、メモリーを除去する際に貴重な情報を提供します。 この情報を使用すれば、いつシステムが固定可能メモリーの限界に達するか (メモリー除去要求の失敗の主な原因) を判別できます。

  • DR_TOTAL_FRAMES=0xFFFFFFFF

    現在システム内にあるフレームの合計数 (16 進数形式)。

プロセッサーの追加または除去に関して、以下の環境変数が設定されます。
  • DR_BCPUID=N

    追加または除去するプロセッサーのバインド CPU ID (10 進数形式)。 このプロセッサーに対して bindprocessor 接続が行われていても、 必ずしもその接続を取り消す必要はありません。 取り消す必要があるのは、これがシステム内の N 番目のプロセッサーである場合のみです。なぜなら、N 番目のプロセッサーの位置は中央処理装置 (CPU) 除去操作で常に除去されるプロセッサーの位置だからです。 事実上、バインド ID は 0 から N の範囲で連続し、オンラインのプロセッサーだけを識別するようになっています。 オンラインの CPU の番号を識別するには、bindprocessor コマンドを使用します。

  • DR_LCPUID=N

    追加または除去するプロセッサーの論理中央処理装置 (CPU) ID (10 進数形式)。

Micro-Partitioning® では、以下の環境変数が設定されます。
DR_CPU_CAPACITY=N
共有物理プロセッサーの区画の割合。
DR_VAR_WEIGHT=N
共有プール・アイドル・サイクルの割り振り方を決定する、 区画の相対的な優先順位。
DR_CPU_CAPACITY_DELTA=N
共有物理プロセッサーの区画割合の現行値と、 この操作が完了したときに変更される値との差。
DR_VAR_WEIGHT_DELTA=N
区画の可変の重みの現行値と、 この操作が完了したときに変更される値との差。

オペレーターは、 HMC で詳細レベルを使用して現在の DLPAR 要求に関する情報を表示し、発生したイベントを監視することができます。 このパラメーターは、 DR_DETAIL_LEVEL=N 環境変数を使用してスクリプトに指定されます。ここで、 N0 から 5までの範囲を指定できます。 デフォルト値はゼロ (0) であり、情報がないことを示します。 値 1 は、オペレーティング・システム用に予約済みであり、上位フローを表すために使用されます。 残りのレベル (2 から 5) は、情報を提示するためにスクリプトで使用することができます。 値が大きい程詳細になると想定されます。

スクリプトは、標準出力に以下の name=value の対を書き込むことによって、詳細なデータを出力します。
name=value の対 説明
DR_LOG_ERR=message LOG_ERR 環境変数の syslog レベルでメッセージをログに記録します。
DR_LOG_WARNING=message LOG_WARNING 環境変数の syslog レベルでメッセージをログに記録します。
DR_LOG_INFO=message LOG_INFO 環境変数の syslog レベルでメッセージをログに記録します。
DR_LOG_EMERG=message LOG_EMERG 環境変数の syslog レベルでメッセージをログに記録します。
DR_LOG_DEBUG=message LOG_DEBUG 環境変数の syslog レベルでメッセージをログに記録します。

さらに、オペレーターは、syslog 機能を使用して保存される情報のログをセットアップすることもできます。その場合は上記の情報もその機能に経路指定されます。 この場合は syslog 機能を構成する必要があります。

DLPAR スクリプト・コマンド

このセクションでは、 DLPARのスクリプト・コマンドについて説明します。
scriptinfo
インストールされているスクリプトに関する情報、例えばその作成日やリソースなどを出力します。
登録
スクリプトによって管理されるリソースのリストを収集する場合に開始されます。 drmgr コマンドはこれらのリストを使用して、 再構成するリソースのタイプに基づいてスクリプトを開始します。
使用量
指定されたリソースによって提供されるサービスについて説明する、人間が読める文字列を出力します。 このメッセージのコンテキストは、アプリケーションへの影響、および指定されたリソースが再構成されたときにアプリケーションが提供するサービスをユーザーが判別するのに役立つはずです。 このコマンドは、スクリプトがインストールされたときに開始され、 このコマンドによって出力される情報は、drmgr コマンドによって使用される内部データベースで保守されます。 drmgr コマンドの - -l リスト・オプションを使用して、情報を表示します。
checkrelease
リソースを除去するとき、drmgr コマンドはそのリソースの除去による影響を見積もります。 これには、 checkrelease コマンドを実装する DLPAR スクリプトの実行も含まれます。 各 DLPAR スクリプトは、そのアプリケーションの特性を評価し、リソースの除去が関連アプリケーションに影響を与えるかどうかを、スクリプトの戻りコードを使用する drmgr コマンドに示すことができます。 リソースの除去が安全に行えると判断された場合は、「成功」の終了状況が戻されます。 そのリソースがアプリケーションの実行に極めて重要で、アプリケーションの実行を妨げることなく再構成することが不可能な状態にある場合は、スクリプトはエラーを戻すことによってそのリソースを除去すべきでないことを示します。 ユーザーが FORCE オプションを指定すると、そのフェーズを含む DLPAR 操作全体に適用されます。 drmgr コマンドは checkrelease コマンドをスキップし、 prerelrelease コマンドで始まります。
prerelease
リソースが解放される前に、 DLPAR スクリプトは、アプリケーションからのリソースの使用を削減または除去することによって、指定されたリソースの解放を支援するように指示されます。 しかし、アプリケーションからリソースを解放できないことを検出すると、 スクリプトはエラーを戻すことによってそのアプリケーションからリソースが除去されないことを示します。 このとき、システムが強制または非強制の実行モードでリソースを除去しようとするのは防止されません。スクリプトは、prerelease コマンドによってアクションが実行されたかどうかに関係なく、post フェーズで呼び出されます。 オペレーティング・システムによって実行されるアクションは安全です。 リソースを整然と除去できないと、操作は失敗します。

DLPAR スクリプトは、エラーが発生した場合に post フェーズで復元できるように、 prerel簡易 コマンドによって実行されたアクションを内部的に記録する必要があります。 再ディスカバリーがインプリメントされていれば、これも post フェーズで管理することができます。 force オプションが指定されている場合、アプリケーションは厳格な処置を講じる必要がある可能性があります。

postrelease
リソースが正常に解放されると、インストールされている DLPAR スクリプトごとに postrelease コマンドが開始されます。 各 DLPAR スクリプトは、このステップで必要なすべての後処理を実行します。 一時停止されていたアプリケーションは再始動する必要があります。

発生した可能性のあるエラーの指示がユーザーにも報告されますが、呼び出し側プログラムは postrelease コマンドによって報告されたエラーを無視し、操作は正常と見なされます。 DR_ERROR 環境変数メッセージはこの目的のために用意されており、 正しく再構成されなかったアプリケーションをこのメッセージが識別するようになっています。

undoprerelease
drmgr コマンドが DLPAR スクリプトに対して drmgr コマンドによって発行された後、 drmgr コマンドがリソースの除去または解放に失敗すると、古い状態に戻そうとします。 このプロセスの一部として、 drmgr コマンドは、 DLPAR スクリプトに undoprerel簡易 コマンドを発行します。 undoprerelrelease コマンドは、現在の DLPAR 要求でリソースを解放するためにスクリプトが以前に呼び出された場合にのみ開始されます。 この場合、スクリプトは、スクリプトの prerelease コマンドによって実行されたアクションを取り消す必要があります。 この目的のために、スクリプトはそのアクションを文書化するか、あるいはシステムの状態を再検出してアプリケーションを再構成する機能を提供することで、事実上 DLPAR イベントが発生しないようにすることが必要になる場合があります。
checkacquire
このコマンドは、新規リソース獲得シーケンスで呼び出される最初の DLPAR スクリプト・ベースのコマンドです。 これは、追加する特定のリソースのタイプをサポートしていることを、以前に示していたインストール済みの各スクリプトに対して呼び出されます。 checkacquire フェーズの主な目的の 1 つは、プロセッサーの追加を無効にすることのできる、プロセッサー・ベースのライセンス・マネージャーを使用可能にすることです。 FORCE 環境変数の値に関係なく、checkacquire コマンドは常に開始され、呼び出し側プログラムはスクリプトの戻りコードを受け入れます。 スクリプトまたは DLPAR認識プログラムが検査フェーズで DLPAR 操作に失敗すると、ユーザーは新しいプロセッサーの追加を強制できません。

つまり、FORCE 環境変数は他のフェーズには適用されますが、checkacquire コマンドには実際には適用されません。 preacquire フェーズにおいて、 これは、アプリケーションを再構成するときにスクリプトをどの程度進展すべきかを示します。 force オプションをスクリプトで使用すると、リソースの解放時と同様に、アプリケーションの停止と再始動を行うポリシーを制御できます。これは、ほとんどの場合 DLPARセーフの問題です。

preacquire
checkacquire フェーズでエラーが報告されていないと考えられる場合、 システムは preacquire フェーズに進みます。このフェーズでは、同じスクリプト・セットが呼び出され、preacquire コマンドを通してサポートされる新規リソースの獲得を準備します。 エラーが報告されたときにユーザーが FORCE 環境変数を指定していない場合を除き、これらの各スクリプトは、システムが実際にリソースの統合を試みる前に呼び出されます。 FORCE 環境変数が指定されている場合、スクリプトが示す戻りコードとは関係なく、システムは統合段階に進みます。 FORCE 環境変数が指定されている場合は、エラーは検出されません。なぜなら、すべてのエラーはアプリケーションを構成解除することによって回避可能であり、これは FORCE 環境変数が指定されているときの慣例であるためです。 エラーが発生したときに FORCE 環境変数が指定されていない場合、 システムは undopreacquire フェーズに進みますが、再実行されるのは、現行フェーズ内の以前に実行されたスクリプトのみです。 この後者のフェーズでは、スクリプトで、リカバリー・アクションを実行するよう指示されます。
undopreacquire
undopreacquire フェーズは、スクリプトがリカバリー操作を実行できるようにするために用意されています。 undopreacquire フェーズで呼び出された場合、 スクリプトは preacquire コマンドを正常に完了したと見なすことができます。
postacquire
postacquire コマンドは、システムによってリソースが正常に統合された後に実行されます。 check フェーズおよび pre フェーズで以前に呼び出された各 DLPAR スクリプトが再び呼び出されます。 このコマンドは、新規リソースをアプリケーションに統合するために使用されます。 例えば、アプリケーションは新規スレッドを作成したり、そのバッファーを拡張したりすることができます。 また、前に一時停止されていた場合は再始動しなければならない可能性もあります。
checkmigrate
このコマンドは、マイグレーション・シーケンスで呼び出される最初の DLPAR スクリプト・ベースのコマンドです。 これは、追加する特定のリソースのタイプをサポートしていることを、以前に示していたインストール済みの各スクリプトに対して呼び出されます。 FORCE 環境変数の値に関係なく、checkmigrateコマンドは常に開始され、呼び出し側プログラムはスクリプトの戻りコードを受け入れます。 スクリプトまたは DLPAR 対応プログラムが check フェーズで DLPAR 操作に失敗した場合、ユーザーは区画の移行を強制実行できません。
premigrate
checkmigrate フェーズでエラーが報告されていないと想定すると、システムは premigrate フェーズに進みます。このフェーズでは、同じスクリプト・セットが開始され、区画の準備が行われます。 実際にシステムが区画の移行を試みる前に、これらの各スクリプトが呼び出されます。 スクリプトが示す戻りコードとは関係なく、システムは移行段階に進みます。 エラーが発生した場合、システムは undopremigrate フェーズに進みますが、再実行されるのは、現行フェーズ内の以前に実行されたスクリプトのみです。 この後者のフェーズでは、スクリプトで、リカバリー・アクションを実行するよう指示されます。
undopremigrate
undopremigrate フェーズは、スクリプトがリカバリー操作を実行できるようにするために用意されています。 undopremigrate フェーズで呼び出された場合、 スクリプトは premigrate コマンドを正常に完了したと見なすことができます。
postmigrate
postmigrate コマンドは、区画が正常に移行された後に実行されます。 check フェーズおよび pre フェーズで以前に呼び出された各 DLPAR スクリプトが再び呼び出されます。
pretopologyupdate
pretopologyupdate コマンドは、プロセッサーやメモリーの追加または削除などの、区画のトポロジーに影響するアクションが行われる前に実行されます。 このコマンドは、トポロジー・アクションが実行されること、およびそのアクションは失敗できないことをスクリプトに通知することを目的としています。 スクリプトが示す戻りコードとは関係なく、システムは統合段階に進みます。
posttopologyupdate
posttopologyupdate コマンドは、区画がトポロジー・アクションを正常に完了した後に実行されます。 pre フェーズで以前に呼び出された各 DLPAR スクリプトが再び呼び出されます。
checkhibernate
このコマンドは、ハイバネーション・シーケンスで呼び出される最初の DLPAR スクリプト・ベースのコマンドです。 これは、追加する特定のリソースのタイプをサポートしていることを、以前に示していたインストール済みの各スクリプトに対して呼び出されます。 FORCE 環境変数の値に関係なく、checkhibernate コマンドは常に開始され、呼び出し側プログラムはスクリプトの戻りコードを受け入れます。 スクリプトまたは DLPAR 対応プログラムが check フェーズで DLPAR 操作に失敗した場合、ユーザーは区画のハイバネーションを強制実行できません。
prehibernate
checkhibernate フェーズでエラーが報告されていないと想定すると、システムは prehibernate フェーズに進みます。このフェーズでは、同じスクリプト・セットが開始され、区画の準備が行われます。 実際にシステムが区画のハイバネーションを試みる前に、これらの各スクリプトが呼び出されます。 スクリプトが示す戻りコードとは関係なく、システムはハイバネーション段階に進みます。 エラーが発生した場合、システムは undohibernate フェーズに進みますが、再実行されるのは、現行フェーズ内の以前に実行されたスクリプトのみです。 この後者のフェーズでは、スクリプトで、リカバリー・アクションを実行するよう指示されます。
undohibernate
undohibernate フェーズは、スクリプトがリカバリー操作を実行できるようにするために用意されています。 checkhibernate フェーズで呼び出された場合、 スクリプトは checkhibernate コマンドを正常に完了したと見なすことができます。
posthibernate
posthibernate コマンドは、区画が正常にハイバネーションされた後に実行されます。 check フェーズおよび pre フェーズで以前に呼び出された各 DLPAR スクリプトが再び呼び出されます。
preaccevent
このコマンドは、暗号化アクセラレーター DLPAR シーケンスで呼び出される最初の DLPAR スクリプト・ベースのコマンドです。 追加またはリリースされる特定タイプのリソースをサポートすることが以前に示されたインストール済みスクリプトごとに、このコマンドが呼び出されます。 後続のアクションが暗号化アクセラレーターの追加であるかリリースであるかは、このイベントの時点では不明です。 そのアクションは、以下の post フェーズのいずれかで指定されます。
postaccevent
postaccevent コマンドは、リソースがシステムにより正常に処理された後で実行されます。 pre フェーズで以前に呼び出された各 DLPAR スクリプトが再び呼び出されます。 このコマンドは、新しいリソース状態をアプリケーションに取り込むために使用されます。
undoaccevent
undoaccevent フェーズは、スクリプトがリカバリー操作を実行できるようにするために用意されています。 undoaccevent フェーズでスクリプトが呼び出された場合、preaccevent コマンドは正常に完了しています。