はじめに

LINBIT社より、DRBDの新しいフィーチャーリリースである「DRBD 9.3.0」がリリースされています。
DRBD(Distributed Replicated Block Device)は、Linux環境での高可用性クラスタ構築において重要な役割を果たしますが、メジャーバージョンのアップグレードには慎重な計画が必要です。
本記事では、DRBD 9.2系をご利用中の方向けに、9.3系へアップグレードする際のメリット(新機能)と、作業時における重要な注意点について解説します。
1.DRBD 9.3系の主な変更点とメリット
9.2系から9.3系へのアップデートには、単なるバグ修正に留まらず、パフォーマンスや運用効率を向上させるいくつかの新機能が含まれています。
① Resync without replication(複製なしの再同期)
これが9.3系における最も大きな変更点と言えます。
これまで、再同期(Resync)中にアプリケーションから書き込みが行われると、そのデータは即座にSecondary側へも複製されていました。しかし9.3系からは、この書き込みを「再同期プロセスの一部」として後追いで同期する挙動がデフォルトとなりました。
これにより、特に書き込み負荷が高い環境において、再同期完了までの時間が大幅に短縮されることが期待できます。
② Variable bitmap block sizes(可変ビットマップブロックサイズ)
同期状態を管理するビットマップの粒度を調整できるようになりました。数十TBクラスの大容量ボリュームを扱う際、DRBDが必要とするメモリ容量を削減できるメリットがあります。
③ 管理ツールの改善 (drbd-utils 9.33.0)
drbdsetup show –json コマンドの出力精度向上や、drbdadm create-md 実行時の挙動改善など、運用管理におけるユーザビリティも向上しています。
2. アップグレード手順のポイントと注意点
DRBD 9.2系から9.3系へのアップグレードは、基本的に片系ずつのローリングアップデートが可能ですが、カーネルモジュールのメジャーバージョンが上がるため、手順には注意が必要です。
【重要】サービスの停止とモジュールの再ロードが必須です
パッケージマネージャーによる更新(rpm -Uvh や dnf update)だけでは、メモリ上で動作している古いカーネルモジュールは入れ替わりません。以下の手順で確実に新しいモジュールを適用する必要があります。
1.サービスの停止:
Pacemaker等で対象ノードをスタンバイにし、DRBDを使用するサービスを停止します。
2.DRBDの停止:
drbdadm down all コマンドですべてのリソースを停止します。
3.モジュールのアンロード:
ここが重要なステップです。古いモジュールをメモリから削除します。
rmmod drbd_transport_tcp
rmmod drbd※もしここで「Module is in use」等のエラーが出る場合は、無理をせずOS再起動による適用を計画してください。
4.パッケージ更新:
新しいrpmパッケージをインストールします。
5.モジュールのロード:
modprobe drbd (またはOS再起動)を実施します。
6.サービスの復旧:
リソースの状態を確認し、サービスを再開します。
3. 互換性について
「片系が9.2.12、もう片系が9.3.0」という混在環境でも、DRBDのレプリケーションは正常に動作します(プロトコル互換性があります)。
そのため、サービスを完全に停止することなく、片ノードずつ順番に作業を進めるローリングアップデートが可能です。
おわりに
DRBD 9.3系は、特に再同期性能の向上(Resync without replication)において魅力的な選択肢であり、高負荷環境での運用改善が期待できます。ただし、導入にはカーネルモジュールの入れ替えを伴うため、上記の手順をしっかりと確認した上で、計画的に作業を実施いただく必要があります。
一方で、現在主流であるDRBD 9.2系についても、当面の間はメンテナンスが継続され、バグ修正などを含む新しいリビジョンが引き続き公開される予定です。
もし、現在9.2系でシステムが十分に安定稼働しており、直近で9.3系の新機能を必要とされていない状況であれば、無理に急いでアップデートせず、半年から1年程度様子を見る(新バージョンが市場で枯れるのを待つ)というのも、安定運用を第一に考える上での一つの現実的な選択肢となります。
お客様のシステムの状況や運用ポリシーに合わせて、最適なバージョン計画をご検討いただければと思います。