论文部分内容阅读
在当前大型分布式存储系统中,随着存储规模越来越大以及廉价但可靠性差的存储设备的广泛部署,磁盘错误变得益发频繁,容错能力成为了现代存储系统的重要指标。通常,存储系统通过引入冗余数据来保障数据可靠性。冗余数据可以通过复制或者纠删码方式产生。其中,纠删码容错存储技术因其在相同可靠性条件下可最小化冗余存储开销,被广泛地在大型分布式存储系统中部署。因此,研究分布式存储系统中基于纠删码的容错存储技术对海量数据背景下的数据存储有着重要意义。本文主要研究了基于纠删码的分布式存储系统中,发生节点故障时的数据修复问题,主要研究内容与贡献如下:(1)单节点故障修复问题研究当前很多存储系统具有可容忍多个节点同时发生故障的能力,但实际中发生单节点故障的频率要远远高于多节点并发故障发生的频率。当存储系统发生节点故障时,系统需要及时重构出故障数据以维持系统可靠性及服务性能。而修复操作从剩余节点读取的数据量直接影响着修复性能。本文研究了纠删码的单节点故障修复问题,通过引入由单校验块以及编码产生该校验块的数据块组成的校验集的概念,构建了基于校验集组的纠删码单节点故障修复分析模型,继而设计了一种替换修复算法Replace Recovery。该算法利用启发式搜索策略,在纠删码各校验节点的校验集中寻找最小化修复过程数据读取量的校验集组。理论分析表明,Replace Recovery为各类纠删码的单节点故障修复提供了数据读取量最优/近似最优的修复方案。通过在实际分布式存储系统中部署该替换修复算法,并开展相对传统修复算法的广泛对比实验,本文证实了Replace Recovery可明显减少纠删码的单节点故障修复时间。(2)异构存储环境修复问题研究由于设备更新换代以及数据访问热点分布不均等原因,实际部署的分布式存储系统往往面临着异构的存储环境,存储节点的计算能力各不相同,链路的传输带宽也不尽相同。因此,现有最小化修复过程数据读取量的修复算法可能无法在异构存储环境中提供有效修复性能。本文通过引入衡量异构存储环境中各节点单位数据下载成本的指标,为RAID-6码异构修复问题建立了旨在最小化修复代价的优化模型。基于该模型,本文给出相应缩减策略大大缩小异构修复模型的搜索空间,继而为RAID-6码设计了一种基于成本的单节点故障异构恢复算法CHR (Cost-based Heterogeneous Recovery),该算法保证故障节点恢复过程数据传输量最优并且恢复成本也最少。进一步地,本文将异构修复优化模型推广至一般性纠删码,同时给出了通用的异构替换修复算法HeRR(Heterogeneous Replace Recovery),有效减少了故障修复过程的恢复成本。通过在实际的异构存储系统中开展广泛对比实验,本文证实了纠删码的异构修复算法可以有效地加快单节点故障修复时间。(3)加速退化读问题研究当存储系统中发生节点故障时,系统需要能够执行两类操作:故障节点修复,以保障数据可靠性;退化读,以满足用户对故障节点上数据的访问请求。事实上,数据中心绝大部分节点故障是暂时性的,即故障节点上数据并没有丢失。当发生暂时性节点故障时,存储系统往往仅需执行退化读操作以满足用户的访问请求。因此,相较于故障节点修复,退化读操作的性能优化对于基于纠删码的分布式存储系统更加关键。为了加速纠删码退化读操作,本文考虑了实际系统中存储设备性能异构性以及数据访问并发性等特点,设计了纠删码退化读性能评估指标。由于退化读优化问题求解空间过大且实际存储系统需要能够即时决定退化读策略,本文设计了一种启发式的EG (Enumerated Greedy)退化读算法。该算法可以根据存储系统中各节点的实时下载成本信息,迅速给出高效退化读方案。基于HDFS(Hadoop Distributed File System)文件系统,本文设计并实现了一个支持高效退化读的FastDR原型系统。通过在由12个节点组成的存储集群中开展性能对比实验,本文证实了FastDR相较于传统退化读算法可以提供高效退化读性能。(4)重复数据删除技术部署研究随着数据爆炸式增长,存储开销已经成为当前存储系统首要关注的问题。重复数据删除技术,因其可以有效地去除存储数据中冗余部分,已经被越来越多地部署在了实际存储系统中。当文件存入分布式存储系统中时,组成文件的数据块通常会被分散存储在不同节点中,以提高文件并发访问性能。而在部署了重复数据删除技术的分布式存储系统中,组成文件的数据块可能会出现聚集在某些存储节点的情况,从而影响文件的并发访问性能以及文件可靠性。本文研究了基于纠删码的重复数据删除技术部署问题,并设计了一种数据均衡放置算法EDP (Even Data Placement).该算法通过在分布式存储系统中引入缓存,并在实际写入磁盘前调整缓存中数据块位置,以追求文件中数据放置的均衡性。EDP算法考虑文件中已经存储的重复数据块的位置,调整文件中独特数据块在缓存中的放置位置,最终维持了组成文件的各数据块在存储节点间的均衡放置。模拟实验结果表明,相较于传统数据块放置算法,EDP算法有效改善了文件并发访问性能以及文件可靠性。