ceph pg和pgp的区别

2023-10-29

一、前言 首先来一段英文关于PG和PGP区别的解释: PG = Placement Group PGP = Placement Group for Placement purpose pg_num = number of placement groups mapped to an OSD When pg_num is increased for any pool, every PG of this pool splits into half, but they all remain mapped to their parent OSD. Until this time, Ceph does not start rebalancing. Now, when you increase the pgp_num value for the same pool, PGs start to migrate from the parent to some other OSD, and cluster rebalancing starts. This is how PGP plays an important role. By Karan Singh 以上是来自邮件列表的 Karan Singh 的PG和PGP的相关解释,他也是 Learning Ceph 和 Ceph Cookbook 的作者,以上的解释没有问题,我们来看下具体在集群里面具体作用 二、实践 环境准备,因为是测试环境,我只准备了两台机器,每台机器4个OSD,所以做了一些参数的设置,让数据尽量散列 osd_crush_chooseleaf_type = 0 以上为修改的参数,这个是让我的环境故障域为OSD分组的 创建测试需要的存储池 我们初始情况只创建一个名为testpool包含6个PG的存储池 [root@lab8106 ceph]# ceph osd pool create testpool 6 6 pool 'testpool' created 我们看一下默认创建完了后的PG分布情况 [root@lab8106 ceph]# ceph pg dump pgs|grep ^1|awk '{print $1,$2,$15}' dumped pgs in format plain 1.1 0 [3,6,0] 1.0 0 [7,0,6] 1.3 0 [4,1,2] 1.2 0 [7,4,1] 1.5 0 [4,6,3] 1.4 0 [3,0,4] 我们写入一些对象,因为我们关心的不仅是pg的变动,同样关心PG内对象有没有移动,所以需要准备一些测试数据,这个调用原生rados接口写最方便 rados -p testpool bench 20 write --no-cleanup 我们再来查询一次 [root@lab8106 ceph]# ceph pg dump pgs|grep ^1|awk '{print $1,$2,$15}' dumped pgs in format plain 1.1 75 [3,6,0] 1.0 83 [7,0,6] 1.3 144 [4,1,2] 1.2 146 [7,4,1] 1.5 86 [4,6,3] 1.4 80 [3,0,4] 可以看到写入了一些数据,其中的第二列为这个PG当中的对象的数目,第三列为PG所在的OSD 增加PG测试 我们来扩大PG再看看 [root@lab8106 ceph]# ceph osd pool set testpool pg_num 12 set pool 1 pg_num to 12 再次查询 [root@lab8106 ceph]# ceph pg dump pgs|grep ^1|awk '{print $1,$2,$15}' dumped pgs in format plain 1.1 37 [3,6,0] 1.9 38 [3,6,0] 1.0 41 [7,0,6] 1.8 42 [7,0,6] 1.3 48 [4,1,2] 1.b 48 [4,1,2] 1.7 48 [4,1,2] 1.2 48 [7,4,1] 1.6 49 [7,4,1] 1.a 49 [7,4,1] 1.5 86 [4,6,3] 1.4 80 [3,0,4] 可以看到上面新加上的PG的分布还是基于老的分布组合,并没有出现新的OSD组合,因为我们当前的设置是pgp为6,那么三个OSD的组合的个数就是6个,因为当前为12个pg,分布只能从6种组合里面挑选,所以会有重复的组合 根据上面的分布情况,可以确定的是,增加PG操作会引起PG内部对象分裂,分裂的份数是根据新增PG组合重复情况来的,比如上面的情况 1.1的对象分成了两份[3,6,0] 1.3的对象分成了三份[4,1,2] 1.4的对象没有拆分[3,0,4] 结论:增加PG会引起PG内的对象分裂,也就是在OSD上创建了新的PG目录,然后进行部分对象的move的操作 增加PGP测试 我们将原来的PGP从6调整到12 [root@lab8106 ceph]# ceph osd pool set testpool pgp_num 12 [root@lab8106 ceph]# ceph pg dump pgs|grep ^1|awk '{print $1,$2,$15}' dumped pgs in format plain 1.a 49 [1,2,6] 1.b 48 [1,6,2] 1.1 37 [3,6,0] 1.0 41 [7,0,6] 1.3 48 [4,1,2] 1.2 48 [7,4,1] 1.5 86 [4,6,3] 1.4 80 [3,0,4] 1.7 48 [1,6,0] 1.6 49 [3,6,7] 1.9 38 [1,4,2] 1.8 42 [1,2,3] 可以看到PG里面的对象并没有发生变化,而PG所在的对应关系发生了变化 我们看下与调整PGP前的对比 *1.1 37 [3,6,0] 1.1 37 [3,6,0]* 1.9 38 [3,6,0] 1.9 38 [1,4,2] *1.0 41 [7,0,6] 1.0 41 [7,0,6]* 1.8 42 [7,0,6] 1.8 42 [1,2,3] *1.3 48 [4,1,2] 1.3 48 [4,1,2]* 1.b 48 [4,1,2] 1.b 48 [1,6,2] 1.7 48 [4,1,2] 1.7 48 [1,6,0] *1.2 48 [7,4,1] 1.2 48 [7,4,1]* 1.6 49 [7,4,1] 1.6 49 [3,6,7] 1.a 49 [7,4,1] 1.a 49 [1,2,6] *1.5 86 [4,6,3] 1.5 86 [4,6,3]* *1.4 80 [3,0,4] 1.4 80 [3,0,4]* 可以看到其中最原始的6个PG的分布并没有变化(标注了*号),变化的是后增加的PG,也就是将重复的PG分布进行新分布,这里并不是随机完全打散,而是根据需要去进行重分布 结论:调整PGP不会引起PG内的对象的分裂,但是会引起PG的分布的变动 三、总结 PG是指定存储池存储对象的目录有多少个,PGP是存储池PG的OSD分布组合个数 PG的增加会引起PG内的数据进行分裂,分裂到相同的OSD上新生成的PG当中 PGP的增加会引起部分PG的分布进行变化,但是不会引起PG内对象的变动
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ceph pg和pgp的区别 的相关文章

  • Harmony Codelab 样例—弹窗基本使用

    一 介绍 本篇 Codelab 主要基于 dialog 和 button 组件 实现弹窗的几种自定义效果 具体效果有 1 警告弹窗 点击确认按钮弹窗关闭 2 确认弹窗 点击取消按钮或确认按钮 触发对应操作 3 加载弹窗 展示加载中效果 4

