ceph块管理
设置pool属性为rbd
块管理通过rdb接口操作
ceph osd pool application enable pool1 rbd
ceph osd pool application get pool1
{
"rbd": {}
}
查看块
#查看池里的块
rbd -p pool1 ls
#查看块属性
rbd --image pool1/block1 info
#输出
rbd image 'block1':
#这个块的大小,为 2G
size 2GiB in 512 objects
order 22 (4MiB objects)
block_name_prefix: rbd_data.85c06b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
create_timestamp: Sun Nov 6 20:09:11 2022
features 指定的是这个块所具备的功能是什么,这些功能的意思大概如下:
- layering: 分层支持 cloning。
- striping: 条带化 v2 用于加强性能,当前只有 librbd 支持。
- exclusive-lock: 支持独占锁
- object-map: 支持对象映射(依赖 exclusive-lock)
- fast-diff: 快速计算差异(依赖 object-map 和 exclusive-lock)
- deep-flatten: 支持快照扁平化操作
- journaling: 支持记录 IO 操作(依赖 exclusive-lock)
- data-pool: EC data pool 支持
要在客户端上使用这个块的话,我们需要关闭除了 layering 之外其他的所有的功能,
如何关闭和启用这些功能
#关闭
rbd feature disable pool1/block1 exclusive-lock, object-map, fast-diff, deep-flatten
#启用替换为enable即可
创建块
创建块的语法是:
rbd create 池名/块名 --size 大小
或者
rbd create -p 池名 块名 --size 大小
[root@vms81 ceph-install]# rbd create pool1/block1 --size 2048
[root@vms81 ceph-install]# rbd -p pool1 ls
block1
[root@vms81 ceph-install]# rbd create pool1/block2 --size 2048
[root@vms81 ceph-install]# rbd -p pool1 ls
block1
block2
删除块
删除某个块的语法是:
rbd -p 池名 rm 块名
或者
rbd rm 池名/块名
[root@vms81 ceph-install]# rbd -p pool1 rm block2
Removing image: 100% complete...done.
在客户端上使用块
把已移除的vms82作为客户端
#将管理权限配置下发到vms82
ceph-deploy --overwrite-conf admin vms82
映射块到本地,映射的语法是
rbd map --image 池名/块名
#将block1映射到vms82
[root@vms82 ~]# rbd map --image pool1/block1
/dev/rbd0
#取消映射为
#rbd unmap --image pool1/block1
[root@vms82 ~]# rbd showmapped
id pool image snap device
0 pool1 block1 - /dev/rbd0
重启系统之后,是不会自动给我们做映射的。如果希望开机能自动做映射的话,我们需要编辑/etc/ceph/rbdmap
,在此文件里的格式为:
池名/块名 id=用户名,keyring=/etc/ceph/用户的 keyring 文件
例如:pool1/block1 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
这句话的意思是,开机的时候,自动的把 pool1 里的 block1 给我做映射,使用 admin 这个用户,admin 的密钥文件是/etc/ceph/ceph.client.admin.keyring
。
因为现在还只有一个管理员,没有其他用户,所以我们暂且只使用管理员来做。所以在/etc/ceph/rbdmap
里添加如下内容:
pool1/block1 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
并启动一个服务
systemctl enable rbdmap --now