ceph对象存储
一.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对象存储的更多相关文章
- Ceph对象存储网关中的索引工作原理<转>
Ceph 对象存储网关允许你通过 Swift 及 S3 API 访问 Ceph .它将这些 API 请求转化为 librados 请求.Librados 是一个非常出色的对象存储(库)但是它无法高效的 ...
- 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制
背景 毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目.如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储.对象存储以及块存储,本文主要关注的是对象 ...
- 006.Ceph对象存储基础使用
一 Ceph文件系统 1.1 概述 Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 . Ceph 对象存 ...
- 基于LAMP php7.1搭建owncloud云盘与ceph对象存储S3借口整合案例
ownCloud简介 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于 ...
- Ceph对象存储 S3
ceph对象存储 作为文件系统的磁盘,操作系统不能直接访问对象存储.相反,它只能通过应用程序级别的API访问.ceph是一种分布式对象存储系统,通过ceph对象网关提供对象存储接口,也称为RADOS网 ...
- ceph 对象存储跨机房容灾
场景分析 每个机房的Ceph都是独立的cluster,彼此之间没有任何关系. 多个机房都独立的提供对象存储功能,每个Ceph Radosgw都有自己独立的命名空间和存储空间. 这样带来两个问题: 针对 ...
- ceph对象存储RADOSGW安装与使用
本文章ceph版本为luminous,操作系统为centos7.7,ceph安装部署方法可以参考本人其他文章. [root@ceph1 ceph-install]# ceph -v ceph vers ...
- CEPH 对象存储的系统池介绍
RGW抽象来看就是基于rados集群之上的一个rados-client实例. Object和pool简述 Rados集群网上介绍的文章很多,这里就不一一叙述,主要要说明的是object和pool.在r ...
- ceph对象存储场景
安装ceph-radosgw [root@ceph-node1 ~]# cd /etc/ceph # 这里要注意ceph的源,要和之前安装的ceph集群同一个版本 [root@ceph-node1 c ...
- 直播流怎么存储在Ceph对象存储上? Linux内存文件系统tmpfs(/dev/shm) 的应用
一./dev/shm理论 默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录.可以通过df 命令查看结果./dev/shm/是linux下一个非常有用的目录,因为这 ...
随机推荐
- Major、Minor、Build Number及Revision 版本号注解含义
版本号 版本号由二至四个部分组成:主版本号.次版本号.内部版本号和修订号. 主版本号和次版本号两个部分为必选,内部版本号和修订号两个部分为可选.只有在未定义内部版本号部分时,修订号部分才为可选.所有定 ...
- Mqtt集成与设计
Mqtt集成 集成mqtt,我们首先得明白什么是mqtt: MQTT(Message Queuing Telemetry Transport)是一种轻量级.基于发布-订阅模式的消息传输协议,适用于资源 ...
- Hack The Box-代理连接及靶机-Meow-喵呜
前言 在第一层,您将获得网络安全渗透测试领域的基本技能.您将首先学习如何匿名连接到各种服务,例如 FTP.SMB.Telnet.Rsync 和 RDP.接下来,您将发现 Nmap 的强大功能,这是 ...
- ORACLE数据挖掘之 MSET-SPRT
虽然是熟悉的Oracle数据库,但关于机器学习.数据挖掘这方面的知识笔者起初也是不了解的,文中MSET相关设置来源于同事提供的sample,在测试过程中边查资料边学习吸收,也因此看到了别样的Oracl ...
- Java24发布,精心总结
Java 24作为2025年3月发布的最新版本,延续了Java平台每半年发布一次的节奏,带来了24项重要改进.本文将按照核心改进领域分类,详细解析每个特性的技术原理和实际价值,帮助开发者全面了解这一版 ...
- el-tree 动态图标
举个栗子 https://jsfiddle.net/taadis/x9crjsum/ https://jsrun.net/MYXKp - 上面看不了的,可以看这个...
- 🎀dubbo 2.7.2 启动报错【Unsupported generic type false】排查
1.问题现象 dubbo服务启动时抛出异常Unsupported generic type false,但不影响服务正常发布. Caused by: java.lang.IllegalArgument ...
- 工良出品 | 长文讲解 MCP 和案例实战
作者:痴者工良 博客地址:https://www.whuanle.cn/ 示例项目地址:https://github.com/whuanle/mcpdemo 近期 MCP 协议越来越爆火,很多开发者都 ...
- React项目报错:Element type is invalid: expected a string可能的原因
React项目报错:Element type is invalid: expected a string 起因:React使用Antd组件库,因为某些原因实在用不下去了,代码不变直接改成Tdesig ...
- 快速开始 Mybatis TypeHandler
theme: orange MyBatis TypeHandler是MyBatis框架中的举足轻重的组件之一,用于处理Java对象和数据库中的数据类型之间的转换. MyBatis TypeHandle ...