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. Markdown基础以及个人经验

    前言 DFRobot论坛今日支持Markdown发帖了: [md] your content here [/md] 非常棒,再也不怕辛辛苦苦排个版,一夜回到解放前.这里介绍一下Markdown写博客发 ...

  2. css3 - 动态伪类

    动态伪类分为以下几种: 1. hover(经过) 2. active(点击后) 3. focus(聚焦) - input专用 4. visited(访问后) 使用:

  3. C中的预编译编译链接

        http://ke.qq.com/webcourse/index.html#course_id=67888&term_id=100058920&taid=13934591901 ...

  4. com关于IUnknown接口

    com定义的每个接口都必须从IUnknown继承过来,主要原因是IUnknown接口提供了两个很重要的特性:生存期控制和接口查询. 客户程序仅仅能通过接口与com对象进行通信.尽管客户程序能够无论对象 ...

  5. MyEclipse的html/JSP编辑器添加代码自动提示

    http://lusterfly.iteye.com/blog/1872627 在myeclipse 9以前的版本中,我们如果要为html编辑器添加自动的代码提示可以这样操作: windows--&g ...

  6. 整理自Git文件夹下资料及man手册(不包括书籍)

    $ git commit -awhich will automatically notice any modified (but not new) files, add them to the ind ...

  7. Java爬虫快速开发工具uncs的部署攻略

    写在前面 uncs是java快速开发爬虫的工具,简单便捷,经过大量版本迭代和生产验证,可以适用大多数网站,推荐使用. 一.基本用法 1.1 开发包获取 目前只能在公司内网maven服务器获取到 < ...

  8. Centos7-搭建hdfs启动时报java.net.BindException: Problem binding to [node01:9000] java.net.BindException异常

    今天用阿里的服务器搭了个伪分布式的HDFS,格式化后启动hdfs,发现只有dataNode启动了,查看启动日志发现异常: 2019-01-22 15:54:50,507 FATAL org.apach ...

  9. Memcached服务端自动启动(转载)

    Memcached服务端自动启动 原文链接:http://www.cnblogs.com/technet/archive/2011/09/11/2173485.html  经测试,要使得Memcach ...

  10. WPF触发器(Trigger、DataTrigger、EventTrigger)

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...