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池 [root@node140 osd]# ceph osd pool create rbd 128

#(2)查看已经创建的pools池 [root@node140 osd]# ceph osd lspools 1 rdb

#(3)初始化pool [root@node140 osd]# rbd pool init rbd

#(4)ceph集群中创建remote_rbd71镜像 rbd_data1镜像 [root@node140 osd]# rbd create rbd_data1 --size 100G --image-feature layering [root@node140 osd]# rbd create remote_rbd71 --size 100G --image-feature layering

#(5)查看rbd [root@node140 /]# rbd ls -l NAME SIZE PARENT FMT PROT LOCK rbd_data1 10 GiB 2
remote_rbd71 100 GiB 2 excl

#(6)查看镜像详细信息 [root@node140 /]# rbd --image rbd_data1 info

#############ceph集群本地使用RBD##############

#(1)映射到本地,就可以翔本地硬盘一样使用了 [root@node140 osd]# rbd map rbd_data1 root@node140 osd]# rbd showmapped id pool namespace image snap device
0 rbd rbd_data1 - /dev/rbd0

#(2)格式化,挂载使用 [root@node140 osd]# mkfs.xfs /dev/rbd0 [root@node140 /]# mount /dev/rbd0 /mnt/ [root@node140 /]# df -h /dev/rbd0 10G 33M 10G 1% /mnt

#############远程主机使用RBD################# 注释:linux 内核从2.6.32版本开始支持ceph,对于客户端来说,要支持以本地化方式访问ceph设备快文件系统,建议使用2.6.34及以上版本的linux内核。 #(1)环境检查 [root@zabbix71 ~]# uname -r 查看内核版本 3.10.0-862.14.4.el7.x86_64 [root@zabbix71 ~]# modprobe rbd 检查是否支持rbd,module rbd not found表示不支持

#(2)客户端添加ceph集群主机host解析 [root@zabbix71 ~]# 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版本 [root@zabbix71 ~]# yum -y install centos-release-ceph-nautilus.noarch [root@zabbix71 ~]# yum -y install ceph-common

#(4)将ceph服务端的密钥拷贝到ceph客户端 PS:生产环境不要拷贝admin密钥,建立分权密钥,或者创建用户 [root@node140 /]# scp /etc/ceph/ceph.client.admin.keyring 10.10.202.71:/etc/ceph/ [root@node140 /]# scp /etc/ceph/ceph.conf 10.10.202.71:/etc/ceph/

#(5)客户端查看 [root@zabbix71 ~]# 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)客户端映射,第一次提示报错,不支持的特性,执行下面那条命令 [root@zabbix71 ~]# 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)根据提示,关闭特性 [root@zabbix71 ~]# rbd feature disable remote_rbd1 object-map fast-diff deep-flatten

#(8)客户端重新map,rbd是pool名字,remote_rbd71是快存储名字 [root@zabbix71 ~]# rbd map rbd/remote_rbd71 /dev/rbd0

#(9)查看映射 [root@zabbix71 ~]# rbd showmapped id pool namespace image snap device
0 rbd remote_rbd71 - /dev/rbd0

#(10)附加:取消映射操作 #[root@zabbix71 /]# rbd unmap /dev/rbd/rbd/remote_rbd71

#(11)查看fdisk -l 就可以看到硬盘 [root@zabbix71 ~]# 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)格式化,挂载使用,永久挂载 [root@zabbix71 ~]# mkfs.xfs /dev/rbd0 [root@zabbix71 ~]# mount /dev/rbd0 /mnt/ [root@zabbix71 ~]#vim /etc/fstab /dev/rbd0 /mnt defaults 0 0