赞
踩
1、RBD是Ceph分布式集群中最常用的存储类型
2、块是一个有序字节,普通的一个块大小为512字节,基于块的存储是最常见的存储方式,比如常见的硬盘、软盘和CD光盘等,都是存储数据最简单快捷的设备
3、Ceph块设备是一种精简置备模式,可以扩展大小且数据是以条带化的方式存储在一个集群中的多个OSD中RBD具有快照、多副本、克隆和一致性功能
4、Ceph块设备通过Linux内核模块或者librbd库与OSD之间交互通信的模式
librbd是一个访问rbd块存储的库,librados提供了RBD、Ceph FS和Radosgw三种存储接口,其中librbd就是利用librados与RBD进行交互的,librbd主要用于为虚拟机提供块设备
大多数使用场景中是基于QEMU/KVM通过librbd的方式,提到虚拟化就自然想到热度狠高的云计算,需拟化是云计算的核心,云计算的IaaS层一般对外提供虚拟机资源服务,比如火热的OpenStack等提供基础设施堆栈的开源软件框架,RBD块设备用于虚拟机的系统卷、数据卷,根据Ceph RBD的分层功能,还可以方便实现基于COW的克隆技术,还有基于RBD的快照、导入、导出和扩容等功能
#创建存储池 [cephadm@xiaomao ceph-cluster]$ ceph osd pool create kube 64 64 pool 'kube' created #在kube存储池上启用rbd功能 [cephadm@xiaomao ceph-cluster]$ ceph osd pool application enable kube rbd enabled application 'rbd' on pool 'kube' #初始化rbd [cephadm@xiaomao ceph-cluster]$ rbd pool init kube #创建rbd镜像 #第一种创建方法 [cephadm@xiaomao ceph-cluster]$ rbd create --pool kube --image vol01 --size 2G #查看镜像是否创建成功 [cephadm@xiaomao ceph-cluster]$ rbd ls --pool kube vol01 #第二种创建方法 [cephadm@xiaomao ceph-cluster]$ rbd create --size 2G kube/vol02 [cephadm@xiaomao ceph-cluster]$ rbd ls --pool kube vol01 vol02 #查看镜像文件的详细信息 [cephadm@xiaomao ceph-cluster]$ rbd ls --pool kube -l NAME SIZE PARENT FMT PROT LOCK vol01 2 GiB 2 vol02 2 GiB 2 #第二种方法 [cephadm@xiaomao ceph-cluster]$ rbd info --pool kube vol01 rbd image 'vol01': size 2 GiB in 512 objects order 22 (4 MiB objects) snapshot_count: 0 id: acd0fc78a781 block_name_prefix: rbd_data.acd0fc78a781 format: 2 features: layering, exclusive-lock, object-map, fast-diff,deep-flatten op_features: flags: create_timestamp: Thu Jul 9 22:41:28 2020 access_timestamp: Thu Jul 9 22:41:28 2020 modify_timestamp: Thu Jul 9 22:41:28 2020
通过上面的 info 输出信息我们可以看到,当前2G的镜像,包含有512个object,每个object是4M,order类型是22,即2的2次方,块存储的前缀是 rbd_data.acd0fc78a781 开头,features提供了5个特性:layering, exclusive-lock, object-map, fast-diff, deep-flatten,由于CentOS 7.x有些特性还不支持,因此需要将其先禁用
#禁用rbd块的特性
[cephadm@xiaomao ceph-cluster]$ rbd feature disable kube/vol01 object-map fast-diff deep-flatten
#禁用后再次查看
[cephadm@xiaomao ceph-cluster]$ rbd info --pool kube vol01
rbd image 'vol01':
size 2 GiB in 512 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: acd0fc78a781
block_name_prefix: rbd_data.acd0fc78a781
format: 2
features: layering, exclusive-lock
#xiaomao5充当客户端 [root@xiaomao5 ~]# yum -y install ceph-common #创建认证账号 #client.kube 账号名(kube) pool存储池 -o ceph.client.kube.keyring:保存的文件名 [cephadm@xiaomao ceph-cluster]$ ceph auth get-or-create client.kube mon 'allow r' mds 'allow rw' osd 'allow rwx pool=kube' -o ceph.client.kube.keyring #查看账号信息 [cephadm@xiaomao ceph-cluster]$ ceph auth get client.kube exported keyring for client.kube [client.kube] key = AQDjOAdfFB5MNRAAnIkXJr3Bo5G4UWEb3gfOcA== caps mds = "allow rw" caps mon = "allow r" caps osd = "allow rwx pool=kube" #客户端挂载RBD的两个条件 #复制账号信息到客户端 [cephadm@xiaomao ceph-cluster]$ scp ceph.client.kube.keyring root@xiaomao5:/etc/ceph/ #复制ceph.conf配置文件到客户端 [cephadm@xiaomao ceph-cluster]$ scp ceph.conf root@xiaomao5:/etc/ceph/
#使用客户端连接ceph集群 # --user 普通用户 [root@xiaomao5 ~]# ceph --user kube -s cluster: id: eff8141a-a26b-498f-9608-879c2565496d health: HEALTH_OK services: mon: 3 daemons, quorum xiaomao4,xiaomao5,xiaomao (age 100m) mgr: xiaomao4(active, since 2h), standbys: xiaomao, xiaomao5 osd: 6 osds: 6 up (since 84m), 6 in (since 84m) data: pools: 1 pools, 64 pgs objects: 7 objects, 213 B usage: 6.0 GiB used, 354 GiB / 360 GiB avail pgs: 64 active+clean
#RBD块映射
[root@xiaomao5 ~]# rbd --user kube map kube/vol01
/dev/rbd0
#开始挂载
[root@xiaomao5 ~]# mkfs.xfs /dev/rbd0
[root@xiaomao5 ~]# mount /dev/rbd0 /mnt/
[root@xiaomao5 ~]# cd /mnt/
[root@xiaomao5 mnt]# cp /etc/fstab /mnt/
[root@xiaomao5 mnt]# ls
fstab
#查看是否挂载成功
[root@xiaomao5 mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 2.0G 33M 2.0G 2% /mnt
#查看块映射信息
[root@xiaomao5 ~]# rbd showmapped
id pool namespace image snap device
0 kube vol01 - /dev/rbd0
#卸载块设备
[root@xiaomao5 ~]# rbd unmap /dev/rbd0
#调整RBD块的大小
[cephadm@xiaomao ceph-cluster]$ rbd resize -s 5G kube/vol01
Resizing image: 100% complete...done.
[cephadm@xiaomao ceph-cluster]$ rbd ls -p kube -l
NAME SIZE PARENT FMT PROT LOCK
vol01 5 GiB 2
vol02 2 GiB 2
#删除镜像
[cephadm@xiaomao ceph-cluster]$ rbd rm kube/vol02
#查看镜像是否删除成功
[cephadm@xiaomao ceph-cluster]$ rbd ls -p kube -l
NAME SIZE PARENT FMT PROT LOCK
vol01 5 GiB 2
#把镜像放进回收站
[cephadm@xiaomao ceph-cluster]$ rbd trash move kube/vol01
#再次查看镜像是否回收成功
[cephadm@xiaomao ceph-cluster]$ rbd ls -p kube -l
#显示回收站中的镜像文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。