(DRBD)を利用するための完全なリファレンスガイドです。同時にハンドブックとしても活用できるように編集してあります。そのコミュニティ向けに作成しています。コミュニティにとって有益であることを願って無償で公開しています。本ユーザーズガイドは、随時更新しています。DRBDの新しいリリースと同時に、その新機能の説明を追加する予定です。このガイドはDRBDの最新バージョンのユーザーを対象にしています。対応するバージョンをご利用ください。本書は次の構成になっています。DRBDの紹介ではDRBDの基本的な機能を扱います。I/OスタックにおけるDRBDの位置付け、DRBDの基本コンセプトなど、基礎となる事項を取り扱います。DRBDのもっとも重要な機能について説明します。DRBDのビルド方法、コンパイル済みのパッケージからのインストール方法、またクラスタシステムでのDRBDの運用方法の概要について説明します。リソース設定ファイルと一般的なトラブルシューティングについて説明します。DRBDとアプリケーションの組み合わせではストレージのレプリケーションの追加やアプリケーションの高可用性のためDRBDを活用する方法を説明します。ここではDRBDとPacemakerクラスタ管理システムとの組み合わせだけでなく、LVMとの高度な組み合わせ、GFSとの組み合わせ、Xenによる仮想環境の可用性向上についても触れます。DRBDパフォーマンスの最適化ではパフォーマンスを向上させるDRBDの設定について説明します。DRBDの内部構造を説明します。読者に有益と思われる他の情報リソースについても紹介します。これまでのDRBDバージョンと比較した、DRBD9.0での変更点の概要です。(DRBD)は、ストレージのレプリケーション(複製)のためのソフトウェアで、シェアードナッシングを実現します。DRBDはサーバ間でブロックデバイス(ハードディスク、パーティション、論理ボリュームなど)の内容をミラーします。DRBDによるミラーは次の特徴を持ちます。そのデータをリアルタイムでレプリケートします。アプリケーションは、データが複数のホスト上に格納されていることを意識する必要はありません。すべてのホストのディスクへの書き込みが完了した後で、アプリケーションが完了通知を受け取ります。ローカルディスクへの書き込みが完了したときに、すぐにアプリケーションが完了通知を受け取ります。この際、他のホストへの書き込みは後で行われます。カーネルモジュールDRBDのコア機能はLinuxのカーネルモジュールとして実装されています。OSのI/Oスタックの下位の階層でDRBDは仮想的なブロックデバイスを作ります。このために、DRBDは非常に柔軟で応用範囲が広く、さまざまなアプリケーションの可用性を高めるために利用できます。その定義とLinuxカーネルアーキテクチャとの関連にもとづき、DRBDは上位レイヤに関して一切関知しません。このため、DRBDは上位レイヤに対しては何ら機能を付与できません。DRBDはファイルシステムの障害を検出できません。ext3やXFSなどのファイルシステムに対してアクティブ-アクティブクラスタ機能を追加することもできません。ユーザー空間の管理ツールDRBDにはカーネルモジュールと通信を行う管理ツールがいくつか用意されています。トップレベルのものからボトムレベルの順に以下に説明します。drbdmanageマルチノードクラスタでDRBDリソース管理を行う場合に推奨するツールです。本ツールは別プロジェクトとして位置づけられています。外部コマンドを呼び出すことで、使用頻度の高い管理作業を簡単に素早く行うことができます。Manageの章をご参照ください。drbdadmDRBDプログラム群における高レベル管理ツールです。フロントエンドとして動作します。コマンドを表示します。drbdsetupカーネルにロードされたDRBDモジュールを設定します。全パラメータはコマンドラインで指定する必要があります。分離していることで最大限の柔軟性を確保しています。使う事はないでしょう。drbdmetaDRBDメタデータの作成、ダンプ、リストアなどを行うコマンドです。使うことはないでしょう。リソースは以下の要素で構成されます。個々のリソースを区別するために、ホワイトスペース以外のUS-ASCII文字で表される任意の名前を与えることができます。ボリュームのうちの1つを構成するレプリケーショングループですDRBDは、リソース内のすべてのボリューム間で書き込みの忠実性を保証します。番号付けされ、1つのリソースにおいて、最大で65,535ボリュームまで可能です。ボリュームにはレプリケートされたデータセットを含み、DRBD内部で使用するメタデータのセットも含みます。ように記述して指定します。DRBDデバイスDRBDが管理する仮想的なブロックデバイスです。DRBDが管理する仮想的なブロックデバイスで、147のメジャー番号を持ち、minor番号は0から順次割り振られます。各DRBDデバイスは、リソース内の1つのボリュームに該当します。あるリソース名とボリューム名を含むシンボリックリンクも作成します。初期のバージョンのDRBDは、NBDのデバイスメジャー番号43を勝手に使っていました。現在は147という番号が、DRBDデバイスメジャー番号として、http://www.lanana.org/docs/device-list/[LANANA-registered]に正式に登録されています。レプリケートされるデータセットを共有する、2つのホスト間の通信リンクです。DRBD9では、各リソースが複数のホストで設定できますが、この場合、現在のバージョンではホスト間にフルメッシュ型の接続が必要です。リソース用に各ホストは他のホストへの接続が必要です。コネクションはリソース名とコネクション名(デフォルトでは対向のホスト名)で指定されます。どちらかのロール(役割)を持っています。「プライマリ」と「セカンダリ」という用語は適当に選んだものではないことを理解してください。DRBD開発者は意図的に「アクティブ」と「パッシブ」という用語を避けました。可用性に関する概念です。可用性に関する概念です。なりますが、これが例外のないルールだということではありません。プライマリロールのDRBDデバイスでは、データの読み込みと書き込みが制約なく行えます。ブロックデバイスに対する下位デバイスI/OやダイレクトI/O等も可能です。他からのアクセスは受け付けません。自ノードのアプリケーションからのアクセスについても、読み込みと書き込みの両方とも一切受け付けません。キャッシュの透過性を保証するためです。セカンダリリソースが自ノードからのアクセスを受け付けると、この保証ができなくなります。リソースのロールは、もちろん手動で切り替えできる他に、クラスタ管理アプリケーションの何らかの自動化アルゴリズムによって、または自動プロモーションでも切り替えられます。