删除OSD的正确方式
- 调整osd的crush weight
ceph osd crush reweight osd.0 0
说明:这个地方如果想慢慢的调整就分几次将crush 的weight 减低到0 ,这个过程实际上是让数据不分布在这个节点上,让数据慢慢的分布到其他节点上,直到最终为没有分布在这个osd,并且迁移完成。这个地方不光调整了osd 的crush weight ,实际上同时调整了host 的 weight ,这样会调整集群的整体的crush 分布,在osd 的crush 为0 后, 再对这个osd的任何删除相关操作都不会影响到集群的数据的分布。
- 停止osd进程
/etc/init.d/ceph stop osd.0 # 各个版本的停止命令有差异
停止osd的进程,这个是通知集群这个osd进程不在了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移。
- 将节点状态标记为out
ceph osd out osd.0
将osd退出集群,这个是通知集群这个osd不再映射数据了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移。
- 从crush中移除节点
ceph osd crush remove osd.0
这个是从crush中删除,因为OSD权重已经是0了 所以没影响主机的权重,也就没有迁移了。
- 删除节点
ceph osd rm osd.0 # 执行此步骤必须先停止相关服务进程
这个是从集群里面删除这个OSD的记录。
- 删除OSD认证(不删除编号会占住)
ceph auth del osd.0
这个是从认证当中去删除这个OSD的信息。
经过验证,此种方式只触发了一次迁移,虽然只是一个步骤先后上的调整,对于生产环境的的集群来说,迁移的量要少了一次,实际生产环境当中节点是有自动out的功能,这个可以考虑自己去控制,只是监控的密度需要加大,毕竟这个是一个需要监控的集群,完全让其自己处理数据的迁移是不可能的,带来的故障只会更多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步