假设之前使用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