论文部分内容阅读
随着数字信息量的爆炸式增长,数据占用的空间越来越大,存储系统的容量从数十GB发展到数百TB、甚至PB量级。面对数据量的急剧膨胀,企业需要不断购置大量的存储设备来应对不断增长的存储需求,管理和保存数据的成本急剧上升,存储技术和存储产业正面临着由庞大需求而带来的巨大挑战。重复数据删除技术是存储系统中的关键技术,通过检测并删除冗余数据来优化存储空间、提高网络带宽利用率和降低运营成本。在需求的推动下,重复数据删除技术成为近几年学术界和工业界的研究热点,并正被愈加广泛地应用到各种信息存储系统。目前,大多数重复数据删除产品针对备份和归档存储服务系统,用于节省空间和优化性能。然而,随着社交网络、云存储服务模式的兴起,主存储服务系统中越来越多的数据被共享,如文件、图片和视频等,在线服务的数据量日益增大,同样面临着重复数据删除的需求。与备份和归档存储服务系统不同,主存储服务系统具有数据规模巨大、数据访问复杂多样和高I/O性能需求的特征。然而,重复数据删除过程中的数据检测处理需要占用系统大量的CPU和I/O资源,极大地影响数据写操作的性能;同时,重复数据删除会使得文件数据存储碎片化,严重影响I/O读操作的性能。这些都给重复数据删除技术在主存储服务系统中的应用带来了很多挑战性问题:第一,主存储服务系统中的数据访问模式不同于备份存储服务系统,其I/O写操作的特征复杂多样,导致在主存储服务系统中进行重复数据检测将会带来极大地I/O开销。第二,现有的重复数据检测算法主要关注于如何快速定位和降低检测范围,没有充分利用已有的并行计算架构来加速问题求解。第三,现有的研究未考虑到主存储服务系统中I/O缓存对数据读取操作的优化作用,从而在衡量重复数据碎片对I/O性能的影响时,应综合考虑系统的各个层面,做出更高效的决策。第四,现有的数据碎片整理方法未能充分利用数据访问的动态信息,严重受限于重复数据删除系统中大量的数据共享关联,难以提高磁盘文件存储的连续性。针对上述技术瓶颈,本文系统地研究了主存储服务系统中高I/O性能的重复数据删除技术,从以下几个方面展开研究:针对主存储服务系统复杂的I/O访问模式,本文深入研究了典型系统中重复数据写操作的时间及空间局部性特征。基于旋转树数据结构理论,本文设计了自适应指纹缓存Leach。Leach自动学习目标系统重复数据写操作的时空局部性信息,动态地将热点及其关联数据指纹放入缓存,提高数据检测的缓存命中率;同时,针对自适应学习的I/O开销,提出了基于工作集特征的优化机制,进一步提高数据检测的效率。针对重复数据检测任务的可并行性问题,本文基于CPU+GPU的异构并行计算框架,通过将数据指纹索引组织成前缀树结构,设计和实现了一种具有高并行度的重复数据检测方法 G-Paradex。针对CPU与GPU之间数据传输的瓶颈,提出了数据指纹重组和近似检测的优化方法,减少前缀树占用的存储空间,降低CPU与GPU之间的数据传输量;针对GPU的硬件架构和并行编程特性进行了适配,提出了重复数据检测剪枝策略,大幅度降低数据检测的计算量,快速定位重复数据。针对已有算法未能充分认识重复数据碎片影响的问题,本文发现在具有I/O缓存的主存储服务系统中,重复数据碎片未必完全对I/O性能产生负面影响,在一定访问模式下反而会提升I/O性能。基于以上发现,本文设计和实现了一种I/O缓存感知的重复数据碎片优化方法 Care Dedup。通过对块设备层I/O访问信息的监测,Care Dedup分析了I/O缓存对重复数据碎片的优化以及重复数据碎片本身对数据布局的破坏,综合评估重复数据碎片对I/O性能的影响。通过建模分析,本文将面向I/O读性能的重复数据删除优化问题归约到0/1背包问题,并采用贪婪算法在给定存储空间优化的前提下最大化数据读取性能。针对已有算法未能充分考虑重复数据碎片访问特征的问题,本文探索了基于I/O访问记录的重复数据碎片布局策略Re Dedup,大幅降低了重复数据碎片对I/O性能的影响。文章通过对典型系统中文件之间的共享关联度和文件数据碎片的访问频度进行统计和挖掘,发现主存储服务系统中对重复数据文件(重复数据文件指该文件中存在重复数据,与其它文件共享数据)的访问服从典型的幂律分布,即存在一小部分重复数据文件受到的访问次数较多且开销较大,是系统性能瓶颈所在。基于此,Re Dedup通过采集和分析I/O读请求序列,记录文件之间的数据共享度和文件数据的随机访问频度,评估文件进行数据重分配对I/O性能的影响,从而选择性地进行磁盘碎片整理,合理布局重复数据碎片,最大化I/O读性能。综上所述,本文针对主存储服务系统中高I/O性能的重复数据删除技术提出了有效的解决方案,并通过在真实数据集上进行实验验证了所提算法的有效性,对于推动主存储服务系统中重复数据删除技术的研究和实用化具有一定的理论意义和应用价值。