Ceph集群缩容及相关故障处理的示例分析

63次阅读
没有评论

共计 2083 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍 Ceph 集群缩容及相关故障处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

引言

由于目前机器比较紧张,需要将我集群中的一批机器提供给其他业务使用,这时问题来了,集群机器的退出意味着数据要重新分布,数据迁移的过程中比较容易出故障。

处理过程处理测试 POOL 对应的机器

集群中有很多 POOL,有些 POOL 是客户数据,这非常重要;有些 POOL 是我测试用,这些 POOL 对应的 OSD 可以直接删除,即时集群报 pg 异常,也无需关心,在删除对应 OSD 后将对应 POOL 删除即可,相应的 pg 异常也消失。

注:为了避免关闭 OSD 的过程中发生数据迁移,请设置 norecover 标记。

ceph osd set norecover

删除对应主机上的所有 OSD 信息的命令如下:

killall -9 ceph-osd
for i in {108..119} 
do 
ceph osd out osd.$i; 
ceph osd crush remove osd.$i; 
ceph auth del osd.$i;
ceph osd rm $i; 
ceph auth del osd.$i;

ceph osd crush remove hostname removed item id -10 name  hostname  from crush map

处理业务需要的 POOL 对应的机器

对于业务用到的 POOL 分布在了 10 台机器上,现在要从这 10 台机器中释放出五台, 这需要涉及到数据迁移了。有三种办法进行处理。

方法一之设置 out

将要退出的机器依次设置为 out 状态。一台机器做完后做另外一台,由系统负责将数据迁走;

方法二之设置权重

将要推出的机器权重调整为 0,由系统负责将数据迁走;

方法三 构建新规则

构建新 group, 将要保留的机器放到新 group 下;

构建新 crushrule, take from newgroup;

将业务 pool 的规则设置为 new crush rule 下;

这是最快的办法,只涉及到一次迁移,等待数据迁移完毕后,就可以将不需要的 OSD 关闭并移除了。

处理后碰到的问题

症状表现,在集群状态中显示少量 PG 状态异常。active + remapped + backfilling active + remapped

[root@gnop029-ct-zhejiang_wenzhou-16-11 ~]# ceph -s
 cluster c6e7e7d9-2b91-4550-80b0-6fa46d0644f6
 health HEALTH_WARN
 2 pgs backfilling
 3 pgs stuck unclean
 recovery 24/2148593 objects misplaced (0.001%)
 norecover,noscrub,nodeep-scrub flag(s) set
 monmap e3: 3 mons at {a=101.71.4.11:6789/0,b=101.71.4.12:6789/0,c=101.71.4.13:6789/0}
 election epoch 446, quorum 0,1,2 a,b,c
 osdmap e69909: 120 osds: 120 up, 120 in; 3 remapped pgs
 flags norecover,noscrub,nodeep-scrub
 pgmap v8678900: 10256 pgs, 16 pools, 2763 GB data, 1047 kobjects
 7029 GB used, 197 TB / 214 TB avail
 24/2148593 objects misplaced (0.001%)
 10253 active+clean
 2 active+remapped+backfilling
 1 active+remapped
[root@ceph]# ceph pg dump_stuck unclean
pg_stat state up up_primary acting acting_primary
23.1c1 active+remapped+backfilling [59,37] 59 [76,84] 76
23.23b active+remapped [35,7] 35 [82,119] 82
23.221 active+remapped+backfilling [15,18] 15 [70,82] 70

后来我开启了 scrub 和 deepscrub,将所有 pg 扫描后就恢复为 active + clean。

在发生数据迁移时,有时候某些 osd 会因为负载过高,导致 osd 进程退出,这是需要做两方面工作:

调低 osd backfill 的线程数量,降低 osd 工作负载;

down 掉的 osd 即时恢复,要不会有很多 Pg 状态异常,osd 回复后这些异常的 pg 也会很快恢复正常;

以上是“Ceph 集群缩容及相关故障处理的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2083字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)