记一次老版本incomplete pg处理过程

20 篇文章 0 订阅

老版本pg丢失,pg无法进入active+clean状态处理

背景

原集群版本0.94.5,三副本rbd池,由于硬盘故障导致硬盘a无法再次启动,后续由于操作流程问题,陆续out和remove掉了5块硬盘,等集群状态稳定后,发现有1 pg incomplete无法恢复

关键点

  • 该版本无ceph pg $pg.id mark_unfound_lost delete/revert等命令
  • 该pg query无任何返回,导致不知道stuck于哪个osd,且原先osd已经从crush中移除,无法执行lost动作
  • 该pg以及操作历史无法追溯,无法确保该pg最新的副本存在于哪个osd上,尝试通过objectstore tool进行导出导入,仍无法修复
  • 该版本ceph-objectstore-tool无mark complete等动作

尝试过的操作

  • export与import pg:会报错因为osdmap冲突导致当前acting set的osd无法启动
  • force-create:pg卡在creating阶段,重启osd后再次变成incomplete状态
  • remove掉所有中间阶段该pg的temp osd上该pg的数据,再次重建仍无法启动

最终解决

经过多次尝试,多方讨论后,发现无法选举权威pg或无法更新pg状态原因为该版本工具和命令太老,正常处理incomplete只要人为选举出来一个较新或者较大的pg数据作为权威pg,再执行mark complete进行peering即可。

最终从ceph社区中下载0.94版本中小版本较高的ceph-objectstore-tool,进行了导入和mark操作,该pg终于可以进入active状态,但obj会报存在部分obj unfound,使用tool直接删除这几个obj进行有损恢复后(确实无法找回),集群恢复ok状态

问题回溯

造成本故障主要原因存在多方面:

  • 短时间损坏了较多硬盘
  • 操作不规范,不应该同时进行多个硬盘的删除替换
  • 版本过老,部分工具、命令、处理经验无法使用
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值