pool是ceph存储数据时的逻辑分区,它起到namespace的作用。其他分布式存储系统,比如Mogilefs、Couchbase、Swift都有pool的概念,只是叫法不同。每个pool包含一定数量的PG,PG里的对象被映射到不同的OSD上,因此pool是分布到整个集群的。

除了隔离数据,我们也可以分别对不同的POOL设置不同的优化策略,比如副本数、数据清洗次数、数据块及对象大小等。

查看POOL

查看pool有多种方式:

[root@mon1 ~]# rados lspools
rbd
testpool
testpool2
[root@mon1 ~]# ceph osd lspools
rbd, testpool, testpool2,
[root@mon1 ~]# ceph osd dump |grep pool
pool 'rbd' replicated size min_size crush_ruleset object_hash rjenkins pg_num pgp_num last_change flags hashpspool stripe_width
pool 'testpool' replicated size min_size crush_ruleset object_hash rjenkins pg_num pgp_num last_change flags hashpspool stripe_width
pool 'testpool2' replicated size min_size crush_ruleset object_hash rjenkins pg_num pgp_num last_change flags hashpspool crash_replay_interval stripe_width
[root@mon1 ~]#

毫无疑问ceph osd dump输出的信息最详尽,包括pool ID、副本数量、CRUSH规则集、PG和PGP数量等

创建POOL

通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:

  • 若少于5个OSD, 设置pg_num为128。
  • 5~10个OSD,设置pg_num为512。
  • 10~50个OSD,设置pg_num为4096。
  • 超过50个OSD,可以参考pgcalc计算。
[root@mon1 ~]# ceph osd pool create pool1
pool 'pool1' created
[root@mon1 ~]#

创建pool时要设置pg_num

调整POOL副本

[root@mon1 ~]# ceph osd pool set pool1 size
set pool size to
[root@mon1 ~]#

删除POOL

[root@mon1 ~]# ceph osd pool delete pool1
Error EPERM: WARNING: this will *PERMANENTLY DESTROY* all data stored in pool pool1. If you are *ABSOLUTELY CERTAIN* that is what you want, pass the pool name *twice*, followed by --yes-i-really-really-mean-it.
[root@mon1 ~]# ceph osd pool delete pool1 pool1 --yes-i-really-really-mean-it
pool 'pool1' removed

note:删除pool时,pool名字要输入两次同时要加入--yes-i-really-really-mean-it参数

设置POOL配额

[root@mon1 ~]# ceph osd pool set-quota pool1 max_objects 100           #最大100个对象
set-quota max_objects = for pool pool1
[root@mon1 ~]# ceph osd pool set-quota pool1 max_bytes $(( * * * )) #容量大小最大为10G
set-quota max_bytes = for pool pool1

重命名POOL

[root@mon1 ~]# ceph osd pool rename pool1 pool2
pool 'pool1' renamed to 'pool2'
[root@mon1 ~]#

查看POOL状态信息

[root@mon1 ~]# rados df
pool name KB objects clones degraded unfound rd rd KB wr wr KB
pool2
rbd
testpool
testpool2
total used
total avail
total space
[root@mon1 ~]#

创建快照

ceph支持对整个pool创建快照(和Openstack Cinder一致性组区别?),作用于这个pool的所有对象。但注意ceph有两种pool模式:

  • Pool Snapshot,我们即将使用的模式。创建一个新的pool时,默认也是这种模式。
  • Self Managed Snapsoht,用户管理的snapshot,这个用户指的是librbd,也就是说,如果在pool创建了rbd实例就自动转化为这种模式。

这两种模式是相互排斥,只能使用其中一个。因此,如果pool中曾经创建了rbd对象(即使当前删除了所有的image实例)就不能再对这个pool做快照了。反之,如果对一个pool做了快照,就不能创建rbd image了。

[root@mon1 ~]# ceph osd pool mksnap pool2 pool2_snap
created pool pool2 snap pool2_snap
[root@mon1 ~]#

删除快照

[root@mon1 ~]# ceph osd pool rmsnap
#remove snapshot <snap> from <pool>
[root@mon1 ~]# ceph osd pool rmsnap pool2 pool2_snap
removed pool pool2 snap pool2_snap
[root@mon1 ~]#

