目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise High Availabilityのドキュメント / 管理ガイド / ストレージとデータレプリケーション / DRBD
適用項目 SUSE Linux Enterprise High Availability 15 SP6

23 DRBD

分散複製ブロックデバイス(DRBD*)を使用すると、IPネットワーク内の2つの異なるサイトに位置する2つのブロックデバイスのミラーを作成できます。Corosyncとともに使用すると、DRBDは分散高可用性Linuxクラスタをサポートします。この章では、DRBDのインストールとセットアップの方法を示します。

23.1 概念の概要

DRBDは、プライマリデバイス上のデータをセカンダリデバイスに、データの両方のコピーが同一に保たれるような方法で複製します。これは、ネットワーク型のRAID 1と考えてください。DRBDは、データをリアルタイムでミラーリングするので、そのレプリケーションは連続的に起こります。アプリケーションは、実際そのデータがさまざまなディスクに保存されるということを知る必要はありません。

DRBDは、Linuxカーネルモジュールであり、下端のI/Oスケジューラと上端のファイルシステムの間に存在しています(図23.1「Linux内でのDRBDの位置」参照)。DRBDと通信するには、高レベルのコマンドdrbdadmを使用します。柔軟性を最大にするため、DRBDには、低レベルのツールdrbdsetupが付いてきます。

Linux内でのDRBDの位置
図 23.1: Linux内でのDRBDの位置
重要
重要: 暗号化されないデータ

ミラー間のデータトラフィックは暗号化されません。データ交換を安全にするには、接続に仮想プライベートネットワーク(VPN)ソリューションを導入する必要があります。

DRBDでは、Linuxでサポートされる任意のブロックデバイスを使用できます。通常は次のデバイスです。

  • パーティションまたは完全なハードディスク

  • ソフトウェアRAID

  • LVM (Logical Volume Manager)

  • EVMS (Enterprise Volume Management System)

DRBDは、デフォルトでは、DRBDノード間の通信にTCPポート7788以上を使用します。使用しているポートの通信がファイアウォールで許可されていることを確認してください。

まず、DRBDデバイスを設定してから、その上にファイルシステムを作成する必要があります。ユーザデータに関することはすべて、rawデバイスではなく、/dev/drbdNデバイスを介してのみ実行される必要があります。これは、DRBDが、メタデータ用にrawデバイスの最後の部分を使用するからです。rawデバイスを使用すると、データが矛盾する原因となります。

udevの統合により、/dev/drbd/by-res/RESOURCESの形式でシンボリックリンクも取得されます。このリンクは、より簡単に使用でき、デバイスのマイナー番号を誤って記憶しないように安全対策が講じられています。

たとえば、rawデバイスのサイズが1024MBの場合、DRBDデバイスは、1023MBしかデータ用に使用できません。70KBは隠され、メタデータ用に予約されています。rawディスクを介した既存のキロバイトへのアクセスは、それがユーザデータ用でないので、すべて失敗します。

23.2 DRBDサービスのインストール

パートI「インストールおよびセットアップ」で説明されているように、High Availabilityパターンをネットワーククラスタの両方のSUSE Linux Enterprise Serverマシンにインストールします。このパターンをインストールすると、DRBDプログラムファイルもインストールされます。

クラスタスタック全体を必要とせず、DRBDのみを使用したい場合、パッケージdrbddrbd-kmp-FLAVORdrbd-utils、およびyast2-drbdをインストールしてください。

23.3 DRBDサービスの設定

注記
注記: 必要な調整

次の手順では、サーバ名としてaliceとbobを使用し、DRBDリソース名としてr0を使用します。aliceをプライマリノードとして設定し、/dev/disk/by-id/example-disk1をストレージとして設定します。必ず、手順を変更して、ご使用のノード名とファイルの名前を使用してください。

