ceph集群pg出现unfound objects处理办法

作者:【吴业亮】

博客:https://wuyeliang.blog.csdn.net/

在特殊的失败组合下Ceph会警告unfound objects。这意味着存储集群知道有些对象存在,但是却无法找到它的副本。

下面的例子说明这是怎么发生的,有1个PG他映射的的OSD是 1和2:

  • OSD 1挂掉
  • OSD 2单独处理一些请求
  • OSD 1运行
  • OSD 1和2重新peering,1上丢失的对象在队列中等待恢复
  • 在新对象之前被复制之前,OSD2挂掉

现在OSD 1知道一些对象存在,但是没有这个副本活的OSD。 这种情况下,到这些对象的IO将被阻塞,集群希望失败的OSD快速地回来。这时假设返回一个IO错误给用户是适当的。

修复建议:
1、启动停止的osd
首先,你应该确认哪些对象找不到了:

# ceph pg  3.39 list_missing 

[starting offset, in json]

{ "offset": { "oid": "",
    "key": "",
    "snapid": 0,
    "hash": 0,
    "max": 0},
"num_missing": 0,
"num_unfound": 0,
"objects": [
   { "oid": "object 1",
     "key": "",
     "hash": 0,
     "max": 0 },
   ...
],
"more": 0}

如果在一次查询里列出的对象太多, more 这个字段将为 true ,你就可以查询更多。
其次,你可以找出哪些 OSD 上探测到、或可能包含数据:

# ceph pg 3.39 query

"recovery_state": [
    { "name": "Started\/Primary\/Active",
      "enter_time": "2012-03-06 15:15:46.713212",
      "might_have_unfound": [
            { "osd": 1,
              "status": "osd is down"}]},

所有停止osd.1

2、如果还无法恢复,你可能只有放弃丢失的对象。执行如下命令回滚或删除对象:

ceph pg  {pgname}  mark_unfound_lost revert|delete
  • revert选项:回滚到对象的前一个版本
  • delete选项:完全删除这个对象

使用这个操作时注意,因为它可能是使预期存在这个对象的程序混乱。
列出带有丢失对象的PG的名字:

ceph pg {pgname} list_missing

举例:

[root@node2 ~]# ceph health detail | grep unfound
HEALTH_ERR 50 pgs backfill_wait; 3 pgs backfilling; 60 pgs degraded; 1 pgs inconsistent; 1 pgs recovering; 19 pgs recovery_wait; 60 pgs stuck degraded; 73 pgs stuck unclean; 41 pgs stuck undersized; 41 pgs undersized; recovery 126807/1654284 objects degraded (7.665%); recovery 186892/1654284 objects misplaced (11.297%); recovery 1/551428 unfound (0.000%); 1 scrub errors
pg 3.39 is active+recovering+undersized+degraded+remapped, acting [14,2], 1 unfound
recovery 1/551428 unfound (0.000%)
[root@node2 ~]# ceph pg 3.39 mark_unfound_lost  delete
pg has 1 objects unfound and apparently lost marking
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值