Ceph学习-CRUSH算法介绍 (一)

来源:互联网 发布:mac没有剪切吗 编辑:程序博客网 时间:2024/04/29 05:00

*************************************************

本文主要是翻译CRUSH算法的经典论文,

从CRUSH解决的问题,特点,及基本原理进行介绍。

并没有对论文中算法细节的部分进行讲解,

打算在后续文章中通过源码分析的方式进行介绍

 

*************************************************

CRUSH要解决的问题

大规模的分布式存储系统的一个主要任务是将PB级的数据分布到成千上万的存储设备上。并且,该系统必须能够均匀的分布数据和负载,从而充分利用可用的资源以使系统性能最大化。CRUSH(Controlled Replication Under Scalable Hash,可控复制的分布式哈希算法)是一个伪随机数据分布方法,用于分布式对象存储系统,它能够有效地将数据对象映射到存储设备,不依赖于一个中心的目录控制。因为大型分布式系统内在的动态性,CRUSH要能够在增加和删除节点时使数据迁移最少。CRUSH要满足各种数据复制和可靠性策越,并能够按照用户定义的策越分布数据,以保证这些分散的副本能够跨越出错的域。

CRUSH的特点

1、该算法是全分布式的,系统中的任何一个节点都可以独立计算任何一个对象/副本所在的位置,而只需要很少的相对静态的元数据(metadata),这样数据只有在设备增加或退出时才会改变。

2、该算法能够优化数据分布使其能够充分的利用系统资源,并且当有设备加入或退出时,应该能够有效地重新组织数据

3、可以对数据对象副本进行比较弹性的限制,当设备同时发生故障或相关的几个硬件设备故障时,最大化地保证数据的安全性。

4、能够支持多种保护数据的安全机制,包括多副本机制,纠错码机制(RAID5)或混合机制(RAID-10)

CRUSH原理

CRUSH算法按照每个设备的权重值概率分布数据对象。数据分布式由一个层次化的cluster map控制。

cluster map是由存储逻辑单元组成用于表示可用的存储资源。例如,一个机房通常由几行机柜组成,机柜中填充若干台服务器,每台服务器中有若干磁盘。

数据分布策略可以定义为需要在Cluster中选择多少副本对象的位置(replicaplacement),以及对于这些replica placement应该采用什么限制。

例如,三个副本放置在属于不同物理机柜的存储设备上,从而保证这些设备使用相同的供电。

 

给定一个输入x,CRUSH使用Cluster Map和Placement rule能够计算得到一个序列R,其序列R分布到n个不同的存储域中。CRUSH是确定的,只要Cluster Map、Placement Rule已经输入x确定,其计算结果也必然相同。

另外,R的分布是伪随机的,相似的输入或存储在任何存储设备中的项目与数据结果并没有明显的关联。也就是说一个对象存储到哪个设备与其他对象存储到哪些设备是没有关系的。

Hierarchical Cluster Map

Cluster Map有Device和bucket组成,每个Device或Bucket对应一个数字ID和一个权重值。一个Bucket可以包含任意数量的Device或其他Bucket。为了控制每个存储设备负责存储数据的相对数量,管理员会为存储设备分配一个权重值。虽然系统中,设备的容量和性能不同,但随机数据分布可以使设备的负载和存储的数据量成正比,所以设备的容量可以导出设备权重值,而Bucket的权重值是其包含的所有项目之和。

         Bucket可以是对存储层次化结构的一个表示。例如可以划分为Row->Cabinet->Shelf三层,通过伪随机的哈希算法,递归选择嵌套的bucket,就可以将数据层次化地分布到对应的设备中。传统的哈希算法对于任意存储设备的改变都会导致大量的内容重分布(reshuffling),而CRUSH基于4个不同的bucket类型,每种类型可以采用不同的选择算法,减少设备加入和退出造成的数据迁移,

Replica Placement

CRUSH设计为按照设备权重值分布数据,让存储和带宽的利用率相对平衡。在层次化的存储架构中,副本分布的位置还会影响到数据的安全性。通过反应数量存储的组织结构,CRUSH能够通过建模,进而解决潜在的相关存储设备的故障带来的影响。典型的故障相关性包括临近物理设备,共享相同的供电,已经共享相同的网络。通过将这些信息加入到cluster map中,CRUSH可以将副本分布到不同的存储域可以一定程度上避免上述问题带来数据安全性的影响。

         Placement rule是指对于某种特定的数据复制策略和底层硬件的配置的定义。例如:选择两个Target用于存储2个副本,选择3个tagets在两个数据中心用于存储2个副本,选择6个target用于存储RAID-4的数据对象,等等。

 

参考文档

CRUSH: Controlled, Scalable,Decentralized Placement of Replicated Data

 

 

 

 

0 0
原创粉丝点击