概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复