Openstack Swift开源云存储技术解析

Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务,并于 2010 年贡献给 OpenStack ">开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服务。Swift 构筑在比较便宜的标准硬件存储基础设施之上,无需采用 RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

此项目是基于 Python 开发的,采用 Apache 2.0 许可协议,可用来开发商用系统。

基本原理

一致性散列(Consistent Hashing)

面对海量级别的对象,需要存放在成千上万台服务器和硬盘设备上,首先要解决寻址问题,即如何将对象分布到这些设备地址上。Swift 是基于一致性散列技术,通过计算可将对象均匀分布到虚拟空间的虚拟节点上,在增加或删除节点时可大大减少需移动的数据量;虚拟空间大小通常采用 2 的 n 次幂,便于进行高效的移位操作;然后通过独特的数据结构 Ring(环)再将虚拟节点映射到实际的物理存储设备上,完成寻址过程。

图 1. 一致性散列

如图 1 中所示,以逆时针方向递增的散列空间有 4 个字节长共 32 位,整数范围是[0~232-1];将散列结果右移 m 位,可产生 232-m个虚拟节点,例如 m=29 时可产生 8 个虚拟节点。在实际部署的时候需要经过仔细计算得到合适的虚拟节点数,以达到存储空间和工作负载之间的平衡。

数据一致性模型(Consistency Model)

按照 Eric Brewer 的 CAP(Consistency,Availability,Partition Tolerance)理论,无法同时满足 3 个方面,Swift 放弃严格一致性(满足 ACID 事务级别),而采用最终一致性模型(Eventual Consistency),来达到高可用性和无限水平扩展能力。为了实现这一目标,Swift 采用 Quorum 仲裁协议(Quorum 有法定投票人数的含义):

(1)定义:N:数据的副本总数;W:写操作被确认接受的副本数量;R:读操作的副本数量

(2)强一致性:R+W>N,以保证对副本的读写操作会产生交集,从而保证可以读取到最新版本;如果 W=N,R=1,则需要全部更新,适合大量读少量写操作场景下的强一致性;如果 R=N,W=1,则只更新一个副本,通过读取全部副本来得到最新版本,适合大量写少量读场景下的强一致性。

(3)弱一致性:R+W<=N,如果读写操作的副本集合不产生交集,就可能会读到脏数据;适合对一致性要求比较低的场景。

Swift 针对的是读写都比较频繁的场景,所以采用了比较折中的策略,即写操作需要满足至少一半以上成功 W >N/2,再保证读操作与写操作的副本集合至少产生一个交集,即 R+W>N。Swift 默认配置是 N=3,W=2>N/2,R=1 或 2,即每个对象会存在 3 个副本,这些副本会尽量被存储在不同区域的节点上;W=2 表示至少需要更新 2 个副本才算写成功;当 R=1 时意味着某一个读操作成功便立刻返回,此种情况下可能会读取到旧版本(弱一致性模型);当 R=2 时,需要通过在读操作请求头中增加 x-newest=true 参数来同时读取 2 个副本的元数据信息,然后比较时间戳来确定哪个是最新版本(强一致性模型);如果数据出现了不一致,后台服务进程会在一定时间窗口内通过检测和复制协议来完成数据同步,从而保证达到最终一致性。如图 2 所示:

图 2. Quorum 协议示例

环的数据结构

环是为了将虚拟节点(分区)映射到一组物理存储设备上,并提供一定的冗余度而设计的,其数据结构由以下信息组成:

存储设备列表、设备信息包括唯一标识号(id)、区域号(zone)、权重(weight)、IP 地址(ip)、端口(port)、设备名称(device)、元数据(meta)。 分区到设备映射关系(replica2part2dev_id 数组) 计算分区号的位移(part_shift 整数,即图 1 中的 m)

以查找一个对象的计算过程为例:

图 3. 环的数据机构

使用对象的层次结构 account/container/object 作为键,使用 MD5 散列算法得到一个散列值,对该散列值的前 4 个字节进行右移操作得到分区索引号,移动位数由上面的 part_shift 设置指定;按照分区索引号在分区到设备映射表(replica2part2dev_id)里查找该对象所在分区的对应的所有设备编号,这些设备会被尽量选择部署在不同区域(Zone)内,区域只是个抽象概念,它可以是某台机器,某个机架,甚至某个建筑内的机群,以提供最高级别的冗余性,建议至少部署 5 个区域;权重参数是个相对值,可以来根据磁盘的大小来调节,权重越大表示可分配的空间越多,可部署更多的分区。

Swift 为账户,容器和对象分别定义了的环,查找账户和容器的是同样的过程。

时间: 2024-08-30 15:53:59

Openstack Swift开源云存储技术解析的相关文章

阿里云“盘古”是如何打造的? — 盘古底层架构及块存储技术解析

阿里云-飞天-盘古 董元元 同学在2016年云栖大会(北京)分享了<阿里云"盘古"是如何打造的? - 盘古底层架构及块存储技术解析>,高质量!!!

当今不断发展的云存储技术和产品有哪些

