OSD PG scrub 参数控制流程分析

1. 前言


ceph 的scrub机制是校验数据是否损坏的一个机制,比如 静默数据损坏(Silent Data Corruption) 分为scrub 和 deep-scrub 两种。

scrub 会对集群性能产生一定的影响,一个方面是校验本身是一个计算过程,会占用系统cpu,内存资源,另一方面, scrub过程中会对PG加锁,会block读写请求,因此ceph制定了众多的scrub控制参数。

2. 常用配置参数


这里介绍一个查看任意参数描述的方法

ceph daemon [osd|mon|mds|mgr].xx config help 参数名

3. 参数控制流程分析


scrub 的控制参数有很多,这些参数是如何决定一个PG是否进行scrub的,如下是一个参数分析流程图

image

4. 源码分析


Ceph 版本: Luminous 12.2.5

5. 总结


scrub 在生产环境中对集群的影响比较大,可以通过合理的设置参数,避免在高峰期进行scrub,需要注意的是,如果一个pg在deadline之后会强制进行scrub,如果不想进行让集群进行scrub,最根本的方法是设置了 noscrub,nodeep-scrub 标签