Ceph 集群 scrub 设置策略(数据一致性校验)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph 集群 scrub 设置策略(数据一致性校验)相关的知识,希望对你有一定的参考价值。

参考技术A 基本概念
1、什么是 Scrub
Scrub是 Ceph 集群副本进行数据扫描的操作,用于检测副本间数据的一致性,包括 scrub 和 deep-scrub。其中scrub 只对元数据信息进行扫描,相对比较快;而deep-scrub 不仅对元数据进行扫描,还会对存储的数据进行扫描,相对比较慢。

2、Scrub默认执行周期
OSD 的scrub 默认策略是每天到每周(如果集群负载大周期就是一周,如果集群负载小周期就是一天)进行一次,时间区域默认为全体(0时-24时),deep-scrub默认策略是每周一次。

配置scrub策略
为了避开客户业务高峰时段,建议在晚上0点到第二天早上5点之间,执行scrub 操作。

1、设置标识位
在任一monitor节点进行如下操作:

2、临时配置
先通过tell 方式,让scrub 时间区间配置立即生效,在任一monitor节点进行如下操作:

3、修改配置文件
为了保证集群服务重启或者节点重启依然有效,需要修改Ceph集群所有节点的配置文件 /etc/ceph/ceph.conf

添加以下区段配置:

注意: 该时间设置需要参考物理节点的时区设置

4、取消标识位

5、向 OSD osd-num 下达一个scrub命令. (用通配符 * 把命令下达到所有 OSD 。实测ceph 12.2.x版本不能加*)

6、设置 light scrub 周期

将osd_scrub_min_interval 和 osd_scrub_max_interval都设为4分钟,这里的单位是秒

7、通过命令手动启动scrub :

8、尝试 pg repair

9、(Deep)Scrub的相关配置选项

同前端IO和Recovery一样,Ceph通过控制PGScrub来间接控制Scrub的所有IO优先级。

ceph更换磁盘


正常状态:

技术图片

 

故障状态:

 

 技术图片

 

技术图片

 


 
实施更换步骤:
(1)关闭ceph集群数据迁移:
osd硬盘故障,状态变为down。在经过mod osd down out interval 设定的时间间隔后,ceph将其标记为out,并开始进行数据迁移恢复。为了降低ceph进行数据恢复或scrub等操作对性能的影响,可以先将其暂时关闭,待硬盘更换完成且osd恢复后再开启:
for i in noout nobackfill norecover noscrub nodeep-scrub;do ceph osd set $i;done
(2)定位故障osd
ceph osd tree | grep -i down
(3)进入osd故障的节点,卸载osd挂载目录
[root@node3 ~]# umount /var/lib/ceph/osd/ceph-5
(4)从crush map 中移除osd

技术图片

 


[root@node1 ~]# ceph osd crush remove osd.5
removed item id 5 name ‘osd.5‘ from crush map

(5)删除故障osd的密钥
[root@node1 ~]# ceph auth del osd.5
updated
(6)删除故障osd
[root@node1 ~]# ceph osd rm 5
removed osd.5

技术图片

 

7)更换完新硬盘后,注意新硬盘的盘符,并创建osd

技术图片

 

(8)在部署节点,切换为cent用户,添加新的osd
[cent@deploy ceph]$ ceph-deploy osd create --data /dev/sdd node3

技术图片

 

(9)待新osd添加crush map后,重新开启集群禁用标志
for i in noout nobackfill norecover noscrub nodeep-scrub;do ceph osd unset $i;done
ceph集群经过一段时间的数据迁移后,恢复active+clean状态

 技术图片

 

 技术图片

 

以上是关于Ceph 集群 scrub 设置策略(数据一致性校验)的主要内容,如果未能解决你的问题,请参考以下文章

ceph scrub

ceph scrub

ceph scrub error解决方案

Ceph源码解析:Scrub故障检测

【ceph】scrub&deep-scrub优化

ceph集群报错:HEALTH_ERR 1 pgs inconsistent; 1 scrub errors