ceph集群数据均衡工具balancer

文章目录

以下内容均参考官网:https://docs.ceph.com/en/reef/rados/operations/balancer/

ceph balancer

在老版本的ceph集群中,需要通过 ceph reweight-by-pg 或者 ceph reweight-by-utilization来数据均衡。

在Luminous或更新ceph版本中,为了实现ceph集群中数据均衡分布,balancer工具能优化osd上pg的分布。balancer工具可以自动执行也可以手动执行。

工具状态

c 复制代码
ceph balancer status 

该工具的限制

如果集群中有数据处于降级(degraded)状态,那么ceph balancer就不会对pg分布做任何调整。

否则,balancer将逐步调整一小部分不均衡的 PG(Placement Groups)以达到数据均衡的目的。默认调整pg的阈值是 5%。也可以通过调整参数target_max_misplaced_ratio来修改默认值:

c 复制代码
ceph config set mgr target_max_misplaced_ratio .07   # 7%

每均衡一次都会sleep一段时间,可以修改sleep的秒数:

c 复制代码
ceph config set mgr mgr/balancer/sleep_interval 60

如果要设置自动均衡开始的时间(以 HHMM 格式)(比如:0000 表示午夜 12:00(午夜),1230 表示中午 12:30,1530 表示下午 3:30,2359 表示晚上 11:59。):

c 复制代码
ceph config set mgr mgr/balancer/begin_time 0000

设置自动均衡结束的时间(以 HHMM 格式):

c 复制代码
ceph config set mgr mgr/balancer/end_time 2359

自动均衡可以限制在一周的固定几天执行:

设置在某一天之后执行(0表示星期日,1表示星期一,...):

c 复制代码
ceph config set mgr mgr/balancer/begin_weekday 0

设置自动均衡在某一天之前执行(0表示星期日,1表示星期一,...):

c 复制代码
ceph config set mgr mgr/balancer/end_weekday 6

默认是对所有存储池都均衡。通过设定存储池id,设置对特定的存储池自动均衡:

c 复制代码
ceph config set mgr mgr/balancer/pool_ids 1,2,3

如何查看存储池的id:

c 复制代码
ceph osd pool ls detail

支持的模式:

  • crush-compat:
    在这种模式下,osd正常的权重应为对应磁盘的容量大小,以反映设备上计划存储的数据目标量。之后,平衡器将优化权重集的值,通过小幅度增加或减少权重,以实现尽可能接近目标分布。(由于 PG 到osd的映射过程是一个伪随机过程。那么osd上的数据分布就不一定是完全均衡的。因此,balancer旨在通过优化权重到数据均衡的目的。)
  • upmap:
    在这种模式下,可以控制单个pg的映射过程,使其映射至指定的osd。但是如果需要使用这种模式,ceph版本必须是L版本或更新版本。

手动执行balancer

分为以下三步:

  • 制定计划
  • 评估数据分布的质量,(分析当前的 PG 分布,以及执行计划后的 PG 分布)
  • 执行计划

评估当前集群或特定存储池或特定计划的数据分布:

c 复制代码
ceph balancer eval <option>
ceph balancer eval <pool-name>

显示评估细节:

c 复制代码
ceph balancer eval-verbose {<option>} 

根据当前配置,指示balancer生成一个计划,并指定计划名称:

c 复制代码
ceph balancer optimize <plan> 

查看计划内容:

c 复制代码
ceph balancer show <plan-name>

显示所有计划:

c 复制代码
ceph balancer ls

删除旧计划:

c 复制代码
ceph balancer rm <plan-name>

评估执行特定计划后产生的数据分布:

c 复制代码
ceph balancer eval <plan-name>

如果预计一个计划会改善数据分布(即该计划的得分低于当前集群状态的得分),可以通过运行以下命令来执行该计划:

c 复制代码
ceph balancer execute <plan-name>
相关推荐
一名路过的小码农1 天前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
墨水\\4 天前
分布式----Ceph应用(下)
分布式·ceph
大G哥5 天前
基于K8S1.28.2实验rook部署ceph
java·ceph·云原生·容器·kubernetes
石兴稳6 天前
Ceph PG(归置组)的状态说明
ceph
石兴稳6 天前
Ceph层次架构分析
ceph
活老鬼6 天前
Ceph分布式存储
linux·运维·服务器·分布式·ceph
石兴稳8 天前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
石兴稳8 天前
Ceph的pool有两种类型
ceph
运维小文8 天前
ceph的集群管理
ceph·对象存储·存储·ceph集群管理·ceph节点管理
石兴稳9 天前
iSCSI 和SCSI的概述
ceph