zoukankan      html  css  js  c++  java
  • 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上

  • 相关阅读:
    Oracle:SQL语句--对表的操作——修改列的数据类型( 即 修改字段的数据类型)
    Oracle:SQL语句--对表的操作——修改列的数据类型( 即 修改字段的数据类型)
    有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
    有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
    鸡兔同笼:笼子里一共有鸡和兔子35只,一共有94条退, 笼子里一共有鸡和兔子共多少只
    jQuery,使用on代替delegate,live 写法区别
    安卓手机微信页面position: fixed位置错误
    表单提交是ajax提交,PC提交没问题但是手机提交就会一直跳到error,并且也没状态码一直是0
    新版本的jquery checkbox 全选反选代码只能执行一遍,第二次就失败attr与prop区别
    倒计时js代码
  • 原文地址:https://www.cnblogs.com/weichao01/p/9468210.html
Copyright © 2011-2022 走看看