记录初始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,然后再执行命令
网友评论