论文部分内容阅读
为了应对日渐增长的数据规模和存储集群规模以及对数据读写越来越严格的性能要求,分布式存储系统在数据存储业界得到了日渐广泛的应用。在分布式存储系统中,为了使数据获得更好的可用性,对数据进行冗余是很有必要的。副本是一种常用的冗余方式,在规模较大的系统中,由于数据体量是极为庞大的,如果不使用合理高效的算法对数据副本进行放置,将会对整个系统造成极大的性能损失。在分布式存储系统中,目前应用较为广泛的数据分布算法包括crush算法以及kinesis算法等。crush算法旨在存储集群发生变化时获得最少的数据移动,而kinesis算法旨在在相对灵活的存储位置选择下,使系统的资源使用更加均匀。但是这些现有的数据分布算法都没有关注读写均匀问题,对读写均匀关注的缺失导致集群中的节点之间在故障恢复和数据迁移过程中出现负载不均,从而增加花费的时间。因此,我们针对上述的问题展开研究,目标旨在在分布式存储系统中,找到一种可以满足读写均匀特性的数据分布方法,保证在同一节点上不会放置相同数据的多个副本,并且可以随着集群的动态扩展进行数据副本的自动调整,保持数据的读写均匀特性。针对crush算法存在的问题,我们提出了一种新的数据分布方法。注重于在分布式存储系统中达成数据副本的读写均匀,同时可以应对集群的动态变化和扩展,由于数据分布具有读写均匀的特性,因此降低了集群发生变化时的数据迁移时间。本文的主要工作总结如下:首先通过实验发现了现在分布式存储系统中常用的数据分布算法如crush算法等,其数据分布存在读写不均的问题。从这一问题入手,说明了数据分布的读写不均会增加系统的重建时间,从而导致节点二次故障乃至数据永久丢失的可能,同时,系统长期处于重建状态会抢占外部应用程序的运行资源。从而论证了读写均匀对于系统整体的重要性,并提出了我们的研究目标。针对crush算法存在的数据分布问题进行研究,通过数学分析和理论验证等手段,提出了一种满足读写均匀标准的数据布局方法,通过将数据及其副本按照指定方式进行分配,实现了数据分布读写均匀度的显著提高。在我们提出的数据布局方法中,数据按照到达存储系统的先后顺序进行标记,将数据的读写均匀分布总结归纳为矩阵中的一种特殊数学分布,这种数学分布是简单且易于计算的。元数据服务器根据读写均匀的数学分布进行数据到达存储系统后的副本分配。在系统由于节点增减而发生动态变化时,利用多选范式原理进行数据重建的最优位置选择,并可以根据不同的系统需求为不同的节点设置不同的权重或灵活部署。并提出了一种独立的针对节点增加时的数据迁移策略,以保持集群动态变化后数据分布依然满足读写均匀特性。通过理论分析以及模拟实验对比来验证我们提出的方法存在的优势。我们的实验和分析表明,在基于NS2模拟器的虚拟集群中,我们提出的方法相比现有的crush算法,显著提高了数据的读写均匀度(平均情况下提升约50%左右),因而将出现故障的重建时间降低了约14%,同时保持了相对一致的集群性能消耗。