【ceph】ceph发展历史、组织和前景、整体架构

Ceph国内用户生态

Ceph作为全球最火热的开源分布式存储项目,同样在中国的发展也是非常火热,不断开始在不同领域不同行业及客户系统相融合。典型应用在国内一线互联网公司以及运营商、政府、金融、广电、能源、游戏、直播等行业。

当前中国Ceph形势对比前几年已经发生了决定性的变化,随着国内越来越多的各行业用户的使用,足以见证它的稳定性可靠性。

Ceph中国用户生态已然形成,可以看到国内如:中国移动、腾讯、阿里、网易、乐视、携程、今日头条、中国电信、中兴、恒丰银行、平安科技、YY、B站、360等。正是由于众多用户的使用验证了它的稳定性和可靠性的同时也促进了Ceph的进步,使其出现了很多新东西,如 SPDK、BlueStore、RDMA等等这些高性能底层技术。

Ceph国内贡献

Ceph社区的贡献者是 Ceph 的使用用户占据了相当的贡献排名。

国内都有哪些公司参与社区的贡献呢?我来说下,如:中国移动、XSKY、中兴、浪潮、H3C、阿里、网易、乐视、360、United Stack、99cloud等等,我这里就不展开说了(以上公司不分排名),详情可以查看社区mail list。

例如乐视小伙伴提交的Ceph RGW:Lifecycle还有XSKY小伙伴提交的DPDK、SPDK、RDMA、AsyncMessenger等等。

Ceph社区:持续的创新环境

从传统IT基础架构的生态链看,各个层级的行业领导者纷纷为Ceph投入人力,物力来持续推动不断创新的运行,开发和生产环境。

如图所示RedHat、SUSE、Canonical、FreeBSD等构成了Ceph 软件发行包的厂商。

Intel,Mellanox,AMD 和 Cisco 分别在不同的硬件组件层面推动自身融入Ceph 体系,SanDisk,HDS 和 Fujitsu 都在自身的存储系统上采用 Ceph 整合,CERN 和德国电信分别是 Ceph 社区参与和回馈最多的企业用户。同时近年来国内运营商级别用户中国移动也在参与Ceph社区的贡献。

Ceph 通过其开放的社区和插件化的代码架构来包容越来越多的底层厂商参与其中,不管是 Mellanox 推动 Infiniband/RDMA,还是希捷的 Kinetic API,或是 Intel x86 架构,ARM 都在积极的参与其中,利用自身的优势来持续对 Ceph 软件体系进行创新发展。

比如在网络层面,Mellanox 联合 XSKY提供了基于 RDMA 的网络方案,Chelsio 跟 XSKY 合作实现基于 iWARP 的 RDMA 存储网络等。

Ceph存储引擎

Ceph在存储后端支持多种不同的存储引擎,有点类似MySQL支持InnoDB,MyISAM等等一样。之前有FileStore,KeyValueStore、NewStore和MemStore,但在这些存储引擎中真正被用来做在线系统只有FileStore。但是FileStore由于历史问题,存在先天的过多依赖本地文件系统的问题,在高利用率下存在较为严重的性能瓶颈问题。

因此,从Infernails版本开始,Sage开始NewStore的开发,通过结合键值数据库的高效管理和本地文件系统对于数据的空间管理来实现高效的后端存储。但是由于RocksDB和XFS的完美结合困难,在遭受若干次打击后,Sage Weil决定一捅到底,直接替换XFS使用一个简易的用户态文件系统进行管理。这个项目命名为BlueStore

BlueStore架构图

在这个崭新的 BlueStore设计和实现中,RocksDB被寄予厚望去管理起整个元数据系统,同时整个数据空间会采用一些为Ceph优化的空间分配器进行工作。目前Ceph已经支持离线 FileStore 到 BlueStore 的转换。

Ceph备份容灾

作为一个分布式存储系统,Ceph 很少会提及整集群全量备份,毕竟作为一个庞大的多副本存储池,很难再投入更大规模的备份系统作为支撑,更多的是由Ceph 自身通过副本和后台校验加上并行恢复来达到传统存储加备份机的可靠性。

