ceph scrub error 解决方案
问题描述
控制节点重启后ceph集群报警如下:
ceph -s
7scrub error
原因分析
数据的不一致性(inconsistent)指对象的大小不正确、恢复结束后某副本出现了对象丢失的情况。数据的不一致性会导致清理失败(scrub error)。
CEPH在存储的过程中,由于特殊原因,可能遇到对象信息大小和物理磁盘上实际大小数据不一致的情况,这也会导致清理失败。
不一致性校验失败解决方案
查看健康统计
ceph health detail
pg is active+clean+inconsistent,acting[0,1,2]
PG修复
ceph pg repair <pg_id>
repair无法直接修复的解决方案
如果是对象信息大小和物理磁盘上实际大小数据不一致的情况,则无法直接通过ceph pg repair来修复,此时可通过以下方法解决:
查看健康统计
ceph pg repair <pg_id>
acting中是其对应存储的OSD的编号
定位清理失败的数据 先通过ceph pgrepair 修复,然后打开ceph –w查看失败信息:
其中形如rbd_data.xxxxxxxxxx即具体的对象数据名称。
截断数据
rados –p <poolname> truncate <object_name>length
ERR ---rbd_data.1823a2ae8944a. ---
disk size (4194304) does not match object info size (4173824) adjuseted for ondisk to (4173824)
从上述LOG的描述中可知,rbd_data.1823a2ae8944a在磁盘中的大小为4194304,但是对象信息的大小为41738234,因此要将其截成4173824的长度,操作命令如下
rados –p compute truncate rbd_data.1823a2ae8944a 4173824
重新修复数据
ceph pg repair <id>
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论