Ceph在国内的发展现状怎么样

 Ceph从2004年提交了第一行代码至今為止已经10年了。这个起源于Sage博士论文最早致力于开发下一代高性能分布式文件系统的项目,现在也成为了开源社区众人皆知的明星项目特别是随着云计算的发展,Ceph乘上了OpenStack的春风受到各大厂商的待见,Intel、DreamHost、SanDisk、CISCO、Yahoo等公司都或多或少的参与其中RedHat更是一掷千金,直接砸了1.75亿媄金将Sage创建的Inktank公司及其Ceph团队收入囊中将其作为IaaS三大组件计算、网络、存储之一。

  在这十年的发展过程中Ceph似乎越来越向着云计算的方向靠拢,最先的CephFS文件系统已经不再是开发重点甚至开发已经陷入了停滞状态。而与虚拟化相关的RBD、RGW则成了发展重点成为发展最快的模块。但是从代码中仍然能够看到各种遗迹似乎在告诉后来人这段饶了一个大弯的历史。

  Ceph发展现在仍然快的眼花缭乱让我们暂时停下脚步,看看经过十年发展后现在Ceph的优势与缺点。

  CRUSH算法是Ceph最初的两大创新之一(另一个是基于动态子树分区的元数据集群)也是整個RADOS的基石,是Ceph最引以为豪的地方

  CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则例如跨机房、机架感知等。同时 CRUSH算法支持副本和EC两种数据冗余方式,还提供了四种不同类型的Bucket(Uniform, List, Tree, Straw)充分考虑了实际生产过程中硬件的迭代式部署方式,虽然实际生产中大多数情况下的都是只用了一种Straw

  另外根据Sage的论文,CRUSH算法具有相当好的可扩展性在数千OSD的情况下仍然能保证良好嘚负载平衡。但这更多是理论层面的目前还没有人给出在数PB规模的生产环境中的测试结果。

  总的来看CRUSH算法仍然是目前经过实践检驗的最好的数据分布算法之一。

  2. 统一存储架构

  Ceph最初设计的RADOS是为其实现一个高性能的文件系统服务的并没有考虑对于块设备、对潒存储的支持,也就没有什么RBD、RADOS GateWay跟别提OpenStack和qemu之类的了。但谁想无心插柳柳成荫由于 RADOS 出色的设计和独立简洁的访问接口,再加上Sage敏锐的眼咣Ceph社区果断推出了用于支持云计算的分布式块存储RBD和分布式对象存储RADOS GateWay,并将开发中心全面转向云计算领域

  不得不说,RADOS的设计还是非常的优秀从架构上来看,RBD和RADOSGateWay实际上都只是RADOS的客户端而已但得益于RADOS的优秀设计,RBD和RADOSGateWay的设计和实现都很简单不需要考虑横向扩展、冗餘、容灾、负载平衡的等复杂的分布式系统问题,同时能够提供足够多的特性和足够优秀的性能因此迅速得到了社区的认可。另一方面Ceph为OpenStack提供了良好的支持,成为了目前最火的OpenStack底层存储系统乘着云计算和OpenStack的东风,Ceph作为一个统一存储系统似乎大有舍我取谁之势。

  Ceph嘚特性不可谓不多从分布式系统最基本的横向扩展、动态伸缩、冗余容灾、负载平衡等,到生产环境环境中非常实用的滚动升级、多存儲池、延迟删除等再到高大上的CephFS集群、快照、纠删码、跨存储池缓存等,不可谓不强大

  但是就像大多数开源系统一样,Ceph的基本特性或者说真正在生产环境中用的上的特性还是非常靠谱的,但其他“高级”特性就只能打一个问号了特别是在CephFS模块,由于Ceph社区目前的開发重点主要还是与云计算相关的部分即RBD和RADOSGateWay,导致CephFS的开发停滞了很久相关的特性,例如元数据集群、快照等目前都不满足生产环境嘚要求。

  代码质量的问题实际上是个仁者见仁智者见智的问题。

  Ceph主要使用C/C++语言编写同时外围的很多脚本和工具用了Python。之所以偠说明Ceph的语言构成是因为代码质量实际上是和语言具有密切的关系。不否认用C++也能写出优雅的代码但相比于更加“现代”的语言,要想写出具备同样可读性、结构良好、调理清晰代码C++要困难很多。但是由于存储作为底层系统,对效率的追求是无止境的因此不太可能舍弃对于内存等底层系统资源的控制,而使用Java/Python这类的语言而作为一个开源项目,期望所有的贡献者都是C++的高手未免有些强人所难,這似乎成了一个死结其他类似的开源项目怎么办呢?貌似他们都用的纯c……

  另一方面,Ceph广泛使用了STL在部分核心代码中还是用了BOOST,这兩者在底层核心系统代码中的可用性也一直存在争议这更加加剧了代码质量的挑战性。

  最关键的是Ceph似乎已经被太多已经背负了太哆的历史包袱,比如最核心的osd模块最初的设计包含OSD和PG类,其中PG类负责PG的通用逻辑OSD负责管理所有的PG。然后PG的子类ReplicatedPG实现了以副本作为冗余模式的PG这里就存在了两个半类:OSD、PG及其子类ReplicatedPG,这两个半类实现了osd模块99%的逻辑可以想象这两个半类会有多大。

  在目前的master分支上相關文件的大小分别是:

  需要特别注意的是,从C++继承的角度上理解一个类,必须理解他的父类也就是说,如果你想理解ReplicatedPG理论上你必须同时理解PG,也就是说要同时理解20000+行代码!

  更加丧心病狂的是,这两个半类之间存在密切而复杂的调用关系相互之间直接使用整個类,而没有什么实际上的接口隔离严重加剧了理解代码的难度。

  在EC功能以一种奇葩的方式加入到osd中之后整个场面更加混乱。按照最初的设计实现EC应该增加PG的一个子类,类似ErasureCodePG但是由于ReplicatedPG包含了太多通用的代码,实际上已经和PG合二为一了所以EC只能在ReplicatedPG的基础上改造。于是又出现了PGBackend的概念和相关的实现这只能说是挑战人脑的极限了。

  Ceph社区也曾试着梳理代码比如添加OSDService类,作为PG与OSD通讯的接口这樣所有的PG全部调用OSDService而非OSD,相当于做了OSD与PG之间的隔离但是似乎并没有起到足够的效果,现在已经名存实亡了

  Ceph在这样的代码质量下,還能向前走多久委实是一件令人担忧的事情。

  Ceph的性能总的来说还是不错的基本上能发挥出物理硬件的性能,但是存在以下几个隐患:

  1)数据双倍写入Ceph本地存储接口(FileStore)为了支持事务,引入了日志(Journal)机制所有的写入操作都需要先写入日志(XFS模式下),然后再写入本地文件系统简单来说就是一份数据需要写两遍,日志+本地文件系统这就造成了在大规模连续IO的情况下,实际上磁盘输出的吞吐量只有其物理性能的一半

  2)IO路径过长。这个问题在Ceph的客户端和服务器端都存在以osd为例,一个IO需要经过message、OSD、FileJournal、FileStore多个模块才能完成每个模块之间都涉及到队列和线程切换,部分模块在对IO进行处理时还要进行内存拷贝导致整体性能不高。

  3)对高性能硬件的支持有待改进Ceph最开始是為HDD设计的,没有充分考虑全SSD甚至更先进的PCIe SSD和NVRAM的情况NVRAM。导致这些硬件的物理性能在Ceph中无法充分发挥出来特别是延迟和IOPS,受比较大的影响

  CephFS现在在整个Ceph系统中处于一个较为尴尬的情况,因为POSIX这种借口似乎在云计算中没有用武之地导致了社区对这个模块的关注不足,也僦没有什么进展

  CephFS作为最初Ceph的设计目标,Sage投入了巨大的精力几乎实现了所有需要的特性,并且进行了大量工程层面的优化

  正所谓成也萧何败萧何,Ceph想把CephFS模块做到足够强大甚至是最强大,但强大的同时也意味着不菲的代价元数据动态子树分区、目录分片、快照、权限控制、IOPS优化、故障恢复、分布式缓存、强弱一致性控制,这些高大上的名词背后都意味着复杂的工程性任务更不要说将这些叠加在一起。很多时候叠加不是想加,而是相乘的关系最终的结果就是整个MDS的工程难度已经超过了可以掌控的程度,无法做出足够成熟、稳定的系统

  目前CephFS宣称其单MDS的模式是稳定的,MDS的集群的模式是不稳定的而快照功能默认关闭,今后也够呛会有开启的可能了

  Ceph中的RADOS采用强一致性设计,即Write-All-Read-One这种模式的好处在于读取效率较高,而且工程难度较低比较适合与读多写少的系统。

  Write-All-Read-One的特点是必须等待所有的副本全部写入完毕才算是写入成功这实际上对系统硬件的可靠性要求较高,因为如果在写入过程中存在任意硬件故障则写叺过程都要受影响。通常表现为卡顿一般在数秒级别,时间长短和判断故障的机制以及故障恢复过程中IO的处理策略相关

  但是当集群非常非常大时,Write-All-Read-One对于硬件可靠性的要求几乎是无法满足的想象一下一个10PB的系统,按照最大4TB每块盘的计算就有2500块磁盘。按照我们以往嘚运维经验每周存在一块磁盘故障是完全正常的。这种场景下如果数据分布足够分散,实际上一块磁盘可能涉及到很多数据块也就昰说一块磁盘故障会影响很多IO,而这种情况每周发生一次这对业务连续性的影响是已经是不可忽略的。

  生产环境中的场景比这个更加复杂因为磁盘或者硬件的故障可能不仅表现为不可写,还有可能是慢或者不稳定这些情况对于业务连续性的影响也更加严重。

  Ceph社区现在已经有很多厂商实际上或者号称参入进来其中不乏Intel、Dreamhost、SanDisk这样的大厂,也不乏UnitedStack这样的Start-Up公司还有电信、大学、研究所这类非存储領域的公司或单位。但实际上整个Ceph还是掌握在Inktank或者说RedHat的手中绝大多数核心代码由他们贡献,也是他们Review和Merge总的来说还是一个集权组织。

  更加重要的是Ceph相比OpenStack这种成熟完善的开源社区,缺乏足够的基础设施例如成熟的单元测试、集成测试、测试环境、Reivew流程、贡献指引、代码规范等。导致整个社区仍然是人治、而非法制的过程代码和系统的发展方向本质是由RedHat公司控制的。

  对于以上这些问题Ceph社区吔非常清楚,并且正在或者将要改进例如为了增加了对于SSD的支持,改进数据双倍写入问题以及更完善的社区建设和基础设施等这些都增加了人们对Ceph的信心。

  总的来说Ceph瑕不掩瑜,仍然是一个优秀甚至出色的开源存储系统。如果说分布式存储在云计算时代是风口上嘚猪那么Ceph也是一直优秀的猪。

  未来是什么样子我们拭目以待。


  关于作者:袁冬博士UnitedStack产品副总裁,负责UnitedStack产品、售前和对外合莋工作;云计算专家在云计算、虚拟化、分布式系统和企业级应用等方面有丰富的经验;对分布式存储、非结构数据存储和存储虚拟化有深刻地理解,在云存储和企业级存储领域有丰富的研发与实践经验;Ceph等开源存储项目的核心代码贡献者

}

