DRBD 構成 · 1 min read · Jan 28, 2026

CentOS 4.5 における DRBD のサンプル構成

CentOS 4.5 における DRBD のサンプル構成

DRBD とは?

DRBD は Distributed Replicated Block Device の略です。DRBD は高可用性クラスタを構築するために設計されたブロックデバイスです。これは、(専用の)ネットワークを介して全体のブロックデバイスをミラーリングすることによって行われます。ネットワーク RAID1 のように見ることができます。

事前構成要件:

私は次のシステム設定を持つ2つのノードを使用しました:

  1. cnode1.rnd(ホスト名)で IP アドレス 172.16.4.80。オペレーティングシステム CentOS 4.5、18 GB の SCSI ハードドライブが2台。パーティションに関しては、cnode1.rnd で次のスキームを使用しました:/dev/sda1 / 13257MB ext3 プライマリ /dev/sda2 4095MB スワップ プライマリ /dev/sdb1 マウントされていない 128MB ext3 プライマリ(DRBD のメタデータ用) /dev/sdb2 マウントされていない 4306MB ext3 プライマリ(DRBD のディスクとして使用)
  2. cnode2.rnd(ホスト名)で IP アドレス 172.16.4.81。オペレーティングシステム CentOS 4.5、10 GB の IDE ドライブが1台。cnode2.rnd で使用されたパーティションスキームは次のとおりです:/dev/hda1 / 4503MB ext3 プライマリ /dev/hda2 769MB スワップ プライマリ /dev/hda3 マウントされていない 128MB ext3 プライマリ(DRBD のメタデータ用) /dev/hda4 マウントされていない 4306MB ext3; プライマリ(DRBD のディスクとして使用)

パーティションのサイズと名前は、ディスク容量や使用するハードディスクによって異なる場合があります。要件に応じてパーティションスキームを定義できます。

両方のノード(cnode1.rnd と cnode2.rnd)の /etc/hosts ファイルは次のようになります:

127.0.0.1       localhost.localdomain       localhost
172.16.4.80     cnode1.rnd          cnode2
172.16.4.81     cnode2.rnd          cnode3

DRBD のインストール:

cnode1.rnd と cnode2.rnd に DRBD ソフトウェアと DRBD のカーネルモジュールをインストールします:

 yum install -y kmod-drbd drbd 

insmod で DRBD のカーネルモジュールをロードします:

 insmod /lib/modules/2.6.9-55.0.9.EL/extra/drbd.ko 

lsmod でモジュールがロードされていることを確認します。DRBD が表示されたら、サンプル構成セクションに進みます。

DRBD の構成:

DRBD の構成ファイルは /etc/drbd.conf です。したがって、このファイルを編集し、次の変更を加えて他のノードにコピーします(/etc/drbd.conf は両方のノードで同じになります)。

cnode1.rnd で任意のエディタを使用してこのファイルを編集します。私は vi を使用しています:

 vi /etc/drbd.conf 
resource r0 {
  protocol C;
        incon-degr-cmd "halt -f";
        startup {
    degr-wfc-timeout 120;    # 2 分。
  }
        disk {
    on-io-error   detach;
  }
        net {
  }
syncer {
        rate 3M;
        group 1;
        al-extents 257;
  }
  on cnode1.rnd {
    device    /dev/drbd0;
    disk      /dev/sdb2;
    address   172.16.4.80:7789;
    meta-disk /dev/sdb1[0];
  }
  on cnode2.rnd {
    device    /dev/drbd0;
    disk      /dev/hda4;
    address   172.16.4.81:7789;
    meta-disk /dev/hda3[0];
  }
}

変更を保存し、他のノード(cnode2.rnd)にコピーします:

 scp /etc/drbd.conf [email protected]:/etc/ 

次に、両方のノードで DRBD デーモンを起動しますが、その前に次回の再起動時に DRBD デーモンを起動したいと思います。これには、両方のノードで chkconfig コマンドを使用します。

 chkconfig --level 235 drbd on 
 /etc/init.d/drbd start 

DRBD が同期プロセスを開始したことがわかります。実行中の状態を確認できます:

 /etc/init.d/drbd status 

または

 cat /proc/drbd 

drbd.conf 構成の技術的詳細:

プロトコル:

  1. 書き込み操作は、データがディスクに書き込まれ、ネットワークに送信されるとすぐに完了します。
  2. B 書き込み操作は、受信確認が到着するとすぐに完了します。
  3. C 書き込み操作は、書き込み確認が到着するとすぐに完了します。

ホスト名:

正確に次の出力と一致する必要があります

 uname -n 

デバイス:

使用するデバイスノード:/dev/drbd0 - DRBD ブロックデバイス。

アドレス、ポート:

ローカルにバインドするための inet アドレスとポート、またはパートナーノードに接続するためのものです。

メタディスク:

メタデータを保存するためのディスク。DRBD は、実際の使用可能な生産データを配置するバックデバイスと同じ場所にメタデータを置く(内部メタデータ)か、別のブロックデバイスに置く(外部メタデータ)ことを許可します。私は外部メタデータブロックデバイスに128MBをメタデータ用に割り当てました。ただし、以下の表を参照してメタデータサイズを推定できます。

ブロックデバイスサイズDRBD メタデータ
1 GB2 MB
100 GB5 MB
1 TB33 MB
4 TB128 MB

incon-degr-cmd:

クラスタが劣化モードで起動し、不整合なデータがあることがわかっている場合に何をすべきか(下位レベルデバイスが io-error を報告する)。

on-io-error detach:

下位レベルデバイスが io-error を報告した場合、ノードはそのバックストレージデバイスをドロップし、ディスクレスモードで続行します。

degr-wfc-timeout:

接続タイムアウトを待機します。このノードが劣化したクラスタであった場合。これは wfc-timeout(クラスタタイムアウトを待機)の代わりに使用されます。

Syncer:

再同期プロセスで使用される帯域幅を制限します。

group:

1つのグループ内のすべてのデバイスは並行して再同期されます。グループの再同期は、昇順に直列化されます。

Al-extents:

ホットエリア検出を自動的に実行します。このパラメータでホットエリアの大きさを制御します。各エクステントはバックストレージ(=下位レベルデバイス)の4Mをマークします。プライマリノードが予期せずクラスタを離れた場合、アクティブセットによってカバーされるエリアは、失敗したノードの再参加時に再同期される必要があります。データ構造はメタデータエリアに保存されるため、アクティブセットの各変更はメタデータデバイスへの書き込み操作です。エクステントの数が多いほど、再同期時間が長くなりますが、メタデータへの更新は少なくなります。

することとしないこと:

DRBD をセカンダリ状態でマウントしようとしないでください。DRBD を設定したら、決してバイパスしたり、基盤となるデバイスに直接アクセスしたりしないでください!

DRBD のテスト:

cnode1.rnd をプライマリにし、プライマリノード(cnode1.rnd)のブロックデバイスを /mnt/disk にマウントします:

 drbdsetup /dev/drbd0 primary --do-what-I-say 
 mount /dev/drbd0 /mnt/disk 

いくつかのファイルとフォルダをコピーします:

 cp -r /root/documents /mnt/disk 

次に、DRBD のブロックデバイスをアンマウントし、プライマリノードを「セカンダリ」にします:

 umount /mnt/disk/ 
 drbdadm secondary all 

cnode2.rnd をプライマリにし、ブロックデバイスを /mnt/disk にマウントします:

 drbdsetup /dev/drbd0 primary --do-what-I-say 
 mount /dev/drbd0 /mnt/disk

ドキュメントが cnode2.rnd に存在することがわかります。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。