次の項では、aliceとbobという2つのノードがあり、それぞれがTCPポート7788を使用するものと想定しています。ファイアウォールでこのポートが開いているようにしてください。

  1. システムを準備します。

    1. Linuxノード内のブロックデバイスを準備し、(必要な場合は)パーティション分割しておいてください。

    2. ディスクに、必要のなくなったファイルシステムがすでに含まれている場合は、次のコマンドでファイルシステムの構造を破壊します。

      # dd if=/dev/zero of=YOUR_DEVICE count=16 bs=1M

      破壊する、より多くのファイルシステムがある場合は、DRBDセットアップに含むすべてのデバイス上でこのステップを繰り返します。

    3. クラスタがすでにDRBDを使用している場合は、クラスタを保守モードにします。

      # crm configure property maintenance-mode=true

      クラスタがすでにDRBDを使用している場合に、この手順をスキップすると、ライブ設定の構文エラーによってサービスがシャットダウンされます。

      別の方法として、drbdadm -c FILEを使用して設定ファイルをテストすることもできます。

  2. 次のいずれかの方法を選択してDRBDを設定します。

  3. Csync2 (デフォルト)を設定している場合、DRBD設定ファイルは、同期に必要なファイルのリストにすでに含まれています。これらを同期するには、次のコマンドを実行します。

    # csync2 -xv

    Csync2を設定していない場合(または使用しない場合)には、DRBD設定ファイルを手動で他のノードにコピーしてください。

    # scp /etc/drbd.conf bob:/etc/
    # scp /etc/drbd.d/* bob:/etc/drbd.d/
  4. 初期同期を実行します(23.3.3項 「DRBDリソースの初期化とフォーマット」を参照してください)。

  5. クラスタの保守モードフラグをリセットします。

    # crm configure property maintenance-mode=false

23.3.1 手動によるDRBDの設定

注記
注記: 自動プロモート機能の限定サポート

DRBD9自動プロモート機能は、デバイスの1つがマウントされているか、書き込み用に開かれている場合に、リソースを自動的にプライマリロールにプロモートできます。

自動プロモート機能は現在サポートが限定されています。DRBD 9では、SUSEはDRBD-8でもサポートされていた使用例と同じ使用例をサポートしています。3つ以上のノードでのセットアップなど、それを超える使用例はサポートされていません。

DRBDを手動で設定するには、次の手順に従います。

手順 23.1: DRBDの手動設定

DRBDバージョン8.3以降、これまで使用されてきた設定ファイルは、複数のファイルに分割され、/etc/drbd.d/ディレクトリに保存されています。

  1. ファイル/etc/drbd.d/global_common.confを開きます。すでにグローバルな事前定義された値が含まれています。startupセクションに移動し、次の行を挿入します。

    startup {
        # wfc-timeout degr-wfc-timeout outdated-wfc-timeout
        # wait-after-sb;
        wfc-timeout 100;
        degr-wfc-timeout 120;
    }

    これらのオプションは、ブート時のタイムアウトを減らすために使用します。詳細については、https://docs.linbit.com/docs/users-guide-9.0/#ch-configureを参照してください。

  2. ファイル/etc/drbd.d/r0.resを作成します。状況に応じて行を変更し、保存します。

    resource r0 { 1
      device /dev/drbd0; 2
      disk /dev/disk/by-id/example-disk1; 3
      meta-disk internal; 4
      on alice { 5
        address  192.168.1.10:7788; 6
        node-id 0; 7
      }
      on bob { 5
        address 192.168.1.11:7788; 6
        node-id 1; 7
      }
      disk {
        resync-rate 10M; 8
      }
      connection-mesh { 9
        hosts alice bob;
      }
    }

    1

    関連サービスを示すDRBDリソース名。たとえば、nfshttpmysql_0postgres_walなどです。この例では、より一般的な名前r0が使用されています。

    2

    DRBD用デバイス名とそのマイナー番号。

    先に示した例では、マイナー番号0がDRBDに対して使用されています。udev統合スクリプトは、シンボリックリンク(/dev/drbd/by-res/nfs/0)を提供します。または、設定のデバイスノード名を省略し、代わりに次のラインを使用します。

    drbd0 minor 0 (/dev/はオプション)または/dev/drbd0

    3

    ノード間で複製されるrawデバイス。ただし、この例では、デバイスは両方のノードで「同じ」です。異なるデバイスが必要な場合は、diskパラメータをonホストに移動します。

    4

    meta-diskパラメータには、通常、値internalが含まれますが、メタデータを保持する明示的なデバイスを指定することもできます。詳細については、https://docs.linbit.com/docs/users-guide-9.0/#s-metadataを参照してください。

    5

    onセクションでは、この設定文が適用されるホストを記述します。

    6

    それぞれのノードのIPアドレスとポート番号。リソースごとに、通常、7788から始まる別個のポートが必要です。1つのDRBDリソースに対して両方のポートが同じである必要があります。

    7

    複数のノードを設定する際は、ノードIDが必要です。ノードIDは、別々のノードを区別するための固有の負でない整数です。

    8

    同期レート。このレートは、ディスク帯域幅およびネットワーク帯域幅の3分の1に設定します。これは、再同期を制限するだけで、レプリケーションは制限しません。

    9

    同一メッシュのすべてのノードを設定します。hostsパラメータには、同じDRBDセットアップを共有するすべてのホスト名が含まれます。

  3. 環境設定ファイルの構文をチェックします。次のコマンドがエラーを返す場合は、ファイルを検証します。

    # drbdadm dump all
  4. 23.3.3項 「DRBDリソースの初期化とフォーマット」に進みます。

