ceph的rbd使用和理解(全)

Ceph支持一个非常好的特性,以COW(写时复制)的方式从RBD快照创建克隆,在Ceph中被称为快照分层。分层特性允许用户创建多个CEPH RBD克隆实例。这些特性应用于OpenStack等云平台中,使用快照形式保护ceph RBD 镜像,快照是只读的,但COW克隆是完全可以写 ,可以多次来孵化实例,对云平台来说是非常有用的。

    Ceph RBD镜像有format-1  和 format-2两种类型,RBD支持这两种类型,但是分层特性COW克隆特性只支持format-2镜像,默认RBD创建的镜像是format-1。(这个在克隆的时候特别重要)

先看看自己的Linux内核支不支持rbd块设备

modprobe rbd

如果有错误信息说明内核不支持,那你就先去升级一下内核吧~

没有则继续!

在一个ceph集群中,我们可以创建rbd块设备来进行使用。先看一下我的pool

我们这里新建了一个test的pool,以下的块设备都是建立在test这个pool中。我们看到这个test的pool是0KB的。

1首先先创建一个块设备

通过rbd create (pool_name)/(rbd_name) --size   xxxxxMB就可以创建一个块设备了,这里有两个知识点。

一个是斜杠 / 前面的是这个块设备建立在的pool的名字,后面是这个块设备的名字(自己定义的),我们在test这个pool上建立了一个叫myrbd1的块设备,如果没有斜杠 / 则默认建立在rbd这个pool上(重要!!!!)

还有一个是这个size的大小,这个大小可以超过你实际pool的大小,这个叫做瘦分配,也叫超卖和按需分配。创建块之后可以通过指令rbd resize test/myrbd1 --size 51200 --allow-shrink来动态的更改。如下

2.映射改块设备到你的机器

rbd map test/myrbd1

得到块设备的映射/dev/rbd1

这个时候你就可以像操作机器上的 块设备一样操作该设备了。

3.挂载并且使用

如上,写入文件系统以后就可以挂载到目录上去啦!

然后我们 写点东西进去试试

看到了吗,我写了100M的文件进目录,ceph的test这个pool相应的使用了100M的数据,也就是对/root/test/目录的操作将会直接写到ceph集群的test这个pool中,然后写到ceph的osd上。

4.创建快照

rbd snap create --snap mysnap test/myrbd1

如上创建了一个myrbd1的 快照,快照的名字叫做mysnap,接下来我们试试快照的回滚功能。

5.回滚

上一步我们创建了一个100M的空文件

我们先删除该文件然后卸载块, 然后进行回滚。

重新挂载/dev/rbd1然后发现!!file这个文件又出来啦~~

6.模板与克隆

先看看该块设备支不支持创建快照模板

 image-format 必须为2

创建改块设备也可以这样设置

rbd create test/myrbd3 --size 102400 --image-format 2

把该块做成模板,首先要把做成模板的快照做成protect(重要!!!)

rbd snap protect test/myrbd1@mysnap

(通过rbd snap unprotect test/myrbd1@mysnap可以去掉这个保护,但是这样的话就 不能克隆了)

然后可以利用这个快照来当模板来克隆了,我们克隆一个叫myrbd2的块 出来试试

先umount  myrbd1这个块。

umount /dev/rbd1

然后克隆一个在test的pool的myrbd2的块。

rbd clone test/myrbd1@mysnap test/myrbd2

如上看到test这个池上有两个块设备了,一个是原来的myrbd1,一个是通过myrbd的镜像模板克隆出来的myrbd2。

接下来我们看看这个myrbd2看看和myrbd1有什么不一样。

先映射myrbd2

rbd map test/myrbd2 

因为 是克隆myrbd1的,myrbd1上本来就有文件系统,所以myrbd2上也有文件系统,直接挂载就好了

看到了吗!!!!myrbd2的内容上也是和myrbd1是相同的!!!(因为是克隆来的嘛)

看一下myrbd2信息

这个时候的myrbd2还是依赖myrbd1的镜像mysnap的,如果myrbd1的mysnap被删除或者怎么样,myrbd2也不能够使用了,要想独立出去,就必须将父镜像的信息合并flattern到子镜像中,

这样myrbd2就独立于myrbd1了

可以通过如下方法删除镜像模板了

这个时候就已经删除镜像模板了。

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
当我们遇到Ceph客户端使用RBD(Rados Block Device,一种在Ceph集群上提供块存储的服务)时卡住的情况,可能有几个原因导致。以下是可能的解决方案: 1. 检查网络连接:首先需要确保Ceph客户端与Ceph集群之间的网络连接正常。可以通过ping命令或其他网络测试工具来验证连接的可靠性。如果发现网络问题,需要解决它们,例如修复物理网络故障或调整网络配置。 2. 检查集群状态:使用Ceph集群监控工具(如Ceph Dashboard或Ceph命令行工具)来检查集群的状态。确保集群中的所有节点都正常运行,并且没有任何错误或警告存在。如果发现问题,需要根据相应的错误信息来解决。 3. 检查硬件问题:如果Ceph客户端卡住,可能是由于底层存储硬件的故障。首先,检查磁盘驱动器、网络适配器和硬件接口的状态。确保它们都正常工作并与服务器正确连接。如果需要,可以更换故障硬件以解决问题。 4. 调整客户端配置:根据具体情况,可能需要调整Ceph客户端的配置参数。例如,可以增加读写超时时间、调整并发连接数或增加RBD缓存的大小等。这些配置参数的修改可以通过编辑相应的配置文件(如ceph.conf或rbdmap文件)来实现。 5. 更新软件版本:卡住的问题有可能是由于软件版本的问题导致的。检查Ceph客户端和Ceph集群的软件版本,确保它们都是最新的稳定版本。升级软件版本可能修复已知的问题和漏洞,改进性能和稳定性。 总之,当Ceph客户端使用RBD卡住时,我们需要逐步排查可能的问题,并在每个步骤上采取相应的解决方案。这需要综合考虑网络、集群状态、硬件、软件版本等各个方面,并根据具体情况采取适当的措施来解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值