基于Ceph对象存储构建实践

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介:

存储发展

数据存储是人类永恒的话题和不断探索的主题

  • 绳结记事

原始社会,文字未发明之前 ,人们所使用的一种记事方法,在绳子上打结记事。

  • 穿孔卡

穿孔卡片是始于20世纪的主要存储方法,也是最早的机械化信息存储形式,进入20世纪60年代后,逐渐被其他存储手段取代。目前穿孔卡片已经极少使用,除非用于读出当年存储的历史数据。

  • 磁鼓存储器

20世纪50年代,磁鼓作为内存储器应用于IBM 650。在后续的IBM 360/91和DEC PDP-11中,磁鼓也用作交换区存储和页面存储。磁鼓的代表性产品是IBM 2301固定头磁鼓存储器。磁鼓是利用铝鼓筒表面涂覆的磁性材料来存储数据的。鼓筒旋转速度很高,因此存取速度快。它采用饱和磁记录,从固定式磁头发展到浮动式磁头,从采用磁胶发展到采用电镀的连续磁介质。这些都为后来的磁盘存储器打下了基础。

磁鼓最大的缺点是存储容量太小。一个大圆柱体只有表面一层用于存储,而磁盘的两面都可用来存储,显然利用率要高得多。因此,当磁盘出现后,磁鼓就被淘汰了。

  • 磁带

磁带是从1951年起被作为数据存储设备使用的,磁带是所有存储媒体中单位存储成本最低、容量最大、标准化程度最高的常用存储介质之一。从 20 世纪 70 年代后期到 80 年代出现了小型的盒式磁带,长度为 90 分钟的磁带每一面可以记录大约 660KB的数据。

  • 软盘

软盘发明于1969年,直径是8英寸,单面容量80KB。4年后,5.25英寸、容量为320KB的软盘诞生了。软盘的发展趋势是盘片直径越来越小,而容量却越来越大,可靠性也越来越高。图2-10是三种典型的软盘,其中a为不同外观尺寸的软盘,b中3.5英寸软盘的容量为1.44MB,曾经作为主要的移动存储介质被广泛使用。到了20世纪90年代后期,出现了容量为250MB的3.5英寸软盘产品,但由于兼容性、可靠性、成本等原因,并未被广泛使用,如今已难寻踪迹。

  • 光盘

早期光盘主要用于电影行业,第一张光盘于1987年进入市场, 直径为30cm,每一面可以记录60分钟的音视频。

  • 硬盘存储器

第一款硬盘驱动器是IBM Model 350 Disk File, 于 1956 年制造,包含了 50 张 24 英寸的盘片,总容量不到5MB,机械硬盘发展至今,单盘容量已经超过16T了 。

存储的三种方式

块存储

块存储-图片来自redhat官网

DAS

直接附加存储(Directed Attached Storage,DAS)作为一种最简单的外接存储方式,通过数据线直接连接在各种服务器或客户端扩展接口上。它本身是硬件的堆叠,不带有任何存储操作系统,因而也不能独立于服务器对外提供存储服务。DAS常见的形式是外置磁盘阵列,通常的配置就是RAID控制器+一堆磁盘。DAS安装方便、成本较低的特性使其特别适合于对存储容量要求不高、服务器数量较少的中小型数据中心。

SAN

存储区域网络(Storage Area Network,简称SAN),SAN默认指FC-SAN,SAN存储有两种结构:

  • FC-SAN

典型的SAN利用光纤通道(Fiber Channel,FC)技术连接节点,并使用光纤通道交换机(FC Switch)提供网络交换。不同于通用的数据网络,存储区域网络中的数据传输基于FC协议栈。在FC协议栈之上运行的SCSI协议提供存储访问服务。与之相对的iSCSI存储协议,则提供了一种低成本的替代方式,即将SCSI协议运行于TCP/IP协议栈之上。为了区别这两种存储区域网络,前者通常称为FC SAN,后者称为IP SAN。

  • IP-SAN

由于FC-SAN的高成本,人们就开始考虑构建基于以太网技术的存储网络,使得的iSCSI可以实现在IP网络上运行SCSI协议。但是在SAN中,传输的指令是 SCSI的读写指令,不是IP数据包。iSCSI(互联网小型计算机系统接口)是一种在TCP/IP上进行数据块传输的标准。它是由Cisco和IBM两家发起的,并且得到了各大存储厂商的大力支持。iSCSI可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行快速的数据存取备份操作。为了与之前基于光纤技术的FC SAN区分开来,这种技术被称为IP SAN。

优点
  • 高性能,集中化的管理,稳定性和安全性得到保障
缺点
  • 成本昂贵,磁盘阵列的兼容性限制了设备选择空间及资源共享

NAS存储

NAS存储-图片来自redhat官网

图片来源:redhat官网

Network Attached Storage 网络附加存储,采用 NFSCIFS 协议访问数据,以文件为传输协议,通过 TCP/IP 实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统。

