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,意外不?
前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...
随机推荐
- mysql锁 转
参考文章:https://blog.csdn.net/puhaiyang/article/details/72284702 一.mysql锁的结构图 如上图所示,针对mysql的innodb存储引擎, ...
- Vue内容
vue中的过滤器 moeths点击 过滤器的含义 过滤器就是把原有的数据过一遍 放到页面中 不会改变原有的数据 只是在原有的数据上增加新的数据
- CTCall简介(后续会继续补充)
使用CTCall需要导入CoreTelephony.framework框架. CTCall的基本使用 (1)初始化call CFStringRef number = CFSTR("15555 ...
- Cisco思科模拟器交换机划分VLAN 入门详解 - 精简归纳
Cisco思科模拟器交换机划分VLAN 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 24 转载请注明出处!️ 附: 交流方式: ️ ️ ️ QQ: 1846334075 We ...
- maven 获取pom.xml的依赖---即仓库搜索服务
常用仓库地址: http://repository.sonatype.org/ (https://repository.sonatype.org/)如下图: http://www.mvnrepo ...
- 第三章 MySQL的多实例
一.MySQL服务构成 1.MySQL程序结构 1.连接层 2.sql层 3.存储引擎层 2.MySQL逻辑结构 1.库 2.表:元数据+真实数据行 3.元数据:列+其它属性(行数+占用空间大小+权限 ...
- 栈&队列&并查集&哈希表(julyedu网课整理)
date: 2018-11-25 08:31:30 updated: 2018-11-25 08:31:30 栈&队列&并查集&哈希表(julyedu网课整理) 栈和队列 1. ...
- (CS229)监督学习应用和梯度下降
监督学习:基于标记数据的学习 监督学习又举了两个例子:回归问题regression在连续数据上的模型构建问题 和 分类问题 classification 在离散数据上的问题 无监督学习:未标记的学习 ...
- ORA-01078: failure in processing system parameters 问题的解决方法(oracle 11g)
https://blog.csdn.net/lzwgood/article/details/26358725
- 联赛模拟测试25 C. Repulsed 贪心+树形DP
题目描述 分析 考虑自底向上贪心 \(f[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的需要灭火器的房间数,\(g[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的多余灭火器 ...