23.3.2 YaSTによるDRBDの設定

YaSTを使用して、DRBDの初期セットアップを開始できます。DRBDセットアップの作成後、生成されたファイルを手動で調整できます。

ただし、設定ファイルを変更した後にYaST DRBDモジュールを使用しないでください。DRBDモジュールでサポートされているのは、限られた一連の基本設定のみです。これを再使用すると、モジュールに変更が表示されない場合があります。

YaSTを使ってDRBDを設定するには、次の手順に従います。

手順 23.2: YaSTを使用してDRBDを設定
  1. YaSTを起動して、設定モジュール高可用性 › DRBDを選択します。すでにDRBDを設定していた場合、YaSTはそのことを警告します。YaSTは、設定を変更し、元のDRBD設定ファイルを*.YaSTsaveとして保存します。

  2. 起動設定 › ブートのブートフラグは、そのままにしてください(デフォルトではoff)。Pacemakerがこのサービスを管理するので変更しないでください。

  3. ファイアウォールが実行中の場合は、ファイアウォールでポートを開くを有効にします。

  4. リソース設定エントリに移動します。追加を選択して、新しいリソースを作成します(図23.2「リソースの環境設定」を参照してください)。

    リソースの環境設定
    図 23.2: リソースの環境設定

    次のパラメータを設定する必要があります。

    リソース名

    DRBDリソースの名前(必須)。

    名前

    関連するノードのホスト名。

    アドレス:ポート

    それぞれのノードのIPアドレスとポート番号(デフォルトは7788)。

    デバイス

    複製されたデータにアクセスするためのブロックデバイスパス。デバイスにマイナー番号が使用されている場合は、関連付けられたブロックデバイスの名前は/dev/drbdXになることが普通です。Xはデバイスのマイナー番号です。デバイスにマイナー番号が使用されていない場合は、必ずデバイス名の後にminor 0を追記します。

    ディスク

    両方のノード間で複製されるrawデバイス。LVMを使用する場合、LVMデバイス名を挿入します。

    メタディスク

    メタディスクは、値internalに設定されるか、またはインデックスで拡張された、DRBDで必要なメタデータを保持する明示的なデバイスを指定します。

    複数のDRBDリソースに実際のデバイスを使用することもできます。たとえば、最初のリソースに対してメタディスク/dev/disk/by-id/example-disk6[0]の場合、/dev/disk/by-id/example-disk6[1]を2番目のリソースに使用できます。ただし、このディスク上で各リソースについて少なくとも128 MBのスペースが必要です。メタデータの固定サイズによって、複製できる最大データサイズが制限されます。

    これらのオプションはすべて、ファイル/usr/share/doc/packages/drbd/drbd.confおよびdrbd.conf(5)のマニュアルページで説明されています。

  5. 保存をクリックします。

  6. 追加をクリックして、2番目のDRBDリソースを入力し、保存をクリックして終了します。

  7. OK完了をクリックして、[リソース設定]を閉じます。

  8. DRBDでLVMを使用する場合、LVM設定ファイルで特定のオプションを変更する必要があります(LVM設定エントリを参照してください)。この変更は、YaST DRBDモジュールを使用して自動的に実行できます。

    DRBDリソースのローカルホストのディスク名およびデフォルトのフィルタはLVMフィルタで拒否されます。LVMデバイスをスキャンできるのは/dev/drbdのみです。

    たとえば、/dev/disk/by-id/example-disk1をDRBDディスクとして使用している場合、そのデバイス名がLVMフィルタの最初のエントリとして挿入されます。フィルタを手動で変更するには、Modify LVM Device Filter Automatically (LVMデバイスフィルタを自動的に変更)チェックボックスをクリックします。

  9. 完了をクリックして、変更を保存します。

  10. 23.3.3項 「DRBDリソースの初期化とフォーマット」に進みます。

