找回密码
 注册
查看: 656|回复: 1

ceph mds模拟 数据恢复

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-8-5 09:29:06 | 显示全部楼层 |阅读模式
模拟删除mds 元数据恢复过程,
4 `9 R+ v; L" `, M测试环境ceph版本号:   ceph L版本:+ d7 b; @: I3 G. ~5 ?5 q; a1 r
[root@ceph-3 ~]# ceph -v
# b1 V6 v" T  ]ceph version 12.2.8-52.el7 (3af3ca15b68572a357593c261f95038d02f46201) luminous (stable)
( @7 Q) E, e  k  ~5 y7 U; V) B$ M! g1 ^( H9 Y/ @

7 x3 s& A) g+ G$ n* x检查osd的状态:" O$ L) R( X% ]6 V
[root@ceph-3 ~]# ceph osd tree
) F0 K& _" J# Y7 [! K9 `0 t) N9 A; zID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF
5 p9 \6 X0 K: ?7 W) |% L-9             0 host root                               # w! n- q  O( o8 Z1 ~* w7 [
-1       6.00000 root default                           
$ @6 e( b! c" D9 K2 [1 Z6 M% o- |% e, c-2       2.00000     host ceph-1                        
' [1 r& v( d" k" n3 _/ D 0   hdd 1.00000         osd.0       up  1.00000 1.00000
8 C% b/ S6 u' T! L4 E7 a 1   hdd 1.00000         osd.1       up  1.00000 1.00000
' T+ w$ @. o# T2 ~-3       2.00000     host ceph-2                        
1 K9 z( l; S; D+ p/ W 2   hdd 1.00000         osd.2       up  1.00000 1.00000 : V4 }0 h# W  K; `8 a: U' |/ ^
3   hdd 1.00000         osd.3       up  1.00000 1.00000
8 b* ^) r; W$ E% }# y4 |3 e3 K* Y# A5 x-4       2.00000     host ceph-3                        
( @! x9 Q3 z5 }! M# I+ F) R 4   hdd 1.00000         osd.4       up  1.00000 1.00000
3 q0 O) B+ }1 k2 c5 f 5   hdd 1.00000         osd.5       up  1.00000 1.00000
  q3 B/ }" k% k1 Y" z/ a# g
( m: M( s0 S4 @2 E: aceph 容量使用情况:. M; M" G2 N. O' [
[root@ceph-3 ~]# ceph df
: A$ s! E' H9 g* }GLOBAL:
9 ?! J+ v7 p) S6 @    SIZE       AVAIL      RAW USED     %RAW USED 2 G. s' ^! M) k1 Z' ^1 p
    585GiB     535GiB      50.2GiB          8.58 - }4 K+ s# z3 o+ y8 [
POOLS:9 U3 W  \6 I" @  X: B; {! V
    NAME         ID     USED        %USED     MAX AVAIL     OBJECTS
' X; c$ y: E6 u8 f7 M6 [: p) j& j    metadata     6      8.03MiB         0        167GiB          23
6 F  A, x5 t+ J/ C    fsdata       7      16.5GiB      8.96        167GiB        5016 ' f( p+ A9 p- I1 T% F7 l
    recovery     8      2.19KiB         0        251GiB          21
