一.资源池 Pool 管理
我们已经完成了 Ceph 集群的部署,但是我们如何向 Ceph 中存储数据呢?首先我们需要在 Ceph
中定义一个 Pool 资源池。Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解为 Ceph
存储上划分的逻辑分区,Pool 由多个 PG 组成;而 PG 通过 CRUSH 算法映射到不同的 OSD 上;
同时 Pool 可以设置副本 size 大小,默认副本数量为 3。
Ceph 客户端向 monitor 请求集群的状态,并向 Pool 中写入数据,数据根据 PGs 的数量,通过
CRUSH 算法将其映射到不同的 OSD 节点上,实现数据的存储。 这里我们可以把 Pool 理解为存
储 Object 数据的逻辑单元;当然,当前集群没有资源池,因此需要进行定义。
PG (Placement Group),pg 是一个虚拟的概念,用于存放 object,PGP(Placement Group for
Placement purpose),相当于是 pg 存放的一种 osd 排列组合。
1.创建一个 Pool 资源池
其名字为 mypool,PGs 数量设置为 64,设置 PGs 的同时还需要设置,PGP(通常PGs和PGP的值是相同的)
cd /etc/ceph
ceph osd pool create mypool 64 64
2.查看集群 Pool 信息
ceph osd pool ls 或
rados lspools 或
ceph osd lspools
3.查看资源池副本的数量(默认3)
ceph osd pool get mypool size
4.查看 PG 和 PGP 数量
ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num
5.修改 pg_num 和 pgp_num 的数量为 n
ceph osd pool set mypool pg_num 128
ceph osd pool set mypool pgp_num 128
6.修改 Pool 副本数量
ceph osd pool set mypool size n
7.修改默认副本数为 2
(1)修改配置文件 ceph.conf
vim ceph.conf
......
osd_pool_default_size = 2
(2)推送 ceph.conf 配置文件给所有 mon 节点
ceph-deploy --overwrite-conf config push node01 node02 node03
(3)所有 mon 节点重启 ceph-mon 服务
systemctl restart ceph-mon.target
8.删除 Pool 资源池
(1)删除存储池命令存在数据丢失的风险,Ceph 默认禁止此类操作,需要管理员先在 ceph.conf
配置文件中开启支持删除存储池的操作
cd /etc/ceph
vim ceph.conf
......
[mon]
mon_allow_pool_delete = true
(2)推送 ceph.conf 配置文件给所有 mon 节点
ceph-deploy --overwrite-conf config push node01 node02 node03
(3)所有 mon 节点重启 ceph-mon 服务
systemctl restart ceph-mon.target
(4)执行删除 Pool 命