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

This guide has been released to the DRBD community, and its authors strive to improve it permanently. Feedback from readers is always welcome and encouraged. Please use the DRBD public mailing list for enhancement suggestions and corrections.

License information

The text of and illustrations in this document are licensed under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA", brief explanation, full license text).

In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.

本書の原著のURL:http://drbd.linbit.com/users-guide-9.0/

Trademarks used in this guide

DRBD®, the DRBD logo, LINBIT®, and the LINBIT logo are trademarks or registered trademarks of LINBIT Information Technologies GmbH in Austria, the United States and other countries.

AMD is a registered trademark of Advanced Micro Devices, Inc.

Citrix is a registered trademark of Citrix, Inc.

Debian is a registered trademark of Software in the Public Interest, Inc.

Dolphin Interconnect Solutions and SuperSockets are trademarks or registered trademarks of Dolphin Interconnect Solutions ASA.

IBM is a registered trademark of International Business Machines Corporation.

Intel is a registered trademark of Intel Corporation.

Linux is a registered trademark of Linus Torvalds.

Oracle, MySQL, and MySQL Enterprise are trademarks or registered trademarks of Oracle Corporation and/or its affiliates.

Red Hat, Red Hat Enterprise Linux, and RPM are trademarks or registered trademarks of Red Hat, Inc.

SuSE, SUSE, and SUSE Linux Enterprise Server are trademarks or registered trademarks of Novell, Inc.

Xen is a registered trademark of Citrix, Inc.

Other names mentioned in this guide may be trademarks or registered trademarks of their respective owners.


目次

