Hitachi

高信頼化システム監視機能 HAモニタ Linux(R)(x86)編


2.3.6 共有ディスクのSCSIリザーブ

共有ディスクのSCSIリザーブとは,共有ディスクの排他制御機能であり,実行系が共有ディスクをリザーブして,実行系だけが共有ディスクにアクセスできるようにすることです。これによって,複数系からの同時書き込みによる共有ディスクのデータ破壊を防止できます。

HAモニタは障害を検出した時点で系切り替えができる状態だった場合は共有ディスクをSCSIリザーブし,切り替え先のサーバを起動します。

この機能を使用するかどうかは「1.4 系切り替えの方式」および「3.1 HAモニタで使用できる機能一覧」を参照して判断してください。

共有ディスクのSCSIリザーブをするためには,HAモニタの環境設定で次のように指定してください。

各オペランドの詳細については,「8.3.1 HAモニタの環境設定(sysdef)」を参照してください。なお,指定に誤りがあると,メッセージKAMN977-Wが出力されますが,処理は続行されます。

〈この項の構成〉

(1) サーバの起動,停止時のリザーブ

実行サーバの起動は,サーバが使用する共有ディスクのリザーブを確保してから行われます。リザーブの確保は,共有ディスクの接続前に行われます。

実行サーバの停止時は,サーバの停止処理後に実行サーバ起動時に確保したリザーブを解放します。リザーブの解放は,共有ディスクの切り離し後に行われます。

待機サーバの起動,および停止時には,リザーブ関連の処理はありません。

リザーブに失敗したときに出力されるメッセージとその後の動作を,次の表に示します。

表2‒1 リザーブに失敗したときに出力されるメッセージとその後の動作

ケース

出力されるメッセージ

その後の動作

共有ディスクのパス障害によってサーバが使用する一部の共有ディスクのリザーブ確保に失敗

KAMN725-WKAMN726-E

サーバの起動処理は続行します。

サーバが使用する一部の共有ディスクが他系などによってすでにリザーブされていてリザーブ確保に失敗

KAMN725-WKAMN726-E

サーバの起動処理を中止します。

サーバが使用するすべての共有ディスクのリザーブ確保に失敗

KAMN725-WKAMN726-EKAMN498-E

サーバの起動処理を中止します。

すべて,または一部の共有ディスクのリザーブ解放に失敗

KAMN725-WKAMN726-E

処理を継続します。

(2) 系切り替え時のリザーブ

系切り替え時は,それぞれ次のように動作します。

サーバ障害時,または計画系切り替え時

切り替え元がリザーブを解放したあと,切り替え先の系は,強制的にリザーブを確保してから待機サーバを実行サーバとして起動します。なお,切り替え元の系でリソースの解放に失敗した場合は,切り替え元の系でOSパニックを発生させます。

OS障害またはHAモニタの障害による系障害時

切り替え元の系がリザーブを解放しないため,切り替え先の系は,強制的にリザーブを確保し,待機サーバを実行サーバとして起動します。このとき,系切り替え元のHAモニタがプロセス障害の場合は,メッセージKAMN066-Eを出力してOSパニックを発生させます。これによって,共有リソースの競合を防止します。

なお,切り替え元のサーバが再待機する前に系切り替え先のサーバを停止する場合は,メッセージKAMN728-Wを出力し,リザーブを解放しないでサーバを停止します。これは,aliveメッセージが実行サーバが稼働しているOSのスローダウンによって途絶した場合,系切り替えした系で共有ディスク更新後にリザーブを解放すると,その後スローダウンから回復した系が共有ディスクを更新してデータを破壊するおそれがあるためです。

リザーブを解放しないでサーバを停止した場合は,ほかの系に実行サーバが存在しないことを確認し,リザーブを解除したあとで実行サーバを起動する必要があります。

監視パス障害による系障害時

待機系のHAモニタは,実行系の系障害を検知して系切り替えを実施します。この系切り替えによって,実行系が確保していたリザーブは強制的に待機系に奪われます。

実行系のHAモニタは,リザーブが奪われた(消滅した)ことを検知してメッセージKAMN666-Eを出力し,実行系のサーバの強制停止,および共有リソースの切り離し処理を実施します。サーバの停止,および系切り替え時の共有ディスクの処理は,系切り替え時と同じ方法です。

なお,HAモニタは系障害として監視パス障害と実行系のOSスローダウンを区別しません。OS障害またはHAモニタの障害による系障害時と同様に系切り替え先のサーバを停止するときは,メッセージKAMN728-Wを出力し,リザーブを解放しないでサーバを停止します。系切り替え先のサーバを停止する前に監視パスを復旧して切り替え元のサーバが再待機した場合は,系切り替え先のサーバの停止時にリザーブを解放し,メッセージKAMN728-Wを出力しません。

監視パス障害時の動作の流れを,次の図に示します。

図2‒15 監視パス障害時の動作の流れ

[図データ]

なお,待機系からのディスクパスに障害がある場合,待機系のHAモニタは,サーバが使用するどの共有ディスクのリザーブも確保しないで,リザーブの確保が失敗したものとして待機サーバを停止します。実行系はリザーブを奪われないため,実行サーバの稼働を継続します。