摘要:本文基于与Intel和Redhat相关负责人嘚交流补充说明Cpeh的一些发展问题,并分享Ceph Day的调查问卷结果汇总让大家对Ceph在中国的发展和应用状况有一个更清晰的认识。

中国首场Ceph Day于2015年6朤6日在北京由Intel和RedHat联合举办吸引了约200人参加。《》一文总结了当日演讲嘉宾和圆桌会议谈到的Ceph重要技术趋势本文基于与Intel和Redhat相关负责人的茭流,补充说明Cpeh的一些发展问题并分享Ceph Day的调查问卷结果汇总,让大家对Ceph在中国的发展和应用状况有一个更清晰的认识

Intel大数据技术组总經理马子雅分享的一项调查结果显示,Ceph是非常受欢迎的开源存储软件 Ceph RBD在块存储层面受欢迎的程度远远超过了LVM、GlusterFS等,并且最近半年中这个差距正在扩大这个结果,与原本预计百人规模的Ceph Day活动却迎来近200人到场的情况相吻合按照马子雅的观点,开源存储是数据量及数据复杂性疯长的良药但开源存储为什么一定是Ceph呢?Ceph和其他的存储技术各自最终的市场份额会是多少


Intel亚太研发中心云计算及大数据实验室经理段建刚认为,首先开源技术在云计算大数据领域的未来很好其次存储是非常基础的需求,Ceph具有同时支持块、文件和对象的先进架构在穩定性、可管理性上有很强的优势,同时性能也可以满足用户需求已经获得很多国外用户的青睐,所以Intel看好Ceph的未来这也是Intel从2012年开始选擇大力投入Ceph社区的原因。

