ceph存储部署(cephrbd存储)

ceph存储部署(cephrbd存储)这里我们还是基于之前 ceph deploy 部署的环境进行测试 直接的部署参考链接 之前机器环境参考下面的截图 nbsp 之前在介绍 ceph 资源划分和存储过程描述的时候 没有介绍存储池的概念 这边我们来介绍一下 Ceph 存储系统支持 池 概念 存储池是 Ceph 中一些对象的逻辑分组 它不是一个连续的分区 而是一个逻辑概念 类似 LVM 中的卷组 Volume Group

大家好,我是讯享网,很高兴认识大家。



这里我们还是基于之前ceph-deploy部署的环境进行测试。直接的部署参考链接:

之前机器环境参考下面的截图

好用的ceph 容器 ceph使用指南_好用的ceph 容器
讯享网

 

之前在介绍ceph资源划分和存储过程描述的时候,没有介绍存储池的概念,这边我们来介绍一下:

Ceph 存储系统支持“池”概念,存储池是Ceph中一些对象的逻辑分组。它不是一个连续的分区,而是一个逻辑概念,类似LVM中的卷组(Volume Group)。

Ceph 客户端从监视器获取一张集群运行图(集群内的所有监视器、 OSD 、和元数据服务器节点分布情况),并把对象写入存储池poll。存储池的 size

好用的ceph 容器 ceph使用指南_数据_02

 

 

存储池至少可设置以下参数:

  • 对象的所有权/访问权限;
  • 归置组数量;以及,
  • 使用的 CRUSH 规则集。

