Ceph架构简析
分类:技术社区 发布时间:2017/3/20 0:00:00

1. Ceph简介

Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。“统一”意味着Ceph可以在同一套架构下实现对对象存储、块存储和文件存储的支持,从而降低IT基础设施的部署和运维代价,在一些需要多种存储方式的场景下,例如同时需要存储虚拟机镜像(块存储)及应用数据(对象存储或文件存储)时,采用Ceph可以有效简化配置,降低系统复杂性。

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

2. 架构

Ceph的架构如下图所示,本节我们将介绍图中每一部分的功能。


RADOS(Reliable, Autonomic, Distributed Object Store,即可靠的自动化的分布式的对象存储)是Ceph最关键的组件。RADOS最大的特色是使用CRUSH算法维护存储对象与存储服务器的对应关系,并采用了无Master设计。对象复制,集群扩容,数据迁移,故障检测和处理等复杂功能由Ceph OSD(Object Storage Device)提供,既避免了单点失败,又提升了集群扩展性。

RADOS的系统逻辑结构如下图所示:


RADOS集群主要由两种节点组成。一种是为数众多的、负责完成数据存储和维护功能的OSD,另一种则是若干个负责完成系统状态检测和维护的Monitor。OSD和Monitor之间相互传输节点状态信息,共同得出系统的总体工作状态,并形成一个全局系统状态记录数据结构,即所谓的Cluster Map。


在使用RADOS系统时,大量的客户端程序通过与OSD或者Monitor的交互获取Cluster Map,然后直接在本地进行计算,得出对象的存储位置后,便直接与对应的OSD通信,完成数据的各种操作。可见,在此过程中,只要保证Cluster Map不频繁更新,则客户端显然可以不依赖于任何元数据服务器便完成数据访问流程。在RADOS的运行过程中,Cluster Map的更新完全取决于系统的状态变化,而导致这一变化的常见事件只有两种:OSD出现故障,或者RADOS规模扩大。而正常应用场景下,这两种事件发生的频率显然远远低于客户端对数据进行访问的频率。

2.2. librados

librados对RADOS进行了封装并提供了高层的API供上层具体的应用接口(RADOSGW、RBD及Ceph FS)调用。Ceph支持的三种分布式存储的应用场景(块存储、对象存储和文件存储)都得益于底层RADOS所提供的可用性和扩展性支持。

Ceph同样开放了librados的API供用户调用。直接使用librados提供的API可以全面地控制整个Ceph集群。用户可以基于原始的RADOS来进行二次开发,扩展出满足用户特殊需求的存储服务,或是针对Ceph集群本身机制的调优和监控等。

2.3. 应用接口

librados之上是Ceph用于向客户端提供服务的具体接口,根据目标不同主要分为提供块存储服务的RBD、提供对象存储服务的RADOSGW以及提供文件存储服务的Ceph FS。这三类服务直接封装成便于用户使用的形式。

2.3.1. RADOSGW

RADOSGW(RADOS GateWay)调用了Ceph底层的librados,在原生的RADOS对象存储服务的基础上封装出了Amazon S3及OpenStack Swift风格RESTful API供用户调用。RADOSGW在RADOS之外主要提供了针对用户账户、权限以及高层API的支持,现有的使用Amazon S3或OpenStack Swift的应用可以无缝迁移至Ceph对象存储服务,不需要对客户端进行任何修改。

2.3.2. RBD

RBD(RADOS Block Device)提供了一个标准的块设备接口,通常用于提供块设备形式的共享存储(调用方需要使用特定的文件系统而不是标准的文件访问接口),或是提供虚拟机镜像存储(作为虚拟机磁盘)。Linux 2.6.37版本内核正式加入对RBD的支持,ReadHat也为QEMU添加了对RBD的支持,因此RBD可以适用于Linux平台的共享存储以及任何基于QEMU提供虚拟化服务的场景。

2.3.3. Ceph FS

Ceph FS(Ceph File System)是Ceph提供的使用POSIX兼容接口的分布式文件系统,目前仍处于开发过程中。Ceph FS支持使用多台元数据服务器(MDS)来管理文件系统元数据以提供可靠性支持,使用librados访问Ceph集群的存储服务,并开发了基于FUSE的文件系统客户端。Ceph FS的MDS集群功能目前还不稳定,因此官方并不建议将Ceph FS用于生产环境或存储关键数据。

2.4. 应用

Ceph提供的三类存储服务可以支持各种类型的应用,其中较为典型的是基于对象存储(RADOSGW)的云存储平台及基于块存储(RBD)的云计算平台。

2.4.1. 云存储平台

云存储平台可以将后端数据存储在Ceph集群中,并使用RADOSGW与Ceph集群通信。由于Ceph本身具有高度的可用性、可靠性和扩展性,云存储平台可以专注于向最终用户或租户提供有针对性的存储服务(例如文档协作管理、在线视频、在线教育等),而不需要考虑后端存储失效引发的相关问题。

2.4.2. 云计算平台

云计算平台中的虚拟化服务器可以直接将Ceph提供的RBD块设备作为虚拟机的磁盘,不需要考虑集群中的多个虚拟化服务器争抢共享存储资源导致的性能开销,也不需要引入额外的中间层来完成针对共享存储的封装并用于虚拟机镜像的存储,从而极大地降低系统的复杂度。由于RBD的块设备与系统自身的块设备具有相同的形式,在虚拟化服务器一端也可以针对具体块设备进行性能优化,如使用本地缓存加速等。另外,由于每一个RBD块设备都对应了一台虚拟机,在Ceph存储系统一端也可以进行虚拟机或应用感知的相关优化。


体验创新云技术带来核心业务效率显著提升
立即预约,加速企业数字化转型进程
Copyright ⓒ 2022 苏州博纳讯动软件有限公司 国徽 苏ICP备13004761号 法律声明及隐私政策