ceph学习笔记之四PG

PG

PG(Placement Group)单从名字上可理解为一个放置策略组,它是对象的集合,集合里的所有对象具有相同的放置策略;对象的副本都分布在相同的OSD列表上。一个对象只能属于一个PG,一个PG对应于放置在其上的OSD列表。一个OSD上可以分布多个PG。

  PG是一组对象的逻辑集合,也可将PG看成一个逻辑容器,容器里面包含多个对象。

  • 图中PG1、PG2同处于一个Pool,所以是副本类型,并且是两副本。
  • PG1、PG2里包含许多对象,PG1上的所有对象,主从副本分布在OSD1和OSD2上,PG2上的所有对象的主从副本分布在OSD2和OSD3上。
  • 一个对象只能属于一个PG,一个PG包含多个对象。
  • 一个PG的副本分布在对应的OSD列表,在一个OSD上可以分布多个PG。

计算PG数

  计算ceph集群中的PG数公式:

PG总数=(OSD总数*100)/副本数

结果必须舍入到最接近2的N次幂的值。

  计算每个Pool的PG数,公式:

PG总数=((OSD总数*100)/副本数)/Pool数

结果必须舍入到最接近2的N次幂的值。

PG与OSD

在实际集群中由PG映射到实际存储数据的OSD中,该映射规则是CRUSH算法来确定的;映射过程大致如下:

首先将PG ID作为CRUSH算法的输入,获取到包含N个OSD的集合,集合中的第一个OSD将被作为主OSD,其他的OSD则依次作为从OSD。N表示该PG所在Pool下的副本数,在实际生产环境中N一般为3,表示3副本数。3副本表示将一个PG复制到3个不同节点OSD上。集合中的OSD将共同维护该PG下的Object。

CRUSH算法并不是绝对不变的,会受其他因素影响,影响因素主要有:

1、当前系统状态(Cluster Map)

当系统中的OSD状态、数量发生变化,会引起Cluster Map发生变化,这边变化就会影响PG与OSD的映射关系。

2、存储策略配置 (存储策略主要与数据安全相关)

通过策略可以指定同一个PG的3个OSD分别位于数据中心的不同服务器甚至不同机柜上,从而更加完善存储的可靠性。

总结:只有在Cluster Map和存储策略都不发生变化的情况下,PG和OSD之间的映射关系才会不变。

为什么选择CRUSH算法?

之所以在PG映射过程中选择CRUSH算法而不是其他的Hash算法,原因有以下几点:

1、CRUSH同态特性

利用CRUSH同态特性,ceph才可以将一个PG根据具体需求动态迁移到不同的OSD上,从而自动化实现高可靠、数据分布负载等特性,即使PG与OSD的映射关系发生了变化,对上层应用不会造成太大的困扰。

2、可配置特性

通过对存储策略的配置,使用配置参数决定OSD的物理位置映射策略。

3、特殊的稳定性

当集群中加入新的OSD使规模增大时,大部分PG与OSD之间的映射关系并不会发生改变,只有少部分PG的映射关系会发生变化并触发数据迁移。

时间: 2024-07-31 09:48:11

ceph学习笔记之四PG的相关文章

ceph学习笔记之二RADOS

Ceph学习笔记之二RADOS 一.RADOS架构 在RADOS架构中主要包含2个部分组件: 1.MON(Monitor) 由少量的Monitor节点构成的强耦合,小规模集群:负责管理Cluster Map. 2.OSD(Object Storage Device) 由数量可变的 大规模磁盘设备组成的集群,负责存储所有Object数据. 二.Monitor详解 在前面已经简单对其MON进行描述,在这个地方我们再次对MON进行详细解读.正如其名Monitor是负责监视整个集群运行状态的,这些信息都

马哥Linux学习笔记之四——DNS

