目录
一、环境准备
二、什么是块存储
三、创建块共享
1、查看存储池
2、创建镜像、查看镜像
3、镜像扩容、缩容
四、客户端通过KRBD访问共享镜像
1、客户端安装
2、客户端配置
3、客户端获取镜像
4、客户端写入数据
五、快照
1、查看、创建快照
2、还原快照
六、客户端卸载网络磁盘
1、卸载磁盘
2、取消磁盘映射
一、环境准备
Ceph集群搭建参照:Ceph集群部署_桂安俊@kylinOS的博客-CSDN博客
以下Ceph存储实验环境均基于上述Ceph集群环境搭建。
二、什么是块存储
- Ceph块设备也叫做RADOS块设备,全称:RADOS Block Device;简称:RBD;
- RBD提供了企业功能,如快照、COW克隆等等;
三、创建块共享
1、查看存储池
所有的块设备必须在一个存储池中,ceph默认有一个rbd池:
# 在任意一个node节点执行,查看所有存储池
ceph osd lspools
2、创建镜像、查看镜像
块设备也叫镜像,每创建一个镜像,对应的就是一个块设备,在服务端创建完镜像,客户端就可以访问这个镜像(块设备):
#在任意node节点操作#创建镜像写法一,不指定存储池,那默认就放到rbd默认存储池下
#create为创建,jacob为自定义镜像名称,--image-feature后面跟这个镜像支持哪些功能,layering指支持分层功能(允许快照和写时复制),--size 10G为指定镜像存储大小
rbd create jacob --image-feature layering --size 10G#创建镜像写法二,指定存储池,那默认就放到rbd默认存储池下
#在rbd存储池下创建名为nb的镜像块设备,大小为10G
rbd create rbd/nb --image-feature layering --size 10G
【注】:如上创建镜像的时候,创建的镜像存储大小可以大于实际总存储池大小,存储池不会立刻分配全部大小给镜像,只是当实际写入存储内容超过存储池大小是,会写入失败,等后面存储池扩容时,就可以继续成功写入。
查看镜像:
rbd list #查看所有镜像rbd info jacob #查看jacob镜像详细信息
3、镜像扩容、缩容
(1)扩容
rbd resize jacob --size 15G #从原来的10G扩容至15Grbd info jacob #查看jacob镜像详情
(2)缩容
#因为缩容会有丢数据风险,所以这里比扩容多了一个--allow-shrink参数
rbd resize jacob --size 7G --allow-shrink #查看缩容后大小
rbd info jacob
四、客户端通过KRBD访问共享镜像
1、客户端安装
客户端需要安装ceph-common软件包:
yum install ceph-common -y
如果安装没找到ceph-common包,可能是因为没有挂载ceph源,ceph源挂载参照Ceph集群部署_桂安俊@kylinOS的博客-CSDN博客,本文所有环境均基于前文Ceph集群部署完成。
2、客户端配置
客户端要想访问到ceph共享存储,需要完成以下2步:
- 拷贝配置文件:否则不知道集群在哪
- 拷贝连接密钥:否则无连接权限
#随便拷贝一份node节点的ceph配置文件和keying密钥文件,每个节点配置文件和密钥文件都一样
scp root@node1:/etc/ceph/ceph.conf /etc/ceph/scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
3、客户端获取镜像
#获取jacob共享
rbd map jacoblsblk #查看客户端本地多了一个磁盘
#上面还创建了一个nb镜像,也可以获取
rbd map nblsblk
查看磁盘和ceph集群对应关系:
rbd showmapped
4、客户端写入数据
客户端获取到磁盘后,就可以和本地磁盘一样使用,可以格式化、挂载、写入数据等
#格式化为xfs格式
mkfs.xfs /dev/rbd0#挂载
mount /dev/rbd0 /mnt#写入数据
echo "test" > /mnt/test.txt
五、快照
ceph支持存储快照,前文提过ceph是默认是3副本,那为什么还要做快照?副本概念是预防存储设备故障时保障数据安全(数据写入时存3份),解决的是单点故障的问题。但如果不是设备故障,是人为误删,那副本概念就不能实现数据恢复,而定期做快照,可以保证数据误删的时候进行快照恢复。
1、查看、创建快照
#node1操作
#查看jacob的快照,默认没有快照
rbd snap ls jacob #创建快照,为jacob镜像创建快照,快照名称为jacob-snap1
rbd snap create jacob --snap jacob-snap1#查看快照
rbd snap ls jacob
2、还原快照
模式数据丢失,在客户端删除数据:
#在客户端操作,将之前创建的txt删除
rm -rf /mnt/test.txt#快照恢复之前,必须要将客户端镜像存储先卸载,不支持在线数据恢复
umount /mnt
回滚快照,还原数据(在node节点操作):
# 在node节点还原快照
rbd snap rollback jacob --snap jacob-snap1
客户端重新挂载分区,检查数据是否恢复(在client端操作):
mount /dev/rbd0 /mntcat /mnt/test.txt
六、客户端卸载网络磁盘
(以下均在client操作)
1、卸载磁盘
#像普通存储一样umount取消挂载
umount /mnt
2、取消磁盘映射
#取消前先查看一下
rbd showmapped
#取消映射
rbd unmap /dev/rbd0#查看是否取消成功
rbd shwmapped
可以看到原来的jacob rbd0已经没有了。