DRBDの概要
DRBDは、ハイアベイラビリティ(HA)クラスタを構成するときに有用なブロックデバイスを提供します。可能であれば専用のネットワークを使って、 2台のコンピュータのブロックデバイスの間でデータをミラーします。ネットワーク越しのRAID 1と考えるのがわかりやすいでしょう。
News!! 「DRBDユーザーズガイド」の日本語版ができました!!
こちらからどうぞ。DRBDのしくみとHAクラスタの構成要件
DRBDは、受け取ったデータをローカルホストのディスクに書き込むと同時に、もう1台のホストにそれを送ります。もう1台のホスト側のDRBDは、受け取ったデータをディスクに書き込みます。
クラスタシステムを構成する場合、クラスタメンバーシップを管理するソフトウェア、通常はheartbeatが必要です。さらに、DRBDが提供するブロックデバイスを利用する次のようなアプリケーションも必要です。
- 任意のファイルシステムとfsckコマンド
- ジャーナリングファイルシステム
- リカバリ機能を備えたデータベースシステム
動作の説明
1つのDRBDは、同時に複数のブロックデバイスを管理できます。個々のデバイスはプライマリあるいはセカンダリという「状態」を持ちます。デバイスがプライマリ状態の場合、そのホスト上で動作するアプリケーションは、/dev/drbd
プライマリノードがダウンすると、heartbeatはセカンダリノードのDRBDの状態をプライマリに変更します。ジャーナリングファイルシステムを使っていない場合は、fsckによるファイルシステムチェックが行われ、その後アプリケーションが起動します。
ダウンしていたノードが復旧したら、そのノードはセカンダリ状態になり、プライマリノードとの間でディスク内容を同期させます。この同期作業はアプリケーションの背後で実行され、サービスの中断は生じません。
当然のことですが、この再同期の対象は、ディスク内容が書き換えられた部分だけです。このように、DRBDは可能な限り「インテリジェントな再同期」を実行します。DRBD-0.7以降のバージョンでは、「アクティブセット」を定義しておくことができ、これによってディスクサイズ(最大4テラバイト)に関わらず再同期時間を1〜3分程度に抑えられます。ハードディスクが完全に壊れた場合でも、この高速な再同期は変わりません。
DRBDとHAクラスタの関係
ほとんどのHAクラスタシステムは、「共有ディスク」を使っています。このデバイスは、SCSIケーブルやファイバチャネルを使って、同時に複数のホストに接続されます。
DRBDも、概念的には同様の共有デバイスになります。しかし高価で特殊なデバイスを必要としません。代わりに一般的なIPネットワークを利用するので、安価で簡単に構成することができます。
DRBDとクラスタファイルシステム
DRBDは、一方のノードがプライマリ、他方がセカンダリとして動作します。これは、古典的なフェールオーバ・クラスタの場合の推奨モードです。この場合、一般的に使われているジャーナルファイルシステム(ext3、XFS、JFSなど)を使ってください。
DRBD-8.0.0以降のバージョンでは、両ノードを同時にプライマリにすることができ、OCFS2やGFSなどのクラスタファイルシステムをマウントできるようになりました。