対象製品
DataKeeper for Linux (LifeKeeper for Linux)
※本処理概要は DataKeeper for Linux v9.5.0 をもとに作成しています。
データレプリケーションの監視処理ではレプリケーションを行う上で、必要なデバイスの状態を確認し、必要であればフラグファイルを作成するという動作を行います。
この際、レプリケーションを行う上で必要なデバイスの状態に問題が生じている場合は障害として検知します。
また、動作に必要なデバイスが存在しているのにも関わらず、レプリケーションが実施不可な状態であっても、ファイルシステムリソースとしては利用可能である状況を考慮し、監視処理中にリソース障害と判定する動作はありません。
この場合の異常判定は主にファイルシステムリソースにて行われます。
なお、以下の処理概要は後者の動作に必要なデバイスが存在するにも関わらず、レプリケーションが実施不可の状態について解説しております。
ファイルシステムリソース
└ データレプリケーションリソース
監視処理
データレプリケーションリソースに対して以下の状態を確認します。
- レプリケーションがソースであるかどうかを確認します。
- ソフトウェアRAIDのプロセス状態を確認します。
- 同期の状態を確認します。(使用デバイス名が/dev/md0 の時)
# cat /sys/block/md0/md/sync_action
- ソフトウェア RAID のステータスを確認します。(使用デバイス名が/dev/md0 の時)
# cat /sys/block/md0/md/array_state
- 同期に利用しているネットワークの確認を行います。
# lkping -n -q -c <LKDR_PING_NUMBER> -w <LKDR_PING_TIMEOUT> <IPアドレス>
デフォルト設定値(/etc/default/LifeKeeper に設定し調整可能)
LKDR_PING_NUMBER=5
LKDR_PING_TIMEOUT=1
※設定記載直後の quickCheck の実行時より反映されます。同期に利用しているネットワークの疎通が行えない場合は同期が出来ないと判断します。nbd-client プロセスを停止し、ターゲットサーバに対して data_corrupt フラグを作成します。この data_corrupt フラグにより、不用意にターゲットサーバのリソースが起動され、意図してない方向の同期が行われるのを抑制しています。
リソースの停止や切り替わりは行わず監視処理は正常終了します。
起動処理
- リソース起動を抑止する data_corrupt ファイルの存在を確認する。
ファイルが存在していたら、エラーを出力し処理を終了します。<出力例> ERROR:dr:restore:datarep-data:104086:The "datarep-data_data_corrupt" flag is set in "/opt/LifeKeeper/subsys/scsi/resources/netraid/" on system "ホスト名". To avoid data corruption, LifeKeeper will not restore the resource
※data_corrupt ファイルを削除することでリソースの起動が可能となります。
その場合、意図していない方向のデータ同期が行われてデータの損失につながる可能性がございます。 - ソフトウェアRAIDのデバイスを作成(起動)します。(デバイス名が/dev/md0 の時)
# mdadm --add /dev/md0 <ディスクデバイス名>
- 他のノードが起動中であれば同期を行います。
同期前にターゲットサーバで対象のディスクがマウントされている場合は 104147 で警告を出力し同期処理を行いません。
停止処理
- 同期の状態を確認し、同期中であれば ターゲットサーバに data_corrupt ファイルを作成します。
- ソフトウェアRAIDのデバイスを停止させます。
# mdadm --stop <MDデバイス名>
回復処理
監視で異常を示すエラーイベントが付与されていることが確認出来た場合、再同期処理が行われます。
同期前にターゲットサーバで対象のディスクがマウントされている場合は 104147 で警告を出力し同
期処理を行いません。
再同期処理を実施する際に同期の状態が確認出来ない場合は、対向ノードに data_corrupt ファイル
を作成するよう通知します。
関連パラメータ
以下は、DataKeeper for Linux のパラメータ名とその意味を説明しています。
これらの値は /etc/default/LifeKeeper 設定ファイルを編集することにより設定可能です。
LKDR_CHUNK_SIZE
単位:KB(整数値)
デフォルト:256
意味:bitmapのチャンクサイズをKB単位で指定します。
設定適用タイミング:リソース作成時
LKDR_SPEED_LIMIT
単位:KB/s(整数値)
デフォルト:500000(v9.4.1 以前は 50000)
意味:再同期に使用する最大帯域幅を指定します。可能な最大速度で再同期が実行されるように、
この値を十分高い値に設定する必要があります。
通常の同期の帯域は制限できません。
設定適用タイミング:リソース起動時(または手動での再同期実施時)
LKDR_SPEED_LIMIT_MIN
単位:KB/s(整数値)
デフォルト:20000
意味:同時に他の I/O が実行されているときに許可する再同期の速度を指定します。同期の
実行時に通常の I/O 動作が妨げられないようにするには、経験則として、この値を
ドライブの最大書き込みスループットの半分以下に設定する必要があります。
設定適用タイミング:リソース起動時(または手動での再同期実施時)
LKDR_ASYNC_LIMIT
単位:個数(整数値)
デフォルト:4096(v9.4.1 以前は 256)
意味:非同期ミラーリングを作成するときのターゲットデバイスへの書き込みキューの値を
指定する。本パラメータに1を設定した場合はデフォルト値となります。
設定適用タイミング:リソース作成時
LKDR_NO_FULL_SYNC
単位:真偽 (0=抑制しない, 1=抑制する)
デフォルト:0
意味:新しく追加されたターゲットの強制全同期を抑制します。
設定適用タイミング:適宜
上記パラメータは下記にも記載されております。
DataKeeperパラメータ一覧
lkpingについて
本リソースの操作に使用される lkping について詳細は、以下のリンク先文書をご参照ください。
[Linux] lkping コマンドについて
改訂履歴
[公開日:2016年10月14日]
[更新日:2018年10月05日] lkping について追記しました。
[更新日:2020年05月20日] v9.5.0 で追加された同期前のマウント確認について追記しました。
[更新日:2024年11月01日] レプリケーションを構成するデバイスに問題がある場合は障害検知することを追記しました。