前言
本博客是Ceph官方文档操作手册的实践记录,本章节操作手册。
获取映像列表
# 这里在本地虚拟机中不指定pool名称会报错
# swimmingpool是上一博客中创建的
# rdb list
$ rbd list swimmingpool
bar
映射块设备
# 用 rbd 把映像名映射为内核模块。必须指定映像名、存储池名、和用户名。若 RBD 内核模块尚未加载, rbd 命令会自动加载。
# sudo rbd map {pool-name}/{image-name} --id {user-name}
$ sudo rbd map swimmingpool/bar
/dev/rbd0
查看已映射块设备
# rbd showmapped
$ rbd showmapped
id pool image snap device
0 swimmingpool bar - /dev/rbd0
挂载目录到已映射块设备
# 查看新创建的磁盘/dev/rbd0
$ lsblk
# 格式化/dev/rbd0
$ sudo mkfs.xfs /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=8, agsize=32768 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 创建一个挂载点
$ sudo mkdir /mnt/zzm-test
# 挂载目录到/dev/rbd0
$ sudo mount /dev/rbd0 /mnt/zzm-test
取消块设备映射
要取消块设备映射,用 rbd 命令、指定 unmap 选项和设备名(即为方便起见使用的同名块设备映像)。
# sudo rbd unmap /dev/rbd/{poolname}/{imagename}
# 这里需要注意的是, /dev/rbd是固定参数,不需要修改/dev/rbd的值
$ sudo rbd unmap /dev/rbd/swimmingpool/bar
$ rbd showmapped
问题汇总及解决
此链接中记录了本章节遇到的问题,并给出了解决方法
包括如下问题:
1.
sudo rbd map swimmingpool/bar --id admin
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable swimmingpool/bar object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address