一、背景介紹
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