新しい変更点

目次

1. ボリューム
1.1. udevシンボリックリンクの変更
2. 構成における構文の変更点
2.1. 論理型構成オプション
2.2. syncer セクションはなくなりました
2.3. protocol オプションは特例でなくなりました
2.4. 新しいリソースごとの options セクション
3. ネットワーク通信のオンライン変更
3.1. レプリケーションプロトコルの変更
3.2. シングルプライマリからデュアルプライマリのレプリケーションに変更する
4. drbdadm コマンドの変更点
4.1. pass-throughオプションの変更点
4.2. --overwrite-data-of-peer--force オプションに置き換えられました
5. デフォルト値の変更点
5.1. 同時にアクティブなアクティビティログのエクステント数(al-extents)
5.2. ランレングス符号化(use-rle)
5.3. I/Oエラーの処理ストラテジー(on-io-error)
5.4. 可変レート同期
5.5. 構成可能なDRBDデバイス数(minor-count)

この付録はDRBD 8.4より前のバージョンからアップグレードしたユーザ向けです。DRBDの構成と挙動へのいくつかの重要な変更点に焦点を合わせています。

1. ボリューム

ボリュームはDRBD 8.4の新しい概念です。8.4より前では、すべてのリソースは1つのブロックにのみ関連付けられていました。そのためDRBDデバイスとリソース間は1対1の関係でした。8.4からは各々が1つのブロックデバイスに対応するマルチボリュームが、1つのレプリケーションコネクションを共有することが可能になりました。これは順番に1つのリソースに対応するものです。

1.1. udevシンボリックリンクの変更

DRBD udev統合スクリプトは、個々のブロックデバイスのノードを示すシンボリックリンクを管理します。これらは /dev/drbd/by-res/dev/drbd/by-disk ディレクトリにあります。

DRBD 8.3以前では、/dev/drbd/by-disk のリンクは1つのブロックデバイスに張られていました。

DRBD 8.3以前のudevが管理するDRBDシンボリックリンク. 

lrwxrwxrwx 1 root root 11 2011-05-19 11:46 /dev/drbd/by-res/home ->
  ../../drbd0
lrwxrwxrwx 1 root root 11 2011-05-19 11:46 /dev/drbd/by-res/data ->
  ../../drbd1
lrwxrwxrwx 1 root root 11 2011-05-19 11:46 /dev/drbd/by-res/nfs-root ->
  ../../drbd2

DRBD 8.4では、1つのリソースが複数ボリュームに対応できるため、/dev/drbd/by-res/<resource> は個々のボリュームに張られたシンボリックを含むディレクトリになりました。

DRBD 8.4でのudevが管理するDRBDシンボリックリンク. 

lrwxrwxrwx 1 root root 11 2011-07-04 09:22 /dev/drbd/by-res/home/0 ->
  ../../drbd0
lrwxrwxrwx 1 root root 11 2011-07-04 09:22 /dev/drbd/by-res/data/0 ->
  ../../drbd1
lrwxrwxrwx 1 root root 11 2011-07-04 09:22 /dev/drbd/by-res/nfs-root/0 ->
  ../../drbd2
lrwxrwxrwx 1 root root 11 2011-07-04 09:22 /dev/drbd/by-res/nfs-root/1 ->
   ../../drbd3

シンボリックリンクが参照するファイルシステムの構成は、DRBD 8.4に移行する場合には、通常は単純にシンボリックリンクのパスに /0 を追加することで更新されている必要があります。

2. 構成における構文の変更点

このセクションでは構成における構文の変更点について扱います。これは /etc/drbd.d/etc/drbd.conf のDRBD設定ファイルに影響があります。

[重要]重要

drbdadm の構文解析は8.4より前の構文も受け付け、現在の構文へ内部で自動的に変換します。前のリリースにない新機能の使用を行うのでなければ、現在の構文に合わせて構成を調整する必要はありません。しかしながら、DRBD 9では旧フォーマットはサポートされなくなるため、いずれは新しい構文を適用することを推奨いたします。

