drbd

  • 投稿者:
  • 投稿カテゴリー:drbd / Linux

概要

ネットワークを利用して、ブロックデバイス全体をミラーする
つまり、DRBDはネットワークを介したRAID1のようなもの

アーキテクチャ

drbd

DRBDのコア機能はLinuxのカーネルモジュールとして実装されている
OSのI/Oスタックの「一番底に近い場所で」DRBDは仮想的なブロックデバイスを作成してミラーリングする

レプリケートするストレージのセットに関するさまざまな属性を総称してリソースと呼ぶ
プライマリまたはセカンダリのどちらかのロールを持つ
セカンダリロールのDRBDデバイスは、対向するノードでのすべてのデータの更新を受け取りますが、
自ノードのアプリケーションからのアクセスは、読み込みと書き込みの両方とも一切受け付けない
読み込みすら受け付けない理由は、キャッシュの透過性を保証するため

DRBDデバイス:DRBDが管理する仮想的なブロックデバイス

オンライン照合

ブロックごとのダイジェストを計算し、他方のノード(照合ターゲット)に転送し、ターゲット側のダイジェストと照合する
ダイジェストが一致しないブロックはout-of-syncとマークされ、後で同期される

レプリケーション用トラフィックの整合性チェック

暗号手法にもとづくMD5、SHA-1またはCRD-32Cを使って、ノード間のメッセージの整合性をチェック可能
レプリケート対象のすべてのデータブロックごとのメッセージダイジェストが計算され、レプリケート先のDRBDは、レプリケーション用パケットの照合にこのメッセージダイジェストを活用する。もし不整合が合った場合はそのブロックの情報の再送を要求する

設定

完全同期モード(プロトコルC)
クラスタの両方のディスクブロックへの書き込みが完了した後で、アクティブノードのファイルシステムに書き込み完了が通知される
アクティブノード(DRBDではプライマリと呼びます)が完全に壊れてしまった場合であっても、1ブロックのデータも失いたくないときに利用する

操作方法

カーネルモジュールと通信してその動作を管理するための管理ツールが用意されている
drbdadm:DRBDプログラム群における高レベル管理ツール
drbdsetupおよび drbdmetaのフロントエンドとして動作する
drbdadmの-dオプションで、どのようなバックエンドコマンドが実行されるのか、確認可能である
drbdsetup:カーネルにロードされたDRBDモジュールを直接的に設定するプログラム
すべてのパラメータをコマンドで設定できるため、使い勝手はよくないが、柔軟性が高い
drbdmeta:DRBDメタデータの作成、ダンプ、リストアなどを行うコマンド

復旧手順

どちらかのノードに障害が起こってその後復旧すると、DRBDは最新のデータを一時的に利用できなくなっていたノードに自動的にコピーする
この同期作業はバックグラウンドで実行され、実行中の他のサービスに影響を及ぼさない
もちろん、動作し続けていたノードの役割が途中で変わった場合でも、うまく同期可能
またレプリケーション用ネットワークの一時的な障害から復旧したときも、同様の復旧が実施される

スプリットブレイン(両方のノードがプライマリに昇格したときに起こる)

参考

http://www.drbd.org/ja/