はじめに
【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション 構築編
の続きです
前提条件
- 2台の ubuntu 22.04
- Primary を node1、Secndary を node2 とする
- Primary/Secondary 共に /dev/sda をシステム、/dev/sdb をストレージレプリケーションとして利用
- node1 の IPアドレスは 192.168.100.101 とする
- node2 の IPアドレスは 192.168.100.102 とする
- マウント先は /export とする
- すでに、/dev/drbd0 として構築済み
ステータス確認
ステータス表示
- node1(primary) で
$ sudo drbdsetup status --verbose --statistics
r0 node-id:1 role:Primary suspended:no force-io-failures:no
write-ordering:flush
volume:0 minor:0 disk:UpToDate backing_dev:/dev/sdb quorum:yes
size:20970844 read:13267089 written:22303781 al-writes:848 bm-writes:186 upper-pending:0 lower-pending:0 al-suspended:no
blocked:no
node2 node-id:0 connection:Connected role:Secondary congested:no ap-in-flight:0 rs-in-flight:0
volume:0 replication:Established peer-disk:UpToDate resync-suspended:no
received:36 sent:4096512 out-of-sync:0 pending:0 unacked:0
- node2(secondary) で
$ sudo drbdsetup status --verbose --statistics
r0 node-id:0 role:Secondary suspended:no force-io-failures:no
write-ordering:flush
volume:0 minor:0 disk:UpToDate backing_dev:/dev/sdb quorum:yes
size:20970844 read:1501 written:4096548 al-writes:3 bm-writes:59 upper-pending:0 lower-pending:0
al-suspended:no blocked:no
node1 node-id:1 connection:Connected role:Primary congested:no ap-in-flight:0 rs-in-flight:0
volume:0 replication:Established peer-disk:UpToDate resync-suspended:no
received:4096512 sent:36 out-of-sync:0 pending:0 unacked:0
読み方
接続のステータス
-
StandAlone
ネットワーク構成は使用できません。リソースがまだ接続されていない、管理上の理由で切断している( drbdadm disconnect を使用)、認証の失敗またはスプリットブレインにより接続が解除された、のいずれかが考えられます。 -
Disconnecting
切断中の一時的な状態です。次の状態は StandAlone です。 -
Unconnected
接続を試行する前の一時的な状態です。次に考えられる状態は、 Connecting です。 -
Timeout
対向ノードとの通信のタイムアウト後の一時的な状態です。次の状態は Unconnected です。 -
BrokenPipe
対向ノードとの接続が失われた後の一時的な状態です。次の状態は Unconnected です。 -
NetworkFailure
対向ノードとの接続が失われた後の一時的な状態です。次の状態は Unconnected です。 -
ProtocolError
対向ノードとの接続が失われた後の一時的な状態です。次の状態は Unconnected です。 -
TearDown
一時的な状態です。対向ノードが接続を閉じています。次の状態は Unconnected です。 -
Connecting
対向ノードがネットワーク上で可視になるまでノードが待機します。 -
Connected
DRBDの接続が確立され、データミラー化がアクティブになっています。これが正常な状態です。
ディスクのステータス
-
Diskless
DRBDドライバにローカルブロックデバイスが割り当てられていません。原因として、リソースが下位デバイスに接続されなかった、 drbdadm detach を使用して手動でリソースを切り離した、または下位レベルのI/Oエラーにより自動的に切り離されたことが考えられます。 -
Attaching
メタデータ読み取り中の一時的な状態です。 -
Detaching
切断され、進行中のIO処理が完了するのを待っている一時的な状態。 -
Failed
ローカルブロックデバイスがI/O障害を報告した後の一時的な状態です。次の状態は Diskless です。 -
Negotiating
すでに Connected のDRBDデバイスで attach が実行された場合の一時的状態です。 -
Inconsistent
データが一致しません。新規リソースを作成した直後に(初期フル同期の前に)両方のノードがこの状態になります。また、同期中には片方のノード(同期先)がこの状態になります。 -
Outdated
リソースデータは一致していますが、無効です。 -
DUnknown
ネットワーク接続を使用できない場合に、対向ノードディスクにこの状態が使用されます。 -
Consistent
接続していない状態でノードのデータが一致しています。接続が確立すると、データが UpToDate か Outdated か判断されます。 -
UpToDate
データが一致していて最新の状態です。これが正常な状態です
ボリューム/デバイス単位
-
read (disk read)
ローカルディスクから読み取られたネットデータ (kibyte単位)。 -
written (disk written)
ローカルのディスクに書き込んだ正味データ量(kibyte単位)。 -
al-writes (activity log)
メタデータのアクティビティログエリアのアップデート数。 -
bm-writes (bitmap)
メタデータのビットマップエリアのアップデート数。 -
upper-pending (application pending)
まだDRBDから応答がない(完了していない)DRBDへのブロックI/Oリクエスト数。 -
lower-pending (local count)
DRBDが発行したローカルI/Oサブシステムへのオープンリクエストの数。 -
blocked
ローカルI/Oの輻輳を示します。- no:輻輳なし
- uppeer: ファイルシステムなどDRBD より上位 のI/Oがブロックされている。代表的なものには以下がある。
- 管理者によるI/O中断。 drbdadm コマンドの suspend-io を参照。
- アタッチ/デタッチ時の一時的なブロック。
- バッファーの枯渇。DRBDパフォーマンスの最適化 参照。
- ビットマップIO待ち
- lower: 下位デバイスの輻輳
- 上位、下位両方がブロックされている。
接続単位
-
ap-in-flight (application in-flight)
対向ノードによって書き込まれているアプリケーションデータ。つまり、DRBD はそれを対向ノードに送信し、書き込まれたという確認応答を待っています。セクター単位(512バイト)。 -
rs-in-flight (resync in-flight)
対向ノードによって書き込まれている同期データ。つまり、DRBD は SyncSource が 同期データを対向ノードに送信し、データが書き込まれたことの確認応答を待っています。セクター単位(512バイト)。
接続とボリューム単位 (“peer device”)
-
done
同期されるデータのうち同期されたデータのパーセンテージ。 -
resync-suspended
現在同期が中断されているかどうかを示す。値は no, user, peer, dependency でカンマ区切り。 -
received (network receive)
対向ノードから受信したネットデータ(KiB単位)。 -
sent (network send)
対向ノードへ送信したネットデータ(KiB単位)。 -
out-of-sync
DRBD のビットマップによる現在この対向ノードと同期していないデータ量(KiB単位)。 -
pending
対向ノードに送信されたが、対向ノードによってまだ確認されていないリクエスト数。 -
unacked (unacknowledged)
対向ノードから受信したが、このノードの DRBD によってまだ確認されていないリクエスト数。 -
dbdt1
過去数秒以内の同期速度。単位は MiB/秒。このユーザーズガイドの 同期速度の設定 セクションで説明されているオプションで、同期速度を変更できます。 -
eta
同期が完了するまでの残り秒数。この数値は、過去数秒以内の同期速度と、同期されていないリソースの下位デバイスのサイズに基づいて計算されます。
複製ステータス
-
Off
ボリュームはこの接続を通して複製されていません。接続が Connected になっていません。す。次の状態は Unconnected です。 -
Established
このボリュームへのすべての書き込みがオンラインで複製されています。これは通常の状態です。 -
StartingSyncS
管理者により開始されたフル同期が始まっています。次に考えられる状態は SyncSource または PausedSyncS です。 -
StartingSyncT
管理者により開始されたフル同期が始まっています。次の状態は WFSyncUUID です。 -
WFBitMapS
部分同期が始まっています。次に考えられる状態は SyncSource または PausedSyncS です。 -
WFBitMapT
部分同期が始まっています。次に考えられる状態は WFSyncUUID です。 -
WFSyncUUID
同期が開始されるところです。次に考えられる状態は SyncTarget または PausedSyncT です。 -
SyncSource
現在、ローカルノードを同期元にして同期を実行中です。 -
SyncTarget
現在、ローカルノードを同期先にして同期を実行中です。 -
PausedSyncS
ローカルノードが進行中の同期の同期元ですが、現在は同期が一時停止しています。原因として、別の同期プロセスの完了との依存関係、または drbdadm pause-sync を使用して手動で同期が中断されたことが考えられます。 -
PausedSyncT
ローカルノードが進行中の同期の同期先ですが、現在は同期が一時停止しています。原因として、別の同期プロセスの完了との依存関係、または drbdadm pause-sync を使用して手動で同期が中断されたことが考えられます。 -
VerifyS
ローカルノードを照合元にして、オンラインデバイスの照合を実行中です。 -
VerifyT
現在、ローカルノードを照合先にして、オンラインデバイスの照合を実行中です。 -
Ahead
リンクが負荷に対応できないので、データの複製が中断しました。このステータスは on-congestion オプションの設定で有効にできます(輻輳ポリシーと中断したレプリケーションの構成を参照)。 -
Behind
リンクが負荷に対応できないので、データの複製が対向ノードによって中断されました。このステータスは対向ノードの on-congestion オプション設定で有効にできま>す(輻輳ポリシーと中断したレプリケーションの構成を参照)。
接続情報データ
-
local
ネットワークファミリ、ローカルアドレス、対向ノードから接続を許可されたポートを表示します。 -
peer
ネットワークファミリ、ローカルアドレス、接続に使用しているポートを表示します。 -
congested
データのTCP送信バッファを80%より多く使用している場合にこのフラグがつきます
コネクションのステータス
$ drbdadm cstate r0
リソースのロール
$ drbdadm role r0
ディスクのステータス
$ drbdadm dstate r0
ワンショットモニタリング
$ drbdsetup events2 --now r0
exists resource name:r0 role:Primary suspended:no force-io-failures:no may_promote:no promotion_score:10103
exists connection name:r0 peer-node-id:1 conn-name:node2 connection:Connected role:Secondary
exists device name:r0 volume:0 minor:0 backing_dev:/dev/sdb disk:UpToDate client:no quorum:yes
exists peer-device name:r0 peer-node-id:1 conn-name:node2 volume:0 replication:Established peer-disk:UpToDate peer-client:no resync-suspended:no
exists path name:r0 peer-node-id:1 conn-name:node2 local:ipv4:192.168.100.101:7789 peer:ipv4:192.168.100.102:7799 established:yes
exists -
リアルタイムモニタリング
$ drbdsetup events2 r0
モニタリングの詳細オプション
$ drbdsetup events2 --statistics --now r0
$ drbdsetup events2 --statistics r0
参考
Ubuntu 22.04 man page drbdadm
Ubuntu 22.04 man page drbd
Ubuntu 22.04 man page drbdsetup
DRBD9 ユーザーズガイド
LINSTOR ユーザーズガイド
さいごに
かんたんでしたね