PG, Pool之间的一些数量关系
先说一下我的环境:
Ceph cluster中包含6台OSD节点 (osd.0 - 5), 一共有10个Pool (0 - 9), 这些Pool共享了144个PG (这个数字是所有Pool的PG_SIZE相加, 并不是通过ceph osd pool create POOLNAME PG_SIZE指定的!), 文件拷贝数量等于2 (osd_pool_default_size = 2)
查看一下每个osd节点下的/var/local/osd/current目录, 这里面的文件夹就是用来存放对象的, 每个文件夹的格式类似2.3d这样, 小数点的左边表示pool的序号, 右边表示pg的编号. 我统计了一下文件夹数量(注意: TEMP结尾和head结尾的文件夹有区别, TEMP不应该被统计在内, 原因不知)得到了如下结论:
1. ceph -s 中显示的PG数等于ceph osd pool create POOLNAME PG_SIZE中所有POOL的PG_SIZE之和;
2. 假设对于Pool 2来说, 所有OSD节点的current目录下的2.XX_head文件夹数量之和除以拷贝份数 (即osd_pool_default_size), 等于PG_SIZE;
3. PG_SIZE在一开始指定后就不会改变, 除非手动通过ceph osd pool set POOLNAME size PG_SIZE进行修改.
| pool 0 | pool 1 | pool 2 | pool 3 | pool 4 | pool 5 | pool 6 | pool 7 | pool 8 | pool 9 | total b=288 | |
| osd 0 | 15 | 0 | 3 | 2 | 2 | 1 | 2 | 2 | 4 | 3 | 34 |
| osd 1 | 23 | 2 | 3 | 3 | 2 | 4 | 3 | 5 | 2 | 2 | 49 |
| osd 2 | 19 | 5 | 2 | 0 | 1 | 4 | 3 | 4 | 2 | 3 | 43 |
| osd 3 | 25 | 3 | 2 | 6 | 4 | 4 | 4 | 4 | 4 | 4 | 60 |
| osd 4 | 21 | 6 | 2 | 3 | 2 | 0 | 3 | 3 | 3 | 3 | 46 |
| osd 5 | 25 | 0 | 4 | 2 | 5 | 3 | 5 | 2 | 5 | 5 | 56 |
| total a=288 | 128 | 16 | 16 | 16 | 16 | 16 | 20 | 20 | 20 | 20 | |
| 备注 | 此处的单个对象拷贝份数都是2, 所以128/2=64才是pool 0的PG_SIZE | ||||||||||
| pool 0 | pool 1 | pool 2 | pool 3 | pool 4 | pool 5 | pool 6 (replicated=3) |
pool 7 | pool 8 | pool 9 | total d=298 | |
| osd 0 | 15 | 0 | 3 | 2 | 2 | 1 | 7 | 2 | 4 | 3 | 39 |
| osd 1 | 23 | 2 | 3 | 3 | 2 | 4 | 4 | 5 | 2 | 2 | 50 |
| osd 2 | 19 | 5 | 2 | 0 | 1 | 4 | 4 | 4 | 2 | 3 | 44 |
| osd 3 | 25 | 3 | 2 | 6 | 4 | 4 | 3 | 4 | 4 | 4 | 59 |
| osd 4 | 21 | 6 | 2 | 3 | 2 | 0 | 4 | 3 | 3 | 3 | 47 |
| osd 5 | 25 | 0 | 4 | 2 | 5 | 3 | 8 | 2 | 5 | 5 | 59 |
| total c=298 | 128 | 16 | 16 | 16 | 16 | 16 | 30 | 20 | 20 | 20 | |
| 备注 | 此处Pool 6的拷贝份数为3, 其余均为2; 所以30/3=10才是pool 6的PG_SIZE |
||||||||||
附上根据自己的理解画出的示意图:

