Ceph osd 替换

从crushmap中删除操作

  1. 调整osd的crush weight
ceph osd crush reweight osd.0 0.1

说明:这个地方如果想慢慢的调整就分几次将crush 的weight 减低到0 ,这个过程实际上是让数据不分布在这个节点上,让数据慢慢的分布到其他节点上,直到最终为没有分布在这个osd,并且迁移完成
这个地方不光调整了osd 的crush weight ,实际上同时调整了host 的 weight ,这样会调整集群的整体的crush 分布,在osd 的crush 为0 后, 再对这个osd的任何删除相关操作都不会影响到集群的数据的分布

  1. 停止osd进程
/etc/init.d/ceph stop osd.0

停止到osd的进程,这个是通知集群这个osd进程不在了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移

  1. 将节点状态标记为out
ceph osd out osd.0

停止到osd的进程,这个是通知集群这个osd不再映射数据了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移

  1. 从crush中移除节点
ceph osd crush remove osd.0

这个是从crush中删除,因为已经是0了 所以没影响主机的权重,也就没有迁移了

  1. 删除节点
ceph osd rm osd.0

这个是从集群里面删除这个节点的记录

  1. 删除节点认证(不删除编号会占住)
ceph auth del osd.0

这个是从认证当中去删除这个节点的信息

 

上面操作完成之后,已经将osd从crushmap中删除了osd节点,可以通过ceph osd tree 查看对应的osd节点是否已经删除

 

添加osd到crushmap中

 

添加ceph osd,必须在ceph-deploy节点上操作(172.16.205.103)

ssh root@172.16.205.103

su - ceph

cd ceph-deploy-dir/ 在此目录下执行下面命令操作

 

准备osd节点

ceph-deploy --overwrite-conf osd prepare ser16:/var/lib/ceph/osd/ceph-77

 

激活osd节点

ceph-deploy --overwrite-conf osd activate ser16:/var/lib/ceph/osd/ceph-77

 

查看ceph osd tree 此osd77 是否状态是up,如果没有,则重启77这个osd。启动之后。然后更新crushmap即可。

【当然也可以通过手动命令将对应的osd加入到crushmap】

 

更新crushmap

更新之前,可以先暂停ceph数据写入

 

暂停osd (暂停后整个集群不再接收数据)

[root@admin ~]# ceph osd pause

 

再次开启osd (开启后再次接收数据)

[root@admin ~]# ceph osd unpause

unset pauserd,pausewr

 

sudo ceph osd setcrushmap -i compiled-crushmap-openstack.20161230.add.ser16.map

posted @ 2017-12-14 09:54  schangech  阅读(1438)  评论(0编辑  收藏  举报