DRBDの設定方法

DRBDはLinuxのカーネル内部で動作します。カーネル内部のDRBDを操作するため、ユーザ空間で動作する設定ユーティリティプログラムが用意されています。

DRBDの設定ユーティリティには”drbdadm”と呼ばれるツールと、このツールより細かな設定が可能な”drbdmeta”、”drbdsetup”などのツールがあります。”drbdmeta”、”drbdsetup”は”drbdadm”コマンドから起動されますので、DRBDの設定は”drbdadm”コマンドの使い方を理解すれば、DRBDの設定や管理が可能です。

DRBDの設定は、この”drbdadm”に設定値パラメータを与えることで行います。設定値パラメータは/etc/drbd.d/ディレクトリに設定ファイルを配置して、その中に設定値を記述します。

設定パラメータの例を紹介します。

この設定例は、ホスト名node1とnode2のサーバがあり、それぞれ/dev/sdb1というストレージを持っており、ネットワークのアドレスが10.0.0.1と10.0.0.2になっていることを想定しています。(下図参照)


設定ファイルを/etc/drbd.d/にr0.resという名前で保存します。名前は.resの拡張子が付いていればどのようなファイル名でも良いのですが、通常は設定のresourceパラメータに合わせておきます。

設定ファイルにresourceパラメータとしてr0としましたので、drbdadmコマンドはr0を引数にして実行します。

DRBDを設定するためには、まずメタデータ領域を定義します。コマンドは次のようになります。

このコマンドはnode2でも実行します。

コマンドを実行すると/dev/sdb1の中にメタデータ領域が確保されます。この領域にはDRBDの動作に必要にいろいろな情報が含まれています。

次にDRBDを起動します。DRBDはカーネルオブジェクトなので、カーネルにモジュールを組み込む操作が必要です。drbdadmコマンドでupを実行すると、DRBDがカーネルに組み込まれて、動作が開始されます。

このコマンドはnode2でも実行します。

DRBDの状態はstatusコマンドで確認できます。

role:はDRBDの役割です。node1がSecondary、node2もSecondaryであることが判ります。DRBDはroleはPrimaryになっているノードでのみデータの書き込みができます。

disk:はDRBDで管理しているストレージの状態を表しています。両方のストレージがInconsistentなので、同期が出来ていない事が判ります。

node1で”drbdadm status r0″を実行した時にnode2が表示されない場合は、ネットワークの疎通を確認してください。多くの場合は同期に使っている10.0.0.0のネットワークのFirewallの設定が原因である場合が多いです。


この状態では、DRBDをPrimmaryにすることが出来ません。試しにPrimaryに設定するとエラーになります。

Primaryにするためには–forceオプションを付ける必要があります。

“–force”オプションを付けると、DRBDのストレージの初期同期が開始され、node1からnode2にストレージの内容がコピーされます。
初期同期中にstatusを確認すると、次のように同期の進捗を確認出来ます。

同期が終了すると、statusは次のようになります。

この状態になれば、DRBDのデバイスにアクセスできます。今回の例では/dev/drbd0がデバイスです。このデバイスにxfsのファイルシステムを作成してマウントしてみます。

node1でDRBDデバイスをマウントしている間は、node2からは/dev/drbd0にはアクセスできません。node1のDRBDをSecondaryにする必要があります。node1のマウントを解除して、DRBDを次のコマンドでSecondaryにします。

DRBD9からはAuto promoteという機能が実装されているので、”drbdadm primary r0″を実行しなくても、/dev/drbd0にアクセスすれば、roleをPrimaryに自動的に変わり、umountすると元にSecondaryに戻ります。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*