(完整版)Ceph分布式存储

阅读: 评论:0

Ceph分布式存储系统
Ceph是根据加州大学Santa Cruz分校的Sage Weil的博士论文所设计开发的新一代自由软件分布式文件系统,其设计目标是良好的可扩展性(PB级别以上)、高性能及高可靠性。Ceph其命名和UCSCCeph 的诞生地)的吉祥物有关,这个吉祥物是“Sammy”,一个香蕉的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。
其设计遵循了三个原则:数据与元数据的分离,动态的分布式的元数据管理,可靠统一的分布式对象存储机制。本文将从Ceph的架构出发,综合性的介绍Ceph分布式文件系统特点及其实现方式。
 
一、Ceph基本架构
Ceph是一个高可用、易于管理、开源的分布式存储系统,可以在一套系统中同时提供对象存储、块存储以及文件存储服务。其主要由Ceph存储系统的核心RADOS以及块存取接口、对
象存取接口和文件系统接口组成,如图所示
Ceph停车场收费管理系统的底层是RADOS,它的意思是“A reliable,autonomous, distributed object storage” RADOS作为Ceph分布式文件系统的一个子项目,是为了满足Ceph的需求而设
计的,但是,其也可以单独作为一种分布式数据存储系统,给其他的有类似需求的分布式文件系统提供数据存储服务。Ceph文件系统, Ceph对象存储和Ceph块设备从RADOS的存储集中读去和写入数据。
Ceph作为一个分布式存储系统,其对外提供的接口,决定了其通用性以及扩展性。如上图架构图中所示的那样,Ceph对外提供了丰富多样的服务接口,包括多种编程语言接口LIBRADOS(备注,上图来自Ceph中文社区,社区人员在翻译的过程中将字母顾婷婷是什么梗L遗失掉了)、对象存储接口(RADOSGW)、块存储接口(RBD)以及文件系统接口(Ceph FS)。其中LIBRADOS编程接口是其他各种客户端接口的基础,其他接口都是基于LIBRADOS来进行扩展实现的。
 
1.1. RADOS
CephRADOS(Reliable Autonomic Distributed Object Store)存储集是所有其他客户端接口使用和部署的基础。RADOS由两个组件组成:
OSD Object StorageDevice,提供存储资源。
Monitor:维护整个Ceph集的全局状态。
典型的RADOS部署架构由少量的Monitor监控器以及大量的OSD存储设备组成,它能够在动态变化的基于异质结构的存储设备集之上提供一种稳定的、可扩展的、高性能的单一逻辑对象存储接口。
RADOS系统的架构如图所示:
我们看到,RADOS不是某种组件,而是由OSD(Object Storage Device)集和Monitor集组成。通常,一个RADOS系统中,OSD集是由大量的智能化的OSD节点组成;Monitor集是由少量的Monitor节点组成。OSD集负责存储所有对象的数据。Monitors集负责管理Ceph集中所有成员、关系、属性以及数据分发等信息。
 
