魏 坤,沈記全
(河南理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 焦作 454000)
數(shù)據(jù)中心承載的各種業(yè)務(wù)類型對(duì)帶寬和時(shí)延的穩(wěn)定性具有較高要求,性能穩(wěn)定并可預(yù)測(cè)是數(shù)據(jù)中心的重要指標(biāo)之一[1-2]。硬盤故障會(huì)阻塞業(yè)務(wù)甚至造成數(shù)據(jù)丟失,由于硬盤故障導(dǎo)致業(yè)務(wù)中斷造成成本上升了41%,硬盤故障已經(jīng)成為影響數(shù)據(jù)中心性能的主要故障來(lái)源[3]。
硬盤本身具有“健康、亞健康、瀕臨故障、故障”的必然性周期。硬盤故障必然會(huì)帶來(lái)集群本身的性能下降,如果在硬盤發(fā)生故障前進(jìn)行有效的數(shù)據(jù)轉(zhuǎn)移,則可以避免數(shù)據(jù)丟失及性能下降的風(fēng)險(xiǎn)[4-6]。在存儲(chǔ)系統(tǒng)層面,穩(wěn)定的帶寬和時(shí)延是符合高斯分布的,也就是說(shuō)系統(tǒng)在90%的情況下都是非常穩(wěn)定的,而對(duì)性能和穩(wěn)定性要求較高的數(shù)據(jù)中心,則需要在當(dāng)前的業(yè)務(wù)模型下監(jiān)控硬盤的運(yùn)行狀態(tài),預(yù)測(cè)硬盤帶寬和時(shí)延的異常,并將業(yè)務(wù)變化控制在一定的閾值范圍內(nèi)[7-8]。
目前,存儲(chǔ)集群在提升硬盤性能與數(shù)據(jù)保護(hù)方面主要采用被動(dòng)容錯(cuò)技術(shù)、磁盤冗余陣列技術(shù)、副本技術(shù)、糾刪技術(shù)及哈希校驗(yàn)等。集群故障處理的通用流程是在發(fā)生故障后,定位原因,并修復(fù)故障問(wèn)題[7-8]。硬盤發(fā)生故障后,容錯(cuò)技術(shù)可滿足讀寫校驗(yàn)和數(shù)據(jù)安全的需求,但容錯(cuò)技術(shù)有比較明顯的缺陷,比如空間利用率較低,以及數(shù)據(jù)恢復(fù)過(guò)程存在業(yè)務(wù)性能下降甚至數(shù)據(jù)丟失的風(fēng)險(xiǎn)等。
隨著數(shù)據(jù)安全技術(shù)的發(fā)展,目前各大硬盤廠商普遍采用的自我檢測(cè)分析報(bào)告技術(shù)(Self-Monitoring Analysis and Reporting Technology,SMART),已成為業(yè)界一種標(biāo)準(zhǔn)的硬盤故障狀態(tài)檢測(cè)和預(yù)警技術(shù)?;谠摷夹g(shù)對(duì)硬盤狀態(tài)特征進(jìn)行統(tǒng)計(jì)歸納取得了很多研究成果,主流方案是通過(guò)采集硬盤SMART的狀態(tài)信息來(lái)建立硬盤故障預(yù)測(cè)模型,主要采用機(jī)器學(xué)習(xí)算法、統(tǒng)計(jì)學(xué)習(xí)算法等模型[9-10]。但上述方法存在一些局限性:預(yù)測(cè)模型受限于樣本訓(xùn)練集,因?yàn)橛?xùn)練集往往在特定型號(hào)的硬盤上進(jìn)行學(xué)習(xí)訓(xùn)練,所以其泛化能力較差,需要在實(shí)際生產(chǎn)環(huán)境中選用不同的預(yù)測(cè)模型;另外,上述解決方案雖然在故障預(yù)測(cè)方面達(dá)到了一定的精度,但在工程領(lǐng)域中的應(yīng)用并不理想,有研究表明,大約有36%的硬盤設(shè)備在不滿足任何SMART閾值的情況下發(fā)生故障,這就極大地限制了SMART技術(shù)在存儲(chǔ)系統(tǒng)中的應(yīng)用。為了解決上述問(wèn)題,本文擬通過(guò)硬盤性能數(shù)據(jù)的表征建立硬盤基準(zhǔn)模型,推測(cè)機(jī)械硬盤個(gè)體性能是否異常。
數(shù)據(jù)異常點(diǎn)按照在時(shí)間上的連續(xù)性可分為孤立的異常點(diǎn)和連續(xù)的異常點(diǎn)。對(duì)于孤立的異常點(diǎn),可能是由于環(huán)境不穩(wěn)定導(dǎo)致數(shù)據(jù)的臨時(shí)跳變,只要下個(gè)檢測(cè)周期恢復(fù)正常一般不做進(jìn)一步處理。但對(duì)于連續(xù)的異常點(diǎn),有可能是硬盤本身出現(xiàn)故障,也有可能是系統(tǒng)本身出現(xiàn)故障,需進(jìn)一步排查。對(duì)此,本文對(duì)硬盤的性能數(shù)據(jù)進(jìn)行滑動(dòng)平均算法處理,以確保數(shù)據(jù)樣本的有效性?;瑒?dòng)平均算法是根據(jù)時(shí)間序列資料逐項(xiàng)推移,依次計(jì)算包含一定項(xiàng)數(shù)的序時(shí)平均值,以反映長(zhǎng)期趨勢(shì)的方法。因此,當(dāng)時(shí)間序列的數(shù)值由于受周期變動(dòng)和隨機(jī)波動(dòng)的影響起伏較大,不易反映事件的發(fā)展趨勢(shì)時(shí),使用滑動(dòng)平均算法可以消除這些因素的影響,反映事件的發(fā)展方向與趨勢(shì)(即趨勢(shì)線),依趨勢(shì)線分析預(yù)測(cè)序列的長(zhǎng)期趨勢(shì)。
我們采用業(yè)內(nèi)通用的性能測(cè)試工具fio,對(duì)健康硬盤進(jìn)行4k隨機(jī)寫,獲取的原始數(shù)據(jù)集作為訓(xùn)練集;對(duì)已確定的異常硬盤進(jìn)行4k隨機(jī)寫,獲取的原始數(shù)據(jù)集作為測(cè)試集。采集的數(shù)據(jù)集定義如式(1):
D={(Sv|w,Tv|w),i=1,2,…,N}。
(1)
其中,Sv為單位窗口期內(nèi)通過(guò)鏈路的I/O數(shù)據(jù)量;Tv為每次設(shè)備I/O響應(yīng)的服務(wù)時(shí)間,這個(gè)參數(shù)值是由窗口期內(nèi)消耗在I/O訪問(wèn)上的時(shí)間累加值除以這段時(shí)間內(nèi)的I/O請(qǐng)求次數(shù)而得到的;w為一定時(shí)間間隔期內(nèi)的數(shù)據(jù)點(diǎn)集合。
考慮到數(shù)據(jù)量計(jì)算與有效性的問(wèn)題,采用滑動(dòng)平均算法來(lái)統(tǒng)計(jì)分析數(shù)據(jù)集。該算法將限定的窗口時(shí)間周期內(nèi)的數(shù)據(jù)乘以不同的數(shù)值,其計(jì)算方法如式(2):
vt=bvt-1+(1-b)θt。
(2)
其中,θt為第t天的實(shí)際觀察值;vt為要代替θt的估計(jì)值,也就是第t天的指數(shù)加權(quán)平均值;b為vt-1的權(quán)重,是可調(diào)節(jié)的參數(shù), 0
(3)
滑動(dòng)平均算法的處理過(guò)程為:
1)輸入:原始數(shù)據(jù)集。
2)設(shè)置滑動(dòng)平均算法的窗口值為w,衰減因子為b。
3)設(shè)置循環(huán):t=1;t≤n。
4)當(dāng)t 5)根據(jù)原始數(shù)據(jù)集,疊加獲取的上個(gè)數(shù)值乘以衰減因子b。 6)獲取當(dāng)前數(shù)值,疊加步驟3)的數(shù)值,得到新的“上個(gè)窗口值”的指標(biāo)數(shù)據(jù)。 7)當(dāng)t>n時(shí),結(jié)束循環(huán)。 8)輸出:經(jīng)過(guò)滑動(dòng)平均算法處理的性能數(shù)據(jù)集。 高斯異常檢測(cè)算法是一種被廣泛應(yīng)用的聚類算法,它可以將數(shù)據(jù)聚類成若干個(gè)基于高斯概率密度函數(shù)形成的模型,因此,它幾乎可以擬合逼近各種分布。我們根據(jù)式(3)的滑動(dòng)平均算法進(jìn)行處理后,得到響應(yīng)數(shù)和帶寬的數(shù)據(jù)集,再采用高斯分布算法處理,可得到高斯分布模型,如圖1所示。 圖1 高斯分布模型Fig.1 The Gaussian Distribution Model 由此可見(jiàn),兩個(gè)屬性基本服從高斯分布,設(shè)μ為均值,N為n×n維協(xié)方差矩陣,|N|為矩陣N的行列式,高斯多元分布模型概率如式(4): (4) 對(duì)于參數(shù)μ和N的計(jì)算,假設(shè)上述兩種特征均符合高斯分布,各維度之間的關(guān)系通過(guò)協(xié)方差來(lái)描述。我們對(duì)期望作如下定義: (5) (6) 高斯算法的預(yù)測(cè)模型訓(xùn)練步驟如下: 1)從高斯分布中選取特征向量。 2)計(jì)算每個(gè)特征的均值μ和協(xié)方差矩陣N。 3)建立高斯模型,計(jì)算期望。 4)通過(guò)最大似然估計(jì)得到每個(gè)高斯分布的參數(shù),計(jì)算F的最大值,從而得到最佳閾值ε。 5)對(duì)于新樣本x,若p(x)<ε,則是異常的。 為了判斷一個(gè)新樣本是否異常,將計(jì)算出來(lái)的概率值與高斯分布的異常閾值ε進(jìn)行比較,若期望小于ε,則認(rèn)為異常。將已知數(shù)據(jù)集中的一部分?jǐn)?shù)據(jù)標(biāo)記為異常并建立驗(yàn)證集,通過(guò)驗(yàn)證集計(jì)算評(píng)估參數(shù)F1,通過(guò)重試ε并選擇F1的最大值。F1值是對(duì)模型進(jìn)行綜合評(píng)價(jià)的標(biāo)準(zhǔn)之一,數(shù)值越大說(shuō)明模型性能越好。參數(shù)F1的計(jì)算公式如式(7): (7) 式中:tp為正確的正樣本個(gè)數(shù),表示算法能夠正確地將其識(shí)別為異常樣本;fp為錯(cuò)誤的正樣本個(gè)數(shù),表示算法將正常樣本識(shí)別為異常樣本;fn為錯(cuò)誤的負(fù)樣本數(shù)量,表示算法將異常樣本識(shí)別為正常樣本。 綜上所述,基于滑動(dòng)平均算法的多元高斯分布異常檢測(cè)的綜合算法主要包括以下幾點(diǎn),流程圖如圖2所示。 圖2 異常檢測(cè)流程圖Fig.2 Anomaly Detection Flow Chart 1)收集判定為健康硬盤的性能數(shù)據(jù)集,去除無(wú)效數(shù)據(jù),獲得原始數(shù)據(jù)集。 2)采用滑動(dòng)平均算法對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,得到服從高斯分布的數(shù)據(jù)。 3)采用高斯模型計(jì)算硬盤性能異常的概率p(x),利用驗(yàn)證集確定最佳閾值ε。如果預(yù)測(cè)概率p(x)<ε,則認(rèn)為新觀測(cè)到的樣本值異常。 為驗(yàn)證本文提出的檢測(cè)方法的有效性,本實(shí)驗(yàn)采用某數(shù)據(jù)中心存儲(chǔ)集群硬盤的性能監(jiān)測(cè)數(shù)據(jù)為實(shí)驗(yàn)數(shù)據(jù)集,硬盤是廠商為希捷、型號(hào)為ST32000644NS的機(jī)械硬盤。實(shí)驗(yàn)采集了2020年8月16日至2020年9月26日期間的硬盤監(jiān)測(cè)數(shù)據(jù),若硬盤在此期間發(fā)生故障, 判斷其故障風(fēng)險(xiǎn)高,否則為無(wú)故障。實(shí)驗(yàn)數(shù)據(jù)集中共包含硬盤14 400塊, 其中已經(jīng)檢測(cè)并標(biāo)記故障的硬盤為29塊。 本次實(shí)驗(yàn)的預(yù)測(cè)模型采用Python編程,并在Linux系統(tǒng)的物理服務(wù)器上獨(dú)立運(yùn)行,服務(wù)器的相關(guān)配置信息如表1所示。 表1 物理服務(wù)器配置信息Table 1 Physical Server Configuration Information 根據(jù)上述算法模型,采用fio隨機(jī)寫4k的壓力,并從29塊異常硬盤中選取3塊硬盤的性能指標(biāo)作為異常性能基準(zhǔn)的驗(yàn)證集,以確定高斯異常檢測(cè)模型的最佳閾值ε。根據(jù)預(yù)測(cè)模型對(duì)數(shù)據(jù)集檢測(cè)異常的數(shù)據(jù),采用上述方法搜集硬盤的時(shí)延與帶寬,如圖3所示。 圖3 原始數(shù)據(jù)Fig.3 Original Data 使用滑動(dòng)窗口算法合并后,硬盤數(shù)據(jù)的波動(dòng)范圍更小,如圖4所示。 圖4 合并數(shù)據(jù)Fig.4 Merged Data 采用4k隨機(jī)寫的壓力測(cè)試模型散點(diǎn)圖如圖5所示,其中29塊已確認(rèn)為異常硬盤的正確檢測(cè)數(shù)為28塊,同時(shí)共檢出其他異常硬盤41塊,檢測(cè)準(zhǔn)確率為96.5%,且沒(méi)有誤報(bào);準(zhǔn)確率、召回率和F1值如圖6所示。 圖5 數(shù)據(jù)異常散點(diǎn)圖Fig.5 Data Anomaly Scatter Diagram 圖6 評(píng)估指標(biāo)Fig.6 Evaluation Indicator 在存儲(chǔ)系統(tǒng)中,節(jié)點(diǎn)的負(fù)載能力是非常重要的,預(yù)測(cè)模型是否在負(fù)載波動(dòng)范圍內(nèi)可在一定程度上反映模型的易用性和實(shí)用性。實(shí)驗(yàn)結(jié)果表明,異常檢測(cè)程序運(yùn)行時(shí)的負(fù)載值雖有所增大,但是基本控制在5%的負(fù)載區(qū)間,在分布式存儲(chǔ)集群性能冗余的范圍內(nèi),對(duì)大規(guī)模存儲(chǔ)系統(tǒng)影響很微小,業(yè)務(wù)和用戶基本是無(wú)感知的,并符合該數(shù)據(jù)中心商用檢測(cè)的要求,故檢測(cè)方案達(dá)到了預(yù)期效果。 本文針對(duì)數(shù)據(jù)中心因?yàn)橛脖P性能異常而造成的集群不穩(wěn)定問(wèn)題設(shè)計(jì)了一種基于高斯異常檢測(cè)算法的預(yù)測(cè)模型,整個(gè)過(guò)程包括兩部分:數(shù)據(jù)集的預(yù)處理與高斯異常算法預(yù)測(cè)模型的建立。預(yù)處理可以有效降低離散性能異常點(diǎn)的影響,從而獲得更符合高斯分布的數(shù)據(jù)集。該方法能快速檢測(cè)硬盤性能異常,從而進(jìn)一步發(fā)現(xiàn)潛在的性能問(wèn)題,解決以往通過(guò)SMART信息預(yù)測(cè)瀕臨故障的硬盤實(shí)用性較差的問(wèn)題。通過(guò)在實(shí)驗(yàn)環(huán)境中對(duì)分布式存儲(chǔ)集群的模擬和實(shí)驗(yàn)表明,該方法具有較好的易用性,并且具有較高的檢測(cè)效率。2.2 高斯異常檢測(cè)算法模型的建立與實(shí)現(xiàn)
3 實(shí)驗(yàn)結(jié)果分析
3.1 實(shí)驗(yàn)數(shù)據(jù)
3.2 實(shí)驗(yàn)環(huán)境
3.3 實(shí)驗(yàn)結(jié)果與分析
3.4 能耗分析
4 結(jié)束語(yǔ)
北京聯(lián)合大學(xué)學(xué)報(bào)2022年2期