丁建立,王潇霏,李 静
(中国民航大学 计算机科学与技术学院,天津 300300)
民航业在旅客服务、民航运营和航空运输等领域追求产品信息化,应用场景数字化的过程中产生了海量数据.然而,数据安全方面可能存在信息泄露、异常攻击和存储管理等风险.因此,民航存储系统需要具备更高的可靠性.目前采用副本技术以保障系统可靠性还远远不能满足民航存储系统的高可靠性要求.
大规模的民航存储系统使用云存储的方式提供可靠的海量数据存储服务.存储数据的硬盘跨节点分布在系统中,同时挂载硬盘的节点放置在机架上,一旦节点和机架发生故障,硬盘故障随即发生,这称之为相关故障.然而,较大规模的民航存储系统更容易发生故障,并可能导致数据丢失,从而影响系统的可靠性.首先硬盘故障是最常见的一种故障类型[1].例如在2010~2013年期间各行业由于硬盘故障导致系统服务中断造成的损失大约从每分钟$5,600增加到每分钟$7,900,损失上升高达41%[2].因此考虑硬盘故障对民航存储系统可靠性的研究十分必要.其次节点故障也是发生频率较频繁的一种故障类型,据Yahoo![3]集群报道称每个月大约有0.8%的节点发生故障.最后,机架故障相对硬盘故障和节点故障的发生频率较低,在真实的生产环境中每年发生一次[3],但民航存储系统分层架构决定了考虑机架故障这一因素的重要性.关于存储系统可靠性的研究[4-6]表明硬盘故障,节点故障和机架故障确实会影响系统的可靠性,从而造成系统发生数据丢失.
副本技术[7]是一种典型的“故障发生—故障重构”的被动容错方式.但是该方式存在两个明显的缺点:一方面副本技术通过复制得到一定数量的副本会增加冗余[8].另一方面,由于较长的数据恢复窗口,大容量的硬盘在恢复过程中再次发生故障的概率会增大,这极易造成数据丢失.为了克服以上缺点,并且考虑到现代硬盘自带SMART(Self-Monitoring Analysis And Reporting Technology)技术[9],故障预测准确率只有3%—10%[10]的低准确率问题[11],现有学者基于SMART属性值的研究提出了具有更高预测准确率的硬盘故障预测模型[10,12-14].该模型是一种主动容错[8,15-18]机制,能够对系统中的硬盘进行实时健康监测,可以更多更准确的识别故障,并在其发生前发出预警,提醒用户进行数据转移.上述研究表明,主动容错和被动容错机制的结合可以有效减少不必要的长期备份冗余开销,缩小备份冗余窗口,从而降低数据丢失的可能性,提高系统可靠性.
本文在民航采用传统副本技术存储数据的背景下,综合考虑硬盘故障,节点故障和机架故障因素,基于硬盘故障预测模型提出了多副本民航存储系统状态转换模型,并据此设计了蒙特仿真方法对多副本民航存储系统进行了全面的可靠性研究.
民航存储系统的系统架构如图1所示,是一种分层拓扑的结构[6,19-21].存储民航数据的硬盘被放置在节点上,节点挂载在机架上.同时,架顶交换机帮助同一机架内部不同节点完成通信,网络核心交换机则完成不同机架之间的通信[21].
图1 民航存储系统架构
民航存储系统将民航文件的数据分块存储,每个数据块根据采用的副本策略保存一定数量的副本.系统副本发生故障后,数据重构的工作可以利用其他存活副本进行[22],提高数据的存活效率.考虑到数据重构的成本尽可能地小,民航存储系统采用的是二副本和三副本策略.为了更好的研究机架故障和节点故障对民航存储系统的可靠性影响,二副本策略是将两个副本放置在跨机架的不同节点.三副本策略是将两个副本放置在同一机架的不同节点,第3个副本则跨机架放置.
民航存储系统主动容错方案的核心是实现硬盘潜在故障的提前预测和主动处理.民航存储系统的主动容错[23]方案主要包含5个部分.监控器负责收集民航存储系统中硬盘的SMART数据.收集器负责实时收集监控器中的数据.基于系统后台部署的硬盘故障预测模型,预测器主要负责实时监控硬盘的工作运行状态,对潜在硬盘故障发出预警.训练器负责定期更新预测模型.管理器负责管理和调度危险硬盘上的数据迁移工作.
在民航存储系统实际运行过程中,故障可以分为两种:暂时性故障和永久性故障.暂时性故障是指由于网络连接或系统维护等原因造成的系统暂时性不可用,但不会造成数据丢失的故障;永久性故障是指由于硬盘划碰等原因可能导致系统发生数据丢失的故障.因此,本文重点分析可能会造成数据丢失的永久性故障,具体考虑4种故障模式:
1)潜在块故障:一种由潜在扇区错误和静默的数据损坏造成的硬盘故障,可以通过“磁盘清洗”的方式处理[24].
2)运行故障:一种由电路板芯片烧坏,固件信息丢失或紊乱等造成的硬盘故障,仅能通过替换硬盘进行修复.
3)节点故障:一种由软件故障,硬件故障和服务器过热等造成的故障.一旦节点发生故障,也会导致其上挂载的硬盘发生故障.
4)机架故障:一种由于断电原因造成的故障.高达1%的节点将在通电重启后崩溃,并导致系统发生数据丢失[3].一旦机架发生故障,也会导致其上部署的节点不可访问.
民航存储系统状态转换模型是基于系统的分层架构,主动容错机制以及故障模式的研究构建而成.模型描述了系统从正常运行的状态到发生数据丢失之间的状态转换的过程.主动容错多副本系统状态转换模型根本上是在系统采用副本冗余机制提高可靠性的基础上实现了硬盘潜在故障的提前预测和主动处理.
二副本民航存储系统在以下两种情况会发生数据丢失:1)某一机架上的硬盘发生运行故障,若其他机架上任意一块硬盘发生运行故障,则判断系统发生数据丢失;2)某一机架上的硬盘发生潜在块故障,若受损副本的另一副本所在的硬盘发生运行故障,则判断系统发生数据丢失.
三副本民航存储系统在以下4种情况会发生数据丢失:1)同一个机架上位于不同节点的两块硬盘同时发生运行故障,若其他机架上任意一块硬盘发生运行故障,则判断系统发生数据丢失;2)不同机架上的两块硬盘同时发生运行故障,若这两个机架的不同节点上有一块硬盘发生运行故障,则系统发生数据丢失;3)同一个机架上同时发生了运行故障和潜在块故障,若发生潜在块故障的硬盘受损副本的另一个副本所在的硬盘发生运行故障,则判断系统发生数据丢失;4)一个机架上一块硬盘发生运行故障,不同机架上一块硬盘发生潜在块故障,则发生潜在块故障的硬盘受损副本的另一个副本所在的硬盘发生运行故障,则判断系统发生数据丢失.
多副本民航存储系统的状态转换模型比较复杂,该模型中列出了可能导致系统发生数据丢失的关键状态.其中故障和预警均是指同一冗余组中的故障和预警事件.同时需要注意的是系统中可以同时有多个预警,且不会造成数据丢失.
图2分别展示了二副本民航存储系统在主动和被动两种情况下的状态转换模型.采用二副本冗余机制时故障只能发生一次,如果系统再次发生故障则数据就会发生丢失.采用被动容错机制(如图2(a)所示),二副本民航存储系统从正常运行到发生数据丢失,只经历了一个故障发生的状态.采用主动容错机制(如图2(b)所示),二副本民航存储系统从正常运行到发生数据丢失,经历了只有预警发生(包括一个预警或多个预警发生),只有一个故障发生以及一个故障和预警(包括一个预警或多个预警发生)同时发生的状态.因为这些状态都是可以修复的,所以很大程度上避免了系统进入数据丢失的状态.另外,图2中的系统状态描述具体如表1所示,并且表2展示了系统发生状态转换的条件描述.
表1 系统状态描述
表2 系统状态转换描述
图2 二副本民航存储系统状态转换模型
图3分别展示了三副本民航存储系统在主动和被动两种情况下的状态转换模型.采用三副本冗余机制时故障只能发生两次,如果系统发生第三次故障时数据就会发生丢失.采用被动容错机制(如图3(a)所示),三副本民航存储系统从正常运行到发生数据丢失,经历了一个故障发生和两个故障发生的状态.采用主动容错机制(如图3(a)所示),三副本民航存储系统从正常运行到发生数据丢失,经历了只有预警发生(包括一个预警或多个预警发生),只有一个故障发生,有两个故障发生,一个故障和预警(包括一个预警或多个预警发生)同时发生以及两个故障和预警(包括一个预警或多个预警发生)同时发生的状态.相比主动容错二副本系统,更多可修复状态的存在更大程度上避免了系统进入数据丢失的状态.另外,图3中的系统状态描述具体如表1所示,并且表2展示了系统发生状态转换的条件描述.
图3 三副本民航存储系统状态转换模型
根据多副本民航存储系统状态转换模型,本文改进基于事件驱动的蒙特卡洛仿真方法模拟主动容错多副本民航存储系统的运行,并进行全面的可靠性研究.
蒙特卡洛仿真方法通过迭代足够多的次数来进行可靠性模拟.每一次迭代将民航存储系统架构,副本冗余机制和触发各个事件需要的参数作为初始化的输入,其中一次迭代的过程如图4所示.事件生成器会根据初始化参数分别为民航存储系统的每一个机架,每一个节点以及节点上的每一块硬盘随机分配故障发生时间,生成一系列故障和故障修复完成事件.预警事件则根据硬盘故障预测准确率(False Discovery Rate FDR)生成.之后程序按照事件发生时间的先后顺序维护了一个以最小堆形式存在的事件堆.根据事件发生时间的顺序,事件的类型将事件插入进不同的列表中,而后通过事件处理器采取不同的事件处理方法.程序一次迭代结束的标志是达到系统预设的运行时间(例如5年),然后输出可靠性度量指标.最后,输出所有迭代的平均可靠性度量.
图4 基于事件驱动的蒙特卡洛仿真
事件处理模块的核心是实现系统状态转换模型,该模块中的每个故障,预警和修复完成事件都是由五元组表示:1)事件发生时间,由系统根据事件服从的时间分布函数随机生成;2)事件类型,如表3所示的10种不同事件类型,其中主动容错机制可以通过事件m和事件n进行模拟;3)硬盘号;4)节点号;5)机架号.
表3 故障/预警/修复完成事件
民航存储系统运行过程中采用韦布分布模拟各个事件.Schroeder和Gibson[18]通过对多个领域大量硬盘替换记录数据的研究,发现硬盘故障率会随着其使用年限的增加逐渐增加.进一步研究发现相对于指数分布,韦布分布能够更好地模拟硬盘的生命周期.韦布分布的概率密度函数如公式所示:
其中,α是表示特征生命的尺度参数,β是控制分布形状的形状参数.通过β参数取值的不同可以模拟不同时期的民航存储系统运行情况.
蒙特卡洛仿真方法中事件堆的堆顶元素代表当前即将发生的事件.民航存储系统可以针对不同的事件类型,采用不同的处理方法:
1)若当前事件是故障事件,则程序将该事件插入故障列表,并检测系统是否发生数据丢失:若系统发生数据丢失,程序记录数据丢失的次数,同时将有关该硬盘/节点/机架的故障修复完成事件从故障列表中移除,随后为该硬盘/节点/机架生成一系列事件并插入事件堆.若系统未发生数据丢失,则程序为该故障生成故障修复事件插入事件堆.
2)若当前事件是故障修复完成事件,则程序将有关该硬盘/节点/机架的故障事件从故障列表中移除,随后为这个硬盘/节点/机架生成一系列事件并插入事件堆.
3)若当前事件是预警事件,则程序将该事件插入预警列表,随后为该预警生成预警修复完成事件插入事件堆.
基于不同类型的事件处理方法的分析,机架故障和节点故障的处理步骤为:1)如果当前事件类型为c/a,程序将该事件插入故障列表,随后删除故障列表和事件堆中关于此节点/机架以及其上硬盘的所有事件;2)判断此节点/机架是否发生数据丢失:若此节点/机架发生数据丢失,程序记录数据丢失的次数,随后为该节点/机架生成故障修复完成事件.若此节点/机架未发生数据丢失,则程序为该节点/机架随机生成故障修复完成事件;3)在发生数据丢失的情况下,若当前事件是节点故障事件,则程序为该节点上的硬盘生成故障和预警事件;若当前事件是机架故障事件,则程序为该机架上的节点生成故障事件,同时为每一个节点上的硬盘生成故障和预警事件.随后将一系列事件插入事件堆;4)在未发生数据丢失的情况下,若当前事件是节点故障事件,则程序为该节点上所有硬盘生成故障修复完成事件;若当前事件是机架故障事件,则程序为该机架上所有的节点和硬盘都生成故障修复完成事件.随后程序将一系列事件插入事件堆.这里需要注意的是故障修复完成事件的发生时间需要考虑当前时间.
民航存储系统发生故障后,利用容错机制可以重构故障数据,这说明民航存储系统是可修复的.可修复存储系统可靠性度量指标主要包括MTTR(Mean Time to Repair)和MTTDL(Mean Time to Data Loss).然而,研究表明,MTTR受到许多因素的限制,比如要恢复的数据量、存储介质和冗余机制等.另外,民航存储系统的实际运行时间与MTTDL相比非常短,因此MTTDL不能真正评估民航存储系统的可靠性水平.基于以上不足,现代学者提出一定时间内系统发生数据丢失的期望次数作为可靠性度量指标,该指标不局限于其他不可控因素,并且能真实反映民航存储系统的可靠性水平.因此,本文采用该可靠性度量指标评价民航存储系统可靠性.
仿真实验结果主要包括3个部分:1)参数设置;2)仿真实验结果分析;3)敏感性分析.仿真实验分析了主动容错机制,系统运行时间以及修复带宽对民航存储系统的可靠性影响.
民航存储系统架构中参数设置如表4所示,其中r代表机架总数,n代表单个机架的节点数,d代表单个节点部署的硬盘数.硬盘容量大小为1TB.如上参数所设置的系统规模可以在控制相同的数据容量下,对采用不同副本策略的民航存储系统可靠性进行全面的比较.避免实验存在偶然性,为减少实验误差,每组参数迭代运行200次取平均值作为最终的实验结果.
表4 实验参数设置
故障事件,预警事件和修复完成事件的参数如表5所示,具体分为以下4个部分:
表5 故障、预警和修复模型参数设置
1)硬盘故障和故障修复:事件采用容量为1TB的SATA类型的driveA的参数,该参数由Elerath和Schindler等[25]从数千个企业级存储系统收集的真实硬盘数据中分析得出.
2)节点故障和故障修复:参数设置根据Yahoo!集群[3]每个月服务器发生故障频率大约为0.8%,得到服务器的年平均故障时间为1080000小时.系统为每个故障修复事件分配相同的带宽,则节点故障的修复时间与节点上部署硬盘的数量有关.
3)机架故障和故障修复:假设系统每年发生一次断电未重启的情况,将影响单个机架暂时不可用,则机架的年平均故障时间大约为103680小时.与节点故障修复原理相同,机架故障的修复时间是硬盘故障修复时间的d×n倍.
4)硬盘预警和预警修复:当系统硬盘故障预测模型达到95%的准确率时,可以提前360小时预测故障时间[26].为实验结果更具普适性,设置硬盘故障预测模型的准确率为80%,系统预警时间为故障发生前300小时.另外,因为系统为预警处理和故障修复操作分配相同的网络带宽,所以预警处理的时间和故障修复的时间相同.
民航存储系统可靠性受很多方面因素的限制,本文主要分析故障来源,主动容错机制因素对民航存储系统的可靠性影响.图5表明了在相同运行时间内,民航存储系统可靠性与不同故障来源和硬盘故障预测准确率的关系.
图5 民航存储系统可靠性变化结果
首先,由图5可以看出随着硬盘故障预测模型准确率的增加,系统数据丢失次数呈明显下降的趋势,系统可靠性越来越高.分析发现,因为硬盘故障预测准确率越高,则故障预测越准确,所以系统可以对更多即将发生的故障提前发出预警并及时处理,从而避免系统发生故障,造成数据丢失.
其次,进一步分析可以得出:1)当硬盘故障预测准确率大于50%时,随着硬盘故障预测准确率的增加,考虑节点故障和机架故障来源的系统数据丢失次数曲线偏离程度越来越大.此现象说明节点故障,机架故障对民航存储系统的可靠性影响越来越大.现代学者研究的硬盘故障预测模型,目前可以达到95%或更高的预测准确率.硬盘故障预测模型的更新和预测准确率的增加,决定了民航存储系统可靠性研究全面考虑故障因素的必要性;2)二副本民航存储系统当FDR为80%时发生数据丢失的次数相比FDR为0时减少了5倍左右,且三副本民航存储系统当FDR为80%时发生数据丢失的次数相比FDR为0时减少了9倍左右.该现象说明主动容错机制能够有效降低系统数据丢失次数,提高系统可靠性.由于主动容错机制可以提前预测故障,发出预警并处理预警,避免故障发生,减少系统发生数据丢失的次数.以FDR等于80%为例,在相同的故障预测准确率情况下,考虑硬盘和节点故障,二副本和三副本民航存储系统的数据丢失率分别增大1.8倍和4倍;全面考虑故障因素,二副本和三副本民航存储系统的数据丢失率分别增大2.6倍和6.3倍.根据以上两点分析结果,说明本文基于主动容错机制,全面考虑故障因素的模型对民航存储系统可靠性研究工作是有帮助的.
最后,实验结果进一步观察可以得出考虑硬盘潜在块故障和不考虑的情况下,二副本和三副本系统实验结果曲线几乎重合,表明潜在块故障对系统可靠性影响较小.该现象产生的原因是发生潜在块故障的硬盘达到数据丢失状态的条件是受损副本的另一副本所在的硬盘发生运行故障,这个条件苛刻不容易满足.
综上所述,全面考虑故障因素,基于主动容错机制构建民航系统可靠性状态转移模型对提高系统可靠性确实有显著效果,具有重要的研究和实用价值.
从用户角度考虑,基于主动容错的多副本民航存储系统的好坏主要通过系统长时间的运行状态以及故障修复带宽的多少两个指标决定.因此敏感性分析对民航存储系统可靠性随系统运行时间以及修复带宽的变化情况进行了分析,具体如图6所示.
图6 民航存储系统可靠性随运行时间和修复带宽的变化情况
图6(a)通过改变系统运行时间参数展示了运行时间对民航存储系统可靠性的影响.随着系统运行时间的增加,民航存储系统发生数据丢失的次数不断增加.而主动容错民航存储系统相比被动容错,发生数据丢失次数的曲线增势缓慢,因此系统可靠性降低趋势更加缓慢.出现上述现象的主要原因是系统运行时间越长,导致硬盘老化,从而使硬盘发生故障的概率越来越大.主动容错系统通过预警机制使得前期硬盘故障频率降低,有效减缓了硬盘老化的速度.
系统会在故障发生后分配部分可用带宽重构故障数据块.故障重构时间的长短主要由修复带宽的大小决定.图6(b)展示了修复带宽对民航存储系统的可靠性影响.其中,故障重构时间通过改变韦布分布的参数得到.首先,分析实验结果发现,修复时间越长,系统发生数据丢失的可能性越大.三副本民航存储系统数据丢失次数曲线增势相对二副本较明显,说明三副本民航存储系统对修复时间的敏感性更强.出现这种现象的主要原因是三副本民航存储系统可以允许较多的故障发生,因此重构时间的变化对其可靠性影响较明显.其次,若将修复带宽降低70%,主动容错民航存储系统几乎可以与传统被动容错民航存储系统的可靠性水平接近甚至超越.分析认为由于主动容错机制使系统状态从“正常运行—故障重构”转换为“正常运行—预警处理—故障重构”,系统处于故障重构状态的时间减少.因此主动容错机制可以有效节约网络带宽资源.
根据以上分析,基于主动容错的民航系统可靠性状态转换模型在长时间内更具可靠性优势且能够有效节约网络带宽资源.
本文综合考虑故障因素,基于主动容错机制构建多副本民航存储系统状态转换模型,改进基于事件驱动的蒙特卡洛仿真方法对民航存储系统进行广泛的可靠性研究.研究得出以下结论:
1)基于主动容错的多副本民航存储系统状态转换模型明显提高了民航存储系统的可靠性.
2)硬盘故障,节点故障和机架故障三种故障因素均会使系统发生数据丢失,降低民航存储系统的可靠性.
3)主动容错机制可以有效减缓硬盘老化的速度,延缓系统可靠性下降的趋势.另外,主动容错机制引入预警处理状态使得系统减少了故障重构时间,可以有效节约网络带宽资源.
民航存储系统采用的三副本策略具有更高的可靠性,但需要更多的存储空间.二副本策略的可靠性相对较低,但存储空间更少.在未来工作中,将会展开基于主动容错机制的二副本和三副本策略的可靠性与存储空间的平衡的研究和实现.