论文部分内容阅读
为了适应大数据应用场景逐步由计算中心向数据中心转变,分布式存储系统作为底层基础设施之一,面临多方面的挑战,包括数据量的增长速度、数据种类的多样性、愈来愈高的性能需求等。针对这些变化,分布式存储技术中首要解决的三大技术难点有:数据一致性、数据可靠性和负载均衡;数据分布问题直接影响集群的负载均衡,优秀的数据分布算法对一个分布式存储系统尤为重要。CRUSH(Controlled Replication Under Scalable Hashing)算法是Ceph分布式存储系统中的数据分布算法,该算法通过实际的集群物理架构,建立一个多层次的映射表,根据层次结构进行迭代,返回一组最适合存储数据对象的存储节点;该算法使用一致性哈希算法来产生伪随机数,并结合了节点权重进行加权运算。因此,该算法分配存储位置的时候考虑了集群当前的存储情况,在大多数情况下能够保证数据分布足够均匀,不会影响集群的负载均衡;由于数据对象的大小、集群规模以及实际的部署结构都作为参数参与了CRUSH算法的运算过程,所以三者之间存在互相影响,互相制约的关系。在实际应用当中,如果存储的单个数据对象太小,影响节点权重的变化较小,容易造成一组相关性高的数据存入同一组存储节点中;针对这一组数据进行访问的时候就会产生负载均衡问题,即某些节点的使用率过高,而大部分节点空闲,使整个集群的性能急剧下降;另外一方面,如果对集群的存储规模进行改动,如扩容、删除历史数据、备份、节点故障等造成集群节点的权重值差异也会导致小文件数据对象落入相同的节点,造成存储分布不均匀,进而影响集群的性能。经研究发现,上述问题是由CRUSH数据分布算法所引起的,CRUSH算法没有充分考虑数据的多样性和集群规模的扩展性对数据分布的影响;因此,论文通过对CRUSH算法进行改进。概括起来论文研究的主要内容如下所示:(1)对Ceph分布式存储系统进行研究,介绍Ceph相比传统的分布式存储架构具有的创新点和实现原理;通过模拟大规模集群,对Ceph分布式存储进行测试,验证了目前Ceph分布式存储系统确实存在数据分布不均匀的缺陷。(2)对CRUSH数据分布算法进行改进,增加温度因子约束小文件数据对象的存储;当CRUSH算法在选择结果时,除了优先考虑weight值高的节点,还要在每一次访问节点时增加被访问节点的温度值,当连续访问同一个节点时,温度值会以更快的速度增长,与weight值相反,CRUSH算法应当优先考虑温度值低的节点。(3)将改进的CRUSH算法以动态链接库的方式应用到Ceph分布式存储系统中,增加了部署Ceph的灵活性,根据实际情况选择是否需要优化,以参数的形式进行调整,无需对整个集群进行备份和重启。基于上述研究内容,建立实验环境,搭建Ceph分布式存储集群,模拟多种应用场景对集群进行测试。最后,论文通过rados bench静态统计数据分布情况;使用iostat动态记录和分析每个存储节点中磁盘使用率;使用不同参数的iozone工具对整个集群进行吞吐量(Throughput)验证对比改进前和改进后的集群性能,验证改进后算法的可行性和优化程度。实验结果表明,改进的CRUSH算法能够解决小文件存储所引起的负载均衡问题。