Ceph分布式存储集 * ool资源池简介及使用小结
作者:Jiangxl~ 发布时间:2022-08-10 12:42:21
1.Pool资源池的概念
Pool资源池的官方文档:https://docs.ceph.com/en/pacific/rados/operations/pools/#create-a-pool
Pool资源池是Ceph存储数据的逻辑分区,起到Namespace命名空间的作用,不同的客户端可以去使用不同的Pool资源池存储数据,Pool除了可以隔离数据之外,还可以针对不同的Pool资源池设置不同的优化策略,比如副本数、数据清洗次数、数据块及对象大小等等。
在Pool资源池中会包含一定数量的PG,PG里的对象会被存储在不同的OSD中,Pool资源上也是分布到整个集群的
一个文件将数据写入到Pool资源池的过程:
首先客户端会从Cluster Map中读取到集群各节点的信息,要写入存储的文件会被拆分成多个Object对象,这些Object对象都会被写入到Pool资源池中,PG是建立在Pool资源池中的,一个Pool资源池中会有多个PG载体,Object对象文件最终会被存放在Pool资源池的PG目录中,最后再通过CRUSH Rule算法将数据文件写入到不同的OSD中。
Pool资源池与PG载体的关系:
在前面说到过Object对象文件都是存储在OSD中的PG目录中,主要是为了故障迁移时,直接迁移目录会非常方便。
在这里提到了Pool资源池的概念,客户端想要将数据写入到Ceph存储中,首先Ceph需要准备一个Pool资源池,为不同的客户端提供不同的资源池,不同的资源池也可以设置不同的策略。
Pool资源池是建立在OSD之上的逻辑分区,PG载体是建立在Pool资源池中的,一个Pool资源池中有几十个甚至几百个PG载体,还有PGP。
客户端写入的文件被拆分成多个Object对象后,首先会存储在PG载体中,而PG载体是在Pool资源池中,最后通过CRUSH算法写入到OSD中。
File—>Objec—>PG—>Pool—>OSD
Pool资源池中PG与PGP的关系:
PG是用来存放Object对象的,PGP相当于是PG存放在OSD的一种排列组合。
例如集群中有三个OSD,分别是OSD-1、OSD-2、OSD-3,如果Pool的副本数为2,PGP的数量为1,那么所有的PG存放在OSD组合就只有一种情况,例如[OSD-1,OSD-2],此时所有的PG主从副本都会分别存放在OSD-1和OSD-2中,如果PGP的数量为2,那么PG存放在OSD中的组合就会有两种情况,例如[OSD-1,OSD-2]和[OSD-1,OSD-3]。
PG的数量要和PGP的数量保持一致。
2.Pool资源池的基本操作
2.1.创建一个Pool资源池
命令格式:ceph osd create pool ${pool-name} ${pg_num} ${pgp_num}
[root@ceph-node-1 ~]# ceph osd pool create ceph-pool-1 64 64
pool 'ceph-pool-1' created
在创建Pool资源池的时候一定要指定pg_num和pgp_num参数,因为Ceph集群不能自动计算PG的数量。
官方建议的PG使用数量:
集群中小于5个OSD,则设置PG的数量为128。
集群有5-10个OSD时,设置PG的数量为512。
集群中有10-50个OSD时,设置PG的数量为1024.
当集群中超过50个OSD时,需要权衡PG的数量,有一种公式:
(osd_number * 100)
pg_num = ------------------------------
pool size
例如集群有90个OSD,Pool设置的副本数为3:(90*100)÷3=3000
PGP的数量要和PG的数量保持一致。
注意这个PG数量是集群所能承担的总PG数量,每个资源池分配多个PG,还需要通过总的PG数乘以资源池占整个集群数据比例,最终拿到一个资源池应该分配多少个PG的数量。
2.2.为资源池设置应用模式
其实就是为资源池设置一个分类,有rbd、rgw、cephfs三种。
命令格式:ceph osd pool application enable {pool_name} rbd
[root@ceph-node-1 ~]# ceph osd pool application enable ceph-pool-1 rbd
enabled application 'rbd' on pool 'ceph-pool-1'
2.3.查看资源池设置的应用模式
[root@ceph-node-1 ~]# ceph osd pool application get ceph-rbd-data
{
"rbd": {}
}
2.4.查看OSD所有的资源池
[root@ceph-node-1 ~]# ceph osd lspools
1 ceph-pool-1
2.5.查看资源池的PG数量和PGP数量
查看Pool资源池属性的命令格式;ceph osd pool get {poll_name} [parameter]
查看pg的数量
[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-1 pg_num
pg_num: 64
查看pgp的数量
[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-1 pgp_num
pgp_num: 64
2.6.查看资源池的副本数量
副本数量默认为3个。
[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-1 size
size: 3
2.7.查看资源池的类型
默认类型为replicated_rule(复制类型)。
[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-2 crush_rule
crush_rule: replicated_rule
2.8.设置资源池的PG数量以及PGP数量
修改Pool资源池属性的命令格式;ceph osd pool set {poll_name} [parameter]
[root@ceph-node-1 ~]# ceph osd pool set ceph-pool-1 pg_num 128
set pool 1 pg_num to 128
[root@ceph-node-1 ~]# ceph osd pool set ceph-pool-1 pgp_num 128
set pool 1 pgp_num to 128
2.9.设置资源池的副本数量
[root@ceph-node-1 ~]# ceph osd pool set ceph-pool-1 size 2
set pool 1 size to 2
2.10.设置资源池的最大object对象数量
命令格式:ceph osd pool set-quota {pool_name} [max_objects {obj-count}] [max_bytes {bytes}]
[root@ceph-node-1 ~]# ceph osd pool set-quota ceph-pool-1 max_objects 10000
set-quota max_objects = 10000 for pool ceph-pool-1
2.11.重命名资源池
命令格式:ceph osd pool rename {current-pool-name} {new-pool-name}
[root@ceph-node-1 ~]# ceph osd pool rename ceph-pool-1 ceph-pool-2
pool 'ceph-pool-1' renamed to 'ceph-pool-2'
2.12.查看资源池的统计信息
[root@ceph-node-1 ~]# ceph df
RAW STORAGE:
CLASS SIZE AVAIL USED RAW USED %RAW USED
hdd 30 GiB 27 GiB 10 MiB 3.0 GiB 10.04
TOTAL 30 GiB 27 GiB 10 MiB 3.0 GiB 10.04
POOLS:
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL
ceph-pool-2 1 128 0 B 0 0 B 0 13 GiB
2.13.查看资源池的利用率
[root@ceph-node-1 ~]# rados df
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR USED COMPR UNDER COMPR
ceph-pool-2 0 B 0 0 0 0 0 0 0 0 B 0 0 B 0 B 0 B
total_objects 0
total_used 3.0 GiB
total_avail 27 GiB
total_space 30 GiB
2.14.删除资源池
[root@ceph-node-1 ~]# ceph osd pool delete ceph-pool-2 --yes-i-really-really-mean-it
来源:https://blog.csdn.net/weixin_44953658/article/details/125058536


猜你喜欢
- 本文不是参考手册式文章,仅适用于对JS产生一个大致的认知,如需JS的详细语法与应用请移步w3schoolJavaScript是什么?Java
- 登录百度AL开发平台在控制台选择语音合成创建应用填写应用信息在应用列表获取(Appid、API Key、Secret Key)6. 安装py
- 今天在下脚本的时候遇到一个问题,比如有这样的一个字符串 t = "book123456",想把尾部的数字全部去掉,只留下
- 准备工作(接上篇文章的示例也可以):1. 在index.js文件中引入任一js文件import sum from './sum
- 1、去官网下载1.1、网址:https://www.jetbrains.com/pycharm/ 点这里进入选择版本页面1.2、如果就是我们
- 插入记录时,影响插入速度的主要是索引、唯一性校验、一次插入记录条数等。根据这些情况,可以分别进行优化,本节将介绍优化插入记录速度的几种方法。
- 数组都是从0开始。javascript是arrayname[i],而vbscript是arrayname(i) javascript的字符串
- 简介:设计稿尺寸标注与取色专用工具,适用于设计、界面开发与网页前端安装包仅700KB,全绿色独有的双模式切换可支持双屏显示器,一面设计,一面
- 需求 Oracle调用第三方外部程序。Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件。源码 java
- ACID:Atomic、Consistent、Isolated、Durable 存储程序提供了一个绝佳的机制来定义、封装和管理事务。 1,M
- 起因因为一些事情,需要将域名解析为ip地址,想到Python作为万能语言,就用Python来实现这个功能代码import socketurl
- 在Netbeans中由于使用了Swing进行开发,所以其中界面的字体也是由Java虚拟机进行配置而不是随操作系统的。在安装完Netbeans
- 1、块级作用域想想此时运行下面的程序会有输出吗?执行会成功吗?#块级作用域if 1 == 1: name = "lzl"
- 分享一下 IntelliJ IDEA 2021.1 的激活破解教程,相当于永久激活了,亲测有效,下面是详细文档哦~申明:本教程 Intell
- Python的for循环十分灵活,使用for循环我们可以很轻松地遍历一个列表,例如:a_list = ['z', '
- logging分为4个模块: loggers, handlers, filters, and formatters.●loggers: 提供
- 前言声明:python版本3.6,以下讨论的Python也都是适用于3.x版本在实际使用安装python的pip安装 依赖库是非常的便捷的。
- 数据采集我们上一篇介绍了,如何采集王者最低战力,本文就来给大家介绍如何采集王者皮肤,买不起皮肤,当个桌面壁纸挺好的。下面,我和大家介绍如何获
- 引言接口测试就是数据的测试,在测试之前,需要准备好测试数据,而测试数据可以用数据库、excel、txt和csv方式,当然还有一种方式,那就是
- 首先我们供给一台主机要进行的步骤就是对其主机端口的扫描,查看其中开放的端口。我们首先创建一个TCP的全连接的扫描器。我们使用socket来创