带你读《存储漫谈:Ceph原理与实践》——3.2.1 对象存储和 S3

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 带你读《存储漫谈:Ceph原理与实践》——3.2.1 对象存储和 S3

3.2  对象存储 RGW


3.2.1  对象存储和 S3


1. 什么是对象存储

对象存储,也称为基于对象的存储,是一种采用扁平化数据组织的新型存储方式。对象存储主要用于处理海量半结构化或者非结构化数据,常用于备份归档、静态网站托管、视频存储以及无纸化办公、网盘等场景。同时,根据具体应用场景和业务使用形态,对象存储可进一步细分为多种不同存储类别,如标准存储、低频存储、归档存储等。在数据组织形态上,文件数据通常会被分解为称为“对象”的离散单元,并保存在多个存储库中,而不是作为文件夹中的文件或服务器上的块来保存,这也是对象存储与传统文件存储、块存储的本质区别。同时,其使用方式也与文件存储、块存储有着较大差异,对象存储主要采用基于 HTTP(s) 的访问方式,只要网络可达,就可以便捷地使用对象存储服务,因此也通常将之称为云存储。

Ceph 本身采用分层架构设计,其中底层架构核心之一的 RADOS 本身就是一套分布式对象存储系统,主要通过开放 librados 库来提供对象接口访问底层 RADOS 集群,但由于它只提供私有访问接口,无法提供基于 HTTP(s) 通用协议的访问方式,因而使用上十分受限。Ceph 其实还是一个真正意义上的软件定义统一存储解决方案,可同时提供块存储、对象存储以及文件存储访问能力,其主要是在接入层通过调用 librados 接口实现了不同存储网关类型,如对象网关、块存储网关等。其中对象存储网关 RGW(RADOS GateWay)更是通过适配云存储领域中应用最为广泛的 Amazon S3 和 OpenStack Swift 接口协议,使得用户应用无须任何改造就可轻松接入 Ceph 提供的对象存储系统中。上述的 S3 接口协议和Swift 接口协议也已成为新型对象存储接口的事实标准。

在 Ceph 分层架构中,RGW 属于接口层,位于 RADOS 集群之上。RGW 通过对 S3 和Swift 接口语义的实现,可提供基于用户(User)、存储桶(Bucket)、对象(Object)以及统计(Statistics)等多种不同业务、运维类型的接口操作。目前 Ceph 的 RGW 服务并没有完全兼容 S3 或者 Swift 接口,但是其功能也在快速完善过程中,同时也引入了更多新的功能特性,进一步丰富了业务使用场景。比如通过 librgw 提供基于 POSIX 语义的使用方式来访问对象存储,同时还可结合对象存储生命周期功能和存储类别(Storage Class),实现数据的分层迁移动作。其他更多功能特性,读者有兴趣也可以查阅官方文档。

2. 对象存储的应用领域

随着云计算、大数据等新技术的快速兴起,各行各业开始快速拥抱这些新兴技术,以解决行业所面临的难题,实现业务转型。计算、存储、网络作为云数据中心 IaaS 层的三大件,一直拥有无可撼动的地位。物联网、地理信息系统、视频监控存储、工业互联网 4.0、医疗PACS影像、虚拟化应用等每天都在催生海量数据(含结构化、半结构化以及非结构化数据),其中大部分为非结构化数据。如何有效应对并解决 DT 时代 ZB 级非结构化数据的存储需求,传统集中式存储面临着诸多挑战,已经显得力不从心。具体体现在如下几个方面。

(1)海量数据带来应用复杂性增长,数据的存放、管理、利用成为难题。

(2)云计算、大数据等场景下,要求存储架构弹性扩展、敏捷响应。

(3)传统存储部署复杂、资源浪费,数据难以共享,已经无法满足新的需求。

伴随着用户需求的变化和存储技术的变革,软件定义存储能够提供给客户更好的性能,更高的灵活性和开放性,更强的扩展性,更简单的管理以及更少的用户投入。为应对这种海量非结构化数据的存储需求,采用扁平化数据存储组织方式的分布式对象存储技术成了一颗冉冉升起的新星。

3. RGW 数据组织结构

在对象存储系统中,包含 3 个基本概念,即用户(User)、存储桶(Bucket)和对象(Object)。为更好理解对象存储网关 RGW 的实现本质,下面就对这 3 个概念及其基本特征进行重点阐述。

(1)用户(User)

用户(User)指的是对象存储应用的使用者,可以是一个独立的个体,也可以是系统的一个角色(如一个应用)。只有创建了用户并赋予了相关权限之后,才允许访问存储集群对应的存储池和数据。用户管理在 Ceph 集群中属于管理功能,可以通过管理员直接创建、更新、删除用户或者对用户赋予对应的 caps 权限。同一个用户可以拥有一个或者多个存储桶,同时还可以为用户创建对应的子账户。

(2)存储桶(Bucket)

