Planet Ceph

Aggregated news from external sources

  • 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)

  • January 12, 2017
    ‘sortbitwise’是什么意思

    问题 flag sortbitwise 在ceph中是什么意思,在Jewel版本下可以看到多了这个flags [root@lab8106 current]# ceph -s cluster ffe7a8db-c671-4b45-a784-ddb41e633905 health HEALTH_OK monmap e1: 1 mons at {lab8106=192.168.8.106:6789/0} election epoch 4, quorum 0 lab8106 fsmap e4: 1/1/1 up {0=lab8106=up:active} osdmap e132: 8 osds: 8 up, 8 in flags sortbitwise pgmap v206294: 201 pgs, 5 pools, 4684 MB data, 1214 objects 9669 MB used, 2216 GB …Read more

  • January 9, 2017
    解决calamari无法获取节点信息的bug

    一、前言 一直在做calamari的相关的一些打包和安装的工作,都是业余弄的东西,所以并没有仔细的进行功能点的验证测试,正好ceph社区群里面有人问了个问题 calamari上是不是能看到ceph的version? 对于这个问题,好像确实没有见到过,而之前正好有个页面看到是空的,当时还不清楚这个是什么用的 而另外一位群友贴出了这个地方的是有值的,这个地方是有BUG的,在咨询了相关的问题描述以后,我们来看下,可以如何解决这个问题 二、问题解决过程 salt的软件版本: salt-master-2015.8.1-1.el7.noarch salt-2015.8.1-1.el7.noarch salt-minion-2015.8.1-1.el7.noarch 2.1 问题描述: calamari的salt-master节点在读取 /var/cache/salt/master/minions/{minion-hostname}/data.p 的时候有权限问题,在修改权限以后,可以读取到了,但是在重启了salt-minion以后,这个文件会被更新,然后权限又变成无法读取的 2.2 相关知识补充 Grains – salt-minion 自身的一些静态信息 salt ‘*’ grains.ls # 查看 grains 分类salt ‘*’ grains.items # 查看 grains 所有信息salt ‘*’ grains.item os # 查看 grains 某个信息salt ‘*’ grains.get os 上面的是salt-minion的静态信息的查询的相关的命令,salt-minion在进行重启的时候会将一些静态的信息推送到salt-master上面去,而这个生成的信息正好就是我们上面提出有权限问题的data.p这个存储的文件的,那么解决问题就是修改这个地方的权限的问题了 2.3 修改salt-master代码 这个问题通过修改salt-master的master.py代码可以解决 写入这个grains信息的代码在/usr/lib/python2.7/site-packages/salt/master.py这个文件当中,代码段如下: def _pillar(self, load):··· if self.opts.get(‘minion_data_cache’, False): …Read more

  • January 6, 2017
    Main New Features in the Latest Versions of Ceph

    It’s always pleasant to see how fast new features appear in Ceph. 🙂 Here is a non-exhaustive list of some of theme on the latest releases : Kraken (October 2016) BlueStore declared as stable AsyncMessenger RGW : metadata indexing via Elasticseasrch, index resharding, compression S3 bucket lifecycle API, RGW Export NFS version 3 throw Ganesha …Read more

  • January 6, 2017
    Ceph RBD and iSCSI

    Just like promised last Monday, this article is the first of a series of informative blog posts about incoming Ceph features. Today, I’m cheating a little bit because I will decrypt one particular feature that went a bit unnoticed with Jewel. So we are discussing something that is already available but will have follow-ups with …Read more

  • January 5, 2017
    Ceph编译加速的小技巧

    总结了几个小技巧,用于在ceph编译过程中,能够更快一点 一、修改clone的地址 git clone https://github.com/ceph/ceph.git 可以修改成 git clone git://github.com/ceph/ceph.git 某些时候可能可以加快一些 二、根据需要下载分支 假如现在想看10.2.5版本的代码 2.1 常规做法 先下载整个库 git clone git://github.com/ceph/ceph.git all 总共的下载对象数目为46万 Counting objects: 460384 这个是包含所有的分支和分支内的文件的所有版本的我们切换到分支 [root@lab8106 mytest]#cd all[root@lab8106 all]# git branch* master[root@lab8106 all]# git checkout -b all10.2.5 v10.2.5Switched to a new branch ‘all10.2.5′[root@lab8106 all]# git branch* all10.2.5 master[root@lab8106 all]# ls -R|wc -l4392可以看到有这么多的文件 2.2 现在只复制一个分支的 [root@lab8106 mytest]# …Read more

  • January 5, 2017
    ceph 的crush算法 straw

    很多年以前,Sage 在写CRUSH的原始算法的时候,写了不同的Bucket类型,可以选择不同的伪随机选择算法,大部分的模型是基于RJ Honicky写的RUSH algorithms 这个算法,这个在网上可以找到资料,这里面有一个新的特性是sage很引以为豪的,straw算法,也就是我们现在常用的一些算法,这个算法有下面的特性: items 可以有任意的weight 选择一个项目的算法复杂度是O(n) 如果一个item的weight调高或者调低,只会在调整了的item直接变动,而没有调整的item是不会变动的 O(n)找到一个数组里面最大的一个数,你要把n个变量都扫描一遍,操作次数为n,那么算法复杂度是O(n)冒泡法的算法复杂度是O(n²) 这个过程的算法基本动机看起来像画画的颜料吸管,最长的一个将会获胜,每个item 基于weight有自己的随机straw长度 这些看上去都很好,但是第三个属性实际上是不成立的,这个straw 长度是基于bucket中的其他的weights来进行的一个复杂的算法的,虽然iteam的PG的计算方法是很独立的,但是一个iteam的权重变化实际上影响了其他的iteam的比例因子,这意味着一个iteam的变化可能会影响其他的iteam 这个看起来是显而易见的,但是事实上证明,8年都没有人去仔细研究底层的代码或者算法,这个影响就是用户做了一个很小的权重变化,但是看到了一个很大的数据变动过程,sage 在做的时候写过一个很好的测试,来验证了第三个属性是真的,但是当时的测试只用了几个比较少的组合,如果大量测试是会发现这个问题的 sage注意到这个问题也是很多人抱怨在迁移的数据超过了预期的数据,但是这个很难量化和验证,所以被忽视了很久 无论如何,这是个坏消息 好消息是,sage找到了如何解决分布算法来的实现这三个属性,新的算法被称为 ‘straw2’,下面是不同的算法straw的算法 max_x = -1max_item = -1for each item: x = random value from 0..65535 x *= scaling factor if x > max_x: max_x = x max_item = itemreturn item 这个就有问题了scaling factor(比例因子) 是其他iteam的权重所有的,这个就意味着改变A的权重,可能会影响到B和C的权重了 新的straw2的算法是这样的 max_x = -1max_item …Read more

Careers