Ceph之对象存储网关RADOS Gateway(RGW)
一、Ceph整体架构及RGW在Ceph中的位置
1.Ceph的整体架构
Ceph是一个统一的、分布式的的存储系统,具有优秀的性能、可靠性和可扩展性。Ceph支持对象存储(RADOSGW)、块存储(RBD)和文件存储(CephFS)。一个Ceph存储集群至少包含一个Ceph monitor、Ceph manager及Ceph OSD(Object Store Daemon)。若要运行CephFS client,还需要Ceph metadata server。以下是Ceph的整体架构图:

由上面的架构图可以看到,对于RGW来说,它对上层APP扮演一个HTTP server,对下层RADOS集群作为RADOS client。RGW作为HTTP server接收和解析HTTP客户端请求,RGW作为RADOS client为对象存储应用提供数据存储的通道,将应用请求数据处理并发送至RADOS存储。
2.RGW的内部结构和处理流
以下是RGW的内部逻辑处理层级结构图:

HTTP 前端接收请求数据并保存在相应的数据结构中。
REST API 通用处理层从 HTTP 语义中解析出 S3 或 Swift 数据并进行一系列检查。
检查通过后,根据不同 API 操作请求执行不同的处理流程。
如需从 RADOS 集群中获取数据或者往 RADOS 集群中写入数据,则通过 RGW 与 RADOS 接口适配层调用 librados 接口将请求发送到 RADOS 集群中获取或写入相应数据。
二、RGW对外的的三类基础数据逻辑实体
RGW对外提供三种基础数据逻辑实体:
- 用户
- 存储桶
- 对象
1.用户
RGW兼容AWS S3和OpenStack Swift。RGW user对应S3 user,RGW user对应Swift Account,RGW subuser对应Swift user。
用户数据信息包含:
- 用户认证信息:S3(access key, secret key), Swift(secret key)
- 访问控制权限信息:包含操作访问权限(read、write、delete等)和访问控制列表ACL
- 用户配额信息:防止某些用户占用过多存储空间,根据用户付费情况配置存储空间。
2.存储桶(bucket)
存储桶是对象的容器,是为了方便管理和操作具有相同属性的一类对象而引入的一级管理单元。
存储桶信息包含:
- 基础信息:(保存在对应RADOS对象的数据部分)RGW关注的信息,包含bucket配额信息(最大对象数目或最大对象大小总和),bucket placement rule,bucket中的索引对象数目等等。
- 扩展信息:(保存在对应RADOS对象的扩展属性)对RGW透明的一些信息,如用户自定义的元数据信息。
对于bucket placement rule,

3.对象
RGW中的应用对象对应RADOS对象。应用对象上传分整体上传和分段上传,不同的上传方式应用对象对应RADOS对象的方式不同。
首先介绍三个概念:
- rgw_max_chunk_size:分块大小,RGW下发至RADOS集群的单个IO的大小。
- rgw_obj_stripe_size:条带大小,multipart除首对象外的分段其他大小
- class RGWObjManifest:管理应用对象和RADOS对象的对应关系。
3.1 整体上传
- 应用对象大小小于等于分块大小:用户上传的一个对象只对应一个 RADOS 对象,该 RADOS 对象以应用对象名称命名,应用对象元数据也保存在该 RADOS 对象的扩展属性中。
- 应用对象大小大于分块大小:应用对象被分解成一个大小等于分块大小的首对象,多个大小等于条带大小的中间对象,和一个大小小于等于条带大小的尾对象。首对象以应用对象名称命名,在 RGW 中将该对象称为head_obj,该对象的数据部分保存了应用对象前 rgw_max_chunk_size 字节的数据,扩展属性部分保存了应用对象的元数据信息和manifest信息。中间对象和尾对象保存应用对象剩余的数据,对象名称为
“shadow_” + “.” + “32bit 随机字符串” + “_” + “条带编号”,其中条带编号从1开始。

3.2 分段上传
RGW依照条带大小将应用对象的每一个分段分成多个RADOS对象,每个分段的第一个 RADOS 对象名称为:
“_multipart_” + “用户上传对象名称” + “分段上传ID” + “分段编号”
其余对象的名称为:“_shadow_” + “用户上传对象名称” + “分段上传ID” + “分段编号” + “_” + “条带编号”

