【分析】Ceph数据一致性检查

来源:互联网 发布:英雄联盟mac版打不开 编辑:程序博客网 时间:2024/04/26 10:17

除了使用对象多副本,Ceph还通过Scrub 归置组(PG)来保证数据的完整性。在对象存储层,Ceph Scrub类似于fsck。针对每一个归置组(PG),OSD比较主副本和从副本,确保没有对象丢失和错误,捕获 OSD 缺陷和文件系统错误。OSD也能执行Deep Scrub:一般一周一次,通过读取数据和使用校验码来保证数据完整性,可以捕捉那些在轻度清洗过程中未能发现的磁盘上的坏扇区。。
*作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。*
Ceph Scrub对维护数据完整性很重要,但是会影响性能,可以通过如下参数对Scrub进行调整。

1.1 osd max scrubs

描述:一个Ceph OSD守护线程同时执行Scrub操作的最大数目
类型:32-bit int
默认:1

1.2 osd max begin hour

描述:一天中调度Scrub操作的下限时间
类型:0~24中的整数
默认:0

1.3 osd max end hour

描述:一天中调度Scrub操作的上限时间,与参数 osd scrub begin hour定义执行Scrub的时间窗口,但是只要归置组调度Scrub的时间间隔超过osd scrub max interval的值,无论是否在该时间窗口内,都会执行
类型:0~24中的整数
默认:24

1.4 osd scrub during recovery

描述:在recovery时允许scrub,如果设置了false,将禁用scrub或deep scrub,但是已经调度的将继续执行,将影响集群的性能
类型:Boolean
默认:true

1.5 osd scrub thread timeout

描述:scrub线程执行的最大时间(单位秒)
类型:32-bit Integer
默认:60

1.6 osd scrub finalize thread timeout

描述:scrub finalize线程运行的最大时间(单位秒)
类型:32-bit Integer
默认:60 * 10

1.7 osd scrub load threshold

描述:当ceph的负载超过阈值时,不在调度Scrub
类型:Float
默认:0.5

1.8 osd scrub min interval

描述:当ceph集群的负载比较低,执行scrub的最小时间间隔
类型:Float
默认:一天一次,7*60*60*24

1.9 osd scrub max interval

描述:执行scrub的最大时间间隔,无视负载
类型:Float
默认:一天一次,60*60*24

1.10 osd scrub chunk min

描述:一次Scrub操作要处理的最小chunk数
类型:32-bit Integer
默认:5

1.11 osd scrub chunk max

描述:一次Scrub操作要处理的最大chunk数
类型:32-bit Integer
默认:25

1.12 osd scrub sleep

描述:Scrub两个 Chunk组之间的时间间隔,增大该值会使得Scrub变慢
类型:Float
默认:0

1.13 osd deep scrub interval

描述:两次deep Scrub的时间间隔, osd scrub load threshold 不会应该该设定
类型:Float
默认:60*60*24*7

1.14 osd scrub interval randomize ration

描述:为 osd scrub min interval增加随机延迟,当调度下一个Scrub任务时,延迟是小于 osd scrub min interval * osd scrub interval randomized ratio的一个随机数,因此,默认设置的时间窗口为[1, 1.5] * osd scrub min interval.
类型:Float
默认:0.5

1.15 osd deep scrub stride

描述:执行deep scrub时的读的大小
类型:32-bit Integer
默认:512 KB. 524288

作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

原创粉丝点击