一、ceph的由来

     Linux持续不断进军可扩展计算空间,特别是可扩展存储空间。Ceph 最近加入到 Linux 中令人印象深刻的文件系统备选行列,它是一个分布式文件系统,能够在维护 POSIX 兼容性的同时加入了复制和容错功能。

         其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是 “Sammy”,一个香蕉色的蛞蝓(就是蜗牛<..>),就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。

二、ceph简介与发展历程

(1)ceph简介

         Ceph 的初创来自Sage Weil 博士的 PhD 论文,论文 “Ceph: A Scalable, High-Performance Distributed File System”详细的阐述了 Ceph 的设计架构(论文网址:https://www.ssrc.ucsc.edu/Papers/weil-osdi06.pdf)。ceph的特性包括:可靠性的、可扩展的、统一的、分布式的存储系统。ceph可以提供对象存储、块存储、和文件系统3种功能。

(2)ceph的发展历程

三、Ceph的设计目标

          Ceph的设计目标是采用商用硬件来构建大规模的、具有高可用性、高可扩展性、高性能的分布式存储系统。

           商用硬件:一般指标准的x86服务器,相对于专用硬件,性能和可靠性较差,但由于价格相对低廉,可通过集群优势来发

                             挥高性能。

           高可用性:指系统的某个部件失效后,系统依然可以提供正常服务能力;可用设备部件和数据的冗余来提高可用性。

           高可扩展性:系统可灵活的应对集群的伸缩,如任意添加或删除存储节点和存储设备;系统的性能随集群的增加而线性

                                增加。

四、Ceph基本架构图

                                                                                      Ceph基本架构图

    (1)、Ceph核心组件:

                 在Ceph存储中,包含以下几个核心组件,分别是Ceph OSD;Ceph Monitor和Ceph MDS。

                 Ceph OSD:全称是Object Storage Device,主要功能包括存储数据,处理数据的复制、恢复、回补、平衡数据分

                                       布,并将一些相关数据提供给Ceph Monitor,如Ceph OSD心跳等。

                 Ceph Monitor:Ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含Monitor map、OSD

                                             map、PG(Placement Group) map和CRUSH map。

                 Ceph MDS:全称是Ceph Metadata server。主要保存的是Ceph文件系统(File system)的元数据。(Ceph的块存

                                       储和对象存储不需要Ceph MDS。Ceph MDS为基于POSIX文件系统的用户提供一些基础命令,如ls,

                                       find等命令)。

    (2)、Ceph功能特性

                 对象存储功能特性:基于LIBRADOS之上,提供当前流行的RESTful协议的网关,并兼容S3和Swift接口,作为对象存

                                                  储,可以对接网盘应用以及HLS流媒体应用等,

                 块存储功能特性:也基于LIBRADOS之上,通过LIBRBD创建一个块设备,通过QEMU/KVM附加到VM上,作为传统的

                                              块设备来用。

                 文件系统存储功能特性:是基于RADOS来实现分布式的文件系统,引入了MDS(Metadata server),主要为兼容

                                                        POSIX文件系统提供元数据,可当做文件系统挂载。

五、Ceph客户端接口

           ceph底层核心是RADOS。

(1)、RBD(块存储)

            RBD是通过librbd库对应用提供块存储,主要面向云平台的虚拟机提供虚拟磁盘,它类似于传统的SAN存储,都提供数据块级别的访问。

(2)、CephFS(文件系统)

             CephFS通过在RADOS基础之上增加MDS(Metadata Server)来提供文件存储。它提供libcephfs库和标准的POSIX文件接口。CephFS类似于传统的NAS存储,通过NFS或者CIFS协议提供文件系统或文件目录服务。

3)、RadosGW(对象存储)

           <1>提供RESTful  Web  API接口  

                  其接口值提供了简单的GET、PUT、DEL等其他接口,对应对象文件的上传、下载、删除、查询等操作。

           <2>采用扁平的数据组织形式

                 

Amazon的S3接口已经成为事实上的对象存储的标准接口,如上图所示,其接口分为3级存储:Account/Bucket/Object(账户/桶/对象)。

六、RADOS

         RADOS是ceph存储系统的基石,是一个可扩展的、稳定的、自我管理的、自我修复的对象存储系统,是ceph存储系统的核心,包括: Monitor模块为整个存储集群提供全局的配置和系统信息;通过CRUSH算法实现对象的寻址过程; 提供数据均衡功能;通过peering过程完成一个PG内存达成数据一致性的过程; 提供克隆和快照功能;实现对象分层存储的功能;实现数据一致性检查工具Scrub。

(1)、Monitor

             Monitor是一个独立部署的daemon进程,可保证自己的高可用。Cluster Map保存了系统的全局信息,包括:

            Monitor  Map:包括集群的fsid;所有Monitor的地址和端口;current epoch

            OSD  Map:所有OSD的列表,和OSD的状态等

            MDS  Map:所有的MDS的列表和状态

(2)、对象存储(指RADOS对象)

            对象是数据存储的基本单元,一般默认4MB大小。

            对象标识(ID),唯一标识一个对象

            对象数据,其在本地文件系统中对应一个文件,对象的数据保存在文件中

            对象的元数据,以键值对的形式,可以保存在文件对应的扩展属性中。RADOS增加了以Leveldb等的本地KV存储系统来保存对象的元数据。

(3)、pool和PG的概念

           pool是一个抽象的存储池。它规定了数据冗余的类型以及对应的副本分布策略

           PG(放置策略组),它是对象的集合,对象的副本都分布在相同的OSD列表上。一个对象只属于一个PG,一个PG对应于放置在其上的OSD列表,一个OSD可分布多个PG

(4)对象寻址过程

         对象寻址过程是指查找对象在集群中分布的位置信息。分两步:

        <1>对象到PG的映射

        <2>PG到OSD列表映射

(5)、数据读写过程

  1.  Cline向该PG所在的主OSD发送写请求
  2.  主OSD接收到写请求后,同时向两个从OSD发送写副本的请求,并同时写入主OSD的本地存储中
  3.  主OSD接收到2个从osd发送写成功的ACK应答,同时确认自己写成功,向客户端返回写成功的ACK应答

(6)、数据均衡

             当集群新添一个OSD存储设备时,整个集群会发生数据的迁移,使得数据分布到均衡。

(7)、Peering

           ceph的peering过程是指一个PG内的所有副本通过PG日志达成数据一致的过程。

(8)、Recovery和Backfill

            Recovery过程是根据在Peering的过程中产生的、依据PG日志推算出不一致对象列表来修复其他副本上的数据。

            Backfill过程是通过逐一对比两个PG的对象列表来修复。

(9)、纠错码

             将写入的数据分成N份原始数据块,通过这N份原始数据块计算出M份校验数据块,N+M份数据块可分别保存在不同的设备或节点中。可以允许最多M个数据块失效,通过N+M份中的任意N份数据,还原出其他数据块。

(10)、快照和克隆

              快照就是一个存储设备在某一时刻的全部只读镜像。克隆是在某一时刻的全部可写镜像。快照和克隆的区别在于快照只能读,而克隆可写。

(11)、Cache  Tier

      Ceph  Client对于Cache层是透明的

       类Objector负责请求是发送给Cache Tier层,还是发给Storage Tier层

       Cache  Tier层为高速I/O层,保存热点数据,或称为活跃的数据

       Storage  Tier层为慢速层,保存非活跃的数据

(12)、Scrub

          Scrub机制用于系统检查数据的一致性。

 

参考文献

【1】《Ceph分布式存储实战》

【2】《Ceph源码分析》

 

Logo

更多推荐