前言

ceph比较老的版本使用的reweight或者osd weight来调整平衡的,本篇介绍的是ceph新的自带的插件balancer的使用,官网有比较详细的操作手册可以查询

使用方法

查询插件的开启情况

[root@node1 ceph]# ceph mgr module ls
{
"enabled_modules": [
"balancer",
"restful",
"status"
],
"disabled_modules": [
"dashboard",
"influx",
"localpool",
"prometheus",
"selftest",
"telemetry",
"zabbix"
]
}

默认balancer就是enable的

查询balancer活动情况

[root@node1 ceph]# ceph  balancer status
{
"last_optimize_duration": "",
"plans": [],
"mode": "none",
"active": false,
"optimize_result": "",
"last_optimize_started": ""
}

可以看到active是false,这里有手动的方法和自动的方法,我一般使用自动的,然后调整完了关闭

首先设置兼容模式

ceph balancer mode crush-compat

开启调整前,我们需要先看下我们的调整的效果,这里可以用

查询osd上的pg数

提供的脚本来进行查询,效果如下

[root@node1 ceph]# sh getpg.sh
dumped all pool : 6 | SUM
------------------------
osd.0 159 | 159
osd.1 136 | 136
osd.2 167 | 167
osd.3 163 | 163
osd.4 143 | 143
------------------------
SUM : 768 |
Osd : 5 |
AVE : 153.60 |
Max : 167 |
Osdid : osd.2 |
per: 8.7% |
------------------------
min : 136 |
osdid : osd.1 |
per: -11.5% |

之所以要这个脚本,是因为自带的提供的是osd上面的pg之和,有的时候我们的存储池混用物理osd的,上面的有的空存储池的pg会影响查看效果,所以需要分存储池去计算统计

开启调整

ceph balancer on

查看情况

[root@node1 ceph]# ceph  balancer status
{
"last_optimize_duration": "0:00:00.989178",
"plans": [],
"mode": "crush-compat",
"active": true,
"optimize_result": "Optimization plan created successfully",
"last_optimize_started": "Wed Jun 17 14:34:53 2020"
}

现在的这个状态查询比以前做的好了,还带上了最后的执行时间,从监控来看,1分钟会触发一次,差不多等个几分钟,基本就调整完了,这个的前提是空的环境,有数据的环境,那就看每一轮的需要迁移的数据量了,所以搭建完集群,一定需要调整平衡

我们检查下我们的环境

[root@node1 ceph]# sh getpg.sh
dumped all pool : 6 | SUM
------------------------
osd.0 153 | 153
osd.1 153 | 153
osd.2 154 | 154
osd.3 154 | 154
osd.4 154 | 154
------------------------
SUM : 768 |
Osd : 5 |
AVE : 153.60 |
Max : 154 |
Osdid : osd.2 |
per: 0.3% |
------------------------
min : 153 |
osdid : osd.1 |
per: -0.4% |

再次查询

[root@node1 ceph]# ceph  balancer status
{
"last_optimize_duration": "0:00:00.114673",
"plans": [],
"mode": "crush-compat",
"active": true,
"optimize_result": "Unable to find further optimization, change balancer mode and retry might help",
"last_optimize_started": "Wed Jun 17 14:40:57 2020"
}

效果相当惊人,结果提示这个无法更好了,这个调整看自己接受的程度了,之前遇到过一次主机不对称的crush,实际上会出现永远调不平的情况,所以自己判断下即可,目前的情况非常的均衡了,这个时候我个人的操作是关闭掉这个调整,以免后面有变化,有数据的时候自动触发了调整引起不必要的麻烦

关闭自动平衡

[root@node1 ceph]# ceph balancer off
[root@node1 ceph]# ceph balancer status
{
"last_optimize_duration": "0:00:00.114152",
"plans": [],
"mode": "crush-compat",
"active": false,
"optimize_result": "Unable to find further optimization, change balancer mode and retry might help",
"last_optimize_started": "Wed Jun 17 14:44:58 2020"
}

手动调整方法

ceph balancer optimize tune
ceph balancer execute tune

总结

现在的平衡跟之前通过weight的调整,最终的效果比之前会好很多,之前H版本J版本一个集群能调整到5%,基本就是调整极限了

