6.3. スクラブ
Ceph は、オブジェクトの複数のコピーを作成するだけでなく、配置グループをスクラビングすることでデータの整合性を確保します。Ceph のスクラブは、オブジェクトストレージ層の fsck
コマンドに似ています。
各配置グループについて、Ceph はすべてのオブジェクトのカタログを生成し、各プライマリーオブジェクトとそのレプリカを比較して、オブジェクトの欠落や不一致がないことを確認します。
ライトスクラビング (毎日) では、オブジェクトのサイズや属性をチェックします。ディープスクラビング (毎週) は、データを読み込んでチェックサムでデータの整合性を確保します。
スクラビングはデータの整合性を保つために重要ですが、パフォーマンスを低下させる可能性があります。以下の設定を調整して、スクラブ動作を増減させます。
- osd_max_scrubs
- 詳細
- Ceph OSD ごとの同時スクラブ操作の最大数
- 型
- 32 ビット整数
- デフォルト
-
1
- osd_scrub_thread_timeout
- 詳細
- スクラブスレッドがタイムアウトするまでの最大時間 (秒単位)
- 型
- 32 ビット整数
- デフォルト
-
60
- osd_scrub_finalize_thread_timeout
- 詳細
- スクラブ最終スレッドがタイムアウトするまでの最大時間 (秒単位)
- 型
- 32 ビット整数
- デフォルト
-
60*10
- osd_scrub_begin_hour
- 詳細
-
軽いスクラブや深いスクラブを始めることができる最も早い時間。これは、スクラビングの時間枠を定義するために
osd scrub end hour
パラメーターと共に使用し、スクラビングをオフピーク時間に制限できるようにします。設定は、24 時間サイクルの時間を指定するために整数を取ります。たとえば、0
は午前 12:01 から午前 1:00 までを表し、13 は午後 1:01 から午後 2:00 までを表します。 - 型
- 32 ビット整数
- デフォルト
-
0
(午前 12:01 から 1:00)
- osd_scrub_end_hour
- 詳細
-
軽いスクラブや深いスクラブを始めることができる最も遅い時間。これは、
osd scrub begin hour
パラメーターとともに使用してスクラブタイムウィンドウを定義し、スクラブをオフピーク時間に制限します。設定は、24 時間サイクルの時間を指定するために整数を取ります。たとえば、0
は午前 12:01 から午前 1:00 までを表し、13 は午後 1:01 から午後 2:00 までを表します。end
時間は、begin
時間よりも大きくなければなりません。 - 型
- 32 ビット整数
- デフォルト
-
24
(午後 11:01 から午前 12:00)
- osd_scrub_load_threshold
- 詳細
-
最大の負荷。(
getloadavg()
関数で定義された) システムの負荷がこの数値よりも大きい場合、Ceph はスクラブを実行しません。デフォルトは0.5
です。 - 型
- 浮動小数点 (Float)
- デフォルト
-
0.5
- osd_scrub_min_interval
- 説明
- Red Hat Ceph Storageクラスターの負荷が低いときに、Ceph OSD をスクラブする最小の間隔 (秒単位)
- タイプ
- 浮動小数点 (Float)
- デフォルト
-
1 日 1 回。
60*60*24
- osd_scrub_max_interval
- 詳細
- クラスター負荷に関わらず Ceph OSD をスクラビングする最大の間隔 (秒単位)。
- 型
- 浮動小数点 (Float)
- デフォルト
-
1 週間に 1 回になります。
7*60*60*24
- osd_scrub_interval_randomize_ratio
- 詳細
-
比率を取り、
osd scrub min interval
およびosd scrub max interval
の間隔の間でスケジュールされたスクラブをランダム化します。 - 型
- 浮動小数点 (Float)
- デフォルト
-
0.5
。
- mon_warn_not_scrubbed
- 詳細
-
スクラブされていない PG について警告する
osd_scrub_interval
からの秒数。 - 型
- 整数
- デフォルト
-
0
(警告なし)。
- osd_scrub_chunk_min
- 詳細
-
オブジェクトストアは、ハッシュの境界で終わるチャンクに分割されています。チャンキースクラブの場合、Ceph はオブジェクトを 1 チャンクずつスクラブし、そのチャンクへの書き込みをブロックします。
osd scrub chunk min
設定は、スクラビングするチャンクの最小数を表します。 - 型
- 32 ビット整数
- デフォルト
-
5
- osd_scrub_chunk_max
- 詳細
- スクラブするチャンクの最大数
- 型
- 32 ビット整数
- デフォルト
-
25
- osd_scrub_sleep
- 詳細
- ディープスクラブ操作の間のスリープ時間
- 型
- 浮動小数点 (Float)
- デフォルト
-
0
(またはオフ)
- osd_scrub_during_recovery
- 詳細
- リカバリー時のスクラブを可能にします。
- 型
- ブール (Bool)
- デフォルト
-
false
- osd_scrub_invalid_stats
- 詳細
- 無効と判定された統計情報を修正するために、強制的に追加のスクラブを実行します。
- 型
- ブール (Bool)
- デフォルト
-
true
- osd_scrub_priority
- 詳細
- クライアント I/O に対するスクラブ操作のキューの優先順位を制御します。
- 型
- 32 ビット符号なし整数
- デフォルト
-
5
- osd_scrub_cost
- 詳細
- キューのスケジューリングのために、スクラブ操作のコストをメガバイト単位で表したもの。
- 型
- 32 ビット符号なし整数
- デフォルト
-
50 << 20
- osd_deep_scrub_interval
- 詳細
-
すべてのデータを完全に読み込むディープスクラビングのための間隔。
osd scrub load threshold
パラメーターは、この設定には影響を与えません。 - 型
- 浮動小数点 (Float)
- デフォルト
-
1 週間に 1 回になります。
60*60*24*7
- osd_deep_scrub_stride
- 詳細
- デープスクラブを実施する際の読み取りサイズ
- 型
- 32 ビット整数
- デフォルト
-
512 KB。
524288
- mon_warn_not_deep_scrubbed
- 詳細
-
スクラビングされていない PG について警告する
osd_deep_scrub_interval
からの秒数。 - 型
- 整数
- デフォルト
-
0
(警告なし)。
- osd_deep_scrub_randomize_ratio
- 詳細
-
スクラブが無作為にディープスクラビングになる変化 (
osd_deep_scrub_interval
が経過する可能性も) - 型
- 浮動小数点 (Float)
- デフォルト
-
0.15
または 15%。
- osd_deep_scrub_update_digest_min_age
- 詳細
- スクラブがオブジェクト全体のダイジェストを更新するまでに、オブジェクトが何秒経過していなければならないか。
- 型
- 整数
- デフォルト
-
120
(2 時間)。