|
|
// 集群中添加一个osd,: H8 ~# w' u: O$ U* e+ _
ceph-deploy osd create --bluestore node1 --data /dev/sdg --block-db cache/db1 --block-wal cache/wal1
. |2 X* ~% Y& N& T4 y
- ^* y% z+ e+ a3 T. f, U( c6 P0 G0 _) u# B
ceph daemon osd.5 config show |grep osd_recovery_max_single_start #这个值限定了每个pg可以启动recover操作的最大数。
( i7 P$ u3 W D0 M* [6 R" m
0 q# ~7 h: g6 F9 ^1 O& o! |
- s2 n' h& r8 ?2 Q$ K// 查看每个osd节点的参数,或者通过 ceph daemon osd.2 config get osd_recovery_op_priority 查看单个osd的参数
; k) `- d s ]$ Z. c* R6 [
: I% G! h$ d0 p" I4 G ceph daemon osd.5 config show |egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills"
1 x1 c( S0 e6 C, i0 @ "osd_max_backfills": "10",
6 H: E7 K' N e8 C4 Z: ^, E. O! _ "osd_recovery_max_active": "15",8 m3 |+ C; A1 U2 y0 K; J" d$ x
"osd_recovery_op_priority": "3",: M' Z5 {3 r2 ]: w
) X2 u9 n3 f: ]
/ j6 V/ e9 p, ?+ X0 ^. ~ C& n; Q% F! Z! t3 f) N, q. J1 L# ]$ j/ n4 }
ceph tell osd.* injectargs --osd_max_backfills=128; Y! i* e) F; D+ M# o; Q4 ?
ceph tell osd.* injectargs --osd_recovery_op_priority=0
4 z7 D0 d! o- }; j, m& uceph tell osd.* injectargs --osd_recovery_max_active=64- ^/ U6 Y5 [7 ~, ~1 }, o* M: E
ceph tell osd.* injectargs --osd_recovery_max_single_start=648 M) k [. Y& ]% v4 h1 u
ceph tell osd.* injectargs --osd_recovery_sleep_hdd=0
( r' F' C1 \- Z& D/ \8 R( t& |
* y2 H, m0 Q6 W* T q9 ~; S" i' N
核心影响恢复速度的参数. K) Z) P/ [ I- F* F
osd_max_backfills
8 ]% M0 F7 L! T7 H这个参数默认值10. 由于一个osd承载了多个pg,所以一个osd中的pg很大可能需要做recovery.这个参数就是设置每个osd最多能让osd_max_backfills个pg进行同时做backfill.
6 o; Y2 x2 S/ n$ \! }recovery做修复,通过pull或者push的backfills的操作数一般是分开的,所以一般会考虑设置这个值大一些,用于primary osd通过push修复replica osd或者primary osd 通过pull方式修复replica osd
+ n+ ^- i9 w! L' Uosd_recovery_op_priority' V: `8 n6 R- C* ~
默认值10. osd修复操作的优先级, 可小于该值;这个值越小,recovery优先级越高。高优先级会导致集群的性能降级直到recovery结束
, w# A6 e3 K( C% n8 u' Fosd_recovery_max_active
$ m* a, _# J4 @$ F默认值15. 一个osd上可以承载多个pg, 可能好几个pg都需要recovery,这个值限定该osd最多同时有多少pg做recovery。
6 ?" }5 [7 _2 L# H- `4 Sosd_recovery_max_single_start
* e$ F; U6 P+ o2 l9 s# r默认值5. 这个值限定了每个pg可以启动recovery操作的最大数。
& o* t U. h) [# `# K6 h5 O7 E第一种情况,配置osd_recovery_max_single_start=1,osd_recovery_max_active=3,这代表每个osd在某个时间会为一个pg最多启动1个恢复操作,并且最多可以由3个恢复操作处于活跃状态。
8 I' W1 m* [- z: l* V8 A第二种情况,配置osd_recovery_max_single_start=2,osd_recovery_max_active=3,这代表某个时间点osd会为一个pg启动2个恢复操作,并且最多能有3个恢复操作处于活跃状态。
4 p5 ]% p9 ~2 G6 {$ |osd_recovery_sleep_hdd& }3 v: o2 |) ?% ^$ a. r! o$ ` N
每个recovery操作之间的间隔时间,单位是ms
7 v2 O8 H/ ^/ `4 a+ c
4 {+ }& A% l. T- ^* }' |* J9 v7 O4 p
$ _9 [. [8 N; }% C+ \5 g/ F7 {2 ^; ^$ ?$ @
# W6 Y0 [, ]) Y' Q X9 {) G |
|