运维百科

Ceph故障:Possible data damage: 1 pg inconsistent

Ceph报错异常情况

1、收到异常情况如下:

HEALTH_ERR 37 scrub errors; Possible data damage: 1 pg inconsistent

2、查看详细信息

#ceph health detail
    health: HEALTH_ERR
            2 scrub errors
            Possible data damage: 1 pg inconsistent

3、预处理办法

    一般情况采用 ceph pg [pgid],但是经过观察,并不能解决。【本次使用此命令解决】

4、修复时日志:

2020-08-17 08:40:40.968640 osd.475 [ERR] 15.15c shard 414 soid 15:3a81d362:::3000000c795.0000008c:head : data_digest 0x4e8a410b != data_digest 0xffffffff from auth oi 15:3a81d362:::3000000c795.0000008c:head(29641'2593 client.2544731.0:563054 dirty|data_digest s 3563520 uv 2593 dd ffffffff alloc_hint [0 0 0])
2020-08-17 08:40:40.968645 osd.475 [ERR] 15.15c soid 15:3a81d362:::3000000c795.0000008c:head : repairing object info data_digest
2020-08-17 08:40:40.968649 osd.475 [ERR] 15.15c soid 15:3a81d362:::3000000c795.0000008c:head : data_digest 0x4e8a410b != data_digest 0xffffffff from auth oi 15:3a81d362:::3000000c795.0000008c:head(29641'2593 client.2544731.0:563054 dirty|data_digest s 3563520 uv 2593 dd ffffffff alloc_hint [0 0 0])
2020-08-17 08:40:48.245928 osd.475 [ERR] 15.15c repair 0 missing, 1 inconsistent objects
2020-08-17 08:40:48.245960 osd.475 [ERR] 15.15c repair 1 errors, 1 fixed
2020-08-17 08:40:52.594835 mon.BMCJ08103 [INF] Health check cleared: OSD_SCRUB_ERRORS (was: 2 scrub errors)
2020-08-17 08:40:52.594886 mon.BMCJ08103 [INF] Health check cleared: PG_DAMAGED (was: Possible data damage: 1 pg inconsistent)

5、原因分析

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

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

不一致性校验失败解决方案:ceph pg repair {pgid} 命令,是Ceph本身自带的修复工具。





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

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

参考处理办法

https://ceph.com/geen-categorie/ceph-manually-repair-object/
Just move the object away with the following:
stop the OSD that has the wrong object responsible for that PG
flush the journal (ceph-osd -i <id> --flush-journal)
move the bad object to another location
start the OSD again
call ceph pg repair 17.1c1

我的处理过程

找出异常的 pg,然后到对应的osd所在主机上修复。

root@CLTQ-064-070:~# ceph osd find 55{    "osd": 55,    "ip": "172.29.64.76:6817/789571",    "crush_location": {        "host": "CLTQ-064-076",        "root": "default"
   }
}

这里表示是主机CLTQ-064-076
然后到 进行修复

1、停止osd

systemctl stop ceph-osd@55.server

2、刷入日志

ceph-osd -i 55 --flush-journal

3、启动osd

systemctl start ceph-osd@55.server

4、修复(一般不需要)

ceph pg repair 1.dbc

5、查看pg所在osd

# ceph pg ls|grep 1.dbc
1.dbc 3695 0 0 0 0 12956202159 1578 1578 active+clean 2018-04-03 19:34:45.924642  2489'4678 2494:19003 [55,71,25] 55 [55,71,25] 55  2489'4678 2018-04-03 18:32:56.365327       2489'4678 2018-04-03 18:32:56.365327

可以确认集群恢复OK。PG还是在 osd.55上。


转载:

https://blog.51cto.com/3168247/2094597

https://blog.csdn.net/u010317005/article/details/79242794

本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

1
分享到:

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址