优点
  • 造价成本低,有一个服务器,装上网络文件存储软件,就可以提供给其他服务器挂载访问。
  • 文件级的数据共享
缺点
  • 读写速率低

对象存储

对象存储

块存储读写快、不利于数据共享,文件存储数据共享方便、但是读写慢,能否弄一个读写快而且可以共享数据的存储,于是对象存储就诞生了。块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构。

3个核心概念

对象

对象是对象存储中的最小单元,比如照片就是一个对象,对象由元数据信息(MataData,包含Length,lastModify等),用户数据(Data),用户自定义的数据信息(拍摄者、拍摄设备等)和文件名(Key)组成。

存储桶

作为存放对象的容器

用户

对象存储的使用者,存储桶的拥有者,每个用户使用AccessKeyId 和 SecretAccessKey对称加密的方法来验证某个请求的发送者身份。

对象存储适合存什么

用来存海量非结构化数据的,对象存储将数据以对象的方式存储,而不是以传统的文件和数据块的形式存储,每个对象都要存储数据、元数据和一个唯一的标识符。

  • 图片
  • 视频
  • 音频
  • 文档
  • 代码js/html
缺点

应用代码需要改动,无法修改对象,需要一次性完整写入

优点

无限扩容

基于Ceph的对象存储构建实践

什么是Ceph

加州大学 Santa Cruz 分校的 Sage Weil(DreamHost 的联合创始人)博士论文设计的新一代自由软件分布式文件系统。软件定义存储(Software Defined Storage, SDS)。统一的存储解决方案。 提供了三种存储方式:块存储、文件存储、对象存储。Ceph的架构如下:

图片来源:Ceph官网

Ceph组件

Ceph Monitor(监视器,简称Mon)

Mon通过保存一份集群状态映射来的维护整个集群的健康状态。它分别为每个组件维护映射信息。所有集群节点都向Mon节点汇报状态信息

RADOS

(Reliable Autonomix Distributed Object Store),是存储集群的基础。在Ceph中所有的数据都是以对象的形式存储,RADOS就负责存这些数据,不考虑它们的类型。

Ceph对象存储设备OSD

Ceph 分布式对象存储系统的对象存储守护进程。它负责把对象存储到本地文件系统,并使之通过网络可访问。

RADOS网关(RGW)

提供了兼容Amazon S3和OpenStack对象存储API(Swift)的restful API接口。支持多租户和OpenStack Keystone身份验证。

MDS(Ceph元数据服务器)

为CephFS跟踪文件层次结构和存储元数据。

librados

librados库为PHP,Ruby,Java,Python,C和C++这些编程语言提供了方便地访问RADOS接口的方式。

RBD(RADOS块设备)

Ceph块设备,原名是 RADOS 块设备,提供可靠的分布式和高性能块存储磁盘给客户端,将块数据以顺序条带化的形式分散存储在的多个 OSD 上,支持自动精简配置、动态调整大小、完整和增量快照、写实复制克隆等企业级特性,而且RBD服务已经被封装成了基于 librados 的一个原生接口。

CephFS(Ceph Filesystem)

Ceph文件系统提供了一个使用Ceph存储集群存储用户数据的与POSIX兼容的文件系统。和RBD、RGW一样,基于librados封装了原生接口。

Ceph的特点

  • 高性能

摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。

  • 高可用性

数据强一致性,多种故障场景自愈

  • 高扩展性

去中心化、灵活扩展

  • 特性丰富

支持三种存储接口:块存储、对象存储、文件存储

支持多种语言(Python、C++、Java、PHP、Ruby等)驱动,自定义接口

基于Ceph的对象存储实践

客户端通过 4,7 层负载均衡,基于HTTP协议,将请求转发至对象存储网关(Rados GateWay), 对象存储网关通过Sockets与集群通信,至此,完成了整个数据的传输。

用户认证

s3用户认证

  1. 应用在发送请求前,使用用户私有秘钥(secret key)、请求内容等,采用与RGW网关约定好的算法计算出数字签名后,将数字签名以及用户访问秘钥access_key封装在请求中发送给RGW网关
  2. RGW网关接受到请求后,使用用户访问秘钥作为索引送RADOS集群中读取用户信息,并从用户信息中获取到用户私有秘钥。
  3. 使用用户私有秘钥、请求内容等,采用与应用约定好的算法计算数字签名。
  4. 判断RGW生成的数字签名和请求的签名是否匹配,如果匹配,则认为请求是真实的,用户认证通过,如果匹配返回 S3 error: 403 (SignatureDoesNotMatch)

对象存储IO路径分析

对象存储IO路径分析

应用通过http协议将请求发送至对象存储网关,网关收到 I/O 请求后,从http语义中解析出S3或Swift数据并进行一系列检查,检查通过后,根据不同API操作请求执行不同的数据处理逻辑,通过 librados 接口从 RADOS Cluster中 GET 或者 PUT 数据,完成整个I/O过程。

