|
|
// 集群中添加一个osd,1 B$ R ?. _' D; }0 z8 v- u
ceph-deploy osd create --bluestore node1 --data /dev/sdg --block-db cache/db1 --block-wal cache/wal1: s$ r6 I& T. W
# ?( U: B$ z+ J+ s' X' D4 W) Q" U, m/ r0 { X* A8 p+ A6 w% L' A
ceph daemon osd.5 config show |grep osd_recovery_max_single_start #这个值限定了每个pg可以启动recover操作的最大数。
; `7 n$ F9 W% F* B6 ?' g8 K9 Q' l9 t7 ` ]- P1 g
9 w( ~6 u$ M4 M4 p6 T
// 查看每个osd节点的参数,或者通过 ceph daemon osd.2 config get osd_recovery_op_priority 查看单个osd的参数
R4 E/ |6 g {/ {
3 o, c+ @6 v* j V6 @ ceph daemon osd.5 config show |egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills"
; F. K3 L" v: l "osd_max_backfills": "10",
2 J/ l1 ^7 u, |# r1 `2 F9 K "osd_recovery_max_active": "15",5 `6 ~6 ]6 w) C- g7 _. B
"osd_recovery_op_priority": "3",
1 P. ?- t7 r0 T; c, G5 I
# U2 y7 C6 [/ {! _ `8 Q" }9 R) Q7 I, \/ s% S7 }
4 c! T. L$ y/ K. g
ceph tell osd.* injectargs --osd_max_backfills=128
- X4 e: _) w! \- N1 Pceph tell osd.* injectargs --osd_recovery_op_priority=0
( U8 `, p; A' u+ h0 P" Aceph tell osd.* injectargs --osd_recovery_max_active=64
/ w( h6 D) k [ @" Jceph tell osd.* injectargs --osd_recovery_max_single_start=64: R, i0 C; j$ t1 e
ceph tell osd.* injectargs --osd_recovery_sleep_hdd=0
7 T* s* ]" c! g8 ~" H1 T! b' A7 ?8 ]' d v$ s( r
. V: F# t3 ?; Q& s, e核心影响恢复速度的参数
7 F y( e, d+ Y" `5 R4 @osd_max_backfills
1 O, L; b4 {2 n% A. q, E4 H1 J, k这个参数默认值10. 由于一个osd承载了多个pg,所以一个osd中的pg很大可能需要做recovery.这个参数就是设置每个osd最多能让osd_max_backfills个pg进行同时做backfill.
$ }; \4 Y' H8 @4 drecovery做修复,通过pull或者push的backfills的操作数一般是分开的,所以一般会考虑设置这个值大一些,用于primary osd通过push修复replica osd或者primary osd 通过pull方式修复replica osd
: I- Y4 F" r: c7 Uosd_recovery_op_priority, N& {" R* e* \' W( w; p
默认值10. osd修复操作的优先级, 可小于该值;这个值越小,recovery优先级越高。高优先级会导致集群的性能降级直到recovery结束+ X* S- j. t; Y; t$ v" i- j
osd_recovery_max_active- w) Y n1 i4 Q: p$ E' V5 N
默认值15. 一个osd上可以承载多个pg, 可能好几个pg都需要recovery,这个值限定该osd最多同时有多少pg做recovery。' L) M) ~$ K1 y6 s; g
osd_recovery_max_single_start
* m/ I! B1 d8 A& u. b, U. m/ c默认值5. 这个值限定了每个pg可以启动recovery操作的最大数。; N$ }6 V5 ^8 u3 e6 m$ ~
第一种情况,配置osd_recovery_max_single_start=1,osd_recovery_max_active=3,这代表每个osd在某个时间会为一个pg最多启动1个恢复操作,并且最多可以由3个恢复操作处于活跃状态。
_7 a, j7 X# w0 d! E% p第二种情况,配置osd_recovery_max_single_start=2,osd_recovery_max_active=3,这代表某个时间点osd会为一个pg启动2个恢复操作,并且最多能有3个恢复操作处于活跃状态。+ ?8 ] n' _ o3 D- J
osd_recovery_sleep_hdd# W2 i6 T) o. K; m
每个recovery操作之间的间隔时间,单位是ms
8 ?6 Z4 I- `$ }! `
o6 F8 t6 [% W+ p& j
D* Z/ u: p" c& N: L
' Y1 t# j) ^ G$ R( X) _; g) v6 i) E, n
|
|