Low Power Mode in Cloud Storage Systems中文翻译

来源:互联网 发布:wannacry蠕虫勒索软件 编辑:程序博客网 时间:2024/06/01 09:36

题目:云存储系统中的低能耗模型

Danny Harnik,Dalit Naor and Itai Segall IBM haifa 实验室,haifa,以色列

摘要

我们考虑包含冗余机制的大规模、分布式的存储系统,云存储是一个最典型的例子。我们调查研究了许多系统,这些系统可以通过应用某一低能耗模型降低它们在不应用时的能源消耗。在一个低能耗模型中,磁盘或节点的一个子集会被关掉,而且我们要求每一个数据项在系统中还是可以访问的,这被称为完全覆盖。包含之一操作于存在的系统而不是重新设计一个系统是目的。当这样做时,在正常的完全开机操作,重点是低能耗选择不应该影响到该系统的性能或者其他重要的特点。这一工作是一个意义重大的研究,研究在完全覆盖低能耗模型的情况下,什么事能完成的什么事不能够完成的。

这篇论文对一般的分布式存储系统和特别流行系统同提出这一问题,这些系统是设计在云平台的存储系统。其中一半的分布式存储系统的研究的主要部分是系统的配置函数。我们的研究和技术是对更大范围的系统有帮助的,从企业的分布式存储系统到云数据服务。在云环境下,低成本已经是势在必行,节约能耗对大规模系统具有十分重要意义。

1介绍

1.1动机和背景

存储系统的节能在将来系统的设计和应用方面已变为一个重要方面。今天全世界范围内,IT系统消耗的能源占总消耗能源的1-2%[1]并且在接下来的4年这个数字要变成两位数(根据[2],2006年US数据中心消耗了美国全部电力消耗的1.5%)数据显示存储系统已是继计算资源之后IT的第二个最重要部分。在一些情况下(比如,大的数据中心)消耗多达40%的全部能源[3,2]。由于以下两个原因,这个比率还会增长。i)计算资源的能源消耗已获很多注意将会变得更加高效利用。ii)数据泛滥(在未来的5年预计会增长10倍)将会增加存储系统对全部能源消耗的贡献。因此管理数据中心时降低能源消耗已成为其中心目标。在云环境下这种状况显得尤为重要,因为云环境的大规模和非常重要的低操作成本。

在存储系统降低能源消耗的很多方法是关闭一些存储设备。有些方法是智能的围绕数据中心存放数据(或者是动态的移动数据)去允许关闭不常用的设备。其中最著名的有MAID[8],Popular DataConcentration(PDC[20]),Hibernator[29]和Diverted Access(DIV[21])。其他方法(比如[19]和Pergamum[23])利用技术延迟对一些存储设备的访问存在的这些方法给出了一个综合性的结论将在1.4部分给出。

在这篇论文中我们聚焦大规模和分布式存储系统(如,[12,26,17,1o,5,6])。这样的系统一致性的建立在冗余的基础上,要求可用性,可理解性。我们研究多少系统通过应用低能耗模型可以降低它们的能源消耗在它们处于很低的应用时间时,和在[21]的环境研究很相似。(参照1.4部分)。我们的重点是当系统在正常工作下,在不改动系统如高性能高可用性等的特性是我们获得能源节约。问题是,是否系统在低的利用率时段(如晚上,周末等)可以用来高效的降低能源消耗,如果可以的话,应该怎样才能做到。

1.2模型和问题

我们的研究目标在于,在现有的系统中最小程度的破坏原有系统实现一个低能耗模型,并且无论如何都要利用现有的机制。(如,定位函数或者冗余表)通常的做法是在低应用的时候关掉系统的一个磁盘或者节点的子集。而且我们要求每一个数据项可以再随时被访问到。在地引用期间,可用性和性能指标也许会被更改,可靠性同样必须被保持,因为多余的复制副本可以被恢复。

