一.Ceph对象存储的概念

ceph是一种分布式对象存储系统,通过ceph对象网关提供对象存储接口,也称为RADOS网关(RGW)接口。它构建在Ceph RADOS之上。RGW使用librgw(RADOS Gateway library)和librados,允许应用程序与ceph对象存储建立连接。RGW为应用程序提供了一个RESTful S3/swift兼容的接口,用于在ceph集群中以对象的形式存储数据。ceph还支持多租户对象存储,可以通过RESTful API访问。此外,RGW还支持ceph管理API,可以使用本机API调用来管理ceph存储集群。librados软件库非常灵活,允许用户应用程序通过C、C++、java、python和php绑定直接访问ceph存储集群。ceph对象存储还具有多站点功能,即灾难恢复提供解决方案。

根据架构图可以看出,对于RGW来说,它对于上层的APP来讲充当HTTP Server,对于下层的RADOS集群作为RADOS Client。RGW作为HTTP Server接收和解析HTTP客户端的请求,RGW作为RADOS Client为对象存储应用提供数据存储的通道,将应用请求数据处理并发送至RADOS中存储。

二.RGW对外的三类基础数据逻辑实体

  • 用户
  • 存储桶
  • 对象

2.1 用户

RGW兼容AWS S3和OpenStack Swift。RGW User对应S3 User,也对应Swift Account,RGW subuser对应Swift user。

用户数据信息包含:

  • 用户认证信息: S3(access key,secret key),Swift(secret key)
  • 访问控制权限信息: 包含操作访问权限(read、write、delete等)和访问控制列表
  • 用户配额信息: 防止某些用户占用过多存储空间,根据用户付费情况配置存储空间

2.2 存储桶

存储桶是对象的容器,是为了方便管理和操作具有相同属性的一类对象而引入的一级管理单元。

存储桶信息包含:

  • 基础信息: (保持在对应RADOS对象的数据部分)RGW关注的信息,包含bucket配额信息(最大对象数目和最大对象大小总和),bucket placement rule,bucket中的索引对象数目等等。其中bucket placement rule包含index pool(存储桶的索引对象),data pool(对象数据),data extra pool(分段上传的中间数据)

  • 扩展信息: (保存在对应RADOS对象的扩展属性)对RGW透明的一些信息,如用户自定义的元数据信息。

2.3 对象

RGW中的应用对象对应RADOS对象。应用对象上传分整体上传和分段上传,不同的上传方式应用对象对应RADOS对象的方式不同。

这里涉及三个概念:

  • rgw_max_chunk_size: 分块大小,RGW下发至RADOS集群的单个IO的大小。
  • rgw_obj_stripe_size: 条带大小,multipart除首对象外的分段其它大小。
  • class RGWObjManifest: 管理应用对象和RADOS对象的对应关系。

2.3.1 整体上传

  • 应用对象大小小于等于分块大小: 用户上传的一个对象只对象一个RADOS对象,该RADOS对象以应用对象名称命名,应用对象元数据也保存在该RADOS对象的扩展属性中。

  • 应用对象大小大于分块大小: 应用对象被分解成一个大小等于分块大小的首对象。多个大小等于条带大小的中间镜像,和一个大小小于条带大小的尾对象。首对象以应用对象名称命名,在RGW中将该对象称为head_obj,该对象的数据部分保持了应用对象前rgw_max_chunk_size字节的数据。扩展属性部分保存了应用对象的元数据和manifest信息。中间对象和尾对象保存应用对象剩余的数据,对象名称为"shadow_" + "." + "32bit随机字符串" + "_" + "条带编号",其中条带编号从1开始。

2.3.2 分段上传

RGW依照条带大小将应用对象的每一个分段分成多个RADOS对象,每个分段的第一个RADOS对象名称为:

"multipart" + "用户上传对象名称" + "分段上传ID" + "分段编号"

其余对象名称为:

"shadow" + "用户上传对象名称" + "分段上传ID" + "分段编号" + "_" + "条带编号"

当所有的分段上传结束后,RGW会从data_extra_pool中的分段上传临时对象中读取各个分段信息。主要是各分段的manifest信息组成一个manifest,然后生成一个新的RADOS对象,即head obj,用来报错分段上传的应用对象的元数据信息和各分段的manifest

