ceph erasure默认的min_size分析


desk.jpg-47.1kB

引言

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

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

cephfs元数据池故障的恢复

前言

cephfs 在L版本已经比较稳定了,这个稳定的意义个人觉得是在其故障恢复方面的成熟,一个文件系统可恢复是其稳定必须具备的属性,本篇就是根据官网的文档来实践下这个恢复的过程

实践过程

部署一个ceph Luminous集群

[root@lab102 ~]# ceph -v
ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)

创建filestore

ceph-deploy osd create  lab102  --filestore  --data /dev/sdb1  --journal /dev/sdb2

这里想用filestore进行测试就按上面的方法去创建osd即可

ceph的ISCSI GATEWAY



gateway

前言

最开始接触这个是在L版本的监控平台里面看到的,有个iscsi网关,但是没看到有类似的介绍,然后通过接口查询到了一些资料,当时由于有比较多的东西需要新内核,新版本的支持,所以并没有配置出来,由于内核已经更新迭代了几个小版本了,经过测试验证可以跑起来了,这里只是把东西跑起来,性能相关的对比需要根据去做

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


disk

前言

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

REDHAT 7.5beta 新推出的VDO功能


network

前言

关于VDO

VDO的技术来源于收购的Permabit公司,一个专门从事重删技术的公司,所以技术可靠性是没有问题的

VDO是一个内核模块,目的是通过重删减少磁盘的空间占用,以及减少复制带宽,VDO是基于块设备层之上的,也就是在原设备基础上映射出mapper虚拟设备,然后直接使用即可,功能的实现主要基于以下技术:

  • 零区块的排除:

    在初始化阶段,整块为0的会被元数据记录下来,这个可以用水杯里面的水和沙子混合的例子来解释,使用滤纸(零块排除),把沙子(非零空间)给过滤出来,然后就是下一个阶段的处理

  • 重复数据删除:

    在第二阶段,输入的数据会判断是不是冗余数据(在写入之前就判断),这个部分的数据通过UDS内核模块来判断(U niversal D eduplication S ervice),被判断为重复数据的部分不会被写入,然后对元数据进行更新,直接指向原始已经存储的数据块即可

  • 压缩:

    一旦消零和重删完成,LZ4压缩会对每个单独的数据块进行处理,然后压缩好的数据块会以固定大小4KB的数据块存储在介质上,由于一个物理块可以包含很多的压缩块,这个也可以加速读取的性能

上面的技术看起来很容易理解,但是实际做成产品还是相当大的难度的,技术设想和实际输出还是有很大距离,不然redhat也不会通过收购来获取技术,而不是自己去重新写一套了

CTDB使用rados object作为lock file


object

前言

服务器的服务做HA有很多种方式,其中有一种就是是用CTDB,之前这个是独立的软件来做HA的,现在已经跟着SAMBA主线里面了,也就是跟着samba发行包一起发行

之前CTDB的模式是需要有一个共享文件系统,并且在这个共享文件系统里面所有的节点都去访问同一个文件,会有一个Master会获得这个文件的锁

在cephfs的使用场景中可以用cephfs的目录作为这个锁文件的路径,这个有个问题就是一旦有一个节点down掉的时候,可能客户端也会卡住目录,这个目录访问会被卡住,文件锁在其他机器无法获取到,需要等到这个锁超时以后,其它节点才能获得到锁,这个切换的周期就会长一点了

CTDB在最近的版本当中加入了cluster mutex helper using Ceph RADOS的支持,本篇将介绍这个方式锁文件配置方式

Kernel RBD的QOS配置方案


io

前言

关于qos的讨论有很多,ceph内部也正在实现着一整套的基于dmclock的qos的方案,这个不是本篇的内容,之前在社区的邮件列表看过有研发在聊qos的相关的实现的,当时一个研发就提出了在使用kernel rbd的时候,可以直接使用linux的操作系统qos来实现,也就是cgroup来控制读取写入

cgroup之前也有接触过,主要测试了限制cpu和内存相关的,没有做io相关的测试,这个当然可以通过ceph内部来实现qos,但是有现成的解决方案的时候,可以减少很多开发周期,以及测试的成本

本篇将介绍的是kernel rbd的qos方案

Ceph对象主本损坏的修复方法


dog

前言

问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题

log [WRN] : slow request 60.793196 seconds old, received at osd_op(mds.0.188:728345234100006c6ddc.00000000 [o map-get-header 0-0,omap-get-vals 0~16,getxattr parent] snapc 0=[] ack+read+known_if_redirected+full_force e218901) currently started
heartbeat_map is_healthy ··· osd_op_tp thread ··· had timed out after 60

这个对象是元数据的一个空对象,保留数据在扩展属性当中