DRBD9 と LINSTOR のユーザーズガイド


目次

はじめにお読みください
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. LINSTOR
4. 基本管理タスク/設定
4.1. 概念と用語
4.1.1. インストール可能コンポーネント
4.1.2. オブジェクト
4.2. よりハイレベルな適用
4.3. パッケージ
4.4. インストール
4.4.1. Ubuntu Linux
4.4.2. SUSE Linux Enterprise Server
4.4.3. CentOS
4.5. コンテナ
4.6. クラスタの初期化
4.7. LINSTORクライアントの使用
4.8. ノードをクラスタに追加する
4.9. ストレージプール
4.9.1. 下位デバイスごとのストレージプール
4.10. クラスタ構成
4.10.1. 利用可能なストレージプラグイン
4.11. リソース、ボリュームの作成と配備
4.11.1. 手動配備
4.11.2. 自動配備
5. LINSTOR 応用タスク
5.1. DRBDクライアント
5.2. LINSTOR - DRBDコンシステンシグループ/マルチボリューム
5.3. 1つのリソースから異なるストレージプールへのボリューム
5.4. DRBDを使わないLINSTOR
5.4.1. NVMe-oF/NVMe-TCP LINSTOR レイヤ
5.5. ネットワークインターフェイスカードの管理
5.6. 暗号化ボリューム
5.6.1. ユーザセキュリティを無効にする
5.6.2. 暗号化のコマンド
5.7. クラスタの状態をチェック
5.8. スナップショットの管理
5.8.1. スナップショットの作成
5.8.2. スナップショットの復元
5.8.3. スナップショットへのロールバック
5.8.4. スナップショットの削除
5.9. リソースのオプション設定
5.10. ディスクの追加と削除
5.10.1. ディスクの移行
5.11. LINSTORによるDRBD Proxy
5.12. 外部データベース
5.12.1. Postgresql
5.12.2. MariaDB/Mysql
5.13. LINSTOR REST-API
5.14. ヘルプの利用
5.14.1. コマンドラインから確認
5.14.2. コミュニティの助けを借りる
5.14.3. GitHub
5.14.4. 有料のサポートと開発
6. Kubernetes で LINSTOR ボリューム
6.1. Kubernetesの概要
6.2. LINSTOR CSIプラグインの配備
6.3. 基本的な構成と配備
6.4. スナップショット
6.5. ボリュームへのアクセス
6.6. 高度な設定
6.6.1. nodeList
6.6.2. autoPlace
6.6.3. replicasOnSame
6.6.4. replicasOnDifferent
6.6.5. localStoragePolicy
6.6.6. storagePool
6.6.7. disklessStoragePool
6.6.8. encryption
6.6.9. filesystem
6.6.10. fsOpts
6.6.11. mountOpts
7. Proxmox VE での LINSTOR ボリューム
7.1. Proxmox VE概要
7.2. Proxmoxプラグインのインストール
7.3. LINSTORの設定
7.4. Proxmoxプライグインの設定
7.5. コントローラの高可用性
8. OpenNebulaのLINSTORボリューム
8.1. OpenNebulaの概要
8.2. OpenNebulaアドオンのインストール
8.3. 配備オプション
8.4. ライブマイグレーション
8.5. 空き容量の計算
9. OpenStackでのLINSTORボリューム
9.1. Openstackの概要
9.2. OpenstackのLINSTORインストレーション
9.2.1. UbuntuでLINSTORクラスタをすばやく設定する方法について
9.2.2. LINSTORドライバファイルをインストール
9.3. LINSTORのCinder構成
9.3.1. /etc/cinder/ 内のCinder設定ファイル cinder.conf を次のように編集
9.3.2. ドライバ用のPythonのPythonライブラリを更新
9.3.3. LINSTOR用の新しいバックエンドタイプを作成
9.3.4. 最後にCinderサービスを再起動
9.3.5. 適切なインストールを確認
9.3.6. 追加設定
9.4. トランスポートプロトコルの選択
9.4.1. iSCSIトランスポート
9.4.2. DRBD/LINSTORトランスポート
9.4.3. トランスポートプロトコルの設定
10. DockerのLINSTORボリューム
10.1. Dockerの概要
10.2. Dockerインストール用のLINSTORプラグイン
10.3. Docker設定用のLINSTORプラグイン
10.4. 使用例
10.4.1. 例1 - 典型的なdockerパターン
10.4.2. 例2 - ホスト指定で1つのディスクフル割り当て、2つのディスクレスノード
10.4.3. 例3 - どこかに1つのディスクフル割り当て、2つのディスクレスノード
10.4.4. 例4 - ホスト指定で2つのディスクフル割り当て、charlie はディスクレス
10.4.5. 例5 - どこかに2つのディスクフル割り当て、1つのディスクレスノード
10.4.6. 例6 - dockerでなくcurlを使う、開発者向け
IV. DRBDの使い方
11. 一般的な管理作業
11.1. DRBDの設定
11.1.1. 下位レベルストレージの準備
11.1.2. ネットワーク構成の準備
11.1.3. リソースの設定
11.1.4. ネットワークコネクションの定義
11.1.5. トランスポートプロトコルの設定
11.1.6. リソースを初めて有効にする
11.1.7. デバイスの初期同期
11.1.8. トラックベースのレプリケーションの使用
11.1.9. 4ノードでの構成例
11.2. DRBDのステータスを確認する
11.2.1. drbdmon でステータスを取得する
11.2.2. drbdtop でDRBDのステータス取得し対話する
11.2.3. /proc/drbd でのステータス情報
11.2.4. drbdadm でのステータス情報
11.2.5. drbdsetup events2 を使用した一回のみ、またはリアルタイムでの監視
11.2.6. コネクションステータス
11.2.7. 複製ステータス
11.2.8. リソースのロール
11.2.9. ディスク状態
11.2.10. 接続情報データ
11.2.11. パフォーマンス指標
11.3. リソースの有効化と無効化
11.3.1. リソースの有効化
11.3.2. リソースを無効にする
11.4. リソースの再設定
11.5. リソースの昇格と降格
11.6. 基本的な手動フェイルオーバ
11.7. DRBDのアップグレード
11.7.1. 概要
11.7.2. リポジトリのアップデート
11.7.3. DRBDの状態を確認する
11.7.4. クラスタを停止する
11.7.5. パッケージのアップグレード
11.7.6. 新しいカーネルモジュールのロード
11.7.7. 設定ファイルの移行
11.7.8. メタデータの変更
11.7.9. DRBDを再び起動する
11.7.10. DRBD9からDRBD9
11.8. デュアルプライマリモードを有効にする
11.8.1. 永続的なデュアルプライマリモード
11.8.2. 一時的なデュアルプライマリモード
11.9. オンラインデバイス照合の使用
11.9.1. オンライン照合を有効にする
11.9.2. オンライン照合の実行
11.9.3. 自動オンライン照合
11.10. 同期速度の設定
11.10.1. 同期速度の計算
11.10.2. 可変同期速度設定
11.10.3. 永続的な固定同期速度の設定
11.10.4. 同期に関するヒント
11.11. チェックサムベース同期の設定
11.12. 輻輳ポリシーと中断したレプリケーションの構成
11.13. I/Oエラー処理方針の設定
11.14. レプリケーショントラフィックの整合性チェックを設定
11.15. リソースのサイズ変更
11.15.1. オンライン拡張
11.15.2. オフライン拡張する
11.15.3. オンライン縮小
11.15.4. オフライン縮小
11.16. 下位デバイスのフラッシュを無効にする
11.17. スプリットブレイン時の動作の設定
11.17.1. スプリットブレインの通知
11.17.2. スプリットブレインからの自動復旧ポリシー
11.18. スタック3ノード構成の作成
11.18.1. デバイススタックの留意事項
11.18.2. スタックリソースの設定
11.18.3. スタックリソースを有効にする
11.19. 永続的なディスクレスノード
11.20. データ再配置
11.20.1. ビットマップスロットの用意
11.20.2. 新しいノードの用意と有効化
11.20.3. 初期同期の開始
11.20.4. 接続確認
11.20.5. 初期同期後
11.20.6. クリーニング
11.20.7. まとめと他のステップ
11.21. クォーラム設定
11.21.1. 保証された最低限の冗長化
11.21.2. クォーラムを失った時の動作
11.21.3. タイブレーカーとしてのディスクレスノードを使用
12. DRBD Proxyの使用
12.1. DRBD Proxyの使用においての検討事項
12.2. インストール
12.3. ライセンスファイル
12.4. LINSTORを使用した設定
12.5. リソースファイルを使用した設定
12.6. DRBD Proxyの制御
12.7. DRBD Proxyプラグインについて
12.7.1. WAN側の帯域幅制限を使用する
12.8. トラブルシューティング
13. トラブルシューティングとエラーからの回復
13.1. ハードドライブの障害の場合
13.1.1. 手動でDRBDをハードドライブから切り離す
13.1.2. I/Oエラー時の自動切り離し
13.1.3. 障害が発生したディスクの交換(内部メタデータを使用している場合)
13.1.4. 障害の発生したディスクの交換(外部メタデータを使用している場合)
13.2. ノード障害に対処する
13.2.1. 一時的なセカンダリノードの障害に対処する
13.2.2. 一時的なプライマリノードの障害に対処する
13.2.3. 永続的なノード障害に対処する
13.3. スプリットブレインからの手動回復
V. DRBDとアプリケーションの組み合わせ
14. DRBDとPacemakerクラスタ
14.1. Pacemakerの基礎
14.2. DRBDをPacemakerクラスタで管理する
14.3. DRBDを下位デバイスにするマスターとスレーブのあるサービスのクラスタ設定
14.4. Pacemakerクラスタでリソースレベルのフェンシングを使用する
14.4.1. dopd でのリソースレベルフェンシング
14.4.2. CIB (Cluster Information Base)を使ったリソースレベルフェンシング
14.5. PacemakerクラスタでスタックDRBDリソースを使用する
14.5.1. オフサイトディザスタリカバリ機能をPacemakerクラスタに追加する
14.5.2. スタックリソースを使って、Pacemakerクラスタの4ノード冗長化を実現する
14.6. 2セットのSANベースPacemakerクラスタ間をDRBDでレプリケート
14.6.1. DRBDリソース構成
14.6.2. Pacemakerリソース構成
14.6.3. サイトのフェイルオーバ
15. DRBDとRed Hat Cluster Suite
15.1. Red Hat Clusterの背景情報
15.1.1. フェンシング
15.1.2. リソースグループマネージャ
15.2. Red Hat Clusterの設定
15.2.1. cluster.conf ファイル
15.3. Red Hat ClusterフェイルオーバクラスタでDRBDを使用する
15.3.1. クラスタ構成の設定
16. DRBDでのLVMの使用
16.1. LVMの基礎
16.2. DRBDの下位デバイスとして論理ボリュームを使用する
16.3. DRBD同期中の自動LVMスナップショットの使用
16.4. DRBDリソースを物理ボリュームとして構成する
16.5. 新しいDRBDボリュームを既存のボリュームグループへ追加する
16.6. DRBDを使用する入れ子のLVM構成
16.6.1. VGを他ノードに移動する
16.7. Pacemakerによる高可用性LVM
17. DRBDでGFSを使用する
17.1. GFS基礎
17.2. GFS用のDRBDリソースの作成
17.3. DRBDリソースを認識するようにLVMを設定する
17.4. GFS対応のためのクラスタ設定
17.5. GFSファイルシステムの作成
17.6. GFSファイルシステムを使用する
18. DRBDとOCFS2の使用
18.1. OCFS2の基礎
18.2. OCFS2用のDRBDリソースの作成
18.3. OCFS2ファイルシステムの作成
18.4. PacemakerによるOCFS2の管理
18.4.1. PacemakerにデュアルプライマリDRBDリソースを追加する
18.4.2. OCFS2をPacemakerで管理するには
18.4.3. PacemakerにOCFS2ファイルシステムを追加する
18.4.4. OCFS2ファイルシステムを管理するPacemakerの制約の追加
18.5. Pacemakerを使わないOCFS2管理
18.5.1. OCFS2をサポートするようにクラスタを設定する
18.5.2. OCFS2ファイルシステムの使用
19. DRBDでのXenの使用
19.1. Xenの基礎
19.2. Xenとともに使用するためにDRBDモジュールパラメータを設定する
19.3. Xen VBDとして適切なDRBDリソースを作成する
19.4. DRBD VBDの使用
19.5. DRBDで保護されたdomUの開始、停止、移行
19.6. DRBDとXen統合の内部
19.7. XenとPacemakerの統合
VI. DRBDパフォーマンスの最適化
20. ブロックデバイスのパフォーマンス測定
20.1. スループットの測定
20.2. レイテンシの測定
21. DRBDのスループット最適化
21.1. ハードウェアの検討事項
21.2. スループットオーバヘッドの予測
21.3. チューニングの推奨事項
21.3.1. max-buffersmax-epoch-size の設定
21.3.2. TCP送信バッファサイズの調整
21.3.3. アクティビティログサイズの調整
21.3.4. バリアとディスクフラッシュを無効にする
21.4. 冗長性を高め読み込み性能を向上させる
22. DRBDレイテンシの最適化
22.1. ハードウェアの検討事項
22.2. レイテンシオーバーヘッドの予測値
22.3. レイテンシ vs. IOPs
22.4. チューニングの推奨事項
22.4.1. CPUマスクの設定
22.4.2. ネットワークMTUの変更
22.4.3. deadline I/Oスケジューラを有効にする
VII. さらに詳しく知る
23. DRBDの内部
23.1. DRBDメタデータ
23.1.1. 内部メタデータ
23.1.2. 外部メタデータ
23.1.3. メタデータサイズの見積り
23.2. 世代識別子
23.2.1. データ世代
23.2.2. 世代識別子タプル
23.2.3. 世代識別子の変化
23.2.4. 世代識別子とDRBDの状態
23.3. アクティビティログ
23.3.1. 目的
23.3.2. アクティブエクステント
23.3.3. アクティビティログの適切なサイズの選択
23.4. クイック同期ビットマップ
23.5. peer fencingインタフェース
24. DRBD Manageについてのより詳しい情報
24.1. 空き容量の通知
24.2. デプロイを保留するポリシープラグイン
24.2.1. ドライバ書き込みについての詳細情報
25. 詳細情報の入手
25.1. 商用DRBDのサポート
25.2. 公開メーリングリスト
25.3. 公開IRCチャンネル
25.4. 公式twitterアカウント
25.5. 資料
25.6. その他の資料
VIII. 付録
最近の変更
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)
26. DRBD Manage
26.1. クラスタの初期設定
26.2. ノードの追加
26.2.1. DRBD Manageノードの種類
26.2.2. コントロールノードの追加
26.2.3. ピュアコントローラーノード追加
26.2.4. サテライトノードの追加
26.2.5. ピュアクライアントノードの追加
26.2.6. 外部ノードの追加
26.3. クラスタ設定
26.4. ストレージプラグインの設定
26.4.1. LVM の設定
26.4.2. ZFS の設定
26.4.3. ストレージプラグインについての情報
26.5. リソース/ボリュームの作成とデプロイ
26.6. スナップショット管理
26.6.1. スナップショットの作成
26.6.2. スナップショットのリストア
26.6.3. スナップショット削除
26.7. クラスタ状態の確認
26.8. リソースのオプション設定をする
26.9. DRBD Manageでのデータ再配置
26.10. ヘルプ
27. OpenstackでのDRBDボリューム
27.1. Openstack概要
27.2. OpenstackへのDRBDインストール
27.2.1. 追加設定
27.3. トランスポートプロトコルの選択
27.3.1. iSCSIトランスポート
27.3.2. DRBDトランスポート
27.3.3. トランスポートプロトコルの設定
27.4. その他注意点
27.4.1. 空き容量の通知
27.4.2. Hyperconverged Setups
28. OpenNebulaでのDRBDボリューム
28.1. OpenNebula概要
28.2. OpenNebulaのインストール
28.3. デプロイメントポリシー
28.4. ライブマイグレーション
28.5. 空き領域の通知
29. DockerにおけるDRBDボリューム
29.1. Docker概説
29.2. Dockerプラグインのインストール
29.3. Dockerプラグイン使用例
30. DRBD Volumes in Proxmox VE
30.1. Proxmox VE Overview
30.2. Proxmox Plugin Installation
30.3. Proxmox Plugin Configuration

