ceph osd tree的可视化
前言
很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看ceph osd tree的结果,当然是可以的,这里是把osd tree的结构进行了一个结构化输出,也可以理解为画出一个简单的结构图,比较适合给其它人讲解你对crush做了哪些改变,这个如果指着文字来讲估计很多人会听的云里雾里,如果有比较方便的方式出图就比较好了
为此写了一个小工具自己用,正好也可以看看我们对结构做简单调整后的效果
创建一个模拟集群
环境就一台机器,不需要用到磁盘,这里是模拟结构
创建一个大集群40台机器
seq 1 40 |xargs -i ceph osd crush add-bucket lab{} host
seq 1 40|xargs -i ceph osd crush move lab{} root=default
创建一个960个的集群
seq 1 960 |xargs -i ceph osd create
放到指定的主机
#! /bin/sh
for osd in `seq 0 959`
do
host=$(( (($osd / 24)) + 1 ))
ceph osd crush create-or-move osd.$osd 3.6 host=lab$host &
done
这里后台执行会快点,不然得等15分钟,执行完检查下有没有还在处理的进程即可
ps -ef|grep create-or-move
osd的一些结构
机器如果在远程可以上传临时文件
ceph osd tree -f json-pretty > zp.json
curl --upload-file ./zp.json https://transfer.sh/zp.json
得到的地址下载即可
默认结构,主机分组

960个osd的效果如图,节点太多了,图片本身输出的时候是高清图片可以放大去看的,并且主机如果不是这么多,显示效果会好一点,这里我们看的清楚是主机分组的
调整下rack结构
seq 1 8|xargs -i ceph osd crush add-bucket rack{} rack
seq 1 8|xargs -i ceph osd crush move rack{} root=default
#! /bin/sh
for host in `seq 1 40`
do
rack=$(( (((($host - 1)) / 5)) + 1 ))
ceph osd crush move lab$host rack=rack$rack &
done
调整完结构我们再看下

可以看到已经是多层的结构了,这个机器太多,我们来看下稍微少点机器的效果
12台机器每台12个osd的效果
主机分组

rack分组

后面的两个图的就比较清晰了
工具的一个作用是,在调整结构后,能够比较方便的去检查osd的结构,是不是均匀的,有没有调整错误,有没有某个host里面的osd个数跟其他不一样,这几种情况之前都遇到过
- 分rack的时候rack里面主机数目不一致,怎么调整pg都是不平衡
- 加osd的时候,某个主机的osd给漏掉了
如果你面对的是几十个osd的时候,你还会看看,当超过一百个的时候,一般来说就是走过场了,都会侥幸的认为,应该没事吧,好像是对的,当然通过各种方式都能实现
目前这个小工具是直接运行直接出图的,配色后面再处理下效果
总结
这个tree的图一直以为之前有写过,但是找不到代码了,重新实现了一次,也算一个梳理,这个图只是作为一个更大的体系里面很小的一部分的模块
本篇同样给出了模拟大集群的方式
Just for Fun
变更记录
| Why | Who | When |
|---|---|---|
| 创建 | 武汉-运维-磨渣 | 2018-09-19 |
ceph osd tree的可视化的更多相关文章
- 分布式存储ceph——(5)ceph osd故障硬盘更换
正常状态:
- Ceph osd故障硬盘更换
正常状态: 故障状态: 实施更换步骤: (1)关闭ceph集群数据迁移: osd硬盘故障,状态变为down.在经过mod osd down out interval 设定的时间间隔后,ceph将其标记 ...
- Ceph OSD从filestore 转换到 bluestore的方法
前言 前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考 实践步骤 获取代码并安装 git clone https://github.c ...
- 如何测量Ceph OSD内存占用
前言 这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法 火焰图里面也可以定位内存方面的问题,那个是通过一段时间的统计,以一个汇总的方式来查 ...
- Ceph osd启动报错osd init failed (36) File name too long
在Ceph的osd节点上,启动osd进程失败,查看其日志/var/log/ceph/ceph-osd.{osd-index}.log日志,报错如下: 2017-02-14 16:26:13.55853 ...
- ceph osd 自动挂载的N种情况
直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...
- ceph osd 批量删除
ceph osd 批量删除,注意删除的是当前节点正在使用的osd,数据删除有风险,所以最后一步没有去format磁盘,给你留下一剂后悔药. #!/bin/bash osd_list=`mount|gr ...
- Ceph osd故障恢复
1 调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...
- parted会启动你的ceph osd,意外不?
前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...
随机推荐
- 编程福利:50本C语言电子书,你还怕没书看吗!
推荐适合编程新手入门的几本经典的C语言书籍. 1.<C程序设计语言> C语言之父的著作,被称为C语言的的圣经.全球最经典的C语言教程.这本书最大的特点是精炼.读起来不会觉得"啰嗦 ...
- Python 面向对象(1): 类方法基础
# 类方法 # 如果 该class 没有要继承的类 则一般需要继承 object 基类 class ClassMethodBase(object): # 起手初始化 以示尊敬 def __init__ ...
- property和setter装饰器
# property装饰器 # 作用: 将一个get方法转换为对象的属性. 就是 调用方法改为调用对象 # 使用条件: 必须和属性名一样 # setter方法的装饰器: # 作用:将一个set方法转换 ...
- Linux用户和组管理命令-切换用户su
切换用户或以其他用户身份执行命令 su: 即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令 格式: su [options...] [-] [user [args...] ...
- buuoj[ACTF_Junior_2020]Splendid_MineCraft WriteUp
Splendid_MineCraft 题目标题就已经暗示这题是SMC了(self-modifying code). 工具:exeinfo,x32dbg和IDA7.0 先丢进exeinfo里查看相关信息 ...
- 使用AudioRecord录音
虽然不知道头文件是咋回事,但是还是得到了一个MP3文件,音质也很清晰.AudioRecord是先把录制的声音保存为字节流文件,可以边保存边读取,头文件是把保存的字节流文件解析为音频格式. public ...
- Git之同一台电脑连接多个远程仓库
问题描述 有时候我们需要在同一台电脑上连接多个远程仓库,比如连接两个GitHub账号,那么需要两个条件. 1.生成两对 私钥/公钥,并且密钥文件命名不能重复. 2.push 到remote时区分两个账 ...
- drf 权限校验设置与源码分析
权限校验 权限校验和认证校验必须同时使用,并且权限校验是排在认证校验之后的,这在源码中可以查找到其执行顺序. 权限校验也很重要,认证校验可以确保一个用户登录之后才能对接口做操作,而权限校验可以依据这个 ...
- 安装Mysql,开发权限,以及复制数据库
官网下载 https://downloads.mysql.com/archives/community/ 解压后安装,管理员身份打开cmd,转到mysql的bin目录,mysqld --ins ...
- 题解 P1541 【乌龟棋】
题目描述 乌龟棋的棋盘是一行\(N\)个格子,每个格子上一个分数(非负整数).棋盘第\(1\)格是唯一的起点,第\(N\)格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点. 乌龟棋中\(M\) ...