Sun Cluster データサービス開発ガイド (Solaris OS 版)

InitFiniBoot オプションメソッドの使用

3 つのオプションメソッドである InitFiniBoot を使用すると、RGM がリソースで初期化コードと終了コードを実行できるようになります。

Init メソッドの使用

次の条件のいずれかの結果としてリソースが管理下に置かれる場合、RGM は Init メソッドを実行して、1 回だけリソースの初期化を実行します。

Fini メソッドの使用

リソースが RGM によって管理されなくなったとき、RGM は Fini メソッドを実行して、リソースのクリーンアップを行います。通常、Fini メソッドは Init メソッドによって実行された初期化をすべて取り消します。

RGM は、次の条件が成り立つときに、リソースが管理されなくなったノードまたはゾーン上で Fini を実行します。

「ノードリスト」とは、リソースグループの Nodelist またはリソースタイプの Installed_nodes リストのことです。「ノードリスト」がリソースグループの Nodelist を指すのかリソースタイプの Installed_nodes リストを指すのかは、リソースタイプの Init_nodes プロパティーの設定によって決まります。Init_nodes プロパティーは RG_nodelist または RT_installed_nodes に設定できます。ほとんどのリソースタイプでは、Init_nodes がデフォルトの RG_nodelist に設定されています。この場合は、Init メソッドも Fini メソッドも、リソースグループの Nodelist で指定されたノードまたはゾーン上で実行されます。

Init メソッドが実行する初期化のタイプによって、実装する Fini メソッドが実行する必要のあるクリーンアップのタイプが次のように定義されます。

Fini メソッドを実装する際のガイドライン

実装する Fini メソッドは、ノード固有の構成だけをクリーンアップするのか、それともノード固有の構成とクラスタ全体にわたる構成の両方をクリーンアップするのかを判断する必要があります。

リソースが特定のノードまたはゾーン上でのみ、管理されなくなった場合、Fini メソッドはノード固有のローカル構成をクリーンアップできます。しかし、ほかのノード上ではリソースは引き続き管理されているため、Fini メソッドはクラスタ全体にわたるグローバル構成をクリーンアップしてはなりません。リソースがクラスタ全体にわたって管理されなくなった場合には、Fini メソッドはノード固有の構成とグローバル構成の両方についてクリーンアップを実行できます。実装する Fini メソッドのコードは、Fini メソッドを実行するローカルのノードまたはゾーンがリソースグループのノードリストに含まれているかどうかを調べることによって、これら 2 つの場合を区別できます。

ローカルのノードまたはゾーンがリソースグループのノードリストに出現する場合は、リソースが削除されようとしているか、管理されない状態に移行しようとしています。リソースはどのノードまたはゾーン上でもアクティブでなくなっています。この場合、実装する Fini メソッドでは、ローカルノード上のノード固有の構成だけでなく、クラスタ全体にわたる構成についてもクリーンアップする必要があります。

ローカルのノードまたはゾーンがリソースグループのノードリストに出現しない場合は、Fini メソッドでそのローカルのノードまたはゾーン上のノード固有の構成をクリーンアップできます。しかし、Fini メソッドでクラスタ全体にわたる構成をクリーンアップしてはなりません。この場合、ほかのノードまたはゾーン上でリソースが引き続きアクティブになっています。

また、Fini は呼び出し回数に依存しないようにコーディングする必要もあります。つまり、Fini メソッドが以前の実行でリソースをクリーンアップした場合でも、以降の Fini 呼び出しは正常に終了します。

Boot メソッドの使用

RGM は、クラスタに結合した (つまり、ブートまたはリブートしたばかりの) ノードまたはゾーンで、Boot メソッドを実行します。

Boot メソッドは、通常、Init と同じ初期化を実行します。Boot は呼び出し回数に依存しないようにコーディングする必要があります。つまり、Boot メソッドが以前の実行でリソースを初期化した場合でも、以降の Boot 呼び出しは正常に終了します。