作者:张健伟
来源:宜信技术学院

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
存储 SQL 分布式计算
阿里云全托管flink-vvp平台hudi connector实践(基于emr集群oss-hdfs存储)
阿里云全托管flink-vvp平台hudi sink connector实践,本文数据湖hudi基于阿里云E-MapReduce产品,以云对象存储oss-hdfs作为存储
|
3天前
|
存储 人工智能 开发工具
AI场景下的对象存储OSS数据管理实践
本文介绍了对象存储(OSS)在AI业务中的应用与实践。内容涵盖四个方面:1) 对象存储作为AI数据基石,因其低成本和高弹性成为云上数据存储首选;2) AI场景下的对象存储实践方案,包括数据获取、预处理、训练及推理阶段的具体使用方法;3) 国内主要区域的默认吞吐量提升至100Gbps,优化了大数据量下的带宽需求;4) 常用工具介绍,如OSSutil、ossfs、Python SDK等,帮助用户高效管理数据。重点讲解了OSS在AI训练和推理中的性能优化措施,以及不同工具的特点和应用场景。
31 10
|
3天前
|
弹性计算 人工智能 数据管理
AI场景下的对象存储OSS数据管理实践
本文介绍了ECS和OSS的操作流程,分为两大部分。第一部分详细讲解了ECS的登录、密码重置、安全组设置及OSSUTIL工具的安装与配置,通过实验创建并管理存储桶,上传下载文件,确保资源及时释放。第二部分则聚焦于OSSFS工具的应用,演示如何将对象存储挂载为磁盘,进行大文件加载与模型训练,强调环境搭建(如Conda环境)及依赖安装步骤,确保实验结束后正确清理AccessKey和相关资源。整个过程注重操作细节与安全性,帮助用户高效利用云资源完成实验任务。
40 10
|
25天前
|
弹性计算 数据管理 应用服务中间件
活动实践 | 借助OSS搭建在线教育视频课程分享网站
本教程指导用户在阿里云ECS实例上搭建在线教育网站,包括重置ECS密码、配置安全组、安装Nginx、创建网站页面、上传数据至OSS、开通OSS传输加速、配置生命周期策略及清理资源等步骤,实现高效、低成本的数据管理和网站运营。
活动实践 | 借助OSS搭建在线教育视频课程分享网站
|
3月前
|
存储 API Swift
Ceph Reef(18.2.X)之Swift操作对象存储网关
这篇文章详细介绍了Ceph Reef(18.2.X)中通过Swift API操作对象存储网关的方法,包括创建用户、子用户、配置环境变量、以及使用swift命令行工具进行存储桶和对象的管理。
42 7
Ceph Reef(18.2.X)之Swift操作对象存储网关
|
3月前
|
存储 对象存储
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
这篇文章是关于Ceph Reef(18.2.X)版本中对象存储系统的配置和使用案例,包括对象存储网关的概述、核心资源介绍、Ceph RGW支持的接口、高可用radosgw的部署、s3cmd工具的使用以及如何通过HTTP方式访问对象存储。
136 3
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
|
3月前
|
对象存储 Python
Ceph Reef(18.2.X)之python操作对象存储网关
这篇文章介绍了如何在Ceph Reef(18.2.X)环境中使用Python操作对象存储网关(rgw),包括环境搭建、账号创建、使用s3cmd工具以及编写和测试Python代码。
54 3
|
7月前
|
存储 数据管理 Java
基于OSS、NFS构建高性能可扩展的遥感智能解译系统实践之路
该文探讨了构建高性能、可扩展的遥感智能解译系统的架构演进过程。作者强调架构应根据业务场景而定,而非追求单一的“最佳”架构。文章分为五个部分,介绍了从初步的业务场景分析到逐步优化的架构设计。 1. 业务场景描述了服务于地理信息行业的遥感数据管理平台,包括数据湖和遥感智能解译系统的功能和架构设计。 2. 初代系统解决了数据管理和智能解译的基本需求,但存在数据同步效率低下的问题。 3. 自动化阶段通过消息推送和数据接收模块减少了人工干预,将处理时间减半,但仍存在效率和稳定性问题。 4. 高性能阶段引入数据订阅/推送和数据接收Agent,实现了稳定、高速的数据传输,性能提升了6倍。
48853 2
|
7月前
|
存储 分布式计算 Kubernetes
PVC、Ceph、HDFS、CPFS、NFS和OSS
PVC、Ceph、HDFS、CPFS、NFS和OSS都是分布式存储系统,下面是它们的详细介绍: 1. PVC(Persistent Volume Claim):PVC是Kubernetes中的一个资源请求,用于声明在集群中存储持久化数据的需求。PVC可以被用于存储应用程序的数据,例如数据库、日志文件等。PVC由Kubernetes集群管理员创建,并在Kubernetes集群中进行分配。
700 0
|
存储 运维 监控
OSS生命周期管理与访问行为分析实践
认证考试:OSS生命周期管理与访问行为分析实践