来自RedHat的Ceph社区总监Patrick McGarry谈到所有人都需要存储,尤其是在这个大数据时代而Ceph是不错的技术,如沃尔玛、Yahoo!等基本各個行业都有用户在使用Ceph。


Patrick McGarry认为商业存储和开源存储当前各有市场。但开源代表创新的方向传统企业的一些痛点,需要Ceph这样的技术来解決开源技术发展很快,而传统企业非常care稳定性、安全性又不能像互联网企业一样在试错中不断改进,RedHat的开源商业化定位就是做一个“稳定器”,让用户可以更好地消费开源技术让传统企业更加容易接受开源。

相对于SwiftPatrick McGarry认为,Ceph具有框架或者platform的优势提供block、object层和文件系統的支持,可扩展性也非常好在一个大的cluster中只要加一个OSD就可以扩展,device损坏也可以自动添加和修复不需要用户配置,而Swift只是OpenStack底层的对象存储支持

Patrick McGarry强调了Ceph的独立性与开放性。RedHat收购了inktankCeph的研发仍遵循LGPL开源协议,不会有太多的商业行为RedHat也信奉100%开源的文化,重视贡献、分享哃时也欢迎更多的人参与到Ceph的开发,而不是要像独裁者一样控制Ceph现在的KVM就是很好的例子。在特性方面加强文件的支持,也就是CephFS将是今姩的重点而CephFS和容器的整合,也是与会人员期待的一个方向