23.3.3 DRBDリソースの初期化とフォーマット

システムを準備してDRBDを設定したら、ディスクの初回の初期化を行います。

  1. 両ノード(aliceとbob)でメタデータストレージを初期化します。

    # drbdadm create-md r0
    # drbdadm up r0
  2. DRBDリソースの初期再同期を短縮する場合は、次のことを確認します。

    • すべてのノード上のDRBDデバイスが同じデータを持つ場合(たとえば、ddに示すように23.3項 「DRBDサービスの設定」コマンドでファイルシステム構造を破壊することによる)、次のコマンドを使用して初期再同期をスキップします(両ノード)。

      # drbdadm new-current-uuid --clear-bitmap r0/0

      状態はSecondary/Secondary UpToDate/UpToDateのはずです。

    • その後、次のステップに進みます。

  3. プライマリノードのaliceから再同期プロセスを開始します。

    # drbdadm primary --force r0
  4. 以下を使用してステータスをチェックします。

    # drbdadm status r0
    r0 role:Primary
      disk:UpToDate
      bob role:Secondary
      peer-disk:UpToDate
  5. DRBDデバイスの上にファイルシステムを作成します。たとえば、次のように指定します。

    # mkfs.ext3 /dev/drbd0
  6. ファイルシステムをマウントして使用します。

    # mount /dev/drbd0 /mnt/

23.3.4 DRBDのクラスタリソースを作成する

DRBDデバイスを初期化した後、クラスタリソースを作成して、DRBDデバイスおよびプロモータブルクローンを管理し、このリソースを両ノード上で実行できるようにします。

手順 23.3: DRBDのクラスタリソースを作成する
  1. crmインタラクティブシェルを起動します。

    # crm configure
  2. DRBDリソースr0のプリミティブを作成します。

    crm(live)configure# primitive drbd-r0 ocf:linbit:drbd \
      params drbd_resource="r0" \
      op monitor interval=15 role=Promoted \
      op monitor interval=30 role=Unpromoted
  3. drbd-r0プリミティブのプロモータブルクローンを作成します。

    crm(live)configure# clone cl-drbd-r0 drbd-r0 \
      meta promotable="true" promoted-max="1" promoted-node-max="1" \
      clone-max="2" clone-node-max="1" notify="true" interleave=true
  4. この設定をコミットします。

    crm(live)configure# commit

23.4 DRBD 8から DRBD 9への移行

DRBD 8 (SUSE Linux Enterprise High Availability 12 SP1に付属)とDRBD 9 (SUSE Linux Enterprise High Availability 12 SP2に付属)間で、メタデータフォーマットが変更されました。DRBD 9では、以前のメタデータファイルが新しいフォーマットに自動的に変換されません。

12 SP2に移行した後で、DRBDを開始する前に、DRBDメタデータをバージョン9フォーマットに手動で変換します。これにはdrbdadm create-mdを使用します。設定を変更する必要はありません。

注記
注記: 限定サポート

