Openstack持久存储之Swift

OpenStack中的持久存储可分为三类:对象存储(object storage)、文件共享存储(file share storage)和块存储(block storage),对应的项目分别是Swift、Manila和Cinder。

一句话说清楚对象存储就是:对象存储不是NAS/SNA,对象存储允许用户使用RESTful HTTP API以对象形式存储数据并且对象存储可以无限扩展,可以更好地处理节点故障而不丢失数据,无法通过文件协议(如BFS块文件系统、SMB块文件系统或CIFS公共 Internet 文件系统)直接访问对象存储。对象存储通常用于归档和备份数据,例如虚拟机镜像、照片、视频和音乐。

一、Swift架构

Swift是一种创新的存储系统,它通过独特的架构实现无缝扩展和高度容错,确保数据持续可用,而不模仿传统存储接口,专注于高效、可靠的数据管理。Swift架构是分布式的,可以防止任何单点故障(Single Point Of Failure,SPOF),它还被设计为能够水平缩放。

Swift包括以下组件:Swift代理服务,账户服务,容器服务,对象服务

解释 元数据: 元数据提供对象的描述性信息,它被存储为键值对(时间-存储信息)。

二、Swift在实际存储上的规划(目的:为了隔离故障)

Swift层次结构图

三、Swift如何实际将数据存储在磁盘上?

Swift对象存储系统通过一致性哈希算法和Ring机制将数据分区并映射到多个节点的磁盘上,每个对象以独立文件形式存储,同时维护多个副本以确保高可用性和数据冗余。在较高的层次上看,Swift就像一个巨大的哈希数据结构,其中所有可用空间都被分成槽,然后使用哈希函数来将数据映射为槽位。

四、Swift如何实现存储策略?

在Swift对象存储系统中,为了确保数据的高可用性,传统的做法是通过维护多个副本并将它们分散到不同的区域、区(Zone)、节点和磁盘上来实现冗余。这种策略虽然非常有效,但它确实带来了较高的存储成本------当每个对象都使用默认的三副本时,实际可用的存储量仅为总容量的大约三分之一,对于至关重要的数据,组织或许愿意承担这样的成本以换取更高的可靠性和冗余度。然而,这种方法对那些希望利用昂贵的Swift对象存储系统来满足其数据可用性和性能需求的应用来说是一个挑战。因此,Swift引入了存储策略的概念,旨在通过差异化复制策略来解决冗余性和成本之间的矛盾。

除了传统的多副本机制外,纠删码(Erasure Coding, EC)作为另一种冗余性策略,在Kilo版本发布后被OpenStack Swift所采用。纠删码通过奇偶校验信息来重建丢失的数据片段,从而提供了一种创新的方法来平衡性能与成本。具体而言,当用户上传文件至配置了纠删码的对象存储时,Swift代理会将数据分割成若干段(segments),然后调用PyECLib库将这些数据段编码为纠删码片段(fragments)。随后,这些编码后的片段会被流式传输到各个存储节点上进行保存。

纠删码的原理可以类比于RAID技术中的RAID 5,其中数据被划分为条带,并生成奇偶校验条带来从磁盘故障中恢复数据。相比之下,默认的Swift复制策略类似于RAID 1或镜像(mirroring),即数据在不同磁盘之间直接复制。而采用纠删码的方式只需要大约40%左右的数据大小的额外空间,这远低于基于复制方案所需的存储开销。

为了支持纠删码功能,Swift依赖于一个名为PyECLib的后端库,它为多种纠删码算法提供了Python接口,并且具有良好的扩展性,允许以插件形式集成自定义的纠删码实现。

五、对象存储和raid存储之间的关系

尽管Swift本身并不依赖于RAID技术,但在实际应用中,两者常常结合使用以满足不同的性能和可靠性要求。例如,在媒体行业中,一家公司可能会选择将原始素材(如视频、音频和图片)存储在对象存储平台上,因为这类数据通常是非结构化的且体积较大;而对于需要频繁读写的编辑过程,则更适合采用RAID存储系统,因为它能提供更高的I/O速度和更低的延迟。最终成品可以再次归档回对象存储中长期保存,形成一个完整的生命周期管理流程。

相关推荐
hey you~2 小时前
呼叫中心系统技术选型全景指南:从CTI架构到云原生演进的技术决策框架
系统架构·云计算·技术选型·呼叫中心·cti
Devlive 开源社区2 小时前
一口气新增三家云——七牛云 Kodo、AWS S3、Cloudflare R2;并支持应用内自动检测与一键升级
云计算·aws
小白考证进阶中10 小时前
阿里云认证重要通知(Clouder+ACX职业岗位)
阿里云·云计算·阿里云acp报名·阿里云acp备考·阿里云aca证书·阿里云aca大模型·阿里云aca报名
spider_xcxc12 小时前
告别单点故障:阿里云CLB负载均衡从入门到实战
阿里云·云计算·负载均衡
hz5678915 小时前
电子远程评标系统哪家好?安全、合规、易用平台评测指南
安全·云计算·音视频·实时音视频·信息与通信
翼龙云_cloud17 小时前
腾讯云代理商: 腾讯云qGPU怎么破解算力浪费难题?
云计算·腾讯云·qgpu
阿乔外贸日记1 天前
意大利进口主力产品及主要合作供应国
大数据·人工智能·物联网·搜索引擎·云计算
云服务器代理商1 天前
AWS Bedrock 指南:模型接入、Knowledge Base RAG、Agents 与计费方式
云计算·aws·亚马逊云服务器·aws bedrock·aws代理·亚马逊云代理商
spider_xcxc1 天前
阿里云NAS配置完全指南:从概念到实战
阿里云·云计算
小牛不牛的程序员1 天前
开源一个 macOS 剪贴板「意图识别」工具——不只是存储,更是理解你复制了什么
macos·swift