2.1. 論理型構成オプション

drbd.conf は色々な論理型構成オプションをサポートしています。DRBD 8.4より前の構文では、これら論理型オプションは次のようでした。

DRBD 8.4より前の論理型オプションが付いた構成例. 

resource test {
  disk {
    no-md-flushes;
  }
}

これは構成上の問題がありました。common 構成セクションに論理型オプションを加えたいとき、その後で個々のリソースを上書きしていました。

DRBD 8.4より前の common セクションに論理型オプションが付いた構成例. 

common {
  no-md-flushes;
}
resource test {
  disk {
    # No facility to enable disk flushes previously disabled in
    # "common"
  }
}

DRBD 8.4では、すべての論理型オプションは yesno の値をとります。common からでも個々の resource セクションからでも、これらオプションが操作しやすくなっています。

common セクションでのDRBD 8.4の論理型オプション付き構成例. 

common {
  md-flushes no;
}
resource test {
  disk {
    md-flushes yes;
  }
}

2.2. syncer セクションはなくなりました

DRBD 8.4より前では、構成の構文で syncer セクションが使用できましたが、8.4では使われなくなりました。以前あった syncer オプションは、リソースの net または disk セクションの中に移動しています。

DRBD 8.4より前の syncer セクション付きの構成例. 

resource test {
  syncer {
    al-extents 3389;
    verify-alg md5;
  }
  ...
}

上記の例で表しているものは、DRBD 8.4の構文では次のようになります。

DRBD 8.4でのsyncerセクションが置き換えられた構成例. 

resource test {
  disk {
    al-extents 3389;
  }
  net {
    verify-alg md5;
  }
  ...
}

2.3. protocol オプションは特例でなくなりました

以前のDRBDリリースでは、protocol オプションは不自然にも(また直観に反して)、net セクション内ではなく、単独で定義される必要がありました。DRBD 8.4ではこの変則をなくしています。

DRBD 8.4より前の単独の protocol オプションのある構成例. 

resource test {
  protocol C;
  ...
  net {
    ...
  }
  ...
}

DRBD 8.4での同じ構成の構文は次のようになります。

net セクション内に protocol オプションのあるDRBD 8.4構成例. 

resource test {
  net {
    protocol C;
    ...
  }
  ...
}

2.4. 新しいリソースごとの options セクション

DRBD 8.4では、resource セクション内でも common セクション内でも定義できる新しい options セクションを導入しました。以前は不自然にも syncer セクションで定義されていた cpu-mask オプションは、このセクションに移動しました。同様に8.4より前のリリースでは disk セクションで定義されていた on-no-data-accessible オプションもこのセクションに移動しました。

DRBD 8.4より前の cpu-maskon-no-data-accessible オプションのある構成例. 

resource test {
  syncer {
    cpu-mask ff;
  }
  disk {
    on-no-data-accessible suspend-io;
  }
  ...
}

DRBD 8.4での同じ構成の構文は次のようになります。

options セクションでのDRBD 8.4の構成例. 

resource test {
  options {
    cpu-mask ff;
    on-no-data-accessible suspend-io;
  }
  ...
}

3. ネットワーク通信のオンライン変更

3.1. レプリケーションプロトコルの変更

DRBD 8.4より前では、リソースがオンラインまたはアクティブの状態では、レプリケーションプロトコルの変更は不可能でした。リソースの構成ファイル内で protocol オプションを変更し、それから両ノードで drbdadm disconnect を実行し、最後に drbdadm connect を行わなければなりませんでした。

DRBD 8.4では、即座にレプリケーションプロトコルの変更が行えます。たとえば、一時的に接続を通常の同期レプリケーションから非同期レプリケーションのモードに変更することができます。

接続が確率された状態でレプリケーションプロトコルを変更する. 

drbdadm net-options --protocol=A <resource>

3.2. シングルプライマリからデュアルプライマリのレプリケーションに変更する

