本文へスキップ

DRBD 9、7本の準備パッチでLinuxメインライン入りに前進

LINBITは9月23日、カーネルのDRBD 8.4コードをDRBD 9の形に近づける7本のパッチを投稿した。DRBD 9は1ボリュームあたり最大31台のピアへのレプリケーション(複製)に対応する。

著者 Tech AI Wire Team

3 分で読めます

データセンターに長く続く白いサーバーラックの通路。ラックの扉には多数の穴が開き、上には黄色いケーブルトレイと細長い照明が並ぶ。
写真: PiDatacenters

数字で見る

patches in the preparation series
7
peers per volume in DRBD 9
31
new maximum resync rate
8 GiB/s

Christoph Böhmwalder氏は2026年9月23日、7本のパッチからなるシリーズをLinuxカーネルのメーリングリストに投稿した。題名は「drbd: preparation for DRBD 9」だ。このシリーズはカーネル内の古いDRBDコードを作り直し、はるかに新しいDRBD 9が後からメインラインに入れるようにする。Linuxで複製ストレージを運用する人にとって、これは重要だ。カーネルに同梱されているバージョンは、いまだに古い8.4系だからである。

DRBDはDistributed Replicated Block Deviceの略だ。ディスクをブロック単位で、ネットワーク越しに1台以上の別のマシンへコピーする。あるサーバーが停止しても、別のサーバーが同一のデータのコピーを保持している。開発元の企業であるLINBITによれば、このプロジェクトは20年以上にわたって保守されてきた。

7本のパッチが変えるもの

カバーレターは、その手法を1行で説明している。「各パッチは、カーネルツリー内のDRBD 8.4コードの一部を、ツリー外のDRBD 9コードでの形に移すものだ」とBöhmwalder氏は書いた。

「ツリー内(in-tree)」とは、公式のカーネルソースに含まれるコードを指す。「ツリー外(out-of-tree)」とは、別途保守され、追加モジュールとしてビルドされるコードを指す。DRBD 9はこれまで一貫してツリー外だった。

カバーレターは次の変更を挙げている。

  • 高速ネットワーク向けに上限を引き上げる。ソケットバッファは最大128 MiB、再同期の最大速度は8 GiB/sになる。
  • ファイルdrbd_worker.cをdrbd_sender.cに改名し、DRBD 9の構成に合わせる。
  • データ構造drbd_intervalのビットフィールドを置き換える。
  • ネットワークパケット名の表を新しい場所に移す。
  • ログメッセージにオブジェクト単位のレート制限を加え、1台の故障したデバイスがカーネルログをあふれさせないようにする。

このシリーズはlinux-kernelとlinux-blockの両方のリストに送られた。カバーレターは、現在のユーザーにとって何も変わらないことを強調している。「デフォルト値は変わらず、既存の設定はすべて有効なままだ」。

DRBD 9に手間をかける価値がある理由

LINBITは2026年4月27日、Michael Troutman氏によるブログ記事でその目標を説明した。カーネルに含まれているのはDRBD 8.4.11で、記事はこれを停滞していると表現している。活発な開発はカーネルの外で、DRBD 9.3に対して行われている。

両者の差は大きい。

機能DRBD 8.4(カーネル内)DRBD 9(ツリー外)
1ボリュームあたりのノード数2台(フェイルオーバー用)最大31台のピア
スプリットブレイン対策フェンシングに依存3台以上のノードで組み込みのクォーラム
故障ノードの処理STONITHやフェンシングを手動で設定自動

スプリットブレインとは、2台のマシンがどちらも自分が現行のコピーを持っていると信じ、異なるデータを書き込み始める障害だ。クォーラムは、ノードがクラスターの過半数を確認できる間だけ書き込みを許すことで、これを防ぐ。STONITHは「shoot the other node in the head(相手ノードの頭を撃ち抜け)」の略で、より古い対処法だ。疑わしいノードが被害を出す前に電源を切る。DRBD 9は、クラスターに再参加するノードを同期する際の安全策も追加している。

LINBITの記事は、DRBD 9.3パッチの目標としてLinux 7.2を挙げていた。今週のシリーズは準備と位置付けられている。したがって、DRBD 9の完全なコードは後日の別の投稿になる。

開発者にとっての意味

現在DRBDを運用しているなら、どちらを使っているか確認しよう。カーネルの8.4ドライバーではなく、LINBITのツリー外のDRBD 9モジュールをすでに読み込んでいるかもしれない。cat /proc/drbdで読み込まれているバージョンが表示される。このシリーズは現時点でどちらのグループにも何も変えず、カバーレターは既存の設定が有効なままだと約束している。

カーネル内の8.4ドライバーに頼っているなら、上流での作業は、今のうちにDRBD 9のテストを計画する理由になる。取り込まれれば、カーネル内のドライバーはマルチピアのボリュームとクォーラムを得る。これらはクラスターの設定方法とフェンシングの方法を変える。ディストリビューションのカーネル更新後に違いに気づくより、先にステージング用クラスターで試すほうがよい。

高速ネットワーク上にストレージを構築しているなら、新しい上限に注目しよう。8 GiB/sの再同期上限と128 MiBのソケットバッファは、高速なデータセンター回線に余裕を残す。LINBITのサイトによれば、DRBDはTCP/IPまたはRDMAで複製できる。RDMAはInfiniBandやRoCEのネットワークで使われる低遅延の転送方式だ。デフォルト値は変わらないため、引き上げは引き続き自分で行う必要がある。

次のラウンドに向けてlinux-blockリストを注視しよう。この7本のパッチへのレビューコメントは、長く続いてきた大規模なツリー外ドライバーをメンテナーがどれだけ早く受け入れるかを示すだろう。その答えが、標準のカーネルが別途パッケージ化されたDRBDモジュールをいつ置き換えられるかを決める。

出典

  1. [PATCH 0/7] drbd: preparation for DRBD 9 - linux-kernel mailing list
  2. Working to Put DRBD 9 in the Mainline Linux Kernel - LINBIT
  3. DRBD - LINBIT

関連記事

Kubernetes 1.37のノードで、kubeletとkube-proxyのプロセスが非rootユーザーの所有として表示されているターミナル画面。
開発ツール

Kubernetes 1.37、rootlessモードがベータに昇格

Kubernetes 1.37でKubeletInUserNamespaceがベータになりました。kubelet、コンテナランタイム、CNIプラグイン、kube-proxyのすべてを非rootユーザーで動かせます。

開いたノートPCの内部で、冷却ファンとヒートパイプの横のスロットに装着された緑色のSO-DIMMメモリモジュール。
プログラミング

Linux LZ4がv1.10.0に再同期、解凍が最大21%高速に

9本のパッチからなるシリーズが、カーネルの2017-2018年のLZ4コードを上流のLZ4 v1.10.0に更新し、境界チェックを加え、16Kブロックの解凍(デコンプレッション)を21%高速化する。