当前云计算、大数据系统需要用到海量的固态硬盘,但固态硬盘的故障会导致系统宕机和服务的不可用。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次,所以我们也有很多的厂商想尽可能的减少开销降低成本,右边的图里我们也发现有这样一个原理,第一个,实际上随着轮次的增加缺陷检出率可以提高,很有用,另外这个里面还呈现着非常强的一些时间局部性,所以这里就带来一个矛盾,一方面我们想去降低它的测试轮次,但是另一方面测试轮次的增加确实有助于我们去查出更多的缺陷,所以有很多厂商有这样的需求,能不能实现比如说传统的需要测十个周期到是六个周期的FIO测试,能不能尽量的降低只要3到4个周期能够测完,并且能够达到差不多的检出效率,所以我们在这里面对很多测试数据做了一些研究,我们主要是把SSD厂商的一些测试数据转成一个按照位错误的热度图,就是如左边的图所示,右边是它的转化函数,并且我们对比了正常的浪和早期浪的热力图表达,我们会发现上面这个图里面主要是在右边这个位数比较高的区域里面会有频繁的错误,但是我们做得时候会发现有两个主要大的挑战,一个挑战相当于我们的数据密度低,你很难去收集,因为早期测试的盘的数量也是有限的,也不是无限的,我们同一批次会取几个盘做相应的测试,第二个就是我们早期的故障正负样本比例不均衡,有非常多坏块的一些固态硬盘和非常少块的固态硬盘的比例相差非常大,可能1:100,甚至1:1000。
所以我们就尝试做了,用AI的方法和机器学习的方法做改进,我们提出了一个基于对抗网络的故障预测的框架,假设我们按照四个周期完成测试,我们这个测试里面,一方面为了保证样本不均衡,我们实际上用对抗网络的方式来去模拟生成一些故障样本做对抗测试,另一方面我们用了一些网络来测试SSD会在哪个周期出现早期故障。
最终我们可以通过这个网络来去增强并平衡我们的正样本数据,并且能够在自测过程发现早期故障,并且将模型可以动态嵌入到我们的周期管理器当中,通过这样的方式我们可以实现多步骤的故障预测,而且可以动态降低我们的一些自测成本。
这里展示了通过对抗网络来有效增强数据集的有效性,我们会发现红色的点和蓝色的点分别表示真实数据和我们的模拟数据,我们会发现模拟的数据基本上能够反映真实的状况,虽然可能比真实的数据有所偏移,但是我们也可以通过逻辑回归等一些其他的手段轻易的把原始样本数据和生成样本数据进行有效分离,可以实现比较好的对抗训练。
通过我们的很多实验,也做了相应测试,我们会发现对抗网络可以全面的提高我们的预测性能,我们可以把我们的预测准确度能够达到TPR94.9%以上,FPR可以达到7.6%以上,准确度和精度可以保持95%左右。
我们在预测当中也跟现有的方法做了一些对比,我们的TPR可以提升14%到34%,我们的佳阳性率可以提高35%到66%,具有非常好的性能。我们基本解决了在早期粒度故障数据量过少的问题,实现了我们动态做MST测试时间比传统16个周期要低80%,将来为来四分之一,可以从16个周期降为4个周期,可以达到95%的缺陷检出率。
第二个工作,我们主要是做了整个的软硬件的协同预测的过程,我们实际上是把前面说的SMART信息,很多是没有用的,我们按照右边的图对所有的与故障相关的属性进行相关Spearman系数分析,我们分别对比了与整个故障相关的程度,有的小于3%,有的可能完全没有什么关系,甚至要于0.5%。但是我们在分析的过程当中会发现另一个参数,比如闪存的磨损特征,它占主导地位,但是这个磨损的特性实际上在SMART信息里表现不完整,而它一般来说这个特征来自于我们的FTR控制器层面获取到,所以我们在这里面一方面想去结合SMART里面的信息,另外一方面可能会去从FTR拿一些磨损相关的参数,来提高它的预测精度。SSD厂商SMART信息是大幅度减弱,大量的新意无用,难以支撑有效的故障预测。
第二个,面对正负样本的不平衡,云硬盘训练样本极少,模型老化,我们也给了两个数据级的样本分布情况,3D-TLC,你会发现它的分布比例当中非常不均衡,而在我们的实际应用场景当中,我们每天都会产生新的SMART数据,会导致SMART属性潜在分布随着时间变化,如果长期适用离线模型训练会导致你的性能与你当前的系统是不匹配的。
所以我们针对前面的早期故障在大规模的SSD当中的预测精度不高的问题,我们就去把前面做得工作老化的过程的热力图先拿过来,并且生成了我们右边的按照整个逻辑单元号的最大位的错误率形成一个错误统计图,右边的错误统计路已经可以反应出来磨损对于故障影响,我们会发现里面的故障分布情况,你会发现随着PEcle数量的增加,我们最大位的错误数量也在不断的急剧上升,如果这个最大位的错误量超过你的LDPC或者ECC编码的错误的容错能力,这个时候就会出现数据丢失的现象,所以我们通过FTR固件的层面进行很多的老化磨损测试,获取3D-TLC的老化特性,我们会发现它的错误位数据对于我们内部磨损方面有重要的作用,特别是更多的PECLE意味着它的故障概率会急剧上升,但是会有另一个问题,你获取到FTER磨损的特性,它是一个动态特性,和我们获得的SMART属性不在一个维度里,无法直接使用,我们想到一个比较好的框架,我们提出怎么去把这两种属性都可以结合的一个框架,这个框架是这么做得,左边的图相当于我们收集有用的SMART数据,来做筛选,我们只一部分,ID是19、17等等SMART相应的属性,右边不要了,右边是收集到磨损的BEC的一些数据,然后我们再把这两个数据做一个老化数据的配对,你可以看到把这两个数据形成一个配对,作为一个输入,然后我们通过下面的图也是一个孪生的神经网络来做相应的训练,训练完了以后最后通过加一些注意力机制达到一个比较好的效果。
相当于实际上这两类的数据,左边和右边我们是把它映射到一个比较高维的系数空间中,通过欧式距离的相似性进行比较。
当我们的输出距离接近某一个阈值的时候,我们的预测准确性会产生波动,有可能稍微高,也可能稍微低一点,所以我们在最后面的阶段加了一个基于RF的自适应判别器来保证它的稳定性。
最后我们达到比较好的测试结果,比如说我们总共收集了大概两种不同型号的固态硬盘,整个有20万的固态硬盘SMART信息,还有2万块固态硬盘的FTR信息,总共有22万块,这上面几个图里面可能分别对它可以提前7天、15天、30天、45天、60天、90天、120天实现高精准和低误判的故障率预测,TPR可以提升到90%以上,FPR可以降低到9.4%。
第二个,我们也去研究了不同AI方法应用于故障预测的影响,相当于我们会发现我们如果是采用两个网络进行耦合的方式可以达到最佳,蓝色网络要采用两个网络,一个网络要采用长短期记忆网络,另一个是神经网络,我们把不同的网络都做了测试,因为长短期记忆网络可能对于训练的长期的预测会比较好一些,神经网络对于短期预测会好一些,所以把他们结合我们可以不管在长期的预测当中还是在短期的预测当中都可以达到比较好的效果。
第三个,后面加了一个自适应的判别器,主要是为了去保证在整个两个数据集进行高维映射过程当中产生一些抖动的影响,我们基本上通过采用判别器以后也可以去尽可能的降低它的抖动。
我们做了一个全生命周期的预测,我们用了这个数据集20万块盘来自阿里他们在天池上发布的数据集,最后会发现我们的方法可以达到比较好的效果,基本上是比前面方法预测的准确率高30%到40%左右,而且可以预测一些比较长期的故障,多方法基本上无法预测,比如说5个月或者13个月之后的情况。
我们也算了一下整个单位成本和平均无故障时间的参数,这个参数实际上是叫做C-MTTDL,这个参数相当于大大提高2.5倍到10倍,意味着我们可以保障低成本下面的存储系统的可靠性,为我们的智能运维系统在低成本的高效反应提供有效支撑。
最后介绍一下我们的一些结论和我们的展望,我们做的两个工作主要是针对固态硬盘故障一预测问题开展两个方面的研究,一个是针对早期的固态硬盘故障,利用了对抗网络和ADaseq的框架,提高了我们出厂检测的效率,我们可以把MST的坏块检测效率提高4倍,也就可以把原先的16个周期降为4个周期,第二个,我们针对整个数据中心的云存储系统,采用了软硬件协同的方法,软件我们是搜集整个公有云的一些系统日志,硬件我们是搜集盘上面的FTR的信息,来获取我们的磨损参数,我们会发现我们可以通过这种方法大幅度的提高SSD故障预测的准确率,并且能够保证低成本的存储系统可靠性。
现在我们正在做其他比较有意思的事情,一个是我们在做一些主动分级容错技术,相当于故障预测是主动发现机制,我们能够主动发现故障在什么地方,但是在我们的整个存储系统里多被动的方法保障数据可靠性,比如采用副本/备份和纠删码等等,我们在做怎么把故障预测和现有的被动的容错机制做融合实现分级容错,我们会根据故障预测的结果,假设你是最近一天之内就会产生故障,这个时候我们可能就有可能考虑,而且这个数据比较热,我们可能就会考虑这个数据做副本或者迁移。
第二个,如果你的故障短期内不会出现,可能是比较长期才会出现,这个时候我们会考虑用一些更加低成本的容错方式。
我们除了在做固态硬盘的故障预测外,去年我们和华为也做了基于Dream的故障预测,我们也在研究刚才提到的怎么样做HBM的基于GPU的内存的故障预测。同时我自己承担一个重点研发计划也在尝试做基于持久内存的故障预测。
第三,我们最近可能还在跟一些公司合作,因为去年做得工作是针对TLC的SSD,他们说QLC的SSD故障率跟TLC有很多不一样的地方,故障率也没有那么高,比大家想象的要好,所以我们怎么去针对QLC或者现在基于CLQ,像三星刚刚推出,我们怎么针对这一类的固态硬盘做一些故障预测,我们可能也会在这方面去开展相应的研究。
关于演讲嘉宾:
吴晨涛,上海交通大学计算机科学与工程系教授,国家级青年人才,国家重点研发计划首席科学家。CCF体系结构专委会常委,上海市计算机学会存储专委会主任。吴晨涛教授曾多次受邀在DOIT举办的全球闪存峰会、分布式存储峰会等在内的专业会议中发表演讲,受到业界人士的广泛关注。