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
相关推荐
Daniel 大东17 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
起飞的风筝1 小时前
【redis】—— 环境搭建教程
数据库·redis·缓存
古人诚不我欺3 小时前
Redis设置密码认证,以及不重启服务情况下设置临时密码
数据库·redis·缓存
ktkiko111 天前
Redis中的缓存设计
数据库·redis·缓存
激流丶1 天前
【缓存策略】你知道 Write Around(缓存绕过写)这个缓存策略吗?
java·分布式·缓存
激流丶1 天前
【缓存策略】你知道 Write Through(直写)这个缓存策略吗?
java·分布式·后端·缓存·中间件
ascarl20101 天前
系统启动时将自动加载环境变量,并后台启动 MinIO、Nacos 和 Redis 服务
数据库·redis·缓存
LightOfNight1 天前
Redis设计与实现第9章 -- 数据库 总结(键空间 过期策略 过期键的影响)
数据库·redis·后端·缓存·中间件·架构
_.Switch1 天前
Python 自动化运维持续优化与性能调优
运维·开发语言·python·缓存·自动化·运维开发
Wlq04151 天前
分布式技术缓存技术
分布式·缓存