Ceph osd 替换
从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
再次开启osd (开启后再次接收数据)
[root@admin ~]# ceph osd unpause
unset pauserd,pausewr
sudo ceph osd setcrushmap -i compiled-crushmap-openstack.20161230.add.ser16.map