首页/系统与基础设施/存储速查/Ceph 数据恢复与回填机制
分布式与对象存储70 条

Ceph 数据恢复与回填机制

恢复用于重建丢失的那份数据,回填用于把整份归置组迁往新加入的设备。两者都由数据分布变化触发,会占用前端资源并让集群长时间处于降级状态,需要按状态与进度判断能否继续运维动作。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​‌​‌‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

恢复与回填的分工

集群里的数据重建分成两类。恢复是在数据分布不变的前提下,把某个设备上丢失的一份数据在其余设备上重新算出来;回填则是分布已经变化,把整个归置组的内容复制到新加入或新接管该归置组的设备上。设备突然掉线触发前者,新增设备、调整权重、修改分布规则触发后者。两者都会让部分归置组在完成前处于非最优状态,也都需要读写其余设备上的数据。

基本信息

适用平台分布式存储集群的存储设备层
作用对象对象池与纠删码池中的归置组
典型触发设备掉线、新增设备、权重或分布规则变化
并发参数每设备并发回填数与并发恢复请求数
观察命令集群状态、归置组统计、设备容量分布
临时手段可挂起回填,避免与前端业务争抢资源

典型使用场景

  • 设备重启或短暂掉线后:确认重建是否启动以及剩余进度
  • 扩容或下线设备:跟踪回填何时结束,再执行下一步动作
  • 业务高峰期:临时降低并发,把带宽与磁盘队列让给前端
  • 评估冗余水位:用未达标对象数判断还能承受几次同时故障
  • 判断集群是否真正空闲:还有未完成的数量时,容量与分布都不是最终值

进度观察与限流

进度观察与限流
ceph -s                                     # 查看降级与未迁移对象数量
ceph pg stat                                # 归置组整体状态统计
ceph osd df                                 # 各设备使用率,确认是否出现热点
ceph config get osd osd_max_backfills        # 查看每设备并发回填上限
ceph config set osd osd_max_backfills 1      # 降速,给前端让出资源
ceph osd pool stats                         # 对比各池的恢复量与客户端流量

状态判读

状态含义处置方向
active+clean归置组已达目标分布无需干预
degraded存在缺失的副本等待重建,关注剩余冗余
recovering 或 backfilling正在重建或迁移视业务压力决定是否限流
recovery_wait 或 backfill_wait排队等待资源检查限流参数与设备负载
undersized可用副本低于要求风险最高,优先安排处理
misplaced对象不在期望位置扩容或规则变更后的正常回填
未迁移对象数量是个很好用的指标:它表示已写入但位置不符合当前分布规则的对象数。扩容之后该数字上升属于预期现象,回填完成会回落到零;长期不归零通常说明回填被限流或被挂起。
重建期间集群冗余处于下降状态:此时再损失一份数据就可能造成不可恢复的缺口。重建未完成前不要发起因另一块设备下线的维护动作,也不要因为读写正常就认为数据是安全的。

限流取值如何取舍

限流不是固定值,而是随业务敏感度动态调整。前端延迟敏感的系统倾向压低并发,让重建拉长但业务稳定;冗余风险高的系统倾向放开并发,尽快补回副本,代价是短时间内的响应抖动。判断依据是当前降级程度、剩余冗余以及可以接受的业务波动窗口,而不是照搬他人的参数。

较新版本引入了基于调度器的资源控制方式,用于在客户端负载与后台重建之间分配配额,与旧的并发参数并存。可用的配置项与默认值随版本变化,调整前以官方文档为准。

易错点

  • 重建未完成就继续下线设备:冗余已经不足,再丢一份数据可能无法挽回
  • 把降级状态当成正常:读写仍可用,数据安全边界其实已经收窄
  • 限流过狠或挂起后忘记恢复:重建长期停滞,冗余缺口一直暴露
  • 回填与业务高峰重叠:前端延迟与吞吐同时恶化,原因却被归到业务量增长上
  • 只看集群总状态不看单设备使用率:热点设备逼近容量上限,回填可能被迫中断

数据来源与参考

  • Ceph 官方文档:数据恢复与回填(recovery / backfill)相关章节
  • Ceph 官方文档:OSD 配置参考中的恢复与回填参数

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/ceph-recovery-backfill.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​‌​‌‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​