论文部分内容阅读
传统的存储系统无法满足呈爆炸性增长的海量数据存储需求,分布式文件系统应运而生,如今已得到广泛应用。传统的分布式文件系统通常采用多副本技术来保证数据的可靠性。对于副本系数为3的系统,一份数据被切分为几个块,每个块的3个副本分别存储在不同的数据节点。这种备份方法最大的缺点是需要极大的额外存储开销。随着数据量的增长,所需的存储空间增长速度将远远大于硬件设备的扩展速度,存储开销将成为数据中心的一个主要成本瓶颈。纠删码技术只需要较少的额外开销就可以获得很高的数据可靠性。而所有的纠删码中,里德所罗门码(Reed-Solomon Codes,RS码)最为常用。纠删码技术应用于分布式文件系统能显著降低存储开销、提高数据可靠性,但在修复丢失的数据时,需要付出极大的代价。就修复单个块而言,部署了里德所罗门码系统的带宽和I/O开销甚至达到了三副本系统的12倍。为此,本文提出了一个改进的RS码方案。在RS码的基础上,通过添加额外的校验块,改善RS码的局部性。对于RS(12,4)码,12个数据块生成4个校验块(全局校验块),我们仅需在这个基础上将12个数据块分成3组,每组4个块,每4个块生成一个额外校验块(局部校验块),就能使原RS码的局部性由12降为4。这意味着原来修复单个块需要读取和传输12个块,现在仅需4个块,极大的降低了修复所需的磁盘I/O和网络带宽开销。另外,本文证明了当丢失单个全局校验块时,同样能够利用三个局部校验块进行快速恢复。因为系统无需为全局校验块生成额外的校验块,因此提高了存储效率。我们通过标准马尔可夫模型估算两种不同方案的平均数据丢失时间,来进行可靠性比较,结果表明改进后的方案可靠性达到了原RS码将近100倍。同时,我们将优化方案的代码部署到了Hadoop HDFS中,并和部署了RS码的HDFS做比较。实验结果表明,优化后的方案仅以19%的额外存储空间为代价,使系统修复单个块错误时的磁盘I/O和网络开销降为原来的39%。因为修复效率更高,所以改进后的方案同时能为系统提供更高的可靠性。