czhtr 发表于 2019-2-2 09:46:11

ceph集群报错:HEALTH_ERR 1 pgs inconsistent; 1 scrub errors

  报错信息如下:
  # ceph health detail

  HEALTH_ERR 1 pgs inconsistent; 1 scrub errors;
  pg 2.37c is active+clean+inconsistent, acting
  1 scrub errors
  

  报错信息总结:
  

  问题PG:2.37c
  OSD编号:75,6,35
  

  

  执行常规修复:
  

  ceph pg repair 2.37c
  

  

  查看修复结果:
  

  # ceph health detail
  HEALTH_ERR 1 pgs inconsistent; 1 scrub errors
  pg 2.37c is active+clean+inconsistent, acting
  1 scrub errors
  

  问题依然存在,异常pg没有修复;
  

  然后执行:
  

  要洗刷一个pg组,执行命令:
  ceph pg scrub 2.37c
  

  ceph pg deep-scrub2.37c
  

  ceph pg repair 2.37c
  

  

  以上命令执行后均未修复,依然报上面的错误,查看相关osd 日志报错如下:
  

  2017-07-24 17:31:10.585305 7f72893c47000 log_channel(cluster) log : 2.37c repair starts
  2017-07-24 17:31:10.710517 7f72893c4700 -1 log_channel(cluster) log : 2.37c repair 1 errors, 0 fixed
  

  

  此时已经被坑了好久了,决定修复pg 设置的三块osd ,执行命令如下:
  

  

  ceph osd repair 75
  ceph osd repair 6
  ceph osd repair 35
  

  

  修复命令执行后等待一段时间,osd 修复完成,发现错误依然存在!!!!!!!!!此时想做下面两个操作,
  1:找到pg object信息,把主osd 上面的数据删掉,让后让集群修复;
  2:修改pg现在使用的主osd信息,现在是osd 75 ,改成别的磁盘(没找到方法修改);
  

  此时看到ceph社区的一个bug 信息:
  http://tracker.ceph.com/issues/12577
  

  发现有些尝试有人已经做过了,而且又是一个bug!!!!!!!!!!
  

  

  最后决定用一个最粗暴的方法解决,关闭有问题pg 所使用的主osd 75
  

  查询pg 使用主osd信息
  ceph pg2.37c query |grep primary
  

  "blocked_by": [],
  "up_primary": 75,
  "acting_primary": 75
  

  

  执行操作如下:
  systemctl stop ceph-osd@75
  此时ceph开始数据恢复,将osd75 上面的数据在其它节点恢复,等待一段时间,发现数据滚动完成,执行命令查看集群状态。
  

  # ceph health detail
  

  HEALTH_ERR 1 pgs inconsistent; 1 scrub errors
  pg 2.37c is active+clean+inconsistent, acting
  1 scrub errors
  

  看到上面的信息,心都要碎了!为啥还是这样?不报希望的执行以下常规修复!
  

  # ceph pg repair 2.37c
  'instructing pg 2.37c on osd.8 to repair
  

  然后查看集群状态:
  # ceph health detail
  HEALTH_OK
  

  

  药药彻克闹!好了。。。。。。。。啥也不说了,下班!
  




页: [1]
查看完整版本: ceph集群报错:HEALTH_ERR 1 pgs inconsistent; 1 scrub errors