ceph存储池命令

各种教程·supo的文章 · 06-25 · 257 人浏览

3. CEPH的复制池

3.1 创建ceph的复制池

ceph osd pool create pool01 创建一个名为pool01 的复制池

格式: ceph osd pool create [pg-num] [pgp-num] [replicated]

存储池名称 [pg-num] 存储池中PG的数量(默认为32) [pgp-num] 存储池中pgp的数量(默认也是32) pgp 指的是OSD在PG上的排列组合方式 [replicated] 存储池的类型,默认为复制池

3.2 查询存储池的信息

ceph osd pool ls 查看集群中的存储池

ceph osd pool ls detail 查看存储池详情

ceph df 查询存储池的容量

ceph osd df 查询每个osd上的容量

ceph osd pool stats 查询池的性能状态

3.3 存储池的应用类型

应用类型指的是,存储池将来要提供何种存储业务;也就是,到底是块存储池,还是文件系统存储池,还是对象存储的存储池

rbd: 块存储池

cephfs: 文件系统存储池

rgw: 对象存储的存储池

ceph osd pool application enable pool01 rbd 为存储池添加rbd的应用类型(标签)

ceph osd pool application enable pool01 rgw --yes-i-really-mean-it

一个存储池可以有多个标签,通常只有一个标签

ceph osd pool application disable pool01 rgw

移除存储池的指定标签,如果有多个标签,则需要加--yes-i-really-mean-it

3.4 存储池的对象管理

上传对象:

rados -p 存储池名 put 对象名 对象的路径

下载对象:

rados -p 存储池名 get 对象名 对象的存储路径

查看对象:

rados -p 存储池名 ls

删除对象:

rados -p 存储池名 rm 对象名

查询对象存储的OSD

ceph osd map 存储池名 对象名

查询存储池中的PG数量和详情

ceph pg dump pgs_brief|grep ^存储池的ID

3.5 存储池的配额管理

配额方式:对象数量配额、容量配额

查询存储池的配额情况:

ceph osd pool get-quota 存储池名称

max objects: N/A 未开启对象配额

max bytes : N/A 未开启容量配额

设置对象配额

ceph osd pool set-quota pool01 max_objects 3

ceph osd pool set-quota pool01 max_objects 0 解除配额

设置容量配额

ceph osd pool set-quota pool01 max_bytes 10M

ceph osd pool set-quota pool01 max_bytes 0 解除配额

注意: 当存储池的配额触发时(达到时),IO会无限期的延长,直到配额不满足为止;当配额的对象为容量时,只要存储池在上传对象这一刻,没有达到配额,哪怕对象的容量会超过存储池的配额,也可以进行上传(存储池的配额没有达到,则对象可以实现io)

4. 存储池重命名

存储池重命名不会带来数据的任何影响

ceph osd pool rename pool01 cloud #将pool01重命名为cloud

重命名不会引起数据(对象)在OSD上的移动,不会引起 pg的分裂与合并;原因在于存储池的名称不会影响存储池的pg

如果存储池改名,会对上层的业务有一定影响;如果ceph对接了openstack和k8s则需要修改相应的配置文件,k8s 修改csi插件;openstack 修改cinder的配置文件

5. 配置存储池的参数

查看存储池的参数:

ceph osd pool get 存储池名 all #查看存储池的所有参数

ceph osd pool get 存储池名参数名 #查询存储池的指定参数

ceph osd pool set cloud nodelete true #保护存储池不被删除

常用参数:

size: 3 池的副本数量

min_size: 2 池要满足最少副本数才可以接收IO

pg_num: 32 池的pg数量

pgp_num: 32 池的pgp数量

crush_rule: replicated_rule 池的crush 规则

nodelete: false 存储池是否有保护,禁止删除

pg_autoscale_mode: on PG的自扩展开关

设置存储池的参数:

ceph osd pool set 存储池名 参数名值

例子: ceph osd pool set cloud size 2 #将存储池设置为2副本

ceph osd pool set cloud pg_num 35 #将PG的数量调整为35

6.存储池的PG

ceph mgr module enable pg_autoscaler N版以后默认开启

7. 存储池的命名空间

查询存储池的所有命名空间:

rados -p cloud ls --all

如果每个对象的前面显示为空,则该对象在默认的命名空间中,默认的命名空间为空

新建命名空间:

rados -p 存储池名 put 对象名对象路径 -N 命名空间名

查询指定命名空间对象:

rados -p 存储池名 ls -N 命名空间名

rados -p 存储池名 ls -N 命名空间名 --format=json 以json格式进行输出

应用场景: ceph的原生应用,例如用户的相册;或者是用户的网盘空间等都可以使用命名空间进行隔离

8. 删除存储池

必要条件: mon要允许存储池被删除,存储池没有被保护(自身要允许删除)

先设置mon 允许删除存储池:

ceph config set mon mon_allow_pool_delete true

再检查存储池有没有保护:

ceph osd pool get pool02 nodelete

如果值为true,则存储池不允许删除

ceph osd pool set pool02 nodelete false #设置其允许删除

删除存储池:

ceph osd pool delete 存储池名 存储池名 --yes-i-really-really-mean-it

9.纠删码池

创建纠删码池:

ceph osd pool create 存储池名称 erasure

查看纠删码规则:

ceph osd erasure-code-profile ls 查询集群中所有的纠删码规则

纠删码规则的故障域: 默认纠删码规则的故障域为主机,则如果n=4,则4个块会选择四台不同的主机;也就是故障域为主机

自定义纠删码规则:

ceph osd erasure-code-profile set ecdemo k=3 m=2 crush-failure-domain=osd

k:在不同 OSD 之间拆分的数据区块数量。默认值为 2。

m:数据变得不可⽤之前可以出现故障的 OSD 数量。默认值为 1。

plugin: 此可选参数定义要使⽤的纠删代码算法。

crush-failure-domain:CRUSH 故障域,默认设置为 host

crush-device-class: 典型的类别可能包括 hdd、ssd 或nvme。

crush-root:此可选参数设置 CRUSH 规则集的根节点。

key=value: 插件可以具有对该插件唯⼀的键值参数。

纠删码池规则管理:

查看规则:

ceph osd erasure-code-profile ls

查询详细的规则信息:

ceph osd erasure-code-profile get ecdemo

删除规则:

ceph osd erasure-code-profile rm ecdemo

10. 存储池的快照

存储池支持基于对象层的快照,也就是为每一个对象拍摄快照

5.1 创建快照

ceph osd pool mksnap 存储池名 快照名

5.2 查看存储池的快照

rados -p 存储池名lssnap

rados -p 存储池名 -s 快照名 ls #查看快照中的内容

5.3 还原快照

手动还原: 指的是将对象从快照下载到本地,然后重新上传到存储池中

rados -p 存储池名 -s 快照名 get 对象名本地保存路径

rados -p 存储池名 put 对象名本地对象路径

自动还原: 指的是直接将快照中的对象还原到存储池

rados -p 存储池名 rollback 对象名 快照名

生产中暂时还未发现存储池快照案例,都是基于应用进行快照,基于RBD快照,基于文件系统快照,基于对象存储备份或者是双活

ceph
Theme Jasmine by Kent Liao