APP下载

云计算环境下虚拟机故障预测

2022-12-14王开放陈威伟

现代电子技术 2022年24期
关键词:计算环境马尔可夫准确率

王开放,姜 瑛,陈威伟

(1.云南省计算机技术应用重点实验室,云南 昆明 650500;2.昆明理工大学信息工程与自动化学院,云南 昆明 650500)

0 引 言

随着计算机技术的发展,基于虚拟化技术的大型分布式云计算系统开始广泛地部署和应用。云计算作为当今互联网的主要计算方式,将软硬件资源以共享的方式提供给相应的计算机,并以这种方式为网络用户提供服务,使得用户能够按需获得计算资源、存储资源等[1]。作为实现云计算架构的关键,虚拟化技术能够将有限的物理资源抽象虚拟出多个具有相似特性的虚拟机实体,以便提供给更多的服务对象使用[2],从而使云计算环境中不同的物理资源都以虚拟机的形式灵活进行封装和分配,为用户按需提供租用服务。虚拟机作为云计算平台的服务实体,其内部通常会部署很多密集型和关键型的应用,它们会产生频繁的访存操作,这可能导致虚拟机内存崩溃,一旦内存崩溃,与内存相关的所有访存操作都将终止,会极大地影响云计算环境下虚拟机的运行[3]。特别在大规模的云计算环境中,提供服务的虚拟机有成千上万台,部分虚拟机会因为内存、CPU、网络等各种原因发生故障,导致虚拟机性能下降、宕机等,这将对云计算环境下虚拟机的可靠性、服务质量及用户体验造成严重影响。因此,有效预测出虚拟机的故障是亟待解决的问题。

1 相关工作

国内外已经开展了对云计算环境下的虚拟机故障预测的广泛研究。目前云计算环境下虚拟机故障预测的研究工作主要是:在虚拟机正常工作的条件下,采集虚拟机运行状态数据;然后通过对采集的数据进行分析,得到故障发生的规律,用于判断虚拟机在未来一段时间内是否发生故障。在虚拟机发生故障之前采取相关的预防措施,可以避免故障的发生或者降低故障发生带来的损失,为云计算环境下虚拟机的可用性和可靠性提供保证[4]。

通过预测云计算环境中物理节点的故障,可以将虚拟机分配和迁移到健康节点,从而提高服务可用性。Lin 等人提出了一种MING 模型,该模型根据历史数据预测云服务系统中节点的故障倾向性,返回排序为Topr的节点为故障节点[5]。Guan 等人提出利用贝叶斯方法和决策树方法来预测云计算系统中的故障。该方法需要管理员验证检测到的异常行为后,将这些数据添加标签即获取到一些具有标签的数据集;然后利用监督学习方法将数据集训练出决策树分类器来预测云计算中的故障[6]。

鲁明等人提出了一种虚拟机性能异常的预测方法,通过采用隐马尔可夫模型刻画当前系统的正确状态,并根据业务系统预测结果是否偏移正常状态来判定业务系统是否出现性能异常[7]。丁三军等人利用虚拟机的运行日志数据进行故障的模糊关联规则挖掘,提出一种基于规则的日志数据加权处理方法,并获得故障预测的关联规则,得出故障预测结果[8]。Li 等人提出了一种AdaBoost 和隐马尔可夫模型的虚拟机故障预测算法,以预测虚拟机未来的故障状态[9]。Saxena 等人提出了一种在线虚拟机故障预测和容错模型(OFP⁃TM),根据未来的资源使用情况实时估计容易发生故障的虚拟机,对易发生故障的虚拟机进行迁移,提前处理中断,提高云平台的可用性[10]。

在上述研究中,如文献[5⁃6]基于云计算节点运行的时间特征建立了相应的机器学习故障预测方法和模型,并根据节点的性能数据来预测性能数据,然后对预测结果进行分析,这易受到云计算平台高动态性的影响。