. |, c% i8 d% {  Y, Z( M* f6 o1 ^) f3 R
# \+ F  n  A* \: b, W; j6 e' r4 t
[root@ceph-3 ~]# ceph df
9 d. v7 I/ C( d) q0 ZGLOBAL:
! }: n6 ~: ]) |9 f  h, v+ s    SIZE       AVAIL      RAW USED     %RAW USED
3 f! |  y/ t) `& z) V" D; A    585GiB     535GiB      50.2GiB          8.58 0 t$ }8 F8 b2 W+ h) N$ e% p& B: \
POOLS:
9 D+ _/ G3 N8 {    NAME         ID     USED        %USED     MAX AVAIL     OBJECTS 6 c1 |# u* o1 q
    metadata     6      8.03MiB         0        167GiB          23 , F$ \- e: F" @- R7 g2 K
    fsdata       7      16.5GiB      8.96        167GiB        5016 9 G6 w* P$ Y/ o1 Q, X- M! Y& q( m
    recovery     8      2.19KiB         0        251GiB          21
$ ~% e3 W% x, ^8 n/ ^6 M9 m% C6 |4 ?" A! C9 p7 k9 ^" ?0 I' [

% V( a5 K( {0 l2 b: S2 n5 V0 ]8 x( V& L/ o  a& |2 j
查看metadata的数据记录:! m; U7 }5 g. V9 C0 j
[root@ceph-3 ~]# rados -p metadata ls8 k. X$ ]# d  X- _3 p2 G
601.00000000  C# i7 |5 d, T8 ]1 V
602.00000000- v" Q( W' Y% A8 z
600.00000000' ~2 h8 q7 g0 A" S6 G: G" d% S
603.00000000: {/ f7 h0 x7 u6 S- l) Y. m  j
1.00000000.inode4 O# ^+ l- \# M; U% A
200.00000000
2 P+ p5 z# r# d$ N2 c+ o200.00000001
' s, w  r/ L' Y606.00000000
3 A: r1 u* ~; j5 x  h9 L607.00000000
& C' Q0 y/ k" x; |8 ]' U608.00000000
# H; l: }% c6 }4 C* F# y6 S% g6 Y604.00000000; v+ N" b1 w, U/ Q7 p
500.00000000
% M! X5 ~/ G% s, \0 b4 v0 tmds_snaptable
* q, v7 B- j5 w$ G* v605.00000000' g- d4 W$ t4 [) z6 _: I
mds0_inotable
/ c2 X+ p; A3 U; f: \7 n0 C7 Z- y" Q100.00000000
/ }4 N/ L5 U( p' }3 u" E; Emds0_sessionmap
* K5 x, l6 d& {$ }% g200.000000037 t# e( T" R* F! U4 w
200.000000028 {; h+ I$ @" U* {
609.00000000+ v* ?4 O2 o$ k3 ^) B% B# n* b
400.00000000
1 J  k" r: T- `: y0 l; m- U) i  \100.00000000.inode- k* i3 H& }# V  I  k; w
1.000000009 o0 `/ z" ]! O& T1 T
' A& w5 R4 E+ N: q: ^
" ?, ~7 }6 ~' @- L4 |; r" G
模拟删除metedata pool池的源数据:7 b2 q  x' E( [0 u
[root@ceph-3 ~]# rados -p metadata ls |xargs -i rados -p metadata rm {}
) x7 Z1 n1 D- n) T# F( k: L  W, Z- q[root@ceph-3 ~]#( V5 `1 p, U) H
检查还在不在:4 P7 Y3 n! A- L+ I9 N& B
[root@ceph-3 ~]# rados -p metadata ls
- G9 ?" T. ?9 X- I; ^& U[root@ceph-3 ~]#+ R5 l/ b1 D" O4 F7 u

$ t9 B) R; G% n+ g( x
! N' A5 _& p+ P3 A: s1 w$ O检查状态:
2 A( i: ]9 W  p* R  Every 2.0s: ceph -s                                                                               Fri Aug  5 09:37:17 20228 F4 k" x* u% c$ e
  cluster:5 z. h5 F- x9 ]. L
    id:     57bf4711-2218-46af-99d6-9c68ae230ce10 S! d! B7 ]5 P. i. A
    health: HEALTH_OK' Y3 O( Y3 l2 b1 U# ^9 _
