第⑯讲:Ceph集群Pool资源池管理以及PG的数据分布的核心技术要点

文章目录

    • 1.Pool资源池的管理
      • 1.1.查看Pool资源池列表
      • 1.2.创建一个Pool资源池
      • 1.3.查看Pool资源池的参数信息
      • 1.4.修改Pool资源池的参数信息
      • 1.5.为Pool资源池设置应用模式
      • 1.6.重命名Pool资源池
      • 1.7.设置Pool资源池的限额
      • 1.8.删除Pool资源池
      • 1.9.查看Pool资源池的利用率
    • 2.PG的数据分布概念

1.Pool资源池的管理

1.1.查看Pool资源池列表

[root@ceph-node-1 ~]# ceph osd lspools
1 ceph-rbd-data
2 .rgw.root
3 default.rgw.control
4 default.rgw.meta
5 default.rgw.log
6 default.rgw.buckets.index
7 default.rgw.buckets.data
8 cephfs_metadata
9 cephfs_data

1.2.创建一个Pool资源池

语法格式:ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-rule-name] [expected-num-objects]

[root@ceph-node-1 ~]# ceph osd pool create pool-test 3 3
pool 'pool-test' created

1.3.查看Pool资源池的参数信息

列出Pool资源池的所有参数

[root@ceph-node-1 ~]# ceph osd pool get pool-test 

image-20220406223637817

查看pool的副本数量
[root@ceph-node-1 ~]# ceph osd pool get pool-test size
size: 3查看pool的pg数量
[root@ceph-node-1 ~]# ceph osd pool get pool-test pg_num
pg_num: 3

1.4.修改Pool资源池的参数信息

设置pool的副本数
[root@ceph-node-1 ~]# ceph osd pool set pool-test size 1
set pool 10 size to 1

1.5.为Pool资源池设置应用模式

查看为Pool设置应用模式的命令格式,支持禁用、启用、查看、删除、设置等方式。

