【ceph】学习笔记(二)RADOS的基本组件及存储流程

【ceph】学习笔记(二)RADOS的基本组件及存储流程一 RADOS 的存储简介 Ceph 分布式存储系统的核心和基座就是 RADOS 集群

大家好,欢迎来到IT知识分享网。

一,RADOS 的存储简介

Ceph分布式存储系统的核心和基座就是RADOS集群。RADOS的全称为Reliable Autonomic Distributed Object Store,也就是可靠的,自修复分布式对象存储。其关键特性体现在两方面,一方面是数据是高可靠的;另外一方面是对于故障的自修复能力,比如出现宕机或者磁盘故障问题等情况下实现自动的故障处理,实现集群状态的修复

OSD组件是一个独立的服务,用于实现对磁盘的管理和分布式数据的备份和恢复。这个是数据层面的核心组件。通常来说,一个磁盘对应着一个OSD进程。

MON组件是Ceph的元数据服务组件,该组件管理着所有的元数据信息。例如集群的硬件情况、资源映射关系和存储池情况等等。

librados是位于客户端的软件,该软件为上层服务提供访问Ceph集群的接口,同时在该软件内会根据元数据信息进行数据位置的计算,并且实现数据的分发

【ceph】学习笔记(二)RADOS的基本组件及存储流程

一个存储系统管理着大量的设备和数据。为了保证用户层面可以找到期望的数据,有需要对这些数据进行管理,管理数据的数据称为元数据。Ceph的元数据比较简单,其中存储的是OSD集群的拓扑信息和一些资源的逻辑关系信息。客户端会缓存元数据,并且对于数据的定位是基于元数据计算而来,并不需要从元数据集群查询。基于这些特性,客户端对MON集群的访问非常少,因此不会成为系统的性能瓶颈。

Ceph存储系统通过两个集群来存储RADOS的数据和元数据。其中MON集群用户存储Ceph存储系统的元数据,而OSD集群用户存储Ceph存储系统的数据。

【ceph】学习笔记(二)RADOS的基本组件及存储流程

针对数据集群,是通过OSD集群管理,集群对象管理负责分布式对象的管理,保证对象数据的可靠性

针对于元数据集群,是通过MON集群管理,负责逻辑对象数据与磁盘物理数据的对应关系。另外就是元数据集群,其中维护着各种Map信息,包括MonMap、CrushMap、PGMap和OSDMap。

(1)MonMap是对元数据集群的描述,其中包括元数据集群各个物理节点的IP地址等信息。如本专栏创建的集群的Mon信息

(2)OSDMap是集群中OSD物理节点的信息,包括IP地址、OSD权重和版本等内容

(3)PGMap描述了数据PG与OSD的对应关系。PG在Ceph中成为放置组,它是Ceph存储池的逻辑单元,可以理解为存储池的逻辑分区。

二,ceph的存储流程

客户端在初始化是会拉取最新的元数据信息,并缓存到客户端

当客户端对某个对象读写数据的时候,根据对象的名称可以计算出一个哈希值。然后,通过对哈希值与PG组取模运算,得到对应所处于的PG。最后根据PG与OSD的映射关系,PG与OSD的对应关系是通过Crush算法计算得到的,可以定位到具体的OSD

【ceph】学习笔记(二)RADOS的基本组件及存储流程

1.File—-此处的File就是用户要存储或者访问的文件。对于一个基于Ceph开发的对象存储应用而言,这个File也就是对应于应用中的对象,也就是用户直接操作的对象

2.Objects—-此处的Objects是RADOS所看到的对象。Object与上面提到的File的区别是,Object的最大Size由RADOS限定(通常为2MB或4MB),以便实现底层存储的组织管理。因此,当上层应用向RADOS存储size很大的file时,需要将file切分统一大小的一系列object(最后一个的大小可以不同)进行存储。

3.PG (Placement Group)—-顾名思义,PG的用途是对object的存储进行组织和位置映射。一个PG负责若干个object(可以为数前个甚至更多),但一个object只能被映射到一个PG中,即,PG和object之间是一对多映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即,PG和OSD之间是多对多映射关系。如果用于生产环境,OSD至少为3.一个OSD上的PG则可达到数百个。事实上,PG数量的设置牵扯到数据分布的均衡性问题。

4.OSD —-即object storage device 需要说明的是OSD的数量事实上也关系到系统的数据分布均衡性,因此数量不能太少,一般是一个磁盘对应一个OSD

基于上述定义,Ceph中的寻址至少要经历下面三次映射✌️

1️⃣ File->object 这次映射的目的是,将用户要操作的file,映射为RADOS能够处理的object。其映射十分简单,本质上就是按照object的最大size对file进行切分。这种切分的好处有2点。一是让大小不限的file变成最大size一致、可以被RADOS高效管理的object;二是让对单一file实施的串行处理变为多个object实施并行化处理

每一个切分后产生的object将获得唯一的oid,即object id。其产生方式也是线性映射,图中ino是待操作file的元数据,可以简单理解为该file的唯一id。ono则是由该file切分产生的某个object的序号。而oid就是将这个序号简单连缀在该file id之后得到的。