当所有的分段上传结束后,RGW 会从 data_extra_pool 中的分段上传临时对象中读取各个分段信息,主要是各分段的 manifest 信息,组成一个 manifest;然后生成一个新的 RADOS 对象,即 head obj,用来保存分段上传的应用对象的元数据信息和各分段的manifest。
Ceph之对象存储网关RADOS Gateway(RGW)的更多相关文章
- Ceph对象存储网关中的索引工作原理<转>
Ceph 对象存储网关允许你通过 Swift 及 S3 API 访问 Ceph .它将这些 API 请求转化为 librados 请求.Librados 是一个非常出色的对象存储(库)但是它无法高效的 ...
- CEPH-4:ceph RadowGW对象存储功能详解
ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s clust ...
- Ceph对象存储 S3
ceph对象存储 作为文件系统的磁盘,操作系统不能直接访问对象存储.相反,它只能通过应用程序级别的API访问.ceph是一种分布式对象存储系统,通过ceph对象网关提供对象存储接口,也称为RADOS网 ...
- 一篇文章让你理解Ceph的三种存储接口(块设备、文件系统、对象存储)
“Ceph是一个开源的.统一的.分布式的存储系统”,这是我们宣传Ceph时常说的一句话,其中“统一”是说Ceph可以一套存储系统同时提供块设备存储.文件系统存储和对象存储三种存储功能.一听这句话,具有 ...
- ceph 007 双向池同步 rgw对象网关配置 s3对象存储
增量导入导出要基于快照 导出的过程当中害怕镜像被修改所以打快照.快照的数据是不会变化的 镜像级别的双向同步 镜像主到备,备到主.一对一 就算是池模式的双向同步,镜像也具有主备关系 双向同步,池模式 [ ...
- 010 Ceph RGW对象存储
一.对象存储 1.1 介绍 通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据 对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问 ...
- 006.Ceph对象存储基础使用
一 Ceph文件系统 1.1 概述 Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 . Ceph 对象存 ...
- 4.Ceph 基础篇 - 对象存储使用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485256&idx=1&sn=39e07215 ...
- 初试 Ceph 存储之块设备、文件系统、对象存储
转载自:https://cloud.tencent.com/developer/article/1010543 1.Ceph 存储介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件 ...
随机推荐
- 《TCP/IP详解卷1:协议》——第4章 ARP:地址解析协议(转载)
章节回顾: 1.引言 当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的.设备驱动程序从不检查IP数据报中的目的IP地址.地址解析为这两种不同 ...
- mysql 常用管理命令
常见的管理mysql命令 (1)用于选择在MySQL工作区指定的数据库(选择数据库): USE Databasename; (2)列出了MySQL数据库管理系统中的所有可访问的数据库: SHOW DA ...
- Python学习之-- IO 操作
阻塞IO / 非阻塞IO /IO多路复用 / 异步IO 说明:同步IO包含(阻塞IO / 非阻塞IO /IO多路复用),因为他们有个共同特性就是都需要内核态到用户态的一个等待. 基本概念解释,环境限定 ...
- Ultra-QuickSort--POJ2299(归并排序求逆序数对)
http://poj.org/problem?id=2299 归并排序:比如现在有一个序列[l,r),我们可以把这个序列分成两个序列[l,mid),[mid,r),利用递归按照上 述方法逐步缩小序列, ...
- MySQL事务及Spring事务管理
事务,是在数据库中用于保证数据正确性的一种机制,涉及到很多概念以及不同的情况,这里做一个总结 相关概念 事务四特性(ACID) 原子性(Atomicity,或称不可分割性):要么全部完成或者全部不完成 ...
- Google的Guava类库简介(转)
说明:信息虽然有点旧,至少可以先了解个大概. Guava是一个Google的基于Java的类库集合的扩展项目,包括collections, caching, primitives support, c ...
- 碧砚适合佳能328 4452 ICD520 4472 4450 硒鼓4700一体机墨盒4770
- [Zlib]_[0基础]_[使用zlib库压缩文件]
场景: 1. WIndows上没找到系统提供的win32 api来生成zip压缩文件, 有知道的大牛麻烦留个言. 2. zlib比較经常使用,编译也方便,使用它来做压缩吧. MacOSX平台默认支持z ...
- LightOj 1027 A Dangerous Maze【概率】
题目链接:http://www.lightoj.com/volume_showproblem.php? problem=1027 题意: 你面前有n个门,每一个相应一个数字,若为正xi.代表xi分钟后 ...
- M公司入职记
非常遗憾,我又跳槽了,到传说中的M公司,第一天就体会到了,神马叫差距. 要求9点30到,提前10分钟到了前台.前台MM懵懂的跟我说入职找人事,好吧. 电话联系相关人等,等到10点左右,被引导到一位不知 ...