如果你开始部署集群时没有创建存储池, Ceph 会用默认存储池存数据。存储池提供的功能:

  • 自恢复力: 你可以设置在不丢数据的前提下允许多少 OSD 失效,对多副本存储池来说,此值是一对象应达到的副本数。典型配置存储一个对象和它的一个副本(即 size = 2 ),但你可以更改副本数;对纠删编码的存储池来说,此值是编码块数(即纠删码配置里的 m=2
  • 归置组: 你可以设置一个存储池的归置组数量。典型配置给每个 OSD 分配大约 100 个归置组,这样,不用过多计算资源就能得到较优的均衡。配置了多个存储池时,要考虑到这些存储池和整个集群的归置组数量要合理。
  • CRUSH 规则: 当你在存储池里存数据的时候,与此存储池相关联的 CRUSH 规则集可控制 CRUSH 算法,并以此操纵集群内对象及其副本的复制(或纠删码编码的存储池里的数据块)。你可以自定义存储池的 CRUSH 规则。
  • 快照: 用 ceph osd pool mksnap 创建快照的时候,实际上创建了某一特定存储池的快照。
  • 设置所有者: 你可以设置一个用户 ID 为一个存储池的所有者。

要把数据组织到存储池里,你可以列出、创建、删除存储池,也可以查看每个存储池的利用率。

PG 映射到 OSD

每个存储池都有很多归置组, CRUSH 动态的把它们映射到 OSD 。 Ceph 客户端要存对象时, CRUSH 将把各对象映射到某个归置组。

把对象映射到归置组在 OSD 和客户端间创建了一个间接层。由于 Ceph 集群必须能增大或缩小、并动态地重均衡。如果让客户端“知道”哪个 OSD 有哪个对象,就会导致客户端和 OSD 紧耦合;相反, CRUSH 算法把对象映射到归置组、然后再把各归置组映射到一或多个 OSD ,这一间接层可以让 Ceph 在 OSD 守护进程和底层设备上线时动态地重均衡。下列图表描述了 CRUSH 如何将对象映射到归置组、再把归置组映射到 OSD 。

好用的ceph 容器 ceph使用指南_数据_03

 

 有了集群运行图副本和 CRUSH 算法,客户端就能精确地计算出到哪个 OSD 读、写某特定对象。

在生产中,一个Pool里设置的PG数量是预先设置的,PG的数量不是随意设置,需要根据OSD的个数及副本策略来确定,线上尽量不要更改PG的数量,PG的数量的变更将导致整个集群动起来(各个OSD之间copy数据),大量数据均衡期间读写性能下降严重;

预先规划Pool的规模,设置PG数量;一旦设置之后就不再变更;后续需要扩容就以 Pool 为维度为扩容,通过新增Pool来实现(Pool通过 crushmap实现故障域隔离);

 

[root@ceph-deploy ~]# rados df
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR
test-pool 0 B 0 0 0 0 0 0 0 0 B 0 0 B

total_objects 0
total_used 3.7 GiB
total_avail 86 GiB
total_space 90 GiB

#给一个pool创建一个快照,前面test-pool是存储池名,后面test-pool-snap是你自己指定的快照名

 

#删除pool的快照

[root@ceph-deploy ~]# ceph osd pool rmsnap test-pool test-pool-snap

#查看存储池中PG的数量

#设置存储池的副本数为3

[root@ceph-deploy ~]# ceph osd pool set test-pool size 3

 #

[root@ceph-deploy ~]# ceph osd pool set test-pool min_size 2

#要获取对象副本数,执行命令:

[root@ceph-deploy ~]# ceph osd dump | grep ‘replicated size’

 存储池中PG和PGP概念的区别和理解:

  • PG是指定存储池存储对象的目录有多少个,PGP是存储池PG的OSD分布组合个数
  • PG的增加会引起PG内的数据进行分裂,分裂到相同的OSD上新生成的PG当中
  • PGP的增加会引起部分PG的分布进行变化,但是不会引起PG内对象的变动

简单理解就是我们把PG的值理解成一个口袋,然后口袋里面装的是对象数据,然后OSD就相当于一个箱子。对象数据装入口袋,口袋装入箱子。现在对象数据的量是固定的,如果PG设为1个,也就是对象数据都会放在一个口袋里,然后放在箱子里,如果PG数量增加了,那么其实加的是口袋的数量,也就是之前可能一个箱子内放的是一个口袋,现在放了两个口袋,但是对象数据的量是固定的啊,所以就会根据算法,把对象数据放到新的口袋,但是这种变化是在一个箱子内部的,并不是跨箱子的。然后PGP的值可以理解成口袋的分布的一个指定。这样可能不好理解,你可以这样理解,本身一共有12个口袋,然后PGP的值是6,那么这12个口袋就会均匀的分布在6个箱子里面,每个箱子两个,这个时候如果把PGP设为12个,那么就会自动的从每个箱子里拿出一共口袋,放到新的箱子里来。这种变化是跨箱子的。

确定pg_num取值是强制性的,因为不能自动计算。下面是几个常用的值:

•少于5 个OSD 时可把pg_num设置为128•OSD

数量在5 到10 个时,可把pg_num设置为512•OSD

数量在10 到50 个时,可把pg_num设置为4096•OSD

数量大于50 时,你得理解权衡方法、以及如何自己计算pg_num取值

 

 

 

Ceph块设备,以前称为RADOS块设备,为客户机提供可靠的、分布式的和高性能的块存储磁盘。RADOS块设备利用librbd库并以顺序的形式在Ceph集群中的多个osd上存储数据块。RBD是由Ceph的RADOS层支持的,因此每个块设备都分布在多个Ceph节点上,提供了高性能和优异的可靠性。RBD有Linux内核的本地支持,这意味着RBD驱动程序从过去几年就与Linux内核集成得很好。除了可靠性和性能之外,RBD还提供了企业特性,例如完整和增量快照、瘦配置、写时复制克隆、动态调整大小等等。RBD还支持内存缓存,这大大提高了其性能:

好用的ceph 容器 ceph使用指南_客户端_04

任何普通的Linux主机(RHEL或基于debian的)都可以充当Ceph客户机。客户端通过网络与Ceph存储集**互以存储或检索用户数据。CephRBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始

 

#默认创建块设备,会直接创建在rbd池中,但使用deploy 安装后,该rbd池并没有创建。所以我们这里创建rbd存储池,并初始化

[root@ceph-deploy ~]# ceph osd pool create rbd

[root@ceph-deploy ~]# rbd pool init rbd

[root@ceph-deploy ~]# dmesg |tail
[.] libceph: mon0 172.31.46.63:6789 feature set mismatch, my 106b84a842a42 < server’s 40106b84a842a42, missing 0000
[.] libceph: mon0 172.31.46.63:6789 missing required protocol features

#解决过程如下

  1.修改Ceph配置文件/etc/ceph/ceph.conf(集群中每个节点都要改),在global section下,增加

 

 

这里我们还是ceph的部署管理节点演示如何使用的ceph的文件存储。

  • 为元数据存储池设置较高的副本水平,因为此存储池丢失任何数据都会导致整个文件系统失效。
  • 为元数据存储池分配低延时存储器(像 SSD ),因为它会直接影响到客户端的操作延时。

 

小讯
上一篇 2025-06-10 10:38
下一篇 2025-06-07 22:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/142062.html