web-dev-qa-db-ja.com

rawディスクブロックデバイス上のDRBD

RawディスクデバイスにDRBDをセットアップしようとしています/dev/sdbパーティションテーブルなし、LVMスタックPV/VG/LVなし

このディスクは仮想であり、私が使用するハイパーバイザーはオンザフライでディスクを拡張できるため、DRBDファイルシステムを拡張するときにLVMの操作やパーティションの再作成に煩わされたくありません。

私のリソース定義はより単純にすることはできません

resource data {
  device  /dev/drbd1;
  meta-disk internal;
  disk    /dev/sdb;
  on node1 {
    address 10.10.10.16:7789;
  }
  on node2 {
    address 10.10.10.17:7789;
  }
}

メタデータ作品を作成する

# drbdadm create-md data
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.

しかし、アタッチ操作は失敗します

 # drbdadm attach data
 1: Failure: (127) Device minor not allocated
 additional info from kernel:
 unknown minor
 Command 'drbdsetup-84 attach 1 /dev/sdb /dev/sdb internal' terminated with exit code 10

エラーメッセージは、コマンドがパーティションテーブルインデックスをデバイスのマイナーコードとして期待しているように聞こえます。

RawデバイスをDRBDリソースに接続するにはどうすればよいですか?

7
Yves Martin

Debian DRBDパッケージの非常に特殊なケースでは、「データのアタッチ」を操作する必要はありません。

以下は、DebianでDRBDを起動して実行するための最小限の手順です。

  • 通常は/etc/drbd.d/data.resを定義するために、両方のノードでリソースファイル/dev/drbd1を作成します(このボリューム番号1をビットマップのクリア操作で思い出してください!)
  • 両方のノードでdrbdadm create-md dataを呼び出す
  • 両方のノードでサービスを開始します。お互いの準備ができるまで待つ必要があります:systemctl start drbd.service
  • Connectedの状態をdrbdadm cstate dataで確認します。 そうでない場合は、先に進まないでくださいサービスの起動またはネットワーク接続の問題が解決されるまで。
  • primaryノードのみで、ビットマップをクリアして、無駄な初期同期を防止します:drbdadm -- --clear-bitmap new-current-uuid data/1(最後のパラメーターを気にする:resourceName/volumeNumber
  • primaryノードのみ、ノードをprimaryとして昇格:drbdadm primary data

その時点から、primaryノードでは、blockdevmkfsなどの通常のブロック操作で/dev/drbd1デバイスを使用できます。

注意してビットマップのクリア操作をトリガーすると、セカンダリノードのデータが回復不能になります。ちなみに、セカンダリノードストレージが数時間にわたって完全に書き込まれるのを防ぎ、仮想化レイヤーがストレージにブロックを割り当てるように強制するため、初期セットアップには本当に便利です。

1
Yves Martin

drbdadm attach dataは、メタデータの作成後に使用する唯一のコマンドではありません。

デバイスを起動するには、次のいずれかの手順が機能します。

# drbdadm create-md data
# drbdadm up data

-または-

# drbdadm create-md data
# drbdsetup-84 new-resource data
# drbdsetup-84 new-minor data 1 0 
# drbdmeta 1 v08 /dev/sdb internal apply-al 
# drbdsetup-84 attach 1 /dev/sdb /dev/sdb internal
# drbdsetup-84 connect data ipv4:10.10.10.16:7789 ipv4:10.10.10.17:7789 --protocol=C

これを完了すると、接続状態が「接続済み」で、ディスク状態が「不整合/不整合」のデバイスができます。これは常に、または両方のノードで新しいメタデータを作成した後にのみ当てはまります。そこから、プライマリに昇格するノードを1つ選択するだけで、DRBDがプライマリから同期されます->セカンダリ:

# drbdadm primary data --force 

通常の状況では、今後「--force」を使用してDRBDデバイスを昇格させる必要はありません。

しかし、あなたも言った:

このディスクは仮想であり、私が使用するハイパーバイザーはオンザフライのディスク拡張を許可しているので、DRBDファイルシステムを拡張するときにLVMの操作やパーティションの再作成に煩わされたくありません。

これはおそらくDRBDでは機能しません。 DRBDはそのメタデータをブロックデバイスの最後に配置し、そのメタデータでブロック数(およびその他)が追跡されます。バッキングブロックデバイスを動的に拡張すると、問題が発生する可能性があります。

5
Matt Kereczman