论文部分内容阅读
随着信息技术的发展,世界范围内的数据量飞速增长,产生了海量的信息。存储这些信息消耗大量的存储资源,增加存储系统构建以及维护的成本,因而给信息存储系统带来了巨大的压力和挑战。如何有效降低数据对于存储资源的占用一直以来都是计算机科学研究的重点问题。 数据压缩能够减少数据对存储空间的占用量,降低存储系统的硬件开销,节省成本,从而被广泛应用于数据存储以及数据通讯领域。重复数据删除技术将数据流进行分块,并且通过比较数据块的指纹对数据块的重复性进行判断,从而将重复的数据块抛弃,只存储或传输新的数据块,数据的存储空间占用大大降低。广义上,重复数据删除是一种数据压缩手段,由于它对备份和归档数据有极高压缩率,因此被广泛应用在这两种系统中。由于良好的压缩效果,也被越来越多地应用于其他数据类型。例如,将重复数据删除应用于在线(或近线)数据存储,可以降低存储系统开销;应用到数据传输上,能够降低网络带宽使用;应用到I/O路径上,则可以减少磁盘读写。 重复数据删除系统的主要评价标准为去重率和吞吐率。其中数据去重率与数据集特征和数据分块方式相关,同时也与指纹检索方式相关。而重复数据删除的吞吐率则主要受计算任务、指纹索引方式以及查找方式的影响。本文关注重复数据删除中的吞吐率问题,从影响重复数据删除性能的关键因素看,提高吞吐率需要从多方面入手,既要解决重复数据删除过程中计算任务的开销,也要减少重复数据删除过程中的磁盘访问,而当单一节点的重复数据删除系统性能无法满足海量信息处理的要求时,分布式的重复数据删除则成为了必然的解决方法。 提高重复数据删除性能需要对其做深入分析,提出合理有效的手段解决关键问题。 对于重复数据删除中的计算任务,本文设计实现了自适应流水线重复数据删除方法,利用计算任务之间的关系提高重复数据删除的吞吐率。具体地,不同的计算任务在不同计算平台和不同数据上性能表现不同,自适应流水线方法深入分析重复数据删除计算任务之间的关系,通过对任务之间的相互影响建模,将平台和数据集的特点作为输入,给出最优的计算任务处理顺序。另一方面,多核CPU已经普遍应用在现在计算和存储领域,而之前主要用于图形计算的GPU也越来越多地应用到科学运算中。因此,本文进一步利用CPU+GPU的异构众核平台对重复数据删除中的计算任务进行加速,从而对重复数据删除过程中的计算任务实现更深度的优化。 重复数据删除既是计算密集型的,同时也是I/O密集型的,减少重复数据删除系统的磁盘访问同样是提升总体吞吐率的重要手段。前人对这方面的研究往往牺牲数据的压缩率来换取系统的运行速度——采用近似精确重复数据删除方式。本文提出了一种懒惰重复数据删除的方法减少指纹查找中的磁盘访问,实现了快速的精确重复数据删除。该方法基于指纹查找过程中的现象:系统会在不同的时间访问同一个磁盘区域以检测指纹是否已经存在。系统可以对这些查找进行缓冲,当指纹数量到达一定阈值再进行批次查找。这样将多次磁盘I/O合并成一次,大量减少磁盘访问,提高重复数据删除系统的吞吐率。一般重复数据删除中的cache查找策略并不能在懒惰重复数据删除中提供较高命中率,本文设计实现利用局部性环和秩的cache查找方法,提供懒惰重复数据删除下的高cache命中率。 随着大数据时代的到来,数据爆炸性地增长,单一节点的存储系统在性能和容量上都无法满足数据快速增长的需求,分布式的重复数据删除系统成为应对数据快速增长的有效手段。本文基于面向对象存储系统Openstack Swift实现基于重复数据删除的面向对象存储系统,利用重复数据删除和数据压缩提升分布式存储系统的存储能力。针对重复数据删除中数据碎片导致读取过慢的问题,本文提出缓存压缩数据的方法,逻辑上提高系统的cache容量。通过对数据压缩/解压缩性能和cache容量的分析,提出采用解压速度较快的压缩算法压缩数据的方法,减少解压缩过程对数据读取性能的影响。 综上,针对重复数据删除系统的性能优化问题,本文提出的重复数据删除自适应流水线方法、懒惰重复数据删除方法以及面向对象重复数据删除系统,在计算层面、I/O层面和系统架构层面给出了完整的优化方案,显著提高了重复数据删除过程的吞吐率。而且这些技术具有较强的通用性,对key-value存储、数据库以及共享内存领域都有着借鉴意义。