DRBD

DRBD (Distributed Replicated Block Device) は、Linuxプラットフォームの分散ストレージシステムである。カーネルモジュール、管理アプリケーション、シェルスクリプトで構成され、高可用 (HA) クラスタで使うのが一般的である。DRBD は RAID 1 に似ているが、ネットワーク上で動作する点が異なる。
DRBD は、ソフトウェアを指すと同時に、そのソフトウェアで管理される論理ブロックデバイスも指す。「DRBDデバイス」とか「DRBDブロックデバイス」といった呼称も見受けられるが、RAS症候群の一種であることは言うまでもない。
DRBDはフリーソフトウェアであり、GNU General Public License version 2 でライセンスされている。
運用モード.
DRBD の論理ブロックデバイス（通常 /dev/drbd"X" で、"X" はマイナー番号）は既存のブロックデバイス群の上に存在し、クラスタノードを構成している。プライマリノードへの書き込みは下層のブロックデバイスへ転送され、同時にセカンダリノードへも伝播される。セカンダリノードは、書き込みデータを対応する下層のブロックデバイスへ転送する。読み出しは全てローカルに行う。
プライマリノードで障害が発生すると、クラスタ管理プロセスがセカンダリノードをプライマリ状態にする。この遷移の際に、fsckやジャーナルリプレイといったDRBD上のファイルシステムの完全性検証を必要とする場合もある。障害の発生した元のプライマリノードが復旧したら、それを再びプライマリにする場合もあり、その際にはデバイスデータの再同期が必要になる。DRBDの同期アルゴリズムは、デバイス全体ではなく停止していた間に更新されたブロックだけを再同期するもので、効率的である。
DRBDはHeartbeatクラスタマネージャと共に使うことが多いが、他のクラスタ管理フレームワークと組み合わせることもできる。Xenのような仮想化技術と組み合わせたり、Linuxの論理ボリュームマネージャと組み合わせることもできる。
2007年1月にリリースされた DRBD version 8 は負荷分散構成もサポートしており、両方のノードで同時に読み書きできる構成も可能である。そのような構成では分散ロックマネージャが必須となる。
共用クラスタストレージに対する優位点.
クラスタシステムは一般に共用ストレージを使い、クラスタリソースに使うデータを格納する。この方式には以下のような欠点があり、DRBDはこれに対処できる。
総じて、共有ストレージに対して、安価で冗長構成が可能となるところに、優位点がある。
DRBDの課題.
DRBDは安価で、かつ汎用性の高い構成で冗長化を構成できるメリットがある反面、いくつかの課題も存在する。
総じて、中・小規模システムへの適用には向いているが、大規模構成への適用には向いていない可能性を考慮しなければならない。
用途.
DRBDはLinuxのブロックデバイスとして次の用途に使用可能である。
DRBDを使ったクラスタは、ファイルサーバやデータベース（MySQLなど）といった負荷に同期レプリケーションと高可用性を提供するのに使われる。
Linuxカーネルでの採用.
DRBD開発者は、このソフトウェアをLinuxカーネルコミュニティに2007年7月に提出し、将来のLinuxカーネルにDRBDを含めることを希望していた。長い議論の末、2010年2月24日にリリースされたLinuxカーネル 2.6.33に取り込まれた。