一、背景介绍
ceph 版本为L版,集群由于异常断电,导致文件丢失,ceph mon 数据文件store.db/目录下的sst 文件丢失,所以无法正常启动。
本集群有三台mon节点,其中有一台mon 节点的服务可以正常启动,另外两台无法正常启动。(ceph-mon 命令已经无法执行)
二、 解决过程
因为判断可能出现文件丢失导致的mon无法启动,所以决定重做另两台mon来解决问题
1、本环境中control3的mon是好的,control1和control2是坏的
在control3上导出monmap
[root@control3 ~]monmaptool --create --clobber --fsid 45b34caa-83b8-4c36-833b-544bba873456 --add control3 172.16.12.43:6789 --add control1 172.16.12.41:6789 --add control2 172.16.12.42:6789 /tmp/monmap
//导出monmap,好的节点写再前面,后面把所有的坏的节点加上即可。
2、将control1 和control2节点上的/var/lib/ceph/mon目录删掉,因为仅仅是文件丢失,并不是认证出现问题,原有的/etc/ceph/目录没有删除。
3、将keyring 文件传到其他节点上
[root@control3 ~]scp /var/lib/ceph/mon/ceph-control3/keyring root@control1:/tmp/
[root@control3 ~]scp /var/lib/ceph/mon/ceph-control3/keyring root@control2:/tmp/
[root@control3 ~]scp /tmp/monmap root@control1:/tmp/
[root@control3 ~]scp /tmp/monmap root@control2:/tmp/
4、重做control1和control2的mon
[root@control1 ~] ceph-mon --cluster ceph -i control1 --mkfs --monmap /tmp/monmap --keyring /tmp/keyring -c /etc/ceph/ceph.conf
[root@control1 ~] chown -R ceph:ceph /var/lib/ceph/mon
[root@control1 ~] systemctl restart ceph-mon@control1
-------------------------------------------------------------------------
[root@control2 ~] ceph-mon --cluster ceph -i control2 --mkfs --monmap /tmp/monmap --keyring /tmp/keyring -c /etc/ceph/ceph.conf
[root@control2 ~] chown -R ceph:ceph /var/lib/ceph/mon
[root@control2 ~] systemctl restart ceph-mon@control2
5、执行ceph -s