举例而言,如果一个id为filename的file被切分成了三个object,则其object序号依次为0、1和2,而最终得到oid就依次为filename0、filename1和filename2. 这里隐含的问题是,ino的唯一性必须得到保障,否则后续无法正常进行

2️⃣ Object->PG映射 在file映射为一个或多个object之后,就需要将每个object独立地映射到一个PG中去

计算公式如下

hash(oid) & mask -> pgid

由此可见,其计算由两步组成。首先是使用Ceph系统指定的静态哈希函数计算oid的哈希值,将oid映射成一个近似均衡分布的伪随机值。然后,将这个随机值和mask按位相与,得到最终的PG序号(pgid)。根据RADOS的设计,给定PG的总数为m(m应该是为2的整数),则mask的值为-1。因此,哈希值计算和操作结果事实上是从所有m个PG中近似均匀的随机选择一个。基于这个机制,当有大量的object和大量PG时,RADOS能够保证object和PG之间的近似均匀映射。又因为object是由file切分而来,大部分object的soze相同,因而这一映射最终保证了,各个PG中存储的object的总数据量近似均匀

只有当object和PG的数量较多时,这种伪随机关系的近似均匀性才能成立,Ceph的数据存储均匀性才有保证。为保证大量成立,以方便,object的最大size应该被合理配置,以使得同样数量的file能够被切分更多的object;另一方面,Ceph推荐PG总数应该为OSD总数的数百倍,以保证有足够数量的PG可供映射。

3️⃣PG->OSD映射 第三次映射就是作为object的逻辑组织单元的PG映射到数据的实际存储单元OSD,RADOS采用一个名为CRUSH的算法,将pgid带入其中,然后得到一共n个OSD。这n个OSD即共同负责存储和维护一个PG中所有的object。前面已经描述,n的数值可以根据实际应用中对于可靠性的需求而配置,生产环境通常为3.具体到每个OSD。则由其上的OSD daemon负责执行映射到本地的object在本地文件系统中的存储、访问、元数据维护等操作

和object->PG映射中采用的哈希算法不同,这个CCRUSH算法的结果不是绝对不变的,而是受到其他因素的影响。其影响因素主要有二点:

一是当前系统状态,也就是上文逻辑结构中曾经提及的cluster map。当系统中的OSD状态、数量发生变化时,cluster map可能发生变化,而这种变化会影响到PG与OSD之间的映射

二是存储策略配置。这里的策略主要与安全相关,利用策略配置,系统管理员可以指定承载同一个PG的3个OSD分别位于数据中心的不同服务器乃至机架上,从而进一步改善存储的可靠性。

因此,只有在系统状态cluster map和存储策略都不发生变化的时候,PG和OSD之间的映射关系才是稳定不变的。在实际使用中,策略已经配置通常不会改变。而系统状态的改变或者是由于设备损坏,或者是因为存储集群规模扩大。好在Ceph本身提供了对这种变化的自动化支持。因而,即便PG与OSD之间的映射关系发生了变化,也并不会对应用造成困扰。事实上,Ceph正是需要有目的的利用这种动态映射关系。正是利用了CRUSH的动态特性,Ceph可以将一个PG根据需要动态迁移到不同的OSD组合上,从而自动化地实现高可靠性、数据分布性等。

至此为止,Ceph通过三次映射,完成了从file到object、PG和OSD整个映射过程。通过整个过程可以看到没有任何的全局性查表操作需求。至于唯一的全局性数据结构cluster map的维护和操作都是轻量级的,不会对系统的可扩展性、性能等因素造成不良的影响

【ceph】学习笔记(二)RADOS的基本组件及存储流程

1.client创建cluster handler

2.client读取配置文件

3.client连接上monitor,获取集群map信息

4.client读写io根据crshmap算法请求对应的主osd数据节点

5.主osd数据节点同时写入另外两个副本节点数据

6.等待主节点以及两个副本节点写完数据状态

7.主节点及副本节点写入状态都成功后,返回给client,io写入完成。

三,数据可靠性的保证

数据可靠性当前主要是通过主副本模式和纠删码模式,本文主要介绍主副本模式

主副本模式是指同一个对象的数据请求会经过同一个副本,并且通过该副本复制到其它从副本。待所有副本处理成功后才返回给客户端。

【ceph】学习笔记(二)RADOS的基本组件及存储流程

四,元数据可靠性保证

元数据的可靠性也是通过多副本保证的。在生产环境下,Ceph存储系统建议元数据服务器的数量最少为3台。也就是说元数据会同时存储在3台服务器上。这样,即使出现某一台服务宕机或者其它故障,仍然可以通过其它服务器访问元数据。

元数据的一致性保证与数据略有不同,它是通过一个名为Paxos的分布式一致性协议来保证的。关于该部分内容本文不再详细介绍,更详细的内容请参考后续文章

五,Ceph 为什么使用Object存储

  • 块存储:采用SAN架构组网时,光纤交换机,造价成本高。 主机之间无法共享数据。
  • 文件系统:
    读写速率低。 传输速率慢。
  • 对象存储:
    具备块存储的读写高速。 具备文件存储的共享等特性。

参考:Ceph核心架构之RADOS集群原理及实现

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120059.html

(0)
上一篇 2025-11-01 09:33
下一篇 2025-11-01 09:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信