在我们的模型中,系统由可以独立开或者关的个人存储节点组成。(一个存储设备像磁盘或者控制器,一排甚至是一个数据中心的一部分。)数据被分为冗余单元(块,段,客体,文件),并且每一个单元的数据和冗余被分到许多不同的访问系统的定位函数存储节点。其他主要特性是,存储系统有活跃和不活跃的应用周期。我们考虑的低应用的时间周期都是比较长的,例如,晚上或者下午5点到第二天早上的九点。目标情景磁盘停止旋转式典型的没有打开在低应用期间。尽管有许多限制关于大量的磁盘开关,在我们的模型中磁盘不可能到达极限,同样应用对关之间,我们假设期限已远远超过了它。

这一工作的着眼点在于研究如今存在的系统,而且最小程度的改变系统,特别是最小程度的改变系统数据的定位函数。经典的设计话费很多努力在选择一种定位函数,这种定位函数最优化系统的变化,像性能、负载均衡、可用性、错误恢复的效率、位置识别。这些性能在工作负载时别设计为最优化的应用。在系统没有活动期间,我们为了达到节能的目的希望关掉这些功能。然而,选择一种低能耗的方式而且不影响太多系统在全能工作时上面提到的系统的性能是很必要的。因此我们努力使在任何情况下都不改变系统的定位函数。我们注意到如果某个系统允许调整定位函数(当忽视系统的其他性能时)那么就会很容易设计出可以完成最优化低能耗的模式,正如文献[21]中所描述的那样。

另外,我们的目标是,在任何时候,特别是在低能耗模式下,获得数据的全覆盖使得访问每一个数据项一直是可以的。这和其他的方法是相反的,其他的方法是试图最大化的覆盖并且允许磁盘不不经意的加速。例如,在[8,20,29,25]中提到的根据它们的访问模式组织数据来最大化的覆盖经常访问的数据。这种方式有很多缺点,包括需要分析访问数据的方式和不可预测性的访问方式(看1.4部分更深入的讨论)。相反,全覆盖模式可以处理任何类型的数据访问方式,因此可以应用到通常的存储系统。而且,全覆盖方法可以支持像需要访问每一个数据项的商业智能和搜索。例如,考虑一个这样的系统,在白天绝大部分工作执行写操作,在晚上执行分析数据的操作(例如,HDFS[5]或者GFS[12]集群在晚上运行MapReduce的工作)。这种分析通常要求全部是读访问,但是几乎不进行写操作,因此特别适合低能耗模式的全覆盖。

最后,大部分的论文把冗余机制看作是复制的一种(每一个数据项有d个副本,对应d个不同的节点)。然而,我们的结果漂亮的得出纠删码的实例(参照3.4部分)。也就是说,潜在的能量消耗(并且确实获得了能量的节约)比复制情况下要更低,原因是为了全覆盖,系统仅能够关掉冗余的数据,纠删码中有大量的冗余要比复制中多很多(许多要求的代码放在了更小的空间里)。例如,一个RAID6机制仅仅增加了50%的数据量,而复制会放大到100%的增加量(当d=2时)。注意到选择冗余相当于额外增加了存储容量,我们不会用复制而是用错误改正机制的纠删码。我们也不会鼓励用更大的复制,因为这些仅增加了能量消耗其他什么也没有给我们带来好处。复制在云存储中是一种流行的选择方式(比如,谷歌的GFS[12],亚马逊的Dynamo[10],Hadoop的HDFS[5],Facebook的Cassandra[6]等等)主要因为更容易处理,更容易管理还有更好的可用性。因此,在这篇论文中很多积极的结果都是关于云存储的。

我们的分析主要聚焦在READ操作的处理上。WRITE操作的处理机制在前面已经解决了像在DIV[21]和写道德卸载[19]都已经说明了。

1.3主要贡献

