[Windows] ボリュームリソース処理概要 (DataKeeper ミラーボリューム編)

LifeKeeper for Windows が DataKeeper ミラーボリュームリソースを操作する際に行う監視機能、起動処理、停止処理についてご説明します。

対象製品
・SIOS Protection Suite for Windows (LifeKeeper for Windows、および DataKeeper for Windows)
 
※本処理概要は SIOS Protection Suite for Windows v8.3.0 に付属するリカバリキットを基に作成しています。
※また、本概要は LifeKeeper for Windows 環境下で動作する DataKeeper Standard Edition(DKSE) を対象であり、
 WSFC 環境下で動作する DataKeeper Cluster Edition(DKCE) は対象外となります。
 

 ボリュームリソースでは、共有ディスクと DataKeeper ミラーボリュームを保護することができ
ロジック制御により適切に保護対象を判定することにより、対応するデバイスを管理しています。
本ドキュメントでは、DataKeeper ミラーボリュームをリソースとして制御する箇所に特化してご案内しています。
 
DataKeeper ミラーボリュームでは、各機能の制御に DataKeeper for Windows のコマンドを使用します。
各コマンドの詳細については、対象バージョンの SIOS Protection Suite for Windows テクニカルドキュメンテーション (http://jpdocs.us.sios.com/) の
DataKeeper」 > 「管理」 > 「SIOS DataKeeper で EMCMD を使用する」 項目をご参照ください。


 
クイックチェック (quickCheck)
 

 DataKeeper ミラーボリュームのクイックチェックでは、障害検出は行わずに自ノードと対向側ノード間の
ステータスに不整合が発生していないことの確認、および修正を行います。
障害検出処理はディープチェックで実施しています。

 
(1) 以下のコマンドを実行し、現時点のミラーボリュームの情報を取得します。

%ExtMirrBase%\EMCmd.exe . GETMIRRORVOLINFO [ドライブレター]: 

  コマンド実行に失敗した場合、監視処理に失敗したとみなし、以下のようなエラーメッセージを出力して処理を終了します。

ERROR 12029 Unable to get information on volume [ドライブレター]:. The command "Emcmd . GETMIRRORVOLINFO [ドライブレター]:" returned a value of [エラーコード].

(2) (1) のコマンドの実行結果より、自身のボリュームリソースの役割(ソースかターゲットか)を取得します。
  自身がターゲットである場合、監視処理は失敗とみなさず、以下のメッセージを出力してそのまま監視処理を終了します。

ERROR 12030 Mirrored Volume [ドライブレター]: not in Source Mode; ROLE=$ROLE; EMOUT=$EMOUT

  ソースとして動作している場合、(3) へ進みます。

(3) ソース、ターゲット間でお互いの状態に齟齬が無いことを確認するため、
  (1) のコマンド実行結果からミラーの状態と対向ノード側のミラーステータスを取得します。

  お互いの状態が不一致である場合には、対向側のリソースのステータスを以下のように修正します。

ミラーの状態が「ミラーリング」、かつ対向側リソースのステータスが OSU のときなにもしない
ミラーの状態が「ミラーリング」、かつ対向側リソースのステータスが OSU 以外のとき対向側リソースを OSU へ変更する
ミラーの状態が「ミラーリング以外」、かつ対向側リソースのステータスが OSF のときなにもしない
ミラーの状態が「ミラーリング以外」、かつ対向側リソースのステータスが OSF 以外のとき対向側リソースを OSF へ変更する

(4) ソース、ターゲット間でスプリットブレイン状態が発生していないことを確認するため
  対向側ボリュームに対して以下のコマンドを実行します。

%ExtMirrBase%\EMCmd.exe [対向側ノード名] GETMIRRORVOLINFO [ドライブレター]: 

  自身と対向側ノードのボリュームリソースが共にソースとして動作している場合は、スプリットブレイン状態となります。
  スプリットブレインを検出した場合には、スプリットブレイン状態を示すフラグを自身と対向側ノードの両ノードに対して生成します。

flg_create -f SplitBrain_[ドライブレター]: 

  また、スプリットブレインが発生したことを示すメッセージを SNMP トラップとして送信します。

EISMEventNotice.exe [自ノード名] 6 160 s:"LifeKeeper replicated volume Split Brain detected." s:[ドライブレター]:  s:[対向側ノード名] 

(5) 以下のコマンドを使用し、対向側ノードの監視対象ドライブの VSS を削除します。

lcdremexec -d [対向側ノード名] -- vssadmin.exe delete shadows /for=[ドライブレター]: /quiet

 
 
ディープチェック (deepCheck)

クイックチェックで記載した監視内容 (1) から (5) までの処理を実行します。
その後、以下の処理を実行します。

(6) ボリュームの健全性を確認するため、以下のコマンドを実行します。

CheckVolume.exe [ドライブレター]: 

   本 .exe プログラムでは、対象のドライブに対してファイル書込みを行い、エラーが発生することなく正しく書込みができるかを確認します。
   具体的には、test という文字列が記載された LK_xxxx.tmp ファイル名(xxxx は数字) を作成します。

   書込みに成功した場合は監視処理成功と判断し、書込みしたファイルを削除して処理を終了します。
   書込みに失敗した場合、監視処理失敗として以下のメッセージを出力して処理を終了します。

ERROR 12022 Resource \"$TAG\" (Volume [ドライブレター]:) not available

 
 
起動処理 (restore)

(1) 以下のコマンドを実行し、リソース起動を行う直前のミラー状態へ更新します。

%ExtMirrBase%\EmCmd.exe . UPDATEVOLUMEINFO [ドライブレター]: 

(2) 以下のコマンドを実行し、自身がソースとして稼働しているかどうかを確認します。

%ExtMirrBase%\EMCmd.exe [自ノード名] GETMIRRORVOLINFO [ドライブレター]: 

   自身がソースである場合、以下のコマンドで対象ドライブのロックを解除します。

%ExtMirrBase%\EMCmd.exe . UNLOCKVOLUME [ドライブレター]: 

   コマンドの実行に失敗した場合、起動失敗とみなして以下エラーメッセージを出力し、処理を終了します。

ERROR 12501 Unlock of volume "[ドライブレター]:" failed - status [エラーコード] 

   自身がターゲットとして判定された場合、以下のコマンドを実行して自ノードへスイッチオーバを行います。

%ExtMirrBase%\EMCmd.exe . SWITCHOVERVOLUME [ドライブレター]: 

   コマンドの実行に失敗した場合、起動失敗とみなして以下エラーメッセージを出力し、処理を終了します。

ERROR 12500 Switchover of volume "[ドライブレター]:" failed - status [エラーコード] 

 
(3) 以下コマンドを実行し、対象ドライブがロックされているかを確認します。

volume.exe -d | $LKBIN/fgrep -i [ドライブレター]: 

  ロックされている場合、以下コマンドでロックを解除します。

volume.exe -u [ドライブレター]: 

  ロック解除に失敗した場合、起動失敗とみなして以下エラーメッセージを出力し、処理を終了します。

ERROR 12045 Unable to unlock volume "[ドライブレター]:" on "[自ノード名]" machine. 

(4) Windows ユーティリティコマンド chkntfs.exe を実行します。

chkntfs.exe [ドライブレター]: 

  コマンドの実行に失敗した場合、起動失敗とみなして以下エラーメッセージを出力し、処理を終了します。

ERROR 12053 Volume [ドライブレター]: was found dirty by Microsoft utility chkntfs during the restore on "[自ノード名]". Chkdsk should be scheduled to run for this volume. 

(5) ボリュームの健全性を確認するため、以下のコマンドを実行します。
  本コマンドの詳細は、上述の説明を参照ください。

CheckVolume.exe [ドライブレター]: 

  書込みに失敗した場合、起動失敗として以下のメッセージを出力し、処理を終了します。

ERROR 12061 CheckVolume failed. Unable to access Volume [ドライブレター]:. 

(6) 対象ドライブの VSS に関するスケジュールタスクを有効化します。
  有効化に成功した場合、以下のメッセージを出力して処理を終了します。

INFO 12065 VSS scheduled backups on volume "[ドライブレター]:" are enabled. 

  有効化に失敗した場合には以下のエラーメッセージを出力しますが、ボリュームリソースの起動は完了しているため、起動に成功したものとして処理を終了します。

ERROR 12066 Failed to enable a VSS backup schedule on volume "[ドライブレター]:". If shadow copies are required, please enable it manually.  However, the volume restore was successful. 

 
 
停止処理 (remove)

(1) 以下のコマンドで、監視対象ドライブの VSS の稼働状況を確認します。

vssadmin.exe list shadowstorage /On=[ドライブレター]:

  VSS が設定されている場合、以下のエラーメッセージを出力し、停止処理を終了します。

ERROR 12039 LifeKeeper: Volume [ドライブレター]: is being used for Volume Shadow Copy snapshot storage.  Cannot take this volume out of service. 

(2) LifeKeeper サービスの停止処理が実行中の場合、以下のエラーメッセージを出力し、処理を終了します。

ERROR 12092 LifeKeeper is stopping; volume [ドライブレター]: not switched over. 

(3) 以下のコマンドを実行し、リソース停止を行う直前のミラー状態へ更新します。

%ExtMirrBase%\EMCmd.exe . UPDATEVOLUMEINFO [ドライブレター]: 

(4) 以下のコマンドを実行し、自身がソースとして動作していることを確認します。
  自身がターゲットである場合、そのまま停止処理を終了します。

%ExtMirrBase%\EMCmd.exe . GETMIRRORVOLINFO [ドライブレター]: 

  また、コマンド実行自体に失敗した場合、以下のエラーメッセージを出力し、停止処理を終了します。

ERROR 12093 Unable to get information on volume "[ドライブレター]:" on system "[自ノード名]". The command "Emcmd . GETMIRRORVOLINFO [ドライブレター]:" on system "[自ノード名]" returned a value of [エラーコード]. 

(5) 以下のコマンドで、監視対象ドライブの VSS を削除します。

vssadmin.exe delete shadows /for=[ドライブレター]: /quiet 

  VSS 削除後、以下のコマンドで監視対象ドライブの VSS 設定を確認します。

vssadmin.exe list shadows /for=[ドライブレター]: 

  停止できなかった場合、停止失敗として以下のエラーメッセージを出力し、停止処理を終了します。

ERROR 12097 Unable to delete Volume Shadow Copy snapshots for volume "[ドライブレター]:" on "[自ノード名]".  Cannot remove volume resource. 

(6) 以下のコマンドを実行し、ボリュームをロックします。
  ロックに成功した場合、停止成功として処理を終了します。

%ExtMirrBase%\EMCmd.exe . LOCKVOLUME [ドライブレター]: 

  ロックに失敗した場合、停止失敗として以下のエラーメッセージを出力し、停止処理を終了します。

ERROR 12098 Unable to lock volume "[ドライブレター]:" on "[自ノード名]". The command "EmCmd . LOCKVOLUME [ドライブレター]:" on system "[自ノード名]" returned a value of [エラーコード]. 

 
 
回復処理 (recover)

DataKeeper リソースに回復処理はありません。
 


改訂履歴

[公開日:2016年8月31日]

return top