DRBD9 ユーザーズガイド


目次

はじめにお読みください
I. DRBDの紹介
1. DRBDの基礎
1.1. カーネルモジュール
1.2. ユーザー空間の管理ツール
1.3. リソース
1.4. リソースのロール(役割)
2. DRBDの機能
2.1. シングルプライマリモード
2.2. デュアルプライマリモード
2.3. レプリケーションのモード
2.4. 2重以上の冗長性
2.5. リソースの自動プロモーション
2.6. 複数の転送プロトコル
2.6.1. TCPトランスポート
2.6.2. RDMAトランスポート
2.6.3. 転送プロトコルの決定
2.7. 効率的なデータ同期
2.7.1. 可変レート同期
2.7.2. 固定レート同期
2.7.3. チェックサムベース同期
2.8. レプリケーションの中断
2.9. オンライン照合
2.10. レプリケーション用トラフィックの整合性チェック
2.11. スプリットブレインの通知と自動修復
2.12. ディスクフラッシュのサポート
2.13. Trim/Discardのサポート
2.14. ディスクエラー処理ストラテジー
2.15. 無効データの処理ストラテジー
2.16. 3ノードレプリケーション
2.17. DRBD Proxyによる遠距離レプリケーション
2.18. トラック輸送によるレプリケーション
2.19. 動的対向ノード
2.20. データ再配置(ストレージの水平スケール)
2.21. DRBDクライアント
2.22. クォーラム
2.22.1. タイブレーカー
2.23. DRBDとVCSの統合
II. DRBDのコンパイル、インストールおよび設定
3. コンパイル済みDRBDバイナリパッケージのインストール
3.1. LINBIT社が提供するパッケージ
3.2. LINBIT社が提供する Docker イメージ
3.3. ディストリビューションベンダが提供するパッケージ
3.3.1. SUSE Linux Enterprise Server
3.3.2. CentOS
3.3.3. Ubuntu Linux
3.4. ソースからパッケージをコンパイルする
III. DRBDの使い方
4. 一般的な管理作業
4.1. DRBDの設定
4.1.1. 下位レベルストレージの準備
4.1.2. ネットワーク構成の準備
4.1.3. リソースの設定
4.1.4. ネットワークコネクションの定義
4.1.5. トランスポートプロトコルの設定
4.1.6. リソースを初めて有効にする
4.1.7. デバイスの初期同期
4.1.8. トラックベースのレプリケーションの使用
4.1.9. 4ノードでの構成例
4.2. DRBDのステータスを確認する
4.2.1. drbdmon でステータスを取得する
4.2.2. drbdtop でDRBDのステータス取得し対話する
4.2.3. /proc/drbd でのステータス情報
4.2.4. drbdadm でのステータス情報
4.2.5. drbdsetup events2 を使用した一回のみ、またはリアルタイムでの監視
4.2.6. コネクションステータス
4.2.7. 複製ステータス
4.2.8. リソースのロール
4.2.9. ディスク状態
4.2.10. 接続情報データ
4.2.11. パフォーマンス指標
4.3. リソースの有効化と無効化
4.3.1. リソースの有効化
4.3.2. リソースを無効にする
4.4. リソースの再設定
4.5. リソースの昇格と降格
4.6. 基本的な手動フェイルオーバ
4.7. DRBDのアップグレード
4.7.1. 概要
4.7.2. リポジトリのアップデート
4.7.3. DRBDの状態を確認する
4.7.4. クラスタを停止する
4.7.5. パッケージのアップグレード
4.7.6. 新しいカーネルモジュールのロード
4.7.7. 設定ファイルの移行
4.7.8. メタデータの変更
4.7.9. DRBDを再び起動する
4.7.10. DRBD9からDRBD9
4.8. デュアルプライマリモードを有効にする
4.8.1. 永続的なデュアルプライマリモード
4.8.2. 一時的なデュアルプライマリモード
4.9. オンラインデバイス照合の使用
4.9.1. オンライン照合を有効にする
4.9.2. オンライン照合の実行
4.9.3. 自動オンライン照合
4.10. 同期速度の設定
4.10.1. 同期速度の計算
4.10.2. 可変同期速度設定
4.10.3. 永続的な固定同期速度の設定
4.10.4. 同期に関するヒント
4.11. チェックサムベース同期の設定
4.12. 輻輳ポリシーと中断したレプリケーションの構成
4.13. I/Oエラー処理方針の設定
4.14. レプリケーショントラフィックの整合性チェックを設定
4.15. リソースのサイズ変更
4.15.1. オンライン拡張
4.15.2. オフライン拡張する
4.15.3. オンライン縮小
4.15.4. オフライン縮小
4.16. 下位デバイスのフラッシュを無効にする
4.17. スプリットブレイン時の動作の設定
4.17.1. スプリットブレインの通知
4.17.2. スプリットブレインからの自動復旧ポリシー
4.18. スタック3ノード構成の作成
4.18.1. デバイススタックの留意事項
4.18.2. スタックリソースの設定
4.18.3. スタックリソースを有効にする
4.19. 永続的なディスクレスノード
4.20. データ再配置
4.20.1. ビットマップスロットの用意
4.20.2. 新しいノードの用意と有効化
4.20.3. 初期同期の開始
4.20.4. 接続確認
4.20.5. 初期同期後
4.20.6. クリーニング
4.20.7. まとめと他のステップ
4.21. クォーラム設定
4.21.1. 保証された最低限の冗長化
4.21.2. クォーラムを失った時の動作
4.21.3. タイブレーカーとしてのディスクレスノードを使用
4.21.4. ラストマン・スタンディング
5. DRBD Proxyの使用
5.1. DRBD Proxyの使用においての検討事項
5.2. インストール
5.3. ライセンスファイル
5.4. LINSTORを使用した設定
5.5. リソースファイルを使用した設定
5.6. DRBD Proxyの制御
5.7. DRBD Proxyプラグインについて
5.7.1. WAN側の帯域幅制限を使用する
5.8. トラブルシューティング
6. トラブルシューティングとエラーからの回復
6.1. ハードドライブの障害の場合
6.1.1. 手動でDRBDをハードドライブから切り離す
6.1.2. I/Oエラー時の自動切り離し
6.1.3. 障害が発生したディスクの交換(内部メタデータを使用している場合)
6.1.4. 障害の発生したディスクの交換(外部メタデータを使用している場合)
6.2. ノード障害に対処する
6.2.1. 一時的なセカンダリノードの障害に対処する
6.2.2. 一時的なプライマリノードの障害に対処する
6.2.3. 永続的なノード障害に対処する
6.3. スプリットブレインからの手動回復
IV. DRBDとアプリケーションの組み合わせ
7. DRBDとPacemakerクラスタ
7.1. Pacemakerの基礎
7.2. DRBDをPacemakerクラスタで管理する
7.3. DRBDを下位デバイスにするマスターとスレーブのあるサービスのクラスタ設定
7.4. Pacemakerクラスタでリソースレベルのフェンシングを使用する
7.4.1. dopd でのリソースレベルフェンシング
7.4.2. CIB (Cluster Information Base)を使ったリソースレベルフェンシング
7.5. PacemakerクラスタでスタックDRBDリソースを使用する
7.5.1. オフサイトディザスタリカバリ機能をPacemakerクラスタに追加する
7.5.2. スタックリソースを使って、Pacemakerクラスタの4ノード冗長化を実現する
7.6. 2セットのSANベースPacemakerクラスタ間をDRBDでレプリケート
7.6.1. DRBDリソース構成
7.6.2. Pacemakerリソース構成
7.6.3. サイトのフェイルオーバ
8. DRBDとRed Hat Cluster Suite
8.1. Red Hat Clusterの背景情報
8.1.1. フェンシング
8.1.2. リソースグループマネージャ
8.2. Red Hat Clusterの設定
8.2.1. cluster.conf ファイル
8.3. Red Hat ClusterフェイルオーバクラスタでDRBDを使用する
8.3.1. クラスタ構成の設定
9. DRBDでのLVMの使用
9.1. LVMの基礎
9.2. DRBDの下位デバイスとして論理ボリュームを使用する
9.3. DRBD同期中の自動LVMスナップショットの使用
9.4. DRBDリソースを物理ボリュームとして構成する
9.5. 新しいDRBDボリュームを既存のボリュームグループへ追加する
9.6. DRBDを使用する入れ子のLVM構成
9.6.1. VGを他ノードに移動する
9.7. Pacemakerによる高可用性LVM
10. DRBDでGFSを使用する
10.1. GFS基礎
10.2. GFS用のDRBDリソースの作成
10.3. DRBDリソースを認識するようにLVMを設定する
10.4. GFS対応のためのクラスタ設定
10.5. GFSファイルシステムの作成
10.6. GFSファイルシステムを使用する
11. DRBDとOCFS2の使用
11.1. OCFS2の基礎
11.2. OCFS2用のDRBDリソースの作成
11.3. OCFS2ファイルシステムの作成
11.4. PacemakerによるOCFS2の管理
11.4.1. PacemakerにデュアルプライマリDRBDリソースを追加する
11.4.2. OCFS2をPacemakerで管理するには
11.4.3. PacemakerにOCFS2ファイルシステムを追加する
11.4.4. OCFS2ファイルシステムを管理するPacemakerの制約の追加
11.5. Pacemakerを使わないOCFS2管理
11.5.1. OCFS2をサポートするようにクラスタを設定する
11.5.2. OCFS2ファイルシステムの使用
12. DRBDでのXenの使用
12.1. Xenの基礎
12.2. Xenとともに使用するためにDRBDモジュールパラメータを設定する
12.3. Xen VBDとして適切なDRBDリソースを作成する
12.4. DRBD VBDの使用
12.5. DRBDで保護されたdomUの開始、停止、移行
12.6. DRBDとXen統合の内部
12.7. XenとPacemakerの統合
V. DRBDパフォーマンスの最適化
13. ブロックデバイスのパフォーマンス測定
13.1. スループットの測定
13.2. レイテンシの測定
14. DRBDのスループット最適化
14.1. ハードウェアの検討事項
14.2. スループットオーバヘッドの予測
14.3. チューニングの推奨事項
14.3.1. max-buffersmax-epoch-size の設定
14.3.2. TCP送信バッファサイズの調整
14.3.3. アクティビティログサイズの調整
14.3.4. バリアとディスクフラッシュを無効にする
14.4. 冗長性を高め読み込み性能を向上させる
15. DRBDレイテンシの最適化
15.1. ハードウェアの検討事項
15.2. レイテンシオーバーヘッドの予測値
15.3. レイテンシ vs. IOPs
15.4. チューニングの推奨事項
15.4.1. CPUマスクの設定
15.4.2. ネットワークMTUの変更
15.4.3. deadline I/Oスケジューラを有効にする
VI. さらに詳しく知る
16. DRBDの内部
16.1. DRBDメタデータ
16.1.1. 内部メタデータ
16.1.2. 外部メタデータ
16.1.3. メタデータサイズの見積り
16.2. 世代識別子
16.2.1. データ世代
16.2.2. 世代識別子タプル
16.2.3. 世代識別子の変化
16.2.4. 世代識別子とDRBDの状態
16.3. アクティビティログ
16.3.1. 目的
16.3.2. アクティブエクステント
16.3.3. アクティビティログの適切なサイズの選択
16.4. クイック同期ビットマップ
16.5. peer fencingインタフェース
17. DRBD Manageについてのより詳しい情報
17.1. 空き容量の通知
17.2. デプロイを保留するポリシープラグイン
17.2.1. ドライバ書き込みについての詳細情報
18. 詳細情報の入手
18.1. 商用DRBDのサポート
18.2. 公開メーリングリスト
18.3. 公開IRCチャンネル
18.4. 公式twitterアカウント
18.5. 資料
18.6. その他の資料
VII. 付録
最近の変更
1. コネクション
2. 自動プロモーション 機能
3. パフォーマンスの向上
4. 1リソース内の複数ボリューム
4.1. udevシンボリックリンクの変更
5. 設定上の構文の変更点
5.1. ブール型設定オプション
5.2. syncer セクションはなくなりました
5.3. protocol オプションが変則的ではなくなりました
5.4. 新しいリソース毎の options セクション
6. ネットワーク通信のオンライン変更
6.1. レプリケーションプロトコルの変更
6.2. シングルプライマリからデュアルプライマリのレプリケーションに変更する
7. drbdadm コマンドの変更点
7.1. pass-throughオプションの変更点
7.2. --overwrite-data-of-peer--force オプションに置き換わりました
8. デフォルト値の変更点
8.1. 同時にアクティブなアクティビティログのエクステント数(al-extents)
8.2. ランレングス符号化(use-rle)
8.3. I/Oエラーの処理ストラテジー(on-io-error)
8.4. 可変レート同期
8.5. 設定可能なDRBDデバイス数(minor-count)
19. OpenstackでのDRBDボリューム
19.1. Openstack概要
19.2. OpenstackへのDRBDインストール
19.2.1. 追加設定
19.3. トランスポートプロトコルの選択
19.3.1. iSCSIトランスポート
19.3.2. DRBDトランスポート
19.3.3. トランスポートプロトコルの設定
19.4. その他注意点
19.4.1. 空き容量の通知
19.4.2. Hyperconverged Setups
20. OpenNebulaでのDRBDボリューム
20.1. OpenNebula概要
20.2. OpenNebulaのインストール
20.3. デプロイメントポリシー
20.4. ライブマイグレーション
20.5. 空き領域の通知
21. DockerにおけるDRBDボリューム
21.1. Docker概説
21.2. Dockerプラグインのインストール
21.3. Dockerプラグイン使用例
22. DRBD Volumes in Proxmox VE
22.1. Proxmox VE Overview
22.2. Proxmox Plugin Installation
22.3. Proxmox Plugin Configuration

図の一覧

1.1. LinuxのI/OスタックでのDRBDの位置
2.1. 同期時間
2.2. DRBDリソーススタッキング
2.3. DRBDデータ再配置
4.1. N 個のホストの時のコネクション数
4.2. syncer 速度の例(有効帯域幅が110MB/sの場合)
4.3. syncer 速度の例(有効帯域幅が80MB/sの場合)
4.4. 単一スタックの構成
4.5. DRBDデータ再配置
7.1. PacemakerクラスタのDRBDリソースのスタック
7.2. PacemakerクラスタのDRBDリソースのスタック
7.3. SANベースのクラスタ間のレプリケートにDRBDを用いる
9.1. LVM概要
16.1. DRBDメタデータサイズの計算(正確)
16.2. DRBDメタデータサイズの見積り(概算)
16.3. 新規データ世代の開始時に変化するGIタプル
16.4. 同期速度とターゲットの同期時間にもとづくアクティブエクステントの計算
16.5. 同期速度とターゲット同期時間にもとづくアクティブエクステントの計算(例)

表の一覧

16.1. fence-peer ハンドラの終了コード
19.1. ディストリビューション依存の設定