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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-11-21 09:32:54 | 显示全部楼层 |阅读模式
// 集群中添加一个osd,; D4 q! X& m: d# H1 o9 J- x; x
ceph-deploy osd create  --bluestore node1 --data  /dev/sdg    --block-db cache/db1 --block-wal cache/wal1
% i" Y" B; n$ Y, j4 ]$ k
0 @; O' ]% F0 t2 Q& c6 C) x
" L* D8 C; L- T* ]7 vceph daemon osd.5 config show  |grep osd_recovery_max_single_start   #这个值限定了每个pg可以启动recover操作的最大数。: f; d2 c! y0 S& R$ m2 k

7 F7 v2 f( D2 K; ]* Z7 Q
/ k" h& H, U" r7 d/ U// 查看每个osd节点的参数,或者通过  ceph daemon osd.2 config get osd_recovery_op_priority 查看单个osd的参数
& r. v: F, i) G/ C
+ [: d& Z; ~( ^8 S ceph daemon osd.5 config show |egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills"
; r. k% ]. w. c' ^    "osd_max_backfills": "10",5 {5 E+ w  |$ \7 {- l4 C3 ]) z
    "osd_recovery_max_active": "15",  X. z6 D) }' i0 [3 |9 e% C, i3 l
    "osd_recovery_op_priority": "3",+ {( W; U: }. T! P/ O: P
9 T* j" N! {4 f& F! I' j5 B

! S: x+ f3 s/ u3 D" k+ z
: f8 }' N! P( p% Rceph tell osd.* injectargs --osd_max_backfills=128
' Z. E' J3 F* {: ^8 ?3 j. \ceph tell osd.* injectargs --osd_recovery_op_priority=0" |0 N+ v( m$ H6 @+ d* m$ i
ceph tell osd.* injectargs --osd_recovery_max_active=64
$ P" O& p& n2 A7 @$ q2 Zceph tell osd.* injectargs --osd_recovery_max_single_start=64
/ Q( C& x( _1 O# F! p% _ceph tell osd.* injectargs --osd_recovery_sleep_hdd=0  \4 B) ^  ?8 L; G5 ?1 _$ N/ ]0 R, ~
9 s& m* q, w" C. R, ]
) q- F- h" b- C) _
核心影响恢复速度的参数
3 s1 k& h  H% r( A. D2 {- p; zosd_max_backfills
% W4 ?; ~3 X$ U3 E0 g/ U: x这个参数默认值10. 由于一个osd承载了多个pg,所以一个osd中的pg很大可能需要做recovery.这个参数就是设置每个osd最多能让osd_max_backfills个pg进行同时做backfill.
7 R, c$ l2 {5 @recovery做修复,通过pull或者push的backfills的操作数一般是分开的,所以一般会考虑设置这个值大一些,用于primary osd通过push修复replica osd或者primary osd 通过pull方式修复replica osd
" w  i" z9 [5 [# F5 ]osd_recovery_op_priority8 [' V* Q1 K: e1 n% G0 J2 E& u4 q
默认值10. osd修复操作的优先级, 可小于该值;这个值越小,recovery优先级越高。高优先级会导致集群的性能降级直到recovery结束- V. W/ y. u. h8 _. y+ e
osd_recovery_max_active
+ U  D* R: e2 Z8 o默认值15. 一个osd上可以承载多个pg, 可能好几个pg都需要recovery,这个值限定该osd最多同时有多少pg做recovery。
  r4 x, u0 d5 B% b" a5 B  ^osd_recovery_max_single_start
6 p' M" j7 n% g! O; k+ [2 s默认值5. 这个值限定了每个pg可以启动recovery操作的最大数。& ~/ x5 D( ~6 C
第一种情况,配置osd_recovery_max_single_start=1,osd_recovery_max_active=3,这代表每个osd在某个时间会为一个pg最多启动1个恢复操作,并且最多可以由3个恢复操作处于活跃状态。" l: w- J2 i7 o/ k0 w1 a
第二种情况,配置osd_recovery_max_single_start=2,osd_recovery_max_active=3,这代表某个时间点osd会为一个pg启动2个恢复操作,并且最多能有3个恢复操作处于活跃状态。3 L3 M. d' x5 [7 Z1 R3 ]
osd_recovery_sleep_hdd
3 y6 U9 t( D1 o# D每个recovery操作之间的间隔时间,单位是ms
! q) U- i( L0 `% }0 Z: |) A) c) @7 |7 ~! t$ Z% t

% b# ~' O6 k, V, T+ @5 \
4 s6 y  n" _1 _5 `; d
& K0 }/ W! f- N5 F* x' m

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-11-21 09:45:20 | 显示全部楼层
 pg的recovery模式分为两种:
  • 基于pg log的recovery,osd故障时间不长,需要恢复的数据可以通过pg log回放找回来。
  • backfill recovery. 是说无法通过pg log回放找全数据,只能通过全量回填(backfill)拷贝
    4 f, z, q5 j- y$ O5 b

, k, q0 ^" A: f' U) d6 m- t% n& w  z0 K6 {9 u# X$ F$ |2 M- P" j
"osd_recovery_max_active": "10",      #一个osd上承载多个pg, 可能好几个pg都需要recover,这个值限定该osd最多同时有多少pg做recover。! ~+ a) J0 X4 h3 x* ^+ L( T
    "osd_recovery_max_single_start": "5",   #这个值限定了每个pg可以启动recover操作的最大数。
; {6 |$ j& B% \! H5 p     "osd_recovery_max_chunk": "8388608",
" G. C9 f8 K5 T4 [4 A- J: p     "osd_recovery_forget_lost_objects": "false",
- F( `# |5 Y" P/ c4 Y     "osd_recovery_op_priority": "4",
) q; K9 B' r* V) r8 @9 L$ [     "osd_recovery_op_warn_multiple": "16",6 r* D; P4 C# D5 Z
' U( a2 {" o0 h
     "osd_max_backfills": "4",          #一个osd上承载了多个pg。可能很多pg都需要做第二种recovery,即backfill。 设定这个参数来指明在一个osd上最多能有多少个pg同时做backfill。( g$ ]  P/ \0 [! s8 v+ A7 Q
, J, D( S4 q- Q$ W7 m2 T! d. Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:11 , Processed in 0.024377 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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