ceph集群---使用RBD块存储


块存储接口是一种主流的存储访问接口,也是常见的存储形态,比如服务器下的/dev/sdx都是块存储设备。你可以像使用磁盘一样来使用Ceph提供的块存储设备。

在创建块存储设备之前,先创建一个池。在创建池之后,对存储进行定义,并创建属于该池的块存储设备。

创建和删除池

查看池
在这里插入图片描述

创建池rbd-bak ,包含24个PG
删除池的时候需要将池的名称写两次,并且加上 --yes-i-really-really-mean-it参数

在这里插入图片描述

可以直接向池中写文件
在这里插入图片描述
查看pg_num和pgp_num,副本数size大小
在这里插入图片描述

RBD设备的配置及使用

创建完池之后,可以在池中创建rbd设备,设备大小可以指定。

[root@ceph-1 ~]# rbd create rbd-bak/image1 --size=256M
[root@ceph-1 ~]# rbd info rbd-bak/image1

在这里插入图片描述
块设备创建完毕后保存在池中。如果想要使用,就需要在客户端执行映射操作。
rbd map时候,exclusive-lock, object-map, fast-diff, deep-flatten的features不支持,因此需要先disable,否则会提示RBD image feature set mismatch报错信息
在这里插入图片描述

修改rbd块设备特征

在这里插入图片描述
在这里插入图片描述
BD块设备已映射到本地的/dev/rbd0设备上,可以对其格式化并挂载文件系统
在这里插入图片描述

写文件测试:

在这里插入图片描述
通过rbd info可以看到块设备存储对象的前缀为rbd_data.1094238e1f29,即存储被切割为多个object,object的前缀以rbd_data.1094238e1f29开头,可以通过rados查看存储池中的obejct,这些object会随着真实使用空间的增长而自动增长
在这里插入图片描述

在这里插入图片描述
可以在rbd映射的磁盘中写入更多的数据,然后再通过rados查看object的情况,会发现创建了更多的object用于存储数据。object最大数量不会超过2560个,即10G(每个object 4M*2560)

然后取消挂载、取消映射的命令如下:
在这里插入图片描述

RBD快照

为rbd块设备创建快照

rbd snap create rbd/image2@v1

然后映射快照设备
原设备映射为/dev/rbd0
快照设备映射为/dev/rbd1
在这里插入图片描述
设置设备为只读设备:

[root@ceph-1 ~]# blockdev  --getro /dev/rbd0
0
[root@ceph-1 ~]# blockdev  --getro /dev/rbd1
1

快照设备和原始设备使用相同的UUID ,
如果需要同时挂载 /dev/rbd0 和 /dev/rbd1,那么方法一是:使用nouuid选项

在这里插入图片描述在这里插入图片描述
方法二是先取消挂载原设备,再挂载快照
在这里插入图片描述 -o noatime: 不更新文件访问时间
使用快照还原rbd设备中的内容

[root@ceph-2 ~]# rbd showmapped
id pool image  snap device
0  rbd  image2 -    /dev/rbd0
1  rbd  image2 v1   /dev/rbd1

在这里插入图片描述
删除快照
删除快照、取消挂载、取消映射

[root@ceph-2 ~]# umount /snap
[root@ceph-2 ~]# rbd snap rm rbd/image2@v1
[root@ceph-2 ~]# rbd snap ls rbd/image2
[root@ceph-2 ~]# rbd showmapped
id pool image  snap device
0  rbd  image2 -    /dev/rbd0
1  rbd  image2 v1   /dev/rbd1
[root@ceph-2 ~]# rbd unmap /dev/rbd1
[root@ceph-2 ~]#
[root@ceph-2 ~]# umount /mnt
[root@ceph-2 ~]# rbd unmap /dev/rbd0
[root@ceph-2 ~]#
[root@ceph-2 ~]# rbd showmapped
[root@ceph-2 ~]#

RBD块设备的克隆

在这里插入图片描述在这里插入图片描述取消映射、删除克隆、取消快照的保护

[root@ceph-2 ~]# rbd unmap /dev/rbd0
[root@ceph-2 ~]#
[root@ceph-2 ~]# rbd rm rbd/clone1
Removing image: 100% complete...done.
[root@ceph-2 ~]#
[root@ceph-2 ~]# rbd snap unprotect rbd/image2@v1
[root@ceph-2 ~]#

RBD 块设备数据的导出和导入

RBD块设备数据的导入、导出常常用于块设备的简单备份和恢复。