ceph对象存储的更多相关文章

  1. Ceph对象存储网关中的索引工作原理<转>

    Ceph 对象存储网关允许你通过 Swift 及 S3 API 访问 Ceph .它将这些 API 请求转化为 librados 请求.Librados 是一个非常出色的对象存储(库)但是它无法高效的 ...

  2. 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制

    背景 毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目.如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储.对象存储以及块存储,本文主要关注的是对象 ...

  3. 006.Ceph对象存储基础使用

    一 Ceph文件系统 1.1 概述 Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 . Ceph 对象存 ...

  4. 基于LAMP php7.1搭建owncloud云盘与ceph对象存储S3借口整合案例

    ownCloud简介 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于 ...

  5. Ceph对象存储 S3

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

  6. ceph 对象存储跨机房容灾

    场景分析 每个机房的Ceph都是独立的cluster,彼此之间没有任何关系. 多个机房都独立的提供对象存储功能,每个Ceph Radosgw都有自己独立的命名空间和存储空间. 这样带来两个问题: 针对 ...

  7. ceph对象存储RADOSGW安装与使用

    本文章ceph版本为luminous,操作系统为centos7.7,ceph安装部署方法可以参考本人其他文章. [root@ceph1 ceph-install]# ceph -v ceph vers ...

  8. CEPH 对象存储的系统池介绍

    RGW抽象来看就是基于rados集群之上的一个rados-client实例. Object和pool简述 Rados集群网上介绍的文章很多,这里就不一一叙述,主要要说明的是object和pool.在r ...

  9. ceph对象存储场景

    安装ceph-radosgw [root@ceph-node1 ~]# cd /etc/ceph # 这里要注意ceph的源,要和之前安装的ceph集群同一个版本 [root@ceph-node1 c ...

  10. 直播流怎么存储在Ceph对象存储上? Linux内存文件系统tmpfs(/dev/shm) 的应用

    一./dev/shm理论 默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录.可以通过df 命令查看结果./dev/shm/是linux下一个非常有用的目录,因为这 ...

随机推荐

  1. nginx启动失败 Starting nginx nginx [fail]

    nginx -t :测试配置文件是否有语法错误 看看报什么错误,我的是忘记给权限了 nginx: [alert] could not open error log file: open() " ...

  2. 办公自动化-批量更新tar包内文件

    最近工作有点忙,学习的时间也少了,为了提高工作效率,有时候我们需要自己写一些提高办公处理效率给的工具或者脚本或者程序. 比如,我目前遇到的一个事项,需要更新很多个tar包文件,把tar包内的某个文件替 ...

  3. BGP路由优选原则

    0 丢弃下一跳不可达的路由 1 优选Preference_Value值最高的路由(本设备有效) Pref-Val:协议首选值 华为私有的属性,只具有本地(本设备)意义,缺省情况下为0,越大越优,0-6 ...

  4. 同一局域网下,远程连接另一台电脑的Mysql数据库

    博客地址:https://www.cnblogs.com/zylyehuo/ 参考链接 同一局域网,远程连接别人的Mysql数据库 用电脑A去远程电脑B的数据库,那我们要先在电脑B上设置一下: ste ...

  5. SpringSecurity5(10-动态权限管理)

    授权流程 SpringSecurity 的授权流程如下: 拦截请求,已认证用户访问受保护的 web 资源将被 SecurityFilterChain 中的 FilterSecurityIntercep ...

  6. 【数据结构与算法】找出最小的k个数:三路快速排序算法思想实现

    找出最小的k个数:三路快速排序算法思想实现 Java https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/solution/zui-xi ...

  7. 学习unigui【24】Echart的使用:多个坐标系

    使用echart非常简单,网上有介绍. 主要放一个unihtmlFrame.然后unihtmlframe.text := 'html的代码',就会渲染(初次调用echart的js库要一点稍后). un ...

  8. Kubernetes基础教程-通过部署Nginx快速学习基本使用命令

    1.验证节点信息 1.1.查看控制平面组件的状态 [root@linux-servertwo software]# kubectl get cs Warning: v1 ComponentStatus ...

  9. ESP32-S3接入大模型API,对话AI

    ESP32-S3接入大模型API,对话AI 1.先使用python验证可行性 import requests url = "https://api.siliconflow.cn/v1/cha ...

  10. 使用PyMuPDF对pdf文件插入文字时 遇到配置本地的字体文件缺仍然使用默认Helvetica字体问题

    背景 昨天收到的新需求,一份文件从其他部门发起,进行一些文字填写后盖章,再到我们部门,我们接收到的是pdf文件,所以需要在pdf文件中进行修改,插入当日日期等文字.但有要求字体必须和原文档字体相同. ...