论文部分内容阅读
冗余容错技术能够显著提高数据存储的可靠性,在实际存储系统中得到了广泛的应用。然而,容错存储系统在实际运用中却存在诸多障碍和挑战。容错存储系统的底层编码结构有着多种实现方式,但现有的容错编码大多都存在性能缺陷,且普遍具有码长限制。另一方面,容错存储系统利用高数据冗余实现了高容错能力,但同时也导致了过高的写开销和过低的写性能。研究高性能容错编码的构造方法、容错编码的码长扩展方法、以及容错存储系统的结构改进和性能优化方法等,克服容错存储系统在实际应用中的各种缺陷,是一项十分重要和紧迫的研究课题。经过理论分析、系统设计和实验评估,取得了下列一些研究成果。首先,从理论上严格证明了容双错编码的存储效率、更新复杂度和编解码计算复杂度等性能指标的最优值。在此理论框架下,提出了一种新的容双错编码结构P-Code, P-Code在上述三个性能指标上同时达到了理论最优值。P-Code的编码结构与一个特定二元组集合的划分相关联,其中每个二元组对应于编码结构中的一个数据块,作为该数据块的标签。P-Code的编解码过程都是基于数据块标签的,简单直观,易于理解和工程实现。同时,P-Code的编码结构具有很强的灵活性,同列数据块之间互换标签,不同列之间整体互换标签,都不会影响P-Code的正确性,调换标签后生成的编码结构是与原始编码结构具有相同容错能力的变形形式。RDP (Row-Diagonal Parity)编码是一种在存储学术界和工业界得以广泛关注和应用的容双错编码。在对RDP编码的性能指标进行分析时,发现RDP编码的存储效率和编解码计算复杂度均达到了理论最优值,但更新复杂度却没达到理论最优值。提出了一种改进RDP编码的方案,该方案通过更改RDP编码结构中行校验块的放置策略,在保持RDP编码的存储效率和编解码计算复杂度的最优性的前提下,使其更新复杂度也达到了最优。容双错编码的码长通常都具有限制,导致基于容双错编码的容错存储系统所能配置的磁盘或节点数目也具有限制。水平码可以通过直接削减数据列的方式来扩展至任意码长,而垂直码却不能通过这种方式来进行码长扩展,因为垂直码结构中的数据列含有校验块。提出了两种适用于容双错垂直码的码长扩展算法。第一种算法在削减数据列时通过变更校验块的方式保证了校验条带的完整性,而第二种算法在削减数据列时将失去校验块的整个校验条带从编码结构中移除。这两种算法均能将垂直码扩展至任意码长,并能保持其原有的容错特性。变更校验块方式的码长扩展算法保持了垂直码的最优存储效率,但增加了垂直码的更新复杂度和计算复杂度;移除校验条带方式的码长扩展算法降低了垂直码的存储效率,但使得垂直码的更新复杂度保持最优,并进一步降低了垂直码的计算复杂度。受此现象的启发,又提出了垂直码的垂直削减算法,该算法以降低垂直码的存储效率为代价,来换取垂直码更低的计算复杂度以及更高的数据恢复效率。为了解决RAID6磁盘阵列的写性能过低的问题,提出了一种利用日志技术优化RAID6磁盘阵列写性能的方案RAID6L。RAID6L在RAID6磁盘阵列结构的基础上增加一个日志盘,并且在写数据的同时只将相关数据块的初始数据或更新数据记入日志盘中,校验的更新延迟到系统负载比较轻的时候再统一处理。由于记录日志的开销比更新校验块的开销要小很多,因此RAID6L的写性能比传统RAID6磁盘阵列要提高很多。同时,日志盘上的记录能够保证RAID6磁盘阵列在不更新校验的时候仍然具有容双盘出错的能力。相比于传统的RAID6磁盘阵列,RAID6L能以较小的可靠性损失换来写性能的大幅提升。校验日志方案(Parity Logging)是利用日志技术优化校验磁盘阵列写性能的代表性方案。然而,校验日志方案只适用于基于异或校验的磁盘阵列,而不适用于基于里德所罗门编码(Reed-Solomon)和有限域运算的RAID6磁盘阵列。提出了一种扩展校验日志方案的方法,使得校验日志方案能够运用于任何形式的磁盘阵列。在此基础上,对RAID6L方案和扩展后的校验日志方案进行了分析和对比,证明RAID6L方案的性能比校验日志方案更优。