一、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入门到精通-Ceph之对象存储网关RADOS Gateway(RGW)相关推荐

  1. Ceph入门到精通-Ceph PG状态详细介绍(全)

    本文主要介绍PG的各个状态,以及ceph故障过程中PG状态的转变. Placement Group States(PG状态) creating Ceph is still creating the p ...

  2. 十三.SpringCloudAlibaba极简入门-集成阿里云OSS对象存储

    前言 因为在搞项目,需要对接一下OSS,所以一时兴起就做一下整理,本文章讲述的是如何使用阿里云的对象存储作为文件服务器,您需要登录阿里云,注册一个账号. 1.注册登录阿里云 省略- 2.开通OSS对象 ...

  3. Ceph入门到精通-rados bench性能基准测试

    Ceph 包含 rados bench 命令,用于对 RADOS 存储集群执行性能基准测试.命令将执行写入测试和两种类型的读取测试.在测试读写性能时使用 --no-cleanup 选项.默认情况下,r ...

  4. 六、Scala从入门到精通一一面对对象编程(初级)

    目录 6.面向对象编程 6.1.类与对象 6.1.1.Scala语言是面向对象的 6.1.2.快速入门-面向对象的方式解决养猫问题 6.1.3.类与对象的区别和联系 6.1.4.如何定义类 6.1.5 ...

  5. y40.第三章 Kubernetes从入门到精通 -- k8s 资源对象(十三)

    5.3 k8s的牛鼻子–API 5.3.1 k8s的几个重要概念 对象 用k8s是和什么打交道?K8s声明式API yaml文件 怎么打交道?调用声明式API 必需字段 怎么声明? 1.apiVers ...

  6. ceph的数据存储之路(10) -----ceph对象存储的ls命令实现及思考

    2019独角兽企业重金招聘Python工程师标准>>> 更新:2016-10-19--------------------------------------- 前面更新的内容可能略 ...

  7. Ceph对象存储的使用

    Ceph对象存储 RadosGW的使用 一.介绍 作为文件系统的磁盘,操作系统不能直接访问对象存储.相反,它只能通过应用程序级别的API访问. Ceph是一种分布式对象存储系统,通过Ceph对象网关提 ...

  8. Kubernetes 集群基于 Rook 的 Ceph 存储之块设备、文件系统、对象存储

    文章目录 1.Rook & Ceph 介绍 2.环境.软件准备 3.Block 块存储 3.1.创建 CephBlockPool.StorageClass 3.2.验证并测试 4.File S ...

  9. Ceph 认证授权和RBD块存储、对象存储使用(三)

    RBD块存储 RBD介绍 1.RBD是Ceph分布式集群中最常用的存储类型 2.块是一个有序字节,普通的一个块大小为512字节,基于块的存储是最常见的存储方式,比如常见的硬盘.软盘和CD光盘等,都是存 ...

最新文章

  1. CentOS7.X的系统管理、安全设置及系统优化思路
  2. Spring Security 实战干货: RBAC权限控制概念的理解
  3. 使用ifconfig取出网卡eth0的ip地址-看看你有多少方法 ?
  4. 多进程多线程GDB调试 (转)
  5. Linux操作_常用命令操作练习
  6. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。
  7. U3D 脚本添加和获得对象
  8. 通过JDBC和Hibernate对Clob和Blob的操作
  9. cesium 加载科技感
  10. 131. 理解MVC
  11. 解决IDEA导入项目后无法运行的问题
  12. 【邢不行|量化小讲堂系列48-实战篇】听说今天融资盘爆仓了?来看看融资数据在量化投资中的作用
  13. 中国硬件在环市场趋势报告、技术动态创新及市场预测
  14. 猫哥教你写爬虫 042--session的用法
  15. CyberArk被评为2020年Gartner特权访问管理魔力象限的领导者
  16. 国内的知名产品及其开发语言v0.0.1
  17. Downloads Help 下载帮助
  18. Android wifi密码 源码,Android 修改WiFi热点的默认SSID和密码
  19. 网上流行护眼色的RGB值和颜色代码
  20. 亚马逊html添加特殊符号,亚马逊SES中的特殊字符

热门文章

  1. 计算机毕业设计ssm网上私厨到家服务平台dp28s系统+程序+源码+lw+远程部署
  2. 2020年焊工(高级)模拟试题及焊工(高级)模拟考试
  3. 基于java的网上水果销售管理系统
  4. 分析思维框架:66法则与SQVID原则
  5. 计算机网络学习(二)物理层
  6. verilog的代码片段在GVIM/VIM中的使用——:ab 配置使用(定制自己的coding)
  7. OpenLayers 6.13 新特性
  8. 博图14软件安装顺序_博图软件安装顺序 为什么博途用的人不多
  9. 关于PlatformIO开发 Arduino,自定义库的设置
  10. 微信小程序地图组件和相机组件实现基于location的AR效果的尝试(失败)