先说一下我的环境:

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之间的一些数量关系的更多相关文章

  1. RunLoop总结:RunLoop 与GCD 、Autorelease Pool之间的关系

    如果在面试中问到RunLoop相关的知识,很有可能也会问到RunLoop与GCD.Autorelease Pool有没有关系,哪些地方用到了GCD.Autorelease Pool等. So,本文就总 ...

  2. PG数据库之间的导入导出

    本文将介绍如何对PG数据库进行导入.导出,主要利用的是PG自带的pg_dump.pg_dumpall.pg_restore.psql等命令,版本是9.4(不同版本的pg_dump \ pg_resto ...

  3. GPS和LOAM的pose之间建立edge

    基于时间戳一致原理,在与PG的timestamp邻近的的两个LOAM的pose中插值出一个虚拟的LOAM pose PG' ,其timestamp = PG的timestamp. 然后GPS的pose ...

  4. 76个值得你注意的erlang编程习惯

    http://www.tuicool.com/articles/ZNzuyu 前言 学习Erlang的时候在书的留白处随手记录了一些东西,还有一些记录在了demo的注释里面,今天抽时间整理出来了一部分 ...

  5. Erlang 杂记

    学习Erlang的时候在书的留白处随手记录了一些东西,还有一些记录在了demo的注释里面,今天抽时间整理出来了一部分,分享一下. Erlang的设计哲学是为每一个独立的事件创建一个新进程. Erlan ...

  6. TCP/IP详解

    第一篇 TCPIP协议详解 第1章 TCPIP协议族 第2章 IP协议详解 第3章 TCP协议详解 第4章 TCP/IP通信案例:访问Internet上的Web服务器 一.TCP/IP协议族 TCP/ ...

  7. 工作者队列原理解析(后台writeback)

    每一个CPU都会有两个(或者一个?)kwoker线程. kwoker线程,说白了就是尽量减少进程的数目,为了什么呢?因为线程数据太多的话,调度的成本比较高,占用太多的系统资源,所以这里是进程的一个简化 ...

  8. Oracle内存参数配置及版本问题

    Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...

  9. ORA-04031案例一则

    ORA-04031这个错误,几乎每一个专业的DBA都遇到过.这是一个相当严重的错误,Oracle进程在向SGA申请内存时,如果申请失败,则会报这个错误.大部分情况下是在向SGA中的shared poo ...

随机推荐

  1. DSP using MATLAB 示例Example2.4

    n = [0:10]; x = stepseq(0,0,10) - stepseq(10,0,10); [xe,xo,m] = evenodd(x,n); set(gcf,'Color',[1,1,1 ...

  2. 学习使用MAC

    Mac:指苹果笔记本.台式机.分为:MacBook Air.MacBook Pro.iMac.Mac mini和Mac Pro.有时也指苹果电脑操作系统,分:雪豹.山狮.巨浪和优山美地. iOS:指苹 ...

  3. [工作bug]一个weblogic跨应用导致session丢失的bug之旅

    近来,发布一个应用,开发和本地测试一切都好,一旦部署到测试环境之后,坑爹的问题随之而来,应用程序不定时的超时,导致用户正在操作过程中被踢了出来,纠结了几天,终于在今天将此问题搞定: 1.系统架构 系统 ...

  4. 【bzoj3624】【apio2008】免费道路

    2016/06/25 诸老师讲的图论,听了这道题很想写一下,但是看来要留到期末考后了. 07/01 有的标记是说生成树,有的是并查集...然而我只是觉得这棵奇怪的生成树蛮精妙的... 题目比较难过的只 ...

  5. spring mvc 解决后台传递值乱码问题

    在Web-xml 配置添加过滤器 <!-- 配置过滤器 解决乱码问题 --> <filter> <filter-name>CharacterEncodingFilt ...

  6. change,propertychange,input事件小议

    github上关于mootools一个issue的讨论很有意思,所以就想测试记录下.感兴趣的可以点击原页面看看. 这个问题来自IE(LTE8)中对checkbox和radio change事件的实现问 ...

  7. ACM Binary String Matching

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Given two strings A and B, whose alp ...

  8. HDU 1087 简单dp,求递增子序列使和最大

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  9. OSG模型简单控制

    OSG模型简单控制 转自:http://milkcu.sintune.net/blog/archives/1392673560.html 结点基本操作 添加结点 OSG中使用osg::Node和osg ...

  10. flume-ng配置文档简单说明

    1.配置文件现状 1.1 Flume数据接收端 IP地址:54.0.95.67 功能:接收各个端口发来的数据. 启动方式:进入目录 /usr/local/flume/*bin 在终端运行 ./rece ...