Backfill & Recovery 恢复优化

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