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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-8-5 02:00:28 | 显示全部楼层 |阅读模式
从一本书中了解到pg修复过程记录下:  e; A4 f  t& ?+ _
ceph 的scrub/deep  scrub  是集群自带的自我检测并修复的功能,能够实现对object 进行自我修复,下面来试试手动修复。
5 K8 N, T) }, p0 G4 y. e# b' A  S
首先找到PG所在位置:/ N1 f* B: s9 \9 i* ?5 X
[root@ceph-1 ~]# ceph health detail% ^" |% J" j4 ?! Z$ J( d( m
HEALTH_ERR  1 pgs inconsistent; 2 scrub errors" n7 Y5 E3 a9 U- E6 q7 a* W. C7 h
pg 16.1c2 is active_clean_inconsistent ,acting  [2,5,10]
- i$ U2 A6 Y; d. y  l$ W2 scrub errors
, q; \7 ]* x5 N8 G8 a6 ?: f( J0 v& e' ^0 H0 x* J8 |
2 B1 f; X8 W6 u& Z+ D- O0 |
如上所示,PG 16.1c2 当前的位置在OSD 2 5 10 上。
/ I$ ~, O! x$ o/ K: l- A这时可以直接通过ceph pg repair 16.1c2  直接检测并修复,下面我们可以来挖得更深入点。% D* }2 j+ M$ t; j3 {% F9 r3 \

2 P7 i$ M  c# f- s' x4 [再次 找到问题所在- Z1 B- _8 j' C/ F8 _
   在相应的OSD日志里,找到错误的提示,如  grep -Hn  'ERR' /var/log/ceph/ceph-osd.2.log 。如果日志已经被切割了,用Zgrep 代替
' ^3 N  A& ?& n% aZgrep 可以对已经压缩的文件进行正则匹配。
! X  T' I9 h6 s3 d
( z- H9 N/ {- A7 I9 R/ W5 @. wlog [ERR] :   16.1c2 shard 2: soid 98cbb1c2/rb.0.09213.253e1f29.00000001232c/head/ /16  digest 0 != known digest  3607295895* P; r* _$ U  @  j; j
log [ERR] :   16.1c2 shard 5: soid 98cbb1c2/rb.0.09213.253e1f29.00000001232c/head/ /16  digest 0 != known digest  3607295895  q+ N. P- s, Z! O3 T

/ b; `5 e8 r1 r' _3 q
$ V0 ]. G7 R3 Q9 X7 h从日志看,object 的摘要(digest)本应该为3607295895 ,但实际却是0。
! S2 i) d) |& Q: u  j0 `, S
% S* _. B  t: L* [2 B3 X
: R4 @3 i. H- v4 {/ n最后 找到对象
" K; \8 i7 \% z# q& i从日志里,我们已经获得如下信息- J: M4 E8 B7 Z! |8 ?3 K
  E3 ~! w, l0 b5 g: U3 r: S
  问题PG是  编号为16.1c2  。
" e: E) u5 i* h! b5 Y' s  osd的ID是2
4 B$ K8 U3 {3 K3 w+ N6 }+ V+ ]4 g  object名字是rb.0.09213.253e1f29.00000001232c
' ]4 P7 [, \; P# T0 z2 Z, Y1 a" X$ U* i- s5 u( \8 I
接下来我们找到object 的具体文件所在的位置。
8 @2 f1 b0 A. ~' q* a7 q$ [$ f' P1 n/ p1 P+ I( C" f
[root@ceph-2 ~]# find /var/lib/ceph/osd/ceph-2/current/6.17b_head/ -name 'rb.0.09213.253e1f29.00000001232c*' -ls1 X, v0 E& L4 y  k% X

5 v& p8 m6 V  Q9 }; k33581488    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
, e" A* P% q# c3 e0 @6 b+ g3 `3 P
  H$ r! O; E4 ^, x3 f, B& j, _& {
下面可以做这样的事情:
+ P; S1 F+ i5 G7 b: u, c  在每个系统上检测一下这个object的大小" c' [( H4 w% u+ N9 F) g
  在每个系统上校验胰一下这个object 的MD5值
, V, w3 g3 N6 g1 E- }5 H8 @- h+ c! e' y' u2 K: x

: z' o! e8 X( Q% W$ Q修复问题:) X8 l% Y* B  H% f- }
  修复步骤如下:+ k! D  O: j7 o3 j/ ^
    停止所有错误object的osd进程。
# p+ U6 C( E/ N: S1 o# q    日志同步到磁盘  ceph-osd-i <osd ID> --flush-journal。  S8 F" t. s" }4 u9 A7 A
    移出有错误的object。
: }! @" y- e2 m- e2 s    启动OSD进程。  v6 e0 w3 M% p8 N2 J$ ^
    调用ceph pg repair 16.1c2 3 b4 w) o2 }* M+ E9 B1 j8 x+ t
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:05 , Processed in 0.016469 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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