DRBD 9では、SUSEはDRBD-8でもサポートされていた使用例と同じ使用例をサポートしています。3つ以上のノードでのセットアップなど、それを超える使用例はサポートされていません。

DRBD 9は、バージョン8と互換性を持つように切り替わります。3つ以上のノードの場合、DRBDバージョン9固有のオプションを使用するため、メタデータを再作成する必要があります。

スタックされたDRBDリソースがある場合は、詳細について23.5項 「スタックされたDRBDデバイスの作成」も参照してください。

新しいリソースを再作成せずにデータを保持し、新しいノードを追加することを許可する場合は、次の操作を実行します。

  1. 1つのノードをスタンバイモードで設定します。

  2. ノードのすべてでDRBDパッケージのすべてを更新します。23.2項 「DRBDサービスのインストール」を参照してください。

  3. リソース設定に新しいノード情報を追加します。

    • onセクションごとにnode-id

    • connection-meshセクションには、hostsパラメータにすべてのホスト名が含まれています。

    手順23.1「DRBDの手動設定」のサンプル設定を参照してください。

  4. internalmeta-diskキーとして使用する場合は、DRBDディスクのスペースを拡大します。LVMのようなスペースの拡大をサポートするデバイスを使用します。別の方法として、メタデータ用の外部ディスクに変更して、meta-disk DEVICE;を使用します。

  5. 新しい設定に基づいてメタデータを再作成します。

    # drbdadm create-md RESOURCE
  6. スタンバイモードをキャンセルします。

23.5 スタックされたDRBDデバイスの作成

スタックされたDRBDデバイスには少なくとも一方のデバイスがDRBDリソースでもある2つの他のデバイスが含まれます。すなわち、DRBDは既存のDRBDリソースの最上部にノードを追加します(図23.3「リソースのスタッキング」を参照してください)。このようなレプリケーションセットアップは、バックアップおよび障害復旧目的に使用できます。

リソースのスタッキング
図 23.3: リソースのスタッキング

Three-wayレプリケーションは、非同期(DRBDプロトコルA)と同期レプリケーション(DRBDプロトコルC)を使用します。非同期部分はスタックされたリソースに使用され、同期部分はバックアップに使用されます。

ご使用の運用環境ではスタックされたデバイスを使用します。たとえば、DRBDデバイス/dev/drbd0があり、その上にスタックされたデバイス/dev/drbd10がある場合、ファイルシステムは/dev/drbd10に作成されます。詳しく詳細については「例23.1「3ノードのスタックされたDRBDリソースの設定」」を参照してください。

例 23.1: 3ノードのスタックされたDRBDリソースの設定
# /etc/drbd.d/r0.res
resource r0 {
  protocol C;
  device    /dev/drbd0;
  disk      /dev/disk/by-id/example-disk1;
  meta-disk internal;

  on amsterdam-alice {
    address    192.168.1.1:7900;
  }

  on amsterdam-bob {
    address    192.168.1.2:7900;
  }
}

resource r0-U {
  protocol A;
  device     /dev/drbd10;

  stacked-on-top-of r0 {
    address    192.168.2.1:7910;
  }

  on berlin-charlie {
    disk       /dev/disk/by-id/example-disk10;
    address    192.168.2.2:7910; # Public IP of the backup node
    meta-disk  internal;
  }
}

23.6 STONITHでのリソースレベルのフェンシングの使用

DRBDレプリケーションリンクが途切れた場合、PacemakerはDRBDリソースを別のノードにプロモートしようとします。Pacemakerが古いデータでサービスを開始しないようにするため、DRBD設定ファイルでリソースレベルのフェンシングを有効にします。

フェンシングポリシーには異なる値を指定できます(マニュアルページdrbdsetupおよび--fencingオプションを参照してください)。SUSE Linux Enterprise High Availabilityクラスタは通常、STONITHデバイスで使用されるため、resource-and-stonithの値が例23.2「クラスタ情報ベース(CIB)を使用したリソースレベルのフェンシングを含むDRBDの設定」で使用されます。