PG, Pool之间的一些数量关系的更多相关文章
- RunLoop总结:RunLoop 与GCD 、Autorelease Pool之间的关系
如果在面试中问到RunLoop相关的知识,很有可能也会问到RunLoop与GCD.Autorelease Pool有没有关系,哪些地方用到了GCD.Autorelease Pool等. So,本文就总 ...
- PG数据库之间的导入导出
本文将介绍如何对PG数据库进行导入.导出,主要利用的是PG自带的pg_dump.pg_dumpall.pg_restore.psql等命令,版本是9.4(不同版本的pg_dump \ pg_resto ...
- GPS和LOAM的pose之间建立edge
基于时间戳一致原理,在与PG的timestamp邻近的的两个LOAM的pose中插值出一个虚拟的LOAM pose PG' ,其timestamp = PG的timestamp. 然后GPS的pose ...
- 76个值得你注意的erlang编程习惯
http://www.tuicool.com/articles/ZNzuyu 前言 学习Erlang的时候在书的留白处随手记录了一些东西,还有一些记录在了demo的注释里面,今天抽时间整理出来了一部分 ...
- Erlang 杂记
学习Erlang的时候在书的留白处随手记录了一些东西,还有一些记录在了demo的注释里面,今天抽时间整理出来了一部分,分享一下. Erlang的设计哲学是为每一个独立的事件创建一个新进程. Erlan ...
- TCP/IP详解
第一篇 TCPIP协议详解 第1章 TCPIP协议族 第2章 IP协议详解 第3章 TCP协议详解 第4章 TCP/IP通信案例:访问Internet上的Web服务器 一.TCP/IP协议族 TCP/ ...
- 工作者队列原理解析(后台writeback)
每一个CPU都会有两个(或者一个?)kwoker线程. kwoker线程,说白了就是尽量减少进程的数目,为了什么呢?因为线程数据太多的话,调度的成本比较高,占用太多的系统资源,所以这里是进程的一个简化 ...
- Oracle内存参数配置及版本问题
Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...
- ORA-04031案例一则
ORA-04031这个错误,几乎每一个专业的DBA都遇到过.这是一个相当严重的错误,Oracle进程在向SGA申请内存时,如果申请失败,则会报这个错误.大部分情况下是在向SGA中的shared poo ...
随机推荐
- DSP using MATLAB 示例Example3.23
代码: % Discrete-time Signal x1(n) : Ts = 0.0002 Ts = 0.0002; n = -25:1:25; nTs = n*Ts; x1 = exp(-1000 ...
- express-14 发送邮件
简介 Node和Express都没有内置的邮件发送功能,所以必须使用第三方模块.推荐Andris Reinman的Nodemailer SMTP.MSA和MTA 发送邮件的通用语言是简单邮件传输协议( ...
- Oracle PL/SQL设置快捷键的方法
pl sql默认设置不是很方便,最近搜罗了一下网上关于PLSQL的一些常用快捷键配置,主要是方便以后自个使用 1.登录后默认自动选中My Objects 默认情况下,PLSQL Developer ...
- hdu5438 Ponds dfs 2015changchun网络赛
Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ...
- 后缀数组 POJ 3581 Sequence
题目链接 题意:把n个数字(A1比其他数字都大)的序列分成三段,每段分别反转,问字典序最小的序列. 分析:因为A1比其他数字都大,所以反转后第一段结尾是很大的数,相当是天然的分割线,第一段可以单独考虑 ...
- Static Resources In ASP.NET Core 1.0
静态资源包括HTML,CSS,图片和Js文件.在ASP.NET Core 1.0中,静态资源默认的所在目录是wwwroot,wwwroot可以在project.json中定义. Steps: 在www ...
- oracle视图
视图 SELECT -- int.rowner "rgroup owner", -- int.rname "refresh group", mv.owner a ...
- iOS之04-方法的声明和实现
本次重点学习和理解OC对象方法的声明和定义 代码: /* 计算器类 方法: 1> 返回 π 2> 计算某个整数的平方 3> 计算两个整数的和 */ #import <Found ...
- void和void*
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例 ...
- topcoder SRM 623 DIV2 CatchTheBeatEasy
比较简单的一题,纠结比较久的是把my_cmp和my_minus放在类中,利用sort函数会出现 no matching function for call to ""sort(st ...