特集: DRBD9紹介 第1回「DRBD 8.4と9の互換性」
DRBD9は多ノードレプリケーションなど数多くの新機能を持っていますが、既存のDRBDユーザにとっての最大の関心事は、なんといっても「データと設定の互換性」でしょう。したがって、連載の第1回では、DRBD 8.4とDRBD 9.0の互換性の概要を紹介します。
なお以下の説明におけるDRBD8のバージョンは、すべてDRBD 8.4になります。DRBD 8.3以前のバージョンとDRBD9はダイレクトにバージョンアップすることはできず、いったんDRBD 8.4にアップグレードする必要があります。
メタデータは互換である
現在のメインバージョンであるDRBD 8.4は、もともとDRBD8からDRBD9への橋渡しを目標のひとつにしていました。このため、2ノード構成時のメタデータは互換です。DRBD 8.4からDRBD 9.0へのバージョンアップにあたって、メタデータの作り直しやデータの一時退避とリストアなどの面倒な作業は不要です。(2015年6月24日訂正) DRBD 9.0.0と同時にリリースされた管理ツール側パッケージのdrbd-utils 8.9.3では、DRBD 8.4からDRBD 9.0への移行にあたってメタデータの変換が必要になります。”drbdadm create-md <リソース>”を実行すると、変換するかどうかを尋ねるプロンプトが表示されます。
ただしDRBD9の多ノードレプリケーションに必要なメタデータ領域のサイズは、ノード数に応じて大きくなります。このため、DRBD 8.4の2ノードレプリケーションをDRBD 9.0の多ノードレプリケーションに拡張する場合には、少なくともメタデータ領域の作り替えが必要になります。
設定ファイルの変更は不要
DRBD 8.3以前とDRBD 8.4では、設定ファイル(drbd.conf)の構文が一部変更になっています。これは、並行して開発していたDRBD 9.0との整合性も考慮してのことでした。
したがって、DRBD 8.4用の構文で書かれたdrbd.confは、DRBD 9.0へのバージョンアップにあたって書き換える必要はありません。
なお、DRBD 8.4では、DRBD 8.3以前の構文のdrbd.confも使えましたが、DRBD 9.0では使えない見込みですので、注意が必要です。
デバイスのスタッキングもサポートされる
DRBD9の最大のセールスポイントは多ノードレプリケーションです。DRBD 8.4までのバージョンで3ノード以上のレプリケーションを実現するには、複数のDRBDインスタンスをスタック(積み重ね)する必要がありました。
DRBD 8.4からDRBD 9.0にバージョンアップするにあたって、デバイススタッキングを多ノードレプリケーションに変更することは、もちろん可能です。しかしデータの退避やメタデータの作り直しが必要になり、サービスの可用性が損なわれます。
このため、DRBD 9.0では、DRBD 8.4からの移行を考慮して、デバイススタッキングは引き続きサポートされます。ただしobsolete扱いになるため、新規にスタック構成を作ることは推奨されません。
その他の機能比較
開発者へのインタビューやこれまでの海外でのプレゼンテーション資料にもとづいて、DRBD 8.4とDRBD 9.0の機能や特徴の比較表を作成しました。
項目 | DRBD 8.4 | DRBD 9.0 |
---|---|---|
メタデータ互換性 | (8.4→9.0のアップグレード可能) | |
レプリケーション最大ノード数(リソースあたり) | 2 | 32 |
リソースの最大サイズ | 1PB | |
レプリケーションノードの動的再配置 | – | ○ |
DRBDクライアント | – | ○ |
drbdmanage | – | ○ |
シングルプライマリモード | ○ | |
デュアルプライマリモード | ○ | ○ (2ノード構成時のみ) |
プロトコルの混在 | ○ (スタッキング必須) | ○ |
スタッキング | ○ | ○ (非推奨) |
自動プロモーション | × | ○ |
同期速度調整 | 速度固定、速度可変 | |
チェックサムベースの同期 | ○ | |
混雑時のレプリケーション一時停止機能 | 設定可能 | |
オンライン照合 | ○ | |
ネットワーク転送データの整合性チェック | ○ | |
スプリットブレインの自動検出と通知機能 | ○ | |
高速デバイス向け対応 | disk flushサポート、SCSI TRIMサポート | |
ディスクエラー時の対応 | 設定によりディスクを自動的に切り離し可能 (Pacemakerとの組み合わせで自動フェールオーバ可能) | |
(同期が崩れたときに)古いデータへのアクセス禁止 | 設定可能 | |
効率的な遠距離レプリケーション | DRBD Proxyとの併用で実現 | |
HDDの物理的な輸送による初期同期 | ○ | |
DRBD動作ノードの動的切り替え | ○ |
こんにちは、2ノード構成で drbd-8.4.6 / drbd-utils-8.9.2 から drbd-9.0.0 / drbd-utils 8.9.3 へのバージョンアップを試してみたところ、次のようなエラーとなりました。
# drbdadm up all
No valid meta data found
Command ‘drbdmeta 0 v09 /dev/sdb internal apply-al’ terminated with exit code 255
# drbdadm create-md all
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v08 flexible-size internal meta data block
already in place on /dev/sdb at byte offset 10537976983552
Valid v08 meta-data found, convert to v09?
[need to type ‘yes’ to confirm]
下記 URL に converting 8.4 to 9.0 meta-data という記載があるのですが、正式リリースにともなって仕様の変更等ございましたでしょうか。
http://git.drbd.org/gitweb.cgi?p=drbd-utils.git;a=tag;h=refs/tags/v8.9.3