变更记录

Why Who When
创建 武汉-运维-磨渣 2020-06-17

ceph的pg平衡插件balancer的更多相关文章

  1. 调整ceph的pg数(pg_num, pgp_num)

    https://www.jianshu.com/p/ae96ee24ef6c 调整ceph的pg数 PG全称是placement groups,它是ceph的逻辑存储单元.在数据存储到cesh时,先打 ...

  2. Ceph之PG数调整

    1. PG介绍 PG, Placement Groups.CRUSH先将数据分解成一组对象,然后根据对象名称.复制级别和系统中的PG数等信息执行散列操作,再将结果生成PG ID.可以将PG看做一个逻辑 ...

  3. ceph 存储池PG查看和PG存放OSD位置

    1. 查看PG (ceph-mon)[root@controller /]# ceph pg stat 512 pgs: 512 active+clean; 0 bytes data, 1936 MB ...

  4. Ceph:pg peering过程分析

    转自:https://www.ustack.com/blog/ceph%ef%bc%8dpg-peering/ Peering:互为副本的三个(此处为设置的副本个数,通常设置为3)pg的元数据达到一致 ...

  5. Ceph中PG和PGP的区别

    http://www.zphj1987.com/2016/10/19/Ceph%E4%B8%ADPG%E5%92%8CPGP%E7%9A%84%E5%8C%BA%E5%88%AB/ 一.前言 首先来一 ...

  6. 分布式存储Ceph之PG状态详解

    https://www.jianshu.com/p/36c2d5682d87 1. PG介绍 继上次分享的<Ceph介绍及原理架构分享>,这次主要来分享Ceph中的PG各种状态详解,PG是 ...

  7. ceph的pg的分布的快速查看

    前言 本篇的内容实际上是另外一篇文章的字篇章,在另外一篇文章当中,将会对crush的分布的调整的做一次总结,用比较简单的方式来展示各种crush的区别 在做这个工作过程中,为了更好的能展示出效果,就有 ...

  8. ceph PG数量调整/PG的状态说明

    优化: PG Number PG和PGP数量一定要根据OSD的数量进行调整,计算公式如下,但是最后算出的结果一定要接近或者等于一个2的指数.调整PGP不会引起PG内的对象的分裂,但是会引起PG的分布的 ...

  9. 分布式存储系统之Ceph集群存储池、PG 与 CRUSH

    前文我们了解了ceph集群状态获取常用命令以及通过ceph daemon.ceph tell动态配置ceph组件.ceph.conf配置文件相关格式的说明等,回顾请参考https://www.cnbl ...

随机推荐

  1. 机器学习 KNN算法原理

    K近邻(K-nearst neighbors,KNN)是一种基本的机器学习算法,所谓k近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.比如:判断一个人的人品,只需要观察 ...

  2. Redis不重启的情况下 切换持久化模式

    确保redis版本在2.2以上 [root@localhost /]# redis-server -v Redis server v=4.0.10 sha=00000000:0 malloc=jema ...

  3. jsoncpp笔记

    Json Json是一种轻量级数据交换格式,可以表示数字,字符串,布尔值,null,数组,键值对: { "encoding" : "UTF-8", " ...

  4. docker 启动redis/nginx

    1.docker 启动redis   # redis docker run -itd --name redis-test -p 16379:6379 redis   2.docker 启动nginx ...

  5. centos8安装fastdfs6.06集群方式三之:storage的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  6. Linux运维学习第二周记

    1 梨花淡白柳深青, 2 柳絮飞时花满城. 3 惆怅东栏一株雪, 4 人生看得几清明. 老牛望春满地绿! 第二周直接要起飞了! 仍然是最基础最基础的东西,但也是特别多,的别重要! 第二周学记 1.Li ...

  7. JUC---02JUC辅助类

    一.java.util.concurrent.CountDownLatch------减少计数 1.执行原理: ①.CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这 ...

  8. viewpage轮播图

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com ...

  9. 八皇后问题-recall算法

    #!/usr/bin/env python3# -*- coding: utf-8 -*-import numbersimport numpyimport math'''八皇后为题:在国际象棋棋盘上摆 ...

  10. 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案

    摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...