Planet Ceph

Aggregated news from external sources

  • January 11, 2018
    How to create a vagrant VM from a libvirt vm/image

    It cost’s me some nerves and time to figure out how to create a vagrant image from a libvirt kvm vm and how to modify an existing one. Thanks to pl_rock from stackexchange for the awesome start. First of all you have to install a new vm as usual. I’ve installed a new vm with …Read more

  • January 6, 2018
    CTDB使用rados object作为lock file

    前言 服务器的服务做HA有很多种方式,其中有一种就是是用CTDB,之前这个是独立的软件来做HA的,现在已经跟着SAMBA主线里面了,也就是跟着samba发行包一起发行 之前CTDB的模式是需要有一个共享文件系统,并且在这个共享文件系统里面所有的节点都去访问同一个文件,会有一个Master会获得这个文件的锁 在cephfs的使用场景中可以用cephfs的目录作为这个锁文件的路径,这个有个问题就是一旦有一个节点down掉的时候,可能客户端也会卡住目录,这个目录访问会被卡住,文件锁在其他机器无法获取到,需要等到这个锁超时以后,其它节点才能获得到锁,这个切换的周期就会长一点了 CTDB在最近的版本当中加入了cluster mutex helper using Ceph RADOS的支持,本篇将介绍这个方式锁文件配置方式 实践过程 安装CTDB [root@customos ~]# yum install samba ctdb 检查默认包里面是否有rados的支持 [root@customos ~]# rpm -qpl ctdb-4.6.2-12.el7_4.x86_64.rpm…usr/libexec/ctdb/usr/libexec/ctdb/ctdb_event/usr/libexec/ctdb/ctdb_eventd/usr/libexec/ctdb/ctdb_killtcp/usr/libexec/ctdb/ctdb_lock_helper/usr/libexec/ctdb/ctdb_lvs/usr/libexec/ctdb/ctdb_mutex_fcntl_helper/usr/libexec/ctdb/ctdb_natgw/usr/libexec/ctdb/ctdb_recovery_helper/usr/libexec/ctdb/ctdb_takeover_helper/usr/libexec/ctdb/smnotify… 这个可以看到默认并没有包含这个rados的支持,这个很多通用软件都会这么处理,因为支持第三方插件的时候需要开发库,而开发库又有版本的区别,所以默认并不支持,需要支持就自己编译即可,例如fio支持librbd的接口就是这么处理的,等到插件也通用起来的时候,可能就会默认支持了 很多软件的编译可以采取源码的编译方式,如果不是有很强的代码合入和patch跟踪能力,直接用发行包的方式是最稳妥的,所以为了不破坏这个稳定性,本篇采用的是基于发行版本,增加模块的方式,这样不会破坏核心组件的稳定性,并且后续升级也是比较简单的,这个也是个人推荐的方式 查询当前使用的samba版本 [root@customos ~]# rpm -qa|grep sambasamba-4.6.2-12.el7_4.x86_64 打包新的CTDB 可以查询得到这个的源码包为samba-4.6.2-12.el7_4.src.rpm,进一步搜索可以查询的到这个src源码rpm包 http://vault.centos.org/7.4.1708/updates/Source/SPackages/samba-4.6.2-12.el7_4.src.rpm 下载这个rpm包 [root@customos ~]# wget http://vault.centos.org/7.4.1708/updates/Source/SPackages/samba-4.6.2-12.el7_4.src.rpm 如果下载比较慢的话就用迅雷下载,会快很多,国内的源里面把源码包的rpm都删除掉了,上面的是官网会有最全的包 解压这个rpm包 [root@customos ~]# rpm2cpio samba-4.6.2-12.el7_4.src.rpm |cpio -div 检查包的内容 [root@customos myctdb]# lsCVE-2017-12150.patch samba-v4-6-fix-cross-realm-refferals.patchCVE-2017-12151.patch samba-v4-6-fix-kerberos-debug-message.patchCVE-2017-12163.patch samba-v4-6-fix_net_ads_changetrustpw.patchCVE-2017-14746.patch …Read more

  • January 5, 2018
    Kernel RBD的QOS配置方案

    前言 关于qos的讨论有很多,ceph内部也正在实现着一整套的基于dmclock的qos的方案,这个不是本篇的内容,之前在社区的邮件列表看过有研发在聊qos的相关的实现的,当时一个研发就提出了在使用kernel rbd的时候,可以直接使用linux的操作系统qos来实现,也就是cgroup来控制读取写入 cgroup之前也有接触过,主要测试了限制cpu和内存相关的,没有做io相关的测试,这个当然可以通过ceph内部来实现qos,但是有现成的解决方案的时候,可以减少很多开发周期,以及测试的成本 本篇将介绍的是kernel rbd的qos方案 时间过长 首先介绍下几个测试qos相关的命令,用来比较设置前后的效果验证写入IOPS命令 fio -filename=/dev/rbd0 -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=4K -size=1G -numjobs=1 -runtime=60 -group_reporting -name=mytest 验证写入带宽的命令 fio -filename=/dev/rbd0 -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=4M -size=1G -numjobs=1 -runtime=60 -group_reporting -name=mytest 验证读取IOPS命令 fio -filename=/dev/rbd0 -direct=1 -iodepth 1 -thread -rw=read -ioengine=libaio -bs=4K -size=1G -numjobs=1 -runtime=60 -group_reporting -name=mytest 验证读取带宽命令 fio -filename=/dev/rbd0 …Read more

  • January 2, 2018
    Ceph对象主本损坏的修复方法

    前言 问题的触发是在进行一个目录的查询的时候,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 startedheartbeat_map is_healthy ··· osd_op_tp thread ··· had timed out after 60 这个对象是元数据的一个空对象,保留数据在扩展属性当中然后做了一个操作判断是对象损坏了: 直接列取omapkeys rados -p metadata listomapvals 100006c6ddc.00000000 发现会卡住,然后关闭这个osd再次做操作,就可以了,启动后还是不行,这里可以判断是主本的对象已经有问题了,本篇将讲述多种方法来解决这个问题 处理办法 本章将会根据操作粒度的不同来讲述三种方法的恢复,根据自己的实际情况,和风险的判断来选择自己的操作 方法一:通过repair修复 首先能确定是主本损坏了,那么先把主本的对象进行一个备份,然后移除 [root@lab71 2.0_head]# systemctl stop ceph-osd@0[root@lab71 2.0_head]# cp -ra 100.00000000__head_C5265AB3__2 …Read more

  • December 15, 2017
    Learning Ceph – Second Edition

    Learning Ceph – Second Edition was published in October 2017. This is special post to highlight a new book I’ve been helping with. Good colleagues of mine wrote that book and I encourage anyone willing to learn Ceph to get a copy of it. The book is available on Amazon. Learning Ceph, Second Edition will …Read more

  • December 14, 2017
    openATTIC 3.6.1 has been released

    It is our great pleasure to announce Version 3.6.1 of openATTIC. 3.6.1 is a bugfix release for the 3.6 stable branch, containing fixes for multiple issues that were reported by users. In addition to that, it contains several usability enhancements and security improvements. Behind the scenes, we continued with converting the WebUI code into Angular …Read more

  • December 5, 2017
    A Luminous Release

    The third one is a charm. RHCS 3 is our annual major release of Red Hat Ceph Storage and it brings great new features to customers in the areas of containers, usability and raw technology horsepower. It includes support for CephFS, giving us a complete all-in-one storage solution in Ceph spanning block, object and file …Read more

  • December 4, 2017
    mds的cpu占用问题分析以及解决办法

    前言 mds是ceph里面处理文件接口的组件,一旦使用文件系统,不可避免的会出现一种场景就是目录很多,目录里面的文件很多,而mds是一个单进程的组件,现在虽然有了muti mds,但稳定的使用的大部分场景还是单acitve mds的 这就会出现一种情况,一旦一个目录里面有很多文件的时候,去查询这个目录里的文件就会在当前目录做一次遍历,这个需要一个比较长的时间,如果能比较好的缓存文件信息,也能避免一些过载情况,本篇讲述的是内核客户端正常,而export nfs后mds的负载长时间过高的情况 问题复现 准备测试数据,准备好监控环境 监控mds cpu占用 pidstat -u 1 -p 27076 > /tmp/mds.cpu.logUserParameter=mds.cpu,cat /tmp/mds.cpu.log|tail -n 1|grep -v Average| awk ‘{print $8}’ 整个测试避免屏幕的打印影响时间统计,把输出需要重定向测试一:内核客户端写入10000文件查看时间以及cpu占用 [root@nfsserver kc10000]# time seq 10000|xargs -i dd if=/dev/zero of=a{} bs=1K count=1 2>/dev/nullreal 0m30.121suser 0m1.901ssys 0m10.420s 测试二:内核客户端写入20000文件查看时间以及cpu占用 [root@nfsserver kc20000]# time seq 20000|xargs -i dd if=/dev/zero of=a{} bs=1K count=1 2>/dev/nullreal 1m38.233suser …Read more

  • November 30, 2017
    CentOS GRUB损坏修复方法

    前言 博客很久没有更新了,一个原因就是原来存放部署博客的环境坏了,硬盘使用的是SSD,只要读取到某个文件,整个磁盘就直接识别不到了,还好博客环境之前有做备份,最近一直没有把部署环境做下恢复,今天抽空把环境做下恢复并且记录一篇基础的GRUB的处理文档 这两天正好碰到GRUB损坏的事,很久前处理过,但是没留下文档,正好现在把流程梳理一下,来解决grub.cfg损坏的情况,或者无法启动的情况 实践步骤 安装操作系统的时候会有多种可能分区的方法,一个直接的分区,一个是用了lvm,本篇将几种分区的情况分别写出来 lvm分区的情况 [root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 17G 927M 17G 6% /devtmpfs 901M 0 901M 0% /devtmpfs 912M 0 912M 0% /dev/shmtmpfs 912M 8.6M 904M 1% /runtmpfs 912M 0 912M 0% /sys/fs/cgroup/dev/sda1 1014M 143M 872M 15% /boottmpfs 183M 0 183M 0% /run/user/0 模拟/boot/grub2/grub.cfg的破坏 [root@localhost ~]# mv …Read more

  • November 28, 2017
    Introducing ceph-nano

    I’ve recently started a small project that aims to help developers working with the S3 API. The program is called cn for Ceph Nano, is available on github let me give you a tour of what it does. I initially presented the program during my talk at the last OpenStack summit in Sydney. Originally, I …Read more

  • November 28, 2017
    Quick overview of Ceph version running on OSDs

    When checking a Ceph cluster it’s useful to know which versions you OSDs in the cluster are running. There is a very simple on-line command to do this: ceph osd metadata|jq ‘.[].ceph_version’|sort|uniq -c Running this on a cluster which is currently being upgraded to Jewel to Luminous it shows: 10 “ceph version 10.2.6 (656b5b63ed7c43bd014bcafd81b001959d5f089f)” 1670 …Read more

  • November 27, 2017
    Introducing Ceph Ansible profile library

    A couple of releases ago, in order to minimize changes within the ceph.conf.j2 Jinja template, we introduced a new module that we took from the OpenStack Ansible guy. This module is called config_template and allows us to declare Ceph configuration options as variables in your group_vars files. This is extremely useful for us Based on …Read more

Careers