带你读《存储漫谈Ceph原理与实践》第二章Ceph 架构2.2 Ceph 数据寻址(二)

简介: 带你读《存储漫谈Ceph原理与实践》第二章Ceph 架构2.2 Ceph 数据寻址

2.2.2   CRUSH算法因子


上述介绍可以看出,CRUSH算法在 Ceph存储系统的数据寻址中占有核心地位,Ceph存储系统通过 CRUSH 算法规则来控制数据的分布策略,Ceph存储系统的 CRUSH算法能够控制对象文件在存储集群中随机均匀地分布。

CRUSH算法包含两个关键输入因子:层次化的 ClusterMap以及数据分布策略PlacementRules。

1.  层次化的 ClusterMap

 

层次化的 ClusterMap 反映了存储系统层级的物理拓扑结构。

Ceph存储集群通过 ClusterMap定义了 OSD守护进程的静态拓扑关系层级信,使得CRUSH算法在选择OSD时具备了主机、机架、机房等信息的感知能力。通过 ClusterMap规则定义,Ceph 存储系统允许数据副本可以分布在不同的主机、不同的机架,甚至不同的机房中,提高了数据存储的安全性。

ClusterMap由设备(device)和桶(bucket)组成,device是最基本的存储设备,也就是 OSD,通常 1OSD对应 1 个磁盘存储设备,bucket 表示存放设备的容器,可以包含多个设备或子类型的 bucket。

存储设备(device)的权重由管理员设置,以控制设备负责存储的相对数据量,device的权重值越高,对应的磁盘就会被分配写入更多的数据。大型存储系统中的存储设备(磁盘)通常存在容量大小不等或者性能高低不一的情况,系统管理员可以依据存储设备的利用率   和负载来设定权重,随机数据分布算法,以此控制数据的最终分布,实现存储系统设备的   数据量均衡,进而平衡存储系统的I/O 负载,最终提高存储集群整体的性能和可靠性。

桶的权重是它所包含的所有元素(devicebucket)权重的总和。Bucket可以包含很多种类型,例如,Host 就代表一个主机节点,可以包含多个 deviceRack 代表机架,包含多个 host节点。Ceph中默认有 OSD、host、Chassis、Rack、row、PDU、Pod、Room、Datacenter、Region、root共计11个层级(同时也允许用户定义自己新的类型,它们含义如下。

OSD                                                   磁盘设备,对应 OSD守护进程

host                                                    包含若干个 OSD的主机

Chassis                                              包含若干个刀片服务器的机箱

Rack                                                   包含若干个主机的机架

row                                                     包含若干个主机的一排机柜

PDU                                                    为机柜分配的电源插排

Pod                                                     一个数据中心中的机房单间

Room                                                  含若干个机柜和主机的机房

Datacenter                                         包含若干机房的数据中心

Region                                                包含若干数据中心的区域

root                                                     bucket分层结构的根

通常 OSD、host、Rack 层级较为常用。下面举例说明 bucket的用法。

 

 

host test1{

 

// 类型host,名字为 test1

id -2

 

//bucket的 ID,⼀般为负值

#weight 3.000

 

// 权重,默认为⼦ item 的权重之和

algstraw

 

//bucket随机选择的算法

hash 0

 

//bucket随机选择的算法使⽤的 hash函数

 

 

// 这⾥ 0代表使⽤ hash 函数 jenkins1

itemosd.1 weight

1.000

//item1: osd.1 和权重

itemosd.2 weight

1.000

 

itemosd.3 weight

}

1.000

 

 

host test2{id -3

# weight 3.00algstrawhash 0

item osd.3 weight 1.000item osd.4 weight 1.000itemosd.5 weight 1.000

}

 

rootdefault{                     //root的类型为bucket,名字为 defaultid -1                            //ID

# weight 6.000algstraw

hash 0

item test1 weight 3.000itemtest2 weight 3.000


}

 

 

根据上面 ClusterMap的语法定义,图 2-2 给出了比较直观的层级化的树形结构。

如图2-2所示,CephClusterMap是一个由 bucketdevice 共同组成的树形存储层次结构,叶子节点是device也就是OSD,其他的节点称为bucket节点,这些bucket都是逻辑上的概念,是对物理结构的抽象如对数据中心的抽象、机房的抽象、机架的抽象、主机的抽象等,树形结构只有一个最终的根节点,称为root点,root也是一个抽象的逻辑概念。

image.png


2-2CephCusterMap层级结构

 

在上面的 ClusterMap中,有一个 root类型的 bucket,名字为 defaultroot下面有两个 host类型的bucket,名字分别为 test1test2,其下分别各有3OSD设备,每device的权重都为 1.000,说明它们的容量大小都相同。host 的权重为子设备之和,即test1test2 的权重均为3.000,它是自动计算的,不需要设置;同理,root 的权重为6.000

2.  数据分布策略 PlacementRules

 

PlacementRules决定了一个 PG的对象(副本或纠删码策略)如何选择 OSD,通过这些自定义的规则,用户可以设置副本在集群中的分布。Ceph 存储系统的PlacementRules 定义格式如下。

 

take(a)choose

choose firstn {num} type {bucket-type}chooseleaffirstn{num} type{bucket-type}

If{num}== 0choose pool-num-replicasbuckets (all-available).

If {num} > 0 && <pool-num-replicaschoose that many buckets.

If {num} < 0it means pool-num-replicas- |{num}|.

Emit

 

PlacementRules 的执行流程如下。

(1) take操作选择一个 bucket,一般是root类型的 bucket。

(2)  choose 操作有不同的选择方式,其输入都是上一步的输出。

a)choosefirstn 深度优先选择出 num个类型为 bucket-type的子 bucket。b)chooseleaf先选择出 num个类型为bucket-type的子 bucket,然后递归到叶子节