はじめにお読みください
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.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.2. よりハイレベルな適用
4.3. パッケージ
4.4. クラスタの初期化
4.5. DRBDManageからリソースの移行
4.6. LINSTORクライアントの使用
4.7. ノードをクラスタに追加する
4.8. ストレージプール
4.8.1. 下位デバイスごとのストレージプール
4.9. クラスタ構成
4.9.1. 利用可能なストレージプラグイン
4.10. リソース、ボリュームの作成と配備
4.10.1. 手動配備
4.10.2. 自動配備
4.10.3. DRBDクライアント
4.10.4. 1つのリソースから異なるストレージプールへのボリューム
4.11. ネットワークインターフェイスカードの管理
4.12. 暗号化ボリューム
4.12.1. ユーザセキュリティを無効にする
4.12.2. 暗号化のコマンド
4.13. スナップショットの管理
4.13.1. スナップショットの作成
4.13.2. スナップショットの復元
4.13.3. スナップショットの削除
4.14. クラスタの状態をチェック
4.15. リソースのオプション設定
4.16. LINSTORによるDRBD Proxy
4.17. LINSTORでデータ再調整
4.18. 外部データベース
4.18.1. Postgresql
4.18.2. MariaDB/Mysql
4.19. ヘルプの利用
5. Kubernetes で LINSTOR ボリューム
5.1. Kubernetesの概要
5.2. Linstor External Provisioner のインストール
5.3. Linstor FlexVolume Provisioner のインストール
5.4. 基本的な構成と配備
5.5. 高度な設定
5.5.1. autoPlace
5.5.2. blockSize
5.5.3. controllers
5.5.4. disklessStoragePool
5.5.5. doNotPlaceWithRegex
5.5.6. encryption
5.5.7. force
5.5.8. nodeList
5.5.9. storagePool
5.5.10. xfs固有のパラメータ
6. Proxmox VE での LINSTOR ボリューム
6.1. Proxmox VE概要
6.2. Proxmoxプラグインのインストール
6.3. LINSTORの設定
6.4. Proxmoxプライグインの設定
6.5. コントローラの高可用性
7. OpenNebulaのLINSTORボリューム
7.1. OpenNebulaの概要
7.2. OpenNebulaアドオンのインストール
7.3. 配備オプション
7.4. ライブマイグレーション
7.5. 空き容量の計算
8. OpenStackでのLINSTORボリューム
8.1. Openstackの概要
8.2. OpenstackのLINSTORインストレーション
8.2.1. UbuntuでLINSTORクラスタをすばやく設定する方法について
8.2.2. LINSTORドライバファイルをインストール
8.3. LINSTORのCinder構成
8.3.1. /etc/cinder/ 内のCinder設定ファイル cinder.conf を次のように編集
8.3.2. ドライバ用のPythonのPythonライブラリを更新
8.3.3. LINSTOR用の新しいバックエンドタイプを作成
8.3.4. 最後にCinderサービスを再起動
8.3.5. 適切なインストールを確認
8.3.6. 追加設定
8.4. トランスポートプロトコルの選択
8.4.1. iSCSIトランスポート
8.4.2. DRBD/LINSTORトランスポート
8.4.3. トランスポートプロトコルの設定
IV. DRBDの使い方
9. 一般的な管理作業
9.1. DRBDの設定
9.1.1. 下位レベルストレージの準備
9.1.2. ネットワーク構成の準備
9.1.3. リソースの設定
9.1.4. ネットワークコネクションの定義
9.1.5. トランスポートプロトコルの設定
9.1.6. リソースを初めて有効にする
9.1.7. デバイスの初期同期
9.1.8. トラックベースのレプリケーションの使用
9.1.9. 4ノードでの構成例
9.2. DRBDのステータスを確認する
9.2.1. drbdmon でステータスを取得する
9.2.2. drbdtop でDRBDのステータス取得し対話する
9.2.3. /proc/drbd でのステータス情報
9.2.4. drbdadm でのステータス情報
9.2.5. drbdsetup events2 を使用した一回のみ、またはリアルタイムでの監視
9.2.6. コネクションステータス
9.2.7. 複製ステータス
9.2.8. リソースのロール
9.2.9. ディスク状態
9.2.10. 接続情報データ
9.2.11. パフォーマンス指標
9.3. リソースの有効化と無効化
9.3.1. リソースの有効化
9.3.2. リソースを無効にする
9.4. リソースの再設定
9.5. リソースの昇格と降格
9.6. 基本的な手動フェイルオーバ
9.7. DRBDのアップグレード
9.7.1. 概要
9.7.2. リポジトリのアップデート
9.7.3. DRBDの状態を確認する
9.7.4. クラスタを停止する
9.7.5. パッケージのアップグレード
9.7.6. 新しいカーネルモジュールのロード
9.7.7. 設定ファイルの移行
9.7.8. メタデータの変更
9.7.9. DRBDを再び起動する
9.7.10. DRBD9からDRBD9
9.8. デュアルプライマリモードを有効にする
9.8.1. 永続的なデュアルプライマリモード
9.8.2. 一時的なデュアルプライマリモード
9.9. オンラインデバイス照合の使用
9.9.1. オンライン照合を有効にする
9.9.2. オンライン照合の実行
9.9.3. 自動オンライン照合
9.10. 同期速度の設定
9.10.1. 同期速度の計算
9.10.2. 可変同期速度設定
9.10.3. 永続的な固定同期速度の設定
9.10.4. 同期に関するヒント
9.11. チェックサムベース同期の設定
9.12. 輻輳ポリシーと中断したレプリケーションの構成
9.13. I/Oエラー処理方針の設定
9.14. レプリケーショントラフィックの整合性チェックを設定
9.15. リソースのサイズ変更
9.15.1. オンライン拡張
9.15.2. オフライン拡張する
9.15.3. オンライン縮小
9.15.4. オフライン縮小
9.16. 下位デバイスのフラッシュを無効にする
9.17. スプリットブレイン時の動作の設定
9.17.1. スプリットブレインの通知
9.17.2. スプリットブレインからの自動復旧ポリシー
9.18. スタック3ノード構成の作成
9.18.1. デバイススタックの留意事項
9.18.2. スタックリソースの設定
9.18.3. スタックリソースを有効にする
9.19. 永続的なディスクレスノード
9.20. データ再配置
9.20.1. ビットマップスロットの用意
9.20.2. 新しいノードの用意と有効化
9.20.3. 初期同期の開始
9.20.4. 接続確認
9.20.5. 初期同期後
9.20.6. クリーニング
9.20.7. まとめと他のステップ
9.21. クォーラム設定
9.21.1. 保証された最低限の冗長化
9.21.2. クォーラムを失った時の動作
10. DRBD Proxyの使用
10.1. DRBD Proxyの使用においての検討事項
10.2. インストール
10.3. ライセンスファイル
10.4. LINSTORを使用した設定
10.5. リソースファイルを使用した設定
10.6. DRBD Proxyの制御
10.7. DRBD Proxyプラグインについて
10.7.1. WAN側の帯域幅制限を使用する
10.8. トラブルシューティング
11. トラブルシューティングとエラーからの回復
11.1. ハードドライブの障害の場合
11.1.1. 手動でDRBDをハードドライブから切り離す
11.1.2. I/Oエラー時の自動切り離し
11.1.3. 障害が発生したディスクの交換(内部メタデータを使用している場合)
11.1.4. 障害の発生したディスクの交換(外部メタデータを使用している場合)
11.2. ノード障害に対処する
11.2.1. 一時的なセカンダリノードの障害に対処する
11.2.2. 一時的なプライマリノードの障害に対処する
11.2.3. 永続的なノード障害に対処する
11.3. スプリットブレインからの手動回復
V. DRBDとアプリケーションの組み合わせ
12. DRBDとPacemakerクラスタ
12.1. Pacemakerの基礎
12.2. DRBDをPacemakerクラスタで管理する
12.3. DRBDを下位デバイスにするマスターとスレーブのあるサービスのクラスタ設定
12.4. Pacemakerクラスタでリソースレベルのフェンシングを使用する
12.4.1. dopd でのリソースレベルフェンシング
12.4.2. CIB (Cluster Information Base)を使ったリソースレベルフェンシング
12.5. PacemakerクラスタでスタックDRBDリソースを使用する
12.5.1. オフサイトディザスタリカバリ機能をPacemakerクラスタに追加する
12.5.2. スタックリソースを使って、Pacemakerクラスタの4ノード冗長化を実現する
12.6. 2セットのSANベースPacemakerクラスタ間をDRBDでレプリケート
12.6.1. DRBDリソース構成
12.6.2. Pacemakerリソース構成
12.6.3. サイトのフェイルオーバ
13. DRBDとRed Hat Cluster Suite
13.1. Red Hat Clusterの背景情報
13.1.1. フェンシング
13.1.2. リソースグループマネージャ
13.2. Red Hat Clusterの設定
13.2.1. cluster.conf ファイル
13.3. Red Hat ClusterフェイルオーバクラスタでDRBDを使用する
13.3.1. クラスタ構成の設定
14. DRBDでのLVMの使用
14.1. LVMの基礎
14.2. DRBDの下位デバイスとして論理ボリュームを使用する
14.3. DRBD同期中の自動LVMスナップショットの使用
14.4. DRBDリソースを物理ボリュームとして構成する
14.5. 新しいDRBDボリュームを既存のボリュームグループへ追加する
14.6. DRBDを使用する入れ子のLVM構成
14.6.1. VGを他ノードに移動する
14.7. Pacemakerによる高可用性LVM
15. DRBDでGFSを使用する
15.1. GFS基礎
15.2. GFS用のDRBDリソースの作成
15.3. DRBDリソースを認識するようにLVMを設定する
15.4. GFS対応のためのクラスタ設定
15.5. GFSファイルシステムの作成
15.6. GFSファイルシステムを使用する
16. DRBDとOCFS2の使用
16.1. OCFS2の基礎
16.2. OCFS2用のDRBDリソースの作成
16.3. OCFS2ファイルシステムの作成
16.4. PacemakerによるOCFS2の管理
16.4.1. PacemakerにデュアルプライマリDRBDリソースを追加する
16.4.2. OCFS2をPacemakerで管理するには
16.4.3. PacemakerにOCFS2ファイルシステムを追加する
16.4.4. OCFS2ファイルシステムを管理するPacemakerの制約の追加
16.5. Pacemakerを使わないOCFS2管理
16.5.1. OCFS2をサポートするようにクラスタを設定する
16.5.2. OCFS2ファイルシステムの使用
17. DRBDでのXenの使用
17.1. Xenの基礎
17.2. Xenとともに使用するためにDRBDモジュールパラメータを設定する
17.3. Xen VBDとして適切なDRBDリソースを作成する
17.4. DRBD VBDの使用
17.5. DRBDで保護されたdomUの開始、停止、移行
17.6. DRBDとXen統合の内部
17.7. XenとPacemakerの統合
VI. DRBDパフォーマンスの最適化
18. ブロックデバイスのパフォーマンス測定
18.1. スループットの測定
18.2. レイテンシの測定
19. DRBDのスループット最適化
19.1. ハードウェアの検討事項
19.2. スループットオーバヘッドの予測
19.3. チューニングの推奨事項
19.3.1. max-buffersmax-epoch-size の設定
19.3.2. TCP送信バッファサイズの調整
19.3.3. アクティビティログサイズの調整
19.3.4. バリアとディスクフラッシュを無効にする
19.4. 冗長性を高め読み込み性能を向上させる
20. DRBDレイテンシの最適化
20.1. ハードウェアの検討事項
20.2. レイテンシオーバーヘッドの予測値
20.3. レイテンシ vs. IOPs
20.4. チューニングの推奨事項
20.4.1. CPUマスクの設定
20.4.2. ネットワークMTUの変更
20.4.3. deadline I/Oスケジューラを有効にする
VII. さらに詳しく知る
21. DRBDの内部
21.1. DRBDメタデータ
21.1.1. 内部メタデータ
21.1.2. 外部メタデータ
21.1.3. メタデータサイズの見積り
21.2. 世代識別子
21.2.1. データ世代
21.2.2. 世代識別子タプル
21.2.3. 世代識別子の変化
21.2.4. 世代識別子とDRBDの状態
21.3. アクティビティログ
21.3.1. 目的
21.3.2. アクティブエクステント
21.3.3. アクティビティログの適切なサイズの選択
21.4. クイック同期ビットマップ
21.5. peer fencingインタフェース
22. DRBD Manageについてのより詳しい情報
22.1. 空き容量の通知
22.2. デプロイを保留するポリシープラグイン
22.2.1. ドライバ書き込みについての詳細情報
23. 詳細情報の入手
23.1. 商用DRBDのサポート
23.2. 公開メーリングリスト
23.3. 公開IRCチャンネル
23.4. 公式twitterアカウント
23.5. 資料
23.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)
24. DRBD Manage
24.1. クラスタの初期設定
24.2. ノードの追加
24.2.1. DRBD Manageノードの種類
24.2.2. コントロールノードの追加
24.2.3. ピュアコントローラーノード追加
24.2.4. サテライトノードの追加
24.2.5. ピュアクライアントノードの追加
24.2.6. 外部ノードの追加
24.3. クラスタ設定
24.4. ストレージプラグインの設定
24.4.1. LVM の設定
24.4.2. ZFS の設定
24.4.3. ストレージプラグインについての情報
24.5. リソース/ボリュームの作成とデプロイ
24.6. スナップショット管理
24.6.1. スナップショットの作成
24.6.2. スナップショットのリストア
24.6.3. スナップショット削除
24.7. クラスタ状態の確認
24.8. リソースのオプション設定をする
24.9. DRBD Manageでのデータ再配置
24.10. ヘルプ
25. OpenstackでのDRBDボリューム
25.1. Openstack概要
25.2. OpenstackへのDRBDインストール
25.2.1. 追加設定
25.3. トランスポートプロトコルの選択
25.3.1. iSCSIトランスポート
25.3.2. DRBDトランスポート
25.3.3. トランスポートプロトコルの設定
25.4. その他注意点
25.4.1. 空き容量の通知
25.4.2. Hyperconverged Setups
26. OpenNebulaでのDRBDボリューム
26.1. OpenNebula概要
26.2. OpenNebulaのインストール
26.3. デプロイメントポリシー
26.4. ライブマイグレーション
26.5. 空き領域の通知
27. DockerにおけるDRBDボリューム
27.1. Docker概説
27.2. Dockerプラグインのインストール
27.3. Dockerプラグイン使用例
28. DRBD Volumes in Proxmox VE
28.1. Proxmox VE Overview
28.2. Proxmox Plugin Installation
28.3. Proxmox Plugin Configuration

