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>
相关推荐
怡雪~10 小时前
Kubernetes使用Ceph存储
ceph·容器·kubernetes
学Linux的语莫11 天前
负载均衡,高可用,监控服务搭建总结
linux·服务器·分布式·ceph·lvs
运维小文11 天前
cephFS的使用以及K8S对接cephFS
ceph·云原生·容器·kubernetes·对象存储·cephfs
学Linux的语莫14 天前
ceph集群搭建,ceph块存储,文件存储,对象存储
linux·服务器·分布式·ceph
Rverdoser14 天前
K8S对接ceph的RBD块存储
ceph·容器·kubernetes
学Linux的语莫18 天前
Ceph对象存储
linux·运维·服务器·ceph
q_9718 天前
ceph基本概念
ceph
学Linux的语莫19 天前
Ceph文件存储
linux·运维·服务器·网络·ceph
学Linux的语莫19 天前
ceph相关的命令
linux·服务器·ceph
运维小文20 天前
ceph的存储池管理
ceph·云原生·对象存储·存储·分布式存储·cephfs