[Linux] DataKeeper for Linux の処理概要

対象製品
DataKeeper for Linux (LifeKeeper for Linux)
※本処理概要は DataKeeper for Linux v9.0.0 をもとに作成しています。

データレプリケーションの監視処理ではレプリケーションを行う上で、必要なデバイスの状態を確認し、必要であればフラグファイルを作成するという動作を行います。レプリケーションが実施不可な状態であっても、ファイルシステムリソースとしては利用可能である状況を考慮し、監視処理中にリソース障害と判定する動作はありません。
異常判定は主にファイルシステムリソースにて行われます。

 ファイルシステムリソース
  └ データレプリケーションリソース

監視処理
データレプリケーションリソースに対して以下の状態を確認します。

  1. レプリケーションがソースであるかどうかを確認します。
  2. ソフトウェアRAIDのプロセス状態を確認します。

  3. 同期の状態を確認します。(使用デバイス名が/dev/md0 の時)
    # cat /sys/block/md0/md/sync_action
  4. ソフトウェア RAID のステータスを確認します。(使用デバイス名が/dev/md0 の時)
    # cat /sys/block/md0/md/array_state
  5. 同期に利用しているネットワークの確認を行います。
    # 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 フラグにより、不用意にターゲットサーバのリソースが起動され、意図してない方向の同期が行われるのを抑制しています。
    リソースの停止や切り替わりは行わず監視処理は正常終了します。

起動処理

  1. リソース起動を抑止する 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 ファイルを削除することでリソースの起動が可能となります。
     その場合、意図していない方向のデータ同期が行われてデータの損失につながる可能性がございます。

  2. ソフトウェアRAIDのデバイスを作成(起動)します。(デバイス名が/dev/md0 の時)
    # mdadm --add /dev/md0 <ディスクデバイス名>
  3. 他のノードが起動中であれば同期を行います。

停止処理

  1. 同期の状態を確認し、同期中であれば ターゲットサーバに data_corrupt ファイルを作成します。
  2. ソフトウェアRAIDのデバイスを停止させます。
    # mdadm --stop <MDデバイス名>

回復処理
監視で異常を示すエラーイベントが付与されていることが確認出来た場合、再同期処理が行われます。
再同期処理を実施する際に同期の状態が確認出来ない場合は、対向ノードに data_corrupt ファイル
を作成するよう通知します。
 


関連パラメータ
以下は、DataKeeper for Linux のパラメータ名とその意味を説明しています。
これらの値は /etc/default/LifeKeeper 設定ファイルを編集することにより設定可能です。
 
LKDR_CHUNK_SIZE
 単位:KB(整数値)
 デフォルト:256
 意味:bitmapのチャンクサイズをKB単位で指定します。
 設定適用タイミング:リソース作成時
 
LKDR_SPEED_LIMIT
 単位:KB/s(整数値)
 デフォルト:50000
 意味:同期に使用する最大帯域幅を指定します。可能な最大速度で再同期が実行されるように、
    この値を十分高い値に設定する必要があります。
 設定適用タイミング:リソース起動時
 
LKDR_SPEED_LIMIT_MIN
 単位:KB/s(整数値)
 デフォルト:20000
 意味:同時に他の I/O が実行されているときに許可する再同期の速度を指定します。同期の
    実行時に通常の I/O 動作が妨げられないようにするには、経験則として、この値を
    ドライブの最大書き込みスループットの半分以下に設定する必要があります。
 設定適用タイミング:リソース起動時
 
LKDR_ASYNC_LIMIT
 単位:個数(整数値)
 デフォルト:256
 意味:非同期ミラーリングを作成するときのターゲットデバイスへの書き込みキューの値を
    指定する。本パラメータに1を設定した場合はデフォルト値となります。
 設定適用タイミング:リソース作成時
 
LKDR_NO_FULL_SYNC
 単位:真偽 (0=抑制しない, 1=抑制する)
 デフォルト:0
 意味:新しく追加されたターゲットの強制全同期を抑制します。
 設定適用タイミング:適宜

上記パラメータは下記にも記載されております。
DataKeeperパラメータ一覧
 
lkpingについて
本リソースの操作に使用される lkping について詳細は、以下のリンク先文書をご参照ください。
[Linux] lkping コマンドについて
 


改訂履歴

[公開日:2016年10月14日] [更新日:2018年10月05日] lkping について追記しました。

return top