这篇论文给出了对一系列低能耗模型解决方案一个深层研究对现存的基于复制的分布式存储系统起到了杠杆的作用。我们第一次考虑不调整系统的定位函数这样系统的花费可能会增加。之后我们说明了在不调整系统的定位函数而降低系统能耗的可能性。

我们引进了一种对任何一种定位函数系统获得全覆盖的方式,通过用辅助节点。我们提供了在复制因子和大量的辅助节点之间的权衡,节约能源消耗成为可能。例如,我们从负面证明了对于一些系统用2复制因子只能节约非常少的能耗。随着复制因子的增长,实际上可以得到更好的结果。特别是对3份复制获得超过40%的能耗节约而仅仅增加了5%的额外存储。我们分析这种方法当应用在通常的系统中的时候。

我们得到的主要结论有:

对每一种复制因子为d的定位函数,当关闭大小为p比率的一个子集时,有p的d次方数据项没有被覆盖到。许多配置中这种是最好的一种情况。

对一个不同的配置,找到一个节点的子集使得最好的覆盖数据 项是P困难问题。比如像布置贪婪算法;它们可以尽量好的实现能耗节约。

对于随机配置机制,我们可以看出增加辅助节点是实现大量节约能耗一直要求的。因为很多系统执行配置要么是随机的要么是伪随机的,所以说分析随机行为是非常重要的(为了实现完全平衡和性能)。我们实现了在复制因子和大量辅助节点之间的权衡。

