文章目录
前言
一:理论部分
1.1:什么是CEPH?有什么作用?
-
此LOGO的来源是章鱼,是从开发者宠物的名字来的
-
CEPH是一个开源的项目,是一个可大规模扩展,高性能且无单点故障的分布式存储系统,它是软件定义的,统一的存储解决方案。
-
CEPH因为开源,可扩展和分布式的优点,如今称为各种云的主流存储方案
1.2:CEPH的优势和缺点
- ceph发展至今已过10年,随着云计算的发展,ceph与云计算的关系越来越紧密,但是也存在着一些优缺点
1.2.1:优点
- CRUSH算法
- CRUSH算法是Ceph最初的两大创新之一(另一个是基于动态子树分区的元数据集群),也是整个RADOS的基石,是Ceph最引以为豪的地方。
- CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。同时, CRUSH算法支持副本和EC两种数据冗余方式,还提供了四种不同类型的Bucket(Uniform, List, Tree, Straw),充分考虑了实际生产过程中硬件的迭代式部署方式,虽然实际生产中大多数情况下的都是只用了一种Straw。
- 统一存储架构
- Ceph最初设计的RADOS是为其实现一个高性能的文件系统服务的,并没有考虑对于块设备、对象存储的支持,也就没有什么RBD、RADOS GateWay,跟别提OpenStack和qemu之类的了。但由于 RADOS 出色的设计和独立简洁的访问接口,Ceph社区果断推出了用于支持云计算的分布式块存储RBD和分布式对象存储RADOS GateWay,并将开发中心全面转向云计算领域。
- RADOS的设计非常的优秀。从架构上来看,RBD和RADOSGateWay实际上都只是RADOS的客户端而已,但得益于RADOS的优秀设计,RBD和RADOSGateWay的设计和实现都很简单,不需要考虑横向扩展、冗余、容灾、负载平衡的等复杂的分布式系统问题,同时能够提供足够多的特性和足够优秀的性能,因此迅速得到了社区的认可。
- 另一方面,Ceph为OpenStack提供了良好的支持,成为了目前最火的OpenStack底层存储系统。
- 丰富的特性
- Ceph的特性不可谓不多,从分布式系统最基本的横向扩展、动态伸缩、冗余容灾、负载平衡等,到生产环境环境中非常实用的滚动升级、多存储池、延迟删除等,再到高大上的CephFS集群、快照、纠删码、跨存储池缓存等,不可谓不强大。
- 但是就像大多数开源系统一样,Ceph的基本特性,或者说真正在生产环境中用的上的特性还是非常靠谱的,但其他“高级”特性就只能打一个问号了。特别是在CephFS模块,由于Ceph社区目前的开发重点主要还是与云计算相关的部分,即RBD和RADOSGateWay,导致CephFS的开发停滞了很久,相关的特性,例如元数据集群、快照等,目前都不满足生产环境的要求。
1.2.2:缺点
- 代码质量
- Ceph主要使用C/C++语言编写,同时外围的很多脚本和工具用了Python。
- 由于历史问题,ceph部分功能的代码数量有的达到1万多行,且与父级目录没有逻辑关系等等问题
- 性能
- 数据双倍写入
- Ceph本地存储接口(FileStore)为了支持事务,引入了日志(Journal)机制。所有的写入操作都需要先写入日志(XFS模式下),然后再写入本地文件系统。简单来说就是一份数据需要写两遍,日志+本地文件系统。
- IO路径过长
- 这个问题在Ceph的客户端和服务器端都存在。以osd为例,一个IO需要经过message、OSD、FileJournal、FileStore多个模块才能完成,每个模块之间都涉及到队列和线程切换,部分模块在对IO进行处理时还要进行内存拷贝,导致整体性能不高。
- 对高性能硬件的支持有待改进
- 最开始只支持HDD,没有充分考虑SSD
- 数据双倍写入
1.3:什么是集中式存储架构?
- 所谓集中式存储,整个存储是集中在一个系统中的。但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备。
- 在集中式存储中通常包含一个机头,这个是存储系统中最为核心的部件。通常在机头中有包含两个控制器,这两个控制器实现互备的作用,避免硬件故障导致整个存储系统的不可用。在该机头中通常包含前端端口和后端端口,前端端口用户为服务器提供存储服务,而后端端口用于扩充存储系统的容量。通过后端端口机头可以连接更多的存储设备,从而形成一个非常大的存储资源池。
- 分布式存储是一个大的概念,其包含的种类繁多,除了传统意义上的分布式文件系统、分布式块存储和分布式对象存储外,还包括分布式数据库和分布式缓存等
1.4:中间控制节点架构(HDFS)
1.5:完全无中心架构—一致性哈希(Swift)
- 与Ceph的通过计算方式获得数据位置的方式不同,另外一种方式是通过一致性哈希方式获得数据位置。一致性哈希的方式就是将设备做成一个哈希环,然后根据数据名称计算出的哈希值映射到哈希环的某个位置,从而实现数据定位。
- 哈希环对服务器设备做映射
1.6:完全无中心架构—计算模式(Ceph)
-
下图是Ceph存储系统的架构,在该架构中与HDFS不同的地方在于该架构中没有中心节点。客户端是通过一个设备映射关系计算出来其写入数据的位置,这样客户端可以直接与存储节点通信,从而避免中心节点的性能瓶颈。
-
ceph 是一种开源存储软件。底层实现了对象存储,并以此为基础对外提供对象存储接口、块存储接口、文件级存储接口。
-
官方架构图
-
通俗转化版
-
名词解释
- RADOS:Reliable Autonomic Distributed Object Store(可靠的,自主的,分布式的对象存储)。在 ceph 中这个名词经常出现,有时会以 R 表示 RADOS。实际上这个词仅仅是对 ceph 的一个修饰词,并不代表 ceph 的组件什么的。粗暴的认为, RADOS = ceph 对象存储集群 即可。
- RGW、RBD、CEPH FS: 这三个就是 ceph clients。
- RGW:对象存储网关,也就是对象存储接口。
- RBD:块设备,也就是块存储接口。
- CEPH FS:ceph 文件系统