Ceph分布式存储系统以及高可用原理

Ceph是目前开源社区中非常火的一款分布式存储系统。其最初是Sage Weil的博士课题,并且在2004-2006两年多的时间开发出Ceph的原型。2007年Sage博士毕业以后继续全职从事Ceph的开发工作。在2012年Sage创立了专门提供Ceph服务和技术支持的公司Inktank,并且在当年7月份发布了Ceph的第一个稳定版本V0.48.1(代号Argonaut,Ceph和许多开源软件一样,选择首字母从A ~ Z依次递增的单词作为稳定版本的代号)。当前最新的稳定版本是0.94.1(Hammer)。目前,Ceph社区非常活跃,基本保持每三到六个月发行一个稳定版本的速率。Redhat公司于2014年4月份以1.75亿美金的价格收购了Ceph开发团队。Ceph和其他存储系统最大的不同就是它同时为用户提供了块、对象以及Posix文件三种通用的存储接口,并且Ceph对OpenStack,Hadoop等开源平台也提供了内在的支持。早在2010年,Linus就将Ceph的Posix接口的客户端代码merge进了Linux内核,用户在不需要另外安装软件包就可以直接通过Ceph的Posix文件系统接口挂载使用Ceph。

和大多数的由GFS(Google File System)衍生出来的分布式存储系统相比,Ceph采用了无中心元数据服务器的架构,在诸多概念上有自己的创新,这篇文章就从原理和架构和相关概念上对Ceph进行一个梳理。

关于常见分布式组件高可用设计原理的理解和思考


1. Ceph原理和架构

1.1 分布式存储系统抽象

自2003年谷歌发布了GFS论文以后,分布式存储系统在互联网业内有了快速的发展和广泛的使用。应该说,分布式存储系统的出现很好的满足了互联网公司诸多应用场景下的数据存储的需求。数据是互联网公司非常宝贵的财富,在进行数据存储时,首先要考虑的是其高可靠性,也就是在正常情况下,写入的数据不会无故丢失。但是计算机设备和磁盘是有一定的故障率的,特别是互联网公司普遍使用的比较廉价的x86通用服务器。在实际应用中,各大公司保证数据高可靠性的方法通常有两种。第一,花钱省事,购买价钱比较昂贵的EMC,NetApp等公司的商业存储。第二,进行及时的数据备份。考虑到互联网公司数据量太大,并且增长快,如果采用第一种方式,想必是一笔非常大的开销。第二种方式是比较合,但是在分布式存储系统出现之前,通常是基于单机存储进行数据备份,数据的维护和管理比较繁琐和复杂,还有可能增加业务代码的复杂性(通常在业务层就考虑数据的备份)。谷歌GFS论文出来以后,给业界带来了很大的震动,一批有理想的程序员心想:其实也不复杂嘛,就是用一台机器作为管理机进行数据定位和集群管理,一批机器进行数据存储,并且让备份的过程自动化并且对用户透明。于是业界就很快出现了一批类GFS的分布式存储系统。比较有名的开源分布式存储系统有HDFS,MooseFS和淘宝TFS等。

然而Ceph和业内其它比较流行的类GFS分布式存储系统是不一样的,在结构上它没有类似GFS中单点的管理机,而是独树一帜,采用独特的哈希算法进行数据的定位以及存储节点分组的方式进行节点的自我管理。但是和其他分布式存储系统一样,它解决的最重要问题也是让数据的备份工作自动化,高效的保证数据的高可靠性。

总体来说,分布式存储系统解决的最重要的问题是将数据高效高可靠的存储在由通用硬件组成的计算机集群中。根据当前大多数分布式存储的设计和实现,我们可以抽象出分布式存储系统的三个层次,如图1所示:
在这里插入图片描述

  • 接口层:定义分布式存储系统怎样被客户来进行使用,比较通用的接口有Posix文件系统接口,块存储接口和对象接口。当然,许多的存储系统还定义了自己原生的API接口。

  • 策略层:定义数据通过接口层写入系统时,系统本身要采用相应的策略对写入的数据进行处理和分配,以保证数据的高可用性,安全性,读写高性能等。同时,在集群某个节点发生故障时,需要策略层定义故障的修复机制。

  • 引擎层:定义了数据持久化的方式,数据经过策略层的处理最终都会被分配到存储集群中的相应节点上。数据到达节点之后,以什么样的方式持久化到磁盘上,是引擎层定义的。

在这三个层次中,引擎层通常采用目前比较成熟的一些单机存储软件,例如整存整取的文件存储通常使用比较常用的ext4,xfs等文件系统作为引擎层。Key-Value存储通常采用Leveldb,MySQL等单机数据库系统作为引擎层。可以说,在分布式存储系统出现之前,引擎层单机的技术发展已经比较成熟了。所以,引擎层通常不是分布式存储系统需要重点考虑一层,通常都会根据业务的需求,选择一款比较合适的引擎层的存储技术。那么,分布式存储系统所需要解决的问题主要集中在接口层和策略层。其中,以策略层所要解决的问题最为复杂。接下来就以Ceph策略层所要解决的数据定位,数据备份,错误检测和恢复等方面的问题为出发点,结合Ceph本身的架构设计对Ceph作一个较为详细的介绍。

1.2 Ceph基本组件

Ceph中所包含的基本组件如图2所示
在这里插入图片描述
我们从下往上看,Sage在当初发表关于Ceph的论文最重要的一个概念就是RADOS,意在构造一个高可靠的,可扩展的自治的分布式存储系统。Ceph中RADOS的实现是由OSD和Monitor两个组件完成的:

  • OSD:OSD(Object Storage Device)是Ceph中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值