図の一覧

1.1. LinuxのI/OスタックでのDRBDの位置
2.1. 同期時間
2.2. DRBDリソーススタッキング
2.3. DRBDデータ再配置
7.1. シリアルポートの追加
7.2. シリアルポート付きのVM
7.3. LINBIT LINSTORコントローラアプライアンス
7.4. コントローラVMのHA設定
11.1. N 個のホストの時のコネクション数
11.2. syncer 速度の例(有効帯域幅が110MB/sの場合)
11.3. syncer 速度の例(有効帯域幅が80MB/sの場合)
11.4. 単一スタックの構成
11.5. DRBDデータ再配置
14.1. PacemakerクラスタのDRBDリソースのスタック
14.2. PacemakerクラスタのDRBDリソースのスタック
14.3. SANベースのクラスタ間のレプリケートにDRBDを用いる
16.1. LVM概要
23.1. DRBDメタデータサイズの計算(正確)
23.2. DRBDメタデータサイズの見積り(概算)
23.3. 新規データ世代の開始時に変化するGIタプル
23.4. 同期速度とターゲットの同期時間にもとづくアクティブエクステントの計算
23.5. 同期速度とターゲット同期時間にもとづくアクティブエクステントの計算(例)
26.1. DRBDのノードの種類
26.2. サテライトノードを使ったクラスタ構成
26.3. DRBDデータ再配置

表の一覧

23.1. fence-peer ハンドラの終了コード
26.1. DRBD Manageストレージプラグイン比較表
27.1. ディストリビューション依存の設定