待機系で一部のディスクパスに障害がある場合の監視パス障害時の動作の流れを,次の図に示します。

図2‒16 待機系で一部のディスクパスに障害がある場合の監視パス障害時の動作の流れ

[図データ]

次に,図に示した流れの詳細について説明します。番号は,図中の番号と対応しています。

  1. 待機系の共有ディスクの一部のパスに障害が発生します。

  2. 監視パス障害が発生します。

  3. 待機系は系障害を検知して系切り替えをしますが,共有ディスクの一部にパス障害が発生しているため,リザーブを確保できません。このため,系切り替えに失敗します。

  4. 実行系はリザーブを奪われないため,業務を継続します。

(3) リザーブのチェック

系切り替え時に備え,HAモニタは定期的にリザーブの状態などをチェックしています。実行系と待機系,それぞれの系からのチェックについて説明します。

(a) 実行系からのリザーブ状況のチェック

HAモニタは,サーバが使用するすべての共有ディスクに対してリザーブの状況を実行系から定期的にチェックしています。監視パス障害などによる待機系への系切り替えなどで他系が強制的にリザーブを確保していないかを確認します。

チェック間隔は,HAモニタの環境設定のscsi_checkオペランドで指定します。デフォルトでは5秒です。

(b) 待機系からの共有ディスクのパスの状況のチェック

HAモニタは,待機系から共有ディスクのステータスを取得して,ディスクパスの状況を監視しています。異常がないかを事前にチェックしてユーザに通知することで,系切り替えの失敗を防止できます。系切り替え時に,共有ディスクの一部,またはすべてのリザーブが確保できない場合は,系切り替えに失敗します。

チェック間隔は,HAモニタの環境設定のscsi_pathcheckオペランドで指定します。デフォルトでは1分です。

ディスクパスの異常を検知した場合は,メッセージKAMN725-W,およびメッセージKAMN726-Eを出力します。

また,ディスクパスの回復を検知した場合は,KAMN727-Iを出力します。

(4) 共有ディスクを使用しないサーバがある場合

リザーブをするには共有ディスクが必須ですが,共有ディスクを使用するサーバと使用しないサーバを組み合わせたシステム構成でも,リザーブをすることができます。

ただし,共有ディスクを使用しないと,監視パス障害などによる系切り替えの発生に実行サーバが気づけないことがあります。このため,共有ディスクを使用しないサーバがある場合は,次の表に示すどちらかの設定をしてください。

表2‒2 共有ディスクを使用しないサーバがある場合の設定

設定

メリット

デメリット

共有ディスクを使用しないサーバでも,リザーブ用の共有ディスクを用意し,サーバ対応の環境設定のscsi_deviceオペランド,またはdmmp_deviceオペランドに定義する。

ほかのサーバと親子関係にならないため,順序制御による影響を受けない。

リザーブ用の共有ディスクが必要になるため,業務で使用しない新たな共有リソースが必要になる。

共有ディスクを使用するサーバと使用しないサーバを同一のグループにグループ化し,必ず一緒に稼働させる。

次のような例が考えられる。

  • リソースサーバに共有ディスクを集約し,各サーバをリソースサーバの子サーバとして定義する。

  • 共有ディスクを使用しないサーバは,共有ディスクを使用するサーバを親サーバに指定し,サーバ起動時は親サーバから子サーバの順番に起動し,サーバ停止時は子サーバから親サーバの順に停止するように運用する。

リザーブ用の共有ディスクが不要である。

ほかのサーバと親子関係になるため,順序制御による次の影響を受ける。

  • 系切り替え時,親サーバが起動してから子サーバが起動するため,切り替え時間が増加する。

  • サーバ起動時,親サーバの起動が失敗すると,子サーバも起動に失敗する。

(5) 注意事項

次のようなケースでは,確保したリザーブを解放できません。

また,次のようなケースでは,確保したリザーブを解放できないおそれがあります。

リザーブが解放されていない状態で実行サーバを起動すると,実行サーバの起動に失敗します。この場合,ほかの系に実行サーバが存在しないことを確認し,リザーブを解除したあとで実行サーバを起動する必要があります。リザーブの確認および解除する手順については,「7.5.6 共有ディスクのデバイス障害に対処する(実行サーバ起動時)(共有ディスクのSCSIリザーブをする場合)」および「7.5.8 共有ディスクのデバイス障害に対処する(実行サーバ終了時)(共有ディスクのSCSIリザーブをする場合)」を参照してください。

これらのリザーブを解除する手順や「7.5.7 共有ディスクのデバイス障害に対処する(実行サーバ稼働中)(共有ディスクのSCSIリザーブをする場合)」の手順でsg_persistコマンドを使用するため,sg_persistコマンドがインストールされていない場合は,Linuxに同梱されているsg3_utilsパッケージ,およびsg3_utils-libsパッケージをインストールしてください。

また,リザーブ解除コマンド(monscsiclrコマンド)を使用しないでリザーブを解除する場合,共有ディスクごとにsg_persistコマンドを複数回実行する必要があります。一つの手順でリザーブを解除するために,リザーブを解除するシェルを作成しておくことをお勧めします。リザーブを解除するシェルについては「7.5.11 リザーブを解放しないサーバに対処する(共有ディスクのSCSIリザーブをする場合)」を参照してください。