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速度和更低的延迟。最终成品可以再次归档回对象存储中长期保存,形成一个完整的生命周期管理流程。

相关推荐
语歌20 小时前
AI 语言学习系统的工程边界:为什么 LLM 不该负责复习排期
人工智能·swift
TMT星球1 天前
IDC报告:阿里云稳居中国混合云软件及服务市场第一
阿里云·云计算
weixin_666593991 天前
自然资源时空智能体建设方案:从数字化到智能化的演进路径
大数据·人工智能·大模型·云计算·agent·云平台·空间数据库
Database_Cool_1 天前
LLM 应用怎么省 Token、加速响应——阿里云 Tair 语义缓存实战
阿里云·缓存·云计算
RoboWizard1 天前
金士顿高速闪存盘 单双接口适配多元存储需求
大数据·运维·人工智能·智能手机·云计算
Kari111 天前
腾讯云ADP部署需要什么条件?部署流程与配置检查清单
人工智能·云计算·腾讯云
国际云,接待1 天前
Google Cloud Armor实战:给网站API加WAF、限速和日志验证
后端·网络安全·云计算·googlecloud
2501_916008892 天前
iOS应用开发工具全面解析:如何选择与优化开发效率
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
大龄秃头程序员2 天前
Swift 属性包装器进阶:从“语法糖”到“并发安全”的 5 个深坑
swift
REST_30272 天前
告别Excel孤岛:一款任务链路可视化工具带来的真实改变
大数据·微服务·云计算·编辑器·excel·动态规划