DRBDは3種類のレプリケーションモードをサポートしています。
プロトコルA . 非同期レプリケーションプロトコル。 プライマリノードでのディスクへの書き込みは、 自機のディスクに書き込んだ上でレプリケーションパケットを自機のTCP送信バッファに送った時点で、 完了したと判断されます。 システムクラッシュなどの強制的なフェールオーバが起こると、 データを紛失する可能性があります。 クラッシュよるフェールオーバの後、待機系ノードのデータは整合性があると判断されますが、 クラッシュ直前のアップデート内容が反映されない可能性があります。
プロトコルB . メモリ同期(半非同期)レプリケーションプロトコル。 プライマリノードでのディスクへの書き込みは、 自機のディスクに書き込んだ上でレプリケーションパケットが他機に届いた時点で、 完了したと判断されます。 通常、システムクラッシュなどの強制的なフェールオーバでのデータ紛失は起こりません。 しかし、両ノードに同時に電源障害が起こり、 プライマリノードのストレージに復旧不可能な障害が起きると、 プライマリ側にのみ書き込まれたデータを失う可能性があります。
プロトコルC . 同期レプリケーションプロトコル。 プライマリノードでのディスクへの書き込みは、 両ノードのディスクへの書き込みが終わった時点で完了したと判断されます。 このため、どちらかのノードでデータを失っても、 系全体としてのデータ紛失には直結しません。 当然ながら、このプロトコルを採用した場合であっても、 両ノードまたはそのストレージサブシステムに復旧できない障害が同時に起こると、 データは失われます。
このような特質にもとづき、もっとも一般的に使われているプロトコルはCです。
![]() | 注意 |
|---|---|
レプリケーションプロトコルを選択するときに考慮しなければならない要因が2つあります。 データ保護とレイテンシ(待ち時間)です。 経験的に、スループットはレプリケーションプロトコルによって あまり差は出ません。 |
レプリケーションプロトコルの設定例については、 「リソースの設定」を参照してください。