点,选择一个OSD 设备。

i.  如果 num0,num就为 Pool 设置的副本数;

ii.  如果 num大于 0,小于Pool 的副本数,那么就选出 num个;

iii.   如果 num小于 0,就选出 Pool 的副本数减去 num 的绝对值。

(3) emit输出结果。

由上述流程可以看出,PlacementRules主要定义以下 3个关键操作。

1CRUSHMap中的哪个节点开始查找;

2)使用哪个节点作为故障隔离域;

3)定位副本的搜索模式(广度优先或深度优先

 

3.  示例

 

(1)3 个副本分布在 1row 下的 3cabinet 中。

在图2-3中,最下面的长方形图例代表一台主机,里面的圆柱形图例代表OSDcabinet图例代表一个机柜,row图例代表一排机柜,顶端的 root是根节点,可以把它理解成一个数据中心。


 image.png

2-3  Ceph数据分布示意(CusterMap)

 

自顶而下来看,顶层是一个 rootbucket,每个 root下有 4row类型 bucket,每row下面有 4cabinet,每个cabinet下有若干个 OSD设备图中有 4host,每个host有若干个 OSD设备,但是在本 CRUSHMap中并没有设置host这一级别的 bucket,而是直接把4host上的所有OSD设备定义为一个cabinet

该场景下,PlacementRules定义如下。

rulereplicated_ruleset {

ruleset 0                            //ruleset的编号ID

typereplicated                      //类型 replicated或者erasurecode

min_size 1                           //副本数最⼩值

max_size 10                          //副本数最⼤值

 

step take root                       //选择⼀个rootbucket,做下⼀步的输⼊

step choose firstn 1type row         //选择⼀个 row,同⼀排

stepchoosefirstn3typecabinet     //选择3cabinet3副本分别在不同的cabinet

stepchoosefirstn1typeosd         //在上⼀步输出的3cabinet中,分别选择⼀个OSD

stepemit

}

 

 

 

根据上面的 ClusterMapPlacementRules 定义,选择算法的执行过程如下。1)选中 rootbucket作为下一个步骤的输入;

2) root类型的 bucket中选择 1row类的子 bucket,其选择的算法在 root的定义中设置,一般设置为 straw算法;

3)从上一步的输出row中,选择 3cabinet,其选择的算法在 row中定义;4)从上一步输出的3cabinet中,分别选出一个 OSD,并输出。

