//在客户端节点上执行

1、创建rbd手动挂载

//ceph osd pool create <pool> [<pg_num:int>] [<pgp_num:int>] 

sudo ceph osd pool create rbd 5 5

//初始化pool为rbd应用

//rbd应用格式属于块存储,可以直接当硬盘挂载到操作系统或k8s容器下,不过不支持多点挂载同一个image,无法实现多点文件共享交换

sudo rbd pool init rbd

//创建image
//rbd create --size {megabytes} {pool-name}/{image-name}
sudo rbd create --size 1024 rbd/k8s_ceph

//把 image 映射为块设备
sudo rbd map --image k8s_ceph /dev/rbd0
//ext4格式 格式化块设备
sudo mkfs.ext4 -m0 /dev/rbd0
//挂在设备
sudo mkdir /mnt/ceph-vol1
sudo mount /dev/rbd0 /mnt/ceph-vol1/
//查看挂载情况
df -H

2、删除挂载

//取消挂载
umount /mnt/ceph-vol1/ 

//取消映射
rbd unmap /dev/rbd0

//查看是否取消成功,如没有任何输出则表示取消映射成功
rbd showmapped

//删除块设备
rbd rm k8s_ceph

//查看
rbd ls rbd

3、修改image大小

rbd resize --size 2048 k8s_ceph --allow-shrink

4、报错

使用rados lspools查看集群中创建的数据池,默认用户使用的数据池是rbd

在使用rbd ls [pool-name]命令查看数据池内创建的image时会报错

rbd: error opening default pool 'rbd'
Ensure that the default pool has been created or specify an alternate pool name.

在创建数据池时可以重新创建rbd,将错误覆盖

//删除报错

ceph osd pool delete rbd_pool rbd_pool --yes-i-really-really-mean-it

Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
//解决办法

修改每个ceph的monitor节点/etc/ceph/ceph.conf,添加

[mon]
mon allow pool delete = true

重启ceph-mon服务,命令如下:    
systemctl restart ceph-mon.target

//映射报错

 rbd map --pool rbd k8s_ceph

modprobe: ERROR: could not insert 'rbd': Operation not permitted
rbd: failed to load rbd kernel module (1)
rbd: sysfs write failed
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (2) No such file or directory

 //解决办法

rbd feature enable <pool-name>/<image-name> <feature-name>

/***

ceph osd lspools  //查看已创建的pool
rados purge rbd_pool --yes-i-really-really-mean-it 或者

ceph osd pool delete rbd_pool   --yes-i-really-really-mean-it  //删除pool
rados df   //查看pool的使用情况

 rbd info rbd/k8s_ceph //查看image详细信息
***/

//

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