存储桶(Bucket)是 Ceph RGW 中存储对象的容器,是用户用来管理存储对象的逻辑存储空间。Ceph 对象存储服务提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。每个存储桶都有自己的访问权限、所属区域等属性,用户可以在不同区域创建不同存储类别和访问权限的桶,并配置更多高级属性来满足不同场景的存储诉求。

对象存储服务设置有多种桶存储类别,分别为标准存储、低频访问存储、归档存储类型,从而满足客户业务对存储性能、成本的不同诉求。创建桶时可以指定桶的存储类别,桶的存储类别也可以在创建之后进行修改。在 Ceph 中,同一个租户(tenant)命名空间下,桶名必须是全局唯一的且不能修改,即用户创建的桶不能与自己已创建的其他桶名称相同,也不能与其他用户创建的桶名称相同。桶所属的区域在创建后也不能修改。每个桶在创建时都会生成默认的桶 ACL(Access Control List),桶 ACL 的每项包含了对被授权用户授予什么样的权限,如读取权限、写入权限等。用户只有对桶有相应的权限,才可以对桶进行相应的操作,如创建、删除、显示、设置桶 ACL 等。一个默认账号可创建 1000 个桶。每个桶中存放的对象的数量和大小总和默认没有限制,用户不需要考虑数据的可扩展性。

存储桶命名规则如下。

只能包含小写字母,数字和短横线(-);

必须以小写字母或数字开头;

长度必须在 3 ~ 63 字节之间。

存储桶是用户管理对象的单位,所有对象都必须属于一个存储桶。存储桶具有一些属性来控制区域,如对象访问控制、对象生命周期等。这些属性适用于存储桶下的所有对象,因此用户可以灵活地创建不同的存储桶,以完成不同的管理功能。

(3)对象(Object)

对象(Object)是 Ceph 对象存储服务中数据存储的基本单位(区别于 RADOS 层的文件数据切片 Object 概念),一个对象实际是一个文件的数据及其相关属性信息(元数据)的集合体。用户上传至 Ceph 对象存储系统的数据都以对象的形式保存在存储桶(Bucket)中。一个对象一般包括键值(Key)、元数据(Metadata)、实体数据(Data)三部分。

Key :键值,即对象的名称。一个桶里的每个对象必须拥有唯一的对象键值。对象文件命名规则为经过 UTF-8 编码的长度大于 0 且不超过 1024 的字符序列,对象的名称对大小写敏感。

Metadata :对象元数据,即对象的描述信息,包括系统元数据和用户元数据。这些元数据以键值对(Key-Value)的形式被上传到 Ceph 中。

◆ 系统元数据由 Ceph 自动生成,在处理对象数据时使用,包括 Date、Contentlength、Last-modify、Content-MD5 等;

用户元数据由用户在上传对象时指定,是用户自定义的对象描述信息。

Data :实体数据,即文件的数据内容。

通常情况下,人们将对象等同于文件来进行管理,但是由于 Ceph RGW 提供的是一种对象存储服务,并没有文件系统中的文件和文件夹概念。为了使用户更方便地进行数据管理,Ceph RGW 提供了一种方式来模拟文件夹层级。通过在对象的名称中增加“/”,例如采用“test/123.jpg”的命名方式,此时,“test”就被模拟成了一个文件夹,“123.jpg”则模拟成“test”文件夹下的文件名了,而实际上,对象名称(Key)仍然是“test/123.jpg”。上传对象时,可以指定对象的存储类别,若不指定,默认与桶的存储类别一致。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3月前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
158 0
|
2天前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准,存储、流量和请求等多个计费项
阿里云对象存储OSS提供按量付费与包年包月两种计费方式,涵盖存储、流量、请求等费用。标准存储按量付费0.09元/GB/月,包年包月40GB起售,价格9元/年。公网流量出方向收费,内网及上传免费。具体费用视使用情况而定,详情见官网。
|
2月前
|
存储 API Swift
Ceph Reef(18.2.X)之Swift操作对象存储网关
这篇文章详细介绍了Ceph Reef(18.2.X)中通过Swift API操作对象存储网关的方法,包括创建用户、子用户、配置环境变量、以及使用swift命令行工具进行存储桶和对象的管理。
32 7
Ceph Reef(18.2.X)之Swift操作对象存储网关
|
2月前
|
存储 对象存储
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
这篇文章是关于Ceph Reef(18.2.X)版本中对象存储系统的配置和使用案例,包括对象存储网关的概述、核心资源介绍、Ceph RGW支持的接口、高可用radosgw的部署、s3cmd工具的使用以及如何通过HTTP方式访问对象存储。
66 3
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
|
2月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
135 9
|
2月前
|
对象存储 Python
Ceph Reef(18.2.X)之python操作对象存储网关
这篇文章介绍了如何在Ceph Reef(18.2.X)环境中使用Python操作对象存储网关(rgw),包括环境搭建、账号创建、使用s3cmd工具以及编写和测试Python代码。
46 3
|
3月前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
3月前
|
存储 Java 关系型数据库
实时计算 Flink版产品使用问题之以jar包方式同步数据是否需要定义存储oss的位置
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
4天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。