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 设置策略(数据一致性校验)的主要内容,如果未能解决你的问题,请参考以下文章