Backfill和Recovery都是用来恢复数据的,但二者的区别是Backfill是全量恢复,Recovery是增量恢复。而且在恢复过程中当出现Client访问恢复数据现象时,Backfill不会block client i/o,但Recovery会block client i/o。但二者如果占用带宽过大,还是会影响client i/o的。
环境
Ceph Version : Jewel
优化
- 默认情况下将Backfill和Recovery对Client I/O的影响降到最小。
- 当需要Backfill或Recovery时,要根据集群负载动态调整。若集群负载低,可通过
ceph tell {osd.id} injectargs "--config value"
的放方式动态调整恢复速度,使其快速完成恢复操作。 - 当恢复完成后,再次将Backfill和Recovery调整回默认值,以降低对Client I/O的影响。
Recovery 参数说明
参数 | 描述 | 默认值 |
---|---|---|
osd recovery max active | 每个 OSD 一次处理的活跃恢复请求数量,增大此值能加速恢复,但它们会增加集群负载。 | 15 |
osd recovery max chunk | 一次推送的数据块的最大尺寸。 | 8 << 20 |
osd recovery threads | 数据恢复时的线程数。 | 1 |
osd recovery thread timeout | 恢复线程最大死亡时值。 | 30 |
Backfill 参数说明
参数 | 描述 | 默认值 |
---|---|---|
osd max backfills | 单个 OSD 允许的最大回填操作数。 | 1 |
osd backfill full ratio | OSD 的占满率达到多少时拒绝接受回填请求 | 0.85 |
osd backfill retry interval | 重试回填请求前等待秒数 | 10.0 |