架构
ceph radosgw(rgw)是ceph提供的对象存储服务,对外提供s3和swift两套API,API实现需要的各种特性都是基于rados来实现的,架构图如下:
image.png
图中第一层代表rgw对外提供的接口,第二层表示rgw作为对外API和底层rados的转换层,第三层表示rgw通过librados与rados集群进行交互,第四层表示rados集群的结构。
各部分的概念可以去ceph文档和s3文档方便得获得。
数据布局
以s3为例,说下rgw的整体数据布局。
rados存储组织
这边假设rados底层存储以使用的是默认的FileStore,假设FileStore底层是linux的ext4文件系统,那么最底层的存储方式就是一个ext4文件系统下的文件。所以其存储层次和位置如下所示:
pool
object
xattr
ext4文件属性(最大4KB)
omap
data
ext4文件内容
解释下:
rados以pool来组织数据,一个pool中包含大量object。
而一个object包含两部分内容,一部分是要存储的对象数据data,一部分是该对象的额外属性xattr。
对象的数据存储在ext文件的内容部分。
对象的额外属性可以有两个存储的部分:一个是ext4文件的属性部分,这部分往往受底层文件系统的约束,