例 23.2: クラスタ情報ベース(CIB)を使用したリソースレベルのフェンシングを含むDRBDの設定
resource RESOURCE {
  net {
    fencing resource-and-stonith;
    # ...
  }
  handlers {
    fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh";
    after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh";
    # ...
  }
  ...
}

DRBDレプリケーションリンクが切断されると、DRBDは以下を実行します。

  1. DRBDはcrm-fence-peer.9.shスクリプトを呼び出します。

  2. スクリプトはクラスタマネージャに連絡します。

  3. スクリプトはこのDRBDリソースに関連付けられたPacemakerリソースを判断します。

  4. スクリプトは、このDRBDリソースが他のノードにプロモートされないことを確認します。リソースは現在アクティブなノード上に留まります。

  5. レプリケーションリンクがもう一度接続され、DRBDがその同期プロセスを完了すると、制限が解除されます。クラスタマネージャは自由にリソースをプロモートできるようになります。

23.7 DRBDサービスのテスト

インストールと設定のプロシージャが予期どおりの結果となった場合は、DRBD機能の基本的なテストを実行できます。このテストは、DRDBソフトウェアの機能を理解する上でも役立ちます。

  1. alice上でDRBDサービスをテストします。

    1. 端末コンソールを開き、rootとしてログインします。

    2. aliceにマウントポイント(/srv/r0など)を作成します。

      # mkdir -p /srv/r0
    3. drbdデバイスをマウントします。

      # mount -o rw /dev/drbd0 /srv/r0
    4. プライマリノードからファイルを作成します。

      # touch /srv/r0/from_alice
    5. aliceでディスクをマウント解除します。

      # umount /srv/r0
    6. aliceで次のコマンドを入力して、aliceのDRBDサービスを降格します。

      # drbdadm secondary r0
  2. bob上でDRBDサービスをテストします。

    1. 端末コンソールを開き、bobでrootとしてログインします。

    2. bobで、DRBDサービスをプライマリに昇格します。

      # drbdadm primary r0
    3. bobで、bobがプライマリかどうかチェックします。

      # drbdadm status r0
    4. bobで、/srv/r0などのマウントポイントを作成します。

      # mkdir /srv/r0
    5. bobで、DRBDデバイスをマウントします。

      # mount -o rw /dev/drbd0 /srv/r0
    6. aliceで作成したファイルが存在していることを確認します。

      # ls /srv/r0/from_alice

      /srv/r0/from_aliceファイルが一覧に表示されている必要があります。

  3. サービスが両方のノードで稼働していれば、DRBDの設定は完了です。

  4. 再度、aliceをプライマリとして設定します。

    1. bobで次のコマンドを入力して、bobのディスクをマウント解除します。

      # umount /srv/r0
    2. bobで次のコマンドを入力して、bobのDRBDサービスを降格します。

      # drbdadm secondary r0
    3. aliceで、DRBDサービスをプライマリに昇格します。

      # drbdadm primary r0
    4. aliceで、aliceがプライマリかどうかチェックします。

      # drbdadm status r0
  5. サービスを自動的に起動させ、サーバに問題が発生した場合はフェールオーバーさせるためには、Pacemaker/CorosyncでDRBDを高可用性サービスとして設定できます。SUSE Linux Enterprise 15 SP6のインストールと設定については、パートII「設定および管理」を参照してください。

23.8 DRBDデバイスの監視

DRBDには、リアルタイム監視用のdrbdmonユーティリティが付属しています。このユーティリティにより、設定されているすべてのリソースの状態と、それらのリソースで発生している問題が示されます。

drbdmonが示す正常な接続
図 23.4: drbdmonが示す正常な接続

問題がある場合、drbdadmに次のエラーメッセージが表示されます。

drbdmonが示す異常な接続
図 23.5: drbdmonが示す異常な接続

23.9 DRBDのチューニング

