Planet Ceph

Aggregated news from external sources

  • April 13, 2017
    Test Ceph Luminous pre-release with ceph-docker

    /! DISCLAIMER /! /! DO NOT GET TOO EXCITED, AT THE TIME OF THE WRITTING LUMINOUS IS NOT OFFICIALLY RELEASE IN STABLE YET /! /! USE AT YOUR OWN RISK, DO NOT PUT PRODUCTION DATA ON THIS /! Luminous is just around the corner but we have been having packages available for a couple of …Read more

  • April 13, 2017
    查看ceph集群被哪些客户端连接

    前言 我们在使用集群的时候,一般来说比较关注的是后台的集群的状态,但是在做一些更人性化的管理功能的时候,就需要考虑到更多的细节 本篇就是其中的一个点,查询ceph被哪些客户端连接了 实践 从接口上来说,ceph提供了文件,块,和对象的接口,所以不同的接口需要不同的查询方式,因为我接触文件和块比较多,并且文件和块存储属于长连接类型,对象属于请求类型,所以主要关注文件和块存储的连接信息查询 我的集群状态如下 [root@lab8106 ~]# ceph -s cluster 3daaf51a-eeba-43a6-9f58-c26c5796f928 health HEALTH_WARN mon.lab8106 low disk space monmap e1: 1 mons at {lab8106=192.168.8.106:6789/0} election epoch 6, quorum 0 lab8106 fsmap e20: 1/1/1 up {0=lab8106=up:active} osdmap e52: 2 osds: 2 up, 2 in flags sortbitwise,require_jewel_osds pgmap v27223: 96 pgs, 3 pools, 2579 MB data, 4621 …Read more

  • April 10, 2017
    Ceph manager support in ceph-ansible and ceph-docker

    Thanks to this recent pull request, you can now bootstrap the Ceph Manager daemon. This new daemon was added during the Kraken development cycle, its main goal is to act as a hook for existing system to get monitoring information from the Ceph cluster. It normally runs alongside monitor daemons but can be deployed to …Read more

  • April 7, 2017
    Mapping CephFS directories to other pools

    <a href="#Mapping-diffrent-Cephfs-directories-to-diffrent-pools" class="heade Source: Stephen McElroy (Mapping CephFS directories to other pools)

  • April 4, 2017
    The Schrodinger Ceph cluster

    Inspired by Schrodinger’s famous thought experiment, this is the the story of a Ceph cluster that was both full and empty until reality kicked in. The cluster Let’s imagine a small 3 servers cluster. All servers are identical and contain 10x 2 TB hard drives. All Ceph pools are triple replicated on three different hosts. …Read more

  • April 3, 2017
    RBD Ceph Backup

    Ceph RBD backup script Releasing the v0.1.1 of ceph_rbd_bck.sh. Here is a script I created in my spare time to create a backup solution for Ceph. I wrote this to provide an opensource solution to backing Ceph pools. I needed something to not only backup individual images in specified pools, but to also be able …Read more

  • March 29, 2017
    Ceph如何实现文件系统的横向扩展

    前言 在跟一个朋友聊天的时候,聊到一个技术问题,他们的一个环境上面小文件巨多,是我目前知道的集群里面规模算非常大的了,但是目前有个问题,一方面会进行一倍的硬件的扩容,而文件的数量也在剧烈的增长着,所以有没有什么办法来 缓解这个增长的压力当时也没想到太多的办法,只是觉得这么用下去风险太大 后来在思考了一段时间后,大概有了一个想法,这个就要看是否能把方案做下去,如果是我自己在用的集群,而非客户,我会这么去用的 方案介绍 方案一 也就是默认的方案,一般来说就是一个主MDS,然后几个备用MDS,整个一个挂载点,全局混用的空间 存在问题: 扩容以后,有大量的数据迁移 所有的元数据请求,只有一个MDS服务,到了巨型数据的时候,可能出现卡顿或MDS卡掉的问题 优点: 全局统一命名空间 方案二: 采用分存储池的结构,也就是将集群内的目录树分配到整个集群的多个相互独立的空间里面 存在问题: 同样是所有的元数据请求,只有一个MDS服务,到了巨型数据的时候,可能出现卡顿或MDS卡掉的问题 优点: 全局统一命名空间下面对应目录到不同的存储池当中,在进行扩容的时候,不会影响原有的数据,基本是没有迁移数据 方案三: 物理分存储池的结构并没有解决元数据压力过大的问题,而元数据的处理能力并非横向扩展的,而文件数量和集群规模都是在横向增长,所以必然是一个瓶颈点 这个方案其实很简单,相当于方案二的扩展,我们在方案二中进行了物理存储池的分离,然后把空间映射到子目录,来实现数据的分离,既然规模能够大到分物理空间,那么我们可以考虑部署多套集群,并且来真正的实现了数据处理能力的横向扩展,因为MDS,可以是多个的了,那么比较重要的问题就是统一命名空间的问题了,怎么实现,这个也简单,主要是跟客户沟通好,让客户接受提出的方案 我们在一些商业系统上面可以看到一些限制,比如单卷的大小最大支持多大,在这里我们需要跟客户沟通好,无限的扩展,会带来一些压力的风险,有方案能够解决这种问题,而这种数据量在之前是没有太多的案例可借鉴的,所以需要人为控制一个目录的最大空间,也就是单套集群的大小,下面举例来说明下 假设我们的空间一期规模为2P,二期规模要4P,三期规模6P那么我们的命名空间上就分离出三个逻辑空间,也就是对应三套集群 弄清楚客户的存储的目录结构,一般来说客户并不太关心目录的设计,如果能够引导的情况下,可以引导客户,我们需要弄清楚目录可变化的那个点在哪里,举例说明,假如客户的数据可以去按年进行分类的话,数据就可以是 20142015 20162017 这样的增长趋势,并且数据量之前的肯定已知,未来可大概估计,并且集群准备存储多少年的数据,也是可大概预估的,那么这个环境我们就先认为到2017的数据我们放在集群一内,2017年以后的数据放在集群二内,那么挂载点是这样的 192.168.10.101:/2014192.168.10.101:/2015192.168.10.101:/2016192.168.10.101:/2017192.168.10.102:/2018192.168.10.102:/2019192.168.10.102:/2020192.168.10.102:/2021 挂载到本地的服务的机器上本地创建好目录 /share/2014/share/2015/share/2016/share/2017/share/2018/share/2019/share/2020/share/2021 然后把上面的集群挂载点按名称挂载到本地的这些目录上面 本地的共享就把/share共享出去,那么用户看到的就是一个全局命名空间了,这个是用本地子目录映射的方式来实现统一命名空间,技术难度小,难点在于跟客户沟通好数据的层级结构,如果客户能够自己随意增加目录,那么更好实现了,随意的将目录分配到两个集群即可,最终能达到满意的效果就行 当然主要还是需要客户能够接受你的方案,海量小文件的情况下,分开到多个集群当然会更好些,并且集群万一崩溃,也是只会影响局部的集群了 总结 我们在利用一些新的技术的时候我们很多时候关注的是他最好的那个点,而这个点有的时候反而阻碍了我们的想法,比如集群,那就是把所有硬盘管理起来,搞成一个集群,那么为什么不能往上再走一层,我用管理的方式把多套集群在管理的层面组合成一个集群池呢?然后从多个集群里面来分配我们需要的资源即可 变更记录 Why Who When 创建 武汉-运维-磨渣 2017-03-29 Source: zphj1987@gmail (Ceph如何实现文件系统的横向扩展)

  • March 29, 2017
    Predicting Ceph PG placement

    When creating a new Ceph pool, deciding for the number of PG requires some thinking to ensure there are a few hundred PGs per OSD. The distribution can be verified with crush analyze as follows: $ crush analyze –rule data –type device –replication-count 2 –crushmap crushmap.txt –pool 0 –pg-num 512 –pgp-num 512 ~id~ ~weight~ ~over/under …Read more

  • March 27, 2017
    Debug Ceph Docker containers

    For the last couple of weeks, Erwan Velu and I have been busy refactoring the entire ceph-docker code base. Through these cosmetic changes, we implemented new mechanisms to finely grained debug containers at run time. This article was co-written with Erwan Velu and will explain what we worked on. I. Rationale People tend to believe …Read more

  • March 24, 2017
    从hammer到jewel的RGW升级实战-by秦牧羊

    前言 本篇来自秦牧羊的一篇分享,讲述的是从hammer升级到jewel的过程,以及其中的一些故障的处理,是一篇非常详细的实战分享 初始状态 pool状态 root@demo:/home/demouser# rados lspoolsrbd.cn.rgw.root.cn-zone1.rgw.root.cn-zone1.rgw.domain.cn-zone1.rgw.control.cn-zone1.rgw.gc.cn-zone1.rgw.buckets.index.cn-zone1.rgw.buckets.extra.cn-zone1.rgw.buckets.cn-zone1.log.cn-zone1.intent-log.cn-zone1.usage.cn-zone1.users.cn-zone1.users.email.cn-zone1.users.swift.cn-zone1.users.uid ceph.conf配置 [client.radosgw.us-zone1] rgw dns name = s3.ceph.work rgw frontends = fastcgi host = ceph.work rgw region = cn rgw region root pool = .cn.rgw.root rgw zone = us-zone1 rgw zone root pool = .cn-zone1.rgw.root keyring = /etc/ceph/ceph.client.radosgw.keyring rgw socket path = /home/ceph/var/run/ceph-client.radosgw.us-zone1.sock log file = /home/ceph/log/radosgw.us-zone1.log rgw print …Read more

  • March 24, 2017
    小文件测试数据准备

    前言 在看一个Linux Vault 2017的资料的时候,看到红帽分享的一个测试的过程,里面关于小文件元数据性能测试的,环境准备的还比较好,可以作为一种测试模型 测试用例 测试用例一: 使用find -name 测试 find -size 测试测试用例二: 使用find -name 测试 find -size 测试 测试用例三: 使用rmdir进行测试 总结 本篇就是记录一个测试模型 变更记录 Why Who When 创建 武汉-运维-磨渣 2017-03-24 Source: zphj1987@gmail (小文件测试数据准备)

  • March 23, 2017
    编译的Ceph二进制文件过大问题

    前言 在ceph的研发群里看到一个cepher提出一个问题,编译的ceph的二进制文件过大,因为我一直用的打包好的rpm包,没有关注这个问题,重新编译了一遍发现确实有这个问题 本篇就是记录如何解决这个问题的 打rpm包的方式 用我自己的环境编译的时候发现一个问题,编译出来的rpm包还是很大,开始怀疑是机器的原因,换了一台发现二进制包就很小了,然后查询了很多资料以后,找到了问题所在 在打rpm包的时候可以通过宏变量去控制是否打出一个的debug的包,这个包的作用就是把二进制文件当中包含的debug的相关的全部抽离出来形成一个新的rpm包,而我的环境不知道什么时候在/root/.rpmmacros添加进去了一个 d%ebug_package %{nil} 搜寻资料后确定就是这个的问题,这个变量添加了以后,在打包的时候就不会进行debug相关包的剥离,然后打出的包就是巨大的,可以这样检查自己的rpmbuild的宏变量信息 [root@host1 ceph-10.2.6]# rpmbuild –showrc|grep debug_package %{!?__debug_package: %{?__debug_package:%{__debug_install_post}}-14: _enable_debug_packages 1-14: debug_package %global __debug_package 1-14: install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}} 如果开启了debug包抽离(默认就是开启的),那么rpmbuild在打包的过程中会有个调用 /usr/lib/rpm/find-debuginfo.sh –strict-build-id -m –run-dwz –dwz-low-mem-die-limit 10000000 –dwz-max-die-limit 110000000 /root/rpmbuild/BUILD/ceph-10.2.5 这个就是rpmbuild过程中,进行抽离debug信息的操作,也就是缩小二进制的过程,这个并不能直接执行命令,需要用rpmbuild -bb ceph.spec 打包的时候内部自动进行调用的 上面是rpm打包过程中进行的二进制缩小,那么如果我们是源码编译安装时候,如何缩小这个二进制,答案当然是可以的 源码编译安装的方式 ./configure 后make生成的二进制文件就在./src下面了我们以ceph-mon为例进行抽离 这个-O3并没有影响到太多的生成的二进制的大小,—with-debug会有一定的影响,关键还是strip的这个操作 ./configure –with-debug CXXFLAGS=-O3 CFLAGS=-O3 CCASFLAGS=-O3 所以默认的就行 如果整体进行安装就使用make install-strip安装即可 [root@host1 ceph-10.2.6]# make install-strip[root@host1 …Read more

Careers