DRBDSETUP(8) | System Administration | DRBDSETUP(8) |
drbdsetup - DRBD を設定するツール
drbdsetup new-resource resource [--cpu-mask {val}] [--on-no-data-accessible {io-error | suspend-io}]
drbdsetup new-minor resource minor volume
drbdsetup del-resource resource
drbdsetup del-minor minor
drbdsetup attach minor lower_dev meta_data_dev meta_data_index [--size {val}] [--max-bio-bvecs {val}] [--on-io-error {pass_on | call-local-io-error | detach}] [--fencing {dont-care | resource-only | resource-and-stonith}] [--disk-barrier] [--disk-flushes] [--disk-drain] [--md-flushes] [--resync-rate {val}] [--resync-after {val}] [--al-extents {val}] [--al-updates] [--discard-zeroes-if-aligned] [--disable-write-same] [--c-plan-ahead {val}] [--c-delay-target {val}] [--c-fill-target {val}] [--c-max-rate {val}] [--c-min-rate {val}] [--disk-timeout {val}] [--read-balancing {prefer-local | prefer-remote | round-robin | least-pending | when-congested-remote | 32K-striping | 64K-striping | 128K-striping | 256K-striping | 512K-striping | 1M-striping}] [--rs-discard-granularity {val}]
drbdsetup connect resource local_addr remote_addr [--tentative] [--discard-my-data] [--protocol {A | B | C}] [--timeout {val}] [--max-epoch-size {val}] [--max-buffers {val}] [--unplug-watermark {val}] [--connect-int {val}] [--ping-int {val}] [--sndbuf-size {val}] [--rcvbuf-size {val}] [--ko-count {val}] [--allow-two-primaries] [--cram-hmac-alg {val}] [--shared-secret {val}] [--after-sb-0pri {disconnect | discard-younger-primary | discard-older-primary | discard-zero-changes | discard-least-changes | discard-local | discard-remote}] [--after-sb-1pri {disconnect | consensus | discard-secondary | call-pri-lost-after-sb | violently-as0p}] [--after-sb-2pri {disconnect | call-pri-lost-after-sb | violently-as0p}] [--always-asbp] [--rr-conflict {disconnect | call-pri-lost | violently}] [--ping-timeout {val}] [--data-integrity-alg {val}] [--tcp-cork] [--on-congestion {block | pull-ahead | disconnect}] [--congestion-fill {val}] [--congestion-extents {val}] [--csums-alg {val}] [--csums-after-crash-only] [--verify-alg {val}] [--use-rle] [--socket-check-timeout {val}]
drbdsetup disk-options minor [--on-io-error {pass_on | call-local-io-error | detach}] [--fencing {dont-care | resource-only | resource-and-stonith}] [--disk-barrier] [--disk-flushes] [--disk-drain] [--md-flushes] [--resync-rate {val}] [--resync-after {val}] [--al-extents {val}] [--al-updates] [--discard-zeroes-if-aligned] [--disable-write-same] [--c-plan-ahead {val}] [--c-delay-target {val}] [--c-fill-target {val}] [--c-max-rate {val}] [--c-min-rate {val}] [--disk-timeout {val}] [--read-balancing {prefer-local | prefer-remote | round-robin | least-pending | when-congested-remote | 32K-striping | 64K-striping | 128K-striping | 256K-striping | 512K-striping | 1M-striping}] [--rs-discard-granularity {val}]
drbdsetup net-options local_addr remote_addr [--protocol {A | B | C}] [--timeout {val}] [--max-epoch-size {val}] [--max-buffers {val}] [--unplug-watermark {val}] [--connect-int {val}] [--ping-int {val}] [--sndbuf-size {val}] [--rcvbuf-size {val}] [--ko-count {val}] [--allow-two-primaries] [--cram-hmac-alg {val}] [--shared-secret {val}] [--after-sb-0pri {disconnect | discard-younger-primary | discard-older-primary | discard-zero-changes | discard-least-changes | discard-local | discard-remote}] [--after-sb-1pri {disconnect | consensus | discard-secondary | call-pri-lost-after-sb | violently-as0p}] [--after-sb-2pri {disconnect | call-pri-lost-after-sb | violently-as0p}] [--always-asbp] [--rr-conflict {disconnect | call-pri-lost | violently}] [--ping-timeout {val}] [--data-integrity-alg {val}] [--tcp-cork] [--on-congestion {block | pull-ahead | disconnect}] [--congestion-fill {val}] [--congestion-extents {val}] [--csums-alg {val}] [--csums-after-crash-only] [--verify-alg {val}] [--use-rle] [--socket-check-timeout {val}]
drbdsetup resource-options resource [--cpu-mask {val}] [--on-no-data-accessible {io-error | suspend-io}]
drbdsetup disconnect local_addr remote_addr [--force]
drbdsetup detach minor [--force]
drbdsetup primary minor [--force]
drbdsetup secondary minor
drbdsetup down resource
drbdsetup verify minor [--start {val}] [--stop {val}]
drbdsetup invalidate minor
drbdsetup invalidate-remote minor
drbdsetup wait-connect minor [--wfc-timeout {val}] [--degr-wfc-timeout {val}] [--outdated-wfc-timeout {val}] [--wait-after-sb {val}]
drbdsetup wait-sync minor [--wfc-timeout {val}] [--degr-wfc-timeout {val}] [--outdated-wfc-timeout {val}] [--wait-after-sb {val}]
drbdsetup role minor
drbdsetup cstate minor
drbdsetup dstate minor
drbdsetup resize minor [--size {val}] [--assume-peer-has-space] [--assume-clean] [--al-stripes {val}] [--al-stripe-size-kB {val}]
drbdsetup check-resize minor
drbdsetup pause-sync minor
drbdsetup resume-sync minor
drbdsetup outdate minor
drbdsetup show-gi minor
drbdsetup get-gi minor
drbdsetup show {resource | minor | all}
drbdsetup suspend-io minor
drbdsetup resume-io minor
drbdsetup status {resource | all} [--color {val}]
drbdsetup events2 {resource | all}
drbdsetup events {resource | minor | all}
drbdsetup new-current-uuid minor [--clear-bitmap]
drbdsetup は、DRBD デバイスと下位レベルブロックデバイスを結びつける、DRBD デバイス間で下位レベルデバイス同士ミラーリングを設定する、現在実行中の DRBD デバイスの設定を検査する、などの目的で使用する。
drbdsetup は DRBD プログラム群の中で低レベルのツールである。デバイスドライバを操作するために、drbddisk や drbd ス クリプトなどの中で使用される。
サブコマンドの中には、独自の引数やオプションを持つものがある。すべての値はデフォルトの単位があるが、K、 M、 G といった通常の方法でも定義でき (K=2^10=1024、 M=1024K、 G=1024M)。
すべての drbdsetup サブコマンドに次のオプションを指定することができる。
--create-device
リソースは DRBD 構成の最初の対象である。リソースはいかなるボリュームやマイナーデバイスが作成されるより前に new-resource コマンドで作成されなければならない。コネクションは名前で参照される。
minor は複製されたブロックデバイスと同じ意味で使われ、ブロックデバイスとして /dev/ ディレクトリで表示されている。これは DRBD が複製するブロックデバイスへのアプリケーションのインターフェースである。drbdsetup のコマンドラインで、これらのブロックデバイスはマイナー番号によってアドレス指定される。
複製されたブロックデバイスの組は 2 マシン間で異なったマイナー番号を持つ場合もあるが、共通のボリューム番号で関連付けされている。ボリューム番号は各々の接続におけるローカルなものである。マイナー番号は一つのノードにおけるグローバルなものである。
リソースのオブジェクトを破棄する。リソースに値がない場合のみ可能。
マイナーはディスクが外されている場合のみ破棄できる。
Attach はデバイスと下位ブロックデバイスを接続する。-d (または --disk-size) は下位ブロックデバイスをできるだけ使いたくない場合にのみ使用する。-d を使わない場合、デバイスは対向ノードに接続されるとすぐに使用できる状態になる。(net コマンドを参照)
disk-options コマンドを使うと、接続されている間、そのマイナーのオプション変更ができる。
--disk-size size
size パラメータを drbd.conf で使用する場合には、明示的に単位を追加する事が推奨される。drbdadm と drbdsetup はデフォルトの単位で、しばしば食い違いになることがある。
--on-io-error err_handler
--fencing fencing_policy
次のフェンシングポリシーを指定できる:
dont-care
resource-only
resource-and-stonith
--disk-barrier,
--disk-flushes,
--disk-drain
drbd-8.4.2 から disk-barrier は、linux-2.6.36 (及び RHEL6 の 2.6.32) 以降での正常動作が確認できないためデフォルトで無効になった。注意: 有識者による指示のもとでのみ使用すること。
手法を選択するにあたっては、測定可能なパフォーマンスデータのみに頼るべきではない。下位デバイスが揮発性の書き込みキャッシュしか持たない場合 (通常のハードディスクや通常のハードディスクだけで構成される RAID など)、最初の 2 つのオプションのどちらかを使うべきである。下位デバイスにバッテリバックアップ機能付きの書き込みキャッシュがある場合には、3 番目のオプションが利用できる。4番目のオプション (すべてを無効にする場合は "none") は、ほとんどの I/O スタックにおいて危険で、ディスクへの書き込み順序が入れ替わってしまう可能性がある。no-disk-drain を使っては ならない 。
残念なことに、デバイスマッパ(LVM) はバリアをサポートしていない。
/proc/drbd の "wo:" の文字の後ろに、下位デバイスに対する現在の設定が b, f, d, n の文字で表示される。オプションは次のとおり:
barrier
flush
drain
none
--md-flushes
--max-bio-bvecs
最も良い回避方法は、VM の内部にパーティションを適切に配置する (例えば、セクタ 1024 から開始する) ことである。これは、ストレージ領域を 480 KiB を消費する。残念ながら、ほとんどの Linux パーティションツールは、奇数 (63) でパーティションを開始する。そのため、ほとんどのディストリビューションは、仮想 Linux マシンにインストールを行うと、誤ったパーティションで終了してしまう。第 2 の回避方法は、 BIO あたりの最大 DRBD bvecs (= max-bio-bvecs) を 1 にすることである。しかし、パフォーマンスは低下する。
max-bio-bvecs のデフォルト値は 0 で、これはユーザに制限が無いことを意味する。
--resync-rate rate
--resync-after minor
--al-extents extents
追加の制限と必要な準備については、次のマニュアルを参照:drbd.conf(5) , drbdmeta(8)
--al-updates {yes | no}
--c-plan-ahead plan_time,
--c-fill-target fill_target,
--c-delay-target delay_target,
--c-max-rate max_rate
plan_time パラメータで調節機能の機敏さを設定する。大きな値を設定すると、調節機能のレスポンスが低下する。この値は最低でもネットワークの RTT の 5 倍以上を指定する。通常のデータ経路では fill_target に 4k から 100k を指定するのが適切である。DRBD-Proxy を使用する場合には、代わりに delay_target を使用するのが望ましい。delay_target は fill_target が 0 の場合にのみ使用できる。初期値は RTT の 5 倍が適切である。Max_rate には DRBD 間または DRBD-Proxy 間の帯域幅あるいはディスク帯域幅を指定する。
plan_time のデフォルト値は 0 で、0.1 秒単位で指定する。Fill_target のデフォルト値は 0 でセクタ数を指定する。Delay_target のデフォルト値は 1 (100 ミリ秒) で 0.1 秒単位で指定する。Max_rate のデフォルト値は 10240 (100MiB/s) で、 KiB/s 単位で指定する。
--c-min-rate min_rate
min_rate のデフォルト値は 4M で、k 単位で指定する。調整したくない場合は 0 を設定する。常に調整する場合は 1 を設定する。
-t, --disk-timeout disk_timeout
このオプションは カーネルパニックを引き起こす可能性があり、注意が必要である。
リクエストの「中断」あるいはディスクの強制切り離しは、完全に下位デバイスをブロックまたはハンギングして、リクエストをまったく処理せずエラーも処理しなくなる。この状況ではハードリセットとフェイルオーバ以外になす術がない。
「中断」すると、基本的にローカルエラーの完了を装い、すみやかにサービスの移行を行うことで安全な切り替えを行う。それでもなお、影響を受けるノードは "すぐ" に再起動される必要はある。
リクエストを完了することで、上位レイヤーに関連するデータページを再利用させることができる。
後にローカルの下位デバイスが「復帰」すると、ディスクから元のリクエストページへの DMA のデータは、うまくいくと未使用のページへランダムなデータを送るが、多くの場合その間に関係のないデータに変形してしまい、様々なダメージの原因になる。
つまり遅延した正常な完了は、特に読み込みリクエストの場合 panic() の原因になる。遅延した「エラー」完了は、その都度に通知は行うが、問題ないと考えてよい。
disk-timeout のデフォルト値は 0 であり、無限のタイムアウトを意味する。タイムアウトは 0.1 秒単位で指定する。このオプションは DRBD 8.3.12. から利用できる。
--discard-zeroes-if-aligned {yes | no}
discard-zeroes-if-aligned を yes に設定すると、 discard_zeroes_data = false を通知するバックエンドであっても DRBD は discard を使用し、 discard_zeroes_data = true を通知する。
私たちは、 discard_zeroes_data 設定を完全に無視していました。確立し、期待された動作を壊さないためのデフォルト値は yes である。
このオプションは 8.4.7 から有効である。追加の制限と必要な準備については、次のマニュアルを参照:drbd.conf(5).
--disable-write-same {yes | no}
disable-write-same を yes に設定すると、WRITE_SAME サポートが手動で無効にできる。
disable-write-same のデフォルト値は no である。このオプションは 8.4.7 から有効である。
--read-balancing method
read-balancing のデフォルト値は prefer-local である。このオプションは 8.4.1 から有効である。
--rs-discard-granularity bytes
この値は、下位ブロックデバイスの discard 粒度によって制約される。 rs-discard-granularity が下位ブロックデバイスの discard 粒度の乗数でない場合、DRBD はそれを切り上げる。この機能は、下位ブロックデバイスが discard コマンドの後に、ゼロを読み戻す場合にのみアクティブになる。
rs-discard-granularity のデフォルト値は 0 である。このオプションは 8.4.7 から有効である。
Connect は device を af:local_addr:port の内向きのコネクションを Listen させ、また af:remote_addr:port へ接続させる。port が省略されると、デフォルトで 7788 が使用される。af が省略されると ipv4 が使用される。他の対応するアドレスファミリは ipv6, ssocks, sdp がある。 ssocks は Dolphin Interconnect Solutions の 「super sockets」、sdp は Sockets Direct Protocol(Infiniband) を指す。
net-options コマンドはコネクションの確立中にオプションの変更が行える。
--protocol protocol
プロトコル A: ローカルディスクとローカル TCP 送信バッファにデータを書き込んだらディスクへの書き込みが完了したと判断する。
プロトコル B: ローカルディスクとリモートバッファキャッシュにデータを書き込んだらディスクへの書き込みが完了したと判断する。
プロトコル C: ローカルディスクとリモートディスクの両方にデータを書き込んだらディスクへの書き込みが完了したと判断する。
--connect-int time
--ping-int time
--timeout val
--sndbuf-size size
--rcvbuf-size size
--ko-count count
--max-epoch-size val
--max-buffers val
追加の制限と必要な準備については、次のマニュアルを参照:drbd.conf(5)
--unplug-watermark val
スタンバイ(セカンダリ) ノードで書き込まれていない書き込みリクエスト数が unplug-watermark を上回ると、下位デバイスに対して書き込みリクエストを送る。ストレージによっては小さい値でも良好な結果が得られるが、多くのデバイスでは max-buffers と同じ値を指定するときに最良の結果が得られる。デフォルト値は 128 で、指定できる最小値は 16、最大値は 131072 である。
--allow-two-primaries
--cram-hmac-alg alg
--shared-secret secret
--after-sb-0pri asb-0p-policy
disconnect
discard-younger-primary
discard-older-primary
discard-zero-changes
discard-least-changes
discard-node-NODENAME
--after-sb-1pri asb-1p-policy
disconnect
consensus
discard-secondary
call-pri-lost-after-sb
violently-as0p
--after-sb-2pri asb-2p-policy
disconnect
call-pri-lost-after-sb
violently-as0p
--always-asbp
このオプションを指定すると、両ノードのデータに関連性があるとして、スプリットブレイン発生後のポリシーが適用される。UUID の分析により 3 番目のノードの存在が疑われる場合には、フル同期が行われることがある。(または、なんらかの別の原因によって間違った UUID セットで判断してしまった場合)
--rr-conflict role-resync-conflict-policy
violently を指定すると、プリマリノードを強制的に同期先 (SyncTarget) にできる。このオプションを指定すると、即座に同期元 (SyncSource) のデータに書き換えられる。このオプションは、何をしているのかを理解した上で使用するように。
--data-integrity-alg hash_alg
drbd.conf マニュアルページのデータ整合性に関する説明も参照のこと。
--no-tcp-cork
--ping-timeout ping_timeout
--discard-my-data
--tentative
--on-congestion congestion_policy,
--congestion-fill fill_threshold,
--congestion-extents active_extents_threshold
DRBD-Proxy を使っている場合、送信キューが満杯になる直前に AHEAD/BEAIND モードに移行するのが望ましい。AHEAD/BEHIND モードでは、DRBD 間の通信は切断しないが、データレプリケーションは行われなくなる。
AHEAD/BEHIND モードの利点は、たとえ DRBD-Proxy のバッファがすべての書き込み要求を受け入れるのに十分でなくても、アプリケーションが遅くならないことである。欠点は、対向ノードが後れをとっているため、同期状態に戻すために再同期が必要になることである。再同期中対向ノードのデータは不整合状態のままとなる。
congestion_policy では block と pull-ahead が使用できる。デフォルトは block である。Fill_threshold は 0 から 10GiB までの値を指定できる。デフォルト値は 0 で、これはチェックが無効になることを意味する。Active_extents_threshold は、 al-extents と同じ制限がある。
AHEAD/BEHIND は DRBD8.3.10 以降で利用できる。
--verify-alg hash-alg
drbd.conf マニュアルページのデータ整合性に関する説明も参照のこと。
--csums-alg hash-alg
帯域幅が小さい回線を使うとき、このオプションは有用である。クラッシュしたプライマリノードが復帰したとき、アクティビティログに記録されたすべてのブロックが再同期の対象となる。しかし大部分のブロックは同期が取れている。このため、 csums-alg を指定することによって、 CPU の使用量と引き換えに必要な転送量を減らせる。
--use-rle
典型的なビットマップは、すべてがセットされていない (クリーン) あるいはセットされている (ダーティ) いくつかのエリアに分かれている。このため、単純ではあるがランレングス符号化を採用することにより、ビットマップ交換のためのネットワークトラフィックを顕著に減らすことができる。
過去のバージョンとの互換性のため、また高速ネットワークでは転送時間改善効果が少なく CPU 使用量が増えるため、デフォルトではこの機能は無効である。
Introduced in 8.3.2.
--socket-check-timeout
このような場合、socket-check-timeout に DRBD と DRBD-Proxy 間の round trip time(RTT) を設定するとよい。たいていの場合 1 である。
デフォルトの単位は 10 分の 1 秒である。デフォルト値は 0 で socket-check-timeout 値の代わりに ping-timeout 値を使用する。8.4.5 から導入された。
Changes the options of the resource at runtime.
--cpu-mask cpu-mask
--on-no-data-accessible ond-policy
ond-policy に suspend-io を設定すると、最後に接続していたデータストレージから、もしくは、 drbdadm resume-io res コマンドにより、 I/O を再開することができる。後者はもちろん I/O エラーを発生させる。
デフォルトは io-error である。この設定は、 DRBD 8.3.9 から有効である。
デバイスをプライマリロールに切り替える。するとアプリケーション (この場合はファイルシステムなど) はデバイスを読み書きモードでオープンできるようになる。プライマリロールのデバイスに書き込まれたデータはセカンダリロールのデバイスにミラーされる。
通常の実行状態では、 DRBD デバイスペアの両方を同時にプライマリに切り替えることはできない。--allow-two-primaries オプションを使用すると、DRBD の既定の仕様を変更して両ノードをプライマリにできる。
--overwrite-data-of-peer
--force
デバイスをセカンダリロールに切り替える。何らかのアプリケーション (またはファイルシステム) が書き込みモードでデバイスをオープンしている間は、この操作は失敗する。
DRBD デバイスペアの両方がともにセカンダリ状態になることは問題なく可能である。
オンライン状態でデバイスを照合する。オンライン照合は、ローカルノードの全ブロックを対向ノードの対応するブロックと比較することである。照合の進行状況は、 /proc/drbd を通じて確認できる。ローカルディスクと対向ホストで内容が異なるブロックは、 DRBD のディスク上ビットマップに不整合としてマークされる。これらは自動的な再同期が行われない。再同期を行うには、いったんリソースの接続を切って再接続すればよい。
すでにオンライン照合が進行中の場合、 (当該ノードが照合を行い) このコマンドは成功する。この場合、 start-sector (以下参照) は無視され、 stop-sector (以下参照) が採用される。これは照合を終了するため、あるいは現在進行中の照合の範囲を 更新/ 短縮/ 拡張 するために使用される。
このコマンドはデバイスが接続されているデバイスペアのうちの一つでない場合は失敗する。
drbd.conf マニュアルページのデータ整合性に関する説明も参照のこと。
--start start-sector
デフォルトの単位はセクタである。単位を明示的に指定することもできる。開始セクタは 8 セクタの倍数 (4kB) に切り捨てられる。
-S, --stop stop-sector
デフォルトの単位はセクタである。単位を明示的に指定することもできる。照合が進行中に追加の drbdsetup verify コマンドを同じノードで実行することで、 stop-sector を更新する事ができる。これは照合を終了するため、あるいは現在進行中の照合の範囲を 更新/ 短縮/ 拡張 するために使用される。
接続された DRBD デバイスペアのローカル側を SyncTarget 状態に切り替える。これにより、対向ホスト側のすべてのデータブロックがローカルディスクにコピーされる。
デバイスが対向ホスト側のデバイスと接続していなかったり、切断されたセカンダリの場合、コマンドは失敗する。
接続された DRBD デバイスペアのローカルデバイス側を SyncSource 状態に切り替える。これにより、ローカルディスクのすべてのデータブロックが対向ペアにコピーされる。
切断されたプライマリデバイス側では、すべてのビットが非同期のビットマップに設定される。これによってオンディスクのアクティビティログの更新が一時停止する。アクティビティログの更新が再開すると、必要に応じて自動的再開される。
デバイスが対向デバイスと通信可能になるまで待機する。
--wfc-timeout wfc_timeout,
--degr-wfc-timeout degr_wfc_timeout,
--outdated-wfc-timeout outdated_wfc_timeout,
--wait-after-sb
デバイスの同期が終わるまで待機する。このオプションは wait-connect コマンドと同じである。
net コマンドで設定したデバイスの情報を削除する。その結果、デバイスは切断状態になり、その後はネットワーク経由の情報を受け取らない。
disk コマンドで設定したデバイスの情報を消去する。その結果、デバイスは下位ストレージデバイスから切り離される。
-f, --force
一方で、強制切り離しは即座に返答がくる。これでフリーズした下位ブロックデバイスを切り離すことができる。ディスクは全 I/O リクエストが下位ブロックデバイスで完了するまで failed としてマークされることに注意。
デバイスの全ての設定情報を消去する。また、未設定の状態に戻す。
デバイスとその対向デバイスの現在のロール (役割) を表示する。表示形式は ローカ ル/他ノードである。
"role" の別名である。
現在のデバイスの接続状態を表示する。
現在の下位デバイスの状態を表示する。表示形式はローカル/他ノードである。
下位デバイスのサイズを再検査する。実際にオンライン拡張するには、両デバイスで下位デバイスを拡張してから、そのうちの1 台で resize コマンドを実行する。
--size オプションは DRBD デバイスで使用できるサイズのオンライン縮小に使用される。ファイルシステムがこの操作によって破損しないことはユーザ責任において確認する。
--assume-peer-has-space オプションは、現在対向ノードに接続されていないデバイスのサイズ変更ができる。対向ノードのディスクサイズを同様に変更しないと、以降接続が失敗するので注意すること。
--assume-clean オプションを使用すると DRBD は新しいストレージの再同期をスキップする。新しいストレージが、別の方法で初期化されていることが確認できている場合のみ、これを設定する。
--al-stripes と --al-stripe-size-kB オプションはオンラインでアクティビティログのレイアウトを変更する。内部メタデータの場合には、同時に、下位デバイスのユーザーに見えるサイズ(--size を使用して)の縮小、または拡大が必要である。
DRBD が下位デバイスのオフラインリサイズを検知できるようにするため、このコマンドは下位デバイスの現在のサイズを記録するために使用される。サイズは、/var/lib/drbd/ 下に drbd-minor-??.lkbd という名前で記録される。
このコマンドは drbdsetup device resize が実行された後で drbdadm resize res からコールされる。
ローカルメタデータの一時停止フラグをセットして、進行中の再同期を一時停止する。再開させるには、ローカルと他ノードの両方の一時停止フラグをクリアする必要がある。下位レベルデバイスの RAID を再構成しているときなど、 DRBD の再同期を一時停止するのが望ましい場合がある。
自機の一時停止フラグをクリアする。
自ノードの下位レベルデバイスの内容が「無効」であるとマークする。無効ノードはプライマリになれない。このコマンドは通常 fencing や対向ノードの fence-peer ハンドラと組み合わせて使用される。
デバイスのデータ世代識別子 (data generation identifiers) の内容を説明テキストとともに表示する。
デバイスのデータ世代識別子 (data generation identifiers) の内容を表示する。
リソースの全ての有効な設定情報を表示する。利用可能なオプション:
--show-defaults
このコマンドの明確な使用法はないが、コマンドセットの完全性のために用意されている。
fencing ポリシーが resource-and-stonith に設定されており、fence-peer ハンドラの実行に失敗した場合、このコマンドによってフリーズされた I/O 操作を再開できる。
リソースの全ての有効な設定情報を表示する。出力は、構成されたリソースごとに 1 つの段落で構成される。各段落は、リソースごとに 1 行、各デバイスに 1 行、接続ごとに 1 行が続くデバイスと接続行はインテンドされる。各接続行は、対向ノードのデバイスごとに 1 行、これらは接続行に対してインテンドされる。
長い行は端末の幅で折り返され、どの行に属しているかを示すためにインデントされる。利用可能なオプション:
--verbose
--statistics
--color={always | auto | never}
たとえば、1 つの接続と1 つのボリュームのみを持つリソースの出力は、次のようになる。
fs-backoffice role:Primary
disk:UpToDate
peer role:Secondary
replication:Established peer-disk:UpToDate
--verbose と --statistics を使用すると, 同じリソースは次のように出力される:
fs-data role:Primary suspended:no
write-ordering:drain
volume:0 minor:1 disk:UpToDate
size:10616472 read:134465 written:144800 al-writes:18 bm-writes:0
upper-pending:0 lower-pending:0 al-suspended:no blocked:no
peer connection:Connected role:Secondary congested:no
volume:0 replication:Established peer-disk:UpToDate resync-suspended:no
received:122596 sent:22204 out-of-sync:0 pending:0 unacked:0
設定されたすべての DRBD オブジェクトの現在の状態、状態へのすべての変更を表示する。
出力形式は、機械だけでなく人も読める形式である。各行はイベント番号で始まり、イベントが次の行に続く場合はアスタリスクが続く。各行の 2 番目の単語は、イベントの種類を示す: 既存オブジェクトの exists; オブジェクトが作成、破棄、変更された場合 create, destroy, change; イベントハンドラが呼び出された、戻った場合 call, response である。第 3 の単語は、イベントが適用されるオブジェクトを示す: resource, device, connection, peer-device, helper, 現在の状態が完全にダンプされたことを示すための dash (-)
残りの単語はオブジェクトを識別し、オブジェクトが入っている状態を記述する。利用可能なオプション:
--now
--statistics
推奨しない。可能であれば、events2 サブコマンドに変更する。
DRBD のすべての状態変化とヘルパープログラムの呼び出し経緯を表示する。このコマンドは、DRBD の状態変化を他のプログラムにパイプで渡したいときに利用できる。
--all-devices
--unfiltered
現在 UUID を生成して、他のすべての UUID をローテートする。このコマンドには 2 通りの利用シーンが考えられる。まず、初期同期を省略する際に利用する。また、 1 台で設定を行った後遠隔サイトに運搬することにより帯域幅を節約するためにも利用できる。
利用可能なオプション:
--clear-bitmap
このオプションは、ゼロから新規に構築する際に初期同期を省略するために使用する。この方法は、作ったばかりのメタデータに対して効果がある。必要なステップは以下のとおり:
drbdadm -- --force create-md res
drbdadm up res
drbdadm new-current-uuid --clear-bitmap res
drbdadm primary res
mkfs -t fs-type $(drbdadm sh-dev res)
この方法の明らかな欠点は、別の方法でディスク内容を同一にしない限り、複製物全体に古いゴミのデータが残ることである。このため、オンライン照合は多数の非同期ブロックを見出してしまう。
この方法は、すでにデータのあるディスクに適用してはならない! 最初は動作しているように見えても、ノードの切り替えを行うとデータが壊れてしまい二度と使えなくなる。そのため、mkfs を省略してはならない (またはそれに相当する操作)。
このコマンドは、最初のノードを本稼働させた後でディスク自体を 2 番目のノードに移すという手法により、クラスタの初期化時間を短縮する目的にも適用できる。この方法は、切断されたデバイスに対してのみ有効である。デバイスのロールはプライマリでもセカンダリでもよい。
必要なステップは以下のとおり:
このディスクをセカンダリのノードに挿入してクラスタに参加させる。ステップ 1 での drbdsetup の実行以降に変更した箇所の再同期が行われる。
詳しくは DRBD ユーザーズガイド DRBD User's Guide[1] を参照。
このドキュメントは DRBD バージョン 8.3.2 向けに改訂されている。
Written by Philipp Reisner <philipp.reisner@linbit.com> and Lars Ellenberg <lars.ellenberg@linbit.com>
Report bugs to <drbd-user@lists.linbit.com>.
Copyright 2001-2008 LINBIT Information Technologies, Philipp Reisner, Lars Ellenberg. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
drbd.conf(5), drbd(8), drbddisk(8), drbdadm(8), DRBD User's Guide[1], DRBD web site[2]
6 May 2011 | DRBD 8.4.0 |