我们分析了最常用的一种定位函数,即一致性哈希算法它已经部署在像CFS[9,Oceanstore[17],Dynamo【10】和Cassandra【6】。我们得出一致性哈希算法(有或者没有虚拟节点)很自然的提供了一种低能耗模型,特别是比随机定位函数更适合这种  能耗节约。

在一个分层机构中,(例如一个由集群节点虚拟机集群或者数据中心集群组成的系统,这个系统当中的集群节点具有多重磁盘)。去调剂低能耗配置为了去完成最佳能好节约。

在这篇论文中的这个结果可以用到是否一个真实的系统可以再低能量利用的时候提供低能耗方式,如果是这个样子,那么我们应该怎样做,做些什么。

1.4相关工作

这种权衡性能和能量消耗已经在过去出现和部署 过了。我们在下面列出了我们所做的研究:

关掉闲置磁盘:这是过去用到过的能耗节约范式。这种观念简单的描述为一旦磁盘处在闲置状态很长时间就关闭磁盘。

有很多方法帮助磁盘更长时间处于闲置状态为了关闭磁盘。多组闲置磁盘(MAID)[8]提供读数据给缓存磁盘。流行的数据集中(PDC)[20]把流行数据收集起来。Hibernator[29]根据流行性把可变磁盘速度和数据中心结合起来来节约能源。这些方法的一些缺点如下:(i)它们对很少访问数据的系统是有利的,像档案系统;(ii)这些方法要求在访问数据是要智能;(iii)收集流行数据,而不是均匀的分布它们,已经严重影响到了系统的性能。和(iv)如果静态数据在系统中累积了很长一段时间,那么能好节约也许仅仅是逐渐的踢而且要求在存储单元中移动大量的数据。

利用冗余:移动访问方法(DIV)[21]理所当然的认为副本是最接近我们的工作的。它倡导解析在磁盘的部分子集中的起初复制的数据允许关掉余下的磁盘进而通过这种调整显示出了获得能源节约的潜力。我们注意到这种对定位函数的修改会影响到系统在全能工作时的性能(更多信息请参考第五部分)。相对的,我们的研究聚焦在能获得相同的能耗节约的同事又最小程度的修改已存在的系统设计。我们研究既不改变配置又能成功的访问更新的数据的方法。

开发利用冗余机制的其他工作包括EERAID[18],RIMAC[28],和PARAID[25];他们研究了利用RAID系统节约能耗的可能性。他们的方法只能用来解决在一小部分磁盘编码的情况,不能更大范围把分布式冗余机制的应用到整个系统中。Greenan等人研发了冗余机制--纠删码家族的特例,他们认识到了编码的力量。

注释和参数:在整篇论文中我们用术语节点和存储单元来表示一个数据项的完整的存储子集,它可以独立于其他的数据单元关闭。一个数据项相当于一个数据的基本复制单元,实际上也可以看做是一个数据块,一个物体,一条或者一个文件。在论文中术语数据项不用做真是的数据单元。

系统的复制因子是对每一个数据复制的次数,用d表示。M是节点或者存储单元的数目,N是系统中数据项的数目,p是被关闭节点所占的比率,A(low)是低能耗模式所占的总时间比率。如果一个熊未关闭的节点只有1/d,并且这些节点的至少包含所有数据项的一个副本,那么我们就称这种低能耗模式为最优的模式。

论文组织:第二部分描述的全覆盖可以看作一种图的覆盖问题;它提供了更多而且更少的限制在任意定位函数覆盖的大小和相应辅助节点的多少。第三部分给出了一个普通框架;讨论怎样选择一个设计好的关闭子集用来节约能耗。4.1部分分析了定位函数的特殊情况,4,2部分分析了一致哈希函数。在第5部分我们讨论了当考虑配置低能耗模式是定位函数的情况。在附录里我们增加了对待异构系统,调整定位函数的可能性。

2覆盖问题

我们的想法是在理论上找到一个被指定关闭最大的节点子集。标准就是剩下的节点应该尽可能多的涵盖数据项的数目(至少应该包含这些数据项的一个副本)。现在问题可以很自然的描述为如下一个图论问题。输入的是一个二部图,它包含两部分,左边包含M个顶点(表示系统中包含的节点数),右边包含N个顶点(表示数据项的数目)。在右边的每一个数据项有d条边连接左边d个不同的顶点(表示d个数据项驻留在的d个不同的位置)。对给定的一个分数,0<p<1,我们现在的目标是找到一个大小为Mp的系统节点子集,使得剩下的节点覆盖尽可能多的数据项。如果有一条边连接到子集中的一个节点,那么我们就称一个顶点被一个子集覆盖了。我们的最终目的是给出一个图找到一个子集,这个子集的指标中p(系统中被关闭的节点所占的比例)最大,并且没有覆盖到的数据项的比例最小。

如果所有的数据项都被覆盖了,那么这个方案就完成了全覆盖。而你可以很简单的设计出没有实现全覆盖的定位函数,甚至这个定位函数中的p非常小的,随机定位函数就是一个这样的例子(参照4.1部分)。那就是说,我们给出的所有的定位函数都包含至少一个像样的覆盖,像样的地方就是一个复制因子的参数d(d越高覆盖的越好)。

引理2.1

对任意一个定位函数,复制数为d,对任意的p且0<p<1使得Mp是正整数,存在一个大小为Mp的子集,使得剩下的节q(p,M,d)够覆盖至少(1-q(p,M,d))比例的数据项,其中q(p,M,d)=[Mp!(M-d)!]/[(Mp-d)!M!].注意其中q(p,M,d)<p^d,并且随着M的增长,q(p,M,d)会越来越趋向于p^d。

证明:设定一个定位函数并考虑随机选择节点的子集。用Pi其中P的下标i输入数据项的个数N,表示第i个数据项的所有的d个副本都属于前面给定的那个节点的子集的可能性。因为这个子集的选择是随机的,可能性(这个子集必须包含这d个副本并且自有选择剩下的Mp-d个节点)。这实习上对每一个是独立的,尽管可能性会高度相关连,我们用表示这个随机的节点子集所覆盖的数据项的期望值。线性的期望值,因为这个期望值涵盖了所有这样子集的可能性,那么至少一个子集涵盖了项数据项(因此期望值会更小)。

我们注意到对引理2.1的证明是非结构性的,在某种程度上给了我们一些子集怎样做到更好的覆盖,只要这样的子集存在。在引理2.1中用到的参数都是很严谨的,从下面的断言可以看出:

断言2.2:存在定位函数,对任意的大小为Mp的节点子集至少存在比例的数据项没有被覆盖到。

证明:

通过下面的简单例子来证明。考虑一个含有M个节点个数据项的系统(对小的M和d来说这是一种合理的参数化)。定义在数据项和大小为d节点的子集之间一个单射(数据项的一个复制存储到相应子集的每个节点)。对每一个这种子集都会有一个数据项。任何指定的大小为Mp的子集都会剩下确切为大小的未覆盖到的数据项数目。最后考察

结论:以上的陈述即可以看作积极的结果,也可以看作消极的结果。一方面,它展示了实现除了比例数据项之外的全覆盖的可能性,通过关闭p比例的节点,无论何种定位函数。对一些实用的参数实现了一种像样的节能这将在第3部分阐述。另一方面,这样也形成了对一些定位方案可能的节能形成了限制。因此,在某些环境下,这样的一个复制数为2的随机定位函数,它没有改变定位函数看起来是无效的。

找到最佳方案是困难的:我们下一步的工作是证明在一个普通图中找出最优覆盖是P困难的问题。这可以用其他图问题表示,图问题就是超图中的点覆盖问题。考虑一个具有M个顶点的超图(每一个顶点代表系统中的一个节点)。在图中有N个超边,每一个超边连接d个顶点(边表示数据项,超边连接数据项所在的所有节点)。解决覆盖问题相当于一个尽可能小的节点子集,这个子集连接尽可能多的边。在一种特别情况下,d=2,这转化成一种典型的顶点覆盖问题(Karp曾经整理的21种NP-hard问题中的一种[16])。带有常数d的普通问题更加难以近似,(参考文献[11])。我们得出了一个这样的结论:找到一个最大覆盖问题是P困难问题,因此我们应该采用试探法和近似法来找到 一个好的子集(参照3.1部分)。

在动态系统中的覆盖问题:注意,在特定情形下,能不能找到一种最优的方法是不重要的。原因是我们处理的系统是动态的系统,覆盖问题所对应的的图随着时间在不断的变化(数据项可能来了又走,新节点可能会增加了又被移除)。这些变化改变了最优解决方案,因此现在是最优解,将来可能就不一定是了。另一方面,因为改变绝大多数都是发生在本地,他们不会改变很多。也就是说,一个好的解决方案将会在一段时间内保持是好的解决方案。因此,我们的研究是去找到对全覆盖问题的一个好的解决方案(不一定是最好的解决方案)并且用这个好的解决方案一段时间。

3存在定位的低能耗模型的一般框架

我们已经确定对某些定位函数,不可能找出一个子集来完成对数据项的全覆盖。也就是说,当关掉节点的一个子集时,我们必然会使得一些数据项覆盖不到。为了避免这种情况,我们对系统引入了辅助节点的概念,作为一种手段来完成低能耗模型而且使得在任何时间系统的所有数据项都得到覆盖(从而避免加快磁盘自旋的时间延迟)。这一点在引理2.1中有介绍到辅助节点,我们清楚的知道辅助节点的数目要比我们关掉的节点的数目小的多(和p相比)。因此我们即可以用少量的节点来替代大量的被关闭的节点又可以完成对数据项的全覆盖。

我们下一步在更高层次给出我们的一个通用框架,用详细的数据来实现定位函数的部署。

1.找出一个合适的确定的被关闭节点子集:第一步是找出确定的被关闭节点子集,已达到对覆盖问题给出一个合适的解决方案。这一步可以用大量的试探法来做(参看3.1部分)。根据系统变化的参数选择适当的d,如3.2部分所讨论的那样。

2.构造辅助节点:一旦选出了被关闭的节点子集,我们就该构造辅助节点了。一些额外的节点包含了增加的数据项副本,而那些增加的数据项副本在低能耗模型中是必然会被增加的(因此系统包含了这些数据项的d+1个副本)。更加精确的说,一个数据项在辅助节点有一个副本当且仅当这个数据项的所有d个副本都在被关闭的节点子集中时。

3.低能耗模型:步入这个模型,我们应该关闭被选出的所有节点。

读操作:当读操作访问一个开着的节点的副本时,如果这个副本不在这个节点上,那么就需要重定向到辅助节点去访问。

写操作:写操作对所有的开着的节点是需要定期执行的(包括对辅助节点的写操作)。除此之外,所有的写操作包括对关闭节点的日志记录,为了在打开这些节点时能够完成写操作。为了防止日志文件阻塞,我们可以有选择的打开被选择关闭的节点为了解除写日志。参照3.3部分对写操作的更深入的探讨。

4.系统唤醒:应用写日志,在这个过程的最后,所有的数据项的d个副本应该被放到适当的位置(根据定位函数)。

5.全能耗模式:系统运行在除了辅助节点的一个普通节点上的操作维持在线验证。也就是说,对指定子集中的所有数据项每一次写操作被执行了d+1次。在辅助节点对规律的复制和额外的写操作是d次。

除了上文所述,一个典型的系统应该要求指定子集定期更新。这可能会因为数据的显著变化而被调用,这些显著变化包括分布变化或者增加或减少节点的数目。也可能会改变子集处于重启的考虑。因为磁盘的自旋加速或者自旋减速都会减少磁盘的寿命,调整别关闭磁盘可能会对实现最长磁盘失效时间有利。

最后,以防在低能耗模式下节点失效,系统必须唤醒被要求回复丢失数据的所有节点。根据数据失效的严重程度和定位机制,这可能导致开启除了一个节点的整个系统。

3.1怎样选择确定子集

可以用不同的方法选择一个指定的集。在某些情况下,定位函数知识了一种可以实现很好覆盖的简单的选择(参照4.2部分提到的例子),而对其他的情况我们需要提供变化的搜索机制。一般来说,对覆盖问题来说任何号的近似试探方法在这里都可能被用到,技术的高效性可能会非常依赖于潜在的定位机制。不仅覆盖被实现的质量,我们还需要这种技术的效率和强调在分布式系统中运行这种技术的能力。这里我们考虑两种主要方法。

选择随机子集  这种方法对实现进而提供一种解决方案,这种方案最接近期望值(即,大约p^d数据项没有被覆盖)。一种简单的完成改善的方式是形成大量的子集并且利用其中一个子集给出最好的覆盖。这会是非常高的可能性形成一个比期望值更好的结果。

贪婪算法  贪婪算法在概念上是不断的向自己添加节点,每一步向自己添加一个目前来说最好的候选节点。例如,一种方法是选择没有指定关闭的自己的节点(即开着的节点)。每一步我们选择覆盖最多数据项的单独辅助节点。贪婪算法提供了一种非常成功的在我们涉及到的覆盖问题上。事实上,S ¨ umer [24] 显示在我们的环境中(超图上的顶点覆盖)贪婪算法在常数因子内是最好的解决方法。

虽然贪婪算法对几乎任何情形都是非常可行的,它的效率却是非常依赖于系统结构的。比如在一种集中地管理行为中,它要求枚举出所有的可用节点并且在每一步中找到最好的选择。每一步相应的节点会计算目前的覆盖情况,并且提示这是中心部分这部分要求简洁的找到最大值。这要求中心部分广播目前选择的节点的清单从所有的剩下的节点当中。

3.2选择分数p

在选择确定子集时的一个中心问题是确定它的大小。我们给出了一般情况下的一种最优的方法,最小的未覆盖子集所占的比率是。这种方法可以根据定位函数来修改。为了获得能耗的最大节约,我们需要建立一个参考低能耗模型的一种能量节约模型。在我们基本的简化模型中,我们假设在操作模式下所有的节点消耗相同的平均能源,当节点被关闭的时候就不会消耗能源。事实上打开或者关闭也增加了一些能源的消耗,但是因为我们假设低能耗模型维持在一段相当长的时间之内。假设低能耗模型占了比例的时间。可行的选择可以是(一天有八个小时是关闭的),或者是占了一周所有的工作时间,工作日是是上午九点到下午五点,我们想知道什么是能量节约,作为p选择的一种时间。下面是有两个因素需要去考虑。

1、关闭磁盘,这样占了全部能量消耗的比率。在真正计算的时候我们应该把估计的比我们希望的要更小一点(比如,让=0.3而不是=1/3)。这里减少的量相当于抵消了额外的消耗,比如运行或者关闭磁盘或者由于写负载过重关闭或者磁盘毁坏这些都需要消耗额外的能量。

2、增加辅助磁盘,这些增加的辅助磁盘在任何时间都在运行,并且应该覆盖到比例的数据。相当于提供了个节点,这些节点消耗了比例的总能耗。

总的节能是为了找到这个函数的最大值,我们找到这个函数的零点。零点是因此自变量p的最大值。表1显示了从这种选择中可供选择的值。同在表1中看到的那样,最大的节约也许要求非常大的辅助磁盘数(例如,对这样一组数据最好的节约能耗要求大约有216辅助节点)另一种情况,我们可以设可用辅助节点数为,通过含有的式子得出最优的可获得p的值。例如,在的情况下,关闭节点所占的比例大约是,这占了大约0.3的能量节约在低能耗模式下。(和0.58相对应,在的条件下)。当没有最好的可能,这也许是在借助辅助节点在更低开销的前提下相当好的节约能源了。在表2中我们根据这种方法列出了一些可能的参数。

表1:对两种工作负载情况,(深夜的八个小时是关闭的低能耗模式)和(只要不是工作时间就是低能耗模式时间),继而根据复制常数d的不同选择我们需要计算出使得能耗节约最大化的。为了这个计算出这个数值我们计算了再要求的辅助节点的最大数量和常规节点的数量的比率估计出总的能耗节约百分比和低能耗模式下每小时的节约能耗百分比。


表2:我们把在系统中辅助节点所占的分数固定为两个数值(0.01和0.05)接着研究随着复制常数d和工作负载的变化,关闭子集的比例p,估计总的能耗节约百分比和低能耗模式下的能耗百分比。我们看到一些选择仅仅很小的能量节约(像d=2时),但是例如d=3,,和5%的辅助节点时在低能耗时间内有46%的能耗节约得以达到。这一能耗节约百分比随着复制数d的增大而提高。

3.3讨论

辅助节点和部分覆盖:我们提出了一个论点,用辅助节点来覆盖剩下的没有被覆盖的数据(在某种意义上,为这些数据项创建d+1个副本)。另一种情况是留下一定比例的没有覆盖到的数据,或者是在读这一比例的数据时不希望的磁盘加速所带来的风险。我们对我们的方法有一些补充说明:(i)为了覆盖q比例的未覆盖数据,系统仅仅需要q/d比例的节点数。这一比例d也许非常大。例如,在d=3,p=0.53辅助节点的比例在内存方面会以5%速度增加,否则就会相应的有15%比例的数据丢失。(ii)希望q比例的未覆盖数据可以包含几乎所有的不受欢迎的数据这种提法很诱人。然而,在案例中我们的研究(即随机定位和一致性哈希)发现这个比例是随机的分布在整个数据项上的,换句话说就是未覆盖的数据以相同的概率包含系统中受欢迎的数据。

另一种方法是只要为未覆盖数据的比例调整定位目录就可以了。这样一种解决方案的复杂性和剩下的数据项所占的比例q相比更小。同时我们也注意到在这个问题中,无论怎样系统不能够通过辅助节点得到因子d。(例如,q/d的节点数覆盖了q比例的数据)。

应对写操作:与读操作不同,写操作需要访问数据项的所有副本。在低能耗模型中是不可能的,所以系统需要做相应的调整。我们的解决方法没有偏离[21]和[19]。对活动节点的所有写操作都得到了执行,包括对辅助节点的写操作。然而,与读操作不同,绝大多数写操作在关闭节点集中至少有一个副本。这些写操作被放在一个日志文件中,在关闭的节点集重新启动时清除这些日志文件(辅助节点也有可能为这一目的而保存)。因为这个原因,这样的一种低能耗模型没能处理低能耗模式下的一个高容量写操作。考虑数据可用性:由于全覆盖性能,每一个写操作更新至少会把一个副本和一个额外的副本放置在日志机制中。因此在低能耗模式下至少两个副本被保存,在节点开启的时候这将补充到d中。假设日志机制比平均机制更可靠(例如,为此用NVRAM)这可能会直到全能耗模式恢复的时候能够满足可靠性。

3.4纠删码和多样可用性的实例

应用复制虽然跟方便管理,但是对存储来说是非常浪费的。通过纠删校正机制可以在相同或者更高程度的可靠性来达到应对失败的目的。在一个典型的实例中,一个数据对象被转变成d部分,每一部分存储在不同的节点或者失败域中,其中任意k个部分都能够重新恢复原始数据数据。这样一个系统最多可以容忍d-k个数据块丢失,因此,在这种情况下,全覆盖要求每一个被分成d个数据块的单独数据,至少k部分数据所在的节点是启动的,我们称这种模式为(k,d)的能耗模型。这种模型在大多数相关的编码方案上得到了部署[3]。例如,RAID 6编码方案就是基于(4,6)的能耗模型的一个实例。注意在这样一个系统中潜在的节能被限制在k/d比例。也就是说,一个(4,6)低能耗模型最优解决方案,最多可以关闭1/3的节点在保证不丢失数据的前提下。

对这一问题的一种不同理由,来自于用副本但是只是一种单独的可用复制是不能满足低能耗模型的,考虑到可靠性的要求。而且,在低能耗模式下系统有可能会产生大量的副本。例如,存储八个副本的系统将会产生三个可用的副本在第可用期间。

对这种情况的副本讨论的结果可能会产生(k,d)模式。这种改变所要求的辅助节点在数量上等同于定位函数的d(回顾先前提到的)没有覆盖到的数据项新的可能比例如下:

注意到当M很大的时候,那么趋向于。需要的辅助节点的数量会是固定节点数量的比例。

在表3中我们可以看到所选择的k和d的数量。正如期望的那样,当用纠删码是能量节约的潜力非常低,特别是对RAID6来说机会没有价值。这种情况会随着d/k的比值的增加而增大。

表3:这个表展示了随着k和d的变化(k,d)低能耗模式所表现出来的能量节约潜力。我们看到纠删码机制的比例比如k=4和d=6时候能量节约是非常低的不值得卷入其中。情况会随着d/k的比例的提高而得到改善。

4对特殊定位函数的分析

我们转向对特殊定位函数的深入分析。下面是对两种卓越的策略的研究,一个是随机定位函数,另一个是一致哈希算法。

表3:这个表显示出了对于不同的k和d,(k,d)-low模式下的能耗节约的潜力。同时我们在表里可以看到当纠删码k=4,d=6时能耗节约的比率会非常低几乎没有必要去研究。随着d/k的比例的增长,单位时间节能的百分比也在增加。

4.1随机定位函数

这种机制可以参考对每一个副本位置的随机分配或者是伪随机分配。更精确的说,每一个数据项都存储在d个不同的磁盘中,这些磁盘是根据随机分布选择的。























原创粉丝点击