ceph资源池pool管理

之前我们已经完成了 Ceph 集群的部署,但是我们如何向 Ceph 中存储数据呢?

  • 首先我们需要在 Ceph 中定义一个 Pool 资源池。

  • Pool 是 Ceph 中存储 Object 对象抽象概念。

  • 我们可以将其理解为 Ceph 存储上划分的逻辑分区,Pool 由多个 PG 组成;而 PG 通过 CRUSH 算法映射到不同的 OSD 上;同时 Pool 可以设置副本 size 大小,默认副本数量为 3。

一个pool资源池应该包含多少PG数?

OSD总数 官方推荐PG数
小于5个 128
5-10个 512
10-50个 4096
大于50个 参考公式(TargetPGsPerOSD,OSDNumber,DataPercent)/PoolReplicatesize

TargetPGsPerOSD: 每个OSD对应的PG数

OSDNumber:当前OSD总数

DataPercent:当前Pool预计会占用的Ceph集群总空间百分比

PoolReplicatesize:当前pool的副本数

例如:100 * 60 * 50% / 3 = 1000 ---> 取最接近2的次方值1024

ceph操作

1.创建存储池

bash 复制代码
ceph osd pool create <存储池名> <PG数>  [PGP数] 
例如:cd /etc/ceph
ceph osd pool create mypool 64 

2.查看存储池

bash 复制代码
ceph osd pool ls      
或     
ceph osd lspools                   查看对应的id号 
ceph osd pool get mypool size      查看存储池mypool里的副本数
ceph osd pool get mypool pg_num    查看存储池mypool里的pg数
ceph osd pool get mypool pgp_num   查看存储池mypool里的pgp数

3.设置副本数/PG数/PGP数

bash 复制代码
ceph osd poll set       <存储池名>   <副本数>/<PG数>/<PGP数>       
例:
修改副本: ceph osd pool set mypool size 2    
修改PG数:ceph osd pool set mypool pg_num 128
修改PGP数:ceph osd pool set mypool pgp_num 128
​
#修改默认副本数为 2
vim ceph.conf
......
osd_pool_default_size = 2
ceph-deploy --overwrite-conf config push node01 node02 node03

4.删除pool资源池

bash 复制代码
ceph osd pool rm <存储池名> <存储池名> --yes-i-really-really-mean-it   
注:需要先修改ceph配置/etc/ceph/ceph.conf,添加
[mon]
mon allow pool delete = true
​
推送 ceph.conf 配置文件给所有 mon 节点
ceph-deploy --overwrite-conf config push node01 node02 node03
​
所有 mon 节点重启 ceph-mon 服务
systemctl restart ceph-mon.target
​
执行删除 Pool 命令
ceph osd pool rm mypool mypool --yes-i-really-really-mean-it

CephFS操作

服务端操作:

1、在管理节点创建 mds 服务

bash 复制代码
ceph-doploy mds crcatc <节点> ......        创建MDS
​
cd /etc/ceph
ceph-deploy mds create node01 node02 node03

2.查看各个节点的 mds 服务

bash 复制代码
ssh root@node01 systemctl status ceph-mds@node01
ssh root@node02 systemctl status ceph-mds@node02
ssh root@node03 systemctl status ceph-mds@node03

3.创建元数据存储池

  • 启用 ceph 文件系统

  • ceph 文件系统至少需要两个 rados 池,一个用于存储数据,一个用于存储元数据。此时数据池就类似于文件系统的共享目录。

bash 复制代码
ceph osd pool create <元数据存储池名> <PG数>           
​
例如:ceph osd pool create cephfs_metadata 128

4.创建数据存储池

bash 复制代码
ceph osd pool create <数据存储池> <PG数>                    
​
例如:ceph osd pool create cephfs_data 128

5.创建CephFS

bash 复制代码
ceph fs new <CephFS名称> <元数据存储池名><数据存储池>
​
ceph fs new mycephfs cephfs_metadata cephfs_data        
#启用ceph,元数据Pool在前,数据Pool在后
​
ceph fs ls                  #查看cephfs

6.给挂载用户授权

ceph fs authorize <CephFS名称>client.<用户名><文件系统路径><rw或r>

客户端操作:

bash 复制代码
mount -t ceph <节点1名称>:6789,<节点2名称>:6789,......:<文件系统路径> <本地挂载点目录> -o name=<用户名>,secret=<密匙>或secretfile=<密匙文件>



ceph-fuse -m <节点1名称>:6789,<节点2名称>:6789,......:<本地挂载点目录> [-o nomepty(如果挂载的是空目录要加这个选项)]

RBD操作:

1.先创建存储池

bash 复制代码
ceph osd pool create <存储池名> <PG数> 

2.转换为RBD模式

bash 复制代码
ceph osd pool  application enable <存储池名> rbd

3.初始化存储池

bash 复制代码
rbd pool init -p <存储池名>

4.指定存储池创建镜像

bash 复制代码
rbd create -p <存储名> --image <镜像名> --size <镜像大小>
​
可简写为:
rbd create <存储池名>/<镜像名> --size <镜像大小>

5.查看存储池下存在哪些镜像

bash 复制代码
rbd ls -l -p <存储池名>

6.查看镜像详细信息

bash 复制代码
rbd info<存储池名>/<镜像名>

7.修改镜像大小

bash 复制代码
rod resize<存储池名>/<镜像名> --size <镜像大小> [--allow-shrink(缩小镜像大小)]

8.删除镜像

bash 复制代码
#直接删除镜像
rbd rm -p 存储池名 --image 镜像名
rbd remove <存储池名>/<镜像名>
​
#推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复
rbd trash <存储池名>/<镜像名>
rbd ls -l -p 存储池名
rbd trash list -p 存储池名
5fc98fe1f304 镜像名#找出对应的镜像
​
#还原镜像
rbd trash restore rbd-demo/5fc98fe1f304
rbd ls -l -p rbd-demo
相关推荐
sqyaa.1 小时前
Guava LoadingCache
jvm·缓存·guava
Hello.Reader4 小时前
RedisJSON 内存占用剖析与调优
数据库·redis·缓存
千宇宙航11 小时前
闲庭信步使用图像验证平台加速FPGA的开发:第九课——图像插值的FPGA实现
图像处理·计算机视觉·缓存·fpga开发
全栈凯哥12 小时前
20.缓存问题与解决方案详解教程
java·spring boot·redis·后端·缓存
Hellyc19 小时前
用户查询优惠券之缓存击穿
java·redis·缓存
鼠鼠我捏,要死了捏21 小时前
缓存穿透与击穿多方案对比与实践指南
redis·缓存·实践指南
汤姆大聪明1 天前
Redis 持久化机制
数据库·redis·缓存
kk在加油1 天前
Redis数据安全性分析
数据库·redis·缓存
hcvinh2 天前
CANDENCE 17.4 进行元器件缓存更新
学习·缓存
墨着染霜华2 天前
Caffeine的tokenCache与Spring的CaffeineCacheManager缓存区别
java·spring·缓存