分散レプリケートブロックデバイス(DRBD)[ 3 ]は、 Linuxプラットフォーム向けの分散レプリケートストレージシステムです。複数のホスト間でブロックデバイスをミラーリングし、ホストシステム上のアプリケーションに対して透過的に機能します。このレプリケーションは、ハードドライブ、パーティション、RAID構成、論理ボリュームなど、あらゆる種類のブロックデバイスに関係します。[ 4 ]
DRBDはカーネルドライバ、いくつかのユーザー空間管理アプリケーション、およびいくつかのシェルスクリプトとして実装されています。DRBDは従来、高可用性(HA)コンピュータクラスタで使用されてきましたが、DRBDバージョン9以降では、クラウド統合に重点を置いた、より大規模なソフトウェア定義ストレージプールを作成するためにも使用できます。[ 5 ]
DRBDソフトウェアは、GNU一般公衆利用許諾契約書バージョン2の条件に基づいてリリースされたフリーソフトウェアです。
DRBDは、 Lisogオープンソーススタックイニシアチブの一環です。
DRBD は、参加クラスタノード上の既存のローカルブロックデバイスの上に論理ブロックデバイス(慣例的に と命名され、Xはデバイスのマイナー番号) を重ねます。プライマリノードへの書き込みは下位レベルのブロックデバイスに転送され、同時にセカンダリノードに伝播されます。セカンダリノードは、対応する下位レベルのブロックデバイスにデータを転送します。読み取りバランシングが構成されていない限り、すべての読み取り I/O はローカルで実行されます。[ 6 ]/dev/drbdX
プライマリ ノードが故障した場合、クラスタ管理プロセスによってセカンダリ ノードがプライマリ 状態に昇格します。[ 7 ]この移行には、ファイルシステム チェックまたはジャーナルリプレイによって、DRBD 上に構築されたファイルシステムの整合性を検証する必要がある場合があります。故障した元プライマリ ノードが復旧すると、デバイス データの再同期後、システムはそれを再びプライマリ レベルに上げる場合もあれば、上げない場合もあります。DRBD の同期アルゴリズムは、デバイス全体ではなく、障害中に変更されたブロックのみを再同期すればよいという意味で効率的です。
DRBD は、他のクラスタ管理フレームワークとも統合されていますが、多くの場合、 PacemakerまたはHeartbeatクラスタ リソースマネージャと一緒に展開されます。[ 8 ] [ 9 ] [ 10 ] Xenなどの仮想化ソリューション と統合され、Linux LVMスタックの下と上の両方で使用できます。[ 11 ]
DRBD は負荷分散構成を可能にし、両方のノードが共有ストレージセマンティクスで特定の DRBD に読み書きモードでアクセスできるようにします。[ 12 ]複数のプライマリ (複数の読み書きノード) 構成では、分散ロックマネージャの使用が必要です。
2018年以降、DRBDはブロックストレージ管理ソフトウェアLINSTORにおいても、異なるノード間でのレプリケーションや、ユーザーおよびアプリケーションへのブロックストレージデバイスの提供に活用できるようになりました。
従来のコンピュータクラスタシステムでは、クラスタリソースが使用するデータに何らかの共有ストレージを使用するのが一般的です。このアプローチにはいくつかの欠点がありますが、DRBDはそれらを相殺するのに役立つ可能性があります。
デメリットとしては、共有ストレージデバイスに直接書き込む方が、他のノードを経由して書き込みを行うよりも時間が短縮される点が挙げられる。
DRBDは、2つのストレージデバイスにデータをコピーすることで、一方のデバイスが故障してももう一方のデバイス上のデータを使用できるという点で、RAID-1と表面的な類似性を持っています。しかし、その動作原理はRAIDやネットワークRAIDとは大きく異なります。
RAIDでは、冗長性はストレージを使用するアプリケーションからは透過的なレイヤーに存在します。ストレージデバイスは2つありますが、アプリケーションのインスタンスは1つしか存在せず、アプリケーションは複数のコピーが存在することを認識しません。アプリケーションがデータを読み込む際、RAIDレイヤーが読み込むストレージデバイスを選択します。ストレージデバイスに障害が発生した場合、RAIDレイヤーはアプリケーションインスタンスが障害を認識することなく、もう一方のストレージデバイスからデータを読み取ることを選択します。
一方、DRBDではアプリケーションのインスタンスが2つ存在し、それぞれが2つのストレージデバイスのうち1つからしかデータを読み取ることができません。いずれかのストレージデバイスに障害が発生した場合、そのデバイスに関連付けられたアプリケーションインスタンスはデータを読み取ることができなくなります。そのため、そのアプリケーションインスタンスはシャットダウンし、残りのデータコピーに関連付けられたもう一方のアプリケーションインスタンスが処理を引き継ぎます。
逆に、RAIDでは、単一のアプリケーションインスタンスが故障した場合、2つのストレージデバイス上の情報は事実上使用できなくなりますが、DRBDでは、もう一方のアプリケーションインスタンスが引き継ぐことができます。
Linuxカーネルのブロックレイヤー内で動作するDRBDは、基本的にワークロードに依存しません。DRBDは、以下の基盤として使用できます。
DRBDベースのクラスタは、ファイルサーバー、リレーショナルデータベース( MySQLなど)、その他多くのワークロードに同期レプリケーションと高可用性を追加するためによく利用されます。
DRBD の開発者は、Linux カーネルの標準版 kernel.org に含める可能性を期待して、2007 年 7 月に Linux カーネル コミュニティにソフトウェアを提出しました。[ 15 ]長時間のレビューと数回の議論の後、Linus Torvalds はDRBD を公式の Linux カーネルの一部にすることに同意しました。DRBD は、Linux カーネル バージョン 2.6.33 の「マージ ウィンドウ」中に 2009 年 12 月 8 日にマージされました。[ 16 ]