最终实现效果为可选择出3OSD 设备,分布在1row上的 3cabinet中。

(2)  主副本分布在 SSD 上,其他副本分布在 HDD上。

如图 2-4所示的 ClusterMap定义了 2root类型的 bucket,一个是名为SSDroot类型的 bucket,其 OSD存储介质都是SSD固态硬盘,它包含 2host,每个host上的存储设备都是 SSD固态硬盘;另一个是名为 HDDroot类型的bucket,其 OSD储介质都是 HDD硬盘,它有 2host,每个host上的设备都是 HDD硬盘。

image.png

 

 

 image.png

 

2-4Ceph数据分布示意(CusterMap)

 

该场景下,PlacementRules定义如下。

rule ssd-primary {

ruleset 0

type replicatedmin_size 1

max_size10

 

step take ssd                        //选择SSD这个rootbucket为输⼊step chooseleaf firstn 1 type host         //选择⼀个host,并递归选择叶⼦节点 OSDstep emit                            //输出结果

 

step take hdd                        //选择HDD这个rootbucket为输⼊

step chooseleaf firstn -1 type host   //选择总副本数减⼀个host

//并分别递归选择⼀个叶⼦节点OSD

step emit                            //输出结果


}

 

根据上面的 ClusterMapPlacementRules 定义,选择算法的执行过程如下。1)首先 take操作选择 ssdroot类型的 bucket

2) SSDroot中先选择一个 host,然后以该 host 为输入,递归至叶子节点,选择一个 OSD设备;

3)输出选择的设备,也就是SSD设备;

4)选择 HDD作为 root的输入;

5) 选择2host副本数减1,默认3副本,并分别递归选择一个OSD设备,最终选出 2HDD设备;

6)输出最终结果。

最终实现效果为输出 3个设备,一个是 SSD类型的磁盘,另外两个是 HDD磁盘。通过上述规则,就可以把PG的主副本存储在SSD类型的 OSD上,其他副本分布在HDD型的磁盘上。

相关文章
|
21天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
1月前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
57 3
|
4天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
24 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
4天前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
29 10
|
18天前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
5天前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
6天前
|
运维 监控 安全
天财商龙:云上卓越架构治理实践
天财商龙成立于1998年,专注于为餐饮企业提供信息化解决方案,涵盖点餐、收银、供应链和会员系统等。自2013年起逐步实现业务上云,与阿里云合作至今已十年。通过采用阿里云的WA体系,公司在账号管理、安全保障、监控体系和成本管控等方面进行了全面优化,提升了业务稳定性与安全性,并实现了显著的成本节约。未来,公司将持续探索智能化和全球化发展,进一步提升餐饮行业的数字化水平。
|
6天前
|
运维 安全 架构师
架构师工具箱:Well-Architected云治理提效实践
本次分享基于阿里云Well-Architected Framework的最佳实践案例,涵盖企业从上云到优化的全过程。安畅作为国内领先的云管理服务提供商(Cloud MSP),拥有800多名员工,其中70%为技术工程师,为企业提供架构安全、数据智能等技术服务。内容包括Landing Zone与Well-Architected的关系、企业云治理现状及需求分析,重点探讨了安全合规、成本优化、资源稳定性和效率提升等方面的最佳实践,并通过具体客户案例展示了如何通过自动化工具和定制化解决方案帮助企业提升云上业务价值。
|
1月前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
1月前
|
算法 NoSQL Java
微服务架构下的接口限流策略与实践#### 一、
本文旨在探讨微服务架构下,面对高并发请求时如何有效实施接口限流策略,以保障系统稳定性和服务质量。不同于传统的摘要概述,本文将从实际应用场景出发,深入剖析几种主流的限流算法(如令牌桶、漏桶及固定窗口计数器等),通过对比分析它们的优缺点,并结合具体案例,展示如何在Spring Cloud Gateway中集成自定义限流方案,实现动态限流规则调整,为读者提供一套可落地的实践指南。 #### 二、
64 3

热门文章

最新文章