Ceph分布式存储系统的核心和基座就是RADOS集群。RADOS的全称为Reliable Autonomic Distributed Object Store,也就是可靠的,自修复分布式对象存储。其关键特性体现在两方面,一方面是数据是高可靠的;另外一方面是对于故障的自修复能力,比如出现宕机或者磁盘故障问题等情况下实现自动的故障处理,实现集群状态的修复。
前面文章我们大概介绍过RADOS的架构和核心组件,现在我们把前面的插图拿过来,具体如图1所示。这里面包含的核心组件有OSD、MON和librados。
图1 RADOS架构示意图
OSD组件是一个独立的服务,用于实现对磁盘的管理和分布式数据的备份和恢复。这个是数据层面的核心组件。通常来说,一个磁盘对应着一个OSD进程。
MON组件是Ceph的元数据服务组件,该组件管理着所有的元数据信息。例如集群的硬件情况、资源映射关系和存储池情况等等。
librados是位于客户端的软件,该软件为上层服务提供访问Ceph集群的接口,同时在该软件内会根据元数据信息进行数据位置的计算,并且实现数据的分发。
1整体架构介绍
一个存储系统管理着大量的设备和数据。为了保证用户层面可以找到期望的数据,有需要对这些数据进行管理,管理数据的数据称为元数据。因此,任何存储系统的数据都分为用户数据和元数据,Ceph存储系统也不例外。
Ceph存储系统通过两个集群来存储RADOS的数据和元数据。其中MON集群用户存储Ceph存储系统的元数据,而OSD集群用户存储Ceph存储系统的数据。
Ceph的元数据比较简单,其中存储的是OSD集群的拓扑信息和一些资源的逻辑关系信息。这些信息的数量非常少,变化也不频繁。同时,客户端会缓存元数据,并且对于数据的定位是基于元数据计算而来,并不需要从元数据集群查询。基于这些特性,客户端对MON集群的访问非常少,因此不会成为系统的性能瓶颈。
图2 软件功能特性示意图
RADOS的整体软件架构如图所示,最底层负责消息的收发,通常是以太网,基于TCP/IP协议。然后是集群对象管理和本地对象管理,集群对象管理负责分布式对象的管理,保证对象数据的可靠性,本地对象管理负责逻辑对象数据与磁盘物理数据的对应关系。另外就是元数据集群,其中维护着各种Map信息,包括MonMap、CrushMap、PGMap和OSDMap。
MonMap是对元数据集群的描述,其中包括元数据集群各个物理节点的IP地址等信息。如本专栏创建的集群的Mon信息。
OSDMap是集群中OSD物理节点的信息,包括IP地址、OSD权重和版本等内容。PGMap描述了数据PG与OSD的对应关系。PG在Ceph中成为放置组,它是Ceph存储池的逻辑单元,可以理解为存储池的逻辑分区。
客户端在初始化是会拉取最新的元数据信息,并缓存到客户端。当客户端对某个对象读写数据的时候,根据对象的名称可以计算出一个哈希值。然后,通过对哈希值与PG组取模运算,得到对应所处于的PG。最后根据PG与OSD的映射关系,可以定位到具体的OSD。
PG与OSD的对应关系是通过Crush算法计算得到的。这个映射关系通常是稳定的,但也是不稳定的,因为任何故障都会导致映射关系的变化,比如磁盘故障、服务器故障或者网卡故障等等。
可以看到从逻辑上来看,RADOS集群及组件并不复杂。但实际情况并非如此,RADOS集群的具体实现还是比较复杂的,这主要与其要处理的各种异常情况相关。
2数据可靠性保证
数据的可靠性保证有两种手段,一种是通过多副本的方式,也就是同一个数据复制多份,并且存储在不同的位置;另一种方式是纠删码的方式,也就是通过类似校验和的方式。本文仅仅介绍多副本的方式。
即使是多副本的数据可靠性技术在实现的时候又分为主副本模式和无主副本模式两种形式。所谓主副本模式是指同一个对象的数据请求会经过同一个副本,并且通过该副本复制到其它从副本。待所有副本处理成功后才返回给客户端。
非主副本模式不存在具体的主副本,各个副本是对等的。为了保证数据的可靠性和一致性,客户端需要将数据同时发送到多个副本,保证至少规定的副本成功后才可以返回成功。
Ceph为了保证数据的强一致性,采用的是主副本的模式。这样所有请求都经过主副本,因此可以保证写读的时序性。
3元数据可靠性保证
元数据的可靠性也是通过多副本保证的。在生产环境下,Ceph存储系统建议元数据服务器的数量最少为3台。也就是说元数据会同时存储在3台服务器上。这样,即使出现某一台服务宕机或者其它故障,仍然可以通过其它服务器访问元数据。
元数据的一致性保证与数据略有不同,它是通过一个名为Paxos的分布式一致性协议来保证的。关于该部分内容本文不再详细介绍,更详细的内容请参考《Paxos算法实例解析之Ceph Monitor》一文。
文章后期可能会进行错误更正和内容更新,关注我们更方便了解内容变化。
举报/反馈

数据存储张

3364获赞 2665粉丝
《文件系统技术内幕》作者,一个专注数据存储技术的百家号,从原理到实现,应有尽有!
科技领域创作者
关注
0
0
收藏
分享