但是 Ceph 仍然在不同的接口系统中提供了多种方式,在块存储中,用户往往需要备份几个重要的卷即使Ceph 集群在最差情况完全无法启动也能保证重要数据不至于丢失。

Ceph RBD异地灾备叫做Ceph RBD Mirroring,在Ceph Jewel版本中宣布可用。在此之前Ceph块存储解决方案(俗称RBD)还不能很好的跨地域复制(灾备)。这里需要提醒一下,由于Ceph是强一致性,所以只有在所有副本都写完的时候才认为一个写操作完成。这就是为什么建立一个跨很长距离地域的集群通常都不是一个好主意,因为这种情况延时一般都很高。集群必须等到所有的写操作都完成,所以客户端可能需要大量的时间来进行确认。

因此,需要一种机制来允许在不同地域的集群之间复制块设备。在当前Jewel版本中,主要是实现两个守护进程之间一对一的关系,而在未来将会扩展到1对N。这样,在Jewel以后的版本中,你将能够配置一个集群备份到多个目标备份集群中。

RBD Mirror功能的启用和禁用可以作用在整个Pool或者一个image上。如果在资源池级别启用了RBD Mirror功能,这样资源池中的每一个启用了日志特性的镜像将会被Mirroragent复制。

目前Ceph在多集群方案聚焦于接口层的方案,而不是在 RADOS 层面实现。比如 RADOS Object Storage在集群间通过Agent的方式进行数据同步,当然,在Jewel 版本中RADOS Object Storage V2种已经支持多读多写的机制,由于对象存储的弱语意,RADOS Object Storage的跨站仍然是最终一致性。其定义了 Zone,ZoneGroup 和联合集群概念,每个 Zone 可以理解为一个传统 Ceph 集群的部分,ZoneGroup 是多个Zone的集合,通常由不同地的Ceph集群中的Zone构成,而整个联合集群中只允许一个Master ZoneGroup 来进行写操作。因此从逻辑上来部署的话,Master ZoneGroup可以由多个Ceph集群构成,而Slave ZoneGroup也可以将这些Ceph集群的其他池作为Zone。这样就完成了多地多活的集群方案。

新版 Multi-Site 沿用记日志再同步的架构,代码基本重写,引入了boost 的协程框架,配置更清晰。同一个域下多 Zone之间的数据为多主模式,可以同时写;元数据为主从模式,由主Zone写入并同步到从Zone,保证元数据一致性。并且即将支持桶级同步。最近主线合并了同步模型的插件框架,用户可以自定义插件来对接 elasticsearch 实现元数据索引,或者自定义的向云端备份等操作。

Ceph未来展望

1.Ceph与Elasticsearch

前段时间看到Ceph支持了Elasticsearch,RGW+Elasticsearch是今年Ceph对象存储的一个热点功能,相信Ceph在大数据时代下对数据搜索分析方面也将会更加的完善。

2.CephFS

CephFS在社区Jewel版本宣称生产环境就绪, 目前 Active/Standby 模式比较稳定,Multi Active模式不太稳定,另外大规模使用的时候还是有一些问题,希望社区尽快完善CephFS相关功能,从用户角度还是有很多人期待使用CephFS的。

