假设之前使用ceph-deploy创建了三节点的ceph环境

删除mon

ceph-deploy mon destroy 节点1 节点2

#修改pool副本数量

rados lspools|xargs -i ceph osd pool set {} size 1
rados lspools|xargs -i ceph osd pool set {} mini_size 1

修改ceph.conf,添加单节点配置

osd pool default size = 1
osd pool default min size = 1
osd crush chooseleaf type = 0

同步配置文件

ceph-deploy --overwrite-conf admin  节点1 节点2 节点3

重启服务

systemctl restart ceph-mgr.target
systemctl restart ceph-mon.target

ceph osd crush reweight osd.ID 0 把对应磁盘的osd的reweight调为0

ceph osd crush reweight osd.1 0

等数据恢复完成后

ceph osd crush reweight osd.2 0

等数据恢复完成后
#节点运行:systemctl stop ceph-osd.target
这一步是停对应的osd进程,需要到osd对应的机器上执行,且这条命令执行的前提是第一步pg状态都为active+clearn,因为当执行ceph osd crush reweight osd.2 0命令的时候ceph就自动将此osd上的数据迁移到其他osd上了

ceph osd out osd.ID (这一步是将osd标识变为out)
ceph osd crush remove osd.ID (通知mon删除此osd的crush视图)
ceph auth del osd.ID (删除认证)
ceph osd rm osd.ID (删除osd)

移除host:

ceph osd crush remove 节点1
ceph osd crush remove 节点2
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