3 つのオプションメソッドである Init、Fini、Boot を使用すると、RGM がリソースで初期化コードと終了コードを実行できるようになります。
次の条件のいずれかの結果としてリソースが管理下に置かれる場合、RGM は Init メソッドを実行して、1 回だけリソースの初期化を実行します。
リソースが属しているリソースグループを、管理されていない状態から管理されている状態に切り替える。
すでに管理されているリソースグループでリソースが作成される。
リソースが RGM によって管理されなくなったとき、RGM は Fini メソッドを実行して、リソースのクリーンアップを行います。通常、Fini メソッドは Init メソッドによって実行された初期化をすべて取り消します。
RGM は、次の条件が成り立つときに、リソースが管理されなくなったノードまたはゾーン上で Fini を実行します。
リソースのあるリソースグループが管理されない状態に切り替わる。この場合、RGM はノードリスト内のすべてのノードおよびゾーン上で Fini メソッドを実行します。
管理されているリソースグループからリソースが削除される。この場合、RGM はノードリスト内のすべてのノードおよびゾーン上で Fini メソッドを実行します。
ノードまたはゾーンが、リソースのあるリソースグループのノードリストから削除される。この場合、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 メソッドを実行するローカルのノードまたはゾーンがリソースグループのノードリストに含まれているかどうかを調べることによって、これら 2 つの場合を区別できます。
ローカルのノードまたはゾーンがリソースグループのノードリストに出現する場合は、リソースが削除されようとしているか、管理されない状態に移行しようとしています。リソースはどのノードまたはゾーン上でもアクティブでなくなっています。この場合、実装する Fini メソッドでは、ローカルノード上のノード固有の構成だけでなく、クラスタ全体にわたる構成についてもクリーンアップする必要があります。
ローカルのノードまたはゾーンがリソースグループのノードリストに出現しない場合は、Fini メソッドでそのローカルのノードまたはゾーン上のノード固有の構成をクリーンアップできます。しかし、Fini メソッドでクラスタ全体にわたる構成をクリーンアップしてはなりません。この場合、ほかのノードまたはゾーン上でリソースが引き続きアクティブになっています。
また、Fini は呼び出し回数に依存しないようにコーディングする必要もあります。つまり、Fini メソッドが以前の実行でリソースをクリーンアップした場合でも、以降の Fini 呼び出しは正常に終了します。
RGM は、クラスタに結合した (つまり、ブートまたはリブートしたばかりの) ノードまたはゾーンで、Boot メソッドを実行します。
Boot メソッドは、通常、Init と同じ初期化を実行します。Boot は呼び出し回数に依存しないようにコーディングする必要があります。つまり、Boot メソッドが以前の実行でリソースを初期化した場合でも、以降の Boot 呼び出しは正常に終了します。