任何超大规模的巨头们都不会去等待IT产业的技术被发明来满足他们自己应用的需求,但是当在一个合适的时间一个可替代的开源项目成长足够成熟,巨头们通常会做出跨式越部署以使自己的软件到开源平台上述况这是很精确的,从雅虎的门户网站上可以看到目前正在进行中伴随着雅虎公司从自家对象存储转移到一个不久的将成为百万兆类的系统上而且该系统是基于开源ceph,一种称作瑞士军刀的存储。
这样的跳转不常见因为对于超大规模的公司来说倾向于推出超出他们部署的规格的任何技术,如开源或者其它技术,当然通常是开源的。尤其是已经发生的。举一个例子,ThePlatform这周早前就有过讨论媒体巨头已经使用一种自定义版本的Cassandra的NoSQL数据库作为后台来控制流媒体来提供服务和用户交互就在去年秋天Cassandra就推出商业级版本DataStax。雅虎正在进行一个大的飞跃比目前的情况,那就是通过转变自家的MObStor非结构化对象存储系统到ceph,除非这是一个经过仔细考虑过的问题,Brad McMillen,雅虎架构工程师告诉The Platform说.
雅虎是一个创新着在上规模的对象存储领域,伴随着脸书的Haystack系统以及亚马逊的Amazon S3系统Mosso云文件系统一种基于Rackspace Hosting’s(公有云托管)的Swfit对象存储,现在属于openstack云控制器的一部分在一些有关雅虎和脸书的案例中,存储的有数亿级别的图片,处理pb级的容量,这样的情况引起很多的担心以至于每家公司都发明了他们自己的系统来更有效的存储这些图片,亚马逊和Rackspace选择对象存储作为他们公有云的一部分,假设客户也很想创建云应用存放丰富的媒体在这些平台。
所有的对象存储系统在上述提到-如Haystack, MObStor, S3, Cloud Files/Swift 等被创建因为常规的文件系统存储阵列有一个非常大的元数据开销那就是需要跟踪对象在集群中的存储地方。对象存储刚好是忽略一个文件系统并放任何数据在一个bucket,使用一个key类似于一个文件名或者一个web的地址找到数据在一个集内。这些可以使元数据的开销更小因为这里没有来自文件系统来瓶颈。
初期的雅虎图片服务器是一个,从十几年前就特别关注非结构化数据存储系统,这个系统是一个遵循较为复杂且普遍的对象存储系统被雅虎叫做MObStor,它是在开在2009年雅虎公开提出的。雅虎对图片分享站Flickr在2005年的收购大大加剧了其需要一种如对象存储的技术,但MObStor是却是雅虎应用用来储存JavaScript和HTML代码以及富媒体的,雅虎的工程师给MObStor在2010年夏天的一个更新,当然这是一个较新的更改,
这也成为六个月后在系统的处理能力增长了4X(倍)的一个因素。这也是雅虎当时公布其运行在专有的被称作直接对象数据库结构Direct Object Repository Architecture (DORA)之上,MObStor的一个新后台它被称这是一个集群对象存储系统,在很多方面类似于Ceph。MObStor是雅虎程序当遇到需要保存非结构话的东西(可理解为需要保存的内容跟普通存储数据结构在磁盘的存储)的写入到以DORA为后台系统过程的接口像图片视频以及其他新闻类的数据,DORA开始就被设计成运行在普通硬件和存储应用上,雅虎当时还不太明确这些意味着什么,但是DORA后端的特点已经承认雅虎的想法是在做对象存储基于廉价的系统之上。
我们将操作数以百计p级别的,并且我不知道别人在Ceph社区谁将做这些。如果我们不是最大的,那么我们就会成为最大的产品用户,而且我们很可能发现适合我们规模的版本。你只要看雅虎的规模而不要看传统的规模。
经过一些改进,McMillen说当你累加所有服务和数据中心的对象、块和文件存储到一起你会发现雅虎已经有EB级的存储能力在一个博客发帖讨论过雅虎为了Flickr图片共享服务而让MObStor到ceph的迁移,公司说到这些来自用户的存储超过250十亿个的对象分布着500PB的图片、视频、邮件、博客帖子。并且这样的对象存储还在呈每年百分之20-25速度增长。
MObStor的“完整特性”依据的是McMillen和广泛的部署在雅虎。这样雅虎为什么会投入到一个不同技术,
在MObStor被广泛的应用和重视的条件下,不管怎样这些都涉及到了钱。
首先,MObStor是一个闭源程序,这意味着雅虎不得不创建、扩展、支撑工具完全依靠他们自己。通过广泛的吸取Hadoop数据分析平台,由雅虎创建开源,现在有一只资深的软件工程师改进,这个平台表明社区开发的价值。
我会说最大的原因转向ceph是因为我们仅仅想降低存储费用,McMillen解释说。我们的存储已经增长了许多,我们在以减少尽可能多成本为目的,有尽可能多的选择来而不是坚守一个系统,一种技术,一种硬件架构。
原创的MObStor对象存储是被设计用来运行在存储阵列有RAID之上的动态数据保护来保证文件安全。伴随着DORA雅虎加入了选项用来复制数据通过跨队列在存储集群里。RAID和复制带来了一个很大的开销,而 McMillen却不愿意透漏出任何有关MObStor与ceph的对比在这个方面。但是他曾经提到过与传统对象存储系统的对比的调查结果,这个开销对于3副本来说是200%,伴随着纠删码技术运用到ceph及其他的对象存储,你能降低到40-60%的开销,这些能在雅虎安装调试ceph中看到,McMillen说最接近的40%的开销在纠删码保护校验来确定数据的原始性。这个意味着雅虎能存储一样容量的数据在ceph里却只用了一半的容量来存储并且实现了对象存储而且还是三个副本。
MObStor/DORA不支持纠删码的设置,雅虎将不得不将这个移植到该系统上,这就意味着将有很多的开发和测试的工作量产生。ceph在另一方面,就是为了百亿亿级别部署而设计而且有纠删码技术保证数据的内建。(有了纠删码,少量无结构数据碎片和分散存储,或者如果一部分丢失,纠删码算法可以用来重建丢失数据)
最新ceph基础系统在雅虎的部署被叫做云对象存储,它在去年秋天已经被雅虎stack的Flickr部门 开始被校审。Flickr有"多PB级别"的ceph产量管理上,在本年度雅虎计划增加10个基数来达到“轻量过百PB级别”据McMillen所说,作为推出ceph-based云对象存储其将隶属于Flickr旗下,雅虎邮箱,Tumblr(轻量博客)。(McMillen说Flickr已经有超过这样存储很多的空间,而这些将让他听到在MObStor 一些时间)
雅虎也曾经关注过swift和Gluster文件系统来作为一些特有选择在他们寻找一个新的对象存储系统,最终他们不注意力放在了ceph上。首先,McMillen说ceph有吸引力的地方在支持对象和块存储两者于一身,且未来某天的(很有希望的)文件系统存储,如果ceph社区永远有效处理问题。
“并不是所有雅虎的存储都适当做对象存储,但是很多却适合“McMillen这样说到。“我们正在使用块存储,但是这些使用距离对象存储并不遥远。有关我们喜欢ceph愿意之一,除了因为它具有纠删码而低成本之外,而且还因为是开源的项目可快速在开发社区,并且它是一个单一的块存储和对象存储存储系统。所以替换单独存储系统从块存储和对象存储之间,我们可以灵活的从一种技术栈获得两种使用方法。而且如果ceph一个有稳定的文件系统,我们今天绝对会使用
ceph社区-后台是Red Hat,其已经在一年前计划以175 百万获得ceph管理Inktank 。
当ceph可以在单个集群扩展到百亿亿级别的存储系统,McMillen说雅虎正在实施将ceph放在一个pod架构中这将能够更好的预测性能和更好错误隔离比一个单一集群,这看起来像他们所说的
在雅虎云对象存储,每一个节点(被称作一个对象存储设备),有60TB的存储这些都基于X86的服务器上。雅虎已经尝试过每个节点配置12-72个设备,并且没有透露出硬件配置的COS服务。每个集群有54个这样的节点,总容量可达3.2 pb。向外扩展这些服务,雅虎复制这些pods并使用哈希算法来打破无结构数据横跨pods问题还有节点之间的使用纠删码。
依靠在应用,雅虎正在使用常规的硬件驱动和磁盘服务shingled magnetic recording (SMR)技术,这些有不同能力和花费;SSDs也被部署到了COS服务提供高速I/O速度。
雅虎正在使用8/3纠删码在他的变体ceph中,这说明8份中的三份服务或者驱动在某个共享对象合一失败却仍然可以访问的到。这是常规级别的纠删码在ceph所应用的。但是雅虎已经计划了一个11/3的纠删码变体ceph,这意味着11中的三个驱动或者服务可以失败,且更重要的是这个可以提高40%的读写延迟。(雅虎计划回馈这个改进给ceph社区,通过这个方法,它能让自己参与到“Hummer“版本中去,根据McMillen的说法)公司已经做出了一系列调整来使ceph变现出更好的性能,如下图:
加入了纠删码更改,雅虎已经想出一个共享bucket索引的方法,那就是一个索引保持跟踪对象存储到一个bucket(这是一个亚马逊术语一个对象存储容量的单位)通常ceph实现bucket索引在一个单一的几节点上,但是雅虎的工程师知道如何切分和跨节点高可用且提高性能。雅虎也想出一个方法限制速率数据恢复是从磁盘或服务器出现故障时,恢复提高延迟约60%。
与此同时,雅虎自立支持自己的实现ceph,但是McMillen说公司与RehHat有一个很好的关系而且他们也不反对一些想法使用RedHat提供的技术。但是雅虎正处于一个大量消耗之中,而这与超大规模ceph有关,这也许是他们现在唯一的选择。
“我们将会操作在数以百计pb级别,而且我们不知道那人是谁也不知道谁会ceph社区做什么“,McMillen说。”如果我们不是最大的开发者,那么我们将是最大的产品用户。我们也许能发现我们合理共享某个规模所适合的版本。你只需要关注在雅虎使用的级别而不用去管传统使用的级别。我们会提交所有关于使用的版本问题的工作,我相信社会团体会利用我们所提供的这些数据。
原文链接: Inside The Ceph Exascale Storage At Yahoo