記錄初始pg狀態
先記錄下初始pg現狀,防止osd服務down掉之后,主、從、歷史副本發生變化
ceph pg dump|grep incom > pgincom.info
ceph pg 1.4 query > 1.4query
停止pg對應osd
ceph osd set noout
systemctl stop ceph-osd@$OSD_NUMBER
導出備份pg和導入pg
查找歷史pg所在osd和其他副本pg所在osd,查看pg中的對象,先對比pg的主副本之間 pg里面的對象數 哪個對象數多 就把哪個pg export出來,然后import到對象數少的pg里面,選擇完整對象的pg導出,再導入到主pg中(導入前備份)
然后再mark complete
查看對象
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-69 --pgid 2.218 --op list
導出
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-69/ --pgid 2.218 --op export --file 2.218
導入
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-179/ --pgid 2.218 --op import --file 2.218
刪除pg
對于數據不完整的pg,實在無法修復的,執行刪除操作
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-179/ --pgid 2.218 --op remove --force
標記pg狀態為complete
修復完的pg進行cpmplete標記
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-179/ --pgid 2.218 --op mark-complete
啟動服務
systemctl start ceph-osd@$OSD_NUMBER
ceph osd unset noout
參考文檔
[1]https://docs.ceph.com/en/latest/man/8/ceph-objectstore-tool/
[2]https://ypdai.github.io/2018/07/26/ceph-objectstore-tool%E5%B7%A5%E5%85%B7/
[3]https://ceph.com/planet/%E5%A4%84%E7%90%86ceph-incompelete%E7%9A%84%E7%BB%8F%E9%AA%8C/
注意:Mount failed with ‘(11) Resource temporarily unavailable
解決:這個代表ceph-objectstore-tool工具使用時,data-path目錄指定的osd服務是運行的,需要先把osd服務down掉systemctl stop ceph-osd@$OSD_NUMBER,然后再執行命令