Planet Ceph

Aggregated news from external sources

  • August 7, 2017
    What is the optimum number of PGs for my pool?

    Each pool has a fixed number of Placement Groups (PGs) *and* a fixed number ofOSDs. The former is set when the pool is created and the latter is determinedby the CRUSH map. The number of PGs in a pool can be increased, but it cannot easily be decreased(there is always the option to create a …Read more

  • August 4, 2017
    openATTIC 3.4.2 has been released

    We are very happy to announce the release of openATTIC version 3.4.2. In this release, we’ve continued with the integration of Ceph Luminous features. It is now possible to configure the Ceph keyring via the ‘System | Settings’ menu. This release also implements the WebUI part of the previously introduced backend feature to create erasure …Read more

  • August 2, 2017
    More recommendations for Ceph and OpenStack

    A few months ago, we shared our Dos and Don’ts, as they relate to Ceph and OpenStack. Since that post has proved quite popular, here are a few additional considerations for your Ceph-backed OpenStack cluster. Do configure your images for VirtIO-SCSI By default, RBD-backed Nova instances use the virtio-blk driver to expose RBD images to …Read more

  • July 28, 2017
    How Many Mouvement When I Add a Replica ?

    Make a simple simulation ! Use your own crushmap : $ ceph osd getcrushmap -o crushmap got crush map from osdmap epoch 28673 Or create a sample clushmap : $ crushtool –outfn crushmap –build –num_osds 36 host straw 12 root straw 0 2017-07-28 15:01:16.240974 7f4dda123760 1 ID WEIGHT TYPE NAME -4 36.00000 root root -1 …Read more

  • July 27, 2017
    RBD快速删除的方法分析与改进

    前言 这个问题在很久以前就有一篇文章进行过讨论 remove-big-rbd,这个文章写的比较清楚了,并且对不同的方法做了分析,这里先把结论说下 rbd类型 rbd rm 方法 rados -p rm方法 未填充很多 慢 快 已填充很多 快 慢 在rbd进行删除的时候,即使内部没有对象数据,也一样需要一个个对象去发请求,即使对象不存在,这个可以开日志看到 实验过程 开启日志的方法 在/etc/ceph/ceph.conf中添加 [client]debug_ms=1log_file=/var/log/ceph/rados.log 然后执行操作后,去分析每秒钟的操作数目即可,类似下面的这个,也可以用日志系统进行分析,这里不赘述 cat /var/log/ceph/rados.log|grep delete|grep -v “>”|grep 13:29:46|wc -l 原始的快速删除方法 rados -p rbd ls | grep ‘^rbd_data.25ae86b8b4567’ | xargs -n 200 rados -p rbd rm 开启多进程删除的方法 这个比上面那种方法好的是: 可以显示当前删除的进度 可以指定删除的进程并发数 可以显示当时正在删除的对象 可以增加一个中断时间降低负载 首先获取一个需要快速删除的rbd的列表获取prifix [root@lab8106 put]# rbd …Read more

  • July 22, 2017
    从ceph对象中提取RBD中的指定文件

    前言 之前有个想法,是不是有办法找到rbd中的文件与对象的关系,想了很久但是一直觉得文件系统比较复杂,在fs 层的东西对ceph来说是透明的,并且对象大小是4M,而文件很小,可能在fs层进行了合并,应该很难找到对应关系,最近看到小胖有提出这个问题,那么就再次尝试了,现在就是把这个实现方法记录下来这个提取的作用个人觉得最大的好处就是一个rbd设备,在文件系统层被破坏以后,还能够从rbd提取出文件,我们知道很多情况下设备的文件系统一旦破坏,无法挂载,数据也就无法读取,而如果能从rbd中提取出文件,这就是保证了即使文件系统损坏的情况下,数据至少不丢失 本篇是基于xfs文件系统情况下的提取,其他文件系统有时间再看看,因为目前使用的比较多的就是xfs文件系统 本篇也回答了一个可能会经常被问起的问题,能告诉我虚拟机里面的文件在后台存储在哪里么,看完本篇就知道存储在哪里了 XFS文件系统介绍 [root@lab8106 ~]# mkfs.xfs -f /dev/rbd0p1 warning: device is not properly aligned /dev/rbd0p1meta-data=/dev/rbd0p1 isize=256 agcount=9, agsize=162816 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0data = bsize=4096 blocks=1310475, imaxpct=25 = sunit=1024 swidth=1024 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=8 blks, lazy-count=1realtime =none extsz=4096 blocks=0, …Read more

  • July 18, 2017
    利用火焰图分析ceph pg分布

    前言 性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多在查看了原始数据后,这个分析的原理是按层级来对调用进行一个计数,然后以层级去做比对,来看横向的占用的比例情况 基于这个原理,把osd tree的数据和pg数据可以做一个层级的组合,从而可以很方便的看出pg的分布情况,主机的分布情况,还可以进行搜索,在一个简单的图表内汇聚了大量的信息 实践 获取需要的数据,这个获取数据是我用一个脚本解析的osd tree 和pg dump,然后按照需要的格式进行输出 default;lab8106;osd.2;0.0 6default;lab8106;osd.3;0.0 6default;rack1;lab8107;osd.0;0.0 6 需要的格式是这个样的,最后一个为权重,使用的是对象数,因为对象数可能为0,所以默认在每个数值进行了加一的操作,前面就是osd的分布的位置 脚本/sbin/stackcollapse-crush内容如下: #! /bin/python# -*- coding: UTF-8 -*-import osimport commandsimport jsondef main(): global list_all_host list_all_host = commands.getoutput(‘ceph osd tree -f json-pretty 2>/dev/null’) getosd(‘osd.1’) getpgmap()def getosd(osd): mylist=[] crushid={} json_str = json.loads(list_all_host) for item in json_str[‘nodes’]: if item.has_key(‘children’): crushid[str(item[‘id’])]=str(item[‘name’]) for child in item[‘children’]: …Read more

  • July 12, 2017
    Cephfs 操作输出到日志查询系统

    前言 文件系统当中如果某些文件不见了,有什么办法判断是删除了还是自己不见了,这个就需要去日志里面定位了,通常情况下是去翻日志,而日志是会进行压缩的,并且查找起来非常的不方便,还有可能并没有开启这个时候就需要日志系统了,最近正好看到一篇最佳日志实践(v2.0),一篇非常好的文章,本篇日志属于文章里面所提到的统计日志,统计客户端做了什么操作 对于日志系统来说,很重要的一点,能够很方便的进行查询,这就需要对日志信息进行一些处理了,怎么处理就是设计问题,要求就是不多不少 结构 其中graylog配置部分在这篇使用日志系统graylog获取Ceph集群状态,根据这篇的操作,配置出12201的udp监听端口即可,剩余部分就是本篇中的配置 配置 集群的配置 需要对MDS的配置进行debug_ms=1,在/etc/ceph/ceph.conf当中添加下面配置 [mds.lab8106]debug_ms=1hostname=lab8106 这个地方集群的文件操作日志是记录在message里面的1级别的,所以把mds的debug_ms开到1日志长这个样子: 2017-07-13 11:26:23.703624 7fc3128c3700 1 — 192.168.8.106:6804/3280969928 <== client.14180 192.168.8.106:0/1092795882 2384 ==== client_request(client.14180:2346 mkdir #1/ppop 2017-07-13 11:26:23.702532 caller_uid=0, caller_gid=0{}) v2 ==== 170+0+0 (843685338 0 0) 0x5645ec243600 con 0x5645ec247000 下面会对这个日志进行提取 下载logstash https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.rpm [root@lab8106 ~]# rpm -ivh logstash-5.5.0.rpm 修改启动进程为root权限修改/etc/systemd/system/logstash.service文件当中的 User=rootGroup=root 因为logstash需要本地文件的读取权限,这里是为了方便直接给的root权限,方便使用,如果对权限要求比较严的环境,就给文件 创建一个配置文件 vim /etc/logstash/conf.d/logstash.conf 添加下面的配置文件,这个配置文件包含的内容比较多,会在后面详细的介绍下处理过程 input { file …Read more

  • July 12, 2017
    Choosing the right storage for your OpenStack cloud

    Choosing a storage solution for OpenStack is an interesting problem, and it reflects the complexity of a choice that reflects across the entire design of your cloud. I was honored to be able to share Red Hat’s views on the matter in a very well attended webinar this week. My colleagues Rahul Vijayan and Sadique …Read more

  • July 7, 2017
    Update on the state of Ceph Support in openATTIC 3.x (July 2017)

    A little bit less than a month ago Lenz Grimmer gave an overview about the current state of our development in openATTIC 3.x. We made a lot of good progress in the meanwhile and I’m very proud to announce that NFS Gateway Management, RGW Bucket Management and Prometheus/Grafana made it into our newest openATTIC 3.3.0 …Read more

  • June 28, 2017
    ceph luminous 新功能之磁盘智能分组

    前言 本篇是luminous一个新功能介绍,关于磁盘智能分组的,这个在ceph里面叫crush class,这个我自己起名叫磁盘智能分组,因为这个实现的功能就是根据磁盘类型进行属性关联,然后进行分类,减少了很多的人为操作 以前我们需要对ssd和hdd进行分组的时候,需要大量的修改crush map,然后绑定不同的存储池到不同的 crush 树上面,现在这个逻辑简化了很多 ceph crush class {create,rm,ls} manage the new CRUSH deviceclass feature. ceph crush set-device-class will set the clas for a particular device. Each OSD can now have a device class associated with it (e.g., hdd orssd), allowing CRUSH rules to trivially map data to a subset of devicesin the …Read more

  • June 27, 2017
    The new Ceph container demo is super dope!

    I have been recently working on refactoring our Ceph container images. We used to have two separate images for daemon and demo. Recently, for Luminous, I decided to merge the demo container into daemon. It makes everything easier, code is in a single place, we only have a single image to test with the CI …Read more

Careers