Ceph-智能分布CRUSH之Object与PG与OSD

Ceph  智能分布CRUSH

Ceph CRUSH算法(Controlled Replication Under ScalableHashing)一种基于为随机控制数据分布、复制的算法。

基本原理:

存储设备通常支持条带化以增加存储系统的吞吐量并提升性能,条带化最常见的方式就是做raid.如raid0.

数据在阵列中的硬盘上是以条带的形式分布的,条带化是指数据在陈列中所有硬盘中的存储过程。文件中的数据被分割成小块的数据段在阵列中的硬盘上顺序存储,这个最小数据块叫做条带单元。

决定Ceph条带化数据的三个因素:

      对象大小、条带宽度、条带总量

 

Object 与PG、OSD:

      Ceph条带化之后,将获得N个带有唯一oid(即object的id).Object id 是进行线性映射生成的,即由file的元数据、ceph条带化产生的Object的序号连缀而成。此时Object需要映射到PG中,该映射包括两部分。

1)          由Ceph集群指定的静态Hsah函数计算Object的oid,获取到其Hash值。

2)          将该Hash值与mask进行与操作,从而获得PG ID。

由PG映射到数据存储的是几单元OSD中,该映射是由CRUSH算法来确定的,将PG ID作为该算法的输入,获得到包含N个OSD的集合,该集合第一个OSD被作为主OSD,其他依次作为从OSD。

      注:CRUSH算法的结果不是绝对不变的,会受到(1)当前系统状态(2)存储策略配置

的影响。实际情况,策略配置不会改变,系统状态一般是设备损坏。但Ceph对这种情况提供了自动化支持。

 

在Ceph中,PG的全称为PlacementGroup,中文名称为归置组。顾名思义,PG的用途是将某些东西进行逻辑归组,从而达到统一管理,提升效率的作用。

而实际也是如此,Ceph通过CRUSH算法,将若干个object映射到PG上,从而形成一个object与PG的逻辑集合,并以此作为object与OSD的中间层,将PG根据所在POOL的副本数,复制到多个OSD上。下面这个图描述了object、PG及OSD守护进程之间的映射关系:

1、 PGP起到对PG进行归置的作用。PGP是PG的逻辑承载体。
2、 PGP的取值应该与PG相同,在PG的值增大的同时,也要增大PGP的值以保持二者的值相同。
3、 当一个POOL的PG增大后,Ceph并不会开始进行rebalancing(数据迁移),只有在PGP的值增大后,PG才会开始迁移至其他的OSD上,并且开始rebalancing。

 

在cephj集群里,当有数据对象要写入集群时,需要进行两次映射。

第一次:object -> PG   第二次  PG -> OSDset  

每一次映射都是与其他对象无关的,体现了CRUSH的独立性(充分分散)和确定性(可确定的存储位置)

 

CRUSH关系分析:

      CRUSH是通过存储设备的权重来计算数据对象的分布的。计算过程中,通过Cluster Map(集群映射)、Data Distribute Policy(数据分布策略)和给出的一个随机数来共同决定数据对象的最终位置。

      Cluster Map : 记录所有可用的存储资源及互相之间的空间层次结构(集群中有多少个机架,机架上有多少服务器,每个机器上有多少磁盘等信息)

      Cluster Map 由Device和Bucket构成,它们都有自己的ID和权重值,最终形成一个以Device为叶子节点、Bucket为躯干的树状结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值