论文部分内容阅读
据统计,近年来60%大数据相关投资在了存储系统等基础架构上。而基于闪存的固态硬盘(Solid State Disk,SSD)以其高性能、低功耗、高可靠等特点被企业级的数据中心以及个人存储所广泛使用。但是,与传统硬盘相比,固态硬盘存储系统呈现出更复杂的故障机理与独特的故障外在表现形式。虽然已经目前已有不少关于固态硬盘存储系统的研究工作,但是与广大用户的期望值的相比,当前固态硬盘存储系统在性能与可靠性上尚有较大差距,仍有大量的工程与技术问题亟待探索和解决。涉及固态硬盘存储系统的技术挑战前所未有,而解决问题的途径与方法同样亦非唾手可得。首先,固态硬盘存储系统的可靠性需要重新进行评估。闪存这一存储介质将引入不少新型且独特的存储错误。同时不仅是其本身设备固件层面,上层软件栈亦需要作出的相应适配,传统HDD磁盘的容错模型与技术方法无法直接应用于固态硬盘存储系统。特别是,随着固态硬盘存储系统日益大型化,可靠性挑战难度将进一步升高;其次,随着大数据技术的发展以及深度学习等大规模分布式应用的兴起,如何进一步提高固态硬盘存储系统的性能也迅速成为当前的热点问题。虽然,固态硬盘相比于传统的磁盘,随机读写性能更高。但迄今为止仍然没有寻找出最佳的适配,因此离最佳性能尚有不小差距。本文针对固态硬盘存储系统可靠性以及高性能两方面的关键技术开展了深入的研究,主要完成了以下四方面的工作:1.通过设计自动化测试和监控框架来监测和分析固态硬盘从初始状态直到寿命耗尽的全过程,采集了固态硬盘寿命全周期中的大量数据。基于数据梳理了当前单节点下固态硬盘故障预测准确性不高的主要原因,并指出现有循环式测量工具并不能准确体现固态硬盘的实际耐用性。同时基于固态硬盘整个生命周期的监测,发现了若干新的错误模式。根据以上工作,设计出基于模式的固态硬盘寿命预测系统-iLife,根据在实际固态硬盘使用数据统计,iLife可快速、准确地测量固态硬盘全生命周期中存在的问题,且优于现有基于擦写磨损(即P/E周期)的固态硬盘寿命预测体系。2.多节点固态硬盘存储系统比单节点固态硬盘存储系统复杂性更高,并具有更多的不确定性,我们以阿里云的七个数据中心作为目标研究多节点云存储系统,共涉及45万块硬盘与三年的历史数据,总计超过10万个各类故障。我们把待解决的研究梳理成以下三个问题。问题之一:在固态硬盘存储系统中,有多少故障是与固态硬盘相关?其表征都是什么?本文的结论是:有7.8%的故障是由固态硬盘造成,分别是节点启动失败、文件系统不可用、磁盘丢失、缓存错误和媒介错误;问题之二:所有的与固态硬盘存储系统相关的故障中,若不是固态硬盘本身造成的,那么还有哪些别的原因?本文的结论是:大约34.4%的固态硬盘相关错误与固态硬盘本身无关。不稳定的连接也会导致固态硬盘出现故障。关于设备层错误与不稳定连接之间的关系,可利用UCRC错误作为判断的标准。问题之三:针对确由固态硬盘造成的故障,除了硬件方面的错误,系统的其他部分有没有间接地影响故障的产生?本文的结论是:固态硬盘故障与错误受到云服务的影响,块存储服务可导致严重的固态硬盘不均衡问题。当前固态硬盘节点内和节点间摆放并非最优的方式,导致出现三类散热异常,最后可导致高达58%的读错误。需要不同的纠错方法与主动遍历方法来减少被动硬盘产热所导致的错误。3.众所周知,基于内存的分布式大数据平台(如,Apache Spark)是当前主流的大数据处理框架。在Spark中,RDD仅支持粗粒度的缓存,同时对缓存数据类型也有严格的限制。这些限制导致了内存利用率低下,同时大量数据被写到高延迟的后端存储中使Spark不能很好地满足不同工作负载的需求。并且,程序运行期间需要依赖程序员手动去做出缓存位置与时机的决策,也因此无法适应程序的实时动态变化。我们设计并实现了一个缓存系统-Neutrino。在Neutrino系统中,用户可以针对不同工作流,实现全自动细粒度缓存分配策略。实现过程中,首先获取程序运行的数据流;然后,通过动态规划策略从数据流中获得最佳的缓存策略;最后,通过将RDD进行细粒度划分并根据得到的策略进行相应的部署。我们在Spark中实现了一个原型系统。经过测试Neutrino系统在各种实验环境以及四种不同的工作流,均有优于传统Spark缓存系统的性能表现。4.分布式深度学习是当前大型数据存储与处理系统中的热点应用。不过,在大型数据集群中部署深度学习的应用却很困难。首先,为了得到性能最优的配置,往往需要大量且繁琐的手动配置。同时,由于深度学习关于配置的特殊性,单纯类似工具并不能直接解决问题。针对性能瓶颈、多样化资源需求与分配问题的抽象,我们设计并实现了一个分布式深度学习基础上的资源自动分配原型系统-Dike。首先,通过捕获深度学习任务的动态信息、模型细节以及集群配置等参数,并将资源配置问题归纳为一个背包问题。本文设计出合理的价值判断函数来决定最终的配置与节点部署方案。实验结果表明,Dike能达到理想峰值95%左右的效果且几乎不需要程序员手动干预。