ceph学习之pool的更多相关文章

  1. Ceph学习笔记(2)- CRUSH数据分布算法

    前言: ​ 分布式存储系统需要让数据均匀的分布在集群中的物理设备上,同时在新设备加入,旧设备退出之后让数据重新达到平衡状态尤为重要.新设备加入后,数据要从不同的老设备中迁移过来.老设备退出后,数据迁移 ...

  2. Ceph学习笔记(3)- Monitor

    Ceph学习笔记(3)- Monitor 前言: ​ Ceph将cluster map与placement rule合并为一张表称为crush map,作为集群表的一部分.由Monitor对集群表的副 ...

  3. ceph学习

    网络: ceph必须要有公共网络和集群网络: public network:负责客户端交互以及osd与mon之间的通讯 cluster network:负责osd之间的复制,均衡,回填,数据恢复等操作 ...

  4. 在ceph中:pool、PG、OSD的关系

    原文:http://www.cnblogs.com/me115/p/6366374.html Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略:支持两种类型:副本(replic ...

  5. Ceph学习之路(二)之Ceph的工作原理及流程

    一.RADOS的对象寻址 Ceph 存储集群从 Ceph 客户端接收数据——不管是来自 Ceph 块设备. Ceph 对象存储. Ceph 文件系统.还是基于 librados 的自定义实现——并存储 ...

  6. Ceph学习之路(一)之ceph初识

    一.元数据和元数据管理 (1)元数据 在学习Ceph之前,需要了解元数据的概念.元数据又称为中介数据.中继数据,为描述数据的数据.主要描述数据属性的信息,用来支持如指示存储位置.历史数据.资源查找.文 ...

  7. ceph学习之CRUSH

    CRUSH的全称是Controlled Replication Under Scalable Hashing,是ceph数据存储的分布式选择算法,也是ceph存储引擎的核心.在之前的博客里介绍过,ce ...

  8. ceph学习之PG

    PG的计算公式: 整个集群PG的计算公式 Total PGs = ((Total_number_of_OSD * ) / max_replication_count) 每个POOL中PG的计算公式: ...

  9. ceph学习笔记之十二 Ubuntu安装部署Ceph J版本

    https://cloud.tencent.com/info/2b70340c72d893c30f5e124e89c346cd.html 安装Ubuntu系统安装步骤略过 拓扑连接: 一.安装前准备工 ...

随机推荐

  1. 从TCP协议的原理来谈谈rst复位攻击

    在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接.四次握手如何把全双工的连接关闭掉.滑动窗体是怎么数据传输的.TCP的flag标志位里RST在哪些情况下出现.以下我会画一些尽量简化的 ...

  2. R语言数据分析系列之五

    R语言数据分析系列之五 -- by comaple.zhang 本节来讨论一下R语言的基本图形展示,先来看一张效果图吧. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...

  3. Resharper 8.2的“安装”问题

    概述 完美解决Resharper 8.2的“安装”问题和VS2012写Javascript语句无法智能提示的问题: 目录 引言——Resharper 简介——安装——VS2012智能提示测试 引言 最 ...

  4. kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询

    kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询 如果你须要实现非传统的数据库查询操作.为了讨论这样的情景,我们如果你须要读取数据库中的正則表達式,然后检查输入的 ...

  5. 邻接表的使用及和vector的比較

    这几天碰到一些对建边要求挺高的题目.而vector不好建边,所以学习了邻接表.. 以下是我对邻接表的一些看法. 邻接表的储存方式 邻接表就是就是每一个节点的一个链表,而且是头插法建的链表,这里我们首先 ...

  6. xml文件的根节点layout_width或者layout_height设置无效果的原因分析

    在android开发中相信大家对ListView.GridView等组建都非常熟悉,在使用它们的时候须要自己配置相关的Adapter,而且配置现骨干的xml文件作为ListView等组建的子View, ...

  7. ubuntu 14.04 下利用apt-get方式安装opencv

    转载,请注明出处:http://blog.csdn.net/tina_ttl 目录(?)[+] 标签(空格分隔): Linux学习 OpenCV ubuntu 1404 下利用apt-get方式安装O ...

  8. Memcache介绍

    面临的问题 对于高并发高訪问的 Web应用程序来说.数据库存取瓶颈一直是个令人头疼的问题. 特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰值已经达到500的时候,那你的程序执行离崩溃的 ...

  9. vim 插件: ctrlp.vim

    vim-scripts 里可以搜到这个插件. 安装好了之后,在 vim 的 normal 模式之下按 Ctrl+P 组合键即可弹出搜索窗口. * <f5> 更新目录缓存. * <c- ...

  10. 【转】IDA远程调试 The debugger could not attach to the selected process. irs_recv 等待的操作过时

    IDA连接android_server 选中进程点ok之后 连接不上报错 The debugger could not attach to the selected process. This can ...