此外,还有通过虚拟机可观测的系统特征来对虚拟机进行故障检测和故障预测的研究,文献[7]通过可观测的系统特征如CPU 利用率,来对云计算环境下虚拟机系统当前的异常状态进行预测,但不能预测系统下一个时刻虚拟机系统的运行状态。部分研究针对云计算平台下的虚拟机故障预测主要是采取收集相关的日志数据,根据数据挖掘规则进行故障预测,如文献[8]易受到数据挖掘使用样本的限制。文献[9⁃10]的预测方法中存在由虚拟机负载所表现出的观测状态与虚拟机内部安全状态之间的关系存在不确定性,这需要进一步的探究。

针对上述研究中存在的问题,本文提出了一种基于虚拟机的历史故障规律建立故障预测的方法。本文方法通过分析虚拟机的历史数据和当前运行数据的差异度来判定虚拟机当前的状态,随后根据虚拟机的当前状态结合历史故障转移规律预测下一时刻故障。为了保证云计算环境下虚拟机的可靠性和可用性,本文方法根据云计算环境下虚拟机的运行,持续对预测方法中的训练数据进行动态更新,不断提升其故障预测的有效性。

2 虚拟机故障预测方法的建立

本文将云计算环境下虚拟机故障限定为性能故障,指偏离虚拟机正常行为性能退化。与造成虚拟机立即停止运行的宕机或崩溃失效不同,性能故障通常只是造成虚拟机运行效率下降,如虚拟机CPU 负载过高,或内存泄露可能会导致可用CPU 占用率上升、内存数量减少等。而因为故障导致的性能异常,均可以通过对虚拟机的运行状态的监测数据来进行判断。因此,本文通过监测云计算环境下虚拟机的性能数据来预测虚拟机的故障。

云计算平台下的虚拟机在持续运行过程中其状态数据始终源源不断地产生,新的数据可能蕴含着新的故障规律。现有的故障预测方法大多利用固定的数据集进行一次性学习,根据学习结果进行预测,未学习新运行数据所包含的故障规律。因此,本文的故障预测方法通过持续将虚拟机产生的运行数据加入到训练集进行不断训练,学习新数据所蕴含的故障规律,以提高故障预测的准确性。

本文的故障预测方法过程为:首先对持续采集的性能指标数据进行预处理;接着对预处理之后的数据进行特征选择;然后计算现有数据与历史数据正常状态和故障状态下的特征差异,并根据特征差异度来对虚拟机的当前状态进行判断;再根据虚拟机的历史状态变化规律建立马尔可夫链故障预测方法,预测虚拟机下一时刻的故障状态;最后持续的更新训练集,学习新故障发生规律。云计算环境下虚拟机故障预测方法的流程如图1所示。

图1 虚拟机故障预测方法流程

2.1 预处理虚拟机运行数据

由于虚拟机运行数据各个指标的量纲和单位不同,有些指标数据值很大但却不是造成故障的主要因素,而有些指标数据值很小但却有可能是造成故障的重要因素,在不对特征进行归一化时很难选出与故障预测、故障估测具有强相关的特征,因此本文采用StandarScaler方法对采集到的数据集进行标准化处理,使得新的数据集方差为1,均值为0,目的是消除不同维度的数据量级对故障特征选择的影响。标准化之后的数据既保留了原数据的特性,又避免了数据值比较集中的情况。

2.2 对运行数据进行特征选择

2.1 节中对数据进行标准化处理之后,消除了量纲不同而造成的影响,但是由于采集到的虚拟机运行数据的指标过多,其中有一些指标属于噪声数据或者与故障不相关,而这些数据输入到预测方法将会增大运算量和开销,并且会影响方法的预测准确性。所以为了获得云计算环境下虚拟机的有效状态特征,对原始数据进行降维处理是不可或缺的过程。目前常用的特征降维方法是特征提取和特征选择,特征提取得到的最终特征集失去了原始特征集的物理含义,从而使得新得到的特征子集的可理解性差;特征选择可以剔除掉无关的、冗余的及对虚拟机故障预测起副作用的状态特征后,得到与故障预测强相关的精简数据特征子集,更能反映故障规律的本质特征[11]。且在云计算的环境中,一旦发现故障,可根据特征子集进行反差其故障原因,可解释性强。因此,本文利用特征选择的方法,即Relief 算法来获取与虚拟机故障预测具有强相关的特征。

2.3 根据特征差异度判断虚拟机状态

