• Ceph 知识摘录(核心组件、概要)


    基本概念

    一、Rados
    本身是一个完整的对象存储系统,Ceph所有的存储功能都是基于Rados实现。

    二、Mon
    Mon负责监控集群管理元数据表。同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如:客户端向OSD发送读写请求之前,需要从MON中拿到最新的集群表,利用CRUSH算法计算出来数据存储位置后,直接将读写请求发送至对应的OSD。

    三、OSD
    OSD 负责处理客户端读写请求,功能(存储数据,处理数据复制、恢复、再均衡,与其它OSD间进行心跳检查等),并将一些变化情况上报给Ceph Monitor。

    四、RGW

    RGW最直接的理解就是一个协议转换层,把从上层应用符合S3或Swift协议【三级存储:Account/Bucket/Object(账户/桶/对象)】的请求转换成rados的请求, 将数据保存在rados集群中。rgw是一个监听RESTfulAPI访问的后台进程,s3 API和Swift APl使用同一个命名空间,即共享同一个命名空间;所以,你可以用其中一个接口写入数据而又用另外一个接口读出数据。

    Frontend:与客户端使用HTTP RESTful接口交互,可选apache, nginx或civetweb(默认)。
    Operation:操作,处理不同类型的接口,如:S3, Swift, Admin等。
    Backend:与存储后端交互,读写数据,运行数据管理。

    RGW应用到rados中的对象分为2类,一类是普通对象,相当于普通文件的存储。还一类是omap对象,用于存储K-V对象。

    五、PG放置策略组
    它是对象的集合,该集合里的所有对象都具有相同的放置策略:对象的副本都分布在相同的OSD列表上。服务端数据均衡和恢复的最小粒度就是PG;
    关系说明:
    (1) PG有主从之分,对于多副本而言,一个PG的主从副本分布在不同的OSD上;
    (2) 一个对象只能属于一个PG,一个PG包含很多个对象
    (3) 一个PG对应于一个OSD列表,PG的所有对象对存放在对应的OSD列表上

    六、Rados对象

    数据存储的基本单元,一般默认为4MB
    一个对象有三部分组成:
    (1) 对象标志(ID):唯一标识一个对象。
    (2) 对象的数据:其在本地文件系统中对应一个文件,对象的数据就保存在文件中。
    (3) 对象的元数据:以Key-Value(键值对)的形式,可以保存在文件对应的扩展属性中。

    七、POOL
    Pool是存储对象的逻辑分区,规定了数据冗余的类型以及对应的副本分布策略。目前实现了两种pool类型:replicated类型和Erasure Code类型。
    关系说明:
    (1) 一个pool由多个PG构成,一个PG只能属于一个POOL
    (2) 同一个Pool中的PG具有相同的类型,比如,如Pool为副本类型,则Pool中所有的PG都是多副本的

    八、Object

    存储在系统中数据最小单位,对象的元数据和数据体会分别存储。元数据通常是一组描述对象信息的Key-Value对,包括对象的名称,访问权限,类型等,也是作为一个对象存储在元数据池中,值存在在对象所在磁盘文件的属性中。

    九、levelDB

    leveldb等本地k-v存储系统用来保存对象的元数据,rados之所增加这种方式,是因为本地文件系统的扩展属性能保存的数据量限制。

    Ceph特性

    Journal盘
    一般写数据到Ceph集群时,都是先将数据写入到Journal盘,然后每隔一段时间再将Journal盘中的数据刷新到文件系统中。一般为了使读写时延更小,Journal盘都是采用SSD,这给了文件系统足够的时间来合并写入磁盘,一般情况下使用SSD作为OSD的journal可以有效缓冲突发负载。

    Journal的作用类似于mysql innodb引擎中的事物日志系统。当有突发的大量写入操作时,ceph可以先把一些零散的,随机的IO请求保存到缓存中进行合并,然后再统一向内核发起IO请求。journal的io是非常密集的,很大程度上也损耗了硬件的io性能,所以通常在生产环境中,推荐使用ssd来单独存储journal文件以提高ceph读写性能,读写时延更小。

    云存储容错机制
    1、基于副本冗余的容错机制
    原有数据复制成多份,副本存放在集群中不同节点上,保证数据可靠性,三副本配置提供了较高的读吞吐带宽,可恢复性高,弊处极大降低存储空间利用率,特别对于海量非结构化数据和冷存储这些在意性价比的应用。

    2、基于纠删码的容错机制
    原有数据文件分成k个大小相等的数据块,按照纠删码编码,得到n个带有一定冗余编码数据,存储在不同的节点上,读取数据时,只要去任意k个数据块就能恢复原始数据。
    例:(4+2),将文件分为4个大小相等的数据块,编码后生成另外2个校验块,从所有的6个码块中取任意4个就可恢复原始数据。可容错数为2;最多允许2个码块丢失。

    纠删码在读取时必须由数据分块重组数据对象,纠删码在随机写入,特别是改写和重构(Rebuild)时产生的I/O惩罚较大,对应的集群网络流量比副本保护模式要大。

     Pool中PG设置

    一个Pool里设置的PG数量是预先设置的,PG的数量不是随意设置,需要根据OSD的个数及副本策略来确定;线上尽量不要更改PG的数量,PG的数量的变更将导致整个集群动起来(各个OSD之间copy数据),大量数据均衡期间读写性能下降严重;扩容就以 Pool 为维度为扩容,通过新增Pool来实现(Pool通过crushmap实现故障域隔离)。

    故障域划分-针对大集群
    1、没有故障域的划分,整个集群处在未隔离的资源池
    2、数据存储、副本copy都可能带来全局影响
    3、crushmap 将整个集群的OSD划分为一个个故障域,类似将集群按业务划分成多个小集群,每个pool只会用到特定
    OSD,这样一旦某个OSD损坏,影响的只是某个业务的某个Pool,故障控制在小范围。

    crushmap划分故障域,将pool限制在特定的osd list上,osd的损坏只会引起这个pool内的数据均衡,不会造成全局影响

    多副本及强一致性策略
    三副本模式下,客户端过来一个写请求数据会首先被写入到primary OSD上去,primary OSD会进一步将数据复制到secondary和其它tertiary OSD上去并一直等待他们的完成通知,最终完成确认发送给client。
    根据pg map可以查看数据落在哪几个OSD上

  • 相关阅读:
    selenium IDE(二)selenium IDE使用
    selenium IDE(一)selenium IDE配置及说明
    自动化一:第一个测试实例
    selenium + python+webdriver+pycharm环境搭建二:pycharm环境自动化测试环境搭建
    selenium + python+webdriver+pycharm环境搭建一:selenium + python自动化测试环境搭建
    前言:学习自动化之前需要知道的
    WSDL
    jmeter练习(5)关联升级版—ForEach控制器(提取多个响应结果并依次传参)
    3P(PS、PR、PDF编辑器Acrobat)中的基基本操作(二)
    3P(PS、PR、PDF编辑器Acrobat)中的基基本操作(一)
  • 原文地址:https://www.cnblogs.com/weichao01/p/9468210.html
Copyright © 2020-2023  润新知