您现在的位置是:首页 > IT基础架构 > 计算存储 >
改进的云存储系统数据分布策略
2012-06-06 18:55:00作者:周敬利 周正达来源:
摘要本文针对当前云存储系统海量数据应用环境中数据分布策略可扩展性以及灵活性的不足,提出一种高效的数据分布策略。...
引言
随着现代存储技术的发展,网络存储系统逐步进入了云时代。云存储系统以传统的分布式存储技术为基础,利用高吞吐率网络技术为依托,一方面高效地整合管理网络存储资源,另一方面对外提供友好的接口,发布便捷的网络数据存储服务。简而言之,云存储的核心思想是将存储作为一种网络服务便捷高效地在线提供。云存储技术首先在产业界获得广泛的关注,目前,Amazon、Goode、IBM、Microsoft、SUN等公司分别提出的“云”平台架构,对于研究云时代的存储技术具有宝贵参考价值。例如,Amazon公司推出的s3平台。提供网络简单的接口向客户提供存储服务,可以视为云存储的标准范例;Google公司也先后推出了HDFS和HBase,在云计算环境中为其网络搜索以及相关应用计算提供文件级的存储服务支持。在国内,盛大公司于近期推出了云硬盘(ElasticBlock Senrice和云存储(cloud stonage)平台,分别提供在线块级和文件级的存储服务。云存储技术迎来r高速发展的契机,同时在技术方面也面临着诸多挑战。首先,随着数据信息总昔的扩大,存储系统为了满足需求必须不断地动态扩大存储规模。这使得存储系统必须能够支持新的存储节点不断加入,确保数据在各个存储节点的均匀分布,满足存储空间以及在网络带宽的负载均衡。其二,在海量的数据信息中,高效地查找定位目标数据成为了提高系统性能的关键。
存储系统必须可以高效完成在数据寻址,最大限度地减少平均响应时间,提供数据服务的吞吐量。以上两个技术问题可以通过高效的数据分布式策略进行改善或解决。学术界对数据分布式策略已经展开了广泛深入的研究,其中包含早期提出的诸如LH*、一致性哈希。引等经典算法,为解决该问题提供了思路。随着需求不断变化,技术也不断发展,在CEPH、Dynamo、GIGA+、Lustre、GPFS等系统中,根据不同的应用背景,提出了各自独特的数据分布解决方案。
本文对云存储技术展开了研究,介绍了一种管理海鼍网络存储资源的云存储架构原型,提出了一种高效的数据分布策略。该策略基于一致性哈希数据分布算法,利用虚拟节点分配法和基于节点容量感知的负载均衡法方法,改善了存储负载均衡的效果,提高了系统的性能。最后,文章给出了相关测试仿真数据,验证了上述优化方案的可行性和性能优势。
1 云存储系统原型
为了有效管理海鼍的存储资源,本文设计了一种PB(1 PB=1024 TB)级云存储系统原型。该原型系统基于对象存储设备(Object-based Stonage Device,OSD)技术,采用分布式的存储架构,提供PB级的存储资源,具有高可扩展性、高可用性的特点。图1为该原型系统的结构示意图。
如图1所示,整个存储架构可以分成三部分:存储客户端、元数据服务器集群以及存储资源池。其中客户端内嵌人用户或者存储应用系统内部,提供与元数据服务器以及存储资源池通信的应用接口,完成客户端与存储系统之间的数据交互功能。由于原型系统对存储应用接口进行了封装,元数据服务其集群以及存储资源池的底层架构以及工作方式对上层客户端是完全透明的,这使得用户无需考虑底层复杂的结构特征,利用简单的接口轻松使用存储资源,开发数据服务应用。元数据服务器集群用来管理用户数据的元数据信息,并且管理数据的存放位置以及冗余策略。元数据服务器对用户提供文件IO,处理来自客户端的文件级操作,并保存关键的元数据信息。存储资源他由多个存储节点构成,主要采用对象存储技术和分布式的架构,完成客户数据的保存,并提供数据的容错、容灾等功能。
图1 原型系统结构
2 一种高可扩展的数据分布策略
海量的网络存储系统必须支持在底层存储池变动(例如由于系统设备更新或者故障造成的存储节点的加人或退出)的情况下保持数据负载的均衡、数据寻址的高效。特别是随着数据量不断增加,网络存储系统面临着不断扩展的压力,对系统的可扩展性提出了要求。所以,为了满足这些技术需求,网络存储系统需要灵活高效的数据分布策略来确保性能。数据分配策略是在数据与存储地址之间建立起高效映射关系的方法,换而言之,是将数据合理地分配到存储设备中,并最大限度地简化寻址过程,同时确保存储资源和网络资源的合理分配。
本文提出了一种高可扩展的数据分布策略,给系统存储资源的扩展提供有力支持,并且保持了各个存储节点之间数据负载的均匀分布,具有高效的数据寻址机制。该数据分配策略的基本思想借鉴了一致性哈希算法的基本思想,井对基本算法的可扩展性以及负载均衡性能等方面进行了改进。与一致性哈希算法相似,系统采用哈希函数分别计算存储节点的ID值与数据对象的ID值,将存储节点的ID值映射到圆环形的地址空间上,然后再将每个数据对象的ID值映射到同一个圆环形的地址空间上,并沿着圆环地址空间顺时针寻找存储节点ID值,寻找到的首个节点确定为该数据对象的存放节点。因此,每个节点存储地址空间范围是圆环形地址空间的上个节点ID值到本节点ID值之间的范围。一致性哈希的基本分配策略如图2(a)所示。在哈希函数数学性质理想情况下,存储节点的ID值与数据对象的ID值在整个地址空间范围内均匀分布。这样,在存储节点数量以及数据对象数量达到一定门限时,睡个存储节点分配的空间近似于相等,数据对象在存储节点之间均匀分布。随着系统容量的扩大,实际中系统数量级往往远远大于门限值,分配效果可以近似于均匀分布。此外,用这种方法进行数据分布,大大减少了在新设备加人或退出时造成的数据迁移对系统整体性能带来的影响。在该基本算法的基础上,本文提出了两种优化的方法:虚拟节点分配法和节点容量感知分配法,进一步优化数据分布策略,提高系统的灵活性和可扩展性。
2.1虚拟节点分配策略
采用一致性哈希基本算法进行地址空间的映射在实际的应用过程中具有一定的局限性。因为存储节点在地址空间上的映射位置完全是随机产生的,所以存在一定概率造成地址空间分配不均,使得系统负载不均衡,整体性能下降。
针对以上间题,本文的分布式算法采用了虚拟节点分配法优化系统性能。本文提出的优化分配方法中,存储系统的环形地址空间被划分为相等的N个存储地址段,作为地址分配的基本单位;假设初始情况有。个物理存储节点,每个物理存储节点分配多个虚拟节点ID( Virtual ID, VID),第i个物理存储节点的虚拟节点数记作mi,其中n大于等于n*max(mi);然后采用一致性哈希的原则,以N个存储地址段作为地址分配的基本单位,沿着环形地址空间顺时针分配地址空间。以上虚拟节点分配策略如图2(b)所示。在理想情况下,存储数据对象的IB通过哈希函数同一生成,在环形的地址空间上均匀分布。存储对象通过一致性哈希基本算法的原则寻找相应的节点位置进行保存。
图2数据分配策略算法
在原型系统中采用SHA-1数作为地址映射的哈希函数,存储对象的key值通过SHA-1函数得到,并且用它完成寻址。该哈希索引值为160比特。根据前面的介绍,将160比特的地址空间划分为N个存储段,N取32比特。这样每个存储段理论容量为2个存储对象。由系统介绍可知,本文的系统平台可以分成前端元数据服务器和后端存储池端,前端的元数据服务器为主控端,后端的存储池段为资源节点端。
虚拟节点加入操作的伪码段如下:
物理节点作为资源节点连接主控端后主动向主控端发送虚拟节点ID信息new_vid申请存储空间。在主控端获得该信息后,做如下操作:1)在环形的存储空间内查找new_vid前一个节点vid_pre和后一个节点vid_next的相关信息;2)通过后一个节点vid_next的信息计算新虚拟节点的地址范围,并将该地址范围以及vid_pre节点的相关信息发送给申请虚拟节点的物理节点;3)向vid_pre节点端发送相关信息,命令该物理节点更新虚拟节点,使其启动数据迁移操作;4)数据迁移操作完成后,与两个物理节点确认后,更新路由信息,完成虚拟节点加入。
虚拟节点退出操作的伪码段如下:
虚拟节点退出操作是指实体节点释放虚拟节点资源的一种方法,实质就是虚拟节点的数据从一个旧实体节点迁移到另外一个新实体节点的过程中,旧实体节点将资源释放的过程。虚拟节点退出做如下操作:1)获得oblete_ vid信息,并在环形的存储空间内查找oblete_vid前一个节点vid_pre ; 2 )向oblete vid节点端发送vid_pre节点端相关信息,触发数据迁移操作;3)数据迁移操作完成后,与两个物理节点确认后,更新路由信息,完成虚拟节点加入。此处节点退出程序讨论的是系统的一般调节机制,并未考虑节点设备故障或网络故障的情况。后者造成的虚拟节点的退出具有突发性,所以,数据迁移往往是通过其他相邻节点的副本完成的,这里涉及到副本放置策略,由于篇幅原因,此处不详细讨论。
以上改进算法为本原型系统提供了可扩展性的数据分布策略,不但保持了一致性哈希基本算法的优点,在节点加人退出过程中减少厂数据的迁移;而且引人了虚拟节点的思想,将物理节点与逻辑节点分离,以均匀单位地址段作为节点地址空间划分的基本单位,使得数据分布策略更具灵活性。引入虚拟节点后,一方面,解决r物理存储节点数量有限时,采用一致性哈希较难达到负载均匀分配的问题。在物理节点有限时,每个物理节点可以分配多个虚拟节点,使得节点分布更加均匀,达到负载均衡的效果。另一方面,由于节点地址分配的随机性,可能造成特定某个节点负载过大或过小。该优化算法提供了负载微调的机制,对负载过小的节点可以增设虚拟节点,达到整体的负载均衡。
2. 2基干节点容量感知的分配方法
在大多数的存储系统中,随着系统存储设备的更新升级,新加人的节点往往具有更高的带宽,更大的存储空间。而基本的一致性哈希算法,所有节点默认为资源对等,地址分配的结果只是满足统计学意义上的均匀分配。所以基本算法的使用环境默认为由同构存储节点构成的存储池,无法在存储资源分配过程中体现存储节点之间的性能差异。
所以,针对该问题,本文在虚拟节点分配方法的基础上,提出了基于节点容量感知负载均衡策略,对分配方法进行优化,提高系统数据分布策略的灵活性,从而提高系统的整体性能。该优化方法的实现基于以下假设:存储对象的哈希值呈均匀分布,并且各个存储地址段的存储开销呈均匀分布。优化的基本思想是对每个物理节点的资源进行估计量化,根据整个系统的节点资源情况,对物理节点分配的虚拟节点数进行调整,从而进一步优化物理节点间的负载均衡。对于每个物理节点分配调节因子功,该参数表示该物理节点的资源分配权值,可表示节点的容量或者带宽等,原型系统设计中采用的是对容量资源的量化权值。然后。统计每个物理节点的所分配地址空间的大小,。基于前提假设,,值可以表示该节点所分配存储开销;设P=s/w,作为物理节点资源利用率量化值。系统通过统计计算,获取尸的均值,并设定门限值Phigh和Pkw.,当节点超过门限范围时,采用增加或减少虚拟节点的方法,均衡整个系统负载图3为该策略具体的实现流程。
图3节点容量感知负载均衡程序流程
基于节点容量感知的分配策略采用分布式的方式完成,存储资源节点通过主控端获得相关门限值,并计算自身的相关参数,实时比较。当本节点的参数尸值小于下限值Pkw时,进行申请虚拟节点操作,请求信息被发送到控制端,调用Join函数完成操作(2. 1节有详细介绍);同理,当本节的参数P值大于上限值Phigh时,进行退出虚拟节点操作。此外,在主控端保存着节点的信息,很容易获得理论均值。门限值的设定采用如下公式:
其中:P是P的均值;N为物理节点数;:为物理节点所有虚拟节点地址范围之和;w为存储资源标准化权值(例如采用50 GB为单位,200 GB的节点w值为4, 100 GB的节点w值为2)。值得注意的是:当k过大时,会影响到负载平衡的效果;当k值过小时,会造成虚拟节点的频繁增减操作,甚至造成某些物理节点的虚拟节点数出现“颤动”(频繁来回增减虚拟节点),造成极大的系统开销。此外,k值的极限值与物理节点的个数有一定关系,当物理节点数越多时,k值可以设得越小。
以上便是基于节点容量感知分配策略的实现方法,在前提假设成立的情况下,该方法为系统存储资源的合理利用提供了更加灵活的机制,确保了系统存储资源的负载均衡。
3 实验结果与分析
下面对本文提出的数据分布策略算法进行实验验证分析。首先,对原始的一致性哈希算法与本文提出的改进型虚拟节点分布算法进行比较。在原型系统中采用SHA-1函数作为地址映射的哈希函数。存储对象的key值可以被看作在值域范围内均匀分布,所以存储地址段大小与其保存的存储对象个数成线性关系。在比较两者的负载均衡优劣度时,本文采用地址分配后各个物理节点所分配空间的方差来衡量。在比较过程中,为了扩大物理节点数量,采用了仿真的方法。其中,前者原始的一致性哈希算法的物理节点ID值通过采集的网卡物理地址哈希计算而得;对于后者,某个物理节点的第一个虚拟节点的ID值计算与前者一样,后面虚拟节点的ID值通过前一个虚拟节点的160比特ID值继续哈希计算获得,若该值落入本节点已有空间,则重复上述过程。
图4中,改进型的虚拟节点策略算法为每个物理节点相等地分配3个虚拟节点。在方差计算过程中,取地址空间的高10位进行了估算。该方差值反映的是各个物理节点分配数据量的均匀程度,该值越低,分配越均匀。从图4可以看出,物理节点较少时,采用虚拟节点的策略,其方差远小于原始算法;在物理节点数大于35之后,两算法效果开始接近。由此看出,在物理节点有限的情况下,虚拟节点的策略对存储负载均衡效果良好。
图4原始算法与虚拟节点策略负载均衡性能比较
以上针对的是同构分布式存储环境中的情况,每个物理节点存储资源相等;接下来考虑异构分布式存储环境中的情况,即各物理节点存储资源存在差异。在物理节点存储资源不相等的情况下,采用了基于节点容量感知分配策略与均匀分配虚拟节点策略两种方法进行了仿真测试,两种方案的方差比较如图5所示。
图5容量感知分配策略与均匀分配虚拟节点策略负载均衡性能比较
图5中,均匀分配虚拟节点策略的方法采用每个物理节点平均分配3个虚拟节点。其中w值为0. 5,1, 5,2的节点各占1/5,w值为1的节点占2/5 ; k值取25 %。图5中纵坐标方差值为物理节点参数P的方差值。P值的方差值反映的是各个物理节点按照存储资源分配数据量的均匀程度,该值越低,分配越均匀。从实验结果可以看出,容量感知分配策略P值方差始终小于均匀分配的方法;而且感知分配策略的P值方差随着节点的增加向零值收敛,而均匀分配策略的P值方差收敛于0值上方。这是因为均匀分配的方法未考虑物理节点间存储资源的差异,使得各物理节点所保存的数据量相等,这在系统中可能造成某些存储资源少的节点存储空间负载过满,而同时存储资源相对多的节点存储空间仍有大量空余;而容量感知分配策略考虑了物理节点间的差异,各个物理节点的所保存的数据量根据其存储资源按比例分配,存储资源越多,分配的数据量也按比例增加,所以存储负载均衡效果更加优异。
4 结语
本文对云存储领域的技术展开了研究,介绍了一种云存储的基本架构,提出了一种适用于云存储架构的数据分布策略。该策略以一致性哈希数据分布策略为基础,引入了虚拟化设计思路,采用虚拟节点的分配策略,并提出了一种基于节点容量感知的负载均衡方法,有效优化了系统的性能,提高了系统的可扩展性。通过最后的实验验证,该数据分布策略相对于原始算法,在负载均衡的性能上更具有优势。特别在异构的存储池中,采用节点容量感知的分布策略进行了针对性的优化,获得良好的效果。
(本文不涉密)
责任编辑: