|
|
现在OSD 1知道一些对象存在,但是没有这个副本活的OSD。 这种情况下,到这些对象的IO将被阻塞,集群希望失败的OSD快速地回来。这时假设返回一个IO错误给用户是适当的。4 q$ h6 }% A7 V: J
6 U; {/ K* }, Z/ `
修复建议:
, `/ C7 L D) ]4 M* @* M2 n/ N1、启动停止的osd
2 G' i3 x- k9 r- B9 F' s- }首先,你应该确认哪些对象找不到了:2 W( h% A% n, j" C* r# q5 [( ?
; v! {) V+ f3 ~* m# ceph pg 1.d list_missing
. L) Z% l1 B" U, G! w" o, t3 k0 ]4 M3 I) O3 D
[starting offset, in json]
( S+ {. }8 \, L" w& U% V9 A9 Q/ a
{ "offset": { "oid": "",# d; r3 X: T$ ^# k
"key": "",
4 l8 \" u- g$ P7 f "snapid": 0,
0 }% K% w4 K/ \2 | "hash": 0,% I% G0 }+ y. Z& o& z$ _7 k
"max": 0},& K7 ]& ?% [8 f2 O
"num_missing": 0,- ~! n, p* Y- y) S: B$ F7 O
"num_unfound": 0,
5 w' q( h" q! \# o" k"objects": [
. Z' Z8 i4 n$ i3 u1 u { "oid": "object 1",
8 p$ ?8 ^ O3 G/ k, d "key": "",7 Q1 m1 `5 `1 c: Y
"hash": 0,
6 d6 t# A- I4 d/ v5 M3 U. { "max": 0 }, s' s; l8 t1 b( g, v
...* S4 T7 n* U; d/ ~( {* b
],
' |7 j0 R! D' G- z"more": 0}
7 l7 f6 d( t% N; p/ D
9 ]( h: l# z" U; s3 U, G如果在一次查询里列出的对象太多, more 这个字段将为 true ,你就可以查询更多。
5 s2 D- o1 j2 |" }! k( Z' N其次,你可以找出哪些 OSD 上探测到、或可能包含数据:
d8 t$ D, }1 F1 s. v
0 q8 r9 ^" n& o2 F9 K' |7 W- [6 z) ~# ceph pg 1.d query. p5 C, W) j) @! q# j
7 H5 s' ~" D4 N3 e" F: b* E"recovery_state": [
) j9 x. W# u% S3 ]3 h' m { "name": "Started\/Primary\/Active",
! K1 O1 k- Z/ G, Q0 V "enter_time": "2022-08-01 15:15:46.713212",
7 f7 [9 u& @& M# k _$ m1 f "might_have_unfound": [
- m& A& Q0 r7 f- G( ~' J { "osd": 1, }4 x8 t/ {2 l& C
"status": "osd is down"}]},# w+ R7 f, @6 V) \' I% t0 e
! ]& ^ b, J9 Z/ Z
所有停止osd.1
# K" M1 k( \5 d9 P+ F/ X5 m! _! T
2、如果还无法恢复,你可能只有放弃丢失的对象。执行如下命令回滚或删除对象:
! V" s+ Y* k- W1 V- E* M7 |0 R6 y$ U8 ~. S* {
ceph pg {pgname} mark_unfound_lost revert|delete; w$ c- o( a$ @8 C
- q% ~: L# @; q$ j9 F1 crevert选项:回滚到对象的前一个版本8 P$ L4 h$ b; R1 `- f/ T2 E p
delete选项:完全删除这个对象
7 N2 k1 X6 v5 C6 _! i3 Q使用这个操作时注意,因为它可能是使预期存在这个对象的程序混乱。 @) Y; L# V* [& z, S
列出带有丢失对象的PG的名字:
0 ~/ m7 G8 b4 f$ B' T& W% G$ b# V6 ~( k7 |
ceph pg {pgname} list_missing
0 s# `0 ^. T" i# G4 }! G
/ o" R3 a' F" |) p, F举例:
5 R% p4 J+ l' k& `. H6 {6 j* q! m) H9 m' a
[root@node2 ~]# ceph health detail | grep unfound
4 u3 @: q1 ]' \# e( C/ p4 SHEALTH_ERR 50 pgs backfill_wait; 3 pgs backfilling; 60 pgs degraded; 1 pgs inconsistent; 1 pgs recovering; 19 pgs recovery_wait; 60 pgs stuck degraded; 73 pgs stuck unclean; 41 pgs stuck undersized; 41 pgs undersized; recovery 126807/1654284 objects degraded (7.665%); recovery 186892/1654284 objects misplaced (11.297%); recovery 1/551428 unfound (0.000%); 1 scrub errors/ f/ k. {! ?+ e$ J0 f i) m8 [
pg 3.39 is active+recovering+undersized+degraded+remapped, acting [14,2], 1 unfound
; E R$ b3 j& y- p' |+ g2 K1 i4 wrecovery 1/551428 unfound (0.000%)
8 H M4 x f: I; H
' _8 L7 k- M( b ]' ]) B0 \[root@node2 ~]# ceph pg 1.d mark_unfound_lost delete7 O3 h' X+ x: Q8 n5 N
pg has 1 objects unfound and apparently lost marking5 |3 K2 O- p( L6 h
————————————————
8 |* b5 l% z9 s+ [6 z0 h
1 ~6 Y7 _7 s$ w! A: E
& t: \' J. k. e( m% [7 n. B |
|