Ceph存储历险记–第一部分:介绍

本文由Ceph中国社区-王存鹏 翻译、耿航校稿。 英文出处:My adventures with Ceph Storage 欢迎加入CCTG

加入Veeam前,我在一个完全基于VMwarevSphere/vCloud的数据中心工作。就像我在前面帖子服务提供商不是大公司里面介绍的那样,服务提供商的需求有时与那些大型公司并不相同,因此最终我们选择使用了不同的技术。我最终考虑的项目之一是Ceph。我们一直在寻找一个可以横向扩展的存储系统,这一存储系统应该能够线性扩展,而不是痛苦的向上扩展升级。对存储DIYDo ItYourself)的主意没有吓到我们,因为我们有相应的IT技能处理这个问题。从该IDC离开后我始终保持自己对Ceph相应知识的更新,并且仍然在关注与使用Ceph

这个帖子的系列不仅仅关注Ceph本身,还会关注你可以用它做些什么。Ceph目前还未被VMware官方支持,但是他们已经将该计划其纳入了他们的路线图中。因此你不能使用Ceph为你的虚拟机提供块存储功能,即使我们已经通过使用一个iSCSILinux机器在中间进行测试并且工作的很好。但是有一些其他的用法,其中一个就是用Ceph作为通用存储,你数据中心里面有什么都可以往上面扔。在我的例子里面,我将其用作所有备份的Veeam仓库。在本系列的结尾,我将会向你展示如何用Ceph创建横向扩展和冗余的Veeam仓库。

本系列主要包括:

第二部分:为菜鸟准备的架构说明

第三部分:设计节点

第四部分:在实验室中部署节点

第五部分:在实验室中安装Ceph

第六部分:将Ceph挂载为linux机器块设备

第七部分:添加节点扩展集群存储

第八部分:Veeam集群化仓库

第九部分:Veeam部分过程中的容错场景

第十部分:升级集群

 

为什么使用Ceph

因为它免费并且开源。它可以用于每个实验室,甚至可以在家里使用。你只需要3台机器就可以开始使用。这三台机器可以是自己的空闲服务器,也是可以是3台家用电脑,或者在你笔记本上运行的3个虚拟机。Ceph是一个伟大的学习平台,通过它你可以提升对对象存储和横向扩展系统的知识的了解程度。即使在你的生产环境中你也可以用到某些知识。

开始前,我必须告诉你一些注意事项:

我为Veeam工作,作为虚拟环境的数据保护方案,我们与很多存储厂商有过业务往来,但我们并不不倾向于任何一家的存储解决方案。本文并不是向你暗示应该采用本解决方案而不是商业系统。就像常说的那样,这完全取决于你的环境和业务需求:你需要分析你的需求、限制、约束,然后为你自己或你的客户选择最好的解决方案。Ceph仅仅是那些基于开源软件的大规模存储解决方案的选择之一,因此即使在家里的实验室它也便于拿来学习。想想它在教育方面的功劳吧。

–Ceph,就像前面提到的那样,是一个开源软件解决方案。它要求一些linux技能,并且如果你需要商业支持,你唯一的选择就是联系Ceph背后的InkTank公司,或者集成商,或者收购InkTankRedHat公司。如果自己觉得自己搞定Ceph解决方案比较困难,你可以够购买商业解决方案(更多细节请见自制或者购买决策)。这些商业解决方案多种多样,其中有一些确实非常好。

 

什么是Ceph?

先说重要的,我们先对Ceph做个快速介绍。

Ceph是一个开源分布式存储系统,构建于商业组件之上,通过软件实现获得可用性。对于Ceph描述一个比较流行的版本是:运行于商业软件之上可横向扩展的软件定义对象存储。是的,buzzword你成功了!

Ceph最早是由Sage Weil在他的博士论文中设计提出,随后被成立的Inktank公司管理和分发。InkTank公司成立用以向客户提供相应的Ceph商业服务,Sage在该公司中担任CTO职务。20144月,InkTank(以及Ceph)被RedHat公司收购。

Ceph是一个横向扩展系统:它被设计为先天无单点失效问题,可以扩展到无限个节点,并且节点之间没有耦合关系(无共享架构),而传统存储系统控制器之间总有一些组件是共享的(缓存、磁盘)。我已经在为什么我认为存储的未来是横向扩展一文中进行了详细分析。CephRoss Turk在一个5分钟的短片中也对这些概念进行了解释,他用宾馆进行了一个非常棒的对比。酒店?是的,就是酒店。我们可以看看这个视频。

https://youtu.be/xRCEHI2pStI

就像你将从视频里面学到的,Ceph使用Crush算法对数据进行自动化组织管理。Crush算法负责数据对象在集群内的智能分布,随后使用集群节点作为数据的管理器。在这里我不会对Crush如何工作进行进一步的解释,也不会描述哪些配置选项可用。因为我不是一个Ceph专家,我研究Cpeh的主要目的是能有一个满足我需求的Ceph集群正常运行。但是如果你想,你可以把Ceph Crush考虑进去,并且可以从机架甚至数据中心的层面管理错误域。这样可以创建一个跨地域的集群,甚至可以抵御大规模的故障灾难。参考这篇文章可以获得更多Crush功能示例。

Ceph的其他支柱是节点。Ceph被构建为使用简单的服务器,每台服务器配置一些本地存储,通过网络连接彼此进行数据复制。服务器之间没有共享组件,即使一些角色如监视器(MON)在一些服务器上创建,被所有节点访问。Ceph不使用RAID或者校验,冗余由对象的副本功能来保证。也就是说集群中的任何对象会被至少复制两次并放置到集群中的不同位置。如果有节点失效,集群会识别仅有的数据块拷贝,并且会在集群中别的位置创建第二份拷贝。最新版本的Ceph甚至支持纠删码,在牺牲性能的前提下保留更多的空间(更多信息请查看纠删码:最好的横向扩展数据保护?)。

Ceph可以通过向集群添加或者从集群移除节点并使用Crush算法进行对象的再平衡的方式动态扩展或者收缩。

我已经至少提到了2对象的术语。Ceph的的确确是对象存储。数据没有以文件的形式存放到文件系统上,也不是以块的形式存放到扇区或者磁道上。每个典型的对象包括数据本身、可变数量的元数据以及一个全局唯一标识符。进入集群的每一个文件被保存为一个或多个对象(取决于文件大小),一些对对象进行引用的元数据也会被创建,一个唯一的标识符被分配,并且该对象也会在集群中被保存多次。数据需要被访问的时候,过程正好相反。

与文件或者块存储相比,对象的优势在于规模:对象存储的架构可以很容易的扩展到非常大的规模。实际上,它被用于那些需要解决那些难以置信数据对象的解决方案。这里简单提一些,Dropbox或者Facebook都基于对象存储系统打造的,因为这是管理中欧给你过文件的最好的方式。

其他资源

暂时先到这里,在你等待下章的时间里,你可以使用我用来自学Ceph的资源:

Ceph官方网站,尤其是他们的官方文档:

http://ceph.com/docs/master/

 

Ceph博客:

http://ceph.com/community/blog/

 

Ceph大拿Sebastien Han的个人站点:

http://www.sebastien-han.fr/

 

 关于译者:

王存鹏 象云OpenStack研发总监,架构师,Ceph中国社区翻译组成员

Leave a Comment

电子邮件地址不会被公开。