bluestore对象挂载到系统进行提取

前言

之前在filestore里面,pg是直接暴露到文件系统的,也就是可以直接进去查看或者拷贝,在极端情况下,多个osd无法启动,pg无法导出的时候,那么对pg内部对象的操作处理,是可以作为最后恢复数据的一种方式的

这个在bluestore里面就没那么直接了,之前也碰到过一次,osd无法启动,内部死循环,pg无法export,osd就僵死在那里了,实际上,bluestore也提供了接口把对象能够直接显示出来

慢话crush-各种crush组合


desk

前言

ceph已经是一个比较成熟的开源的分布式存储了,从功能角度上来说,目前的功能基本能够覆盖大部分场景,而社区的工作基本上是在加入企业级的功能和易用性还有性能等方面在发力在,不管你是新手还是老手,都绕不开的一个问题就是crush,而crush是决定着数据的分布的,很多人并不理解为什么会有这个crush,这个算法到底是怎么去计算的,本篇是从更偏向用户层来对这个分布做一个解释,以及我们该怎么去动这个crush,本篇的内容不需要有代码开发能力,只需要稍加思考,都可以理解,剩下的就是你自己的选择了

所有的存储都离不开分布的问题,存储是不是做副本,副本是如何分布的都是有自己的一套逻辑的

这里拿gluster做例子,gluster的数据分布就是通过子卷来控制的,副本几,那么数据的子卷就是由几个组成,一个文件是默认落到一个子卷的,如果没做分片的话,然后所有的盘符的子卷组成了一整个的卷,数据是散列到子卷里面去的,这种子卷的组合是固定的,组合是通过命令的先后顺序来控制的,也就是数据的分布组合是固定的

而ceph的灵活之处在于把这种子卷的逻辑向下走了一层,通过一个pg的概念,以目录为结构做出很多这样的组合来,gluster是以磁盘(或者理解为固定目录)为粒度做brick,而ceph则是以可以飘动的pg来做分布,而pg的分布则可以通过人为的控制来实现我们的需求,好了,准备进入本篇的内容

ceph的pg的分布的快速查看


crush-chart.png-99.9kB

前言

本篇的内容实际上是另外一篇文章的字篇章,在另外一篇文章当中,将会对crush的分布的调整的做一次总结,用比较简单的方式来展示各种crush的区别

在做这个工作过程中,为了更好的能展示出效果,就有了下面的这个小工具的出现

vdbench测试实时可视化显示


bench

前言

前一段时间碰到一个系统,用rados bench 去跑都还比较正常,但是一跑数据库就非常慢,测试工具会抛出延时过大的提示,经过排查发现,云平台中有一台虚拟机还运行着备份数据库的服务,而这个备份软件是需要反复写一个标记文件的,因为这个标记文件只对应了一个对象,一个对象对应了一个pg,一个pg对应到固定的ssd上面,那个ssd的io几乎被这一个操作给打满了,然后全局的请求到了这个osd上面的时候,都会变得慢和卡顿

出现这种情况,在业务层面可能需要做好分离,我们在面对这种情况的时候该如何提前就做好测试,对自己的性能的剩余性能做一个更好的评估,什么时候需要分离,什么时候不需要分离,这个都是需要用数据来说话的

性能测试的时候,经常面临的这些问题,你告诉我这个环境能跑多少iops,带宽能多大,我的数据库能不能跑,这个我也没法回答,一般来说我都是说需要根据环境进行测试,这个测试也只能根据自己设计的模型进行测试,而越接近用户使用场景的业务模型,就越能反应真实的业务能力,最好的测试就是直接拿对接的软件进行测试,接什么业务就用什么业务压

处理ceph incompelete的经验


fix.png-40kB

前言

最近已经见到几个环境出现过incompelete了,这个在很久以前Jewel正在合入mark-complete工具的时候就有做过类似的处理,但是随着处理的环境越来越多,这个地方还是有些需要注意的,本篇是写一些需要注意的点

一般来说是环境有多个机器同时坏盘或者掉电,或者掉主机引起的

cephfs根据存储池显示df容量


pool.png-115.2kB

前言

如果用cephfs比较多,应该都知道,在cephfs的客户端进行mount以后,看到的容量显示的是集群的总的容量,也就是你的总的磁盘空间是多少这个地方显示的就是多少

这个一直都是这样显示的,我们之前在hammer版本的时候,阿茂和大黄一起在公司内部实现了这个功能,社区会慢慢的集成一些类似的面向面向商业用户的需求

社区已经开发了一个版本,接口都做的差不多了,那么稍微改改,就能实现想要的需求的

本篇内的改动是基于内核客户端代码的改动,改动很小,应该能够看的懂

快速构建ceph可视化监控系统


granfa

前言

ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统

本系统组件如下:

  • ceph-jewel版本
  • ceph_exporter的jewel版本
  • prometheus的2.3.2版本
  • grafana的grafana-5.2.1版本
  • Ceph grafana的插件- Clusterby Cristian Calin

适配的系统为centos7

资源如下:

http://static.zybuluo.com/zphj1987/jiwx305b8q1hwc5uulo0z7ft/ceph_exporter-2.0.0-1.x86_64.rpm
http://static.zybuluo.com/zphj1987/1nu2k4cpcery94q2re3u6s1t/ceph-cluster_rev1.json
http://static.zybuluo.com/zphj1987/7ro7up6r03kx52rkwy1qjuwm/prometheus-2.3.2-1.x86_64.rpm
http://mysrc.cn-bj.ufileos.com/grafana-5.2.1-1.x86_64.rpm

以上资源均可以直接用wget进行下载,然后直接安装

利用s3-test进行ceph的接口兼容性测试


s3

前言

ceph的rgw能够提供一个兼容性的s3的接口,既然是兼容性,当然不可能是所有接口都会兼容,那么我们需要有一个工具来进行接口的验证以及测试,这个在其他测试工具里面有类似的posix接口验证工具,这类的工具就是跑测试用例,来输出通过或者不通过的列表

用此类的工具有个好的地方就是,能够对接口进行验证,来避免版本的更新带来的接口破坏

ceph erasure默认的min_size分析


desk.jpg-47.1kB

引言

最近接触了两个集群都使用到了erasure code,一个集群是hammer版本的,一个环境是luminous版本的,两个环境都出现了incomplete,触发的原因有类似的地方,都是有osd的离线的问题

准备在本地环境进行复验的时候,发现了一个跟之前接触的erasure不同的地方,这里做个记录,以防后面出现同样的问题