随机推荐

  • 我与西门子的面试全过程(一面+二面)_2008校园招聘_笔试与面试分享_UNUS.CN

    导读 很庆幸自己能够参加世界500强企业 西门子的面试 经过了一面和二面 虽然最后没有被录取 但高兴的是我们广工有两个进了 在这里祝福他们 今天终于有空 写下自己与西门子的全过程 写下这篇文章 并不是想炫耀 而是真心希望对后来者有帮助 在学
  • 【LeetCode】426. 将二叉搜索树转化为排序的双向链表(剑指 Offer 36)

    一 题目 将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 对于双向循环列表 你可以将左右孩子指针作为双向循环链表的前驱和后继指针 第一个节点的前驱是最后一个节点 最后一个节点的后继是第一个节点 特别地 我们希望可以 就地 完成转换
  • 【PaddlePaddle】 mnist手写数字识别(卷积神经网络)

    这篇文章主要讲解了卷积神经网络的使用 卷积神经网络可以用来提取图像特征 所以在计算机视觉上有很好的效果 系统 ubuntu18 04 python版本 python2 7 目录 训练模型 进行预测 完整代码 训练模型 先把需要用到的模块导入
  • 【日常总结】c++静态成员为啥要在类外进行初始化

    解释 类的静态成员变量内存不属于实例化的类 在类内只起到申明的作用 必须要在类外进行初始化 这个说法不严谨 类外主要是进行定义 分配内存 同时也可以赋初始值 代码例子 test h pragma once include
  • 【云原生之Docker实战】使用Docker部署Wizard文档管理系统

    云原生之Docker实战 使用Docker部署Wizard文档管理系统 一 Wizard介绍 1 Wizard简介 2 Wizard特点 二 检查宿主机系统版本 三 检查本地docker环境 1 检查docker服务状态 2 检查docke
  • 你看鱿鱼这么便宜,所以是不是很可怜?

    本文非技术分享 可能属于逻辑思考 再一次做梦 如下片段 有个朋友聊天问我 你看鱿鱼 那么便宜 是不是很可怜 我的内心 贵或者不贵 从哪能体现出它可怜不可怜呢 这逻辑有问题 我的回答 有点 又一次从梦中醒来 立马记录下做了什么梦 仅此而已 好
  • Android8.0、9.0安装包解析失败

    根据google官网得知 在8 0以上权限控制的更加严格 应用内安装下载更新的apk都需要申请 安装外面应用 权限才能去安装新应用 如果没有申请否则无法安装 顺便附上6 0 7 0设备解决方案 一 设备6 0
  • MDK 5.10 -- Reading one or more Pack descriptions failed

    MDK 5 10 的Pack Install 提示如下错误 解决办法 1 去掉 C Keil v5 ARM Pack Keil STM32L0xx DFP 1 5 0 Keil STM32L0xx DFP pdsc 文件的只读属性 2 用M
  • canvas生成自定义大小图片

    场景 比如移动端签名 一张canvas画布 在任意位置书写之后 生成一张图片 如果这种图片要放到某一个签名的位置会显的特别大 我们来解决这个问题 一 生成canvas图片 通过 canvas toDataURL image png 1 生成
  • Three.js文件及其插件链接

    Three js master包下载 由于官网three js master文件下载非常缓慢甚至经常下载失败 为了广大WebGL程序员的方便 博主专门下载下来放在百度网盘中分享给大家 百度网盘链接 链接 百度网盘 请输入提取码 提取码 0j
  • SQL批量删除数据操作

    SQL批量删除数据操作 文章目录 SQL批量删除数据操作 sql语句 DELETE和TRUNCATE区别 sql语句 删除数据 避免这么写 删除表全部数据 DELETE FROM student 删除指定数据 DELETE FROM stu
  • IOS 解决安装POD报You don't have write permissions for the /usr/bin directory的错误

    这段时间开始做IOS开发 使用pod管理第三方库 由于一些第三方不兼容最新的pod 所以要安装旧版本的pod 其中遇到的问题就是 You don t have write permissions for the usr bin direct
  • 学前steam教育范围

    近几年什么教育趋势席卷全球 发展势头如火如荼 相信很多人立刻会想到STEAM教育 该教育最早由美国提出 一直备受瞩目 STEAM教育的核心理念是强调学科之间的联系 以整合的形式进行教育 格物斯坦表示学前教育阶段的孩子学习STEAM教育对今后
  • Spring application context not configured for this file

    出现这个意思是新建的Spring配置文件没有被加入到spring里面 我是这样理解的 简单几步搞定 选择编辑器左上角file gt Project Structure 然后 最后别忘Apply OK
  • 构建实时数据可视化监控的全栈实现(Kafka+Spark+TimescaleDB+Flask+Node.js)

    因为项目需求 需要构建一个实时的数据监控系统 把平台上报的业务数据以1分钟的粒度进行呈现 为此我构建了以下的一个架构来实现 平台上报的业务数据会实时的发送消息给Kafka 例如平台每次为车辆进行OTA升级时 会发送一个OTA业务请求的事件
  • 寻找 有向图/无向图 所有环路的DFS暴力求解法(ps:C++代码,复杂度爆炸警告,生产环境慎用)

    思路 1 DFS算法可以求解图中从一点到另一点的全部路径 2 通过枚举所有顶点的邻接点 然后通过DFS寻找枚举点到的所有路径来寻找环路 3 思路很简单 但是算法复杂度确实是太高了 下面上代码 include
  • Java与MySQL时区

    一 CST 时区混乱 CST是一个混乱的时区 它有四种含义 美国标准时间 Central Standard Time USA UTC 06 00 或UTC 05 00 夏令时 3月11日至11月7日 使用 UTC 05 00 冬令时 11月
  • Invalid keystore format 报错解决

    修改JDK location的参数 我这里是android studio安装的时候有jre 自己配置开发环境的时候 也安装了jdk 切换到 android studio的jre 就可以了
  • 2012服务器系统有什么版本的,Win server 2012 哪个版本更合适

    原标题 Win server 2012 哪个版本更合适 Win server 2012 是服务器操作系统 很多客户咨询中很轻易的就将其和SQL数据库系统混淆 为此 小编总结了一些win server 2012 的相关信息 供各位参考 Win
  • ceph pg和pgp的区别

    一 前言 首先来一段英文关于PG和PGP区别的解释 PG Placement Group PGP Placement Group for Placement purpose pg num number of placement groups