首页/系统与基础设施/存储速查/分布式存储数据再平衡原理
分布式与对象存储70 条

分布式存储数据再平衡原理

再平衡是实际数据分布向目标分布收敛的过程,包含为新增节点回填数据与为降级副本做恢复两类动作;二者都抢带宽与磁盘 IO,因此常规做法是错峰执行、按业务优先级控制速度并避免变更叠加。

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

再平衡在做什么

集群认为「数据应该在哪些节点上」有一套目标分布,当节点增减、权重调整或故障域变化时,实际分布与目标分布出现偏差,系统就会把数据搬过去,这个过程叫再平衡。它包含两类动作:为新增节点补齐数据的回填,以及为降级副本重建的恢复,两者都会抢占带宽与磁盘 IO。

基本信息

适用平台Ceph、HDFS、MinIO 等分布式存储
触发条件扩缩容、权重变更、节点故障恢复、PG 数调整
速度控制限速队列、暂停开关(如 noout、nobackfill、norecover)
观察命令集群健康、数据迁移量、单节点带宽与 IO

典型使用场景

  • 新增节点上线:控制回填速度避免白天业务高峰被拖慢
  • 故障节点回归:先确认数据是否落后再决定是否让它参与回填
  • 批量变更前的容量规划:预估迁移量、带宽占用与完成时间
  • 性能异常排查:区分是业务流量还是后台迁移在消耗 IO

速度与优先级控制

速度与优先级控制
ceph osd set nobackfill          # 暂停回填,保留恢复
ceph osd set norecover           # 暂停恢复,业务优先时使用
ceph osd unset nobackfill        # 业务低谷放开,让迁移继续
ceph osd dump | grep -E 'backfill|recover'  # 观察限速与状态位
ceph -s                          # 关注迁移中的对象量与速率

两类迁移的差别

类型触发场景关注点
回填 backfill新 OSD 上线或权重变化带宽占用大,可延迟做
恢复 recovery副本降级后重建直接影响数据可靠性,优先级更高
重均衡PG 重映射后按目标分布搬移批量变更时需分批执行
把回填安排在业务低谷是常规操作,但暂停不能太久:降级副本长期不恢复,集群的抗故障余量一直在低水位。
在迁移尚未完成时又发起新的拓扑变更,会让多轮迁移叠加,IO 压力与被再次搬移的数据量成倍增加。

迁移窗口安排

  • 把迁移安排在业务低谷并提前通知业务方,避免高峰期抢 IO
  • 按优先级先恢复降级副本,再为新增节点做回填
  • 限制单节点并发与带宽上限,防止前端链路被打满
  • 分批引入新节点,等上一批收敛再动下一批
  • 迁移完成后做一次容量与性能复测,确认达到预期
判断再平衡是否收敛看的是分布偏差是否回到阈值内,而不是迁移速率降到零:速率很低也可能只是被限速压住了。

易错点

  • 扩容后放任全速回填,业务高峰期 IO 被抢占,表现为性能突然集体下降
  • 长期用暂停开关压住回填,副本数不足时再掉一块盘就面临数据丢失
  • 多次拓扑变更紧接着做,迁移叠加导致长时间无法收敛
  • 不预估迁移量与耗时,扩容窗口安排过短,运维以为失败而重复操作

数据来源与参考

  • Ceph 官方文档:Backfill 与 Recovery 控制(nobackfill / norecover)
  • HDFS 官方文档:数据均衡器(Balancer)原理

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/distributed-data-rebalance-principle.html

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