Ebay之前测试过J版本的CephFS,感兴趣的可以看看他们的测试报告在Slideshare上(http://www.slideshare.net/XiaoxiChen3/cephfs-jewel-mds-performance-benchmark)

3.Ceph与新型硬件

同时在硬件高速发展的今天,也希望Ceph能够在Intel的最新硬件3D Xpoint能跑出更好更高的性能,能够使Ceph更加适应高性能的场景。

4.Ceph人才培养

最后说下对于Ceph人才的培养看法,国家工信部的三年计划里面也公示了,”要建立创新人才培养模式,鼓励高校加强云计算相关学科建设,支持企业与高校联合开展在职人员培训,简历一批人才实训基地。” 随着Ceph在中国的运营商、政府、金融、广电、能源、游戏、直播等行业纷纷落地,导致出现了大量职位空缺。

所以现在需要建立起一套标准的Ceph培训体系来缓解目前对Ceph人才的稀缺问题,同时进行Ceph校园行以京津冀地区高校为试点辐射全国,所谓开源、Ceph宣传推广从校园开始,响应国家号召促进大学生就业和积极参与开源社区贡献。

Ceph的整体框架介绍

作者:侯玉彬 

如需转载,请联系原作者授权

简介

诞生于2006年的Ceph,是开源社区的明星项目,也是私有云事实上的标准-OpenStack的默认存储后端。

640?wx_fmt=pngCeph是一种软件定义存储,可以运行在几乎所有主流的Linux发行版(比如CentOS和Ubuntu)和其它类UNIX操作系统(典型如FreeBSD)。

640?wx_fmt=pngCeph的分布式基因使其可以轻易管理成百上千个节点、PB级及以上存储容量的大规模集群,同时基于计算的扁平寻址设计使得Ceph客户端可以直接和服务端的任意节点通信,从而避免因为存在访问热点而导致性能瓶颈。

640?wx_fmt=pngCeph是一个统一存储系统,即支持传统的块、文件存储协议,例如SAN和NAS;也支持对象存储协议,例如S3和Swift。

640?wx_fmt=jpeg

❖ Ceph和存储的未来

所有存储系统的要求都是统一、分布式、可靠、高性能且能够大规模扩展至艾字节,甚至更高级别。Ceph存储系统是一个真正的解决方案,它可以应对这个星球上爆炸式增长的数据。其统一、分布式、高性价比和可扩展的特性使它成为满足今天和将来数据存储需求的潜在解决方案。

640?wx_fmt=jpeg

❖ Ceph云存储解决方案

所有想在存储基础设施上省钱的用户最有可能很快就考虑采用软件定义存储(SDS)。SDS可以为在传统存储上有大投入但仍然没有获得必要的灵活性和扩展性的用户提供一个很好的解决方案。Ceph是一个真正的SDS解决方案,它可以从软件层面正确提供所有的企业级存储特性。低成本、可靠性、可扩展性是Ceph的主要特点。

 ❖ Ceph统一存储解决方案

从存储厂商的角度来看,统一存储的定义就是在单一的平台上同时提供基于文件和基于块的访问。企业存储环境在单一平台提供NAS和SAN。

在Ceph中,统一存储这个词涵盖的功能比现在的存储厂商所声称的更多。Ceph是一个真正的统一存储解决方案,它从单一统一软件层提供对象、块和文件存储。

在传统基于文件的存储系统中,文件是通过文件目录进行寻址的。相类似,Ceph中的对象通过唯一的标识符进行寻址,并存储在一个扁平的寻址空间中。剔除了元数据操作之后,对象提供了无限的规模扩展和性能提升。Ceph通过一个算法来动态计算存储和获取某个对象的位置。

​​​​​​​   

下一代架构

传统的存储系统并不具备更智能地管理元数据的方法。传统的存储系统通过维护一张集中的查找表来跟踪它们的元数据。客户端每次发出读写操作请求时,存储系统首先要查找这个巨大的元数据表,得到结果之后它才能执行客户端请求的操作。对于一个小的存储系统而言,也许不会感觉到性能问题,但对于一个大的存储集群来说,你将会受制于这种方法的性能限制,也会限制系统的扩展性。

Ceph引入了一个叫CRUSH的新算法,而不是保存和操纵元数据。

CRUSH是Controlled Replication Under Scalable Hashing的缩写,CRUSH算法在后台计算数据存储和读取的位置,而不是为每个客户端请求执行元数据表的查找。通过动态计算元数据,不需要管理一个集中式的元数据表。

CRUSH使得Ceph能够自我管理和自我治愈。当故障区域中的组件故障时,CRUSH能够感知哪个组件故障了,并确定其对集群的影响。无须管理员的任何干预,CRUSH就会进行自我管理和自我疗愈,为因故障而丢失的数据执行恢复操作。

使用CRUSH,我们能够设计一个没有单点故障的高度可靠的存储基础设施。它也使得Ceph成为一个面向未来的高度可扩展和可靠的存储系统。

兼容性组合

Ceph是一个完备的企业级存储系统,它支持多种协议以及访问方式。这个统一的存储支持Ceph块、文件和对象存储。

Ceph块存储

块存储是存储区域网络中使用的一个数据存储类别。

在这种类型中,数据以块的形式存储在卷里,卷会挂接到节点上。这些块形成的卷会映射到操作系统中,并被文件系统层控制。

Ceph引入了一个新的RBD协议,也就是Ceph块设备。RBD为客户端提供了可靠、分布式、高性能的块存储。RBD已经被Linux内核支持,几乎所有的Linux操作系统发行版都支持RBD。除了可靠性和性能之外,RBD也支持其他的企业级特性,如完整和增量式快照,精简的配置,写时复制式克隆以及全内存是缓存。

Ceph RBD支持的最大镜像为16EB。这些镜像可以作为磁盘映射到物理机裸机、虚拟机或者其他主机用。业界领先的开源hypervisor,例如KVM和Xen完全支持RBD。

640?wx_fmt=jpeg

Ceph文件系统

Ceph文件系统(也就是CephFS)是一个兼容POSIX的文件系统,利用Ceph存储集群来保存用户数据。Linux内核驱动程序支持CephFS,这也使得CephFS高度适用于各大Linux操作系统发行版。CephFS将数据和元数据分开存储,为上层的应用程序提供较高的性能以及可靠性。

在Ceph集群内部,Ceph文件系统库(libcephfs)运行在RADOS库(librados)之上,后者是Ceph存储集群协议,由文件、块和对象存储共用。要使用CephFS,集群节点上最少要配置一个Ceph元数据服务器(MDS),客户端可以采用多种方式使用CephFS。

如果要把Ceph挂在成文件系统,客户端可以使用本地Linux内核的功能或者使用Ceph社区提供的ceph-fuse驱动。

除此之外,客户端可以使用第三方开源程序,例如NFS的ganesha和SMB/CIFS的Samba。这些程序通过libcephfs将用户数据存入可靠的分布式Ceph存储集群。CephFS可以用来替代HDFS。也是通过libcephfs组件将数据存入Ceph集群。为了无缝实现这个功能,Ceph社区为Hadoop和Hadoop插件提供了必要的CephFS Java接口。

640?wx_fmt=jpeg

Ceph对象存储

对象存储是一种以对象形式而不是传统文件和块形式存储数据的方法。基于对象的存储已经引起了行业界的大量关注。为灵活地使用它们的巨量数据,这些组织正快速采用对象存储解决方案。

640?wx_fmt=jpeg

Ceph是一个分布式对象存储系统,通过它的对象网关(object gateway),也就是RADOS网关(radosgw)提供对象存储接口。RADOS网关利用librgw(RADOS网关库)和librados这些库,允许应用程序跟Ceph对象存储建立连接。Ceph通过RESTful API提供可访问且最稳定的多租户对象存储解决方案之一。

RADOS网关提供RESTful接口让用户的应用程序将数据存储到Ceph集群中。RADOS网关接口满足一下特点:

640?wx_fmt=png 兼容Swift:为OpenStack Swift API提供的对象存储功能;

640?wx_fmt=png 兼容S3:为Amazon S3 API提供的对象存储功能;

640?wx_fmt=png Admin API:这也称为管理API或者原生API,应用程序可以直接使用它来获取访问存储系统的权限以管理存储系统。

要访问Ceph的对象存储系统,也可以绕开RADOS网关层,librados软件库允许用户的应用程序通过C、C++、Java、Python和PHP直接访问Ceph对象存储。


640?wx_fmt=jpeg

以上是对Ceph的整体框架做了一些介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值