Ceph系列01-Ceph简介

阅读: 评论:0

Ceph系列01-Ceph简介
Ceph的基本概念介绍和⼊门知识储备。
1、ceph简介
Ceph是⼀个开源项⽬,它提供软件定义的、统⼀的存储解决⽅案。Ceph是⼀个可⼤规模扩展、⾼性能并且⽆单点故障的分布式存储系统。从⼀开始它就运⾏在通⽤商⽤硬件上,具有⾼度可伸缩性,容量可扩展⾄EB级别,甚⾄更⼤。
Ceph的架构在设计之初就包含下列特性:
所有的组件必须可扩展
不能存在单点故障
解决⽅案必须是软件定义的、开源的并且可适配
Ceph软件应该运⾏在通⽤商⽤硬件之上
所有组件必须尽可能⾃我管理
Ceph存储系统在同⼀个底层架构上提供了块、⽂件和对象存储,使得⽤户可以⾃主选择他们需要的存储⽅式。对象是Ceph的基础,也就是它的基本存储单元。任何格式的数据,不管是块、对象还是⽂件,都以对象的形式保存在Ceph集的归置组(Placement Group,Pg)
中。使⽤对象存储,我们可以将平台和硬件独⽴开来。在Ceph中,由于对象没有物理存储路径绑定,使得对象⾮常灵活并且与位置⽆关。这也使得Ceph的规模能够近线性地从PB级别扩展到EB级别。
Ceph是圣克鲁兹加利福尼亚⼤学的Sage Weil在2003年开发的,也是他的博⼠学位项⽬的⼀部分。初始的项⽬原型是⼤约40000⾏C++代码的Ceph⽂件系统,并于2006年作为参考实现和研究平台遵循LGPL协议(Lesser GUN Public License)开源。美国劳伦斯利物莫国家实验室(Lawrence Livermore National Laboratory)资助了Sage的初始研究⼯作。2003~2007年是Ceph的研究开发时期。在这期间,它的核⼼组件逐步形成,并且社区对项⽬的贡献也已经开始逐渐变⼤。Ceph没有采⽤双重许可模式,也就不存在只针对企业版的特性。
Inktank是Ceph背后的公司,它的主要⽬的是给他们的企业客户提供专业知识、处理流程、⼯具和⽀撑,使他们能够有效地采⽤和管理Ceph存储系统。Sage是Inktank的CTO和创始⼈。
Ceph这个词是宠物章鱼的⼀个常见绰号。Ceph可以看作Cephalopod的缩写,它属于海洋软体类动物家族。Ceph以章鱼作为⾃⼰的吉祥物,表达了Ceph跟章鱼⼀样的并⾏⾏为。
Inktank这个词与章鱼有⼀定关系。渔民有时候也把章鱼称为墨鱼,因为它们可以喷射墨汁。这就解释了为什么章鱼(Ceph)跟墨鱼(Inktank)有⼀定关系。同样,Ceph和Inktank有很多共同点。你可以认为Inktank就是Ceph的智库。
开源Linux社区2008年就预见到Ceph的潜⼒,并将其加⼊Linux内核主线。这已经成为Ceph的⾥程碑事件。
2、Ceph与云
云环境要求其存储能够以低成本纵向和横向扩展,⽽且能够容易与云框架中其他组件集成。
OpenStack项⽬⼤⼒推动了公有云和私有云的发展。它已经证明了⾃⼰是⼀个端到端云解决⽅案。它⾃⼰的内部核⼼存储组件Swift提供基于对象的存储和Nova-Volume(也称为Cinder),⽽Cinder则为VM提供块存储。
与Swift(它仅提供对象存储)不同,Ceph是⼀个包含块存储、⽂件存储和对象存储的统⼀存储解决⽅案,这样可以通过单⼀存储集为OpenStack提供多种存储类型。因此,你可以轻松⽽⾼效地为OpenStack云管理存储。OpenStack和Ceph社区已经⼀起合作了许多年,致⼒于为OpenStack云开发⼀个完全⽀持的Ceph存储后端。从Folsom(OpenStack第6个主要版本)开始,Ceph已经完全与OpenStack集成。Ceph
开发⼈员确保Ceph能够适⽤于OpenStack的最新版,同时贡献新特性以及修正bug。OpenStack通过它的cinder和glance组件使⽤Ceph最苛刻的特性RADOS块设备(RBD)。Ceph RBD通过提供精简配置的快照复制(snapshotted-cloned)卷帮助OpenStack快速配置数百个VM实例,这种⽅式既减少空间需求,⼜⾮常快速。
3、Ceph与软件定义存储(SDS)
Ceph是⼀个真正的SDS解决⽅案,它是开源软件,运⾏在商⽤硬件上,因此不存在⼚商锁定,并且能提供低成本存储。SDS⽅案提供了客户急需的硬件选择的灵活性。客户可以根据⾃⾝的需要选择任意制造商的商⽤硬件,并⾃由地设计异构的硬件解决⽅案。在此硬件解决⽅案之上的Ceph 的软件定义存储可以很好地⼯作。它可以从软件层⾯正确提供所有的企业级存储特性。低成本、可靠性、可扩展性是Ceph的主要特点。
从存储⼚商的⾓度来看,统⼀存储的定义就是在单⼀的平台上同时提供基于⽂件和基于块的访问。
Ceph底层中并不存在块和⽂件的管理,⽽是管理对象并且在对象之上⽀持基于块和⽂件的存储。在传统基于⽂件的存储系统中,⽂件是通过⽂件⽬录进⾏寻址的。类似地,Ceph中的对象通过唯⼀的标识符进⾏寻址,并存储在⼀个扁平的寻址空间中。剔除了元数据操作之后,对象提供了⽆限的规模扩展和性能提升。Ceph通过⼀个算法来动态计算存储和获取某个对象的位置。
传统的存储系统并不具备更智能地管理元数据的⽅法。元数据是关于数据的信息,它决定了数据将往哪⾥存储,从哪⾥读取。传统的存储系统通过维护⼀张集中的查表来跟踪它们的元数据。也就是说,客户端每次发出读写操作请求时,存储系统⾸先要查这个巨⼤的元数据表,得到结果之后它才能执⾏客户端请求的操作。对于⼀个⼩的存储系统⽽⾔,你或许不会感觉到性能问题,但对于⼀个⼤的存储集来说,你将会受制于这种⽅法的性能限制。它也会限制系统的扩展性。
4、Ceph中的数据副本
Ceph没有采⽤传统的存储架构,⽽是⽤下⼀代架构完全重塑了它。Ceph引⼊了⼀个叫CRUSH的新算法,⽽不是保存和操纵元数据。CRUSH
是Controlled Replication Under Scalable Hashing的缩写。
CRUSH算法在后台计算数据存储和读取的位置,⽽不是为每个客户端请求执⾏元数据表的查。通过动态计算元数据,Ceph也就不需要管理⼀个集中式的元数据表。现代计算机计算速度极快,能够⾮常快地完成CRUSH查。另外,利⽤分布式存储的功能可以将⼀个⼩的计算负载分布到集中的多个节点。CRUSH清晰的元数据管理⽅法⽐传统存储系统的更好。
CRUSH会以多副本的⽅式保存数据,以保证在故障区域中有些组件故障的情况下数据依旧可⽤。⽤
户在Ceph的CRUSH map中可以⾃由地为他们的基础设施定义故障区域。这也就使得Ceph管理员能够在⾃⼰的环境中⾼效地管理他们的数据。CRUSH使得Ceph能够⾃我管理和⾃我疗愈。当故障区域中的组件故障时,CRUSH能够感知哪个组件故障了,并确定其对集的影响。⽆须管理员的任何⼲预,CRUSH就会进⾏⾃我管理和⾃我疗愈,为因故障⽽丢失的据数执⾏恢复操作。CRUSH根据集中维护的其他副本来重新⽣成丢失的数据。在任何时候,集数据都会有多个副本分布在集中。
使⽤RAID技术修复多个⼤硬盘是⼀个很繁琐的过程。另外,RAID需要很多整块的磁盘来充当备⽤盘。这也会影响到TCO,如果你不配置备⽤盘,将会将会遇到⿇烦。RAID机制要求在同⼀个RAID组中的磁盘必须完全相同。如果你改动了磁盘容量、转速和磁盘类型,则你可能要⾯临惩罚。这样做将会对于存储系统的容量和性能产⽣不利影响。
TCO (Total Cost of Ownership ),即总拥有成本,包括产品采购到后期使⽤、维护的成本。这是⼀种公司经常采⽤的技术评价标准。由于常见的RAID5、6、10等阵列⽅式需要使⽤磁盘作为镜像盘或者热备盘,因此如果你买了10块10T的硬盘共计100T空间,使⽤阵列后会导致最后可以使⽤的硬盘容量⼩于100T。当然你也可以使⽤诸如RAID0之类的不损失空间的阵列⽅式,但是这样会导致数据的安全性⼤⼤地降低。
基于RAID的企业级存储系统通常都需要昂贵的硬件RAID卡,这也增加了系统总成本。
RAID系统最⼤的限制因素是它只能防⽌磁盘故障,⽽不能为⽹络、服务器硬件、OS、交换设备的故障或者区域灾害提供保护措施。
RAID最多能为你提供防⽌两个磁盘故障的措施。在任何情况下你⽆法容忍超过两个的磁盘故障。路灯节电
出水服务Cpeh是⼀个软件定义的存储,因此它不需要任何特殊硬件来提供数据副本功能。另外,数据副本级别可以通过命令⾼度定制化。这也就意味着Ceph存储管理员能够轻松地根据⾃⾝需要和底层基础设施特点来管理副本策略。
这样的恢复操作不需要任何热备磁盘;数据只是简单地复制到Ceph集中其他的磁盘上。
盐酸环丙沙星凝胶除了数据副本⽅法外,Ceph还⽀持其他⽤于保证数据可靠性的⽅法,⽐如纠删码技术。纠删码⽅式下,毁损的数据借助纠删码计算通过算法进⾏恢复或再次⽣成。
5、Ceph的存储兼容性
Ceph是⼀个完备的企业级存储系统,它⽀持多种协议以及访问⽅式,主要可以分为块、⽂件和对象存储三⼤类。
5.1 Ceph块存储
块存储是存储区域⽹络中使⽤的⼀个数据存储类别。在这种类型中,数据以块的形式存储在卷⾥,卷会挂接到节点上。它可以为应⽤程序提供更⼤的存储容量,并且可靠性和性能都更⾼。这些块形成的卷会映射到操作系统中,并被⽂件系统层控制。
Ceph引⼊了⼀个新的RBD协议,也就是Ceph块设备(Ceph Block Device)。
RBD块呈带状分布在多个Ceph对象之上,⽽这些对象本⾝⼜分布在整个Ceph存储集中,因此能够保证数据的可靠性以及性能。
⼏乎所有的Linux操作系统发⾏版都⽀持RBD。除了可靠性和性能之外,RBD也⽀持其他的企业级特性,例如完整和增量式快照,精简的配置,写时复制(copy-on-write)式克隆,以及其他特性。RBD还⽀持全内存式缓存,这可以⼤⼤提⾼它的性能。Ceph RBD⽀持的最⼤镜像为16EB。在OpenStack中,可以通过cinder(块)和glance(image)组件来使⽤Ceph块设备。这样做可以让你利⽤Ceph块存储的copy-on-write特性在很短的时间内创建上千个VM。
发烟筒5.2 Ceph⽂件存储
Ceph⽂件系统(也就是CephFS)是⼀个兼容POSIX的⽂件系统,它利⽤Ceph存储集来保存⽤户数据。CephFS将数据和元数据分开存储,为上层的应⽤程序提供较⾼的性能以及可靠性。
Linux内核驱动程序⽀持CephFS,这也使得CephFS⾼度适⽤于各⼤Linux操作系统发⾏版。
在Cpeh集内部,Ceph⽂件系统库(libcephfs)运⾏在RADOS库(librados)之上,后者是Ceph存储集协议,由⽂件、块和对象存储共⽤。要使⽤CephFS,你的集节点上最少要配置⼀个Ceph元数据服务器(MDS)。然⽽,需要注意的是,单⼀的MDS服务器将成为Ceph⽂件系统的单点故障。MDS配置后,客户端可以采⽤多种⽅式使⽤CephFS。如果要把Ceph挂载成⽂件系统,客户端可以使⽤本地Linux内核的功能或者使⽤Ceph社区提供的ceph-fuse(⽤户空间⽂件系统)驱动。除此之外,客户端可以使⽤第三⽅开源程序,例如NFS的Ganesha和SMB/CIFS的Samba。
5.3 Ceph对象存储
对象存储是⼀种以对象形式⽽不是传统⽂件和块形式存储数据的⽅法。
Ceph是⼀个分布式对象存储系统,通过它的对象⽹关(object gateway),也就是RADOS⽹关(radosgw)提供对象存储接⼝。RADOS⽹关利⽤librgw(RADOS⽹关库)和librados这些库,允许应⽤程序跟Ceph对象存储建⽴连接。
RADOS⽹关提供RESTful接⼝让⽤户的应⽤程序将数据存储到Ceph集中。RADOS⽹关接⼝满⾜以下特点。
网络巡检
兼容Swift:这是为OpenStack Swift API提供的对象存储功能。
兼容S3:这是为Amazon S3 API提供的对象存储功能。
Admin API:这也称为管理API或者原⽣API,应⽤程序可以直接使⽤它来获取访问存储系统的权限以管理存储系统。
要访问Ceph的对象存储系统,也可以绕开RADOS⽹关层,这样更灵活并且速度更快。librados软件库允许⽤户的应⽤程序通过C、C++、Java、Python和PHP直接访问Ceph对象存储。Ceph对象存储具备多站点(multisite)的能⼒,也就是说它能为灾难恢复提供解决⽅案。通过RADOS或者联合⽹关可以配置多站点的对象存储。
6、其他存储⽅案
6.1 GPFS/通⽤并⾏⽂件系统
GPFS(General Parallel File System,通⽤并⾏⽂件系统)是⼀个分布式⽂件系统,由IBM开发及拥有。这是⼀个专有、闭源的存储系统,这使得它缺少吸引⼒并且难以适应。存储硬件加上授权以及⽀持成本使得它⾮常昂贵。另外,它提供的存储访问接⼝⾮常有限;它既不能提供块存储,也不能提供RESTful接⼝来访问存储系统,因此这是⼀个限制⾮常严格的系统。甚⾄最⼤的数据副本数都限制只
有3个,这在多个组件同时故障的情形下降低了系统的可靠性。
6.2 iRDOS
iRDOS是⾯向规则的数据系统的代表,它是依据第三条款(3-clause)BSD协议发布的开源数据管理软件。iRDOS不是⼀个⾼度可靠的存储系统,因为它的iCAT元数据服务器是单点(single point of failure,SPOF),并且它不提供真正的HA。另外,它提供的存储访问接⼝很有限;既不能提供块存储,也不能提供RESTful接⼝来访问存储系统,因此这是⼀个限制⾮常严格的系统。它更适合于存储少量⼤⽂件,⽽不是同时存储⼩⽂件和⼤⽂件。iRdos采⽤传统的⼯作⽅式,维护⼀个关于物理位置(与⽂件名相关联)的索引。由于多个客户端都需要从元数据服务器请求⽂件位置,使得元数据服务器需要承受更多的计算负载,从⽽导致单点故障以及性能瓶颈。
6.3 HDFS
HDFS是⼀个⽤Java写的并且为Hadoop框架⽽⽣的分布式可扩展⽂件系统。HDFS不是⼀个完全兼容POSIX的⽂件系统,并且不⽀持块存储,这使得它的适⽤范围不如Ceph。HDFS的可靠性不需要讨论,因为它不是⼀个⾼度可⽤的⽂件系统。HDFS中的单点故障以及性能瓶颈主要源于它单⼀的NameNode节点。它更适合于存储少量⼤⽂件,⽽不是同时存储⼩⽂件和⼤⽂件。
6.4 Lustre
面膜仪
Lustre是⼀个由开源社区推动的并⾏分布式⽂件系统,依据GNU(General Public License,通⽤公共许可证)发布。在Lustre中,由单独⼀个服务器负责存储和管理元数据。因此,从客户端来的所有I/O请求都完全依赖于这个服务器的计算能⼒,但对企业级计算来说通常这个服务器的计算能⼒都⽐较低。与iRDOS和HDFS类似,Lustre适合于存储少量⼤⽂件,⽽不是同时存储⼩⽂件和⼤⽂件。与iRDOS类似,Lustre管理⼀个⽤于映射物理位置和⽂件名的索引⽂件,这就决定了它是⼀个传统的架构,⽽且容易出现性能瓶颈。Lustre不具备任何节点故障检测和纠正机制。在节点出现故障时,客户端只能⾃⾏连接其他节点。
6.5 Gluster
GlusterFS最初由Gluster公司开发,该公司2011年被Red Hat收购。GlusterFS是⼀个横向扩展的⽹络附加(network-attached)⽂件系统。在Gluster中,管理员必须明确使⽤哪种安置策略来将数据副本存储到不同地域的机架上。Gluster本⾝不内置块访问、⽂件系统和远程副本,⽽是以扩展(add-ons)的⽅式⽀持。

本文发布于:2023-05-18 18:45:45,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/104360.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   提供   故障   对象   存储系统   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图