[root@ceph-node-1 ~]# ceph -h | grep application
osd pool application disable <poolname> <app> {-- disables use of an application <app> on pool 
osd pool application enable <poolname> <app> {--  enable use of an application <app> [cephfs,rbd,
osd pool application get {<poolname>} {<app>}     get value of key <key> of application <app> on 
osd pool application rm <poolname> <app> <key>    removes application <app> metadata key <key> on 
osd pool application set <poolname> <app> <key>   sets application <app> metadata key <key> to 

为Pool设置应用模式。

[root@ceph-node-1 ~]# ceph osd pool application enable pool-test rbd
enabled application 'rbd' on pool 'pool-test'

查看Pool设置的应用模式。

[root@ceph-node-1 ~]# ceph osd pool application get  pool-test 
{"rbd": {}
}

1.6.重命名Pool资源池

[root@ceph-node-1 ~]# ceph osd pool rename pool-test pool-rename
pool 'pool-test' renamed to 'pool-rename'

1.7.设置Pool资源池的限额

同个限额可以调整资源池的最大Object文件数量等等参数。

[root@ceph-node-1 ~]# ceph osd pool set-quota pool-rename max_objects 10
set-quota max_objects = 10 for pool pool-rename

1.8.删除Pool资源池

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

直接删除会报错,报错的意思是说删除资源池会对其中的数据永久破坏,如果确认删除,则输入两次资源池的名称,然后根据提示信息加上–yes-i-really-really-mean-it参数进行删除。

[root@ceph-node-1 ~]# ceph osd pool delete pool-rename pool-rename --yes-i-really-really-mean-it
pool 'pool-rename' removed

1.9.查看Pool资源池的利用率

[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 
.rgw.root                 768 KiB       4      0     12                  0       0        0    193 193 KiB      4   4 KiB        0 B         0 B 
ceph-rbd-data             192 KiB       3      0      9                  0       0        0    501 1.7 MiB    222  13 MiB        0 B         0 B 
cephfs_data                   0 B       0      0      0                  0       0        0      0     0 B   4272   8 GiB        0 B         0 B 
cephfs_metadata           2.8 MiB      23      0     69                  0       0        0      9 425 KiB    381 647 KiB        0 B         0 B 
default.rgw.buckets.data  1.9 MiB       8      0     24                  0       0        0    102 253 KiB    305 493 KiB        0 B         0 B 
default.rgw.buckets.index     0 B       3      0      9                  0       0        0    366 388 KiB    147  70 KiB        0 B         0 B 
default.rgw.control           0 B       8      0     24                  0       0        0      0     0 B      0     0 B        0 B         0 B 
default.rgw.log               0 B     207      0    621                  0       0        0 287858 281 MiB 191830     0 B        0 B         0 B 
default.rgw.meta            3 MiB      19      0     57                  0       0        0    281 239 KiB    151  55 KiB        0 B         0 B 
pool-rename                   0 B       0      0      0                  0       0        0      0     0 B      0     0 B        0 B         0 B total_objects    275
total_used       7.6 GiB
total_avail      62 GiB
total_space      70 GiB

2.PG的数据分布概念

PG的官方文档:https://docs.ceph.com/en/nautilus/rados/operations/placement-groups/#how-are-placement-groups-used

PG是建立在Pool资源池之上的,一个文件存储在OSD时,首先被拆分成多个Object文件,这些Object文件都是存储在Pool资源池的PG里的,PG最后再通过CRUSH算法将数据存储到OSD中。

如果一个Pool资源池中的PG数量很多,就意味着会通过CRUSH算法将Object数据分散写入到更多的OSD中,数据分散存储在OSD的数量越多,对于数据的安全性就越高,相反,如果Pool中的PG数量过少,那么通过CRUSH算法将数据分散存储到OSD的数量就越少,数据的丢失概率就会很高。

image-20220407105146809

PG的作用有两种:

  • 数据分布情况,如果PG的数量越多,那么数据就会分散在多个OSD中进行存储,降低数据丢失的概率,如果PG的数量很少,那么数据分散在OSD的数量也会随之减少,就会提高数据丢失的概率。
  • 提高计算效率,如果没有PG的概念,一个文件会被拆分成多个Object文件,集群中就会有成千上万个Object,如果这些Object都由CRUSH进行计算,然后同步到OSD里,会大大降低集群的性能,有了PG的概念后,所有的Object都是存储在PG里的,CRUSH只需要根据PG进行计算就可以了,PG的数量远远要比Object的数量少很多。

集群中PG数量分配多少是合理的,是有具体计算公式的,如下所示,通过这个公式可用计算出集群中可以设置多少个PG。

             (OSDs * 100)
Total PGs =  ------------pool size

PG的数量是通过OSD的数量乘以100然后除以Pool的副本数得来的,这个100是指这个OSD中可以承载多少个PG数量。

每个OSD中最多只能容纳250个PG,PG的数量建议在100-200之间。

在使用公式计算PG的数量时,建议使用OSD*200,可以方便后期的数据量的扩展,随着数据量的增长,PG的数量也需要增长,如果一开始设置的数量很多,再后期就不需要扩容了。

注意这个公式只是计算出集群中有多少个PG合理,并不是计算的Pool拥有的PG数量。

例子:集群有200个OSD,Pool资源池的副本数为3。

(200x100)/3=6667

PG的数量建议是2的n次方,最接近6667的2的n次方是4096或者8192,为了方便后期的扩展,建议设置为8196个PG。

Ceph官方提供了一个PG计算器,地址为:http://ceph.com/pgcalc/,现在可能无法使用了。

pgcalc工具可以使用的使用,可用在这里添加Pool的一些参数(副本数、OSD的数量、数据使用比例、OSD可承载的PG数量)就可以计算出集群中PG的数量以及一个Pool设置多少个PG合理。

即使这个工具无法使用了,那也没有关系,还是有公式计算的。

在上面通过公式能够计算出集群合理的PG数量,下面的公式可以计算出一个Pool资源池分配多少个PG合理。

             (OSDs * 100)
Pool PGs =  -------------- * pool data percentpool size

"pool data percent"指的是该Pool将来可能存放的数据量占集群的百分比。

例子:OSD100个、OSD可承载的PG数量为200个、Pool副本数为3、该Pool的数据量占集群的15%。

(100X200)/3X0.15=1000个

1000接近2的n次方的值为1024,那么就建议这个Pool设置1024个PG。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品经理必会12个产品模型

很多运营经理&#xff0c;常常觉得产品成功的决定性因素是“产品做得好”。 而很多产品经理却认为&#xff0c;产品互抄太严重了&#xff0c;差异化的竞争要点是“产品运营得好”。 在商业高速发展时代&#xff0c;成功产品定义往往不是单点成功&#xff0c;而是由3大要素共同…

就业班 第三阶段(负载均衡) 2401--4.18 day2 nginx2 LVS-DR模式

3、LVS/DR 模式 实验说明&#xff1a; 1.网络使用NAT模式 2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域 3.所有节点网关均指定真实网关 主机名ip系统用途client172.16.147.1mac客户端lvs-server172.16.147.154centos7.5分发器real-server1172.16.…

SpringBoot整合PDF动态填充数据并下载

目录 目录 一、准备环境 二、iTextPDF介绍 三、步骤 四、访问查看结果 五、源代码参考 一、准备环境 ①下载一个万兴pdf软件 ②准备一个pdf 文件 二、iTextPDF介绍 这是一个用于生成PDF文档的Java库&#xff0c; 文档创建与修改&#xff1a;iTextPDF能够从零开始创建…

学习Rust的第11天:模块系统

Rust的模块系统可以使用它来管理不断增长的项目&#xff0c;并跟踪 modules 存储在何处。 Rust的模块系统是将代码组织成逻辑片段的有效工具&#xff0c;因此可以实现代码维护和重用。模块支持分层组织、隐私管理和代码封装。Rust为开发人员提供了多功能和可扩展的方法来管理项…

用 Pytorch 训练一个 Transformer模型

昨天说了一下Transformer架构&#xff0c;今天我们来看看怎么 Pytorch 训练一个Transormer模型&#xff0c;真实训练一个模型是个庞大工程&#xff0c;准备数据、准备硬件等等&#xff0c;我只是做一个简单的实现。因为只是做实验&#xff0c;本地用 CPU 也可以运行。 本文包含…

Vue阶段练习:tab栏、进度条、

阶段练习旨在学习完Vue 指令、计算属性、侦听器-CSDN博客后&#xff0c;进行自我检测&#xff0c;每个练习分为效果显示、需求分析、静态代码、完整代码、总结 四个部分&#xff0c;效果显示和准备代码已给出&#xff0c;我们需要完成“完整代码”部分。 练习1&#xff1a;tab栏…

开源大数据集群部署(二十一)Spark on yarn 部署

作者&#xff1a;櫰木 1 spark on yarn安装&#xff08;每个节点&#xff09; cd /root/bigdata/ tar -xzvf spark-3.3.1-bin-hadoop3.tgz -C /opt/ ln -s /opt/spark-3.3.1-bin-hadoop3 /opt/spark chown -R spark:spark /opt/spark-3.3.1-bin-hadoop32 配置环境变量及修改配…

攻防世界---misc---再见李华

1.下载附件是解压之后得到一张图片 2.使用常规方法后没有得到什么信息&#xff0c;接着用winhex分析&#xff0c;发现有压缩包 &#xff0c;里面还有个key.txt 3.接着用kali使用命名foremost进行分离&#xff0c;得到压缩包&#xff0c;里面的key.txt需要密码 4.接着给压缩包暴…

IDEA代码重构

重构 重构的目的&#xff1a; 提高代码的可读性、可维护性、可扩展性和性能。 重命名元素 重命名类 当我们进行重命名操作的时候可以看到第六行存在一个R(rename)&#xff0c;点击后就会弹出所偶有引用&#xff0c;这样可以避免我们在修改后存在遗漏引用处未修改。 我们可以通过…

管理集群工具之LVS

管理集群工具之LVS 集群概念 将很多机器组织在一起&#xff0c;作为一个整体对外提供服务集群在扩展性、性能方面都可以做到很灵活集群分类 负载均衡集群&#xff1a;Load Balance高可用集群&#xff1a;High Availability高性能计算&#xff1a;High Performance Computing …

模拟网关是什么?

模拟网关是一种网络设备&#xff0c;用于在模拟电话系统和数字网络之间进行信号转换。它的主要作用是将模拟语音信号转换为数字格式&#xff0c;使得这些信号能够通过基于IP&#xff08;互联网协议&#xff09;的网络进行传输&#xff0c;从而实现语音通信。这种设备是将传统的…

Python环境找不到解决方法

Python环境找不到 打开设置&#xff1a;Ctrl Alt S 添加Local Interpreter... 打开System Interpreter&#xff0c;找到本地安装的Python.exe路径&#xff0c;然后一路点OK Trust Project 如果打开工程时&#xff0c;出现如下对话框&#xff0c;请勾选 Trust projects in ...&…

项目管理中,项目团队如何高效的协作与沟通?

目 录 一、项目团队高效的协作与沟通&#xff0c;可以通过以下几个方面来实现&#xff1a; 二、如何在项目团队中明确和共享愿景以提高协作效率&#xff1f; 三、有效的沟通策略在项目管理中的应用案例有哪些&#xff1f; 四、建立哪些具体的沟通机制可以提升团队协作效率…

matlab学习003-绘制由差分方程表示的离散系统图像

目录 1&#xff0c;题目 2&#xff0c;使用函数求解差分方程 1&#xff09;基础知识 ①filter函数和impz函数 ②zeros函数 ☀ 2&#xff09;绘制图像 ​☀ 3&#xff09;对应代码 如果连简单的信号都不会的&#xff0c;建议先看如下文章&#x1f447;&#xff0c;之…

互联网大厂ssp面经,数据结构part2

1. 什么是堆和优先队列&#xff1f;它们的特点和应用场景是什么&#xff1f; a. 堆是一种特殊的树形数据结构&#xff0c;具有以下特点&#xff1a;i. 堆是一个完全二叉树&#xff0c;即除了最后一层外&#xff0c;其他层都是满的&#xff0c;并且最后一层的节点都靠左对齐。i…

SEGGER Embedded Studio IDE移植FreeRTOS

SEGGER Embedded Studio IDE移植FreeRTOS 一、简介二、技术路线2.1 获取FreeRTOS源码2.2 将必要的文件复制到工程中2.2.1 移植C文件2.2.2 移植portable文件2.2.3 移植头文件 2.3 创建FreeRTOSConfig.h并进行配置2.3.1 处理中断优先级2.3.2 configASSERT( x )的处理2.3.3 关于系…

linq select 和selectMany的区别

Select 和 SelectMany 都是 LINQ 查询方法&#xff0c;但它们之间有一些区别。 Select 方法用于从集合中选择特定的属性或对集合中的元素进行转换&#xff0c;并返回一个新的集合。例如&#xff1a; var numbers new List<int> { 1, 2, 3, 4, 5 }; var squaredNumbers…

SRS WebRTC Whip 和 Whep 部署体验问题

whip 報錯 404 webrtc推流 小窗口一闪而过&#xff0c;然后查看f12回复404的报错信息 chrome版本&#xff1a; 正在检查更新 版本 123.0.6312.123&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; centos 7.9 源码安装部署&#xff0c; 代码分支5.0 完全按…

socket通信基础讲解及示例-C

socket通信之C篇 服务端与客户端简介 socket通信服务端与客户端通信模型通信实战server&#xff08;服务端&#xff09;创建client&#xff08;客户端&#xff09;创建 函数详解创建套接字 socket绑定端口bind进入监听状态listen获取客户端连接请求accept接收网络数据read发送数…

每日一题---移除链表元素

文章目录 前言1.题目2.分析思路3.参考代码 前言 Leetcode–-移除链表元素 1.题目 2.分析思路 首先要创建一个新的链表&#xff0c;在定义三个指针&#xff0c;newHead&#xff0c;newTail和pcur&#xff0c;分别代表新链表头&#xff0c;新链表尾以及用于遍历原链表。 其次是…