田烜瑜 汪旭杰 史恩澤 陳思奇
(1.中國民航大學計算機學院 天津市 300300 2.中國民航大學安全科學與工程學院 天津市 300300)
為了在互聯(lián)網(wǎng)上傳遞、加速、展示、計算、存儲數(shù)據(jù)信息,數(shù)據(jù)中心應運而生,并在全球蓬勃發(fā)展,而磁盤故障的出現(xiàn)對數(shù)據(jù)中心的可靠性和可用性造成了很大的影響,嚴重降低了存儲系統(tǒng)的可靠性。對于這一問題,本文計劃基于LightGBM 算法設計在線磁盤故障預測模型,預測未來一周至兩周內(nèi)將出現(xiàn)故障的磁盤,從而提醒用戶提前備份危險磁盤上的數(shù)據(jù),避免數(shù)據(jù)丟失。本文所提的故障預測模型具有較高的預測準確率,并適用于大規(guī)模數(shù)據(jù)中心。
本文重點解決了下述三個問題:
(1)在線樣本標記問題。在離線學習過程中,由于已經(jīng)充分了解到磁盤的狀態(tài)(是否發(fā)生故障),可以很容易的對樣本進行標記;而在線學習過程中,磁盤狀態(tài)(是否會故障)很難確定,無法對新生成的樣本進行實時標記。為此,我們提出一種自動的樣本標記方法:首先將到來的磁盤樣本數(shù)據(jù)暫存,并設定暫存時間窗口為t。在t 時間內(nèi)如果有磁盤發(fā)生故障,則將之前暫存的該磁盤的樣本都標記為負樣本,對于t 時間內(nèi)沒有發(fā)生故障的磁盤,將其暫存的樣本都標記為正樣本,新標記的數(shù)據(jù)用于模型更新。
(2)樣本不平衡問題。故障磁盤和正常磁盤之間存在著高度的不平衡,這是因為磁盤故障是一個相對罕見的事件,故障磁盤只占樣本的很少一部分,而樣本不平衡會造成分類模型產(chǎn)生很嚴重的偏向性。對此本文采用改變樣本權重的方法來解決樣本不平衡問題,通過增大正樣本權重,從而間接降低負樣本權重。
(3)在線學習問題。具體而言,模型的在線學習就是增量學習,增量學習指一個學習系統(tǒng)能不斷地從新樣本中學習新的知識,并能保存大部分以前已經(jīng)學習到的知識。本文在當前決策樹的基礎上增加新的決策樹,而原來的決策樹保持不變,從而實現(xiàn)模型的增量更新。
為了減少磁盤故障帶來的損失,降低維護成本。目前,傳統(tǒng)存儲系統(tǒng)通常采用RAID 技術(即獨立磁盤冗余陣列技術)或副本機制來避免由于磁盤故障而導致的服務中斷。在發(fā)生設備故障時,系統(tǒng)利用冗余數(shù)據(jù)重構故障數(shù)據(jù),使用這種“被動容錯”機制保障系統(tǒng)和服務的可用性。然而隨著存儲系統(tǒng)規(guī)模的擴大,磁盤故障頻率不斷增加,這種“被動容錯”機制無法很好地保障系統(tǒng)的可靠性。與之對比的是“主動容錯”機制:SMART(Self-Monitoring, Analysis and Reporting Technology)技術通過在磁盤硬件內(nèi)的檢測指令對磁盤的硬件(如磁頭、盤片、馬達、電路)的運行情況進行監(jiān)控、記錄并與廠商所設定的安全值進行比較,若監(jiān)控到運行情況將超出或已超出預設安全值的安全范圍,就通過主機的監(jiān)控硬件或軟件自動向用戶做出警告,并將危險磁盤上的數(shù)據(jù)提前遷移到其他健康磁盤,以保障磁盤數(shù)據(jù)的安全。這種方法簡單易行,但是磁盤供應商為了保證低誤報率,通常將閾值設置的比較嚴謹,導致故障檢出率只有3%-10%,不能滿足系統(tǒng)可靠性的要求。
為了進一步提高磁盤故障預測的精度,國內(nèi)外科研人員基于大量磁盤SMART 數(shù)據(jù)和故障磁盤數(shù)據(jù),采用統(tǒng)計分析和機器學習方法來訓練磁盤故障預測模型。這些模型在故障磁盤預測方面表現(xiàn)出色,讓用戶可以對故障風險較大的磁盤進行提前更換,從而提高了系統(tǒng)的可靠性。早期Hamerly 和Elkan運用統(tǒng)計學中貝葉斯方法在來自昆騰公司的數(shù)據(jù)集上測試,得到 55%的故障檢測率(Failure Detection Rate,F(xiàn)DR)和0.82%的故障誤報率(False Alarm Rate,F(xiàn)AR)。Hughes等人提出兩個改進的智能算法,他們利用秩和檢驗對磁盤故障進行預測。在來自兩種不同公司提供的3744 個磁盤(36 個故障)上進行預測,結果表明他們的算法在0.5%誤報率的情況下,故障檢出率為60%。Zhu 和Wang等人探索了反向傳播(BP)神經(jīng)網(wǎng)絡模型,開發(fā)了一個改進的支持向量機(SVM)模型,使用23395 個磁盤真實數(shù)據(jù)來驗證模型,BP 神經(jīng)網(wǎng)絡模型在保持合理的低FAR 的同時,故障檢出率明顯提高,高達95%。國防科技大學胡維探索了利用機器學習理論預測磁盤故障的新方法,進一步提高預測的準確性,降低誤報率,增強實用性。
隨著對磁盤故障預測關注度和投入力度的深入和提高,基于磁盤故障預測的研究方法由傳統(tǒng)的統(tǒng)計學習方法轉變?yōu)闄C器學習方法。但上述方法都是在離線模型的方式下進行預測,雖然具有很好的預測性能,但是離線模型沒有考慮到SMART 屬性隨著時間的動態(tài)變化,且不易于拓展到大數(shù)據(jù)場景,模型易老化,同時,由于離線模型對磁盤的預測與時間關系不夠密切,可能會造成一個磁盤還有很長的壽命,但是因為被標記為故障磁盤而被替換,導致磁盤的利用率低,經(jīng)濟成本提高。本文基于LightGBM 算法對磁盤是否會發(fā)生故障進行在線預測,為磁盤維護提供決策參考。
梯度提升決策樹(GBDT)是一種流行的機器學習算法,其主要思想是利用弱分類器迭代訓練得到最優(yōu)模型?;诖怂惴ㄓ性S多有效的實現(xiàn),如XGBoost 和pGBRT 等,這些工具雖然都是在GBDT的基礎上進行優(yōu)化,但是當特征維度高、數(shù)據(jù)規(guī)模大時,它們的效率和可伸縮性仍然不能令人滿意。同時,作為GBDT 的代表模型,XGBoost 具有較大的時間開銷,在遍歷樹中的每一個分割點的時候,都需要進行分裂增益的計算,消耗的計算代價和時間代價都比較大。
為了解決這個問題,2017 年微軟發(fā)布了LightGBM 模型,提出兩種新的技術來解決以上問題:單邊梯度采樣(GOSS)和互斥特征捆綁(EFB)。GOSS 區(qū)分具有不同梯度的實例,保留具有較大梯度的實例并對較小梯度采用隨機采樣的方式來減少計算量,從而達到提升效率的目的。EFB 通過采用特征捆綁的方式減少特征維度,來提升計算效率。
同時LightGBM 模型為了減少分裂點的數(shù)量,采用了基于直方圖的算法,其基本思想如下:將連續(xù)的浮點特征值離散為k 個整數(shù)(即分桶bins),并根據(jù)特征所在的bin 對其進行梯度累加和個數(shù)統(tǒng)計;在遍歷數(shù)據(jù)時,根據(jù)離散化的值索引尋找bin,累積數(shù)據(jù);遍歷一遍數(shù)據(jù)后,直方圖積累了一定的統(tǒng)計量,然后根據(jù)直方圖的離散值,遍歷尋找最優(yōu)的分割點。
在多個公共數(shù)據(jù)集上的實驗表明,LightGBM 將傳統(tǒng)GBDT 模型的訓練速度提升了20 多倍,同時保持預測精度不變。
本文所使用的數(shù)據(jù)來自于Backblaze 公司,包含了 2020年 1 月至 2021 年 12 月總共 8 個季度的磁盤運行記錄。其中,2020 年1 月至2020 年12 月的數(shù)據(jù)用于離線模型的訓練,2021 年1 月至2021 年6 月的數(shù)據(jù)用于在線模型的訓練,2021 年7 月至2021 年12 月的數(shù)據(jù)用于模型的測試。上述數(shù)據(jù)集包含的信息有磁盤運行時間、磁盤序列號、磁盤型號、磁盤容量、故障標記和510 個SMART 屬性特征值,其中SMART 的原始特征值有255 個,SMART 的標準特征值有255 個。由Backblaze 公司提供的磁盤年度故障表可知,ST12000NM0007 型號的磁盤數(shù)量總量和故障的磁盤數(shù)量最多,因此本文選擇ST12000NM0007 型號的磁盤數(shù)據(jù)作為本文的實驗數(shù)據(jù)。表1 對本文所采用的實驗數(shù)據(jù)進行了說明。
表1:實驗數(shù)據(jù)說明
數(shù)據(jù)的預處理操作對于提高模型的預測性能至關重要,可以避免模型受到噪聲、缺失值和不一致數(shù)據(jù)的侵擾。本文通過缺失值處理、數(shù)據(jù)提取和特征選擇操作,構造出高質(zhì)量的訓練數(shù)據(jù),提高了模型的預測性能。
3.2.1 缺失值處理
原始數(shù)據(jù)記錄的SMART 屬性共有510 個,但其中大部分屬性的特征值為空值,示例如圖1 所示。這些空值數(shù)據(jù)對磁盤故障的預測沒有任何幫助,而且會增加磁盤故障預測的故障率和運行效率,因此本文剔除了全部為空值的SMART屬性。剔除的SMART 屬性為smart_2、smart_6、smart_8、smart_11、smart_13—smart_186、smart_189、smart_191、smart_196、smart_201—smart_239、smart_243—smart_255,共計131 個SMART 屬性。另外,對于缺失值較少的屬性,本文采用0 填補其缺失值。
圖1:原始數(shù)據(jù)的SMART 特征屬性示例
3.2.2 數(shù)據(jù)提取
此時樣本數(shù)據(jù)還是分散的且存在一些混亂數(shù)據(jù),對磁盤預測的準確率產(chǎn)生一定的負面影響。因此本文按照磁盤序列號提取數(shù)據(jù),將正常磁盤和故障磁盤分別存儲,同時將正常磁盤和故障磁盤中的混亂數(shù)據(jù)剔除。正常盤磁盤的混亂數(shù)據(jù)是指:最后一天的failure 值為0,而之前的樣本中存在failure 值為1 的數(shù)據(jù);故障磁盤的混亂數(shù)據(jù)是指:最后一天的failure值為1,而之前的樣本中也存在failure值為1的數(shù)據(jù)。圖2 為正常磁盤的混亂數(shù)據(jù)樣例,雖然磁盤ZCH059KN 當前處于正常運行的狀態(tài),但是其在前期出現(xiàn)過故障標識(第五列的failure 值為1),所以將其從正常磁盤中剔除。
圖2:正常磁盤的混亂數(shù)據(jù)示例
3.2.3 特征選擇
在SMART 數(shù)據(jù)中,每一項都由兩種數(shù)值形式予以展現(xiàn),分別為normal value 和raw value。其中raw value 是該項記錄的原始值,normal value 是把原始值經(jīng)過標準的規(guī)整計算,得到的一組數(shù)值范圍為0 到255 的一個數(shù)值。因為原始值可以更敏感的感知到磁盤狀態(tài)的變化,所以本文在訓練過程中更多地使用raw value。
目前,對于特征選擇方面的研究主要包括三類:基于特征子集評價策略的特征選擇算法、基于搜索策略的特征選擇算法、和基于不同監(jiān)督信息的特征選擇方法。本文采用基于特征子集評價策略的特征選擇算法中的嵌入式特征選擇方法,嵌入式特征選擇是將特征選擇過程與學習模型的訓練過程聯(lián)系到一起,從訓練結果中得到各個特征的權值系數(shù),根據(jù)系數(shù)選擇特征。LightGBM 算法采用兩種計算特征重要性的方法:“gain”,表示 使用這些特征分割的總增益;“frequency”,表示使用該特征的次數(shù)。
本文結合“gain”和“frequency”兩種方法來計算特征的重要性得分,同時參考特征的實際意義,進行特征屬性的選擇。通過“gain”計算方法,權值系數(shù)排在前二十的特征屬性如圖3 所示,通過“frequency”計算方法,權值系數(shù)排在前二十的特征屬性如圖4 所示。結合兩種計算方法和特征的實際意義,本文最終選取了12 個特征屬性,如表2 所示。
圖3:importance_type='split'時權值系數(shù)前二十的特征
圖4:importance_type='gain'時權值系數(shù)前二十的特征
表2:選取的12 個特征
實現(xiàn)在線磁盤故障預測模型需要在離線模型的基礎上進行增量學習,本文先通過已標注的歷史數(shù)據(jù)集構建出基礎模型,然后再對實時產(chǎn)生的數(shù)據(jù)樣本進行在線標注,最后利用新數(shù)據(jù)樣本增量更新基礎模型,實現(xiàn)磁盤故障的在線預測。
4.1.1 數(shù)據(jù)選擇
本文選擇2020 年1 月-2020 年12 月四個季度的數(shù)據(jù)進行離線模型訓練,得到基礎模型。該訓練數(shù)據(jù)集包含從正常運行的健康磁盤數(shù)據(jù)中隨機抽取的連續(xù)七天的數(shù)據(jù)樣本(總共有258412 條數(shù)據(jù)樣本),和從故障盤數(shù)據(jù)的最后一天向前取的七天數(shù)據(jù)樣本(總共有2304 條數(shù)據(jù)樣本,其中兩條數(shù)據(jù)因異常而去除)。將故障盤的數(shù)據(jù)樣本的failure 值全部改為1,作為負樣本。
4.1.2 樣本不平衡處理
由于出現(xiàn)故障磁盤是一個小概率事件,因此故障磁盤數(shù)據(jù)與正常磁盤數(shù)據(jù)的訓練樣本數(shù)量差距很大,如果不處理就進行訓練會嚴重影響模型精度,對故障磁盤的預測性能非常差。
處理樣本不平衡問題,可以采用保留比例小的樣本數(shù)據(jù)和減少比例大的樣本數(shù)據(jù)來平衡兩者的比例,但這種方法可能會丟失一些重要信息而導致欠采樣。因此本文采用改變權重的方法來處理樣本不平衡問題,把正樣本權重設置為:正樣本權重=負樣本數(shù)量/正樣本數(shù)量,從改變模型的目標函數(shù)出發(fā),增大正樣本權重,從而間接降低負樣本權重,讓分類器更多的關注正樣本。通過該方法減少模型學習樣本比例的先驗信息,以獲得能學習到辨別好壞本質(zhì)特征的模型。
4.1.3 參數(shù)優(yōu)化
訓練模型過程中,除了應用LightGBM 的重要參數(shù)外,本文還選取了LightGBM 中的colsample_bytree:特征的隨機取樣(來加速訓練及處理過擬合);subsample:LightGBM將會在每次迭代中在不進行重采樣的情況下隨機選擇部分數(shù)據(jù)(來加速訓練及處理過擬合);min_split_gain:執(zhí)行節(jié)點分裂的最小增益(防止樹過深,處理過擬合);min_child_samples:葉節(jié)點樣本的最小數(shù)據(jù)量(使葉子節(jié)點的數(shù)據(jù)分布相對穩(wěn)定,提高模型的泛化能力)。通過網(wǎng)格搜素和交叉驗證的方法進行參數(shù)調(diào)優(yōu),參數(shù)的設置如表3 所示。
表3:LightGBM 主要參數(shù)設置
4.2.1 數(shù)據(jù)選擇
在線模型的訓練數(shù)據(jù)我們選擇的是2021 年上半年的數(shù)據(jù),為了模擬真實的在線過程,本文選擇七天為一個周期,將七天的數(shù)據(jù)聚合成為一個訓練樣本,示例如圖5 所示。
圖5:訓練樣本示例
4.2.2 在線樣本標記
對于離線模型的樣本數(shù)據(jù),其磁盤狀態(tài)已經(jīng)確定,很容易進行樣本標記。而對于在線樣本數(shù)據(jù),由于其磁盤的狀態(tài)不確定,如果直接將樣本數(shù)據(jù)標記為正常磁盤,那么若是磁盤在近期發(fā)生故障,這些標記就會成為標記噪音,同時也不能直接標記為故障磁盤,因為只有當故障真實發(fā)生之后,其之前的樣本才能標記為故障磁盤。因此,本文提出了一種新的在線樣本標記方法,具體步驟如下:
(1)樣本數(shù)據(jù)A 到來,暫存;
(2)檢查A 中是否有故障磁盤,如果有則將相同序列號的故障磁盤的failure 值全部改為1;
(3)新的樣本數(shù)據(jù)B 到來,檢查其中是否有故障磁盤,如果有則將磁盤序列號傳給A;
(4)修改A 中對應序列號的磁盤數(shù)據(jù),將其failure 值改為1;
(5)將樣本數(shù)據(jù)A 移除暫存隊列,用于模型更新,將樣本數(shù)據(jù)B 暫存并重復以上步驟。
4.2.3 更新模型
實現(xiàn)在線磁盤故障模型,即在離線模型的基礎上使用新的樣本來更新模型,以避免模型老化,實現(xiàn)在線故障預測。具體來說,就是在當前迭代樹的基礎上增加新的決策樹,而原來的決策樹保持不變。通過對LightGBM 算法的分析研究,我們發(fā)現(xiàn)LightGBM 存在對外的Python API 接口,通過設置其參數(shù)init_model,可以繼續(xù)訓練LightGBM 模型或Booster。本文在完成離線模型的訓練后,將其存儲為gbm,更新模型時加載gbm,同時設置init_model=gbm,從而實現(xiàn)在線模型。
4.2.4 評價結果
磁盤故障預測實際是一個二分類問題,磁盤樣本的預測結果有兩種,正樣本(P)和負樣本(N),壞盤的樣本為P,好盤的樣本為N,對其預測結果可能是正確(T),也可能是錯誤(F)。因此,磁盤故障預測結果有四種:TP、FP、FN、TN。其中TP 是正確的正樣本預測,即把壞盤的樣本預測為壞盤。FP 是錯誤的正樣本,即把壞盤樣本預測為好盤。FN 是錯誤的負樣本,即把好盤樣本預測為壞盤。TN 是正確的負樣本,即把好盤樣本預測為好盤。磁盤故障預測的評價指標是經(jīng)過以上四種結果計算出來的。
FDR 定義為故障檢出率,表示所有測試磁盤中壞盤被預測為壞盤的比例,公式如下:
FDR=TP/(TP+FN)
FAR 定義為故障誤報率,表示所有測試磁盤中好盤被預測為壞盤的比例,公式如下:
FAR=FP/(TN+FP)
經(jīng)計算離線模型的FDR 為85.59%,F(xiàn)AR 為1.33%。隨著樣本數(shù)據(jù)的增加在線模型的預測性能發(fā)生波動,如圖6 所示??傮w的FDR 維持在75%以上,且FAR 不超過5%,符合預測系統(tǒng)對性能測試的需求。
圖6:實驗結果
在如今信息化時代,社會的方方面面越來越依賴數(shù)據(jù),而磁盤作為數(shù)據(jù)的存儲器,提高其可靠性對于保障數(shù)據(jù)安全具有重大意義。本文提出的基于LightGBM 的在線磁盤故障預測模型,在保障誤報率較低的情況下,實現(xiàn)較高的故障檢出率,同時該模型可以根據(jù)新來的樣本數(shù)據(jù)進行實時更新,適應SMART 屬性隨時間的動態(tài)變化,擺脫模型老化問題。
在未來研究中,本文將考慮增大樣本的數(shù)量,同時選用不同磁盤生廠商的數(shù)據(jù)集,以提升模型的魯棒性。另一方面,由于時間限制,在模型參數(shù)調(diào)優(yōu)方面,本文選取的參數(shù)粒度較大,同時LightGBM 的參數(shù)眾多,本文只選取了其中一部分,未來可以選取更多參數(shù),使用更小的調(diào)參力度,以得到預測性能更好的模型。同時,還可以考慮使用其他模型進行在線學習,進一步提升預測模型性能和穩(wěn)定性。