通过第2.2 节中的特征选择方法,得到了和虚拟机的故障预测具有强相关的精简特征子集,该特征子集能反映故障规律的本质特征,且能够很好地判别出虚拟机的运行状态。由于虚拟机上的负载具有复杂性、动态性,其运行数据的波动性大,所以虚拟机在故障状态下和在正常状态下所表现出的特征具有很大的差异性。根据归属同一类别的对象之间具有很强的相似性,反之具有极大的差异性这一特点,选取能够刻画不同类标签的代表性对象实例作为参考目标,并利用其余对象与代表性对象之间的差异性来判断其余对象的类别。本文根据差异性判别的基本思想是:训练样本集E中包含正常数据训练集M和故障数据训练集F。正常训练集M中包含n个对象实例,故障训练集F中包含n个对象实例,即M={x1,x2,…,xn},F={f1,f2,…,fn},分别从各自的训练集中选取r个对象构成原型集Y1,Y2,Y1={q1,q2,…,qr},Y2={s1,s2,…,sr},要求该r个对象实例能够显著刻画该类标签的特征。i∈E,q1∈Y1,s1∈Y2,Label(q1)=A,Label(s1)=B,若dis(i,q1)>dis(i,s1),则Label(i)=B,其中dis(·)函数表示两个样本间的距离函数,本文根据样本之间的距离大小来表示差异度。

在差异度计算的方法中,原型集代表了一类对类标签具有显著识别能力的有用的样本子集,将其作为差异度计算过程中的参考数据集[12]。本文采用文献[12]中的二进制粒子群优化算法选取最佳的样本子集作为原型集。通过分析虚拟机当前运行数据与不同的原型集之间的差异度判断虚拟机当前的故障状态。根据特征差异度判断虚拟机状态算法,如算法1 所示。

算法1:根据特征差异度判断虚拟机状态

输入:虚拟机历史正常数据ntraindata 和标签nlabel,历史故障数据ftraindata 和标签flabel,虚拟机当前数据cdata

输出:虚拟机故障状态plabel

2.4 马尔可夫链预测方法构建

第2.3 节中利用虚拟机历史运行数据得到了通过特征差异,来对虚拟机当前的故障状态进行判定,然后在当前状态的基础上对虚拟机进行故障预测。虽然虚拟机的运行情况是根据其负载情况而动态变化的,但是虚拟机下一时刻的运行情况往往只受当前情况的影响,即虚拟机下一个时刻的运行状态受当前状态的影响较大而受除当前状态之前的状态影响较小。基于虚拟机运行情况的无后效性特点,本文提出了基于一阶马尔可夫链的故障预测方法,利用上文所述的虚拟机当前状态的判定方法判定虚拟机的当前状态,并通过虚拟机的历史运行状态来得出其马尔可夫的预测方法。

马尔可夫链是由俄国数学家安德雷马尔可夫提出,相关定义和性质在文献[13]中有详细的介绍,本文中简单地引入介绍在故障模型建立的过程中所用到的一些相关的定义和性质。马尔可夫链是一组具有马尔可夫性质的离散随机变量的集合,具体而言,假设随机过程{Xn,n∈T}的参数集T是离散的时间集合,其相应Xn的状态空间是离散的状态集I={i1,i2,…},如果对于任意的整数n∈T和任意的i1,i2,…,in+1∈I,条件概率满足P{Xn+1=in+1|X0=i0,X1=i1,X2=i2,…,Xn=in}=P{Xn+1=in+1|Xn=in},则称{Xn,n∈T}为马尔可夫链[14]。通过上述马尔科夫链的定义不难看出,马尔可夫链具有无后效性,即系统下一次的状态只与当前状态有关。

在一个完整的马尔可夫链预测过程中,条件转移概率是至关重要的,条件转移概率:pij(n)=P{Xn+1=j|Xn=i},即马尔可夫链Xn在时刻n的一步转移概率,其中i,j为状态集中的状态。根据一步转移概率可以得出系统状态的一步转移概率矩阵P。虚拟机历史阶段中每一次状态与下一次状态发生的种类转移的次数,即为状态转移矩阵K。公式如下:

式中:kij的物理意义为上次系统的状态是i而下一次系统的状态是j的次数;pij为条件概率,其物理意义为上一次发生的是状态i的条件下,下一次发生的是状态j的概率。根据条件概率的定义,得:

