当前云计算、大数据系统需要用到海量的固态硬盘,但固态硬盘的故障会导致系统宕机和服务的不可用。11月8日,上海交通大学计算机科学与工程系教授、上海市计算机学会存储专委会主任吴晨涛受邀出席2024中国数据与存储峰会,并在高端存储与分布式全闪创新论坛就大规模固态硬盘故障预测技术研究展开分享,为听众提供了价值参考。
云存储系统可靠性正面临严峻挑战随着云存储系统的快速扩展与规模的日益增大,存储系统的数据可靠性已成为影响整个数据中心高效运行的一个重要因素。调查表明,硬盘故障占整个数据中心故障的32%,硬盘年故障率已成为衡量数据中心可靠性的重要指标。采用新一代的存储介质,如QLC SSD等新型硬盘的大规模部署,当前的存储系统的可靠性也面临很大的挑战。现在,数据中心都会采用智能运维系统比如AIOps,中间会携带存储设备故障预测的模块,在全球各大公有云的厂商,如谷歌、微软、阿里、华为等等这样一些厂商,他们都在致力于发展故障预测技术,一般来说这个技术都是我们首先会去收集整个公有云系统的日志,做一些数据预处理,处理完以后去设立相应的硬盘故障预测和内存故障预测的模块,当预测有结果后,我们会对数据做一些提前的数据迁移、虚拟机的迁移等等操作,来保障整个系统的正常运行。固态硬盘故障预测主要问题
我们在5年前就有大量的研究者在做机械硬盘的一些故障预测,效果挺好,但是现在固态硬盘的变化趋势实际上跟传统机械盘的故障率呈现不同的趋势,主要原理是因为这两者的存储原理不一样。
机械硬盘很多故障来自于机械部件和磁道损伤,而SSD固态硬盘的故障更多源自于存储介质的一些故障,比如说磨损和部件里面发生了错误等等。
像Black blaze的预测,红色的曲线实际上是传统机械硬盘,蓝色的表是固态硬盘,两条曲线也呈现不同特点。
传统机械硬盘一般可以通过收集硬盘上的SMART信息来进行故障预测,并且利用浴盆曲线构建相应的学习模型,可以采用右边这个框里面的一些常用故障预测算法,比如说基于阈值的和基于异常检测和浅层机器学习和深层机器学习的方法,都已经成熟,像故障的精准率和覆盖率都会达到比较高的程度。
如果全部去照搬机械硬盘的故障预测,由于存储原理的巨大差异,这些方法其实并不是非常适用,从而导致故障预测精准率不高、覆盖率不全等等的现象出现。
因此我们就现有的固态硬盘故障做了一些统计和分析,发现它的影响因素包括有闪存工艺、容量、温度、磨损、数据写入量等各方面的制约,比如左边的图会发现SLC的故障率远低于MLC,MLC远低于3D-TLC,相当于闪存工艺不同,故障率是不一样的,另外也会受到温度影响,右边可以看到涉及到数据写入量的影响,所以由于这样一些故障因素的众多,而传统的SMART信息是不收集的,所以SMART信息没有那么重要,所以我们考虑哪些信息是在SMART里面,哪些信息有用,哪些信息没用。
另外固态硬盘我们的故障预测的曲线,它也不严格遵循传统的浴盆曲线,相当于浴盆曲线是刚开始出厂的时候故障很高,等稳定了以后会有一个非常长的稳定期,变得很低,到了产品的生涯末期又会急剧上升,呈现一个浴盆的状态,但是固态硬盘不是这样,它可能在出厂的早期,因为厂家对于固态硬盘的检测不全面,所以无法去检测出来很多坏的块,会导致早期有可能出现故障急剧上升的情况,等到稳定了以后再下降,最后到生涯的末期,故障急剧上升。
存储设备故障预测方法和机制
针对于固态硬盘的故障预测的问题,在过去的两年当中做了两个方面的研究,一个是针对于早期故障,怎么提高SSD出厂前的检测效率;第二,针对数据中心的云存储系统,怎么选择合适的参数来提高大规模固态硬盘故障预测的准确率。
首先介绍我们的早期故障预测,背景是闪存颗粒作为SSD基本单元,从根本上影响全生命周期的质量,SSD厂商一般出货或出厂前需要对板上面所有的闪存带进行扫描测试,用于剔除原始的坏块和自测早期的坏块,特别是做一个MST的早期坏块的检测,我们现在测试方法很简单,就是用FIO这一类的去跑一圈负载,看一看哪些地方的读写性能很差,或者呈现的比较大的波动,我们就认为这个地方可能是有故障风险,但是随着我们现在NAND闪存光刻技术的进步,密度急剧增加,对于单个盘的MST的扫描检测时间在不断的增加。
现在单盘测试的时间一般来说比如16TB的SSD需要几十个小时,需要46个小时的自测时间,SSD厂商需要用FIO测16个轮次,完整把这个盘写16次,所以有很多的厂商想尽可能地减少开销,降低成本。
所以我们就尝试用AI的方法和机器学习的方法做改进,提出了一个基于对抗网络的故障预测的框架,假设我们按照四个周期完成测试,一方面为了保证样本不均衡,我们实际上用对抗网络的方式来去模拟生成一些故障样本做对抗测试,另一方面用了一些网络来测试SSD会在哪个周期出现早期故障。
最终通过网络去增强并平衡我们的正样本数据,并且能够在自测过程发现早期故障,并且将模型可以动态嵌入到我们的周期管理器当中,通过这样的方式可以实现多步骤的故障预测,而且可以动态降低一些自测成本。
我们通过很多次实验也做了相应测试,发现对抗网络可以全面提高预测性能,预测准确度能够达到TPR(真正率)94.9%以上,FPR(假正率)达到7.6%以上,准确度和精度保持在95%左右。
我们在预测当中也跟现有的方法做了一些对比,提升14%到34%,我们的假正率可以提高35%到66%,具有非常好的性能。我们基本解决了在早期粒度故障数据量过少的问题,实现了我们动态做MST测试时间比传统16个周期要低80%,将来为来四分之一,可以从16个周期降为4个周期,可以达到95%的缺陷检出率。
第二个工作,我们主要是做了整个的软硬件的协同预测的过程,我们实际上是把前面说的SMART信息,很多是没有用的,我们把与故障相关的属性进行相关系数分析,对比了与整个故障相关的程度,有的小于3%,有的可能完全没有什么关系,甚至要于0.5%。但是我们在分析的过程当中会发现另一个参数,比如闪存的磨损特征,它占主导地位,但是这个磨损的特性实际上在SMART信息里表现不完整,而它一般来说这个特征来自于我们的FTR控制器层面获取到,所以我们在这里面一方面想去结合SMART里面的信息,另外一方面可能会去从FTR拿一些磨损相关的参数,来提高它的预测精度。SSD厂商SMART信息是大幅度减弱,大量的新意无用,难以支撑有效的故障预测。
第二,面对正负样本的不平衡,云硬盘训练样本极少,模型老化,我们也给了两个数据级的样本分布情况,3D-TLC,发现它的分布比例当中非常不均衡,而在实际应用场景当中,每天都会产生新的SMART数据,会导致SMART属性潜在分布随着时间变化,如果长期适用离线模型训练会导致你的性能与你当前的系统是不匹配的。
所以我们针对前面的早期故障在大规模的SSD当中的预测精度不高的问题,把前面做得工作老化的过程的热力图先拿过来,按照整个逻辑单元号的最大位的错误率形成一个错误统计图,发现故障分布情况是随着PCle数量的增加,我们最大位的错误数量也在不断急剧上升,如果这个最大位的错误量超过LDPC或者ECC编码的错误的容错能力,这个时候就会出现数据丢失的现象,所以我们通过FTR固件的层面进行很多的老化磨损测试,获取3D-TLC的老化特性。
我们研究了不同的AI方法应用于故障预测的影响,做了一个全生命周期的预测,用了数据集20万块盘来自阿里在天池上发布的数据集,发现我们的方法可以达到比较好的效果,基本上是比前面方法预测的准确率高30%到40%左右,而且可以预测一些比较长期的故障,多方法基本上无法预测,比如说5个月或者13个月之后的情况。
最后介绍一下我们的一些结论和我们的展望,我们做的两个工作主要是针对固态硬盘故障一预测问题开展两个方面的研究,一个是针对早期的固态硬盘故障,利用了对抗网络和AdaSeq框架,提高出厂检测效率,我们可以把MST的坏块检测效率提高4倍,也就可以把原先的16个周期降为4个周期;第二,针对整个数据中心的云存储系统,采用了软硬件协同的方法,软件方面,搜集整个公有云的一些系统日志,硬件我们是搜集盘上面的FTR的信息,来获取磨损参数,发现我们可以通过这种方法大幅度的提高SSD故障预测的准确率,并且能够保证低成本的存储系统可靠性。
现在我们正在做其他比较有意思的事情,一个是我们在做一些主动分级容错技术,能够主动发现故障在什么地方,但是在我们的整个存储系统里多被动的方法保障数据可靠性,比如采用副本/备份和纠删码等等,我们在做怎么把故障预测和现有的被动的容错机制做融合实现分级容错,根据故障预测结果,假设最近一天之内会产生故障,这个时候我们可能就有可能考虑,而且这个数据比较热,考虑这个数据做副本或者迁移。
第二,如果故障短期内不会出现,可能是比较长期才会出现,这个时候我们会考虑用一些更加低成本的容错方式。
第三,去年做得工作是针对TLC SSD,QLC的SSD故障率跟TLC有很多不一样的地方,故障率也没有那么高,比大家想象的要好,所以怎么去针对QLC或者基于QLC这一类的固态硬盘做一些故障预测,我们可能会在这方面去开展相应的研究。
(以上根据速记整理,未经审定,详情敬请关注会后专题www.datastoragesummit.com)
关于演讲嘉宾:
吴晨涛,上海交通大学计算机科学与工程系教授,国家级青年人才,国家重点研发计划首席科学家。CCF体系结构专委会常委,上海市计算机学会存储专委会主任。吴晨涛教授曾多次受邀在DOIT举办的全球闪存峰会、分布式存储峰会等在内的专业会议中发表演讲,受到业界人士的广泛关注。