動作中(オンライン)に下位ブロックデバイスを拡張できる場合は、 これらのデバイスをベースとするDRBDデバイスについても 動作中にサイズを拡張することができます。 その際に、次の2つの条件を満たす必要があります。
影響を受けるリソースの下位デバイスが、 LVMやEVMSなどの論理ボリューム管理サブシステムによって管理されている。
現在、リソースの接続状態がConnectedになっている。
両方のノードの下位ブロックデバイスを拡張したら、 一方のノードだけがプライマリ状態であることを確認してください。 プライマリノードで次のように入力します。
drbdadm resize resource新しいセクションの同期がトリガーされます。 同期はプライマリノードからセカンダリノードへ実行されます。
DRBDが停止しているときに両方のノードの下位ブロックデバイスを拡張すると、 新しいサイズが自動的に認識されます。 管理者による作業は必要ありません。
両方のノードで次にDRBDを起動した際に、 DRBDデバイスのサイズが新しいサイズになり、 ネットワーク接続が正常に確立します。
DRBDデバイスを縮小する前に、 DRBDの上位層(通常はファイルシステム)を縮小する必要があります。 ファイルシステムが実際に使用している容量について、 DRBDが問い合わせることはできないため、 データが失われないように注意する必要があります。
![]() | 注意 |
|---|---|
ファイルシステムをオンラインで縮小できるかどうかは、 使用しているファイルシステムによって異なります。 ほとんどのファイルシステムはオンラインでの縮小をサポートしません。 XFSは縮小そのものをサポートしません。 |
内部メタデータを使用している場合は、 メタデータに必要な領域を考慮してください。 drbdadm resize に送られるサイズは ファイルシステムの正味サイズです。 内部メタデータの場合、DRBDが必要とする総サイズは これより大きくなります(「メタデータサイズの見積り」も参照)。
オンラインでDRBDを縮小するには、 その上位に常駐するファイルシステムを縮小した後に、 次のコマンドを実行します。
drbdadm -- --size=new-sizeresizeresource
new-sizeには
通常の乗数サフィックス(K、M、G など)を使用できます。
DRBDを縮小したら、DRBDに含まれるブロックデバイスも
縮小できます(デバイスが縮小をサポートする場合)。
DRBDが停止しているときに下位ブロックデバイスを縮小すると、 次にそのブロックデバイスを接続しようとしてもDRBDが拒否します。 これは、ブロックデバイスが小さすぎる(外部メタデータを使用する場合)、 またはメタデータを見つけられない(内部メタデータを使用する場合)ことが原因です。 この問題を回避するには、次の手順を行います (オンライン縮小を使用できない場合)。
![]() | 警告 |
|---|---|
これは高度な手順です。慎重に検討した上で実行してください。 |
DRBDがまだ動作している状態で、一方のノードのファイルシステムを縮小します。
DRBDリソースを停止します。
drbdadm down resource縮小する前に、メタデータをテキストファイルに保存します。
drbdadm dump-mdresource>/tmp/metadata
各ノードに個別のダンプファイルを使用して、 両方のノードに対してこの手順を実行します。 一方のノードのメタデータのダンプを取り、 ダンプファイルを単に対向ノードにコピーすることは避けてください。 これはうまくいきません。
両方のノードの下位ブロックデバイスを縮小します。
これに合わせて、両方のノードについて、
/tmp/metadataファイルの
サイズ情報(la-size-sect)を調整します。
la-size-sectは、必ずセクタ単位で指定する必要があります。
内部メタデータを使用している場合は、 メタデータ領域を再初期化します。 この時点では、縮小によりおそらく内部メタデータが失われています。
drbdadm create-md resource
修正したメタデータを両方のノードに再度インポートします。
drbdmeta_cmd=$(drbdadm -d dump-md test-disk)
${drbdmeta_cmd/dump-md/restore-md} /tmp/metadata
Valid meta-data in place, overwrite? [need to type 'yes' to confirm]
yes
Successfully restored meta data
![]() | 注意 |
|---|---|
この例では |
DRBD リソースを再度有効にします。
drbdadm up resource