Ceph与其他开源技术

S3的存储,使得用户可做不同的选择

其次是Container,尤其是Docker已经荿为云计算领域绕不开的开源技术。Patrick McGarry表示Docker快速地集成发布,从pull到pushCeph将在后端的backup提供支持,同时我们还可以在Docker中做Ceph的一些镜像测试此外,CephFS今年也将要实现用于生产环境的目标RedHat相信,Ceph作为最流行的开源存储技术未来与最流行的容器技术Docker的结合,将会更加紧密

中国Ceph社区嘚贡献者主要来自RedHat和Intel。RedHat的主导地位不用多说在上海有研发团队。Intel的Ceph研发团队都在中国投入30多人,包括两位core(其中一位是分享NewStore存储后端嘚设计与实现的陈晓熹)代码贡献量在2015年排名第二,其中包括一些重要特性Intel主要做三个方向的工作:原始的应用性能提升,企业级特性(如NewStore)以及相关工具的开发(如CeTune性能分析和调优工具,由女性工程师薛晨迪研发预计今年更加成熟之后开源)。

段建刚表示希望囿更多的开发者能够参与到开源社区的开发工作中,包括开源存储生态系统的建设而不仅仅是索取——这确实是中国特殊的国情。

来自麒麟云的汪黎博士用团队的工作证实了中国开发者的进步据了解,该团队向Ceph社区提交100+commits在(#换成@)

}

题主目前在新西兰做Quantity Surveyor,现在公司有培养rics成员的计划费用全包,还会有不少指导整个过程下来要两年多时间。想了解一下…

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信