|
|
当我们执行ceph health detail 命令时报错:
* ?' N& s9 f0 G8 r[root@mon1 ~]# ceph health detail
& B7 J- ?8 ^" A% kHEALTH_ERR 1 filesystem is degraded; 1 mds daemon damaged; noout flag(s) set; 1/16745475 objects unfound (0.000%); Degraded data redundancy: 2/33490950 objects degraded (0.000%), 1 pg degraded
' w: a" B3 s6 ? @" w& i: gFS_DEGRADED 1 filesystem is degraded' w# {4 @0 G* O8 e; s
fs cephfs is degraded$ D9 r8 L" ~( i2 k3 {
MDS_DAMAGE 1 mds daemon damaged
/ U/ x) C! b; ]; C8 i* z! o/ H" ^( G fs cephfs mds.0 is damaged, Q& K. \, X1 k7 w# I5 s" [
OSDMAP_FLAGS noout flag(s) set
" b$ g* o( K I- N. a) HOBJECT_UNFOUND 1/16745475 objects unfound (0.000%)" p3 Y8 n; s/ P- U" {2 F
pg 7.123 has 1 unfound objects; u+ {* A W9 P( [# F; I
PG_DEGRADED Degraded data redundancy: 2/33490950 objects degraded (0.000%), 1 pg degraded9 ?( b+ J/ r) ~" M3 |
pg 7.123 is active+recovery_wait+degraded, acting [5,15], 1 unfound$ [% k" Y7 ?4 M W3 i
- h$ }3 P- c& q/ ^) ], c$ _2 G确认哪些对象找不到了:
9 {( N1 c9 v+ Q2 P. S1 L[root@mon1 ~]# ceph pg 7.123 list_missing* W, s7 x+ Y) S' V; ~4 c. o! Z, v0 e
{
0 o$ G% `3 i6 v+ H. y; U5 U "offset": {
1 R. e' k; R6 |( y* {. s "oid": "",0 T( H" r: n2 j# T. l! n' M
"key": "",6 d5 Z& x& C4 g# H
"snapid": 0,3 h) b8 V) a6 \9 m% R$ N3 K2 E. b
"hash": 0," v) J+ v- R: B4 v; Q
"max": 0,
- \1 s v8 A" X4 \' U1 M "pool": -9223372036854775808,
8 U0 \9 v3 }* A( ` J0 H% D. S "namespace": ""+ d L& q% s' g) i
},
) e8 q5 l+ r; H; k$ ?( \& q9 C "num_missing": 1,
u# s" ~3 t% t "num_unfound": 1,. k# E- X: m9 o& d
"objects": [
( c, ?9 t; N# S3 N% l( w% { {( C1 m/ t( D$ W; K7 ~6 T% v
"oid": { W$ F @1 t; m5 ]
"oid": "1000b73777d.00000000",
Y, k, `) x' Q/ h "key": "",
- C; v: J9 F* r$ G1 ?2 E* X% x "snapid": -2,! }% a0 y: J$ {
"hash": 4108226851,9 L. D) @, g$ `% a) ~ y& [4 @7 H
"max": 0,
g) S2 \4 b2 ]+ d "pool": 7,9 e( j8 \3 I7 Z0 O+ ]
"namespace": ""
5 z7 V/ m* M% s },& ]5 h [" f9 ~( Z" H( z- o9 |0 r4 g
"need": "13279'1",
1 d: d) ?9 x/ p( `5 G# J. J3 ] "have": "0'0",2 J5 ]0 Y( p: a
"flags": "none",
! d# a! o$ O4 @& y "locations": []. O, X( H* c+ C" T l# s# S
}3 c" T2 S1 C, d" d
],2 K/ E0 b8 V" \! {
"more": false0 R, O' Y! `( n6 Y* @! l! N
}
Y5 C& Q9 }1 o
; n3 z3 Z+ L0 H; A' W5 C- v如果在一次查询里列出的对象太多, more 这个字段将为 true ,你就可以查询更多。
3 d) j( a8 C0 A5 \其次,你可以找出哪些 OSD 上探测到、或可能包含数据:
f/ D6 Z9 b, p9 s5 d4 C4 M! ^! d: m
1 X* q* N0 p( p: _! s4 A6 e
ceph pg 7.123 query! \2 x! A# y" i7 Q% h
4 g0 t5 a4 i' E- b# R" m2 i
4 }- ]5 U0 Y9 u" W
( l# N9 V* K2 f# j2 j* C$ w% x% M3 [
[root@mon1 ~]# watch ceph -s
+ |% c8 o4 S; X2 J还无法恢复,只有放弃丢失的对象。执行如下命令回滚或删除对象:& K& D4 o. i2 E: F7 n
" E$ d9 [( g6 G: N, h& T
ceph pg {pgname} mark_unfound_lost revert|delete
- w. M/ W! t7 K1 [8 n
& K6 ]: f: y" L. [& U6 c+ K- revert选项:回滚到对象的前一个版本
- delete选项:完全删除这个对象
& f3 M+ L9 F, y4 C
/ M0 @! G* k9 Y" D# F
+ D$ e1 _" y8 S这里采用删除的方式解决:
, S I' r8 C/ q[root@mon1 ~]# ceph pg 7.123 mark_unfound_lost delete
* j* x9 \7 n. ?. r* e: C& c. ypg has 1 objects unfound and apparently lost marking
0 e- T% M9 K/ R- Z2 D[root@mon1 ~]#
; o+ Z& D1 Z4 [7 f7 R8 f1 F4 x$ u" [/ F+ R' X$ r( W
+ o2 M0 n4 { _ |
|