暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

ceph集群更换osd实践

原创 冯睿 2021-11-03
3592

背景:

经巡检,发现ceph集群存储节点osd故障。查询日志后,发现为硬盘损坏,需要更换损坏硬件,重新添加osd。

1osdtree.png

2medierror.png

正文:

以下为更换osd实施步骤:

1.确认故障osd与host对应关系

目标主机:存储控制节点

ceph osd tree | egrep 'down|host'

(或者直接使用osd tree查看)

1osdtree.png
损坏的osd为osd.207,对应host 172.16.0.63

2.检查ceph集群健康状态

确保当前集群健康状态为HEALTH_OK,且所有PG处于active + clean状态(否则可能会出现pg不一致的问题)
目标主机:存储控制节点

3cephs.png

3.查询并记录原来的 OSD 的 DATA 与 JOURNAL 对应关系

目标主机:需要处理的存储节点

4数据盘.png
sdj硬盘挂载异常,为故障盘

4journal对应关系.png
osd.207对应的日志盘(分区)为 /dev/sdb3

4.检查ceph参数

目标主机:存储控制节点

cat /etc/ceph/ceph.conf

确保 osd_max_backfills =1, osd_recovery_max_active = 1
5参数.png

5.配置ceph状态标志位

目标主机:存储控制节点
执行以下操作命令:

ceph osd set norebalance
ceph osd set nobackfill
ceph osd set noout
ceph osd set noscrub
ceph osd set nodeep-scrub

6.移除损坏的osd

目标主机:存储控制节点
替换 [id] 为需要移除的故障 osd id,此处应为osd.207
ceph osd crush reweight osd.[id] 0
ceph osd crush rm osd.[id]
ceph osd rm osd.[id]
ceph auth del osd.[id]

ceph osd crush reweight osd.207 0
ceph osd crush rm osd.207
ceph osd rm osd.207
ceph auth del osd.207

7.卸载该OSD对应的磁盘

目标主机:需要处理的存储节点

umount /dev/sdj1

如果该磁盘已无法识别,则检查目录有没有异常挂载(目录信息为“???”),存在则执行卸载目录操作。

ll /var/lib/ceph/osd/
umount -l /var/lib/ceph/osd/ceph-207

如步骤3图所示,该盘已经无挂载信息,则不需要操作。

8.更换损坏硬盘

此步骤可以直接更换硬盘,不需要对存储节点(服务器)进行关机;如果需要进入raid卡配置,则需要关机重启,不会影响现有集群,更换完成后启动服务器。

9.检查日志盘分区权限

ls -l /dev/sdb3

此处日志盘分区为步骤3查到的对应分区,权限应为ceph:ceph,若不是,则需要手动修改权限,否则osd服务启动不成功。

chown ceph:ceph /dev/sdb3

7chown.png

10.重新添加osd节点新硬盘至集群

方法一:在mon节点使用工具添加。
目标主机:mon节点
ceph-deploy --overwrite-conf osd prepare [hostname]:[数据盘]:[日志盘分区] --zap-disk
ceph-deploy osd activate [hostname]:[数据盘分区]

本文应执行如下命令

cd /root/ceph-cluster 
ceph-deploy --overwrite-conf osd prepare hdzwy1-osd-172-16-0-63:/dev/sdj:/dev/sdb3 --zap-disk
ceph-deploy osd activate  hdzwy1-osd-172-16-0-63:/dev/sdj1

方法二:在需要处理的存储节点直接添加
ceph‐disk prepare [数据盘] [日志分区] ‐‐zap‐disk ‐‐filestore
ceph‐disk activate [数据盘分区]
本文应执行如下命令:

ceph‐disk prepare /dev/sdj /dev/sdb3 ‐‐zap‐disk ‐‐filestore
ceph‐disk activate /dev/sdj1

11.检查ceph集群状态

目标主机:存储控制节点

ceph -s

加入OSD的2分钟内,会进行PG的remap操作,remap到新OSD上的PG会处于 peering状态,无法对外IO,故会对部分虚拟机造成慢请求。
如果处于peering状态的pg数量未减少,且慢请求一直持续,请执行回滚操作

12.移除 ceph 状态标志位

目标主机:存储控制节点
确认需要添加的 osd 添加完成且 pg peering 全部完成之后,执行以下操作

ceph osd unset norebalance
ceph osd unset nobackfill

13.移除剩余ceph状态标志位

待集群所有 pg 状态恢复为 active + clean 之后,执行以下操作

ceph osd unset noout
ceph osd unset noscrub
ceph osd unset nodeep-scrub

至此,ceph集群更换osd结束。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论