判断该设备内核是否支持rbd

1
2
3
4
[root@ceph1 ~]# modprobe rbd

# 无返回信息说明支持!
# 如有错误信息说明不支持,赶快升级内核吧~

创建pool存储池

1
[root@ceph1 ~]# ceph osd pool create myrbd 512 512

创建rbd块设备

1
2
3
4
5
6
7
[root@ceph1 ~]# rbd create myrbd/rbd1 --size 2048000 --image-feature layering

# /斜杠前是:pool存储池名称
# /斜杠后是:块设备名称

[root@ceph1 ~]# rbd -p myrbd ls
rbd1

查看块设备的详细信息

1
2
3
4
5
6
7
8
9
10
11
[root@ceph1 ~]# rbd info myrbd/rbd1
rbd image 'rbd1':
size 200 GiB in 51200 objects // 存储空间
order 22 (4 MiB objects)
id: 46546b8b4567
block_name_prefix: rbd_data.46546b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Thu Jan 14 11:02:04 2021

如果存储空间不够用,可以采用以下方式扩容

1
2
3
4
[root@ceph1 ~]# rbd resize myrbd/rbd1 --size [扩容后大小] --allow-shrink

# 扩容后再次查看块设备信息
[root@ceph1 ~]# rbd info myrbd/rbd1

删除rbd

1
rbd rm <pool-name>/<rbd-name>

将块设备映射到机器中

1
2
[root@ceph ~]# rbd map myrbd/rbd1
/dev/rbd0

取消块设备映射

1
umount unmap

初始化块设备并挂载使用

存储文件大的用xfs

存储日常文件且稳定用ext4

1
2
3
4
5
6
7
8
9
10
11
[root@ceph ~]# mkfs.xfs -f /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=32, agsize=16384000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288000, imaxpct=5
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=256000, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@ceph ~]# mount /dev/rbd0 /data

创建快照

1
2
3
4
rbd snap create --snap mysnap myrbd/rbd1
rbd snap ls myrbd/rbd1

# --snap :指定快照名称

删除快照

1
rbd snap purge <pool-name>/<rbd-name>

回滚

1
rbd snap rollback myrbd/rbd1@mysnap