RADOS 块设备 (RBD) 一一其前身是 Ceph 块设备Cep 客户端提供基于块的恃久化存储,通常作为一 个额外的磁盘使用,客户可以灵活地使用这个磁盘,可以作为裸设备使用 ,也可以格式化成文件系统,然后挂载它。RBD 利用 librbd 库并将块数据连续地存储在跨越多个 OSD 的条带状非储空间中 。RBD 由 Ceph Rados 层提供支持,因此每个块设备都分布多个 Ceph 节点上,从而提供了高性能和出色的可靠性, RBD 具有丰富的企业特性,如自动精简配置( thin proviioning) 、动态调整容量、快照、写时复制以及缓存。 协议作为主线内核驱动程序由 Linux 完全支持;它注支持多种虚拟化平台,如 KVM QEMU libvirt ,使得虚拟可以利用 Ceph 块设备 所有这些特点使 RBD 成为云平台(例如 OpenStack CloudStack)个理想选择 。
现在我们将学习如何创建一个 Ceph 块设备并使用它,在已经部署的集群上执行一下操作。
#ceph集群配置,任何一个节点都行
#(1)创建块存储pool池
[[email protected] osd]# ceph osd pool create rbd 128
#(2)查看已经创建的pools池
[[email protected] osd]# ceph osd lspools
1 rdb
#(3)初始化pool
[[email protected] osd]# rbd pool init rbd
#(4)ceph集群中创建remote_rbd71镜像 rbd_data1镜像
[[email protected] osd]# rbd create rbd_data1 --size 100G --image-feature layering
[[email protected] osd]# rbd create remote_rbd71 --size 100G --image-feature layering
#(5)查看rbd
[[email protected] /]# rbd ls -l
NAME SIZE PARENT FMT PROT LOCK
rbd_data1 10 GiB 2
remote_rbd71 100 GiB 2 excl
#(6)查看镜像详细信息
[[email protected] /]# rbd --image rbd_data1 info
#############ceph集群本地使用RBD##############
#(1)映射到本地,就可以翔本地硬盘一样使用了
[[email protected] osd]# rbd map rbd_data1
[email protected] osd]# rbd showmapped
id pool namespace image snap device
0 rbd rbd_data1 - /dev/rbd0
#(2)格式化,挂载使用
[[email protected] osd]# mkfs.xfs /dev/rbd0
[[email protected] /]# mount /dev/rbd0 /mnt/
[[email protected] /]# df -h
/dev/rbd0 10G 33M 10G 1% /mnt
#############远程主机使用RBD#################
注释:linux 内核从2.6.32版本开始支持ceph,对于客户端来说,要支持以本地化方式访问ceph设备快文件系统,建议使用2.6.34及以上版本的linux内核。
#(1)环境检查
[[email protected] ~]# uname -r 查看内核版本
3.10.0-862.14.4.el7.x86_64
[[email protected] ~]# modprobe rbd
检查是否支持rbd,module rbd not found表示不支持
#(2)客户端添加ceph集群主机host解析
[[email protected] ~]# vim /etc/hosts
10.10.202.140 node140
10.10.202.141 node141
10.10.202.142 node142
10.10.202.143 node143
#(3)安装ceph 客户端,对应版本,我装的N版本
[[email protected] ~]# yum -y install centos-release-ceph-nautilus.noarch
[[email protected] ~]# yum -y install ceph-common
#(4)将ceph服务端的密钥拷贝到ceph客户端
PS:生产环境不要拷贝admin密钥,建立分权密钥,或者创建用户
[[email protected] /]# scp /etc/ceph/ceph.client.admin.keyring 10.10.202.71:/etc/ceph/
[[email protected] /]# scp /etc/ceph/ceph.conf 10.10.202.71:/etc/ceph/
#(5)客户端查看
[[email protected] ~]# rbd --image remote_rbd71 info
rbd image ‘remote_rbd71‘:
size 100 GiB in 25600 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 148fdf5968ea2
block_name_prefix: rbd_data.148fdf5968ea2
format: 2
features: layering, exclusive-lock
op_features:
flags:
create_timestamp: Mon Aug 26 15:23:16 2019
access_timestamp: Mon Aug 26 15:23:16 2019
modify_timestamp: Mon Aug 26 15:23:16 2019
#(6)客户端映射,第一次提示报错,不支持的特性,执行下面那条命令
[[email protected] ~]# rbd map rbd/remote_rbd71
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable remote_rbd1 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
#(7)根据提示,关闭特性
[[email protected] ~]# rbd feature disable remote_rbd1 object-map fast-diff deep-flatten
#(8)客户端重新map,rbd是pool名字,remote_rbd71是快存储名字
[[email protected] ~]# rbd map rbd/remote_rbd71
/dev/rbd0
#(9)查看映射
[[email protected] ~]# rbd showmapped
id pool namespace image snap device
0 rbd remote_rbd71 - /dev/rbd0
#(10)附加:取消映射操作
#[[email protected] /]# rbd unmap /dev/rbd/rbd/remote_rbd71
#(11)查看fdisk -l 就可以看到硬盘
[[email protected] ~]# fdisk -l
Disk /dev/rbd0: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes
#(12)格式化,挂载使用,永久挂载
[[email protected] ~]# mkfs.xfs /dev/rbd0
[[email protected] ~]# mount /dev/rbd0 /mnt/
[[email protected] ~]#vim /etc/fstab
/dev/rbd0 /mnt defaults 0 0
原文地址:https://blog.51cto.com/7603402/2432693