DRBD 8.4より前では、リソースがオンラインやアクティブの状態ではシングルプライマリからデュアルプライマリに変更したり戻したりする事はできませんでした。リソースの構成ファイル内の allow-two-primaries オプションを変更し、drbdadm disconnect を実行し、それから drbdadm connect を両ノードで実行する必要がありました。

DRBD 8.4ではオンラインで変更が行えます。

[注意]注意

DRBDのデュアルプライマリモードを使うアプリケーションはクラスタファイルシステムまたは他のロッキング機構を使用していることが必要です。このために、デュアルプライマリモードが一時的または永続的であることは区別されません。

リソースがオンライン中にデュアルプライマリに変更する場合は、「一時的なデュアルプライマリモード」を参照してください。

4. drbdadm コマンドの変更点

4.1. pass-throughオプションの変更点

DRBD 8.4以前では、drbdadm で特殊なオプションを drbdsetup に引き渡す場合には、次の例のように難解な --{nbsp}--<option> 構文を使わなければなりませんでした。

DRBD 8.4より前の drbdadm の引き渡しオプション. 

drbdadm -- --discard-my-data connect <resource>

代わりに、drbdadm はこの引き渡しオプションを通常オプションと同じように使えるようになりました。

DRBD 8.4の drbdadm 引き渡しオプション. 

drbdadm connect --discard-my-data <resource>

[注記]注記

古い構文もまだサポートされますが、使わないことを強くお勧めします。なお、この新しい簡単な構文を使用する場合には、( --discard-my-data)オプションを、(connect)サブコマンドの後で、かつリソース識別子の前に指定する必要があります。

4.2. --overwrite-data-of-peer--force オプションに置き換えられました

--overwrite-data-of-peer オプションはDRBD 8.4ではなくなり、より簡潔な --force に置き換えられました。このため、リソースの同期を開始するために、次のコマンドは使えません。

DRBD 8.4より前での drbdadm 同期開始コマンド. 

drbdadm -- --overwrite-data-of-peer primary <resource>

代わりに次のようなコマンドをご使用ください。

DRBD 8.4の drbdadm 同期開始コマンド. 

drbdadm primary --force <resource>

5. デフォルト値の変更点

DRBD 8.4では、Linuxカーネルや利用できるサーバハードウェアの向上に合わせて、drbd.conf のいくつかのデフォルト値が更新されました。

5.1. 同時にアクティブなアクティビティログのエクステント数(al-extents)

al-extents の以前のデフォルト値の127は1237に変更になりました。これによりメタデータのディスク書き込み作業量の現象によるパフォーマンスの向上が可能になりました。この変更によりプライマリノードのクラッシュ時の再同期時間が長くなります。これはギガビットイーサネットと高帯域幅のレプリケーションリンクの偏在が関係しています。

5.2. ランレングス符号化(use-rle)

画像転送のためのランレングス符号化(RLE)がDRBD 8.4ではデフォルトで有効になっています。use-rle オプションのデフォルト値は yes です。RLEは、2つの切断されたノードの接続時に常に起きるクイック同期ビットマップ中のデータ転送量を大きく減らします。

5.3. I/Oエラーの処理ストラテジー(on-io-error)

DRBD 8.4ではデフォルトでI/Oスタックの上位レイヤにI/Oエラーを伝えない設定です。以前のバージョンではI/Oエラーを伝える設定でしたが、置き換えられました。つまり問題のあるドライブのDRBDボリュームが自動的に Diskless のディスク状態に遷移し、対向ノードからのデータを提供します。

5.4. 可変レート同期

可変レート同期はDRBD 8.4ではデフォルトで有効です。デフォルト設定は次の構成のようになっています。

DRBD 8.4での可変レート同期のデフォルトオプション. 

resource test {
  disk {
    c-plan-ahead 20;
    c-fill-target 50k;
    c-min-rate 250k;
  }
  ...

5.5. 構成可能なDRBDデバイス数(minor-count)

DRBD 8.4で構成可能なDRBDデバイス数は1,048,576 (2$^{20}$)です(前バージョンでは255)。これは生産システムでの想定を越える、理論的な限界以上のものです。