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

每个pg可以启动recover操作的最大数 ceph 以及recovery速率介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-11-21 09:32:54 | 显示全部楼层 |阅读模式
// 集群中添加一个osd,
! s" @% {9 j. }/ g* l ceph-deploy osd create  --bluestore node1 --data  /dev/sdg    --block-db cache/db1 --block-wal cache/wal1
; ~# ?1 J8 U7 n  _; z: k: \, y' a1 {5 U( r) I
3 a" u4 K7 }- H2 S; r; R" z0 O
ceph daemon osd.5 config show  |grep osd_recovery_max_single_start   #这个值限定了每个pg可以启动recover操作的最大数。
) @0 F$ {$ h* I  O" s2 E
6 U7 U5 }6 q7 z  E8 v9 `0 f
& V' Q9 m! w6 |+ W5 k  N$ p// 查看每个osd节点的参数,或者通过  ceph daemon osd.2 config get osd_recovery_op_priority 查看单个osd的参数
0 n+ ]! I  N/ F8 w4 }' Z" [3 c+ ]6 c! ^- m1 q
ceph daemon osd.5 config show |egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills"3 W# s" W5 R+ x8 O
    "osd_max_backfills": "10",
/ ~, `9 T& y! T0 q5 v    "osd_recovery_max_active": "15",
( b+ t9 C$ w4 ]: _7 \. Y4 m& u7 s# f4 i    "osd_recovery_op_priority": "3",
  Y. ~: g; w2 W8 y8 o4 W3 \; U- g7 Q8 r4 v1 M
0 b9 }1 S; J, K; Z+ ?8 W

" `2 f) K) I" f) M% P1 G( Mceph tell osd.* injectargs --osd_max_backfills=128
  n2 v- F1 J8 Y! a2 \ceph tell osd.* injectargs --osd_recovery_op_priority=0
6 `: q0 S) u; `8 Vceph tell osd.* injectargs --osd_recovery_max_active=64
* A( Z( P/ P) I7 ^ceph tell osd.* injectargs --osd_recovery_max_single_start=64
0 n% m& c( M) \) i0 P: Gceph tell osd.* injectargs --osd_recovery_sleep_hdd=05 O* e+ F. R+ t7 T8 f

% h/ S) Y" z5 E- C2 U& q8 x: Y
- d1 A; k; v1 e! o2 G2 R核心影响恢复速度的参数
( z& o8 P& [% y" X% F1 nosd_max_backfills
' }4 n; r3 ?3 {" Y这个参数默认值10. 由于一个osd承载了多个pg,所以一个osd中的pg很大可能需要做recovery.这个参数就是设置每个osd最多能让osd_max_backfills个pg进行同时做backfill.
( G! p+ L2 U8 j% g5 B: arecovery做修复,通过pull或者push的backfills的操作数一般是分开的,所以一般会考虑设置这个值大一些,用于primary osd通过push修复replica osd或者primary osd 通过pull方式修复replica osd
9 E- d; @- O: eosd_recovery_op_priority, M6 g! K5 v8 I$ V! f: z7 b
默认值10. osd修复操作的优先级, 可小于该值;这个值越小,recovery优先级越高。高优先级会导致集群的性能降级直到recovery结束
4 v* i: K0 N: q* F5 K( ?4 oosd_recovery_max_active
7 i. S7 E" t, k3 }; j$ j默认值15. 一个osd上可以承载多个pg, 可能好几个pg都需要recovery,这个值限定该osd最多同时有多少pg做recovery。
) d* M8 p' B- ^osd_recovery_max_single_start, n0 C2 z) J* e+ [" N
默认值5. 这个值限定了每个pg可以启动recovery操作的最大数。
4 M, Q! P! i- X8 Z3 z9 f5 |0 z% y第一种情况,配置osd_recovery_max_single_start=1,osd_recovery_max_active=3,这代表每个osd在某个时间会为一个pg最多启动1个恢复操作,并且最多可以由3个恢复操作处于活跃状态。
  i3 p3 M% B1 {. a% D/ J5 o+ d第二种情况,配置osd_recovery_max_single_start=2,osd_recovery_max_active=3,这代表某个时间点osd会为一个pg启动2个恢复操作,并且最多能有3个恢复操作处于活跃状态。4 L6 m" i1 Y. `& j4 D
osd_recovery_sleep_hdd; V( [# g# i+ F- P
每个recovery操作之间的间隔时间,单位是ms
3 N& R2 g) O/ k" Y% O1 f! a3 m

/ U* o8 `# `) ?6 f% `
' y& V. N9 w8 u$ [& h  ~) |1 Z% u

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-11-21 09:45:20 | 显示全部楼层
 pg的recovery模式分为两种:
  • 基于pg log的recovery,osd故障时间不长,需要恢复的数据可以通过pg log回放找回来。
  • backfill recovery. 是说无法通过pg log回放找全数据,只能通过全量回填(backfill)拷贝) j" L$ @' v* Y3 ]3 A7 i7 y0 u3 R
; ?  |0 E, b3 x8 L& _3 P  R
: J& M8 u, K' D
"osd_recovery_max_active": "10",      #一个osd上承载多个pg, 可能好几个pg都需要recover,这个值限定该osd最多同时有多少pg做recover。" p# ]# }: g2 w5 o
    "osd_recovery_max_single_start": "5",   #这个值限定了每个pg可以启动recover操作的最大数。
6 V& T. F' G; t, a& D     "osd_recovery_max_chunk": "8388608",6 E7 y2 d4 H: h: t% _+ |
     "osd_recovery_forget_lost_objects": "false",
" b; @& _; ~( U1 c* u! `/ s     "osd_recovery_op_priority": "4",
" c) K8 j. A4 @8 L     "osd_recovery_op_warn_multiple": "16",
7 p0 `9 Q2 x$ V7 B( w
; G! W/ c' E9 T4 K- d1 p     "osd_max_backfills": "4",          #一个osd上承载了多个pg。可能很多pg都需要做第二种recovery,即backfill。 设定这个参数来指明在一个osd上最多能有多少个pg同时做backfill。# X, I0 l/ p4 @
. A' B) ?4 P( I& {0 T5 z1 _- f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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