易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 803|回复: 1
收起左侧

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

[复制链接]
发表于 2022-11-21 09:32:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
// 集群中添加一个osd,( a0 `: }  u: d( S$ t
ceph-deploy osd create  --bluestore node1 --data  /dev/sdg    --block-db cache/db1 --block-wal cache/wal1
1 u% y  Z0 M6 e* l3 Y6 _1 M. Z$ g+ o6 u( `7 {7 L" a

2 Y4 N, F$ w0 b2 B1 }# \$ Cceph daemon osd.5 config show  |grep osd_recovery_max_single_start   #这个值限定了每个pg可以启动recover操作的最大数。
; _. e8 C$ R$ ^: @% s6 Y6 V3 ]$ d8 d& q4 z" D
2 ~  h. U% Z- O( m2 I7 J
// 查看每个osd节点的参数,或者通过  ceph daemon osd.2 config get osd_recovery_op_priority 查看单个osd的参数  G4 p" T% `2 J5 k$ f4 z- B

+ ^  J2 B* j0 _0 o: D: M% X ceph daemon osd.5 config show |egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills"
7 V/ s. A4 v+ N7 [) v, m2 y    "osd_max_backfills": "10",3 `1 e- Y" r8 J! O) _' L/ n
    "osd_recovery_max_active": "15",; R8 [$ y7 O# D8 g
    "osd_recovery_op_priority": "3",1 S4 T9 L8 v1 A
7 j" _0 R3 u# j3 W" b
) c+ R& g" G: e& @

% s/ h0 b5 f; rceph tell osd.* injectargs --osd_max_backfills=128
/ A, @" |  F% E) ?- B8 k% J9 r* [ceph tell osd.* injectargs --osd_recovery_op_priority=05 J& M' s3 k& }! `
ceph tell osd.* injectargs --osd_recovery_max_active=64
: H' E+ X& f0 ], W& Kceph tell osd.* injectargs --osd_recovery_max_single_start=647 f4 o9 B5 U; \
ceph tell osd.* injectargs --osd_recovery_sleep_hdd=02 @$ f. u/ l; J% W) W

5 F8 Z' N  C( Z5 l9 v, d4 V9 I0 I& `9 ~  d" |
核心影响恢复速度的参数
/ I, |: Y, P$ B! tosd_max_backfills) Y6 z; m4 r" ]% F
这个参数默认值10. 由于一个osd承载了多个pg,所以一个osd中的pg很大可能需要做recovery.这个参数就是设置每个osd最多能让osd_max_backfills个pg进行同时做backfill.- A+ _. Z# K4 s4 P
recovery做修复,通过pull或者push的backfills的操作数一般是分开的,所以一般会考虑设置这个值大一些,用于primary osd通过push修复replica osd或者primary osd 通过pull方式修复replica osd% g/ ?* N/ b9 o# x. U  i
osd_recovery_op_priority
1 X* h2 p! }" I; b3 n默认值10. osd修复操作的优先级, 可小于该值;这个值越小,recovery优先级越高。高优先级会导致集群的性能降级直到recovery结束
, U7 k6 a& G, s, x# b; T3 S% Aosd_recovery_max_active
' \5 J! W! q" Q& y- c2 N默认值15. 一个osd上可以承载多个pg, 可能好几个pg都需要recovery,这个值限定该osd最多同时有多少pg做recovery。
% Q/ ~: q; n( W' e! L4 b1 ^3 rosd_recovery_max_single_start9 @" `& c+ L5 b4 \. n- l
默认值5. 这个值限定了每个pg可以启动recovery操作的最大数。* Z$ |! [4 q6 X1 ?8 H/ p' k9 g
第一种情况,配置osd_recovery_max_single_start=1,osd_recovery_max_active=3,这代表每个osd在某个时间会为一个pg最多启动1个恢复操作,并且最多可以由3个恢复操作处于活跃状态。
; k# M2 _" o2 f4 d  v: _" v1 m第二种情况,配置osd_recovery_max_single_start=2,osd_recovery_max_active=3,这代表某个时间点osd会为一个pg启动2个恢复操作,并且最多能有3个恢复操作处于活跃状态。& C, M6 B2 Y# J  e% r3 G; z9 X) Q
osd_recovery_sleep_hdd; n# [0 n0 h" X5 _$ c- U- X- G- b2 K
每个recovery操作之间的间隔时间,单位是ms3 p% I4 \9 G. l$ @$ l: o

# R2 e1 X2 l2 V/ r  ~. `
/ ^. C- ]) J/ v+ x  M  v; u4 F3 T" b; A4 L  X

+ b( n* w/ [8 Q0 B4 x7 |! Z
 楼主| 发表于 2022-11-21 09:45:20 | 显示全部楼层
 pg的recovery模式分为两种:
  • 基于pg log的recovery,osd故障时间不长,需要恢复的数据可以通过pg log回放找回来。
  • backfill recovery. 是说无法通过pg log回放找全数据,只能通过全量回填(backfill)拷贝
    ' j& `0 M  h0 \- A
# n& {1 u; n/ K9 V( |( V0 Q
. U" y' T; q0 B
"osd_recovery_max_active": "10",      #一个osd上承载多个pg, 可能好几个pg都需要recover,这个值限定该osd最多同时有多少pg做recover。
, N" Y& t  @. L  w% x" h4 _/ v    "osd_recovery_max_single_start": "5",   #这个值限定了每个pg可以启动recover操作的最大数。
+ q8 p+ C$ P# }8 {, ]     "osd_recovery_max_chunk": "8388608",/ N; g' q# m' [6 N
     "osd_recovery_forget_lost_objects": "false",( S, j) E' F# Q: _
     "osd_recovery_op_priority": "4",' @6 `$ \/ {. c" w& V  O8 b
     "osd_recovery_op_warn_multiple": "16",+ n* u5 x) O& i* d9 C, G& {

% t) T' B% u+ H* E9 L     "osd_max_backfills": "4",          #一个osd上承载了多个pg。可能很多pg都需要做第二种recovery,即backfill。 设定这个参数来指明在一个osd上最多能有多少个pg同时做backfill。
( |9 |( @7 m0 y7 i5 L
. @0 V+ N( ]5 j# h3 Z0 ]( F; m% c
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 07:22 , Processed in 0.049923 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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