4.4. Ceph の設定
通常、管理者は /usr/share/ceph-ansible/group_vars
ディレクトリーにある Ceph Ansible 設定ファイルを使用して、初回のデプロイ前に Red Hat Ceph Storage クラスターを設定する必要があります。
『Red Hat Ceph Storage インストールガイド』の「Red Hat Ceph Storage クラスターのインストール」セクションを参照してください。
-
モニターの場合、
sample.mons.yml
ファイルからmons.yml
ファイルを作成します。 -
OSD の場合は、
sample.osds.yml
ファイルからosds.yml
ファイルを作成します。 -
クラスターは、
sample.all.yml
ファイルからall.yml
ファイルを作成します。
『インストールガイド』の説明に従って設定を変更します。
また、「Ceph Object Gateway のインストール」を参照して、sample.rgws.yml
から rgws.yml
ファイルを作成します。
- 注記
-
前述のファイルの設定は、
ceph_conf_overrides
の設定よりも優先される場合があります。
mons.yml
ファイル、osds.yml
ファイル、または rgws.yml
ファイルに、対応する値を使用しない設定を設定するには、all.yml
ファイルの ceph_conf_overrides
セクションに構成設定を追加します。以下に例を示します。
ceph_conf_overrides: global: osd_pool_default_pg_num: <number>
設定ファイルセクションの詳細は、「設定ファイル構造」を参照してください。
Ansible 設定ファイルで Ceph 構成設定を指定することと、Ceph 設定ファイルでどのようにレンダリングするかには、構文上の違いがあります。
RHCS バージョン 3.1 以前では、Ceph 設定ファイルは ini
スタイルの概念を使用します。Ceph 設定ファイルの [global]
等のセクションは global:
として指定し、独自の行にインデントする必要があります。特定のデーモンインスタンスの設定セクションを指定することもできます。たとえば、all.yml
ファイルの ceph_conf_overrides
セクションに osd.1:
を追加すると、Ceph 設定ファイルの [osd.1]
としてレンダリングされ、このセクションの下にある設定は osd.1
のみに適用されます。
Ceph 構成設定は、スペースではなくハイフン (-
) またはアンダースコア (_
) が含まれ、等号 (=
) ではなく、コロン (:
) で終了するはずです。
Ceph クラスターをデプロイする前に、以下の設定を検討してください。Ceph の構成設定を行う場合、Red Hat は ceph-ansible
設定ファイルに値を設定することを推奨します。これにより、Ceph 設定ファイルが自動生成されます。
4.4.1. ジャーナルサイズの設定
Ceph クラスターのジャーナルサイズを設定します。Ansible などの設定ツールは、デフォルト値を持つ可能性があります。通常、ジャーナルサイズは同期間隔のプロダクト、低速のディスク、およびネットワークスループットを把握し、プロダクトを 2 倍します。
詳細は、Red Hat Ceph Storage 4 設定ガイドの「ジャーナル設定」セクションを参照してください。
4.4.2. バックフィルおよび復旧設定の調整
I/O は、バックフィルと復旧操作の両方による悪影響を受け、パフォーマンスの低下およびエンドユーザーの不満に繋がります。クラスターの拡張または復旧中の I/O 要求に対応しやすくするには、以下のオプションおよび値を Ceph 設定ファイルに設定します。
[osd] osd_max_backfills = 1 osd_recovery_max_active = 1 osd_recovery_op_priority = 1
4.4.3. クラスターマップサイズの調整
Red Hat Ceph Storage バージョン 2 以前では、クラスターに数千の OSD がある場合に、クラスターマップをダウンロードし、そのファイルサイズを確認します。デフォルトでは、ceph-osd
デーモンは以前の osdmaps を 500 個キャッシュします。重複排除を使用しても、マップはデーモンごとに大量のメモリーを消費する可能性があります。Ceph 設定ファイルでキャッシュサイズを調整すると、メモリー消費が大幅に削減される可能性があります。以下に例を示します。
[global] osd_map_message_max=10 [osd] osd_map_cache_size=20 osd_map_max_advance=10 osd_map_share_max_epochs=10 osd_pg_epoch_persisted_max_stale=10
Red Hat Ceph Storage バージョン 3 以降では、ceph-manager
デーモンが PG クエリーを処理するため、クラスターマップはパフォーマンスに影響しません。
4.4.4. スクラビングの調整
デフォルトでは、Ceph はライトスクラブを日単位で実行し、ディープスクラブを週単位で実行します。ライトスクラブは、オブジェクトサイズとチェックサムをチェックして、PG が同じオブジェクトデータを保存していることを確認します。時間の経過とともに、オブジェクトのサイズやチェックサムに関係なく、ディスクセクターが悪化する可能性があります。ディープスクラブは、そのレプリカと共にオブジェクトのコンテンツをチェックして、実際のコンテンツが同じであることを確認します。そのため、fsck
の方法で、ディープスクラブがデータの整合性を保ちますが、この手順ではクラスターに I/O のペナルティーを課すことになります。わずかなスクラビングは I/O に影響を及ぼす可能性があります。
デフォルト設定では、Ceph OSD が、ピーク動作時間や高負荷の期間などの不適切な時間にスクラブを開始できます。スクラブ操作がエンドユーザーの操作と競合する場合、エンドユーザーは遅延とパフォーマンスの低下を経験する可能性があります。
エンドユーザーのパフォーマンスの低下を防ぐために、Ceph は、スクラブを負荷の低い期間またはオフピーク時間に制限できるいくつかのスクラブ設定を提供します。詳細は、『Red Hat Ceph Storage Configuration Guide』の「Scrubbing the OSD」セクションを参照してください。
クラスターで日中に高負荷が発生し、深夜に低負荷が発生する場合は、スクラブを夜間に制限することを検討してください。以下に例を示します。
[osd] osd_scrub_begin_hour = 23 #23:01H, or 10:01PM. osd_scrub_end_hour = 6 #06:01H or 6:01AM.
時間制約がスクラブスケジュールを判断する効果的な方法ではない場合は、osd_scrub_load_threshold
の使用を検討してください。デフォルト値は 0.5
ですが、負荷が低い場合に変更できます。以下に例を示します。
[osd] osd_scrub_load_threshold = 0.25
4.4.5. objecter_inflight_ops
を増やします。
RHCS 3.0 以前のリリースでは、スケーラビリティーを強化するために、objecter_inflight_ops
をバージョン 3.1 以降のリリースのデフォルトサイズに増やすことを検討してください。
objecter_inflight_ops = 24576
4.4.6. rgw_thread_pool_size
を増やします。
RHCS 3.0 以前のリリースでは、スケーラビリティーを強化するために、rgw_thread_pool_size
のバージョンをバージョン 3.1 以降のリリースのデフォルトサイズに増やすことを検討してください。以下に例を示します。
rgw_thread_pool_size = 512
4.4.7. ガベージコレクション設定の調整
Ceph Object Gateway は、新規および上書きされたオブジェクトのストレージをすぐに割り当てます。また、マルチパートアップロードの一部も一部のストレージを使用します。
Ceph Object Gateway は、バケットインデックスからオブジェクトを削除した後に、削除されたオブジェクトに使用されるストレージ領域をパージします。同様に、Ceph Object Gateway は、マルチパートアップロードの完了後にマルチパートアップロードに関連付けられたデータを削除します。または、アップロードが非アクティブであるか、設定可能な期間完了に失敗した場合には、これを削除します。Red Hat Ceph Storage クラスターから削除されたオブジェクトデータをパージするプロセスは、ガベージコレクション(GC)と呼ばれます。
ガベージコレクション待ちのオブジェクトを表示するには、以下のコマンドを実行します。
radosgw-admin gc list
ガベージコレクションは、ストレージ管理者が Ceph Object Gateway をどのように設定するかに応じて、負荷の低いタイミングで継続的に実行するバックグラウンドアクティビティーです。デフォルトでは、Ceph Object Gateway はガベージコレクション操作を継続的に実行します。ガベッジコレクションの操作は Ceph Object Gateway の通常の機能であるため、特にオブジェクト削除操作では、ガベージコレクションの対象となるオブジェクトはほとんどの場合存在します。
一部のワークロードは、一時的または永続的にガベージコレクションのアクティビティーのレートをアウトプレートできます。これは、多くのオブジェクトが短期間保存され、その後に削除される、削除の多いワークロードが特に当てはまります。これらのタイプのワークロードでは、ストレージ管理者は、以下の設定パラメーターで、他の操作に関連したガベージコレクション操作の優先度を増やすことができます。
-
rgw_gc_obj_min_wait
設定オプションは、削除されたオブジェクトのデータをパージする前に待機する最小時間 (秒単位) です。デフォルト値は 2 時間(7200 秒)です。クライアントはオブジェクトを読み取る可能性があるため、オブジェクトはすぐにパージされません。削除で負荷が大きい場合、この設定は過剰なストレージを消費するか、パージする多数のオブジェクトが存在する可能性があります。Red Hat は、この値を 30 分以下の 1800 秒に設定しないことを推奨します。 -
rgw_gc_processor_period
設定オプションは、ガベージコレクションサイクルのランタイムです。つまり、ガベージコレクションスレッドが連続して実行されるまでの時間です。ガベージコレクションがこの期間よりも長く実行される場合、Ceph Object Gateway はガベージコレクションサイクルを再度実行する前に待機しません。 -
rgw_gc_max_concurrent_io
設定オプションは、削除されたデータをパージする際にゲートウェイガベッジコレクションスレッドが使用する同時 IO 操作の最大数を指定します。負荷が大きい場合には、この設定を多数の同時 IO 操作に増やすことを検討してください。 -
rgw_gc_max_trim_chunk
設定オプションは、単一の操作でガベージコレクターログから削除する鍵の最大数を指定します。大きな操作を削除する場合、それぞれのガベージコレクション操作中により多くのオブジェクトがパージされるようにキーの最大数を増やすことを検討してください。
Red Hat Ceph Storage 4.1 以降、ガベッジコレクションログからインデックスオブジェクトの OMAP をオフロードすると、ストレージクラスターのガべージコレクションアクティビティーのパフォーマンスへの影響が低下します。Ceph Object Gateway に新たな設定パラメーターが追加され、以下のようにガベージコレクションキューを調整します。
-
The
rgw_gc_max_deferred_entries_size
設定オプションは、ガベージコレクションのキューに遅延エントリーの最大サイズを設定します。 -
rgw_gc_max_queue_size
設定オプションは、ガベッジコレクションに使用する最大キューサイズを設定します。この値は、osd_max_object_size
からrgw_gc_max_deferred_entries_size
を引いた値から 1KB を引いた値よりも大きくすることはできません。 -
rgw_gc_max_deferred
設定オプションは、ガベージコレクションキューに保存された遅延エントリーの最大数を設定します。
これらのガベージコレクション設定パラメーターは、Red Hat Ceph Storage 4 以降を対象としています。
テストでは、50% の削除操作と 50% の書き込み操作など、均等にバランスの取れた削除/書き込みワークロードを使用すると、ストレージクラスターは 11 時間で完全にいっぱいになります。これは、Ceph Object Gateway のガベージコレクションの削除操作によるペースの保持に失敗するためです。この場合、クラスターのステータスは HEALTH_ERR
状態に切り替わります。並列ガベッジコレクションの調整可能パラメーターの設定項目の設定により、テストするストレージクラスターセットが大幅に遅延し、多くのワークロードに役立ちます。典型的な実際のストレージクラスターワークロードは、主にガベージコレクションによりストレージクラスターがいっぱいになる可能性は想定されていません。
管理者は、デプロイ後のランタイム時に Ceph の設定を変更することもできます。詳細は、「実行時に特定構成の設定」を参照してください。