下面简单模拟一下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用ceph块的两种途径

通过Kernel Module

创建了rbd设备之后,把它映射(map)到内核中,成为一个虚拟的块设备。这时这个块设备同其他通用块设备一样,设备文件一般为/dev/rbd0。后续直接使用这个块设备文件就可以了。可以把/dev/rbd0格式化后挂载到某个目录,也可以直接作为裸设备进行使用。

创建rbd块设备
在这里插入图片描述映射rbd块设备
在这里插入图片描述
格式化映射后的块设备并挂载文件系统
在这里插入图片描述生成文件测试
在这里插入图片描述
先取消挂载mount,再取消映射
在这里插入图片描述

通过librbd

创建了rbd设备后,通过librbd、librados库访问和管理块设备。这种方式直接调用了librbd提供的借口,实现了对rbd设备的访问和管理,不会在客户端产生块设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以通过以下步骤使用rook-ceph的inline模式: 1. 在rook-ceph集群中创建一个存储池。 2. 在存储池中创建一个存储桶。 3. 在存储桶中上传您的数据。 4. 在应用程序中使用rook-ceph的inline模式来访问您的数据。 请注意,使用rook-ceph的inline模式需要一些额外的配置和设置,具体取决于您的应用程序和使用情况。建议您查阅rook-ceph的官方文档以获取更详细的信息和指导。 ### 回答2: 在使用rook-ceph的inline模式时,首先需要安装和配置rook-ceph集群。确保你已经部署了rook-ceph集群,并且处于正常运行状态。 使用inline模式可以将ceph存储资源以块设备的形式直接暴露给容器,容器可以直接使用这些块设备存储数据。下面是使用rook-ceph的inline模式的步骤: 1. 创建一个新的命名空间,并将其设置为活动命名空间。 ```shell kubectl create namespace my-namespace kubectl config set-context --current --namespace=my-namespace ``` 2. 创建一个ceph block pool。 ```shell kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/mon/pool.yaml ``` 3. 创建一个storage class,并使用inline模式指定rook-ceph存储类。 ```shell kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/csi/rbd/storageclass.yaml ``` 4. 创建一个pvc(Persistent Volume Claim)来申请存储资源。 ```shell kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/csi/rbd/pvc.yaml ``` 5. 创建一个pod,并将上一步骤中创建的pvc挂载到容器中。 ```shell kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/csi/rbd/pod-inline.yaml ``` 通过这些步骤,你就可以将rook-ceph存储资源以块设备的形式直接使用在容器中了。请确保你已经正确安装和配置了rook-ceph集群,并正确创建了相关的存储资源和配置文件。 ### 回答3: Rook是一个用于在Kubernetes集群中部署、管理和运行存储系统的工具。它可以与Ceph集群集成,提供了许多不同的存储选项。其中一种选项是使用Rook-Ceph的inline模式。 使用Rook-Ceph的inline模式可以让应用程序更方便地访问和使用存储资源。以下是使用该模式的一些步骤和注意事项: 1. 部署Rook-Ceph:首先,在Kubernetes集群使用Rook部署Ceph集群。可以按照Rook文档提供的指南进行操作,确保Rook和Ceph成功运行。 2. 创建存储类:使用kubectl命令创建一个存储类,以定义Ceph存储资源访问的规则。可以在存储类中指定inline模式以启用该功能。 3. 配置卷模板:在需要使用存储资源的应用程序配置文件中,添加一个卷模板,并引用上一步中创建的存储类。在卷模板中,可以定义访问模式、大小和其他属性。 4. 应用程序配置:编辑应用程序的配置文件,将卷模板应用于应用程序的存储需求。可以指定挂载点、卷的名称和其他参数。 使用Rook-Ceph的inline模式还需要注意一些事项: - 内联模式使用单个Ceph卷为多个Pod服务多个实例,因此需要小心管理和分配存储资源以避免性能瓶颈。 - 在使用内联模式时,应该注意保护数据的一致性和完整性。可以通过备份和恢复机制来保护数据,以确保在故障发生时能够快速恢复。 - 在创建存储类和配置卷模板时,也应考虑到应用程序的性能需求和数据访问模式。使用适当的存储类型、数据复制和网络设置等关键参数配置来优化性能。 总之,使用Rook-Ceph的inline模式可以让应用程序更方便地访问和使用Ceph存储资源。但是要注意数据的一致性和完整性,并根据实际需求进行配置和管理,以获得最佳性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值