ceph-scrub-影响磁盘读写的解决方法

最近发现部分虚拟机发生宕机的报警,但其实这台机器是可以登陆的。查看该机器的系统情况,应该是磁盘读写缓慢触发了脚本告警。经过观察,发现在告警的时候,管理节点执行ceph osd perf,有部分osd延迟较高,ceph -w 观察有多个pg在做deep-scrub,所以怀疑跟着有关。具体分析一下scrub的相关参数

osd_max_scrubs

一个 osd daemon 同时进行scrubbing操作的数量,默认为1

osd_scrub_begin_hour

scrub 开始时间,根据业务情况,可以选择在业务不繁忙的时候执行。24小时制

osd_scrub_end_hour

scrub 结束时间,根据业务情况,可以选择在业务不繁忙的时候执行。24小时制

osd_scrub_min_interval

执行scrub的最小时间间隔,默认是1天,86400秒。也就是每天的osd_scrub_begin_hour-osd_scrub_end_hour之间执行scrub操作

osd_scrub_max_interval

执行scrub的最大时间间隔

osd_scrub_interval_randomize_ratio

随机执行scrub的概率,在osd_scrub_begin_hour-osd_scrub_end_hour之间会执行

osd_scrub_chunk_min

执行scrub的时候,锁住最小读写对象数量。 这个值越大,锁住的对象越多,越容易造成读写缓慢,影响业务系统,默认为5

osd_scrub_chunk_max

执行scrub的时候,锁住最大读写对象数量。 这个值越大,锁住的对象越多,越容易造成读写缓慢,影响业务系统,默认为25

osd_scrub_sleep

scrub 时间间隔 扫描完一组scrub,执行下一组扫描的间隔。值越小,扫描休息时间越短,默认为0

osd_deep_scrub_interval

osd 深度清洗间隔,默认为一周,604800秒

osd_deep_scrub_randomize_ratio

随机执行深度清洗的概率,可设置0.01 ,太大,清洗概率增大,也容易影响业务。这个不收osd_deep_scrub_interval影响,但会在osd_scrub_begin_hour-osd_scrub_end_hour之间执行

所以如果读写影响业务的话,可以考虑设置scrub的时间(比如晚上),调整scrub和deep-scrub的概率,调小min-chunk和max-chunk的数量