论文摘要
在“大数据”时代背景下,信息技术产业已从以计算为核心的时代进入到了以存储为核心的时代,数据海量化成为了一种趋势。构建于普通服务器集群之上的分布式存储系统,因其成本低廉和扩展性高等优点被广泛应用于海量数据的存储。但是分布式存储系统节点规模庞大且单个节点可靠性不高,致使系统发生节点失效的概率大为提高。为了保证数据可靠性,系统必须采用一定的数据容错技术。纠删码作为一种可靠性高且存储空间消耗少的容错技术,对提高分布式存储系统的数据可靠性并降低其经济成本具有重大意义。但是纠删码数据修复网络负载高、数据修复速度低等问题严重阻碍了其在分布式存储系统中的广泛应用。针对以上问题,本文对纠删码的低网络负载数据修复技术和快速数据修复技术进行了深入研究,主要研究内容与贡献如下:数据修复网络负载的传统度量指标是传输的数据量,这一指标忽略了数据传输距离的不同,不能精确衡量修复过程中数据传输对网络性能产生的影响。针对此问题,本文提出了基于网络拓扑的网络负载度量指标:网络代价。网络代价将数据传输的网络负载定义为数据传输量与传输距离的乘积,更精确地描述了数据传输所占用的网络资源,从而更好地刻画了数据传输对网络性能造成的影响。实验结果表明,网络代价能够比数据传输量更加精确地反映数据传输对网络性能造成的影响,是更好的网络负载度量指标。针对纠删码数据修复网络代价过高的不足,本文提出了一种基于网络拓扑的树型数据修复技术NTree。NTree根据网络拓扑将参与修复的节点组织成总网络距离最小的树型修复结构(修复树),以最小化修复时数据的传输距离,从而使修复的网络代价达到最低。在此基础上,提出了提供节点组合的选择算法OpTree。OpTree能够在从所有可用节点中快速选取最优提供节点组合的同时构建出最优的修复树,进一步降低NTree的网络代价。大量的模拟实验结果表明,NTree相比于现有的星型修复方法,可将纠删码数据修复的网络代价降低20%-45%。针对纠删码数据修复速度慢导致退化读性能差的问题,提出了一种基于网络拓扑的线型数据修复技术NLine。对NTree修复过程的深入分析表明,修复速度与修复树的最大入度成反比。NLine根据网络拓扑将参与修复的节点组织成最大入度为1的线型修复结构(修复路径),从而达到了最快的修复速度。同时,为了尽量降低NLine的网络代价,提出了近似最优的修复路径规划算法OpLine。大量模拟实验结果表明,NLine能够以接近于NTree网络代价获得至少比星型修复方法高400%,比NTree高100%的修复速度。基于上述理论研究成果,设计实现了一个纠删码数据修复原型系统ECRepair。ECRepair完全遵循机制与策略分离的设计原则,不仅支持基于网络拓扑的树型数据修复技术NTree和基于网络拓扑的线型数据修复技术NLine,也可以方便地添加对其它树型修复技术的支持,并且适用于任何线性纠删码。大量真实环境下的实验结果表明,在星型修复方法、基于网络拓扑的树型数据修复技术NTree和基于网络拓扑的线型数据修复技术NLine中,NTree具有最低的网络代价和最高的并行修复速度,NLine具有最快的串行修复速度和最高的退化读性能,进一步验证了理论分析和模拟实验的结果。