1.2. Ceph客户端接口(Clients)
我们将Ceph架构中除了底层基础RADOS之上的LIBRADOSRADOSGWRBD以及Ceph FS统一称为Ceph客户端接口。而LIBRADOS又是Ceph其它如RADOSGWRBD以及Ceph FS的基础。简而言之就是RADOSGWRBD以及Ceph FS根据LIBRADOS提供的多编程语言接口开发。所以他们之间是一个阶梯级的关系。
1.2.1. RADOSGW
RADOSGW(RADOS Gmeway),又叫Ceph对象存储网关,是一个底层基于librados向客户端提供RESTful接口的对象存储接口。目前Ceph支持两种API接口:
(1)   S3patibleS3兼容的接口,提供与Amazon S3大部分RESTfuI API接口兼容的API接口。
(2)   Swiftpatible:提供与OpenStack Swift大部分接口兼容的API接口。Ceph的对象存储使用网关守护进程(radosgw, radosgw结构图如图所示:
在实际的Ceph无人机控制系统集中,radosgw是一个监听RESTfulAPI访问的后台进程,s3 APISwift APl使用同一个命名空间,即共享同一个命名空间;所以,你可以用其中一个接口写入数据而又用另外一个接口读出数据。
1.2.2. RBD
一个数据块是一个字节序列(例如,一个512字节的数据块)。基于数据块存储接口最常
见的介质,如硬盘,光盘,软盘,甚至是传统的9磁道的磁带的方式来存储数据。块设备接口的普及使得虚拟块设备成为构建像Ceph海量数据存储系统理想选择。
在一个Ceph的集中, Ceph的块设备支持自动精简配置,调整大小和存储数据。Ceph的块设备可以充分利用RADOS功能,实现如快照,复制和数据一致性。CephRADOS块设备(即RBD)通过RADOS协议与内核模块或librbd的库进行交互。。RBD的结构如图所示:
Ceph中,如果客户端要想使用存储集服务提供的块存储,必须要先安装相应的Linux内核模块Kernel Module,或者使用librbd编程接口。
1.2.3. Ceph FS
Ceph文件系统(CEPH FS)是一个POSIX兼容的文件系统,使用Ceph的存储集来存储其数据。Ceph的文件系统使用相同的Ceph的存储集系统比如Ceph的块设备,CephS3SwiftAPI对象存储,或本机绑定(librados)。CEPH FS的结构图如下所示:
CEPH FS是一个符合POSIX标准的文件系统接口,同时支持用户空间文件系统FUSE。在CEPH FS中,与对象存储接口与块存储接口最大的不同就是在集中增加了文件系统元数据服务节点MDS(Ceph Metadata Server)MDS也支持多台机器分布式的部署,以实现系统的高可用性。文件系统客户端需要安装对应的Linux内核模块Ceph FS KernelObject或者Ceph FS FUSE组件。
 
二、Ceph数据存储
2.1. 数据存储过程
Ceph存储集从客户端接收文件,每个文件都会被客户端切分成一个或多个对象,然后将这些对象进行分组,再根据一定的策略存储到集的OSD节点中,其存储过程如图所示:
图中,对象的分发需要经过两个阶段的计算,才能得到存储该对象的OSD,然后将对象存储到OSD中对应的位置。
(1)  对象到PG的映射。PG(PlaccmentGroup)是对象的逻辑集合。PG是系统向OSD节点分发数据的基本单位,相同PG里的对象将被分发到相同的OSD节点中(一个主OSD节点多个备份OSD节点)。对象的PG是由对象ID号通过Hash算法,结合其他一些修正参数得到的。
(2)  PG到相应的OSD的映射,RADOS系统利用相应的哈希算法根据系统当前的状态以及PGID号,将各个PG分发到OSD集中。OSD集是根据物理节点的容错区域(比如机架、机房等)来进行划分的。
Ceph中的OSD节点将所有的对象存储在一个没有分层和目录的统一的命名空问中。每个对象都包含一个ID号、若干二进制数据以及相应的元数据。
ID号在整个存储集中是唯一的;元数据标识了所存储数据的属性。一个对象在OSD节点中的存储方式大致如图所示。
而对存储数据的语义解释完全交给相应的客户端来完成,比如,Ceph FS客户端将文件元数据(比如所有者、创建日期、修改日期等)作为对象属性存储在Ceph中。
2.2. CRUSH算法
Ceph作为一个高可用、高性能的对象存储系统,其数据读取及写入方式是保证其高可用性及高性能的重要手段。对于已知的数据对象,Ccph通过使用CRUSH(ControlledReplication Under Scalable Hashing)算法计算出其在Ceph集中的位置,然后直接与对应的OSD设备进行交互,进行数据读取或者写入。
例如其写入数据的其主要过程如图所示。
首先,客户端获取数控冲床模具Ceph存储系统的状态信息Cluster Map,然后根据状态信息以及将要写入的PoolCRUSH相关信息,获取到数据将要写入的OSD,最后
OSD齿轮齿条转向器将数据写入到其中相应的存储位置。其中相关概念的解释如下:
(1)   集地图(Cluster Map)Ceph依赖于客户端以及OSD进程中保存有整个集相关的拓扑信息,来实现集的管理和数据的读写。整个集相关的拓扑信息就称之为“Cluster Map”Cluster Map主要保存Monitor集、OSD集、MDS集等相关的拓扑结构信息以及状态信息。
(2)   存储池(P001):是对Ceph集进行的逻辑划分,主要设置其中存储对象的权限、备份数目、PG数以及CRUSH规则等属性。
在传统的存储系统中,要查数据通常是依赖于查系统的的文件索引表到对应的数据在磁盘中的位置。而在Ceph对象存储系统中,客户端与OSD节点都使用CRUSH矫姿带算法来高效的计算所存储数据的相关信息。相对于传统的方式,CRUSH提供了一种更好的数据管理机制,它能够将数据管理的大部分工作都分配给客户端和OSD节点,这样为集的扩大和存储容量的动态扩展带来了很大的方便。CRUSH是一种伪随机数据分布算法,它能够在具有层级结构的存储集中有效的分发对象副本。
CRUSH算法是根据集中存储设备的权重来进行数据分发的,数据在各个OSD设备上近似均匀概率分布。CRUSH中,数据在存储设备上的分布是根据一个层次化的集地图(Cluster Map)来决定的。集地图是由可用的存储资源以及由这些存储资源构建的集的逻辑单元组成。比如一个Ceph存储集的集地图的结构可能是一排排大型的机柜,每个机柜中包含多个机架,每个机架中放置着存储设备。数据分发策略是依照数据的存放规则(placement rules)进行定义的,存放规则是指数据在备份以及存放时应该遵循的相关约定,比如约定一个对象的三个副本应该存放在三个不同的物理机架上。
给定一个值为x的整数,CRUSH将根据相应的策略进行哈希计算输出一个
有序的包含n个存储目标的序列:

本文发布于:2023-06-06 22:53:27,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/129054.html

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

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