クラスタについて

OSS

ネットワークミラーリング用ソフト「DRBD」

DRBDの概要

DRBD(Distributed Replicated Block Device)は、クラスタシステムでデータ共有を行うために使われるネットワークミラーリング用のソフトウェアです。Philipp Reisner氏が開発し、現在はオーストリアのLinbit社が開発、サポートを行っているオープンソースソフトウェアです。DRBDは、デバイスドライバとして提供され、Linuxカーネル 2.6.33以降からカーネルソースコードに統合されています。

DRBDは、クラスタノード間で、ネットワーク経由でディスクのミラーリングを行うことができるだけでなく、HAクラスタで利用するために必要な仕組みを備えています。

DRBDはオーストリアLINBIT社の各国における登録商標または商標です。

リアルタイムデータ同期

DRBDは、カーネル内のファイルシステムとハードディスクドライバの間で動作します。アプリケーションがファイルシステムにデータを書き込んだり変更したりすると、そのデータはローカルなハードディスクへ書き込まれるのと同時に、別のノードへ送られ、そちらでも書き込まれます。この仕組みによって、リアルタイムにデータ同期が行われます。

図:リアルタイムデータ同期

シェアードナッシング

共有ストレージを使ったクラスタの構成では、データまで二重化することができません。つまり、「データ」が単一障害点となってしまいます。

しかし、DRBDは、2台のサーバでデータをミラーリングするため、データまでを完全に二重化することができます。これは、シェアードナッシングと呼ばれ、DRBDを採用する最も大きな理由の一つです。

ディスク同期機能

片側のノードが停止していたりすると、リアルタイムな同期を行うことができません。そのため、ノードを起動した後で、データを強制的に同期する必要があります。DRBDでは、この同期方法として、差分同期と全同期の2種類をサポートしています。

差分同期は、既に持っているデータとの差分だけを交換する方法です。データの変更が少ない場合には、差分同期を使うことで、高速に同期処理を行うことができます。一方、データの変更が多い場合には、すべてのデータをコピーすることもできます。

同期を効率よく行うことができるのも、DRBDの特徴であると言えます。

排他制御機能

DRBDによるデータの同期は、ノード間で双方向に行うことができます。そのため、DRBDを利用する場合でも、共有ハードディスクの場合と同様に、同時利用によるデータ破壊のリスクを考慮する必要があります。

DRBDは、この問題を考慮して、安全に利用するための排他制御の仕組みを持っています。DRBDでは、共有ディスク領域でデータを使えるノードをプライマリノードと呼びます。また、データのミラーを持っていても、データを使えないノードをセカンダリノードと呼びます。一度に、一つのノードしかプライマリノードにできないため、完全にデータを保護することができます。

なお、DRBDでは、この排他制御機能を停止し、2台のノードをマスタサーバにすることもできます。この機能を使う場合には、OCFS2、GFSなどの特殊なファイルシステムを利用する必要があります。

参考情報