Planet Ceph

Aggregated news from external sources

  • August 21, 2017
    为什么关不掉所有的OSD

    前言 碰到一个cepher问了一个问题: 为什么我的OSD关闭到最后有92个OSD无法关闭,总共的OSD有300个左右 想起来在很久以前帮人处理过一次问题,当时环境是遇上了一个BUG,需要升级到新版本进行解决,然后当时我来做操作,升级以后,发现osd无法启动,进程在,状态无法更新,当时又回滚回去,就可以了,当时好像是K版本升级到J版本,想起来之前看过这个版本里面有数据结构的变化,需要把osd全部停掉以后才能升级,然后就stop掉所有osd,当时发现有的osd还是无法stop,然后就手动去标记了,然后顺利升级今天这个现象应该跟当时是一个问题,然后搜索了一番参数以后,最后定位在确实是参数进行了控制 实践 我的一个8个osd的单机环境,对所有OSD进行stop以后就是这个状态,还有2个状态无法改变 [root@lab8106 ~]# ceph -s cluster 49ee8a7f-fb7c-4239-a4b7-acf0bc37430d health HEALTH_ERR 295 pgs are stuck inactive for more than 300 seconds 295 pgs stale 295 pgs stuck stale too many PGs per OSD (400 > max 300) monmap e1: 1 mons at {lab8106=192.168.8.106:6789/0} election epoch 3, quorum 0 lab8106 osdmap e77: 8 …Read more

  • August 19, 2017
    关于scrub的详细分析和建议

    前言 关于scrub这块一直想写一篇文章的,这个在很久前,就做过一次测试,当时是看这个scrub到底有多大的影响,当时看到的是磁盘读占很高,启动deep-scrub后会有大量的读,前端可能会出现 slow request,这个是当时测试看到的现象,一个比较简单的处理办法就是直接给scrub关掉了,当然关掉了就无法检测底层到底有没有对象不一致的问题关于这个scrub生产上是否开启,仁者见仁,智者见智,就是选择的问题了,这里不做讨论,个人觉得开和关都有各自的道理,本篇是讲述的如果想开启的情况下如何把scrub给控制住最近在ceph群里看到一段大致这样的讨论: scrub是个坑小文件多的场景一定要把scrub关掉单pg的文件量达到一定规模,scrub一开就会有slow request这个问题解决不了 上面的说法有没有问题呢?在一般情况下来看,确实如此,但是我们是否能尝试去解决下这个问题,或者缓解下呢?那么我们就来尝试下 scrub的一些追踪 下面的一些追踪并不涉及代码,仅仅从配置和日志的观测来看看scrub到底干了什么 环境准备 我的环境为了便于观测,配置的是一个pg的存储池,然后往这个pg里面put了100个对象,然后对这个pg做deep-scrub,deep-scrub比scrub对磁盘的压力要大些,所以本篇主要是去观测的deep-scrub 开启对pg目录的访问的监控 使用的是inotifywait,我想看下deep-scrub的时候,pg里面的对象到底接收了哪些请求 inotifywait -m 1.0_head 1.0_head/ OPEN,ISDIR 1.0_head/ ACCESS,ISDIR 1.0_head/ ACCESS,ISDIR 1.0_head/ CLOSE_NOWRITE,CLOSE,ISDIR 1.0_head/ OPEN,ISDIR 1.0_head/ ACCESS,ISDIR 1.0_head/ ACCESS,ISDIR 1.0_head/ CLOSE_NOWRITE,CLOSE,ISDIR 1.0_head/ OPEN a16__head_8FA46F40__11.0_head/ ACCESS a16__head_8FA46F40__11.0_head/ OPEN a39__head_621FD720__11.0_head/ ACCESS a39__head_621FD720__11.0_head/ OPEN a30__head_655287E0__11.0_head/ ACCESS a30__head_655287E0__11.0_head/ OPEN a91__head_B02EE3D0__11.0_head/ ACCESS a91__head_B02EE3D0__11.0_head/ OPEN a33__head_9E9E3E30__11.0_head/ ACCESS a33__head_9E9E3E30__11.0_head/ OPEN a92__head_6AFC6B30__11.0_head/ …Read more

  • August 17, 2017
    openATTIC 3.4.3 has been released

    We are happy to announce version 3.4.3 of openATTIC. With the new feature development for openATTIC 3.x slowing down, this release is primarily focused on fixing bugs (e.g. an issue leading to error messages when deleting RBDs) and improving details in the existing functionality. New features include the possibility to create RBDs with a dedicated …Read more

  • August 10, 2017
    如何测量Ceph OSD内存占用

    前言 这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法 火焰图里面也可以定位内存方面的问题,那个是通过一段时间的统计,以一个汇总的方式来查看内存在哪个地方可能出了问题本篇是另外一个工具,这个工具的好处是有很清晰的图表操作,以及基于时间线的统计,下面来看下这个工具怎么使用的 本篇对具体的内存函数的调用占用不会做更具体的分析,这里是提供一个工具的使用方法供感兴趣的研发同学来使用 环境准备 目前大多数的ceph运行在centos7系列上面,笔者的环境也是在centos7上面,所以以这个举例,其他平台同样可以 需要用到的工具 valgrind massif-visualizer 安装valgrind yum install valgrind massif-visualizer是数据可视化的工具,由于并没有centos的发行版本,但是有fedora的版本,从网上看到资料说这个可以直接安装忽略掉需要的依赖即可,我自己跑了下,确实可行 下载massif-visualizer wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/linux/releases/23/Everything/x86_64/os/Packages/m/massif-visualizer-0.4.0-6.fc23.x86_64.rpm 安装massif-visualizer rpm -ivh massif-visualizer-0.4.0-6.fc23.x86_64.rpm –nodeps 不要漏了后面的nodeps 抓取ceph osd运行时内存数据 停掉需要监控的osd(例如我的是osd.4) [root@lab8106 ~]# systemctl stop ceph-osd@4 开始运行监控 [root@lab8106 ~]# valgrind –tool=massif /usr/bin/ceph-osd -f –cluster ceph –id 4 –setuser ceph –setgroup ceph==21522== Massif, a heap profiler==21522== Copyright (C) 2003-2015, and GNU …Read more

  • August 10, 2017
    Ceph recover的速度控制

    前言 磁盘损坏对于一个大集群来说,可以说是必然发生的事情,即使再小的概率,磁盘量上去,总会坏那么几块盘,这个时候就会触发内部的修复过程,修复就是让不满足副本要求的PG,恢复到满足的情况一般是踢掉坏盘和增加新盘会触发这个修复过程,或者对磁盘的权重做了修改,也会触发这个迁移的过程,本篇是用剔除OSD的方式来对这个修复的控制做一个探索 大部分场景下要求的是不能影响前端的业务,而加速迁移,忽略迁移影响不在本篇的讨论范围内,本篇将用数据来说明迁移的控制 本次测试在无读写情况下进程的 几个需要用到脚本和命令 磁盘本身的大概速度 [root@lab8106 ~]# ceph tell osd.0 bench{ “bytes_written”: 1073741824, “blocksize”: 4194304, “bytes_per_sec”: 102781897} 得到的结果为102MB/s 获取osd上pg迁移的对象的脚本 OSD的日志需要开启到10,这里采取动态开启的方式 ceph daemon osd.0 config set debug_osd 10 日志解析的脚本 cat /var/log/ceph/ceph-osd.0.log | awk ‘$7==”finish_recovery_op”&&$8==”pg[0.15(” {sub(/.*/,substr($2,1,8),$2); print $0}’|awk ‘{a[$1,” “,$2]++}END{for (j in a) print j,a[j]|”sort -k 1″}’ 获取osd.0上的pg0.15的迁移速度运行后的效果如下: 2017-08-08 17:14:33 12017-08-08 17:14:34 22017-08-08 17:14:35 22017-08-08 17:14:36 …Read more

  • August 9, 2017
    Ceph S3 基于NGINX的集群复制方案

    前言 ceph的s3数据的同步可以通过radosgw-agent进行同步,同region可以同步data和metadata,不同region只能同步metadata,这个地方可以参考下秦牧羊梳理的 ceph radosgw 多集群同步部署流程,本篇讲述的方案与radosgw-agent的复制方案不同在于,这个属于前端复制,后端相当于透明的两个相同集群,在入口层面就将数据进行了复制分流在某些场景下,需求可能比较简单: 需要数据能同时存储在两个集群当中 数据写一次,读多次 两个集群都能写 一方面两个集群可以增加数据的可靠性,另一方面可以提高读带宽,两个集群同时可以提供读的服务 radosgw-agent是从底层做的同步,正好看到秦牧羊有提到nginx新加入了ngx_http_mirror_module 这个模块,那么本篇就尝试用这个模块来做几个简单的配置来实现上面的需求,这里纯架构的尝试,真正上生产还需要做大量的验证和修改的测试的 结构设想 当数据传到nginx的server的时候,nginx本地进行负载均衡到两个本地端口上面,本地的两个端口对应到两个集群上面,一个主写集群1,一个主写集群2,这个是最简结构,集群的civetweb可以是很多机器,nginx这个也可以是多台的机器,在一台上面之所以做个均衡是可以让两个集群是对等关系,而不是一个只用nginx写,另一个只mirror写 环境准备 准备两个完全独立的集群,分别配置一个s3的网关,我的环境为: 192.168.19.101:8080192.168.19.102:8080 在每个机器上都创建一个管理员的账号,这个用于后面的通过restapi来进行管理的,其他的后面的操作都通过http来做能保证两个集群的数据是一致的 nginx的机器在192.168.19.104 在两个集群当中都创建相同的管理用户 radosgw-admin user create –uid=admin –display-name=admin –access_key=admin –secret=123456 这里为了测试方便使用了简单密码 此时admin还仅仅是普通的权限,需要通过—cap添加user的capabilities,例如: radosgw-admin caps add –uid=admin –caps=”users=read, write”radosgw-admin caps add –uid=admin –caps=”usage=read, write” 下面就用到了nginx的最新的模块了Nginx 1.13.4 发布,新增 ngx_http_mirror_module 模块 软件下载: wget https://nginx.org/packages/mainline/centos/7/x86_64/RPMS/nginx-1.13.4-1.el7.ngx.x86_64.rpm 下载rpm包然后安装安装: rpm -ivh nginx-1.13.4-1.el7.ngx.x86_64.rpm 修改nginx配置文件: upstream s3 { …Read more

  • August 7, 2017
    cephfs: ideal PG ratio between metadata and data pools

    Scenario: I’m deploying CephFS for the first time. I know I need a metadata pool as well as a data pool, but I don’t know how many PGs for one pool and the other? Can I use the same number, or should they be different? This question is a FAQ. The number of PGs should …Read more

  • 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

Careers