Planet Ceph

Aggregated news from external sources

  • February 8, 2017
    预估ceph的迁移数据量

    引言 我们在进行 ceph 的 osd 的增加和减少的维护的时候,会碰到迁移数据,但是我们平时会怎么去回答关于迁移数据量的问题,一般来说,都是说很多,或者说根据环境来看,有没有精确的一个说法,到底要迁移多少数据?这个我以前也有思考过这个问题,当时想是对比前后的pg的分布,然后进行计算,正好在翻一些资料的时候,看到有alram写的一篇博客,alram是Inktank的程序员,也就是sage所在的公司,程序是一个python脚本,本篇会分析下这个对比的思路,以及运行效果 计算迁移量只需要一个修改后的crushmap就可以了,这个是离线计算的,所以不会对集群有什么影响 运行效果 准备修改后的crushmap 获取当前crushmap ceph osd getcrushmap -o crushmap 解码crushmap crushtool -d crushmap -o crushmap.txt 修改crushmap.txt这个根据自己需要,修改成自己想修改成的crushmap即可,可以是增加,也可以是删除 减少节点的计算 假如删除一个osd.5 我们需要迁移多少数据将crushmap里面的osd.5的weight改成0 crushtool -c crushmap.txt -o crushmapnew 运行计算脚本 [root@lab8106 ceph]# python jisuan.py –crushmap-file crushmapnewPOOL REMAPPED OSDs BYTES REBALANCE OBJECTS REBALANCE rbd 59 6157238296 1469 data 54 5918162968 1412 metadata 53 5825888280 1390 …Read more

  • January 29, 2017
    Edit the Ceph CRUSHmap

    The CRUSHmap, as suggested by the name, is a map of your storage cluster. This map is necessary for the CRUSH algorithm to determine data placements. But Ceph’s CRUSHmap is stored in binary form. So how to easily change it? Native tools Ceph comes with a couple of native commands to do basic customizations to …Read more

  • January 27, 2017
    Erasure Code on Small Clusters

    Erasure code is rather designed for clusters with a sufficient size. However if you want to use it with a small amount of hosts you can also adapt the crushmap for a better matching distribution to your need. Here a first example for distributing data with 1 host OR 2 drive fault tolerance with k=4, …Read more

  • January 24, 2017
    Testing Ceph BlueStore with the Kraken release

    Ceph version Kraken (11.2.0) has been released and the Release Notes tell us that the new BlueStore backend for the OSDs is now available. BlueStore The current backend for the OSDs is the FileStore which mainly uses the XFS filesystem to store it’s data. To overcome several limitations of XFS and POSIX in general the …Read more

  • January 24, 2017
    Linux 升级内核开启 TCP BBR 有多大好处

    如果你有订阅一些科技新闻,应该会有看过内核在4.9当中加入了一个新的算法,来解决在有一定的丢包率的情况下的带宽稳定的问题,这个是谷歌为我们带来的干货,新的 TCP 拥塞控制算法 BBR (Bottleneck Bandwidth and RTT),谷歌一向的做法是,先上生产,然后发论文,然后有可能开源,所以这个已经合并到了内核4.9分支当中,算法带来的改变在出的测试报告当中有很详细的数据展示,这个看多了可能反而不知道到底会有什么明显改变,特别是对于我们自己的场景 那么本篇就是来做一个实践的,开看看在通用的一些场景下,这个改变有多大,先说下结果,是真的非常大 实践 还是我的两台机器lab8106和lab8107,lab8106做一个webserver,lab8107模拟客户端,用简单的wget来进行测试,环境为同一个交换机上的万兆网卡服务器 我们本次测试只测试一种丢包率的情况就是1%,有兴趣的情况下,可以自己去做些其他丢包率的测试,大多数写在丢包率20%以上的时候,效果可能没那么好,这个高丢包率不是我们探讨的情况,毕竟不是常用的场景 安装新内核 内核可以自己选择4.9或者以上的进行安装,也可以用yum安装,这里只是测试,就yum直接安装 yum –enablerepo=elrepo-kernel install kernel-ml 修改启动项 grub2-editenv listgrub2-set-default ‘CentOS Linux (4.9.5-1.el7.elrepo.x86_64) 7 (Core)’grub2-editenv list 准备下载数据 准备一个web服务器然后把一个iso丢到根目录下,用于客户端的wget 设置丢包率 这里用tc进行控制的,也就是一条命令就可以了,这个还可以做其他很多控制,可以自行研究 tc qdisc add dev enp2s0f0 root netem loss 1% 如果需要取消限制 tc qdisc del root dev enp2s0f0 设置新的算法 讲下面的两个配置文件添加到/etc/sysctl.conf net.ipv4.tcp_congestion_control=bbrnet.core.default_qdisc=fq 然后执行sysctl -p让它生效 检查是参数是否生效 [root@lab8106 rpmbuild]# …Read more

  • January 23, 2017
    Crushmap for 2 DC

    An example of crushmap for 2 Datacenter replication : 1 2 3 4 5 6 7 8 9 10 rule replicated_ruleset { ruleset X type replicated min_size 2 max_size 3 step take default step choose firstn 2 type datacenter step chooseleaf firstn -1 type host step emit } This working well with pool size=2 (not …Read more

  • January 22, 2017
    rbd-mirror配置指南-单向备份

    RBD 的 mirroring 功能将在Jewel中实现的,这个Jewel版本已经发布了很久了,这个功能已经在这个发布的版本中实现了,本来之前写过一篇文章,但是有几个朋友根据文档配置后,发现还是有问题,自己在进行再次配置的时候也发现有些地方没讲清楚,容易造成误解,这里对文档进行再一次的梳理 一、基本原理我们试图解决的或者至少需要克服的问题是,ceph在内部是强一致性的,这个对于跨区域的情况数据同步是无法接受的,一个请求需要异地返回再确认完成,这个在性能上肯定是无法接受的,这就是为什么基本上无法部署跨区域的ceph集群 因此我们需要有一种机制能够让我们在不同区域的集群之间复制块设备。这个能够帮助我们实现两个功能: 灾难恢复 全球块设备分布(跨地理位置) 二、内部的实现 从上图所示是进行的主备模式的备份,其实这个只是看怎么应用了,在里面是自动实现的主主的模式,双向同步的,只是在应用中需要注意不要去同时操作同一个image,这个功能是作为主备去使用的,以备真正有问题的时候去实现故障恢复,这个同步是异步的 二、一个新的进程一个新的守护程序:rbd-mirror 将会负责将一个镜像从一个集群同步到另一个,rbd-mirror需要在两个集群上都配置,它会同时连接本地和远程的集群。在jewel版本中还是一对一的方式,在以后的版本中会实现一对多的,所以在以后的版本可以配置一对多的备份 作为起点,这个功能讲使用配置文件连接集群,使用用户和密钥。使用admin用户就可以了,使用的验证方式就是默认的cephx的方式 为了相互识别,两个集群都需要相互注册使用 rbd mirror pool peer add命令, 这个在下面会实践 二、镜像The RBD mirroring 依赖两个新的rbd的属性 journaling: 启动后会记录image的事件 mirroring: 明确告诉rbd-mirror需要复制这个镜像 也有命令可以禁用单独的某个镜像。journaling可以看做是另一个rbd的image(一些rados对象),一般情况下,先写日志,然后返回客户端,然后被写入底层的rbd的image,出于性能考虑,这个journal可以跟它的镜像不在一个存储池当中,目前是一个image一个journal,最近应该会沿用这个策略,直到ceph引入一致性组。关于一致性组的概念就是一组卷,然后用的是一个RBD image。可以在所有的组中执行快照操作,有了一致性的保证,所有的卷就都在一致的状态。当一致性组实现的时候,我们就可以用一个journal来管理所有的RBD的镜像 可以给一个已经存在image开启journal么,可以的,ceph将会将你的镜像做一个快照,然后对快照做一个复制,然后开启journal,这都是后台执行的一个任务 可以启用和关闭单个镜像或者存储池的mirror功能,如果启用了journal功能,那么每个镜像将会被复制 可以使用 rbd mirror pool enable启用它 三、灾难恢复交叉同步复制是可以的,默认的就是这个方式,这意味着两个地方的存储池名称需要相同的这个会带来两个问题 使用相同的存储做备份做使用会影响性能的 相同的池名称在进行恢复的时候也更容易。openstack里面只需要记录卷ID即可 每个image都有 mirroring_directory 记录当前active的地方。在本地镜像提示为 primary的时候,是可写的并且远程的站点上就会有锁,这个image就是不可写的。只有在primary镜像降级,备份的点升级就可以了,demoted 和 promoted来控制这里,这就是为什么引入了等级制度,一旦备份的地方升级了,那么主的就自动降级了,这就意味着同步的方向就会发生变化了 如果出现脑裂的情况,那么rbd-mirror将会停止同步,你自己需要判断哪个是最新的image,然后手动强制去同步rbd mirror image resync 上面基本参照的是sebastien翻译的,原文只是做了简短的说明,下面是我的实践部分 配置实践部分 先介绍下一些简单的概念 rbd-mirror 进程 …Read more

  • January 20, 2017
    Running headless VirtualBox inside Nested KVM

    For the Ceph training at 42on I use VirtualBox to build Virtual Machines. This is because they work under MacOS, Windows and Linux. For the internal Git at 42on we use Gitlab and I wanted to use Gitlab’s CI to build my Virtual Machines automatically. As we don’t have any physical hardware at 42on (everything …Read more

  • January 20, 2017
    Change Log Level on the Fly to Ceph Daemons

    Aaahhh full disk this morning. Sometimes the logs can go crazy, and the files can quickly reach several gigabytes. Show debug option (on host) : # Look at log file tail -n 1000 /var/log/ceph/ceph-osd.33.log # Check debug levels ceph daemon osd.33 config show | grep ‘”debug_’ “debug_none”: “0/5”, “debug_lockdep”: “0/1”, “debug_context”: “0/1”, “debug_crush”: “1/1”, “debug_mds”: …Read more

  • January 19, 2017
    ceph的rbd备份软件ceph-backup

    teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具,在twitter上搜索相关信息的时候看到,觉得不错就拿来试用一番 这是个什么软件 一个用来备份ceph的RBD的image的开源软件,提供了两种模式增量:在给定备份时间窗口内基于rbd快照的增量备份完全:完整映像导出时不包含快照 注意一致性:此工具可以生成rbd图像的快照,而不会感知到它们的文件系统的状态,注意下rbd快照的一致性限制(http://docs.ceph.com/docs/hammer/rbd/rbd-snapshot/)由于“完全”模式不使用快照,“完全”模式下的实时映像备份不一致(“增量”模式始终使用快照) 超过时间窗口以后,会进行一次全量备份,并且把之前的快照进行删除掉,重新备份一次全量,并且基于这个时间计算是否需要删除备份的文件 软件包含以下功能: 支持存储池和多image的只对 支持自定义备份目标路径 配置文件支持 支持备份窗口设置 支持压缩选项 支持增量和全量备份的配置 编译安装 [root@lab8106 ~]#git clone https://github.com/teralytics/ceph-backup.git[root@lab8106 ~]# cd ceph-backup[root@lab8106 ceph-backup]# python setup.py install 安装过程中会下载一些东西,注意要有网络,需要等待一会 准备配置文件 [root@lab8106 ceph-backup]# mkdir /etc/cephbackup/[root@lab8106 ceph-backup]# cp ceph-backup.cfg /etc/cephbackup/cephbackup.conf 我的配置文件如下,备份rbd存储的zp的镜像,支持多image,images后面用逗号隔开就可以 [root@lab8106 ~]# cat /etc/cephbackup/cephbackup.conf [rbd]window size = 7window unit = daysdestination directory = /tmp/images = zpcompress = yesceph config = …Read more

  • January 15, 2017
    Deploying Ceph with storage tiering

    You have several options to deploy storage tiering within Ceph. In this post I will show you a simple yet powerful approach to automatically update the CRUSHmap and create storage policies. Some basics Storage tiering means having several tiers available. The classic 3 tiered approach is: fast: all flash medium: disks accelerated by some flash …Read more

  • January 13, 2017
    Blog post on InformationWeek

    Recently, I wrote an article that was published on InformationWeek. The article helps you understand the benefits of Storage Defined Software along with containers. In case you’re interested in reading it, click here. Source: Sebastian Han (Blog post on InformationWeek)

Careers