如果你知道了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数据操作。

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集群里面自动生成了如下存储池:

通过
rados ls –p {poolname}可以查看存储池中都有哪些对象,可以看出,索引池和数据池都是空的:

接下来,我们通过s3cmd创建一个bucket:
s3cmd mb s3://bucket1
可以看出,在索引池zone-dc1.rgw.buckets.index中生成了很多个对象.这些索引对象是用来存储桶索引信息的。而数据池zone-dc1.rgw.buckets.data中仍然没有对象。
接下来,我们上传一个10MB的对象:

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

可以看到数据池多出来了几个对象,这是因为RGW将用户数据进行条带化,然后才存储到RADOS中的。
我们可以通过命令查看对象的状态信息:
rados -p {pool-name} stat2 {oid}
可以看出,用户文件被条带化成了4MB的大小。
接下来,我们通过如下命令列出对象的xattr信息:
rados -pzone-dc1.rgw.buckets.data listxattr {oid}
可以看出,通过s3cmd上传的对象下,包含了一系列的xattr扩展属性。
我们下面命令看一下这些xattr存储的信息:
rados -pzone-dc1.rgw.buckets.data getxattr {oid} {xattr_name}
当通过s3cmd上传对象时,会记录对象的md5值,并作为etag存储在对象xattr中,可以看到,上图的etag和md5一致。
最后,我们看一下omap是怎么存的:
当对象被put到bucket中时,会在索引对象的omap中存储对象的列表信息。
我们通过下面命令看一下索引对象的omap列表:
rados -pzone-dc1.rgw.buckets.index listomapkeys {oid}
我们在bucket的某个索引片对象的omap中找到了file1的索引信息:

以上,我们看到了RADOS对象存储的数据,扩展属性和omap。
5.提两个开放性问题:
一. RADOS能存data,xattr,omap,那RADOS能做什么?
二 为什么创建一个bucket,会生成那么多个索引对象?
我们将继续研究Ceph架构和代码。
感谢您的关注~!

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

被折叠的 条评论
为什么被折叠?