5 A+ f6 `6 h! Y
  services:! g' d2 @. f) T2 |) O& @, ?
    mon: 3 daemons, quorum ceph-2,ceph-1,ceph-3$ w6 M" H. T" L2 e0 ]( k; k
    mgr: ceph-2(active), standbys: ceph-1, ceph-3' G$ _- j2 e, L( V
    mds: filefs-1/1/1 up  {0=ceph-2=up:active}, 2 up:standby0 u6 B3 k4 t' p( m" @+ I; M
    osd: 6 osds: 6 up, 6 in
2 p; T$ Q/ n0 {" D
9 y! U- H$ a0 A/ R% O/ R  data:
) `" D) ~- A: W4 n    pools:   3 pools, 1280 pgs% M! {: P, C6 F5 I
    objects: 5.04k objects, 16.5GiB3 }: h# \0 B( Q' _( E
    usage:   50.1GiB used, 535GiB / 585GiB avail: D: e  m+ F: X
    pgs:     1280 active+clean
$ G4 b* q5 J' x7 ]4 J8 n9 V7 E4 R9 a5 f/ Z3 ^( o! a) i

- r% B, ^  t9 @4 O% d/ x( q# H看到metadata池里面没有对象了已经,重启下mds看效果,因为mds里面会缓存元数据信息,所以要重启下mds:( R- U, w: a. Y, n" r5 T' N
3 z2 Z; Y3 C  Q4 K: }
[root@ceph-3 ~]# ceph df
) X- i& i  L0 A. o( C4 EGLOBAL:
7 M' E4 J: z' I7 N( \5 u    SIZE       AVAIL      RAW USED     %RAW USED
) I+ i2 o9 _0 g% B" ^. m; x    585GiB     535GiB      50.1GiB          8.58 - t- x- Y1 D. j3 U& y
POOLS:% N/ u5 s* y5 B
    NAME         ID     USED        %USED     MAX AVAIL     OBJECTS
& E7 j! B' I+ g- R+ _8 v; {    metadata     6          0B         0        167GiB           0
! I* j0 U  ^  x0 i    fsdata       7      16.5GiB      8.96        167GiB        5016 : u- z( v5 k, _7 R
    recovery     8      2.19KiB         0        251GiB          21
  x, T0 m/ a* ^: g/ t检查ceph fs文件系统:9 M# [7 }8 _6 ]0 r8 ~  Z
[root@ceph-3 ~]# ceph fs status filefs - 0 clients2 T- }9 b+ a+ y2 Y# Q8 C0 ]3 ?
======4 n* P5 j: b/ m
+------+--------+--------+---------------+-------+-------+$ F+ Y( f! q4 O# b, h
| Rank | State  |  MDS   |    Activity   |  dns  |  inos |, a  A; T6 j3 q: f: Q
+------+--------+--------+---------------+-------+-------+- l6 O- l( V8 H5 a/ N% f
|  0   | active | ceph-2 | Reqs:    0 /s | 1001  | 1003  |
" x  I' L: r2 ]( j3 ~! v* f+------+--------+--------+---------------+-------+-------+
6 r& f$ G/ v+ V  R  t+----------+----------+-------+-------+! R; K9 h6 Z6 y$ e2 I( Z: j- V
|   Pool   |   type   |  used | avail |6 F8 o( [  B: w5 B  f
+----------+----------+-------+-------+
. v* Z; {, O, U4 |2 J| metadata | metadata |    0  |  167G |" [$ e" B" C9 ]7 D8 F- H
|  fsdata  |   data   | 16.4G |  167G |
7 c& o# ]3 n: u& O3 H2 F, A* L+----------+----------+-------+-------+
1 n8 U; r) s  A4 ]3 F
; T& E6 O. q6 P7 I2 L2 M/ H+-------------+
, ~- l6 j5 i$ }, T1 F| Standby MDS |9 Z4 u. ^6 P5 F/ G
+-------------+0 |: y2 ]! j) V' F$ ~7 }/ Z; x
|    ceph-1   |
/ q$ [& J) n+ e4 Q7 C5 B|    ceph-3   |
7 u2 y$ c! I. A2 r+-------------+
& e. X0 T) Y8 C; _MDS version: ceph version 12.2.8-52.el7 (3af3ca15b68572a357593c261f95038d02f46201) luminous (stable)- z6 O# J6 x& h6 O
[root@ceph-3 ~]#
$ ]7 W5 S, w: X% R6 \; [( F# p0 _1 L1 [- q' q1 b) U& h
重启mds服务:) c( B' H+ @! h$ Y" U3 ~
[root@ceph-2 ~]# systemctl restart ceph-mds@ceph-2.service , t9 }+ r, X" H& o  i4 y; O

* w8 P( p2 G# V' x  e4 l9 x9 C& R
查看ceph 的状态:3 s1 ?8 a( p; S; \5 u# q
- o3 ?7 t$ Y, A' x. e
[root@ceph-1 ~]#  ceph -s: p9 N7 V! ]6 H! ^: D7 {
  cluster:/ e% z' G) [7 ?% ~! R0 F5 I. ?
    id:     57bf4711-2218-46af-99d6-9c68ae230ce1
0 l4 @+ p+ o2 K( |    health: HEALTH_ERR) d  T" G5 O/ B
            1 filesystem is degraded  y- }. |0 n6 u3 S! n% {
            1 mds daemon damaged, t  f7 a2 C$ p" n

- Z- y1 g* u. B2 i% E; K2 B2 l  services:3 E' j, Y1 ^- v/ K  W" l
    mon: 3 daemons, quorum ceph-2,ceph-1,ceph-3" P2 x% j8 w. k; w) T8 T
    mgr: ceph-2(active), standbys: ceph-1, ceph-36 W9 Z7 i5 }$ o1 [" D9 `# Z
    mds: filefs-0/1/1 up , 3 up:standby, 1 damaged
* V: H1 F; x- E* u    osd: 6 osds: 6 up, 6 in
3 ]* E# c1 {6 Z+ j% g8 H2 q% K: |3 x& ^8 y6 ~0 ~: F
  data:
8 Q5 N& _' C0 r$ n( F    pools:   3 pools, 1280 pgs# `2 r- n: C. W. C8 ?) ~" V
    objects: 5.04k objects, 16.5GiB3 E/ O! S# j% q) t5 w6 t
    usage:   50.1GiB used, 535GiB / 585GiB avail0 x8 l4 m& x# {) z4 f
    pgs:     1280 active+clean2 C% [2 ]/ [& u
( b0 q5 K: u$ ]) n9 a5 L8 k. _
[root@ceph-1 ~]# systemctl restart ceph-mds@ceph-1.service 5 s1 i) J% Z. q/ P4 Z
[root@ceph-1 ~]#
' P% L9 t  \: W( ~$ Y2 R4 H( @1 ?/ s5 R- f( i4 \; ?
[root@ceph-3 ~]# systemctl restart ceph-mds@ceph-3.service
. _3 f8 r6 P, J# ~% V
- r$ g, U* N+ V3 Y! ~( n  ?[root@ceph-3 ~]# ceph fs status ' J: P0 O5 K# T
filefs - 0 clients, k) ^/ z5 T$ T; ^& w
======- s; l1 a0 {# k5 \) G2 M
+------+--------+-----+----------+-----+------+% H2 n: p& z+ I/ ]
| Rank | State  | MDS | Activity | dns | inos |: v6 k7 V+ D+ g
+------+--------+-----+----------+-----+------+
+ `# p6 `6 u( ]# O# U|  0   | failed |     |          |     |      |
, p' M& ^% O2 v/ V4 ^2 ?+------+--------+-----+----------+-----+------+, @" D2 @1 H8 Y+ E2 S* |7 A/ Q
+----------+----------+-------+-------+
; J8 E' t8 b: j( Q1 I|   Pool   |   type   |  used | avail |& Z6 P6 v; B: P3 p5 Q
+----------+----------+-------+-------+
5 M: I9 ~2 }+ M6 [- d| metadata | metadata |  112  |  167G |
( Z  o- [: R0 s2 y|  fsdata  |   data   | 16.4G |  167G |' Y6 }) _) l' `
+----------+----------+-------+-------+
& b: T5 p, W, U9 }1 E
2 d2 F( A' K% ]$ g( Y+-------------+
. C" M* n: r+ v| Standby MDS |
2 ?; t, {4 {! T3 a8 f+-------------+
! |* b: o+ s4 Z|    ceph-2   |9 `# b- M3 e/ b' C
|    ceph-1   |% t, |: a0 X3 u5 C) O
|    ceph-3   |
8 q3 ^5 f4 D8 ]5 v9 e' ]0 G6 h0 W# f+-------------+
% t) O' u/ _- v4 T/ L5 d; i8 iMDS version: ceph version 12.2.8-52.el7 (3af3ca15b68572a357593c261f95038d02f46201) luminous (stable)
  r4 `6 t0 U# e) p" G2 y8 G[root@ceph-3 ~]#/ y: q& r- X5 ~. \" N
看到集群现在不正常了,访问kc里面的数据卡住,说明数据已经无法正常读取了。9 ?/ V4 [6 J# k$ }! L9 s% R

( W3 {; W1 b; F7 h

: a+ D& @0 q" m0 w& O[root@ceph-3 ~]# mount -t ceph 192.168.120.31:6789:/ /mnt/mycephfs/ -o name=admin,secret=AQBH+tRiATMVCRAAdTQnt4IFUWD45zGEZQa7A==
3 I/ Z: L2 ~6 Dsecret is not valid base64: Invalid argument.
: W8 I7 Q6 H) w. e3 r8 [1 Y: qadding ceph secret key to kernel failed: Invalid argument.4 t9 q( U2 y; T+ i. T, d
failed to parse ceph_options
; W% r8 w3 ^  e) e0 Q. d, i
: t9 k, q* i2 `
[root@ceph-3 ~]# ceph  df detail 4 X6 h# _' M8 D8 M1 N& m1 r
GLOBAL:
% {2 `3 f: v* A' @* ~    SIZE       AVAIL      RAW USED     %RAW USED     OBJECTS % \0 ?* u5 y8 P1 ~# a% D
    585GiB     535GiB      50.2GiB          8.58       5.04k
: [. M3 A7 ?. T/ M+ pPOOLS:+ P7 f& k/ _  n! Q& ]6 Q  }- e
    NAME         ID     QUOTA OBJECTS     QUOTA BYTES     USED        %USED     MAX AVAIL     OBJECTS     DIRTY     READ        WRITE       RAW USED + O# m9 g, ~$ ]& E/ e. w; Z
    metadata     6      N/A               N/A                112B         0        167GiB           2         2        176B     1.25KiB         336B % J: J6 ~8 ^7 J' {5 |% Q8 i
    fsdata       7      N/A               N/A             16.5GiB      8.96        167GiB        5016     5.02k     3.19KiB     4.91KiB      49.4GiB
2 A4 g# e3 N2 @3 z    recovery     8      N/A               N/A             2.19KiB         0        251GiB          21        21         32B         44B      4.39KiB
# ]* ?4 H8 q7 s. i, l+ x: j: K[root@ceph-3 ~]#
0 i) z8 W$ W/ J4 @: f

6 f/ g+ V7 r$ @' {) U  k; [/ p) L+ X开始恢复
使用一开发者编写的py脚本(文末给出了源码)恢复,把脚本放到集群任意一台节点上执行:
( O+ a% V) u6 g5 ]
[root@ceph-3 ~]# python recovery_cephfs.py -p fsdata
, N/ }2 E# I8 L/ u9 W) N* n- |4 B, |3 b
在日志里看到的问题:
0 l; L# q7 c; o2022-08-05 09:59:03 : INFO  exec_cmd():: cmd: for obj in $(rados -p fsdata ls);do rados -p fsdata get ${obj} /root/recoveryobjs/${obj};done8 a* ^/ P% `1 r- P2 f% V5 E! m, v- x

2 o/ g! @6 b4 f7 ^
* \9 u* G( M, q8 C8 c* }" a! s1 ~
[root@ceph-3 ~]# tail -f recovery.log ) n- @& O/ K& d4 ?8 I- P
            7
& o7 L( j( [; `; Y; ?5 _1 v        ],9 A7 ~4 K- r8 M7 R* P3 ]$ Z
        "data_pools": [
/ l8 A5 o, i. y% Q            "fsdata"
; E7 u  W0 J" r; c6 I! |$ T        ]
/ M3 Y! D! S( Z2 J+ l    }2 G5 \, _% M! x+ ^0 x, {) a  B
]3 E4 q% O( Q8 M" l- I
, code: 03 R- H9 f, ^; c# Z7 w  v. C7 g" [) m
2022-08-05 09:59:03 : INFO  === main():: recovery start& Q& e9 H. p4 F( Y( p* e- B; a
2022-08-05 09:59:03 : INFO  exec_cmd():: cmd: for obj in $(rados -p fsdata ls);do rados -p fsdata get ${obj} /root/recoveryobjs/${obj};done
6 ]; Q, Z" k( |$ i3 k6 u4 ?& ?4 s. j

- n  J" J9 J( X9 c3 g9 G. g2 V# b2022-08-05 10:35:36 : INFO  exec_cmd():: cmd exec out: , code: 06 c7 I" S" N* Q: H5 X
2022-08-05 10:35:36 : INFO  exec_cmd():: cmd: ls /root/recoveryobjs: y( v4 d/ B  i) T: X  Q/ o
3 R! `! v4 Z( h' ^
- p% Q4 G- ~# u; e9 C, t4 y) z

9 \4 Y( A8 U- `4 H
- |/ R9 t# ]9 g; h, w: [6 G

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-8-5 13:46:39 | 显示全部楼层
查看恢复出来的文件在recoveryfiles文件夹下:
' l) `% S- E/ b& z/ E: U- `) I) `4 J5 D+ }( `% ~
[root@ceph05 rcy]# ll recoveryfiles/1 _8 {& i  Q! H$ D
total 12364# g4 p) ]3 q9 e* p. V9 @
-rw-r--r-- 1 root root 5985243 Mar 15 13:57 10000000000-pdf& J5 v, y/ ]% k' ]# X/ H  ~8 w
-rw-r--r-- 1 root root    3189 Mar 15 13:57 10000000001-text
& X% [, s  D( E' O% G" x-rw-r--r-- 1 root root   12494 Mar 15 13:57 10000000002-png
7 W3 A% v9 X" d/ b- F! @-rw-r--r-- 1 root root   31232 Mar 15 13:57 10000000003-text
, `: D: M3 ^2 D: i! f$ [6 D- o-rw-r--r-- 1 root root   20593 Mar 15 13:57 10000000004-excel% p' i$ M7 L% c3 ?+ d1 ]
文件名格式为”文件在cephfs里面的inode-该文件可能的类型“。恢复出来的文件名后面会给出该文件的类型。这样就可以使用合适的软件打开该文件来验证文件是否完整。7 G3 v: V- s% O/ b' ?' S

5 R3 X: m* [3 I, n2 q: f4 n5 `- G5、总结- _( e2 i$ m" z  R9 j
在cephfs文件系统的元数据完全损坏的情况下,只要数据池对象不丢失,就可以恢复出完整的数据。恢复的思路如下:
1 Y  m1 m4 f/ _% z, k' R1 `0 X- `6 e" Z- D+ s+ P4 F  s' g9 Z9 j; \5 j( z
获取数据池对象
3 M9 g1 y! A. Q根据inode找到该文件的所有对象; }1 E1 C. d' k5 C  d; x( ^9 N
拼接对象
! C* N7 i6 S7 L( Y2 f8 M' k2 f+ U使用脚本注意事项:
% n/ f; c$ u% H1 J$ p- }
9 s1 U' b; c' t6 p" ^0 g5 x- L0 M现在的脚本在只加入了txt、jpg、png、pdf、word、excel这些文件类型的识别,需要其他的就需要自己加入到脚本里面了
9 Y8 f- c8 `& G9 ]$ Z; ~# @只适合副本池( x  z# o+ j* \4 o
如果数据量特别大,不适合使用脚本,不过可以参考脚本的思路去一个一个文件恢复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 23:01 , Processed in 0.027033 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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