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.创建存储池

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

2.查看存储池

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数

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资源池

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 服务

ceph-doploy mds crcatc <节点> ……        创建MDS
​
cd /etc/ceph
ceph-deploy mds create node01 node02 node03

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

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 池,一个用于存储数据,一个用于存储元数据。此时数据池就类似于文件系统的共享目录。

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

4.创建数据存储池

ceph osd pool create <数据存储池> <PG数>                    
​
例如:ceph osd pool create cephfs_data 128

5.创建CephFS

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>

客户端操作:

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



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

RBD操作:

1.先创建存储池

ceph osd pool create <存储池名> <PG数> 

2.转换为RBD模式

ceph osd pool  application enable <存储池名> rbd

3.初始化存储池

rbd pool init -p <存储池名>

4.指定存储池创建镜像

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

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

rbd ls -l -p <存储池名>

6.查看镜像详细信息

rbd info<存储池名>/<镜像名>

7.修改镜像大小

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

8.删除镜像

#直接删除镜像
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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 07:12:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 07:12:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 07:12:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 07:12:05       18 阅读

热门阅读

  1. MySQL各种索引超详细讲解

    2024-01-19 07:12:05       33 阅读
  2. 数据库的设计模式

    2024-01-19 07:12:05       29 阅读
  3. 几种常见的算法

    2024-01-19 07:12:05       30 阅读
  4. 微信小程序webview安卓机不能打开pdf问题

    2024-01-19 07:12:05       27 阅读
  5. QT day6

    QT day6

    2024-01-19 07:12:05      21 阅读
  6. (四)PWM调光

    2024-01-19 07:12:05       22 阅读
  7. MYSQL多表关联查询详解(内、外连接)

    2024-01-19 07:12:05       29 阅读
  8. C++写csv文件

    2024-01-19 07:12:05       32 阅读