DRBDをチューニングするには、いくつかの方法があります。

  1. メタデータ用には外部ディスクを使用します。これは便利ですが、保守作業は煩雑になります。

  2. sysctlを介して受信バッファ設定および送信バッファ設定を変更することで、ネットワーク接続を調整します。

  3. DRBD設定でmax-epoch-sizemax-buffers、またはその両方を変更します。

  4. IOパターンに応じて、al-extentsの値を増やします。

  5. ハードウェアRAIDコントローラとBBU (「バッテリバックアップユニット」)を併用する場合、no-disk-flushesno-disk-barrier、およびno-md-flushesの設定が有効な場合があります。

  6. ワークロードに従って読み込みバランスを有効にします。詳しくは「https://www.linbit.com/en/read-balancing/」を参照してください。

23.10 DRBDのトラブルシュート

DRBDセットアップには、多数のコンポーネントが使用され、別のソースから問題が発生することがあります。以降の各セクションでは、一般的なシナリオをいくつか示し、ソリューションを提示します。

23.10.1 設定

初期のDRBDセットアップが予期どおりに機能しない場合は、設定に問題がある場合があります。

環境設定の情報を取得するには:

  1. 端末コンソールを開き、rootとしてログインします。

  2. drbdadm-dオプションを指定して、環境設定ファイルをテストします。次のコマンドを入力します。

    # drbdadm -d adjust r0

    adjustオプションのドライ実行では、drbdadmは、DRBDリソースの実際の設定を使用中のDRBD環境設定ファイルと比較しますが、コールは実行しません。出力をレビューして、エラーのソースおよび原因を確認してください。

  3. /etc/drbd.d/*ファイルおよびdrbd.confファイルにエラーがある場合は、それらのエラーを修正してから続行します。

  4. パーティションと設定が正しい場合は、drbdadm-dオプションなしで、再度実行します。

    # drbdadm adjust r0

    このコマンドは、環境設定ファイルをDRBDリソースに適用します。

23.10.2 ホスト名

DRBDの場合、ホスト名の大文字と小文字が区別され(Node0node0とは異なるホストであるとみなされる)、カーネルに格納されているホスト名と比較されます(uname -n出力を参照)。

複数のネットワークデバイスがあり、専用ネットワークデバイスを使用したい場合、ホスト名は使用されたIPアドレスに解決されない場合があります。この場合は、パラメータdisable-ip-verificationを使用します。

23.10.3 TCPポート7788

システムがピアに接続できない場合は、ローカルファイアウォールに問題のある可能性があります。DRBDは、デフォルトでは、TCPポート7788を使用して、もう一方のノード にアクセスします。このポートを両方のノード からアクセスできるかどうか確認してください。

23.10.4 DRBDデバイスが再起動後に破損した

DRBDサブシステムが実際のどのデバイスが最新データを保持しているか認識していない場合、スプリットブレイン状態に変更されます。この場合、それぞれのDRBDサブシステムがセカンダリとして起動され、互いに接続しません。この場合、ログ記録データに、次のメッセージが出力されることがあります。

Split-Brain detected, dropping connection!

この状況を解決するには、廃棄するデータを持つノードで、次のコマンドを入力します。

# drbdadm secondary r0

状態がWFconnectionの場合、最初に切断します。

# drbdadm disconnect r0

最新のデータを持つノードで、次のコマンドを入力します。

# drbdadm connect  --discard-my-data r0

このコマンドは、あるノードのデータをピアのデータで上書きすることによって問題を解決するため、両方のノードで一貫したビューが得られます。

23.11 詳細の参照先

DRBDについては、次のオープンソースリソースを利用できます。

  • プロジェクトホームページhttps://www.drbd.org

  • Highly Available NFS Storage with DRBD and Pacemakerを参照してください。

  • ディストリビューションには、次のDRBDのマニュアルページが含まれています: drbd(8)drbdmeta(8)drbdsetup(8)drbdadm(8)drbd.conf(5)

  • コメント付きのDRBD設定例が、/usr/share/doc/packages/drbd-utils/drbd.conf.exampleにあります。

  • さらに、クラスタ間のストレージ管理を容易にするために、DRBD-Manager「」(https://www.linbit.com/en/drbd-manager/)に関する最新の通知を参照してください。