5.2. イレイジャーコードプロファイル
Ceph は、プロファイル でイレイジャーコーディングされたプールを定義します。Ceph は、イレイジャーコーディングされたプールおよび関連する CRUSH ルールを作成する際にプロファイルを使用します。
Ceph は、クラスターを初期化する時にデフォルトのイレイジャーコードプロファイルを作成し、レプリケートされたプール内の 2 つのコピーと同じレベルの冗長性を提供します。ただし、25% 未満のストレージ容量を使用します。デフォルトのプロファイルは k=2 と m=2 を定義します。つまり、Ceph は、オブジェクトデータを 4 つの OSD (k+m=4) に分散し、データを損失せずに、これらの OSD の 1 つを損失する可能性があります。
デフォルトの元号付けコードプロファイルでは、1 つの OSD の損失を回避できます。これは 2 サイズが 2 つある複製されたプールと同等ですが、データ 1 TB を保存するには 1.5 TB ではなく 1.5 TB が必要になります。デフォルトのプロファイルを表示するには、以下のコマンドを使用します。
ceph osd erasure-code-profile get default k=2 m=2 plugin=jerasure technique=reed_sol_van
$ ceph osd erasure-code-profile get default
k=2
m=2
plugin=jerasure
technique=reed_sol_van
raw ストレージ要件を増加させずに冗長性を強化するために、新規プロファイルを作成できます。たとえば、k=8 と m=4 のプロファイルでは、12 個の (k+m=12) OSD オブジェクトを配布することで、4 個の (m=4) OSD が失われないようにすることができます。Ceph はオブジェクトを 8 つのチャンクに分割し、リカバリー用に 4 つのコーディングチャンクを計算します。たとえば、オブジェクトサイズが 8 MB の場合、各データチャンクが 1 MB で、各データチャンクのサイズは 1 MB であり、各データチャンクのサイズは 1 MB でも同じサイズになります。4 つの OSD が同時に失敗した場合でも、このオブジェクトは失われません。
プロファイルで最も重要なパラメーターは、ストレージのオーバーヘッドとデータの永続性を定義するため、k、m、および crush-failure-domain です。
プールの作成後にプロファイルを変更できないため、正しいプロファイルの選択は重要です。プロファイルを変更するには、別のプロファイルで新しいプールを作成し、オブジェクトを古いプールから新しいプールに移行する必要があります。
たとえば、目的のアーキテクチャーがストレージオーバーヘッドの 40% オーバーヘッドの 2 つのラックが失われなければならない場合、以下のプロファイルを定義することができます。
プライマリー OSD は、NYAN オブジェクトを 4 つ (k=4) のデータチャンクに分割し、2 つの追加のチャンク (m=2) を作成します。m の値は、データを失うことなく同時に失われた OSD の数を定義します。crush-failure-domain=rack は、2 つのチャンクが同じラックに保存されないように CRUSH ルールを作成します。
Red Hat は、k および m に以下の jerasure コーディング値をサポートしています。
- k=8 m=3
- k=8 m=4
- k=4 m=2
失われた OSD の数がコーディングチャンクの数 (m) と同等である場合、イレイジャーコーディングプールの一部の配置グループは不完全な状態になります。失われた OSD の数が m 未満の場合、配置グループは不完全な状態になりません。いずれの場合も、データの損失は発生しません。配置グループが不完全な状態の場合は、イレイジャーコード化されたプールの min_size を一時的に縮小することで復元が可能になります。
5.2.1. OSD の erasure-code-profile の設定 リンクのコピーリンクがクリップボードにコピーされました!
新しい元号のコードプロファイルを作成するには、以下の手順を実施します。
構文
詳細は、以下のようになります。
- directory
- 説明
- イレイジャーコードプラグインが読み込まれた ディレクトリー 名を設定します。
- 型
- String
- 必須
- いいえ
- デフォルト
-
/usr/lib/ceph/erasure-code
- プラグイン
- 説明
- イレイジャーコードプラグインを使用して、コーディングしたチャンクを計算して、欠落しているチャンクを回復します。詳細は、イレイジャーコードプラグイン セクションを参照してください。
- 型
- String
- 必須
- いいえ
- デフォルト
-
jerasure
- stripe_unit
- 説明
-
ストライプごとにデータチャンクのデータの量。たとえば、2 つのデータチャンクと
stripe_unit=4Kのプロファイルでは、範囲 0 ~ 4,000 がチャンク 0 に設定され、4,000 ~ 8,000 がチャンク 1 に、8,000 ~ 12,000 がチャンク 0 に再び設定されます。最高のパフォーマンスを得るためには、4K の倍数である必要があります。デフォルト値は、プールの作成時に監視設定オプションosd_pool_erasure_code_stripe_unitから取得されます。このプロファイルを使用するプールの stripe_width は、このstripe_unitで乗算したデータチャンクの数になります。 - 型
- String
- 必須
- いいえ
- デフォルト
-
4K
- crush-device-class
- 説明
-
hdd、ssdなどのデバイスクラス。 - 型
- String
- 必須
- いいえ
- デフォルト
-
none(CRUSH がクラスに関係なくすべてのデバイスを使用することを意味します)。
- crush-failure-domain
- 説明
-
host、rackなどの障害ドメイン。 - 型
- String
- 必須
- いいえ
- デフォルト
-
host
- key
- 説明
- 残りのキーと値のペアのセマンティックは、イレイジャーコードプラグインによって定義されます。
- 型
- String
- 必須
- いいえ
- --force
- 説明
- 同じ名前で既存のプロファイルを上書きします。
- 型
- String
- 必須
- いいえ
5.2.2. OSD の erasure-code-profile の削除 リンクのコピーリンクがクリップボードにコピーされました!
イレイジャーコードプロファイルを削除するには、以下のコマンドを実行します。
構文
ceph osd erasure-code-profile rm NAME
ceph osd erasure-code-profile rm NAME
プロファイルがプールによって参照されている場合、削除は失敗します。
osd erasure-code-profile rm コマンドを使用してイレージャーコードプロファイルを削除しても、イレージャーコードプロファイルに関連付けられている CRUSH ルールは自動的に削除されません。Red Hat では、予期しない動作を回避するために、ceph osd crush rule remove RULE_NAME コマンドを使用して、関連する CRUSH ルールを手動で削除することを推奨しています。
5.2.3. OSD の erasure-code-profile の取得 リンクのコピーリンクがクリップボードにコピーされました!
イレイジャーコードプロファイルを表示するには、以下のコマンドを実行します。
構文
ceph osd erasure-code-profile get NAME
ceph osd erasure-code-profile get NAME
5.2.4. OSD の erasure-code-profile の一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
イレイジャーコードプロファイルの名前をリスト表示するには、以下のコマンドを実行します。
構文
ceph osd erasure-code-profile ls
ceph osd erasure-code-profile ls