我是靠谱客的博主 甜甜小蘑菇,最近开发中收集的这篇文章主要介绍由于object大小与oi size大小不一致导致pg inconsistent,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、问题现象:
ceph -s 集群出现pg inconsistent错误,ceph pg repair无法修复,查看日志,报错信息如下:

log [ERR] : 3.f80 repair 1 missing, 0 inconsistent objects
log [ERR] : 3.f80 repair 2 errors, 1 fixed
log [ERR] : deep-scrub 3.f80 3/b1cc8f80/rbd_data.216f087229a7b1.000000000fb3e7/head on disk size (4194304) does not match object info size (2932736)

2、问题分析:
由于object info size大小是2932736,和磁盘上的object文件4M(4194304)不匹配,所以使用pg repair无法修复。需要使用rados truncate把oi size调整到4M再repair。

3、问题处理:
a、执行 ceph health detail 命令,找出 pg 不一致的 pg id 。
b、使用ceph pg repair <PG_ID> 并观察日志,找出对应的报错日志,根据报错日志确认object文件。
c、收集3个object文件的md5值。
d、使用cp -a 备份3个object文件,使用md5sum校验备份的数据。
e、确认出问题的卷无数据写入,执行 rados -p sata-00 truncate rbd_data.216f087229a7b1.00000000000fb3e7 4194304
f、使用 md5sum比对md5值,确认truncate之后,与之前是保持一致的。
g、确认object info size大小,执行如下命令:

执行 attr -l 'rbdudata.216f087229a7b1.00000000000fb3e7__head_B1CC8F80__3'  #找到所有包含ceph._的行,按以下方法追加到/tmp/0
执行 attr 'rbdudata.216f087229a7b1.00000000000fb3e7__head_B1CC8F80__3' -g ceph._ -q > /tmp/0
执行 attr 'rbdudata.216f087229a7b1.00000000000fb3e7__head_B1CC8F80__3' -g ceph._@1 -q >> /tmp/0  #如果没有@1就忽略这一步。
执行 ceph-dencoder type object_info_t import /tmp/0 decode dump_json  #确认size是4M

h、执行ceph pg repair <PG_ID>修复。
i、使用ceph -s确认集群状态恢复正常。

最后

以上就是甜甜小蘑菇为你收集整理的由于object大小与oi size大小不一致导致pg inconsistent的全部内容,希望文章能够帮你解决由于object大小与oi size大小不一致导致pg inconsistent所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部