1.BIND:Berkeley Internet Name Domain DNS:Domian Name Service 域名解析 2. Http 3.PAM 插入式认证模块 4.SMTP/POP3/IMAP4:Mail Server 5.域名 www.baidu.com这是一个主机名(FQDN,Full Qualified Domain Name,完全限定域名),com是一个域名,baidu.com也是一个域名,域名是好多主机的集合. 域名解析起后面有一个数据库,解析就是一个查询的过程.域名解

Citrix XenMobile学习笔记之四:MIM移动信息管理(Mobility Information Management)

产品简介: Citrix MIM移动信息管理由Citrix ShareFile这一产品来集成.Citrix ShareFile是一种企业"数据跟随(Follow-me-data)"解决方案,使IT部门可交付可靠的数据共享和同步服务,满足用户的移动性和协作需求,以及企业的数据安全需求.ShareFile使"数据跟随(Follow-me data)"服务成了每个用户日常生活中无缝而直观的组成部分,可帮助当前高度机动化.随时随地通过任何设备办公的员工队伍确保最高的生产率.

MyBatis association的两种形式——MyBatis学习笔记之四

一.嵌套的resultMap 这 种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示.然后 association元素再引用这个resultMap元素.修改上篇博文示例的StudentMapper.xml如下: <?xml version="1.0" encoding="utf8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org

linux网络编程学习笔记之四 -----多线程并发服务端

相对于使用进程实现并发,用线程的实现更加轻量.每个线程都是独立的逻辑流.线程是CPU上独立调度运行的最小单位,而进程是资源分配的单位.当然这是在微内核的操作系统上说的,简言之这种操作系统的内核是只提供最基本的OS服务,更多参看点击打开链接 每个线程有它自己的线程上下文,包括一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针,程序计数器.通用目的寄存器和条件码,还有自己的信号掩码和优先级.同一个进程里的线程共享这个进程的整个虚拟地址空间,包括可执行的程序文本.程序的全局

人生苦短,我用Python---Python学习笔记之四

人生苦短,我用Python---Python学习笔记之四 The forth 哈哈,那么,开始吧!我们下面介绍我们Logic编程的基础---语句,语句是我们在编程中的小伙伴,它是基础中的基础,它是重点中的重点!!所以宝贝们要好好看这一章哦,我们会结合几个实例来加深大家对语句的理解. 1.那么,我们先来介绍,条件判断语句if----else.if--elif--else语句(值得注意的一点是,Python里面并没有Switch---case这对条件判断语句) 一)我们先来看看  if ---- e

hibernate学习笔记之四(Hibernate中的类型)

(hibernate学习笔记系列来自于 "疯狂Java" Hibernate视频学习) Hibernate中的类型 在*.hbm.xml文件中,<property name="password" column="t_pass">,hibernate根据type转换将java转换成hibernate类型,然后再转换成SQL类型,<property name="password" type="...&q

ceph学习笔记之七 数据平衡

数据平衡 当在集群中新增一个OSD设备时,整个集群将会发生数据迁移使数据重新分布达到均衡.在Ceph集群中数据迁移的的基本单位是PG.其实在迁移过程中是将PG中的所有对象作为一个整体来进行迁移. 数据迁移触发流程: 1.当新加入一个OSD时,会改变系统的CRUSH Map,从而引起对象映射过程中的变化: 2.PG到OSD的映射关系发生了变化,从而引发数据的迁移. 当ceph集群中出现组件故障时(通常是指OSD,当然也有可能是网络),ceph会将OSD标记为Down,如果在300秒内MON没有收到

linux网络编程学习笔记之四 -----多-threaded服务器

对于使用过程中并发.通过实现更轻量级线程. 每个线程都是一个独立的逻辑流. 主题是CPU在执行调度的最小独立单位,这个过程是资源分配单元.当然,这是在微内核操作系统说.总之,这是唯一的一个操作系统内核提供了最重要的OS服务,许多人看点击打开链接 每一个线程有它自己的线程上下文.包含一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针.程序计数器.通用目的寄存器和条件码,还有自己的信号掩码和优先级.同一个进程里的线程共享这个进程的整个虚拟地址空间,包含可运行的程序文本.程