|
|
楼主 |
发表于 2021-6-9 15:00:17
|
显示全部楼层
3.1.1 说明& t2 D% d7 D8 c, N
降级:由上文可以得知,每个PG有三个副本,分别保存在不同的OSD中,在非故障情况下,这个PG是active+clean 状态,那么,如果PG 的 副本osd.4 挂掉了,这个 PG 是降级状态。: E3 k$ C2 R; J$ A
3.1.2 故障模拟
( V+ P# S0 u2 l5 W0 Qa. 停止osd.1
4 `8 n: o* f n $ systemctl stop ceph-osd@1 ! ?; S! @3 h, ^- a% T
b. 查看PG状态
: M9 w; g( j* m' I $ bin/ceph pg stat 20 pgs: 20 active+undersized+degraded; 14512 kB data, 302 GB used, 6388 GB / 6691 GB avail; 12/36 objects degraded (33.333%)
, _; i4 Q$ f6 [9 R( D# N7 qc. 查看集群监控状态( M0 c7 ^6 ]& O% ^& q/ @5 m
$ bin/ceph health detail
) J4 H) v9 x( w0 o+ H1 `HEALTH_WARN 1 osds down; Degraded data redundancy: 12/36 objects degraded (33.333%), 20 pgs unclean, 20 pgs degraded; application not enabled on 1 pool(s)
; S8 \& t& o7 }: ^+ O) I+ R* q2 DOSD_DOWN 1 osds down
/ U7 X( m; s- u osd.1 (root=default,host=ceph-xx-cc00) is down * x% `- @: a" B( x# t+ Q
PG_DEGRADED Degraded data redundancy: 12/36 objects degraded (33.333%), 20 pgs unclean, 20 pgs degraded $ X6 ^3 r, i8 l. a+ r1 o2 v- i& T
pg 1.0 is active+undersized+degraded, acting [0,2] 4 b. B! X: z) b- @. y8 r% U
pg 1.1 is active+undersized+degraded, acting [2,0]
) m. X3 Q, C3 T7 w% ^/ c4 Yd. 客户端IO操作
& z( M1 G) ]! ?6 w& I) Z, W5 \+ L* i" ] #写入对象
8 T' o8 P* w# [- S! j2 l% r$ bin/rados -p test_pool put myobject ceph.conf 6 U/ p x; a/ y$ W
) L& g& b; ^4 u/ x#读取对象到文件 " ]$ T7 I+ {% u; a. |! X
$ bin/rados -p test_pool get myobject.old
7 T! k+ G. H. B5 D; D0 y2 ^
" r" C0 Y u6 F# s#查看文件 ; L2 }, B0 @. K9 H5 E. f
$ ll ceph.conf*
9 h9 N7 [- K+ x6 R2 |! l-rw-r--r-- 1 root root 6211 Jun 25 14:01 ceph.conf
$ u3 Y5 w) t; {- K4 r0 R8 m-rw-r--r-- 1 root root 6211 Jul 3 19:57 ceph.conf.old
0 D, u. H+ r/ }4 A7 b故障总结:
) h2 q# j8 R/ E为了模拟故障,(size = 3, min_size = 2) 我们手动停止了 osd.1,然后查看PG状态,可见,它此刻的状态是active+undersized+degraded,当一个 PG 所在的 OSD 挂掉之后,这个 PG 就会进入undersized+degraded 状态,而后面的[0,2]的意义就是还有两个副本存活在 osd.0 和 osd.2 上, 并且这个时候客户端可以正常读写IO。
" \. `7 O x( V3.1.3 总结( r: D/ f8 Z/ X* x1 W& |' P
降级就是在发生了一些故障比如OSD挂掉之后,Ceph 将这个 OSD 上的所有 PG 标记为 Degraded。( G, U' k5 V+ d8 p% T
降级的集群可以正常读写数据,降级的 PG 只是相当于小毛病而已,并不是严重的问题。! I, D( z6 W) y2 t) g, b
Undersized的意思就是当前存活的PG 副本数为 2,小于副本数3,将其做此标记,表明存货副本数不足,也不是严重的问题。
6 o* ?2 x8 ]1 @$ n1 O# g, l3.2 Peered4 d% N* B; y. Q @& R
3.2.1 说明0 E" |. W1 ?& q. E
Peering已经完成,但是PG当前Acting Set规模小于存储池规定的最小副本数(min_size)。$ t# w8 h" l+ @ k
3.2.2 故障模拟2 a# O% z! z9 F
a. 停掉两个副本osd.1,osd.0
0 b$ L) m( {. ~ $ systemctl stop ceph-osd@1
0 t! u2 n# R$ p x4 _ Q" e $ systemctl stop ceph-osd@0
- \" p. i5 N2 \: t/ _ M+ R! w3 @
# Q, U& H% t) h% U' E1 A% K$ u1 B: v+ I
3.2.1 说明. f `- q2 F @% t
Peering已经完成,但是PG当前Acting Set规模小于存储池规定的最小副本数(min_size)。# D/ o; `$ m+ v: `) n
3.2.2 故障模拟7 b6 ?% M! w% d
) `) o' K+ c( h5 t, u4 z
a. 停掉两个副本osd.1,osd.0
8 F! S/ r) N( n" T3 G) J& y* R
9 B* d" o* ^& k1 C% B$ E $ systemctl stop ceph-osd@1 9 c6 ~# ?3 g6 O2 u2 G7 B
$ systemctl stop ceph-osd@0
3 g- K/ M& O6 o/ R9 t
$ B+ X" Y3 C9 r: `b. 查看集群健康状态
: K) y# i0 t! s5 j: M9 U O; C8 i0 e* p
: l0 i2 J8 i( z0 L2 a+ P $ bin/ceph health detail
0 D1 ?0 r0 q- E2 ]HEALTH_WARN 1 osds down; Reduced data availability: 4 pgs inactive; Degraded data redundancy: 26/39 objects degraded (66.667%), 20 pgs unclean, 20 pgs degraded; application not enabled on 1 pool(s) 3 t* P( w6 X' \! a q# P
OSD_DOWN 1 osds down + R; i: a& }2 b8 t, j
osd.0 (root=default,host=ceph-xx-cc00) is down
0 C7 N" @& I7 ?: u5 {; B; wPG_AVAILABILITY Reduced data availability: 4 pgs inactive / ? m/ g3 g; D0 T( I; y+ M3 `
pg 1.6 is stuck inactive for 516.741081, current state undersized+degraded+peered, last acting [2] . d7 h2 ~- Y0 ]+ x
pg 1.10 is stuck inactive for 516.737888, current state undersized+degraded+peered, last acting [2] & g1 @! M1 F( }" V* f( m
pg 1.11 is stuck inactive for 516.737408, current state undersized+degraded+peered, last acting [2]
2 G& D8 V' j! y! v% z5 h pg 1.12 is stuck inactive for 516.736955, current state undersized+degraded+peered, last acting [2]
/ B! S' Z" m( |% [+ W( ~. SPG_DEGRADED Degraded data redundancy: 26/39 objects degraded (66.667%), 20 pgs unclean, 20 pgs degraded % a% o$ m: B: W' ]6 M- q6 O# L
pg 1.0 is undersized+degraded+peered, acting [2]
2 e2 Z' }$ t) x. f* B+ ], s pg 1.1 is undersized+degraded+peered, acting [2] 5 v7 |( ]2 G7 J& L/ u7 E) j5 u; }
c. 客户端IO操作(夯住): e& Q* L& F; [% D% S5 d) u
7 F( m3 x/ { t7 R- {3 { #读取对象到文件,夯住IO " N% G; z8 M% |
$ bin/rados -p test_pool get myobject ceph.conf.bak - `5 q. ^$ J0 r! l$ D8 I/ Z
故障总结:$ L2 o& |: G3 i( y
9 V _1 a6 B S4 J现在pg 只剩下osd.2上存活,并且 pg 还多了一个状态:peered,英文的意思是仔细看,这里我们可以理解成协商、搜索。- q+ s, t, z6 ]1 _5 C
这时候读取文件,会发现指令会卡在那个地方一直不动,为什么就不能读取内容了,因为我们设置的 min_size=2 ,如果存活数少于2,比如这里的 1 ,那么就不会响应外部的IO请求。
1 Z% J8 n3 L$ q. b% V' Y9 rd. 调整min_size=1可以解决IO夯住问题
# o# }0 a* o+ w, V
" w6 G/ {- x% v #设置min_size = 1 2 a1 c4 |9 h% J, O9 ~+ G3 ^
$ bin/ceph osd pool set test_pool min_size 1
4 c6 j4 y( T& Q; nset pool 1 min_size to 1
2 O; z/ c/ k5 Y, ~+ ?1 n) o2 r! Y4 D9 me. 查看集群监控状态9 K7 K: |: H0 g# Q1 u' d$ F& f
! _7 D' l3 h1 Q- m- ` $ bin/ceph health detail * ^! E2 S9 l$ Y! y0 i9 H
HEALTH_WARN 1 osds down; Degraded data redundancy: 26/39 objects degraded (66.667%), 20 pgs unclean, 20 pgs degraded, 20 pgs undersized; application not enabled on 1 pool(s) # v8 \5 [" J+ V. T' O4 i& N
OSD_DOWN 1 osds down
4 P3 W# l* [( @/ A osd.0 (root=default,host=ceph-xx-cc00) is down。. b" O2 S& Z! ?- o: U% q
PG_DEGRADED Degraded data redundancy: 26/39 objects degraded (66.667%), 20 pgs unclean, 20 pgs degraded, 20 pgs undersized \2 `/ f' @2 @2 V; |
pg 1.0 is stuck undersized for 65.958983, current state active+undersized+degraded, last acting [2]
9 t4 r% b% v- o* m! Z, v' Npg 1.1 is stuck undersized for 65.960092, current state active+undersized+degraded, last acting [2]
. C, P2 K! L5 {pg 1.2 is stuck undersized for 65.960974, current state active+undersized+degraded, last acting [2]
, f! f6 e; o* g1 T- X- |f. 客户端IO操作+ k" E# H2 V- D8 m0 g9 x e
# k* V* ]( ] v$ j# b9 h
#读取对象到文件中
. v) q9 C/ ?1 s1 |7 ~& n$ ll -lh ceph.conf*
" w9 a" f7 c* \' b1 U+ O; l6 R5 s-rw-r--r-- 1 root root 6.1K Jun 25 14:01 ceph.conf
0 a/ l( K7 L. f# t0 ]-rw-r--r-- 1 root root 6.1K Jul 3 20:11 ceph.conf.bak 0 g$ w/ L; j0 N. }; [
-rw-r--r-- 1 root root 6.1K Jul 3 20:11 ceph.conf.bak.1
& y! I% ^. X5 U5 |( E# w/ R故障总结:8 ^- R! _, O, k. b7 f @- M
) o+ r* a- u ]
可以看到,PG状态Peered没有了,并且客户端文件IO可以正常读写了。
+ E. ?! K! d; X3 ~当min_size=1时,只要集群里面有一份副本活着,那就可以响应外部的IO请求。
8 Z' b- S+ ?" x% i, T& }0 V; s# X5 r; ~% l
|
|