Planet Ceph

Aggregated news from external sources

  • April 27, 2017
    Ceph根据Crush位置读取数据

    前言 在ceph研发群里面看到一个cepher在问关于怎么读取ceph的副本的问题,这个功能应该在2012年的时候,我们公司的研发就修改了代码去实现这个功能,只是当时的硬件条件所限,以及本身的稳定性问题,后来没有在生产当中使用我们都知道ceph在写数据的时候,是先写主本,然后去写副本,而读取的时候,实际上只有主本能够提供服务,这对于磁盘的整体带宽来说,并没有充分的发挥其性能,所以能够读取副本当然是会有很大好处的,特别是对于读场景比较多的情况 那么在ceph当中是不是有这个功能呢?其实是有的,这个地方ceph更往上走了一层,是基于crush定义的地址去进行文件的读取,这样在读取的客户端眼里,就没有什么主副之分,他会按自己想要的区域去尽量读取,当然这个区域没有的时候就按正常读取就可以了

  • April 26, 2017
    关于backfill参数建议

    前言 在做一个比较满的集群的扩容的时候,遇到了一些问题,在这里做下总结,一般来说很难遇到,扩容要趁早,不然出的问题都是稀奇古怪的一些问题 建议 环境一般来说在70%左右就需要考虑扩容了,这个时候的扩容数据迁移的少,遇到的问题自然会少很多,所谓的参数设置并不是一个单纯的参数的设置,所以一般来说在调优参数的时候,个人觉得只有适配硬件进行调优,所以本篇的参数同样是一个组合形式的 首先罗列出本篇涉及的所有参数 mon_osd_full_ratio = 0.95osd_backfill_full_ratio = 0.85osd_max_backfills = 1 最少的OSD的PG数目 min_pg=`ceph osd df|awk ‘{print $9}’|awk ‘NF’|grep -v PGS|sort|head -n 1` 那么最好满足 (osd_max_backfills/min_pg)+osd_backfill_full_ratio < mon_osd_full_ratio 这个在老版本里面进行backfill full的检测的时候,只在启动backfill的时候做了检测,如果设置的backfill足够大,而迁移的又足够多的时候,就会一下涌过去,直径把OSD给弄full然后挂掉了,新版本还没验证是否做了实时控制,但是如果遵循了上面的设置,即使没控制一样不会出问题 总结 有的参数不光对速度有控制,对量上面同样可能有影响,所以在设置的时候,需要尽量综合考虑 变更记录 Why Who When 创建 武汉-运维-磨渣 2017-04-27 Source: zphj1987@gmail (关于backfill参数建议)

  • April 26, 2017
    mds/journal.cc: 2929: FAILED assert解决

    前言 在处理一个其他双活MDS无法启动环境的时候,查看mds的日志看到了这个错误mds/journal.cc: 2929: FAILED assert(mds->sessionmap.get_version() == cmapv),在查询资料以后,暂时得到了解决,在生产环境下还是不建议使用双活MDS 处理步骤 这个是双MDS多活情况下出现的一个问题,在什么情况下出现还无法判断,目前只看到是有这个问题,并且有其他人也出现了 issue17113按照disaster-recovery建议的步骤做了如下处理: 备份下journal cephfs-journal-tool journal export backup.bin cephfs-journal-tool journal resetcephfs-table-tool all reset session 做了上两步后环境并没有恢复,还有个下面的操作没有做,这个操作会引起数据的丢失, MDS ranks other than 0 will be ignored: as a result it is possible for this to result in data loss,所以暂缓操作 ceph fs reset <fs name> –yes-i-really-mean-it 再次启动后还是,看到日志提示的是sessionmap的问题,正常情况下这个地方重置了session应该是可以好的 Yan, Zheng 2014年的时候在邮件列表里面提过一个配置 mds wipe_sessions …Read more

  • April 26, 2017
    rados put striper功能的调试

    前言 之前对于striper这个地方的功能并没研究太多,只是知道这个里面可以以条带方式并行的去写对象,从而加大并发性来提高性能,而默认的条带数目为1,也就是以对象大小去写,并没有条带,所以不是很好感觉到差别,今天就尝试下用rados命令来看下这个条带是怎么回事 实践过程 最开始我的集群是用rpm包进行安装的,这个可以做一些常规的测试,如果需要改动一些代码的话,就比较麻烦了,本文后面会讲述怎么改动一点点代码,然后进行测试 我们一般来说用rados put操作就是一个完整的文件,并不会进行拆分,我们尝试下看下 [root@lab8106 ~]# dd if=/dev/zero of=16M bs=4M count=4[root@lab8106 ~]# rados -p rbd put 16M 16M[root@lab8106 ~]# rados -p rbd stat 16Mrbd/16M mtime 2017-04-26 15:08:14.000000, size 16777216 可以看到我们put 16M的文件,在后台就是一个16M的对象 这个rados命令还有个参数是striper [root@lab8106 ~]# rados –help|grep stri –striper Use radostriper interface rather than pure rados 我们来用这个命令试一下 [root@lab8106 ~]# dd if=/dev/zero of=strip16M bs=4M count=4[root@lab8106 …Read more

  • April 25, 2017
    Improving PGs distribution with CRUSH weight sets

    In a Ceph cluster with a single pool of 1024 Placement Groups (PGs), the PG distribution among devices will not be as expected. (see Predicting Ceph PG placement for details about this uneven distribution). In the following, the difference between the expected number of PGs on a given host or device and the actual number …Read more

  • April 19, 2017
    Cephfs的文件存到哪里了

    前言 在ceph里面使用rbd接口的时候,存储的数据在后台是以固定的prifix的对象存在的,这样就能根据相同的前缀对象去对image文件进行拼接或者修复 在文件系统里面这一块就要复杂一些,本篇就写的关于这个,文件和对象的对应关系是怎样的,用系统命令怎么定位,又是怎么得到这个路径的 实践 根据系统命令进行文件的定位 写入测试文件 dd if=/dev/zero of=/mnt/testfile bs=4M count=10 查看文件的映射 [root@lab8106 mnt]# cephfs /mnt/testfile mapWARNING: This tool is deprecated. Use the layout.* xattrs to query and modify layouts. FILE OFFSET OBJECT OFFSET LENGTH OSD 0 10000001188.00000000 0 4194304 1 4194304 10000001188.00000001 0 4194304 0 8388608 10000001188.00000002 0 4194304 1 12582912 10000001188.00000003 0 4194304 …Read more

  • April 19, 2017
    Implementing a more scalable storage management framework in openATTIC 3.0

    Over the course of the last years, we’ve been working on expanding and enhancing both our “traditional” local storage management functionality (NFS/CIFS/iSCSI on top of local attached disks) as well as the Ceph management features in openATTIC. Along the way, it became more and more clear to us that our current approach for managing storage …Read more

  • April 19, 2017
    为什么删除的Ceph对象还能get

    前言 在很久以前在研究一套文件系统的时候,当时发现一个比较奇怪的现象,没有文件存在,磁盘容量还在增加,在研究了一段时间后,发现这里面有一种比较奇特的处理逻辑 这套文件系统在处理一个文件的时候放入的是一个临时目录,最开始在发送第一个写请求后,在操作系统层面马上进行了一个delete操作,而写还在继续,并且需要处理这个数据的进程一直占着的,一旦使用完这个文件,不需要做处理,这个文件就会自动释放掉,而无需担心临时文件占用空间的问题 在Ceph集群当中,有人碰到了去后台的OSD直接rm一个对象后,在前端通过rados还能get到这个删除的对象,而不能rados ls到,我猜测就是这个原因,我们来看下怎么验证这个问题 验证步骤 准备测试数据,并且put进去集群 [root@lab8106 ~]# cat zp1 sdasdasd[root@lab8106 ~]# rados -p rbd put zp1 zp1[root@lab8106 ~]# rados -p rbd lszp1 找到测试数据并且直接 rm 删除 [root@lab8106 ~]# ceph osd map rbd zp1osdmap e90 pool ‘rbd’ (3) object ‘zp1’ -> pg 3.43eb7bdb (3.1b) -> up ([0], p0) acting ([0], p0)[root@lab8106 ~]# ll /var/lib/ceph/osd/ceph-0/current/3.1b_head/DIR_B/DIR_D/zp1__head_43EB7BDB__3 -rw-r–r– …Read more

  • April 19, 2017
    Ceph删除OSD上一个异常object

    前言 ceph里面的数据是以对象的形式存储在OSD当中的,有的时候因为磁盘的损坏或者其它的一些特殊情况,会引起集群当中的某一个对象的异常,那么我们需要对这个对象进行处理 在对象损坏的情况下,启动OSD有的时候都会有问题,那么通过rados rm的方式是没法发送到这个无法启动的OSD的,也就无法删除,所以需要用其他的办法来处理这个情况 处理步骤 查找对象的路径 [root@lab8106 ~]# ceph osd map rbd rbd_data.857e6b8b4567.00000000000000baosdmap e53 pool ‘rbd’ (0) object ‘rbd_data.857e6b8b4567.00000000000000ba’ -> pg 0.2daee1ba (0.3a) -> up ([1], p1) acting ([1], p1) 先找到这个对象所在的OSD以及PG 设置集群的noout [root@lab8106 ~]#ceph osd set noout 这个是为了防止osd的停止产生不必要的删除 停止OSD [root@lab8106 ]#systemctl stop ceph-osd@1 如果osd已经是停止的状态就不需要做这一步 使用ceph-objectstore-tool工具删除单个对象 [root@lab8106 ]#ceph-objectstore-tool –data-path /var/lib/ceph/osd/ceph-1/ –journal-path /var/lib/ceph/osd/ceph-1/journal –pgid 0.3a rbd_data.857e6b8b4567.00000000000000ba remove …Read more

  • April 18, 2017
    Faster Ceph CRUSH computation with smaller buckets

    The CRUSH function maps Ceph placement groups (PGs) and objects to OSDs. It is used extensively in Ceph clients and daemons as well as in the Linux kernel modules and its CPU cost should be reduced to the minimum. It is common to define the Ceph CRUSH map so that PGs use OSDs on different …Read more

  • April 18, 2017
    Faster Ceph CRUSH computation with smaller buckets

    The CRUSH function maps Ceph placement groups (PGs) and objects to OSDs. It is used extensively in Ceph clients and daemons as well as in the Linux kernel modules and its CPU cost should be reduced to the minimum. It is common to define the Ceph CRUSH map so that PGs use OSDs on different …Read more

  • April 17, 2017
    Disabling scenarios in ceph-docker

    I recently completed a full resync from Kraken to Jewel in ceph-docker in which I introduced a new feature to disable scenarios. Running an application on bleeding edge technology can be tough and challenging for individuals and also for companies. Even me, as a developer and for bleeding edge testers I’m tempted to release unstable …Read more

Careers