6.3. 清理
除了生成多个对象副本外,Ceph 还通过清理放置组来确保数据完整性。Ceph 清理与对象存储层上的 fsck
命令类似。
对于每个放置组,Ceph 都会生成所有对象的目录,并比较每个主对象及其副本,以确保缺少对象或不匹配。
轻度清理 (每日) 会检查对象大小和属性。深度刮除(每周)读取数据并使用 checksum 来确保数据完整性。
清理对于保持数据完整性非常重要,但可能会降低性能。调整以下设置以增加或减少清理操作。
- 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 a.m. 到 1:00 a.m.,13 代表从 1:01 p.m. 到 2:00 p.m。 - 类型
- 32 位整数
- 默认
-
0
代表 12:01 到 1:00。
- osd_scrub_end_hour
- 描述
-
轻量或深度刮除可以开始的最完的小时。它用于
osd scrub start hour
参数来定义清理时间窗,并允许将清理限制为非高峰小时。此设置使用一个整数来指定 24 小时周期内的小时,其中0
代表从 12:01 a.m. 到 1:00 a.m.,13 代表从 1:01 p.m. 到 2:00 p.m。结束
小时必须大于开始
小时。 - 类型
- 32 位整数
- 默认
-
24
for 11:01 p.m. to 12:00 a.
- osd_scrub_load_threshold
- 描述
-
最大负载。当系统负载(由
getloadavg ()
功能定义)超过这个数值时,Ceph 不会进行刮除。默认为0.5
。 - 类型
- 浮点值
- 默认
-
0.5
- osd_scrub_min_interval
- 描述
- 当 Red Hat Ceph Storage 集群负载较低时,清理 Ceph OSD 的最小间隔(以秒为单位)。
- 类型
- 浮点值
- 默认
-
每天一次。
60*60*24
- osd_scrub_max_interval
- 描述
- 清理 Ceph OSD 所需负载时的最长时间(以秒为单位)。
- 类型
- 浮点值
- 默认
-
每周一次。
7*60*60*24
- osd_scrub_interval_randomize_ratio
- 描述
-
使用这个比率,在
osd scrub min interval
和osd scrub max interval
间随机化调度的刮除。 - 类型
- 浮点值
- 默认
-
0.5
.
- mon_warn_not_scrubbed
- 描述
-
osd_scrub_interval
后的秒数,以警告任何未清理的 PG。 - 类型
- 整数
- 默认
-
0
(无警告) 。
- osd_scrub_chunk_min
- 描述
-
对象存储被分区为以哈希界限结尾的块。对于块清理,Ceph 一次清理对象一个块,且对这个块的写入被阻止。
osd scrub chunk min
设置表示要清理的最小块数量。 - 类型
- 32 位整数
- 默认
-
5
- osd_scrub_chunk_max
- 描述
- 清理的最大块数量。
- 类型
- 32 位整数
- 默认
-
25
- osd_scrub_sleep
- 描述
- 深度清理操作之间休眠的时间。
- 类型
- 浮点值
- 默认
-
0
(或关闭) 。
- osd_scrub_during_recovery
- 描述
- 允许在恢复期间进行清理。
- 类型
- Bool
- 默认
-
false
- osd_scrub_invalid_stats
- 描述
- 强制执行额外的清理,以修复标记为无效统计数据。
- 类型
- Bool
- 默认
-
true
- osd_scrub_priority
- 描述
- 控制清理操作与客户端 I/O 的队列优先级。
- 类型
- Unsigned 32 位整数
- 默认
-
5
- osd_scrub_cost
- 描述
- 以 MB 为单位清理操作的成本,用于队列调度目的。
- 类型
- Unsigned 32 位整数
- 默认
-
50 << 20
- osd_deep_scrub_interval
- 描述
-
深度清理的时间间隔,即完全读取所有数据。
osd scrub load threshold
参数不会影响此设置。 - 类型
- 浮点值
- 默认
-
每周一次。
60*60*24*7
- osd_deep_scrub_stride
- 描述
- 在进行深度清理时读取大小。
- 类型
- 32 位整数
- 默认
-
512 KB.
524288
- mon_warn_not_deep_scrubbed
- 描述
-
osd_deep_scrub_interval
后的秒数,以警告任何未清理的 PG。 - 类型
- 整数
- 默认
-
0
(无警告) 。
- osd_deep_scrub_randomize_ratio
- 描述
-
清理的速率会随机变得深度清理(甚至在
osd_deep_scrub_interval
之前)。 - 类型
- 浮点值
- 默认
-
0.15
或 15%。
- osd_deep_scrub_update_digest_min_age
- 描述
- 在清理更新整个对象摘要前,旧对象需要有多少秒。
- 类型
- 整数
- 默认
-
120
(2 小时)。