前言

很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看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的可视化的更多相关文章

  1. 分布式存储ceph——(5)ceph osd故障硬盘更换

    正常状态:

  2. Ceph osd故障硬盘更换

    正常状态: 故障状态: 实施更换步骤: (1)关闭ceph集群数据迁移: osd硬盘故障,状态变为down.在经过mod osd down out interval 设定的时间间隔后,ceph将其标记 ...

  3. Ceph OSD从filestore 转换到 bluestore的方法

    前言 前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考 实践步骤 获取代码并安装 git clone https://github.c ...

  4. 如何测量Ceph OSD内存占用

    前言 这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法 火焰图里面也可以定位内存方面的问题,那个是通过一段时间的统计,以一个汇总的方式来查 ...

  5. 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 ...

  6. ceph osd 自动挂载的N种情况

    直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...

  7. ceph osd 批量删除

    ceph osd 批量删除,注意删除的是当前节点正在使用的osd,数据删除有风险,所以最后一步没有去format磁盘,给你留下一剂后悔药. #!/bin/bash osd_list=`mount|gr ...

  8. Ceph osd故障恢复

    1  调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...

  9. parted会启动你的ceph osd,意外不?

    前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...

随机推荐

  1. 19。删除链表倒数第N个节点

    class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next# 这道题还是很简单的,我们只 ...

  2. (在模仿中精进数据可视化03)OD数据的特殊可视化方式

    本文完整代码已上传至我的Github仓库https://github.com/CNFeffery/FefferyViz 1 简介 OD数据是交通.城市规划以及GIS等领域常见的一类数据,特点是每一条数 ...

  3. linux(centos8):安装java jdk 14 (java 14.0.2)

    一,下载jdk14 官方网站: https://www.oracle.com/java/ 下载页面: https://www.oracle.com/cn/java/technologies/javas ...

  4. C# 清除文本中的HTML标签

    /// <summary>          /// 清除文本中Html的标签          /// </summary>          /// <param n ...

  5. Python合集之Python开发环境在Windows系统里面搭建

    在上一个合集里面我们了解到了Python的基础信息及学习了Python对我们有什么用处,那么今天我们来了解一下,Python的开发环境该如何搭建.(注:Python的开发环境可以在Windows.MA ...

  6. user.ini Operation not permitted

    rm: cannot remove '/public/.user.ini': Operation not permitted chattr -i .user.ini rm -f .user.ini

  7. 常用的实现Javaweb页面跳转的方式

    我们有两大种方式来实现页面跳转:1.JS(javascript):2.jsp跳转 先说jsp(金j三s胖p):1.转发:request.getRequestDispatcher("1.jsp ...

  8. 安装 Homebrew&iterm2&Oh My Zsh

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/instal ...

  9. 11张图和源码带你解析Spring Bean的生命周期,建议收藏~!

    在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近把整个流程画成了一个流程图.待会儿使用流程图,说明以及代码的形式来说明整个声明周期的流程.注意因为代码比较多,这里的流程图 ...

  10. 浅谈OpenGL之DSA

    今天准备写一篇文章简单介绍一下OpenGL4.5引入的一个新的扩展ARB_direct_state_access,这个扩展为OpenGL引入了一个新的特性就是Direct State Acess,下文 ...