LifeKeeper for Linux の 共有ストレージ環境において、ハートビート全断が発生した場合の LifeKeeper の動作は以下の通りです。
1)ハートビート切断の発生
2)両系でコミュニケーションフェイルオーバー(自ノード上で全てのリソースを起動 させます)が実行されます。
=>起動させるべきリソースが存在しない場合は、コミュニケーションフェイル オーバ動作を終了します。
=>起動させるべきリソースが存在する場合は、そのリソースの起動を実行します。
3)上記2)の中に共有ストレージ上のディスクリソースが含まれている場合、待機系では以下の手続きでの起動を試行します。
3-1)対象LUのRESERVEを試みます
=>スプリットブレイン時は稼動系ノードがLUにRESERVEをかけているためRESERVATION CONFLICTとなり、失敗します。
3-2)上記3-1が失敗した場合は、BUS_DEVICE_RESETを実行し、LUの解放を試みます。
3-3)BUS_DEVICE_RESETに続いて再度RESERVEを試みます。
3-4)上記3-3に失敗した場合は、BUS_RESETを実行します。
3-5)BUS_RESETに続いて再度RESERVEを試みます。
4)上記3)のいずれかの箇所で待機系がSCSIのRESERVEを奪う事に成功した場合、稼動系は通常のディスクチェック上でRESERVEが奪われたことを検知し、強制再起動が行われます。
これは、共有データ領域のデータ破壊を防ぎ、データ整合性を保つための動作です。また稼動系が再起動時にディスクリソースをアクティブすることはありませんので、ピンポン状態は発生しません。
【関連情報】
[Windows] コミュニケーションパス全断が発生した際の挙動について
https://lkdkuserportal.sios.jp/hc/ja/articles/900001553986