NAME
drbdsetup - DRBD カーネルモジュールを構成するSYNOPSIS
drbdsetup
command {argument...} [option...]
DESCRIPTION
drbdsetup ユーティリティは、DRBD カーネルモジュールを構成し、また現在の構成を表示する。ユーザは通常、 drbdsetup でなく、DRBD に対してより高度なインタフェースを提供する drbdadm ユーティリティを通して使用する。( drbdadm が drbdsetup をどのように使うかを表示するには drbdadm の --dry-run オプションを使用する。) 一部のオプション引数には、素の数値が指定されたときに適用されるデフォルトのスケールがある(たとえば、Kilo は数値の1024倍)。このようなデフォルトのスケールは、接尾辞を使用して上書きすることができる。(メガの場合は M)。共通の接尾語 K = 2^10 = 1024, M = 1024 K, G = 1024 M はサポートされている。COMMANDS
drbdsetup attach minor lower_dev meta_data_dev meta_data_index,
attach
コマンドは、下位デバイスを既存の複製デバイスに接続する。
disk-options
コマンドは、接続された下位デバイスのディスクオプションを変更する。複製されたデバイスは、
drbdsetup new-minor
で作られている必要がある。
複製されたデバイスをその
minor 番号で指定する。
lower_devは、下位レベルデバイスの名前である。meta_data_dev
は、メタデータを含むデバイスの名前であり、
lower_dev
と同じにできる。
meta_data_index
は、数値のメタデータインデックス、内部メタデータ用のキーワード
internal
、または可変サイズの外部メタデータ用のキーワード
flexible
のどれかである。利用可能なオプション:
--al-extents extents
--disk-flushes,
--disk-drain
drbdsetup peer-device-options resource peer_node_id
volume
DRBD
は、直近の書き込み活動に基づいて、すぐに書き直される可能性のある「ホット」または「アクティブ」ディスク領域を自動的に維持する。「アクティブ」ディスク領域はすぐに書き込むことができるが、「非アクティブ」ディスク領域は最初に「アクティブ化」する必要があり、このためのメタデータ書き込みが必要である。このアクティブなディスク領域を「アクティビティログ」として参照する。
アクティビティーログはメタデータに書き込まれるが、失敗したノードのリカバリー時にはログ全体を再同期化する必要がある。アクティビティログのサイズは、再同期にかかる時間やクラッシュ後に複製されるディスクが整合状態になる時間に影響を与える。
アクティビティログは、4メガバイトのセグメントから構成される。その
al-extents
パラメータは、同時にアクティブにできるセグメントの数を決定する。
al-extents
のデフォルト値は 1237、
最小値は 7、 最大値は
65536 である。
有効な最大値はもっと小さくなる点に注意が必要であり、メタデータのデバイスの作成方法によっても異なる。次のマニュアルページを参照、
drbdmeta(8)。有効な最大値は
919 * (使用できる
オンディスクのアクティビティログのリングバッファ領域
/4KB -1)
である。リングバッファはデフォルトで
32KB で、有効な最大値は
6433 である (データは 25GiB
以上カバーしている)。下位デバイスの量とレプリケーションリンク全体が
5
分以内で再同期できるようにすることを推奨する。
--al-updates {yes | no}
このパラメータを使用すると、アクティビティログを完全にオフにすることができる(al-extents
パラメータを参照)。メタデータの書き込みが少なくて済むため、書き込みが高速になるが、故障したプライマリノードの回復のためにデバイス全体を再同期する必要がある。
al-updates
のデフォルト値は yes
である。
--disk-barrier,
DRBD
は、依存書き込みリクエストの順序を処理する
3 つの方法がある:
disk-barrier
これらの3つの方法から、DRBD
は設定が有効で、下位デバイスもサポートしている最初のものを使用する。これらの3つのオプションがすべて無効になっている場合、DRBD
は依存関係を気にせずに書き込みリクエストを送信する。下位デバイスによって、書き込みリクエストを並べ替えることができ、異なるクラスタノード上で異なる順序で書き込みリクエストを送信できる。これは、データの損失または破損の原因となる。したがって、書き込み順序を制御する
3
つの方法をすべて無効にしないことを推奨する。
書込み順序を設定する一般的なガイドラインは、揮発性書込みキャッシュを備えた通常のディスク(または通常のディスクアレイ)を使用する場合は、disk-barrier
または disk-flushes
を使用することである。キャッシュを持たないストレージまたはバッテリバックアップのライトキャッシュでは、
disk-drain が適している。
--disk-timeout
ディスクバリアを使用して、リクエストが正しい順序でディスクに書き込まれるようにする。バリアの前に提出されたすべてのリクエストが、バリアの後に提出されたリクエストの前にディスクに書き込まれることを保証する。これは、SCSI
デバイスの 'tagged command queuing' と
SATA デバイスの 'native command queuing'
を使用して実装される。一部のデバイスおよびデバイススタックのみがこの方法をサポートする。デバイスマッパー
(LVM)
は、一部の構成でのみバリアをサポートする。
ディスクバリアをサポートしていないシステムで、このオプションを有効にするとデータが消失または破損する可能性がある。DRBD
8.4.1
までは、下位デバイスがバリアをサポートする場合
disk-barrier
が有効でした。しかし、linux-2.6.36
(または RHEL6 の 2.6.32)
以降のカーネルでは、バリアがサポートされているかどうかを検出できなくなりました。drbd-8.4.2
以降、このオプションはデフォルトでは無効であり、使用する場合は明示的に有効にする必要がある。
disk-flushes
依存書き込みリクエスト間でディスクフラッシュを使用する(ドライブベンダーにより
'force unit access'
とも呼ばれる)。これにより、すべてのデータが強制的にディスクに格納される。このオプションは、デフォルトで有効である。
disk-drain
依存書き込みリクエストを送信する前に、リクエストキューが排出されるまで待つ(つまり、リクエストが完了するのを待つ)。この方法は、リクエストが完了するとディスク上で安定している。DRBD
8.0.9
より前は、これが実装された唯一の方法でした。このオプションは、デフォルトで有効である。運用環境では無効にしないことを推奨する。
DRBD
デバイスのデータを格納する下位レベルデバイスが、指定した
disk-timeout 以内で I/O
リクエストを完了しない場合、DRBD
はこれを障害とみなす。下位デバイスは切り離され、デバイスのディスク状態はディスクレス状態になる。DRBD
が 1
台以上の対向ノードに接続したとき、失敗したリクエストはそのうちの
1 台に伝えられる。
このオプションは
カーネルパニックを引き起こす可能性があり、注意が必要である。
リクエストの「中断」あるいはディスクの強制切り離しは、完全に下位デバイスをブロックまたはハンギングして、リクエストをまったく処理せずエラーも処理しなくなる。この状況ではハードリセットとフェイルオーバ以外になす術がない。
「中断」すると、基本的にローカルエラーの完了を装い、すみやかにサービスの移行を行うことで安全な切り替えを行う。それでもなお、影響を受けるノードは
"すぐ"
に再起動される必要はある。
リクエストを完了することで、上位レイヤーに関連するデータページを再利用させることができる。
後にローカルの下位デバイスが「復帰」すると、ディスクから元のリクエストページへの
DMA
のデータは、うまくいくと未使用のページへランダムなデータを送るが、多くの場合その間に関係のないデータに変形してしまい、様々なダメージの原因になる。
つまり遅延した正常な完了は、特に読み込みリクエストの場合
panic()
の原因になる。遅延した「エラー」完了は、その都度に通知は行うが、問題ないと考えてよい。
disk-timeout
のデフォルト値は 0
であり、無限のタイムアウトを意味する。タイムアウトは
0.1
秒単位で指定する。このオプションは
DRBD 8.3.12.
から有効である。
--md-flushes
メタデータデバイスでディスクフラッシュとディスクバリアを有効にする。このオプションは、デフォルトで有効である。disk-flushes
のパラーメータを参照。
--on-io-error handler
DRBD
が下位レベルデバイスの
I/O
エラーにどのように反応するかを設定する。次のポリシーが定義される:
pass_on
--read-balancing policy
ディスクのステータスを
inconsistent(不整合) にし、 I/O
エラーを起こしたブロックに対応するビットマップにマークをつけ、リモートのクラスターノード上で
I/O 操作を再度行う。
call-local-io-error
local-io-error
ハンドラを呼び出す (
handlers
セクションを参照)。
detach
下位レベルデバイスを切り離し、ディスクレスモードで続行する。
policy
定義された読み取りリクエストで、クラスターノード間に負荷分散する。次のポリシーがサポートされる:
prefer-local (デフォルト),
prefer-remote, round-robin, least-pending,
when-congested-remote, 32K-striping, 64K-striping,
128K-striping, 256K-striping, 512K-striping and
1M-striping.
このオプションは、DRBD
8.4.1 から有効である。
resync-after minor
デバイスは、指定されたデバイスの後でのみ再同期する必要があることを定義する。デフォルトでは、デバイス間の順序は定義されず、すべてのデバイスが並行して再同期される。下位レベルデバイスの構成、および使用可能なネットワークとディスクの帯域幅によっては、全体の再同期プロセスが遅くなる可能性がある。このオプションは、デバイス間の依存関係チェーンやツリーを形成するために使用できる。
--size size
下位レベルデバイスのサイズを自動的に決定するのではなく、明示的に指定する。デバイスサイズは一度決定されると、デバイスのライフタイムの間、維持される。自動的に決定するには、すべてのノードのすべての下位レベルデバイスの接続が必要であるが、サイズが明示的に指定されている場合は、これが必要でない。size
値はデフォルトでセクタ
(512バイト)
単位であるとみなされる。
--discard-zeroes-if-aligned {yes | no}
Linux
のブロックデバイスで
discard/trim/unmap
のサポートにはいくつかの側面がある。discard
が一般的にサポートされていても、暗黙に失敗したり、discard
リクエストを部分的に無視したりすることがある。デバイスは、また、マップされていないブロックからの読み込みが、定義済みのデータ(通常はゼロ)、未定義のデータ(おそらく古いデータか、ゴミ)のどちらを返すか通知する。
異なるノードで DRBD が discard
特性が異なるデバイスによって構成されている場合、discard
はデータの不一致(古いデータまたはゴミが
1
つのバックエンドに残り、別のバックエンドではゼロが残る)の原因となる。オンライン照合は、数多くの偽の差異を報告する可能性がある。たぶんほとんどのユースケース
(ファイルシステム上の
fstrim)
では無害であるが、DRBD
はそれを持つことはできない。
安全に動作させるには、ローカルのバックエンド(プライマリ上)が
"discard_zeroes_data=true"
をサポートしていない場合、
discard
のサポートを無効にする必要がある。受信側(セカンダリ)がマップされていなかった領域を割り当て、
"discard_zeroes_data = true"
をサポートしていない場合、受信側で
discard
を明示的にゼロに変換する必要がある。
discard
をサポートしているのに、discard_zeroes_data
= false
をアナウンスするデバイス(特に
LVM/DM
シンプロビジョニング)がある。DM-thin
の場合、チャンクサイズに合わせた
discard
はマップされず、マッピングされていないセクタからの読み込みはゼロを返す。ただし、discard
リクエストのアライメントされていない部分ヘッドまたはテール領域は暗黙に無視する。
整列したフル・チャンクの
discard
をパスし、これらの整列していない部分領域を明示的にゼロ・アウトするヘルパーを追加すると、そのようなデバイスでは
discard_zeroes_data = true
を効果的に達成する。
discard-zeroes-if-aligned を yes
に設定すると、 discard_zeroes_data =
false
を通知するバックエンドであっても
DRBD は discard を使用し、
discard_zeroes_data = true を通知する。
discard-zeroes-if-aligned を no
に設定すると、それぞれのバックエンドが
discard_zeroes_data = false
をアナウンスする場合、DRBD
は常に受信側でゼロアウトにフォールバックし、プライマリ側では
discard
に関して通知しない。
私たちは、 discard_zeroes_data
設定を完全に無視していました。確立し、期待された動作を壊さず、シンプロビジョニング
LV の fstrim
がスペースを解放する代わりにスペースを使い果たさないためのデフォルト値は
yes である。
このオプションは 8.4.7
から有効である。
--disable-write-same {yes | no}
一部のディスクは、WRITE_SAME
サポートをカーネルに通知するが、実際にそのようなリクエストを受信すると、I/O
エラーで失敗する。これは主に、仮想化されたディスクを使用しているときに発生する。特に、この動作は
VMware
の仮想ディスクで観察されている。
disable-write-same を yes
に設定すると、WRITE_SAME
サポートが手動で無効にできる。
disable-write-same
のデフォルト値は no
である。このオプションは
8.4.7 から有効である。
--rs-discard-granularity byte
rs-discard-granularity
がゼロ以外の正の値に設定されている場合、DRBD
はこのサイズで再同期操作をリクエストする。そのようなブロックが同期ソースノード上にゼロバイトしか含まない場合、同期ターゲットノードは、その領域に対して
discard/trim/unmap
コマンドを発行する。
この値は、下位ブロックデバイスの
discard
粒度によって制約される。
rs-discard-granularity
が下位ブロックデバイスの
discard
粒度の乗数でない場合、DRBD
はそれを切り上げる。この機能は、下位ブロックデバイスが
discard
コマンドの後に、ゼロを読み戻す場合にのみアクティブになる。
The usage of rs-discard-granularity may cause c-max-rate to be
exceeded. In particular, the resync rate may reach 10x the value of
rs-discard-granularity per second.
デフォルト値は 0
である。このオプションは
8.4.7 から有効である。
これらは、
peer
のデバイスに影響を与えるオプションである。
--c-delay-target delay_target,
--c-fill-target fill_target,
--c-max-rate max_rate,
--c-plan-ahead plan_time
drbdsetup check-resize minor
再同期速度を動的に制御する。次のモードが使用できる。
c-plan-ahead パラメーターは
DRBD
が再同期速度の変化にどのくらい速く適応するかを定義する。ネットワークの往復時間の
5
倍以上に設定する必要がある。
c-plan-ahead
のデフォルト値は 20 で
0.1 秒単位で設定する。
c-fill-target
パラメーターはどのくらいの量の再同期データを
DRBD
実行中に常に持つかを定義する。通常のデータパスの一般的な値は
4K から 100K である。 c-fill-target
のデフォルト値は 100
で単位はセクターである。
c-delay-target パラメータは DRBD
が目指すべき再同期パスの遅延を定義する。これはネットワークの往復時間の
5
倍以上に設定する必要がある。
c-delay-target
のデフォルト値は 10
で、0.1 秒単位である。
c-max-rate
パラメーターは、動的に制御される再同期で使用される最大帯域幅を制限する。これをゼロに設定すると、制限がなくなる(DRBD
9.0.28 以降)。DRBD ホストと
DRBD
プロキシをホストするマシン間で利用可能な帯域幅、または利用可能なディスク帯域幅のいずれかに設定する。
c-max-rate
のデフォルト値は 102400
で、単位は KiB/s
である。
動的な再同期速度制御は
DRBD 8.3.9
から有効である。
--c-min-rate min_rate
•フィル・ターゲットによる動的制御
(デフォルト)。c-plan-ahead
がゼロ以外で、c-fill-target
がゼロ以外の場合に有効になる。ゴールは、定義された量のデータでデータパスのバッファーを埋めることである。このモードは
DRBD
プロキシを使用する場合に推奨される。
c-plan-ahead, c-fill-target, c-max-rate
で設定する。
•遅延ターゲットによる動的制御。c-plan-ahead
がゼロ以外
(デフォルト) で、c-fill-target
がゼロの場合に有効になる。ゴールは、データパスで定義された遅延を持つことである。
c-plan-ahead, c-delay-target, c-max-rate
で設定する。
•固定した再同期レート。c-plan-ahead
がゼロの場合に有効である。DRBD
は、固定レートで再同期
I/O
を実行しようとする。
resync-rate
で設定される。
同期元のプライマリノードは、アプリケーションの書き込みと再同期の書き込みの配分を管理する必要がある。c-min-rate
は、再同期の書き込みに使用できる帯域幅を制限する。残りの帯域幅はアプリケーションの書き込みに使用される。
c-min-rate の値 0
は、再同期の書き込みに使用できる帯域幅に制限がないことを意味する。これにより、アプリケーションの書き込みが大幅に遅くなる可能性がある。再同期速度の最低値は
1(1 KiB/s) である。
c-min-rate
のデフォルト値は 250
で、単位は KiB/s
である。
--resync-rate rate
DRBD
が再同期に使用できる帯域幅を定義する。DRBD
では、再同期中でも「通常の」アプリケーション
I/O
が可能である。再同期の帯域幅が大きすぎると、アプリケーション
I/O
が非常に遅くなる可能性がある。このパラメータは、これを避けることができる。これは、動的な再同期コントローラが無効の場合にのみ機能する。
指定された複製デバイスの下位デバイスの現在のサイズを記録する。drbdadm
によって使用される。サイズ情報は、/var/lib/drbd/drbd-minor-
minor.lkbd
という名前で記録される。
drbdsetup new-peer resource peer_node_id,
new-peer
コマンドは、 resource
に接続を作成する。リソースは
drbdsetup new-resource
で作成されている必要がある。
net-options
オプションは、既存の接続のネットワークオプションを変更する。
connect
コマンドで接続をアクティブにする前に、少なくとも1つのパスを
new-path
コマンドで追加する必要がある。利用可能なオプション:
--after-sb-0pri policy
--congestion-fill threshold,
--congestion-extents threshold
drbdsetup new-path resource peer_node_id local-addr
remote-addr
スプリットブレインが検出され、2
つのノードのいずれもプライマリでない場合の対応方法を定義する。(2
つのノードが接続されたときにスプリットブレインを検出する、スプリットブレインの決定は常に2つのノード間である)
定義されたポリシーは次のとおり:
disconnect
discard-older-primary
--after-sb-1pri policy
自動再同期はしない。単に切断する。
discard-younger-primary,
最初(discard-younger-primary)、または最後(discard-older-primary)
にプライマリなったノード
から再同期する。両方のノードが独立してプライマリになった場合、
discard-least-changes
ポリシーが使用される。
discard-zero-changes
スプリットブレイン状況が検出されてからノードの
1
つだけがデータを書き込んだ場合は、このノードからもう
1
つのノードに再同期する。両方のノードがデータを書き込んだ場合は切断する。
discard-least-changes
より多くの変更されたブロックを持つノードから再同期する。
discard-node-nodename
名前付きノードと常に再同期する。
1
つのノードがプライマリ、もう
1
つのノードをセカンダリのときに、スプリットブレインが検出された場合の対応方法を定義する。(2
つのノードが接続されたときにスプリットブレインを検出する、スプリットブレインの決定は常に2つのノード間である)
定義されたポリシーは次のとおり:
disconnect
--after-sb-2pri policy
自動再同期を行わず接続を切断する。
consensus
after-sb-0pri
アルゴリズムの結果が現在のセカンダリノードのデータを破棄することになる場合、セカンダリノードのデータを破棄する。それ以外の場合は切断する。
violently-as0p
プライマリのデータに大きな変更がある場合でも、常に
after-sb-0pri
アルゴリズムの判断を採用する。このポリシーは
allow-two-primaries
オプションを指定し、
1
ノードファイルシステム
(OCF2 や GFS ではない)
を使用している場合のみ有用である。このオプションを使用すると、プライマリノードがクラッシュする可能性があり、推奨しない。
discard-secondary
セカンダリノード上のデータを破棄する。
call-pri-lost-after-sb
常に after-sb-0pri
アルゴリズムの判断を採用する。プライマリノードでデータを破棄することになる場合は、
プライマリノードで
pri-lost-after-sb
ハンドラを呼び出す。
スプリットブレインが検出され、両方のノードがプライマリである場合の対応方法を定義する。(2
つのノードが接続されたときにスプリットブレインを検出する、スプリットブレインの決定は常に2つのノード間である)
定義されたポリシーは次のとおり:
disconnect
--allow-two-primaries
自動再同期を行わず接続を切断する。
violently-as0p
after-sb-1pri の
violently-as0p
ポリシーを参照。
call-pri-lost-after-sb
そのマシンがセカンダリに降格できる場合を除いて、いずれかのマシンの
pri-lost-after-sb
ヘルパープログラムを呼び出す。ヘルパープログラムはマシンを再起動することが期待され、ノードをセカンダリにする。どのマシンがヘルパープログラムを実行するかは、
after-sb-0pri
ポリシーによって決定される。
DRBD
デバイスを構成する最も一般的な方法は、一度に
1
つのノードのみをプライマリ(したがって書き込み可能)にすることである。
いくつかのシナリオでは、2
つのノードを一度にプライマリにしたい場合がある。
DRBD
以外のメカニズムで、共有され複製されたデバイスへの書き込みが調整される方法を使用する必要がある。これは、OCFS2
や GFS
などの共有ストレージクラスタファイルシステム、または仮想マシンイメージと仮想マシンを物理マシン間で移動できる仮想マシンマネージャを使用して実行できる。
allow-two-primaries
は、2つのノードを同時にプライマリにすることを
DRBD
に指示する。非分散ファイルシステムを使用する場合は、このオプションを有効にしてはならない。データ破損とノードクラッシュが発生する。
--always-asbp
通常、3
番目のノードが存在しないことが現在の
UUID
値から明らかな場合のみ、スプリットブレイン発生後の修復ポリシーだけが適用される。
このオプションを指定すると、両ノードのデータに関連性があるとして、スプリットブレイン発生後のポリシーが適用される。UUID
の分析により 3
番目のノードの存在が疑われる場合には、フル同期が行われることがある。(または、なんらかの別の原因によって間違った
UUID
セットで判断してしまった場合)
--connect-int time
2つのノード間の接続が
drbdsetup connect
で構成される、DRBD
はすぐに接続を確立しようとする。これが失敗すると、DRBD
は connect-int
秒後に接続を試みる。
connect-int
のデフォルト値は 10
秒である。
--cram-hmac-alg hash-algorithm
対向ノードの認証に使用するハッシュベースのメッセージ認証コード
(HMAC)
またはセキュアハッシュアルゴリズムを構成する。カーネルはいくつかの異なるアルゴリズムをサポートしており、その中にはカーネルモジュールとしてロード可能なものもある。/proc/crypto
にリストされている shash
アルゴリズムを参照。デフォルトで
cram-hmac-alg
は設定されていない。対向ノードの認証には、
shared-secret
も構成する必要がある。
--csums-alg hash-algorithm
通常、2
つのノードが再同期するとき、同期ターゲットは同期ソースから非同期データを要求し、同期ソースはデータを送信する。多くの使用パターンで、それらのブロックのかなりの数が実際には同一になっている。
csums-alg
アルゴリズムが指定されている場合、同期ターゲットは、非同期データの要求と、現在持っているデータのハッシュ値も送信する。同期ソースは、このハッシュ値とそれ自身のバージョンのデータを比較する。ハッシュ値が異なる場合、新しいデータを同期ターゲットに送信し、そうでない場合はデータが同じであることを通知する。これにより、必要なネットワーク帯域幅が削減されるが、CPU
使用率が高くなり、同期ターゲットの
I/O
が増加する可能性がある。
csums-alg
は、カーネルによってサポートされている安全なハッシュアルゴリズムの
1 つに設定できる。
/proc/crypto
にリストされている shash
アルゴリズムを参照。デフォルトでは、
csums-alg
設定されていない。
--csums-after-crash-only
このオプション(および上記の
csums-alg)
を有効にすると、プライマリクラッシュ後の最初の再同期に対してのみチェックサムベースの再同期を使用するが、その後の「ネットワーク復帰」では使用しない。
ほとんどの場合、再同期が必要であるとマークされたブロックは実際に変更されているため、チェックサムの計算、および再同期ターゲット上のブロックの読み書きはすべてオーバーヘッドである。
チェックサムベースの再同期の利点は、大部分がプライマリのクラッシュリカバリの後である。リカバリでは、アクティビティログでカバーされるより大きな領域が再同期が必要なものとしてマークされている。8.4.5
から導入された。
--data-integrity-alg alg
DRBD は通常、 TCP/IP
プロトコルに組み込まれたデータ整合性チェックに依存するが、データ整合性アルゴリズムが設定されている場合は、さらに、このアルゴリズムを使用して、ネットワーク経由で受信したデータが送信者のものと一致することを確認する。データの整合性エラーが検出された場合、DRBD
はネットワーク接続を閉じ、再接続し、再同期を行う。
data-integrity-alg
は、カーネルによってサポートされている安全なハッシュアルゴリズムの
1 つに設定できる。
/proc/crypto
にリストされている shash
アルゴリズムを参照。デフォルトでは、このメカニズムは無効である。
CPU
のオーバーヘッドが発生するため、本番環境でこのオプションを使用しないことを推奨する。また、「データ整合性に関する注意」も参照。
--fencing fencing_policy
フェンシングは、両方のノードがプライマリで切断されている状態を回避するための予防措置である。これはスプリットブレイン状態とも呼ばれている。DRBDは、次のフェンシングポリシーをサポートする:
dont-care
--ko-count number
フェンシングのためのアクションを実行しない。これがデフォルトのポリシーである。
resource-only
ノードが切り離されたプライマリ状態になると、対向ノードをフェンシングしようとする。この動作は
fence-peer
ハンドラによって行われる。このハンドラは、レプリケーション用とは別のネットワーク経由で対向ノードにアクセスし、
そこで ' drbdadm outdate minor'
の実行を想定する。
resource-and-stonith
ノードが切り離されたプライマリ状態になると、
DRBD はすべてのディスク
I/O を停止して fence-peer
ハンドラを呼び出す。このハンドラは、レプリケーション用とは別のネットワーク経由で対向ノードにアクセスし、
そこで ' drbdadm outdate minor'
の実行を想定する。これが実行できない場合、
STONITH
機能を使って対向ノードを強制排除する。これらが完了したら、ディスク
I/O を再開する。fence-peer
ハンドラが失敗した場合、
' drbdadm resume-io'
コマンドでディスク I/O
を再開できる。
セカンダリノードが書き込みリクエストを
timeout 内で ko-count
回以上失敗した場合、そのセカンダリノードはクラスタから排除される。プライマリノードは、このセカンダリノードへの接続をスタンドアロンに設定する。この機能を無効にするには、明示的に
0
に設定する必要がある。デフォルトはバージョン間で変更されている。8.4
は 7
がデフォルト値である。
--max-buffers number
再同期、オンライン照合を行う際に、受信側で
DRBD
マイナーデバイスあたりに使用するメモリを制限する。単位は
PAGE_SIZE
で、ほとんどのシステムで
4KiB
である。設定できる最小値は
32 (=128 KiB)
でハードコードされている。これらバッファはディスクからの読み書きの際にデータブロックを保持するために使用される。輻輳時のデッドロックを回避するために、この設定はハード制限というよりは閾値として使用される。最大バッファページが使用されると、プールからのそれ以上の割り当てが制限される。受信側の
I/O
バックエンドに余裕がない場合には、
max-buffers
を増やすとよい。
--max-epoch-size number
書き込みバリアを発行する前に
DRBD
が発行できる書き込みリクエストの最大数を定義する。デフォルト値は
2048 で、最小値は 1
、最大値は 20000
である。このパラメータを
10
未満の値に設定すると、パフォーマンスが低下する可能性がある。
--on-congestion policy,
デフォルトでは、
TCP
送信キューが一杯になると、
DRBD
は書き込みをブロックする。これにより、より多くのバッファスペースが再び利用可能になるまで、アプリケーションがさらに書き込みリクエストを生成するのを防ぐ。
DRBD を DRBD-proxy
と一緒に使用する場合は、
送信キューがいっぱいになる前に
DRBD を AHEAD/BEAIND
モードに切り替える
pull-ahead on-congestion
ポリシーといっしょに使用することが望ましい。DRBD
は、自身と対向ノードとの間の違いをビットマップに記録するが、もはや対向ノードに複製はしない。十分なバッファスペースが再び利用可能になると、ノードは対向ノードと同期を再開し、通常の複製に戻る。
これには、キューがいっぱいになってもアプリケーションの
I/O
をブロックしないという利点があるが、対向ノードの同期が大幅に遅れるという欠点もある。また、再同期している間、対向ノードは
inconsistent(不整合) になる。
利用可能な congestion
ポリシーは block
(デフォルト), pull-ahead
である。 congestion-fill
は、この接続で動作中に許可されているデータ量を定義する。デフォルト値は
0
で、この輻輳制御のメカニズムを無効にする(最大
10 ギガバイト)。
congestion-extents は、 AHEAD/BEAIND
モードに切り替える前にアクティブにできるビットマップエクステントの数を定義する。
al-extents
と同じデフォルトと制限をもつ。
congestion-extents は、 al-extents
より小さい値に設定した場合のみ有効である。
AHEAD/BEHIND モードは DRBD 8.3.10
から有効である。
--ping-int interval
対向ノードへの
TCP/IP 接続で ping-int
秒間に何も通信が行われなかった場合、DRBD
はキープアライブパケットを送信して、対向ノードまたはネットワーク接続の失敗がすぐに検出されるようにする。デフォルト値は
10 秒で、最小値は 1
、最大値は 120
秒である。単位は秒である。
--ping-timeout timeout
キープアライブパケットへの応答のタイムアウトを定義する。対向ノードが
ping-timeout
間で応答しない場合、
DRBD
は接続を終了し、再接続しようとする。デフォルト値は
0.5 秒で、最小値は 0.1
秒、最大値は 30
秒である。単位は 10
分の 1 秒である。
--socket-check-timeout timeout
DRBD-Proxy
を使っていて大量のバッファを確保する必要がある環境では
ping-timeout
に非現実的な大きな値を指定しなければならないことがある。TCP
コネクションが開始したときの安定するのを待つ局面でも、
DRBD はデフォルトで ping-timeout
を使ってしまう。DRBD-Proxy
は通常、同じデータセンターに配置されているため、長い待機時間は
DRBD
の接続プロセスを妨げる可能性がある。
このような場合、
socket-check-timeout に DRBD と DRBD-Proxy 間の
round trip time(RTT)
を設定するとよい。たいていの場合
1 である。
デフォルトの単位は 10
分の 1
秒である。デフォルト値は
0 で socket-check-timeout
値の代わりに ping-timeout
値を使用する。8.4.5
から導入された。
--protocol name
この接続で指定されたプロトコルを使用する。サポートされているプロトコルは次のとおり:
A
--rcvbuf-size size
DRBD
デバイスへの書き込みは、ローカルディスクへの書き込みと
TCP/IP
送信バッファに到達した時点で完了とする。
B
DRBD
デバイスへの書き込みは、ローカルディスクへの書き込みと、すべての対向ノードが書き込みリクエストを受信をした時点で完了とする。
C
DRBD
デバイスへの書き込みは、ローカルディスクとすべてのリモートディスクへの書き込みが終わった時点で完了とする。
TCP/IP
受信バッファのサイズを指定する。0(デフォルト)
を指定すると、バッファサイズが動的に調整される。このパラメータは通常設定する必要はないが、最大
10MiB
まで設定できる。デフォルトの単位はバイトである。
--rr-conflict policy
このオプションは、再同期決定の結果がクラスタ内の現在のロール割り当てと互換性がない場合を解決するのに役立つ。定義されたポリシーは次のとおり:
disconnect
--shared-secret secret
自動再同期を行わず接続を切断する。
retry-connect
今すぐ切断し、その後すぐに再接続する。
violently
プライマリノードへの再同期が許可され、ブロックデバイス上のデータがノードの
1
つに対して安定しているという前提に反す。
このオプションは危険であり、使ってはならない。
call-pri-lost
どこか 1
つのマシンで pri-lost
ハンドラを呼び出す。ハンドラはマシンを再起動することが期待され、ノードをセカンダリにする。
auto-discard
Auto-discard reverses the resync
direction, so that DRBD resyncs the current primary to the current secondary.
Auto-discard only applies when protocol A is in use and the resync
decision is based on the principle that a crashed primary should be the source
of a resync. When a primary node crashes, it might have written some last
updates to its disk, which were not received by a protocol A secondary. By
promoting the secondary in the meantime the user accepted that those last
updates have been lost. By using auto-discard you consent that the last
updates (before the crash of the primary) should be rolled back
automatically.
対向ノードの認証に使用する共有秘密鍵を設定する。secret
は 64
文字までで指定する。対向ノードの認証には、
cram-hmac-alg
も設定する必要がある。
--sndbuf-size size
TCP/IP
送信バッファのサイズを指定する。DRBD
8.0.13/8.2.7 以降、 0
(デフォルト)
を指定すると、バッファサイズが動的に調整される。32
KiB
未満の値は、この接続のスループットに有害である。大きなバッファサイズは、プロトコル
A
が遅延の大きいネットワークで使用される場合に特に有用である。サポートされる最大値は
10 MiB である。
--tcp-cork
デフォルトで、DRBD
は TCP_CORK
ソケットオプションを使用して、カーネルが部分的なメッセージを送信しないようにする。その結果、ネットワーク上のパケット量が少なくなり、サイズが大きくなる。一部のネットワークスタックでは、この最適化で悪化する可能性がある。
tcp-cork
を使用してこの最適化を無効にすることができる。
--timeout time
ネットワークを介した応答のタイムアウトを定義する。対向ノードが指定された
timeout
時間内で応答を送信しない場合、対向ノードが死んだと判断して
TCP/IP
コネクションを切断する。タイムアウト値は、
connect-int、ping-int
より小さい値でなければならない。デフォルトは
6 秒である。値は 10 分の
1
秒単位で指定する。
--use-rle
クラスタノード上の複製された各デバイスには、それぞれの対向ノードデバイス用の個別のビットマップがあある。このビットマップは、ローカルデバイスと対向ノードデバイスの違いを追跡するために使用される。クラスタの状態によっては、デバイスのビットマップ、対向ノードデバイスのビットマップ、または両方のビットマップにディスクが異なるとマークできる。2つのクラスタノードが接続すると、相互のビットマップを交換し、ローカルと対向ノードのビットマップを検査して全体的な違いを判断する。
非常に大きなデバイスのビットマップは比較的大きいが、通常、ランレングス符号化を使用して非常にうまく圧縮される。これにより、ビットマップ転送の時間と帯域幅を節約できる。
use-rle は run-length
エンコーディングを使用するかどうかを指定する。DRBD
8.4.0
以降デフォルトで有効である。
--verify-alg hash-algorithm
オンライン照合(drbdadm
verify)
は、ディスクブロックのチェックサム(すなわち、ハッシュ値)を計算して比較し、それらが異なるかどうかを検出する。
verify-alg
は、これらのチェックサムに使用するアルゴリズムを決定する。オンライン照合を使用するには、カーネルでサポートされている安全なハッシュアルゴリズムの1つに設定する必要がある。
/proc/crypto
にリストされている shash
アルゴリズムを参照。
低負荷の期間(例えば、月に1回)で定期的にオンライン照合をスケジュールすることを推奨する。また、「データ整合性に関する注意」も参照。
new-path
コマンドは、
接続にパスを作成する。接続は
drbdsetup new-peer
で作成されている必要がある。
local_addr, remote_addr
は、ローカルとリモートのプロトコル、ネットワークアドレス、ポートの形式を
[ address-family:]address[:port]
で参照する。アドレスファミリは、
ipv4, ipv6, ssocks (Dolphin Interconnect
Solutionsの「スーパーソケット」),
sdp (Infiniband Sockets Direct Protocol), sci
がサポートされる( sci
は、 ssocks
の別名である)。アドレスファミリが指定されていない場合、
ipv4 を仮定する。 ipv6
アドレスファミリ以外は、
address に IPv4
アドレス表記を使用する(たとえば、1.2.3.4)。
ipv6
アドレスは角括弧で囲み、
IPv6
アドレス表記法を使用する(たとえば、
[fd01:2345:6789:abcd :: 1])。 port
のデフォルトは 7788
である。
drbdsetup connect resource peer_node_id
connect
コマンドは接続をアクティブにする。つまり、DRBD
ドライバは接続パスのすべてのローカルアドレスをバインドしてリッスンする。接続パスを
1
つ以上確立しようとする。利用可能なオプション:
--tentative
drbdsetup del-peer resource peer_node_id
対向ノードへの接続が確立できるかどうか、および実際に接続を確立したり、再同期を開始したりすることなく、再同期が必要かどうか(また、その方向も)を判断する。--tentative
なしだと、DRBD
が何をするかシステムログを調べて、確認する。
--discard-my-data
ローカルデータを破棄して、最新データを持つ対向ノードと再同期する。スプリットブレイン状態から復旧するときに、このオプションを手作業で指定する。
del-peer
コマンドは、 resource
から接続を削除する。
drbdsetup del-path resource peer_node_id local-addr
remote-addr
del-path
コマンドは、
接続からパスを削除する。接続先の接続を維持するためにパスが必要な場合は失敗しないようにする。すべてのパスを削除するには、まず接続を切断する。
drbdsetup cstate resource peer_node_id
接続の現在の状態を表示する。接続は、対向ノードの
node-id
によって識別される。
drbdsetup connect
コマンを参照。
drbdsetup del-minor minor
複製されたデバイスを削除する。下位レベルのデバイスに接続できまない。drbdsetup
detach を参照。
drbdsetup del-resource resource
リソースを削除する。すべてのボリュームと接続を最初に削除する必要がある
( drbdsetup del-minor、 drbdsetup
disconnect)。あるいは、
drbdsetup down
すべてのボリュームと接続とともにリソースを削除するために使用できる。
drbdsetup detach minor
複製されたデバイスの下位デバイスを切り離す。利用可能なオプション:
--force
drbdsetup disconnect resource peer_node_id
強制的に切り離し、すぐに戻る。これにより、保留中のすべての
I/O
が完了するまで下位レベルのデバイスが失敗した状態になり、デバイスが切り離される。下位レベルのデバイスにまだ送信されていない
I/O (デバイスの I/O
が中断されたなど)
は失敗したものとみなされる。
対向ノードへの接続を削除する。接続は、対向ノードの
node-id
によって識別される。
drbdsetup connect
コマンを参照。
drbdsetup down {resource | all}
すべてのボリューム、接続、およびリソース自体を削除して、リソースを落とす。
drbdsetup dstate minor
下位デバイスの現在のディスク状態を表示する。
drbdsetup events2 {resource | all}
設定されたすべての
DRBD
オブジェクトの現在の状態、状態へのすべての変更を表示する。
出力形式は、機械だけでなく人も読める形式である。各行は、イベントの種類を示す単語で始まる:
exists
は既存オブジェクトの場合;
create, destroy, change
はオブジェクトが作成、破棄、変更された場合;
call, response
はイベントハンドラが呼び出された、戻った場合、
rename
はオブジェクトの名前が変更された場合。2
番目の単語は、イベントが適用されるオブジェクトを示す:
resource, device, connection, peer-device,
helper,
現在の状態が完全にダンプされたことを示すための
dash ( -) 。
残りの単語はオブジェクトを識別し、オブジェクトが入っている状態を記述する。いくつかの特別なキーは言及する価値がある:
resource may_promote:{yes|no}
利用可能なオプション:
--now
drbdsetup get-gi resource peer_node_id volume
プライマリへの昇格が成功すると予想されるかどうか。
quorum
が有効になっている場合、これを使用してフェイルオーバーをトリガーできる。このノードで
may_promote:yes
が報告されると、他のノードでは書き込みができなくなる。つまり、通常、アプリケーションが別のノードで実行されている場合でも、このノードでアプリケーションを起動できるようになる。
resource promotion_score:score
このリソースをプロモートするための相対的なヒューリスティック整数。ローカルディスクがあり、最新のデータにアクセスできるという点では、スコアが高いほど優れている。一部のノードがプライマリである場合でも、スコアは正の場合がある。クォーラムまたは最新データへのアクセスがないためにプロモーションが不可能な場合は、0
になる。
現在の状態を報告した後に終了する。デフォルトでは、継続的に監視し、状態の変化を報告する。
--poll
stdin
を読み込み、 n
キーが入力されたときに更新する。改行は無視され、他のすべての入力はコマンドを終了する。
--now
オプションがない場合は、出力を継続する。
n
キーごとに現在の状態がフェッチされるが、変更されたオブジェクトのみが出力される。これは、統計が変更された場合にのみしか
DRBD
が更新を送信しないため、
--statistics または --full
とともに使用すると便利である。
--now
オプションとともに使用されると、完全な状態が
n
キーごとに出力される。その他の変更は出力されない。
--statistics
統計情報を出力に含める。
--diff
古い状態と新しい状態を
diff
形式で情報を書き出す。状態追跡を必要とするツールに便利である。
--full
特に変更イベント関して完全な状態情報を書き出す。これは
--statistics と --verbose
を有効にする。
特定の接続上のデバイスのデータ世代識別子を表示する。デバイスは、そのボリューム番号によって識別される。接続はそのエンドポイントによって識別される。drbdsetup
connect コマンドを参照。
出力は、現在の
UUID、ビットマップ
UUID、および最初の2つの履歴
UUID
で構成され、一連のフラグが続く。現在の
UUID と履歴 UUID
はデバイス固有である。ビットマップ
UUID
およびフラグは、対向ノードのデバイス固有である。このコマンドは、最初の2つの履歴
UUID
のみを表示する。内部的には、DRBD
は各対向ノードのデバイスの履歴
UUID を1つ保持する。
drbdsetup invalidate minor
デバイスのローカルデータを対向ノードのローカルデータで置き換える。すべてのローカルデータが非同期とマークされ、指定された対向ノードデバイスとの再同期が始まる。
利用可能なオプション:
--reset-bitmap=no
drbdsetup invalidate-remote resource peer_node_id
volume
通常、invalidate
は対向ノードからの再同期を開始する前に、ビットマップのすべてのビットを
out-of-sync に設定する。
--reset-bitmap=no
を指定すると、DRBD
はビットマップをそのまま使用する。通常、これはオンライン検証で下位デバイスの違いが見つかった後に使用される。
--reset-bitmap
オプションは、DRBD
カーネルドライバー
9.0.29 および drbd-utils9.17
以降で使用できる。
--sync-from-peer-node-id
このオプションを指定すると、呼び出し元は再同期するノードを選択できる。指定しない場合、DRBD
は適切なソースノードを選択する。
対向ノードのリソースデータをローカルデータで置き換える。対向ノードデバイスのデータは非同期にマークされ、ローカルノードから指定された対向ノードへの再同期が始まる。
利用可能なオプション:
--reset-bitmap=no
drbdsetup new-current-uuid minor
通常、invalidate remote
は対向ノードへの再同期を開始する前に、ビットマップのすべてのビットを
out-of-sync に設定する。
--reset-bitmap=no
を指定すると、DRBD
はビットマップをそのまま使用する。通常、これはオンライン検証で下位デバイスに違いが見つかった後に使用される。
--reset-bitmap
オプションは、DRBD
カーネルドライバー
9.0.29 および drbd-utils9.17
以降で使用できる。
Generate a new current UUID and rotates all
other UUID values. This has three use cases: start the initial resync; skip
the initial resync; bootstrap a single node cluster.
利用可能なオプション:
--force-resync
Both operations require a "Just Created" meta data. Here is the
complete sequence step by step how to skip the initial resync:
この方法の明らかな欠点は、別の方法でディスク内容を同一にしない限り、複製物全体に古いゴミのデータが残ることである。このため、オンライン照合は多数の非同期ブロックを見出してしまう。
この方法は、すでにデータのあるディスクに適用してはならない!
最初は動作しているように見えても、ノードの切り替えを行うとデータが壊れてしまい二度と使えなくなる。そのため、
mkfs
を省略してはならない (またはそれに相当する操作)。
Bootstraping a single node cluster
drbdsetup new-minor resource minor volume
Start an initial resync. A precondition is
that the volume is in disk state Inconsistent on all nodes. This
command updates the disk state on the current node to UpToDate and
makes it source of the resync operations to the peers.
--clear-bitmap
Clears the sync bitmap in addition to
generating a new current UUID. This skips the initial resync. As a consqeuence
this volume's disk state changes to UpToDate on all nodes in this
resource.
1.両ノードでメタデータを初期化してデバイスを設定する。
drbdadm create-md --force res/volume-number
2.それぞれのサイズを知るために初期ハンドシェークが必要となる。
drbdadm up res
3.Secondary/Secondary
Inconsistent/Inconsistent
の状態で接続される。新しい現在
UUID
を作りダーティなビットマップをクリアする。
drbdadm --clear-bitmap new-current-uuid res
4.Secondary/Secondary UpToDate/UpToDate
の状態で接続される。片方をプライマリに切り替えてファイルシステムを作成する。
drbdadm primary res
mkfs -t fs-type $(drbdadm sh-dev
res/vol )
このコマンドは、最初のノードを本稼働させた後でディスク自体を
2
番目のノードに移すという手法により、クラスタの初期化時間を短縮する目的にも適用できる。この方法は、切断されたデバイスに対してのみ有効である。デバイスのロールはプライマリでもセカンダリでもよい。
必要なステップは以下のとおり:
このディスクをセカンダリのノードに挿入してクラスタに参加させる。ステップ
1 での drbdsetup
の実行以降に変更した箇所の再同期が行われる。
1.drbdsetup new-current-uuid
--clear-bitmap minor
2.現在のアクティブなサーバのディスクをコピーする。たとえば
RAID1
コントローラ配下のディスクを
1 本抜く、 dd
でコピーするなど。実際のデータ領域とメタデータの両方をコピーする必要がある。
3.drbdsetup new-current-uuid
minor
リソース内に新しい複製されたデバイスを作成する。このコマンドは、複製されたデバイス用のブロックデバイスの
inode
を作成する(デフォルトでは、/dev/drbd
minor)。volume 番号は
resource
内のデバイスを認識する。
drbdsetup new-resource resource node_id,
new-resource
コマンドは、新しいリソースを作成する。
resource-options
コマンドは、既存のリソースのリソースオプションを変更する。利用可能なオプション:
--auto-promote bool-value
drbdsetup outdate minor
書き込みのためにデバイスをマウントまたはオープンする前に、リソースをプライマリに昇格させる必要がある。
DRBD 9
より前は、これを明示的に行う必要があった(
"drbdadm primary")。DRBD 9 以降、
auto-promote
を使用すると、デバイスの
1
つが書き込み用にマウントまたはオープンされるときに、リソースをプライマリに自動的に昇格させることができる。すべてのデバイスがアンマウントされるか、オープンしているユーザがいなくなると、すぐにリソースの役割がセカンダリになる。
自動プロモーションは、クラスタの状態が許可する場合にのみ成功する(つまり、明示的な
drbdadm primary
コマンドが成功するなら)。それ以外の場合は、DRBD
9
より前と同様にデバイスのマウントまたはオープンが失敗する:
mount(2)
システムコールは、 errno
を
EROFS(読み取り専用ファイルシステム)
に設定して失敗する。
open(2)
システムコールは、 errno
を
EMEDIUMTYPE(メディアタイプが間違っている)
に設定してが失敗する。
auto-promote
の設定に関係なく、デバイスが明示的に昇格された場合
( drbdadm
primary)、明示的に降格する必要がある(
drbdadm secondary)。
auto-promote は DRBD 9.0.0
から有効で、デフォルトは
yes である。
--cpu-mask cpu-mask
DRBD
のカーネルスレッドに
CPU
アフィニティマスクを設定する。CPU
マスクは 16
進数で指定する。デフォルト値は
0
で、スケジューラがどの
CPU
上でカーネルスレッドを実行するかを決定する。システムに存在しない
cpu-mask
CPU番号は無視される。
--on-no-data-accessible policy
要求されたデータがローカルまたはリモートで使用できない場合に(たとえば、すべてのディスクに障害が発生した場合など)、どのように
I/O
要求を処理するかを決定する。クォーラムが有効になっている場合は
on-no-data-accessible を on-no-quorum
と同じ値に設定する必要がある。定義されたポリシーは次のとおり:
io-error
この設定は、DRBD 8.3.9
から有効である。デフォルトのポリシーは
io-error である。
--peer-ack-window value
errno を EIO
に設定してシステムコールは失敗する。
suspend-io
リソースは I/O
を中断する。下位レベルのデバイスを接続(再接続)したり、データにアクセスできる対向ノードに接続したり、
drbdadm resume-io res で DRBD に I/O
を再開させたりすることで、
再開できる。データがない場合、
I/O
を強制的に再開すると、
io-error
ポリシーと同じ結果になる。
各ノード上の各デバイスのために、DRBD
は、ローカルデータと各対向ノードデバイスのリモートデータの差分のビットマップを維持する。例えば、それぞれが単一デバイスを有する
3 ノード構成 (ノード
A、B、C)
において、各ノードは、各対向ノードに対して
1
つのビットマップを維持する。
ノードが書き込みリクエストを受け取ると、書き込みノードのビットマップを更新する方法はわかるが、ノード間のビットマップを更新する方法はわからない。この例では、書き込みリクエストがノード
A から B および C
に伝搬するとき、ノード
B および C はノード A
と同じデータを有するが、両方が同じデータを有するか不明である。
是正措置として、書き込みノードは、時には、相手との間にどのような状態があるかを示すピアツーピアパケットを対向ノードに送信する。
peer-ack-window は、peer-ack
パケットを送信する前に、プライマリノードが送信するデータ量を指定する。値が小さいとネットワークトラフィックが増加する。値が大きいとネットワークトラフィックは減少するが、セカンダリノードのメモリ消費量が大きくなり、プライマリノードの障害後に、セカンダリノード間の再同期時間が長くなる。(注:peer-ack
パケットは、他の理由でも送信される場合がある。たとえば、メンバーシップの変更または
peer-ack-delay
タイマーの満了など)。
peer-ack-window
のデフォルト値は、2 MiB
であり、単位はセクタである。このオプションは
9.0.0 から有効である。
--peer-ack-delay expiry-time
最後に終了した書き込みリクエストの後に
expiry-time
間、新しい書き込みリクエストが発行されない場合、peer-ack
パケットが送信される。タイマーが満了する前に新しい書き込みリクエストが発行されると、タイマーは
expiry-time
にリセットされる。(注:peer-ack
パケットは、他の理由でも送信される場合がある。たとえば、メンバーシップの変更または
peer-ack-window
オプションなど)。
このパラメータは、リモートノードの再同期動作に影響を与える可能性がある。対向ノードは、
AL-extent
のロックを解除する
peer-ack
を受信するまで待つ必要がある。対向ノード間の再同期操作は、これらのロックを待つ必要がある。
peer-ack-delay
のデフォルト値は、100
ミリ秒であり、単位はミリ秒である。このオプションは
9.0.0 から有効である。
--quorum value
有効にすると、レプリケートされたデータセットを変更するために、クラスタパーティションはクォーラムを必要とする。つまり、クラスタパーティション内のノードは、クラスタパーティションにクォーラムがある場合にのみプライマリに昇格できる。昇格すべきノードにディスクが直接接続されているすべてのノードが対象である。プライマリノードが書き込みリクエストを実行する必要があるが、クラスタパーティションがクォーラムを失った場合、
I/O
をフリーズするか、または書き込みリクエストを拒否する(
on-no-quorum
の設定に依存)。クォーラムが失われると、プライマリは常に
quorum-lost
ハンドラを呼び出す。ハンドラは通知のためのものであり、リターンコードは無視される。
オプションの値は、
off, majority, all,
または数値である。数値を設定する場合は、値がノード数の半分を超えていることを確認すること。クォーラムはデータの不一致を回避するメカニズムであり、2
つ以上の複製が存在する場合にフェンシングの代わりに使用されるときがある。デフォルトは
off である。
切断されたノードがすべて
outdated(無効)
としてマークされている場合、パーティションのサイズに関係なく、常にクォーラムを持つ。つまり、すべてのセカンダリノードを正常に切断すると、1
つのプライマリが動作し続ける。1
つのセカンダリが切断された瞬間に、切断されたすべてのセカンダリノードがパーティションを形成すると仮定する。パーティションが他のパーティションよりも小さい場合、この時点ではクォーラムは失われる。
ディスクレスノードがクォーラムを常に取得できるようにする場合、
majority, all
オプションは使用しないことを推奨する。クラスタ内のディスクフルノードの完全な数を決定するための
DBRD
のヒューリスティックな方法は正確でないため、絶対数を指定することを推奨する。
クォーラムの実装は、DRBD
カーネルドライバのバージョン
9.0.7 から有効である。
--quorum-minimum-redundancy value
このオプションは、パーティションがクォーラムを獲得できるように
UpToDate
のディスクを持つノードの必要最小限の数を設定する。これは、素の
quorum
とは異なる要件である。
オプションの値は、
off, majority, all,
または数値である。数値を設定する場合は、値がノード数の半分を超えていることを確認すること。
ディスクレスノードがクォーラムを常に取得できるようにする場合、
majority, all
オプションは使用しないことを推奨する。クラスタ内のディスクフルノードの完全な数を決定するための
DBRD
のヒューリスティックな方法は正確でないため、絶対数を指定することを推奨する。
このオプションは、DRBD
カーネルドライバのバージョン
9.0.10 から有効である。
--on-no-quorum {io-error | suspend-io}
By default DRBD freezes IO on a device, that
lost quorum. By setting the on-no-quorum to io-error it
completes all IO operations with an error if quorum is lost.
通常、 on-no-data-accessible は
on-no-quorum
と同じ値に設定する。
on-no-quorum オプションは、DRBD
カーネルドライバのバージョン
9.0.8 から有効である。
--on-suspended-primary-outdated {disconnect | force-secondary}
This setting is only relevant when
on-no-quorum is set to suspend-io. It is relevant in the
following scenario. A primary node loses quorum hence has all IO requests
frozen. This primary node then connects to another, quorate partition. It
detects that a node in this quorate partition was promoted to primary, and
started a newer data-generation there. As a result, the first primary learns
that it has to consider itself outdated.
When it is set to force-secondary then it will demote to secondary
immediately, and fail all pending (and new) IO requests with IO errors. It
will refuse to allow any process to open the DRBD devices until all openers
closed the device. This state is visible in status and events2
under the name force-io-failures.
The disconnect setting simply causes that node to reject connect attempts
and stay isolated.
The on-suspended-primary-outdated option is available starting with the
DRBD kernel driver version 9.1.7. It has a default value of
disconnect.
下位デバイスのデータ内容が「無効」であるとマークする。これはフェンシングに使用され、デバイスが含まれているリソースが将来プライマリになるのを防ぐ。--fencing
ディスクオプションを参照。
drbdsetup pause-sync resource peer_node_id volume
ローカルポーズフラグを設定して、ローカルデバイスと対向ノードとの再同期を停止する。再同期は、接続の両側の一時停止フラグがクリアされた場合にのみ再開することができる。
drbdsetup primary resource
リソース内のノードの役割をプライマリに変更する。これにより、このリソース内の複製されたデバイスを書き込み用にマウントまたはオープンすることができる。利用可能なオプション:
--overwrite-data-of-peer
DRBD
では、通常、クラスタ内の
1
つのノードだけがプライマリの役割を果たすことができる。
DRBD
はノード間のリソース内のデバイスを調整できる。
--allow-two-primaries
ネットワークオプションは、これを変更する。その場合、DRBD
以外のメカニズムはデバイスアクセスを調整する必要がある。
drbdsetup resize minor
このオプションは、
--force オプション
の別名である。
--force
一部のデバイスで最新のデータが保証されていない場合でも、リソースを強制的にプライマリにする。このオプションは、新しく作成されたクラスタ内のいずれかのノードをプライマリノードに切り替える場合や、障害から手動で回復する場合に使用する。
これは、スプリットブレインにつながる可能性があることに注意すること。また、不整合なデバイスを最新のデバイスに強制的に変更する場合は、使用可能な完全性チェック(ファイルシステムチェックなど)を使用して、システムをクラッシュさせずにデバイスを使用できることを確認すること。
すべてのノードで、複製されたデバイスの下位デバイスのサイズを再確認する。このコマンドは、複製されたデバイスのサイズを調整するために、すべてのノードの下位レベルのデバイスが拡張された後に呼び出されれる。利用可能なオプション:
--assume-peer-has-space
drbdsetup resume-io minor
現時点では、対向ノードのデバイスの一部が接続されていない場合でも、デバイスのサイズを変更する。DRBD
は、次に接続するときに対向ノードのデバイスのサイズを変更しようとする。対向ノードの小さすぎるデバイスへの接続は拒否する。
--assume-clean
追加されたディスクスペースを再同期しない。代わりに、すべてのノードで同一であると仮定する。このオプションは、ディスクスペースが初期化されておらず、相違していない場合や、すべてのノードで同一であることが分かっている場合に使用できる。drbdsetup
verify
コマンドを参照。
--size val
このオプションは、DRBD
デバイスの使用可能なサイズをオンラインで縮小するために使用できる。ファイルシステムがこの操作によって破損しないことはユーザ責任において確認する。
--al-stripes val --al-stripes val
これらのオプションを使用して、アクティビティログのレイアウトをオンラインで変更することができる。内部メタデータの場合には、同時に、下位デバイスのユーザーに見えるサイズ(--size
を使用して)の縮小、または拡大が必要である。
複製されたデバイスの
I/O を再開する。 --fencing
ネットオプションを参照。
drbdsetup resume-sync resource peer_node_id volume
ローカル同期の一時停止フラグをクリアして、再同期を再開できるようにする。
drbdsetup role resource
リソースの現在の役割を表示する。
drbdsetup secondary resource
リソース内のノードの役割をセカンダリに変更する。複製されたデバイスが使用中の場合、このコマンドは失敗する。
--force
drbdsetup show {resource | all}
A forced demotion to secondary causes all
pending and new IO requests to terminate with IO errors.
Please note that a forced demotion returns immediately. The user should unmount
any filesystem that might be mounted on the DRBD device. The device can be
used again when force-io-failures has a value of no. (See
drbdsetup status and drbdsetup events2).
リソースまたはすべてのリソースの現在の構成を表示する。利用可能なオプション:
--show-defaults
drbdsetup show-gi resource peer_node_id volume
すべての設定パラメータを表示する。設定ファイルに未設定のパラメータも初期値の設定で表示する。このオプションをつけないと、初期値のパラメータは確認できない。
特定の接続上のデバイスのデータ世代識別子を表示する。さらに、出力の説明を行う。他は
drbdsetup get-gi
コマンドと同じである。
drbdsetup state
これは drbdsetup role
の別名である。推奨しない。
drbdsetup status {resource | all}
リソースの全ての有効な設定情報を表示する。出力は、構成されたリソースごとに
1
つの段落で構成される。各段落は、リソースごとに
1 行、各デバイスに 1
行、接続ごとに 1
行が続く。デバイスと接続行はインテンドされる。各接続行は、対向ノードのデバイスごとに
1
行、これらは接続行に対してインテンドされる。
長い行は端末の幅で折り返され、どの行に属しているかを示すためにインデントされる。利用可能なオプション:
--verbose
たとえば、1
つの接続と1
つのボリュームのみを持つリソースの出力は、次のようになる。
--verbose を使用すると,
同じリソースは次のように出力される:
drbdsetup suspend-io minor
冗長か無関係であっても、より多くの情報を出力に含める。
--statistics
出力にデータ転送の統計情報を含める。
--color={always | auto | never}
出力をカラー化する。
--color=auto, drbdsetup
は標準出力が端末に接続されている場合にのみカラーコードを出力する。
drbd0 role:Primary disk:UpToDate host2.example.com role:Secondary disk:UpToDate
drbd0 node-id:1 role:Primary suspended:no volume:0 minor:1 disk:UpToDate blocked:no host2.example.com local:ipv4:192.168.123.4:7788 peer:ipv4:192.168.123.2:7788 node-id:0 connection:WFReportParams role:Secondary congested:no volume:0 replication:Connected disk:UpToDate resync-suspended:no
複製されたデバイスの
I/O
を停止する。通常、このコマンドを使用する必要はない。
drbdsetup verify resource peer_node_id volume
オンライン照合を開始するか、デバイスの検証部分を変更するか、オンライン照合を停止する。このコマンドでは、指定した対向ノードを接続する必要がある。
オンライン照合では、ローカルと対向ノードの各ディスクブロックを比較する。ノード間で異なるブロックは非同期としてマークされるが、
自動的に同期化
されない。それらを同期させるには、
drbdsetup invalidate または drbdsetup
invalidate-remote を --reset-bitmap=no
とともに使用する。進行状況は、
drbdsetup status --statistics
の出力で監視できる。利用可能なオプション:
--start position
また、'notes'
のデータの完全性に関する注意を参照。
drbd.conf(5) manual page.
drbdsetup wait-connect-volume resource peer_node_id
volume,
オンライン照合を開始する場所を定義する。オンライン照合がすでに進行中の場合、このパラメータは無視される。開始パラメータが指定されていない場合、オンライン照合は以前に中断された場所(対向ノードの接続が照合中に失われた場合)、前回の終了したセクタの後(以前にオンライン照合が完了した場合)、またはデバイスの最初(以前に終わりに達した場合、または以前にオンライン照合が実行されていない場合)から続けられる。
ディスク上の位置は、デフォルトでディスクセクタ(512バイト)で指定される。
--stop position
オンライン照合を停止する場所を定義する。オンライン照合が既に進行中の場合、進行中のオンライン照合プロセスの停止位置が変更される。これを使用してオンライン照合を停止する。
ディスク上の位置は、デフォルトでディスクセクタ(512バイト)で指定される。
wait-connect-*
コマンドは、対向ノード上のデバイスが表示されるまで待機する。
wait-sync-*
コマンドは、対向ノード上のデバイスが最新の状態になるまで待機する。両方のコマンドで利用可能なオプション:.PP
--degr-wfc-timeout timeout
drbdsetup forget-peer resource peer_node_id
システムが停止したとき、クラスタが単一ノードで構成されている場合、すべてのピアが接続されるまで待機する時間を定義する。このパラメータは通常、
wfc-timeout
より小さい値に設定する。再起動前に到達できなかった対向ノードが再起動後に到達できる可能性は低いため、待機が助けになる可能性は低いということである。
タイムアウトは秒単位で指定する。デフォルト値は
0
であり、無限のタイムアウトを意味する。
wfc-timeout
パラーメータも参照。
--outdated-wfc-timeout timeout
システムが停止したとき、すべての対向ノードが
outdated(無効)
であった場合、すべての対向ノードが接続されるまで待機する時間を定義する。このパラメータは通常、
wfc-timeout
より小さい値に設定する。outdated(無効)
の対向ノードがその間にプライマリになることはできないので、以前に生存していたノードを待つ必要がないということである。
タイムアウトは秒単位で指定する。デフォルト値は
0
であり、無限のタイムアウトを意味する。
wfc-timeout
パラーメータも参照。
--wait-after-sb
このパラメータは、スプリットブレイン状況が検出された場合でも、DRBD
が init
スクリプトで待機し続けるため、ノード間の接続が拒否される。
--wfc-timeout timeout
すべての対向ノードが接続されるまで
init
スクリプトが待機する時間を定義する。これは、DRBD
リソースを管理できないクラスタマネージャと組み合わせて使用する場合に便利である。クラスタマネージャが起動すると、DRBD
リ
ソースはすでに起動して実行されている。Pacemaker
などのより優れたクラスターマネージャを使用すると、クラスターマネージャが
DRBD
リソースを制御できるようになる。タイムアウトは秒単位で指定する。デフォルト値は
0
であり、無限のタイムアウトを意味する。
degr-wfc-timeout
パラーメータも参照。
forget-peer
コマンドは、対向ノードのすべての痕跡をメタデータから削除する。これは、メタデータ内のビットマップスロットを解放し、今まで接続したことのないノードが接続した場合、より多くのビットマップスロットを割り当てることを可能にする。
このコマンドを使用するには、接続を解除する必要がある。対向ノードが後で再接続する場合、ビットマップベースの再同期は完全同期に変わる。
drbdsetup rename-resource resource new_name
ローカルノードで
resource の名前を new_name
に変更する。DRBD
のネットワークプロトコルにはリソース名の概念がないため、技術的には異なるノードのリソースに異なる名前を付けることは可能である。ただし、クラスタ全体で一貫した名前を付けて、すべてのノードで同じ
rename-resource
コマンドを発行することを推奨する。
新しい名前をユーザーに通知するために、
events2 ストリームで rename
イベントが発行される。
EXAMPLES
詳しくは DRBD User's Guide[1] を参照。VERSION
このドキュメントは DRBD バージョン 9.0.0 向けに改訂されている。AUTHOR
Written by Philipp Reisner <[email protected]> and Lars Ellenberg <[email protected]>.REPORTING BUGS
Report bugs to <[email protected]>.COPYRIGHT
Copyright 2001-2018 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.SEE ALSO
drbd.conf(5), drbd(8), drbdadm(8), DRBD User's Guide[1], DRBD Web Site[2]NOTES
- 1.
- DRBD User's Guide
- 2.
- DRBD Web Site
17 January 2018 | DRBD 9.0.x |