クイック同期ビットマップ

クイック同期ビットマップはDRBDがリソースごとに使用する内部データ構造で、同期ブロック(両方のノードで同一)または非同期ブロックを追跡します。ビットマップはノード間通信が切断しているときのみ使われます。

クイック同期ビットマップでは、1ビットが4KiBチャンクのオンディスクデータを表します。ビットがクリアされていれば、対応するブロックが対向ノードと同期しています。つまり、切断以降、ブロックに書き込まれていないということです。逆に、ビットが設定されていればブロックが変更されているため、接続が再確立したらすぐに再同期を行う必要があります。

スタンドアロンノードでディスクにデータが書き込まれると、クイック同期ビットマップへの書き込みも始まります。ディスクへの同期的なI/Oは負荷が大きいため、実際にはメモリ上のビットマップのビットが設定されます。アクティビティログが期限切れになってブロックがコールドになると、メモリ上のビットマップがディスクに書き込まれます。リソースを手動で停止する場合は、DRBDはすべてのビットマップをディスクに書き込みます。

リモートノードが回復するか接続が再確立すると、 DRBDは両方のノードのビットマップ情報を照合して、再同期が必要なすべてのデータ領域を決定します。同時に、DRBDは世代識別子を調べ、同期の方向を決定します。

同期元ノードが同期対象ブロックを対向ノードに送信し、同期先が変更を確認すると、ビットマップの同期ビットがクリアされます。別のネットワーク障害などで再同期が中断し、その後再開すると、中断した箇所から同期を続行します。中断中にブロックが変更された場合、もちろんそのブロックが再同期データセットに追加されます。

[注記]注記

drbdadm pause-syncdrbdadm resume-sync コマンドを使用して、再同期を手動で一時停止したり再開することもできます。ただし、これは慎重に行ってください。再同期を中断すると、セカンダリノードのディスクが不必要に長い間Inconsistent状態になります。