目录
问题背景
ceph 集群出现 pg inconsistent,ceph pg repair 无法修复
osd 日志提示三个本地文件一致,但与 object info size 大小不一致
操作步骤
- 通过 ceph health detail,查看有问题的 pg
ceph health detail
- 找到错误的对象文件
ceph pg scrub [pg_id]
rados list-inconsistent-obj [pg_id]
# 输出中 rbd_data.xxxxxx.xxxx 为有问题的对象文件
3. 进入该 pg 所在的其中一个 osd 的对应 pg 目录,找到本地文件
cd /var/lib/ceph/osd/ceph-[osdid]/current/[pgid]_head
# 本地保存的文件不以rbd_ 开头,所以去掉 rbd_ 之后做模糊匹配
find ./ -name *data.xxxxxx.xxxx*
4. 将查到的拷贝到备份目录并重命名为对象文件
# cp 时使用 -a 连属性一起拷贝
# 此处注意,由于查询到的路径包含 \n 所以需要加反斜杠转移即修改 \n 为 \\n
cp -a [对象文件路径] /opt/[对象名]
5. 将备份的对象文件重新 put 到存储池
cd /opt/
# 存储池 id 为 pg id 的前缀 id,并通过 ceph osd pool ls detail 查询具体池名
rados put -p [存储池] [对象名] [对象名]
6. 再次对 pg 进行 repair
ceph pg repair [pg_id]
标签:文件,修复,osd,ceph,pg,id,inconsistent
From: https://www.cnblogs.com/xuning-xuning/p/17350247.html