在过去的几年中,云计算的发展可谓是空前的,云存储的选择方式也发生了很大的变化.在几年前,云存储只是被开发者放在一些项目的数据仓库中,跨国企业中传统的IT团队现今致力于其生产系统的需要,以云为导向.这样的转变让我们看到了云存储技术的发展方向和时间阶段. 在Jeff Byrne最新的存储杂志专栏中,让我们了解到了推动云技术背后的三种主要的技术种类以及云存储的两大核心内容:数据内容和I/O.尽管Jeff Byrne并不能保证那些技术会是最为成功的,但有一点还是十分自信的,那就是对于不断增长的云市场将会

浅析云存储技术的发展现状和创新方向

起初,云存储作为在存储领域兴起的一种新技术,将复杂的存储架构和组织管理封装在系统内部,而对上层系统提供统一.灵活.安全的"云存储服务",由此将存储建设从系统建设上升到服务建设,对于存储的关注也达到空前的高度.然而随着需求的不断加深,以及对"服务"定义的多元化,云存储技术也如落入平静湖面的石子,激荡出一层又一层的波澜. 一.云存储的现状与创新 在安防行业中,存储的存在形式较为多样,传统如DVR/NVR.SAN.NAS等.各种存储方案的存在均满足于安防行业特定场景变化的

云存储技术和电子发现相结合

本文讲的是云存储技术和电子发现相结合,[IT168 资讯]首先,我们将云定义为基于云存储的技术.通常,这种定义意味着通过互联网提供可扩展的以及虚拟化的计算资源.但云不单单是这样,还有更多功能,而对于如何扩展该定义的意见也各不相同.  对于 电子发现 而言,基于云的计算主要表现为一个基于云的主机站点,并且在主机数据上运行的是 电子发现 的服务.但是,某些评论认为 SaaS 根据其定义本身就是基于云的计算,因为这种应用通过互联网提供.我不同意.我不认为,基于 Web 的软件发布或基于浏览器的应用程序

热门云存储技术你知道几个

摘要: 当前的IT产业中,"云计算"几乎成了时下流行元素,众多软硬件厂商开始将旗下产品逐渐移转到云端,或提出在云架构中的发展方向.其中属于存储领域的"云存储"扮演什么角色尚未清晰. 关键词: 云计算云存储存储技术 当前的IT产业中,"云计算"几乎成了时下流行元素,众多软硬件厂商开始将旗下产品逐渐移转到云端,或提出在云架构中的发展方向.其中属于存储领域的"云存储"扮演什么角色其实尚未清晰可见,但有一点可以肯定的是数据高速增长发展

浅析云存储技术中的几个重要问题

如今,云存储技术或许已经引起了业界的普遍关注,但是大型企业用户还不打算购买这类产品和服务,至少暂时还没有这个打算. 目前,厂商们正处于一种被某供应商称作"培训模式"的时期,它们正在向企业首席信息官.IT经理和其他IT买家解释,将他们的数据保存在公共或私有云中可以节省大量的成本. 各方似乎已经取得共识的是,云存储技术最终必然会蓬勃发展起来.毕竟,它在技术上具有可行性,比传统数据存储更加便宜,而且安全性也越来越高. 圣安东尼奥市的RackspaceHostingInc.公司的首席技术官Jo

云概念不容混淆:云备份VS.云存储技术

有关云的炒作已经模糊了云存储,以及云备份恢复和还原(云BURR)之间的界限.甚至使得云存储和云端的存储,以及"同步和共享"这样的概念差别变得模糊.许多供应商乐意与此,因为这使得他们的方案看上去对于潜在客户更具吸引力.不过模糊不清的云定义混淆了市场,妨碍了技术部署和推进的速度,并最终损害了市场中的每一个人. 本篇对云存储和云备份恢复和还原进行了比较. 云存储定义 云存储在许多情况下会和云端的存储混淆起来.虽然这种差别是非常明显的. 云端的存储是指用户或应用程序通过因特网或VPN连接云端的

【视频】张瑾谈云存储之“普通用户最先使用的云存储技术 ”_张瑾谈云存储之“普通用户最先使用的云存储技术 ”

张瑾谈云存储之"普通用户最先使用的云存储技术 "张瑾 Gartner 大中华区存储首席分析师. 长期专注于大中华区存储市场和技术的研究,同时负责全球虚拟磁带库技术的跟踪与研究. 1996-1999年 北京华仪科技发展公司工程师,技术部经理.技术总监: 1999-2001年 CA公司渠道销售经理: 2001-2005年 同有飞骥科技公司技术总监: 2005年加入Gartner.

云存储技术及应用

近年来,随着云计算的兴起,云存储成为信息存储领域的一个研究热点.与传统的存储设备相比,云存储不仅仅是一个硬件,而是一个网络设备.存储设备.服务器.应用软件.公用访问接口.接入网和客户端程序等多个部分组成的系统. 第1页:云存储技术 第2页:云备份应用 云存储提供的是存储服务,存储服务通过网络将本地数据存放在存储服务提供商(SSP)提供的在线存储空间.需要存储服务的用户不再需要建立自己的数据中心,只需向SSP申请存储服务,从而避免了存储平台的重复建设,节约了昂贵的软硬件基础设施投资. 云存储这个概