1、背景:
Ceph集群会定时进行Scrub操作,在Ceph对接OpenStack的场景中,如果Ceph集群正在进行Scrub操作,会对Scrub的数据进行加锁,如果OpenStack使用Ceph作为后端存储的虚拟机此时也在访问该数据,就会导致OpenStack中使用Ceph作为后端存储的虚拟机可能会出现卡顿的现象。
1)Scurb是什么?
Scrub是Ceph集群副本进行数据扫描的操作,用以检测副本间数据的一致性,包括Scrub和Deep Scrub,其中Scrub只会对元数据信息进行扫描,相对比较快,而Deep Scrub不仅对元数据进行扫描,还会对存储的数据进行扫描,相对比较慢。
2)Scrub默认周期是多久进行一次?
OSD的Scrub默认配置策略是每天到每周(如果集群负载大周期就是一周,如果集群负载小周期就是一天)进行一次,时间区域默认为全天(0时-24时),Deep Scrub默认策略是每周一次。
2、案例实战
基于对业务运行时间的了解,晚上10点到第二天早上7点为业务闲时,可以进行Scrub操作,本文以此为例进行配置策略的制定。
场景:晚22点到第二天早上7点进行Scrub
先通过tell方式,让Scrub时间区间配置立即生效,具体操作如下:
配置Scrub起始时间为22点整:
ceph tell osd.* injectargs "--osd-scrub-begin-hour 22"