Sun Cluster HA for NFS の障害モニターには、次の 2 つの機能があります。
NFS システム障害モニター。NFS デーモン (nfsd、mountd、 statd、および lockd) の監視と、問題が発生した場合の適切な処理を行います。 NFS システム障害モニターは、RPC ポートマッパーサービスデーモン (rpcbind) の監視も行います。
NFS リソース障害モニター。各 NFS リソースに固有の障害モニターです。各リソースの障害モニターは、リソースによってエクスポートされるファイルシステムを、各共有パスの状態を調べることで監視します。
最初に、NFS リソースの MONITOR_START メソッドは、NFS システム障害モニターを起動します。この起動メソッドは、最初に NFS システム障害モニターの nfs_daemons_probe が、プロセスモニターデーモンの rpc.pmfd の下ですでに実行されているかどうかを調べます。 NFS システム障害モニターが動作していない場合、この起動メソッドはプロセスモニターの制御下で nfs_daemons_probe プロセスを起動します。その後、同様に、プロセスモニターの制御下でリソース障害モニター (nfs_probe) を起動します。
最初に、NFS リソースの MONITOR_STOP メソッドは、リソース障害モニターを停止します。その後、ほかの NFS リソース障害モニターがローカルノード上で実行されていない場合、NFS システム障害モニターも停止します。
NFS システム障害モニターは、ローカルノード上で、rpcbind、 statd、lockd、nfsd、および mountd を検証します。検証は、プロセスの存在と、ヌル rpc 呼び出しに対する応答を調べることで行います。このモニターは、次の NFS 拡張プロパティを使用します。
Rpcbind_nullrpc_timeout | Lockd_nullrpc_timeout |
Nfsd_nullrpc_timeout | Rpcbind_nullrpc_reboot |
Mountd_nullrpc_timeout | Nfsd_nullrpc_restart |
Statd_nullrpc_timeout |
Mountd_nullrpc_restart |
拡張プロパティの検討や設定については、Sun Cluster HA for NFS 拡張プロパティの構成を参照してください。
各システム障害モニターの検証サイクルでは、次の作業が順に行われます。
Cheap_probe_interval の間、休止します。
rpcbind を検証します。
プロセスが不意に終了したが、デーモンのウォームリスタートが実行中の場合、rpcbind は引き続きほかのデーモンを検証します。
プロセスが不意に終了した場合、障害モニターはそのノードを再起動します。
デーモンに対するヌル rpc 呼び出しが不意に終了し、 Rpcbind_nullrpc_reboot=True、 Failover_mode=HARD の場合、障害モニターはノードを再起動します。
最初に statd を検証し、次に lockd を検証します。
statd または lockd が不意に終了した場合、システム障害モニターは両デーモンの再起動を試みます。
これらのデーモンに対するヌル rpc 呼び出しが不意に終了した場合、障害モニターは syslog にメッセージを記録しますが、statd や lockd を再起動しません。
mountd を検証します。
mountd が不意に終了した場合、障害モニターはデーモンの再起動を試みます。
デーモンに対するヌル rpc 呼び出しが不意に終了し、 Mountd_nullrpc_restart= True の場合、クラスタファイルシステムが利用可能であれば、障害モニターは mountd の再起動を試みます。
nfsd を検証します。
nfsd が不意に終了した場合、障害モニターはデーモンの再起動を試みます。
デーモンに対するヌル rpc 呼び出しが不意に終了し、Nfsd_nullrpc_restart=TRUE の場合、クラスタファイルシステムが利用可能であれば、障害モニターは nfsd の再起動を試みます。
rpcbind を除き、上記 NFS デーモンのうちいずれかが検証サイクル中の再起動に失敗した場合、NFS システム障害モニターは、次のサイクルの再開を再度試みます。すべての NFS デーモンが再起動され、状態が正常の場合には、リソースの状態は再び ONLINE に設定されます。モニターは、最後の Retry_interval での NFS デーモンの予期せぬ終了を追跡します。デーモンの予期せぬ終了の合計数が、 Retry_count に到達した場合、システム障害モニターは scha_control ギブオーバー (中止) を発行します。ギブオーバー呼び出しに失敗した場合、モニターは失敗した NFS デーモンの再起動を試みます。
各検証サイクルの最後で、すべてのデーモンが正常であれば、モニターは失敗の履歴を消去します。
リソース障害モニター検証を開始する前に、すべての共有パスが dfstab ファイルから読み取られ、メモリーに格納されます。各検証サイクルでは、パスに対して stat() を実行することで、各繰り返しですべての共有パスが検証されます。
各リソース障害モニターの障害検証では、次の作業が順に行われます。
Thorough_probe_interval の間、休止します。
最後の読み取り以降に dfstab が変更されている場合は、メモリーをリフレッシュします。
dfstab ファイルの読み取り中にエラーが発生した場合、リソースの状態は FAULTED に設定され、モニターは、現在の検証サイクル内のチェックの残りをとばします。
パスに stat() を実行することで、すべての共有パスを各繰り返し検証します。
問題のあるパスが見つかると、リソースの状態は FAULTED に設定されます。
NFS デーモン (nfsd、mountd、lockd、statd) および rpcbind の存在を検証します。
これらのデーモンのいずれかが停止している場合、リソースの状態は FAULTED に設定されます。
すべての共有パスが正しく、かつ NFS デーモンが存在する場合、検証サイクルの最後で、リソースの状態が ONLINE に設定されます。