3d object是什么文件_Ceph基础之RADOS能存什么?

本文深入探讨Ceph分布式存储系统的RADOS组件,解析其如何支持数据、扩展属性及omap存储,通过对象存储实例展示了数据如何条带化并存储于RADOS中。

如果你知道了RADOS能存什么,你就可以用Ceph做任何事情!!!

Ceph是一个统一的分布式存储系统,能够支持三种存储接口:

块存储:基于RBD模块

文件存储:对应MDS模块

对象存储:对应RGW模块


1.什么是RADOS呢?

RADOS全称Reliable Autonomic Distributed Object Store,实现数据分配、Failover等集群操作,上层的RBD、RGW和CephFS通过librados访问RADOS中的数据。

Ceph通过RADOS对象的方式存储数据,用户根据需要,将RADOS集群划分成逻辑存储池,在存储池中,数据以Object的方式存储,而RADOS存储池的数据存储在OSD上。

无论是对象存储,块存储,还是文件存储,数据都会通过librados接口写入到Ceph集群的存储池中。


2.RADOS可以做什么呢?

首先要明确下面几个概念:

Client端:这里指调用librados接口的模块,包括RBD,MDS,RGW。

存储池:是ceph存储集群的逻辑分区,用于存储对象

Object:Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据

OSD:  负责响应客户端请求返回具体数据的进程。一般情况下,每个硬盘对应一个OSD进程,一个Ceph集群一般都有很多个OSD

当Client端调用librados接口操作ceph集群的数据时,提供Object名称和存储池ID,即oid和pool_id,就可以实现对RADOS数据操作。

3284890e888b7b428973b4caa884084e.png


3.RADOS中的Object都能存什么东西呢?

首先,Object可以存数据【这不是废话么】,用户写一个文件,这个文件的数据就会以对象的方式存储在存储池中;

其次,Object可以存储对象的扩展属性,即xattr【有点意思】,与文件系统中的xattr概念基本类似,用户可以为Object创建自定义的扩展属性。

最后,Object可以存储Omap信息,omap是一种类似数据库的操作【这个厉害】,用于存储键值对,Key-Value以omap的形式存储在对象上。

在Bluestore中,omap和xattr都是存储在rocksdb中的。


4.我们以对象存储为例来研究RADOS中可以存什么

       首先,我们搭建一个ceph集群,配置RGW网关服务,并配置好s3cmd,具体操作方法可以参考《Ceph集群搭建》。

       完成环境搭建后,通过命令

rados lspools

    我们可以看到ceph集群里面自动生成了如下存储池:

093f40ec3a18211ecb60d1e51239e70e.png

通过

rados ls –p {poolname}

可以查看存储池中都有哪些对象,可以看出,索引池和数据池都是空的:

60a0ff03fb82679dcef5cd16a25c8b2e.png

接下来,我们通过s3cmd创建一个bucket:

s3cmd mb s3://bucket1

6adae2d677bf72f5e714d2531ad2d899.png

可以看出,在索引池zone-dc1.rgw.buckets.index中生成了很多个对象.这些索引对象是用来存储桶索引信息的。而数据池zone-dc1.rgw.buckets.data中仍然没有对象。

接下来,我们上传一个10MB的对象:

4e73a82a5eefda845e912c034a4ad9c9.png

再次查看存储池上的数据:

4d94075734b98f7444e97ef847072053.png

可以看到数据池多出来了几个对象,这是因为RGW将用户数据进行条带化,然后才存储到RADOS中的。

我们可以通过命令查看对象的状态信息:

rados -p {pool-name} stat2 {oid}

5028d202f50a0647f2515c959d7ba9d4.png

可以看出,用户文件被条带化成了4MB的大小。

接下来,我们通过如下命令列出对象的xattr信息:

rados -pzone-dc1.rgw.buckets.data listxattr {oid}

5d475c175eee897595be876015c21e93.png

可以看出,通过s3cmd上传的对象下,包含了一系列的xattr扩展属性。

我们下面命令看一下这些xattr存储的信息:

rados -pzone-dc1.rgw.buckets.data getxattr {oid} {xattr_name}

84a3af5a0608a3fcd9a121f8069b0595.png

当通过s3cmd上传对象时,会记录对象的md5值,并作为etag存储在对象xattr中,可以看到,上图的etag和md5一致。

最后,我们看一下omap是怎么存的:

当对象被put到bucket中时,会在索引对象的omap中存储对象的列表信息。

我们通过下面命令看一下索引对象的omap列表:

rados -pzone-dc1.rgw.buckets.index listomapkeys {oid}

6dc2ce3231be81436cfb4c4853fc07dd.png

我们在bucket的某个索引片对象的omap中找到了file1的索引信息:

e94f0cac168f0eb6ea887aa9507f6efc.png

以上,我们看到了RADOS对象存储的数据扩展属性omap


5.提两个开放性问题:

    一.    RADOS能存data,xattr,omap,那RADOS能做什么?

    二    为什么创建一个bucket,会生成那么多个索引对象?

我们将继续研究Ceph架构和代码。

感谢您的关注~!

3d7a620fb319511c6abb3a33b0c89e31.png

点击在看,关爱码农❤❤❤

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值