找回密码
 注册
查看: 582|回复: 0

pg修复 ceph之pg修复 过程记录

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-8-5 02:00:28 | 显示全部楼层 |阅读模式
从一本书中了解到pg修复过程记录下:  |0 x" @% T0 o3 L& D
ceph 的scrub/deep  scrub  是集群自带的自我检测并修复的功能,能够实现对object 进行自我修复,下面来试试手动修复。
5 l; y0 {0 o7 ?+ i. c
$ D' ~, k% J& M, d# X: t( _& c首先找到PG所在位置:# c, d4 p9 P. Q. s6 w) o  F
[root@ceph-1 ~]# ceph health detail
4 f# Z; @/ [+ CHEALTH_ERR  1 pgs inconsistent; 2 scrub errors
# g! o- k# b% {( ]/ ^pg 16.1c2 is active_clean_inconsistent ,acting  [2,5,10]
* @9 y' E. @8 P! }% D: |, e2 scrub errors/ q& n2 C3 T, s# v/ P7 I4 C9 I

- P2 f; d! L" S
, q7 N0 i' x- X; L& Z如上所示,PG 16.1c2 当前的位置在OSD 2 5 10 上。
) Q- k& s+ V& o- C! z这时可以直接通过ceph pg repair 16.1c2  直接检测并修复,下面我们可以来挖得更深入点。" J9 k' Z( t  s, S) L

. k' n, O3 T/ W/ [) l5 I再次 找到问题所在
5 S; }4 W: [' X% m- ^& s   在相应的OSD日志里,找到错误的提示,如  grep -Hn  'ERR' /var/log/ceph/ceph-osd.2.log 。如果日志已经被切割了,用Zgrep 代替4 v. N3 Y7 i1 }) o: ]5 J( D
Zgrep 可以对已经压缩的文件进行正则匹配。$ A& U# l* o; A: ?5 v! X! w7 u
5 k; W3 o) X9 P* x# a! ^# u8 W
log [ERR] :   16.1c2 shard 2: soid 98cbb1c2/rb.0.09213.253e1f29.00000001232c/head/ /16  digest 0 != known digest  3607295895/ \6 C4 S6 ]. v
log [ERR] :   16.1c2 shard 5: soid 98cbb1c2/rb.0.09213.253e1f29.00000001232c/head/ /16  digest 0 != known digest  36072958956 |, a4 A) f, \) [

# T/ {6 O% w1 Q# A" C
9 W, C& R/ x8 h6 Z8 [" D0 P% w从日志看,object 的摘要(digest)本应该为3607295895 ,但实际却是0。
2 q; J! x/ |% Z; r" \) T* N7 K+ E5 j! C, S
7 |! z, R1 X+ d
最后 找到对象
+ l1 A3 c- k% @) A# q7 q1 z从日志里,我们已经获得如下信息- A5 j, y1 G- j8 Z, b- v, N/ h
7 O& H: y' I" e0 L2 ?% n7 a" Y+ ?
  问题PG是  编号为16.1c2  。, i, \- H; h# {; N  v- Z
  osd的ID是2
  r$ f* O' |+ Y/ z2 V6 |4 Y6 t- I0 T  object名字是rb.0.09213.253e1f29.00000001232c
( \  _6 i. ~/ I( z- U! N& y9 g  {; N  m" A8 `. N
接下来我们找到object 的具体文件所在的位置。' K7 B. `% L: L+ ~

% s( U" G1 g: [. N. I[root@ceph-2 ~]# find /var/lib/ceph/osd/ceph-2/current/6.17b_head/ -name 'rb.0.09213.253e1f29.00000001232c*' -ls
, p6 ?4 [% J2 z- p& Z7 S( n0 O% }0 ~. Q( P5 x0 Z' S- m4 v
33581488    0 -rw-r--r--   1 ceph     ceph            0 Jul 27 11:47 /var/lib/ceph/osd/ceph-2/current/16.1c2_head/DIR_C/DIR_1/rb.0.09213.253e1f29.00000001232c__head_58BCC1C1__11  ]: l/ b: H- R9 ]9 g7 t7 p9 m

# J$ B9 e& \, q& N; o& [8 W9 a9 \7 f% q. q/ p% S
下面可以做这样的事情:
+ g/ ?& R3 q. F) y  在每个系统上检测一下这个object的大小
' y: Y3 l: q, ]3 y& ~( k8 T+ G8 _  在每个系统上校验胰一下这个object 的MD5值( O" t9 m4 O: G8 O

* h7 U5 n' Y* d/ v, P' b  \) d, n/ {  p2 u6 o* X- B9 W1 R* x2 P5 T+ \
修复问题:
+ i9 S  h2 e1 I/ c2 w" i4 U9 f# q  修复步骤如下:3 z. r1 Z7 z5 C- }3 T5 L- L8 j6 |
    停止所有错误object的osd进程。
# m% q' ]$ j+ E- o% N4 @1 F    日志同步到磁盘  ceph-osd-i <osd ID> --flush-journal。) I% |( U8 p3 D) V1 `
    移出有错误的object。
- ?0 N$ A0 F. ^& _    启动OSD进程。
) h: e# h. z9 v    调用ceph pg repair 16.1c2 ( B( v/ b" S: b. M1 u& v' m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-11 23:02 , Processed in 0.017730 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表