Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

DRBD(ディーアールビーディー)とは | 意味や読み方など丁寧でわかりやすい用語解説

DRBD(ディーアールビーディー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ディーアールビーディー (ディーアールビーディー)

英語表記

DRBD (ディーアールビーディー)

用語解説

DRBDは、"Distributed Replicated Block Device"の略であり、Linuxシステム上で動作する、オープンソースの分散レプリケーション型ブロックデバイスである。主にサーバーの高可用性(HA)を実現するために利用され、2台以上のサーバー間でブロックデバイスのデータをネットワーク経由でリアルタイムにミラーリングする役割を担う。物理的な共有ストレージを必要とせずに、ソフトウェア的にストレージの冗長化とデータ保護を提供する点が特徴だ。

この技術は、仮想的なブロックデバイスをOSに提供し、その背後でデータのレプリケーションを行う。ユーザーやアプリケーションから見ると、通常のストレージデバイスと何ら変わらないように動作するが、実際には背後のサーバー間でデータが同期されている。これにより、一方のサーバーに障害が発生しても、もう一方のサーバーがサービスを引き継ぎ、システムのダウンタイムを最小限に抑えることが可能になる。ファイルサーバー、データベースサーバー、仮想化基盤など、停止が許されない重要なシステムにおいて、コストを抑えつつ高い可用性を実現する強力なツールとして広く採用されている。DRBDは、物理的なRAID-1がディスク単位でデータをミラーリングするのと同様に、ネットワークを介してサーバー単位でブロックデバイスをミラーリングするソフトウェアRAID-1と捉えることができる。

DRBDの動作原理は、主に2台のサーバー間でブロックレベルのデータ同期を行うことにある。DRBDが管理するブロックデバイスは、通常、プライマリノードとセカンダリノードという役割を持つ。プライマリノードはデータへの書き込みと読み出しの両方を行い、セカンダリノードはプライマリノードから送られてくるデータのレプリケーションのみを行う。つまり、ある時点では一方のノードのみがアクティブな役割を担い、もう一方はパッシブなスタンバイ状態となる。

データレプリケーションのモードには、主に3種類存在する。 一つ目は「プロトコルA(非同期レプリケーション)」だ。これは、プライマリノードがデータブロックをセカンダリノードに送信した後、セカンダリノードからの書き込み完了応答を待たずに、次のI/O処理に進むモードである。書き込みパフォーマンスは高いが、障害発生時にわずかなデータ損失が発生する可能性がある。

二つ目は「プロトコルB(半同期レプリケーション)」だ。プライマリノードはデータブロックをセカンダリノードに送信し、セカンダリノードがそのデータを受け取ったことを確認した時点で、次のI/O処理に進む。実際にディスクへの書き込みが完了したかは確認しないため、プロトコルAより信頼性が高いが、プロトコルCよりはパフォーマンスが良い。

三つ目は「プロトコルC(同期レプリケーション)」だ。これは最も一般的な利用モードであり、プライマリノードがデータブロックをセカンダリノードに送信し、セカンダリノードがそのデータを正常にディスクに書き込んだことを確認し、プライマリノードへ応答を返した後に初めて、次のI/O処理に進む。このモードでは、両方のノードが同時に利用可能な状態であれば、データ損失が絶対に発生しないという高い信頼性を提供する。ただし、ネットワークの遅延がI/Oパフォーマンスに直接影響するため、ネットワークの品質が重要となる。高可用性クラスタでは、このプロトコルCが推奨される。

DRBDは、単独でフェイルオーバーを管理する機能は持たず、通常はHeartbeatやPacemakerといったクラスタ管理ソフトウェアと連携して動作する。これらのクラスタ管理ソフトウェアがサーバーの状態を監視し、プライマリノードに障害が発生した場合、DRBDのセカンダリノードをプライマリに昇格させ、サービスをセカンダリノードに自動的に切り替える(フェイルオーバー)処理を実行する。これにより、アプリケーションが利用するストレージパスが透過的に切り替わり、サービスの中断時間を最小限に抑えることができる。

また、DRBDは「スプリットブレイン」という問題にも対処する必要がある。スプリットブレインとは、ネットワーク障害などにより、プライマリノードとセカンダリノードが互いの存在を認識できなくなり、それぞれが独立してプライマリノードとして動作しようとする状態を指す。この状態が続くと、それぞれのノードでデータが更新されてしまい、データの一貫性が失われる。DRBDはスプリットブレインを検出し、自動的に片方のノードを停止させるなどの設定が可能だが、通常はクラスタ管理ソフトウェアと連携して、スプリットブレインが発生しないよう、あるいは発生しても適切に解決されるよう管理される。もしスプリットブレインが発生してしまった場合でも、DRBDには手動でどちらかのノードのデータを「正」として、もう一方のノードに同期し直す機能が提供されているため、データ復旧が可能だ。

DRBDのさらに高度な機能として、DRBD 9以降では3台以上のノードへのレプリケーション、つまり複数レプリカのサポートが可能になった。これにより、冗長性をさらに高めたり、地理的に分散した環境でのディザスタリカバリ戦略を実装したりすることも可能になっている。また、オンラインでレプリケーションを開始できるため、既存のサービスを停止せずにDRBDを導入することも可能だ。

DRBDの主なメリットは、安価な汎用サーバーとネットワークを利用して、物理的な共有ストレージに匹敵する高いデータ冗長性とシステム可用性を実現できる点である。オープンソースであるためライセンスコストもかからず、柔軟な構成が可能だ。デメリットとしては、2ノード構成の場合、ネットワークが単一障害点となる可能性があることや、レプリケーションのオーバーヘッドが多少なりとも発生すること、そして同期モード(プロトコルC)ではネットワークの遅延がI/O性能に直結することが挙げられる。しかし、これらは適切なネットワーク設計とクラスタ構成によって最小限に抑えることが可能である。

DRBDは、高い可用性を求める現代のITインフラにおいて、堅牢でコスト効率の良いストレージ冗長化ソリューションとして、その価値を発揮している。システムエンジニアを目指す初心者にとっては、高可用性システムの基礎を理解する上で重要な技術の一つであると言えるだろう。

関連コンテンツ

関連IT用語

関連ITニュース