先说一下我的环境:

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. git学习 git-flow

    例子 初始化 在git init之后执行git init flow;接下来的命名约定建议使用默认值; 新特性 为即将发布的版本开发新功能特性. 这通常只存在开发者的库中. 增加新特性 git flow ...

  2. iOS10 UI教程层次结构的事件

    iOS10 UI教程层次结构的事件 iOS10 UI教程层次结构的事件,层次结构中存在7个事件,对于这些事件的介绍如表1-3所示.通过这些事件,可以监听视图,当视图在层次结构上发生变化时可以被拦截,也 ...

  3. WPF 颜色转换

    从字符串到画刷: var converter = new System.Windows.Media.BrushConverter(); var brush = (Brush)converter.Con ...

  4. 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest C. CIA Datacenter

    C. CIA Datacenter time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  5. c++ 关于new文件

    new文件用来管理c++的动态内存,这个文件声明了几个全局空间的函数(不是std空间的函数,全局空间的函数调用时是用全局作用域解析符),包括operator new 和operator delete的 ...

  6. c++实现des算法

    程序分三部分,des头文件,des类实现,main函数调用. //panda //2013-4-13 //des //des.h class DES { private: //public: //明文 ...

  7. weblogic部署项目包,报空指针错误

    贴出 报错代码 <weblogic> <> <> <1479765377228> <BEA-240003> <Console enco ...

  8. POJ 3320 尺取法,Hash,map标记

    1.POJ 3320 2.链接:http://poj.org/problem?id=3320 3.总结:尺取法,Hash,map标记 看书复习,p页书,一页有一个知识点,连续看求最少多少页看完所有知识 ...

  9. flex 遍历Object或者JSON对象内容的实现代码

    private function init():void { //新建对象 var obj:Object = new Object(); //增加key-value obj["name&qu ...

  10. IIS7.0+部署ARR负载均衡

    安装: 1.  安装IIS(需要附带相关的健康检查,需要原始的那个默认站点) 2.  安装ARR相关的文件 3.  安装好之后,IIS里会出现有Server Farms的节点,直接创建服务器. 站点对 ...