図の一覧

1.1. LinuxのI/OスタックでのDRBDの位置
2.1. 同期時間
2.2. DRBDリソーススタッキング
2.3. DRBDデータ再配置
6.1. シリアルポートの追加
6.2. シリアルポート付きのVM
6.3. LINBIT LINSTORコントローラアプライアンス
6.4. コントローラVMのHA設定
9.1. N 個のホストの時のコネクション数
9.2. syncer 速度の例(有効帯域幅が110MB/sの場合)
9.3. syncer 速度の例(有効帯域幅が80MB/sの場合)
9.4. 単一スタックの構成
9.5. DRBDデータ再配置
12.1. PacemakerクラスタのDRBDリソースのスタック
12.2. PacemakerクラスタのDRBDリソースのスタック
12.3. SANベースのクラスタ間のレプリケートにDRBDを用いる
14.1. LVM概要
21.1. DRBDメタデータサイズの計算(正確)
21.2. DRBDメタデータサイズの見積り(概算)
21.3. 新規データ世代の開始時に変化するGIタプル
21.4. 同期速度とターゲットの同期時間にもとづくアクティブエクステントの計算
21.5. 同期速度とターゲット同期時間にもとづくアクティブエクステントの計算(例)
24.1. DRBDのノードの種類
24.2. サテライトノードを使ったクラスタ構成
24.3. DRBDデータ再配置

表の一覧

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