根据概率的加法公式得到:

综合以上两个公式并考虑kij的物理意义,则P{xs=因此有

根据其物理意义统计虚拟机历史数据状态转移次数即状态转移矩阵K,并计算一步转移概率矩阵P,并将当前虚拟机的状态作为初始概率向量。根据初始概率向量和转移概率矩阵计算出下一时刻的故障概率,根据概率判断是否发生故障。基于虚拟机历史数据构建的马尔可夫链预测算法如算法2 所示。

算法2:根据虚拟机历史数据构建一阶马尔可夫链预测算法

输入:虚拟机历史状态集transition

输出:预测状态state

2.5 虚拟机下一时刻的运行状态预测

根据第2.3 节中对虚拟机当前状态判定的结果和第2.4 节中的一阶马尔可夫链预测方法,可以预测虚拟机下一时刻的运行状态。

具体过程为:根据第2.3 节中介绍的差异度计算方式求出当前虚拟机当前的运行状态,确定初始概率向量,并根据转移概率矩阵和初始概率矩阵构建虚拟机故障预测方法,预测下一时刻虚拟机故障;然后动态更新训练数据。在动态更新训练数据时,首先是利用测试集来验证预测方法的准确性,将预测的结果保存下来,预测结束后将预测结果与真实结果进行对比,计算其预测准确率,然后将测试集当作训练集,继续训练来修正预测误差。具体算法如算法3 所示。

算法3:预测虚拟机故障算法

输入:虚拟机运行测试数据集data

输出:下一时刻的虚拟机故障状态fstate

3 实验及分析

为了验证所提方法的有效性,本文在实验部分搭建了Hadoop 平台,并对平台中虚拟机运行的真实数据进行了采集。该平台有1 个NameNode 节点、9 个DataNode节点,共10 个虚拟机节点,分别部署在3 台不同的物理节点上,其中2 台为工作站,另外1 台为服务器。数据采集部分,利用dstat 监测工具和笔者开发的监控程序获取各个虚拟机运行状态相关的数据。NameNode 节点为Master 节点,DataNode 节点为Slave 节点。DataNode 节点负责获取虚拟机的运行数据,NameNode 节点负责处理各个虚拟机的运行数据并进行故障预测。物理节点的配置如表1所示。DELL Precesion(3630)是工作站,SR650 是服务器。本文搭建的Hadoop 平台中每台虚拟机的环境配置都是相同的,即全都采用CentOS 7.6 版本的操作系统,3 个VCPU,3GB 运行内存,30 GB 的磁盘大小,Name Node 节点的IP 地址为192.168.100.223,DataNode1~DataNode9 节点的IP 地址为192.168.100.171~192.168.100.179。

表1 物理节点配置表

NameNode 部署在服务器上,DataNode1~DataNode5部署在工作站A 上,DataNode6~DataNode9 部署在工作站B 上。将云平台下的各个虚拟机设置在同一个网段中,使得其能够相互通信和执行分布式的工作。

将采集到的原始属性通过特征选择,选择出16 个和虚拟机故障预测具有密切相关的属性特征,特征信息表如表2所示。

表2 特征信息表

表2是通过特征选择方法选择的16 个特征,其能够很好地表现虚拟机的运行状态,且和故障预测有较强的相关性。故障预测效果的评估方法有很多种,比较常见的评估方法有准确率(Accuracy)、召回率、精确度(Precision)和F值(召回率与精确度的调和平均)等[15]。本文的实验评价指标是以预测准确率和预测效率作为评价指标。其中预测准确率是正确预测到的虚拟机运行状态的样本数占总样本数的比率,预测效率是预测出虚拟机状态所花费的时间。

实验部分一共采集各虚拟机的运行数据540 936条,其中包括140 532 条故障数据。本文将前270 000 条数据作为训练数据,剩下的数据作为测试数据。训练数据用以获取正常数据原型集和故障数据原型集作为差异度计算依据,以及构建一阶马尔可夫链预测方法,并将训练完成的方法保存在NameNode 节点上。

3.1 实验一

在本次实验中使用270 000 条训练数据,按照本文的方法和文献[9]的方法分别进行了训练,270 000 条数据中有故障数据68 522 条。然后将虚拟机所发送的25 000 条测试据作为测试集,分别输入以上两个预测方法中进行验证。实验过程中通过记录各个方法的预测准确率和预测效率来进行实验效果的对比。两种方法的预测准确率和预测效率如图2、图3所示。

图2 故障预测准确率

图3 故障预测效率

图2和图3中S1~S9表示虚拟机DataNode1~DataNode9。通过以上实验的结果可知:本文方法在对各台虚拟机进行故障预测时,预测准确率平均在85%,预测效率为0.19 s;而文献[9]方法,预测准确率平均在76%,效率为7.50 s。对比实验结果可以看出,本文方法在预测准确率和预测效率上均优于文献[9]方法。因为文献[9]方法利用Adaboost 进行预测,而Adaboost 集成了很多的弱分类器,每次通过迭代来更新不同分类器的权值,相对比较耗时,且文献[9]方法针对预测的观测结果和虚拟机隐状态之间尚存在不确定性,所以预测准确率欠佳。

3.2 实验二

在本次实验中,利用每台虚拟机所发送的25 000 条数据作为测试数据来验证预测方法,在NameNode 节点上将每个虚拟机的25 000 条数据分为5 个批次进行测试和训练,每个批次为连续的5 000 条数据。首先用第1 批次的数据在本文的预测方法上进行验证,得出其预测预测准确率和预测效率;然后将第1 批次的测试数据作为训练数据在之前训练好的方法的基础之上继续训练,学习新运行数据的故障规律。在第1 批次数据训练结束后,以第2 批次的数据继续作为测试数据进行测试,得出其预测结果;接着将第2 批数据作为训练数据,在第1 批数据训练完成的基础上进行继续训练,继续学习新的运行数据所包含的故障规律,依次进行迭代,直到将第5 批数迭代完成,最终得到通过迭代更新训练数据集的故障预测方法对每台虚拟机的预测效果。

在训练数据未更新之前,以及加入前一批次作为训练数据,相邻的后一批次作为测试数据,在本文故障预测方法上进行验证的预测效果如图4所示。

图4 训练数据更新之后故障预测准确率

由图4实验结果可以看出:在未对训练数据集进行迭代更新之前,本文方法对各个虚拟机的预测准确率为85%左右;在每次进行训练集迭代更新之后,对故障的预测准确率都有不同程度的提高,在测试集的5 批数据迭代更新完之后,该方法最终的预测准确率达到了90%左右。该实验结果说明了通过对训练集的迭代更新能够提升对故障的预测准确率。

在训练数据未进行更新迭代时,本文预测方法的预测效率是0.2 s,随着训练样本进行累计更新,预测效率是2.2 s,预测效率随着样本累计而有所降低,但仍高于文献[9]的预测效率。

从实验结果可以看出,本文预测方法的初始预测准确率不高,数据更新迭代之后存在一定的收敛等,通过分析认为,本文方法对于突变情况下预测虚拟机状态的效果有待提高。

4 结 语

针对云计算环境下虚拟机故障预测,本文提出了一种基于马尔可夫链的故障预测算法。首先对虚拟机运行数据进行预处理;然后对运行数据进行特征选择,选择出和故障预测具有强相关性的最佳特征子集;接着利用特征差异来判断虚拟机当前的故障状态;最后利用虚拟机的历史运行数据建立马尔可夫链故障预测方法,并持续地将虚拟机的运行数据加入到训练集对训练集进行持续更新。实验结果表明,本文建立的故障预测方法对虚拟机故障的预测是有效的,且对训练数据进行持续的更新能够提高故障的预测准确率。但是本文中也存在对于突发性故障的预测性不是很好,下一步将针对虚拟机突发故障开展相关研究。

猜你喜欢

计算环境马尔可夫准确率
云计算环境下网络安全等级保护的实现途径
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
高速公路车牌识别标识站准确率验证法
大数据云计算环境下的数据安全
保费随机且带有红利支付的复合马尔可夫二项模型
云计算环境中任务调度策略
基于SOP的核电厂操纵员监视过程马尔可夫模型
应用马尔可夫链对品牌手机市场占有率进行预测