从crushmap中删除操作


调整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的任何删除相关操作都不会影响到集群的数据的分布

停止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中删除,因为已经是0了 所以没影响主机的权重,也就没有迁移了

删除节点

ceph osd rm osd.0

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

删除节点认证(不删除编号会占住)

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

 ceph osd getcrushmap -o crushmap.txt

crushtool -d crushmap.txt -o crushmap.new

crushtool -c  crushmap.new -o crushmap.map

ceph osd setcrushmap -i  crushmap.map

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

[root@admin ~]# ceph osd unpause

unset pauserd,pausewr

或者

ceph osd crush add osd.135 1.0 root=rc rack=rack-03 host=ceph-12