• Ceph块存储


    目录

    一、环境准备

    二、什么是块存储

    三、创建块共享

    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池

    1. # 在任意一个node节点执行,查看所有存储池
    2. ceph osd lspools

    2、创建镜像、查看镜像

    块设备也叫镜像,每创建一个镜像,对应的就是一个块设备,在服务端创建完镜像,客户端就可以访问这个镜像(块设备):

    1. #在任意node节点操作
    2. #创建镜像写法一,不指定存储池,那默认就放到rbd默认存储池下
    3. #create为创建,jacob为自定义镜像名称,--image-feature后面跟这个镜像支持哪些功能,layering指支持分层功能(允许快照和写时复制),--size 10G为指定镜像存储大小
    4. rbd create jacob --image-feature layering --size 10G
    5. #创建镜像写法二,指定存储池,那默认就放到rbd默认存储池下
    6. #在rbd存储池下创建名为nb的镜像块设备,大小为10G
    7. rbd create rbd/nb --image-feature layering --size 10G

    【注】:如上创建镜像的时候,创建的镜像存储大小可以大于实际总存储池大小,存储池不会立刻分配全部大小给镜像,只是当实际写入存储内容超过存储池大小是,会写入失败,等后面存储池扩容时,就可以继续成功写入。

    查看镜像:

    1. rbd list #查看所有镜像
    2. rbd info jacob #查看jacob镜像详细信息

    3、镜像扩容、缩容

    (1)扩容

    1. rbd resize jacob --size 15G #从原来的10G扩容至15G
    2. rbd info jacob #查看jacob镜像详情

     (2)缩容

    1. #因为缩容会有丢数据风险,所以这里比扩容多了一个--allow-shrink参数
    2. rbd resize jacob --size 7G --allow-shrink
    3. #查看缩容后大小
    4. rbd info jacob

    四、客户端通过KRBD访问共享镜像

    1、客户端安装

    客户端需要安装ceph-common软件包:

    yum install ceph-common -y

    如果安装没找到ceph-common包,可能是因为没有挂载ceph源,ceph源挂载参照Ceph集群部署_桂安俊@kylinOS的博客-CSDN博客,本文所有环境均基于前文Ceph集群部署完成。

    2、客户端配置

    客户端要想访问到ceph共享存储,需要完成以下2步:

    • 拷贝配置文件:否则不知道集群在哪
    • 拷贝连接密钥:否则无连接权限
    1. #随便拷贝一份node节点的ceph配置文件和keying密钥文件,每个节点配置文件和密钥文件都一样
    2. scp root@node1:/etc/ceph/ceph.conf /etc/ceph/
    3. scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/

    3、客户端获取镜像

    1. #获取jacob共享
    2. rbd map jacob
    3. lsblk #查看客户端本地多了一个磁盘

    1. #上面还创建了一个nb镜像,也可以获取
    2. rbd map nb
    3. lsblk

     查看磁盘和ceph集群对应关系:

    rbd showmapped

    4、客户端写入数据

    客户端获取到磁盘后,就可以和本地磁盘一样使用,可以格式化、挂载、写入数据等

    1. #格式化为xfs格式
    2. mkfs.xfs /dev/rbd0
    3. #挂载
    4. mount /dev/rbd0 /mnt
    5. #写入数据
    6. echo "test" > /mnt/test.txt

    五、快照

    ceph支持存储快照,前文提过ceph是默认是3副本,那为什么还要做快照?副本概念是预防存储设备故障时保障数据安全(数据写入时存3份),解决的是单点故障的问题。但如果不是设备故障,是人为误删,那副本概念就不能实现数据恢复,而定期做快照,可以保证数据误删的时候进行快照恢复。

    1、查看、创建快照

    1. #node1操作
    2. #查看jacob的快照,默认没有快照
    3. rbd snap ls jacob
    4. #创建快照,为jacob镜像创建快照,快照名称为jacob-snap1
    5. rbd snap create jacob --snap jacob-snap1
    6. #查看快照
    7. rbd snap ls jacob

    2、还原快照

    模式数据丢失,在客户端删除数据:

    1. #在客户端操作,将之前创建的txt删除
    2. rm -rf /mnt/test.txt
    3. #快照恢复之前,必须要将客户端镜像存储先卸载,不支持在线数据恢复
    4. umount /mnt

    回滚快照,还原数据(在node节点操作):

    1. # 在node节点还原快照
    2. rbd snap rollback jacob --snap jacob-snap1

    客户端重新挂载分区,检查数据是否恢复(在client端操作):

    1. mount /dev/rbd0 /mnt
    2. cat /mnt/test.txt

    六、客户端卸载网络磁盘

    (以下均在client操作)

    1、卸载磁盘

    1. #像普通存储一样umount取消挂载
    2. umount /mnt

    2、取消磁盘映射

    1. #取消前先查看一下
    2. rbd showmapped

    1. #取消映射
    2. rbd unmap /dev/rbd0
    3. #查看是否取消成功
    4. rbd shwmapped

     可以看到原来的jacob rbd0已经没有了。

  • 相关阅读:
    路由器桥接设置(扩大wifi信号)
    【Spark | SparkSQL】
    (vue)适合后台管理系统开发的前端框架
    微带线的ABCD矩阵的推导、转换与级联-Matlab计算实例
    Java数组详解
    PostgreSql学习:体系结构
    黑客(网络安全)技术自学30天
    【flask入门系列】Flask-Script的使用
    MyBatis框架中各种参数类型绑定的方式
    打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战
  • 原文地址:https://blog.csdn.net/qq_28903377/article/details/128051129