リソースのサイズ変更

オンラインで拡張する

動作中(オンライン)に下位ブロックデバイスを拡張できる場合は、 これらのデバイスをベースとするDRBDデバイスについても 動作中にサイズを拡張することができます。 その際に、次の2つの条件を満たす必要があります。

  1. 影響を受けるリソースの下位デバイスが、 LVMやEVMSなどの論理ボリューム管理サブシステムによって管理されている。

  2. 現在、リソースの接続状態がConnectedになっている。

両方のノードの下位ブロックデバイスを拡張したら、 一方のノードだけがプライマリ状態であることを確認してください。 プライマリノードで次のように入力します。

drbdadm resize resource

新しいセクションの同期がトリガーされます。 同期はプライマリノードからセカンダリノードへ実行されます。

オフラインで拡張する

DRBDが停止しているときに両方のノードの下位ブロックデバイスを拡張すると、 新しいサイズが自動的に認識されます。 管理者による作業は必要ありません。

両方のノードで次にDRBDを起動した際に、 DRBDデバイスのサイズが新しいサイズになり、 ネットワーク接続が正常に確立します。

オンラインで縮小する

DRBDデバイスを縮小する前に、 DRBDの上位層(通常はファイルシステム)を縮小する必要があります。 ファイルシステムが実際に使用している容量について、 DRBDが問い合わせることはできないため、 データが失われないように注意する必要があります。

[注意]注意

ファイルシステムをオンラインで縮小できるかどうかは、 使用しているファイルシステムによって異なります。 ほとんどのファイルシステムはオンラインでの縮小をサポートしません。 XFSは縮小そのものをサポートしません。

内部メタデータを使用している場合は、 メタデータに必要な領域を考慮してください。 drbdadm resize に送られるサイズは ファイルシステムの正味サイズです。 内部メタデータの場合、DRBDが必要とする総サイズは これより大きくなります(「メタデータサイズの見積り」も参照)。

オンラインでDRBDを縮小するには、 その上位に常駐するファイルシステムを縮小した後に、 次のコマンドを実行します。

drbdadm -- --size=new-size resize resource

new-sizeには 通常の乗数サフィックス(K、M、G など)を使用できます。 DRBDを縮小したら、DRBDに含まれるブロックデバイスも 縮小できます(デバイスが縮小をサポートする場合)。

オフラインで縮小する

DRBDが停止しているときに下位ブロックデバイスを縮小すると、 次にそのブロックデバイスを接続しようとしてもDRBDが拒否します。 これは、ブロックデバイスが小さすぎる(外部メタデータを使用する場合)、 またはメタデータを見つけられない(内部メタデータを使用する場合)ことが原因です。 この問題を回避するには、次の手順を行います (オンライン縮小を使用できない場合)。

[警告]警告

これは高度な手順です。慎重に検討した上で実行してください。

  1. DRBDがまだ動作している状態で、一方のノードのファイルシステムを縮小します。

  2. DRBDリソースを停止します。

    drbdadm down resource
  3. 縮小する前に、メタデータをテキストファイルに保存します。

    drbdadm dump-md resource > /tmp/metadata
    

    各ノードに個別のダンプファイルを使用して、 両方のノードに対してこの手順を実行します。 一方のノードのメタデータのダンプを取り、 ダンプファイルを単に対向ノードにコピーすることは避けてください。 これはうまくいきません。

  4. 両方のノードの下位ブロックデバイスを縮小します。

  5. これに合わせて、両方のノードについて、 /tmp/metadataファイルの サイズ情報(la-size-sect)を調整します。 la-size-sectは、必ずセクタ単位で指定する必要があります。

  6. 内部メタデータを使用している場合は、 メタデータ領域を再初期化します。 この時点では、縮小によりおそらく内部メタデータが失われています。

    drbdadm create-md resource
    
  7. 修正したメタデータを両方のノードに再度インポートします。


    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

    [注意]注意

    この例ではbashパラメータ置換を使用しています。 他のシェルの場合、機能する場合もしない場合もあります。 現在使用しているシェルがわからない場合は、 SHELL 環境変数を確認してください。

  8. DRBD リソースを再度有効にします。

    drbdadm up resource