【CEPH】scrub error解决方案

问题描述



原因分析


        数据的不一致性(inconsistent)指对象的大小不正确、恢复结束后某副本出现了对象丢失的情况。数据的不一致性会导致清理失败(scrub error)。

        CEPH在存储的过程中,由于特殊原因,可能遇到对象信息大小和物理磁盘上实际大小数据不一致的情况,这也会导致清理失败。


不一致性校验失败解决方案


查看健康统计

ceph health detail

        结果示例:

扫描二维码关注公众号,回复: 1003542 查看本文章

        由上图可知pg编号8.39,8.22,8.14出现问题。


PG修复


ceph pg repair <pg_id>


repair无法直接修复的解决方案


        如果是对象信息大小和物理磁盘上实际大小数据不一致的情况,则无法直接通过ceph pg repair来修复,此时可通过以下方法解决:


查看健康统计


ceph pg repair <pg_id>

        结果示例:


        由上图可知pg编号8.39,8.22,8.14出现问题。acting中是其对应存储的OSD的编号


定位清理失败的数据


        先通过ceph pgrepair <pg_id>修复,然后打开ceph –w查看失败信息:提示如下:


        其中形如rbd_data.xxxxxxxxxx即具体的对象数据名称。


截断数据


rados –p <poolname> truncate <object_name>length

        例:


        从上述LOG的描述中可知,rbd_data.1823a2ae8944a在磁盘中的大小为4194304,但是对象信息的大小为41738234,因此要将其截成4173824的长度,操作命令如下

rados –p compute truncate rbd_data.1823a2ae8944a 4173824



重新修复数据


  ceph pg repair 8.39


        此时即可修复成功!

猜你喜欢

转载自blog.csdn.net/u010317005/article/details/79242794
今日推荐