吳文波
(閩南科技學(xué)院 福建 泉州 362000)
服務(wù)器磁盤是一種安裝在服務(wù)器當(dāng)中,以磁性盤片作為數(shù)據(jù)載體的存儲器,這種存儲器結(jié)構(gòu)具有非易失性特點,因此能夠確保服務(wù)器運行中具備更有力的數(shù)據(jù)支撐。與服務(wù)器當(dāng)中的中央處理器、內(nèi)存等結(jié)構(gòu)相比,磁盤的機械結(jié)構(gòu)更加復(fù)雜,并且更加脆弱,在高速運轉(zhuǎn)中極易受到磨損[1]。在大數(shù)據(jù)環(huán)境當(dāng)中,多臺服務(wù)器被放置在同一個機架結(jié)構(gòu)當(dāng)中,若其中一塊磁盤出現(xiàn)故障問題,則會對整個服務(wù)器構(gòu)成機架的運行造成嚴(yán)重影響,同時在眾多服務(wù)器磁盤當(dāng)中找出故障的磁盤難度也較大。盡管服務(wù)器中每一塊磁盤配置備用數(shù)據(jù)塊用于替換壞的數(shù)據(jù)塊,但當(dāng)備用數(shù)據(jù)塊被用完后,若磁盤仍然持續(xù)受到磨損,則會造成數(shù)據(jù)丟失問題產(chǎn)生,進而影響到服務(wù)器的正常運行,并且對于用戶而言會造成無法逆轉(zhuǎn)的不利影響[2]。服務(wù)器磁盤在使用的前期階段(1 年)中,磁盤的故障發(fā)生概率會呈現(xiàn)出先增加后降低的趨勢?;谏鲜龇?wù)器磁盤的故障特征以及故障發(fā)生概率,為提高服務(wù)器磁盤及整體運行可靠性,本文將引入大數(shù)據(jù)技術(shù),開展對服務(wù)器磁盤故障診斷方法的設(shè)計研究。
為實現(xiàn)對服務(wù)器磁盤的故障診斷,本文采用服務(wù)器磁盤故障自診和系統(tǒng)級診斷相結(jié)合的方式,實現(xiàn)對故障問題的綜合診斷。為確保服務(wù)器磁盤的故障自診和系統(tǒng)級診斷具備更可靠診斷依據(jù),在對其進行詳細(xì)設(shè)計前,首先利用大數(shù)據(jù)技術(shù)對服務(wù)器運行過程中的負(fù)載數(shù)據(jù)進行采集。
考慮到服務(wù)器架構(gòu)中包含眾多磁盤,為確保獲取所有具有高利用價值的負(fù)載數(shù)據(jù),引入大數(shù)據(jù)技術(shù)[3],只針對磁盤運行中產(chǎn)生的磁盤利用率數(shù)據(jù)、磁盤讀取速度數(shù)據(jù)、磁盤寫入速度數(shù)據(jù)等進行采集,將負(fù)載數(shù)據(jù)的采集時間設(shè)定為每間隔5 min 完成1 次[4]。根據(jù)服務(wù)器磁盤的利用率數(shù)據(jù),可實現(xiàn)對磁盤工作時間與磁盤通電時間比值的描述,通過5 min/次的數(shù)據(jù)采集,可以實現(xiàn)對5 min 時間內(nèi)磁盤工作時間占比信息的獲取[5]。若服務(wù)器磁盤的利用率越高,則說明磁盤的空閑時間越少,將這一數(shù)據(jù)作為磁盤負(fù)載的時間特征數(shù)據(jù)。通過服務(wù)器磁盤讀取速度數(shù)據(jù)和寫入數(shù)據(jù),能夠?qū)崿F(xiàn)對從內(nèi)存到磁盤當(dāng)中數(shù)據(jù)傳輸?shù)乃俣龋块g隔5 min 完成1 次采集,能夠?qū)崿F(xiàn)對磁盤運行5 min 內(nèi)平均傳輸速度的描述,同樣將這一數(shù)據(jù)作為磁盤負(fù)載的空間特征數(shù)據(jù)。在獲取到上述負(fù)載數(shù)據(jù)后,為實現(xiàn)對服務(wù)器磁盤運行的準(zhǔn)確描述,可從時間角度,對服務(wù)器磁盤負(fù)載強度進行計算,其公式為:
上述公式中,D表示為服務(wù)器磁盤的負(fù)載強度;di表示為每間隔5 min 采集到的磁盤利用率數(shù)據(jù);n表示為數(shù)據(jù)采集次數(shù)。通過上述公式計算得出,服務(wù)器磁盤的平均利用率越低,則說明磁盤負(fù)載強度越??;反之服務(wù)器磁盤的平均利用率越高,則說明磁盤負(fù)載強度越大[6]。再針對服務(wù)器磁盤在高利用率狀態(tài)下的時間占比,實現(xiàn)對磁盤這一狀態(tài)出現(xiàn)頻率的計算,其公式為:
上述公式中,D' 表示為磁盤在高利用率狀態(tài)當(dāng)中的時間占比;ld表示為知識函數(shù),若其邏輯表達式成立,則輸出的數(shù)值為1;反之,若邏輯表達式不成立,則輸出的數(shù)值為0。結(jié)合上述公式(2),對服務(wù)器磁盤利用率閾值進行設(shè)定,若計算得出的結(jié)果超出閾值范圍,則此時指示函數(shù)的輸出值為1,同時意味著服務(wù)器磁盤出現(xiàn)了一次高利用率情況;反之,若計算得出的結(jié)果未超過閾值范圍或與閾值數(shù)值相同,則此時指示函數(shù)的輸出值為0,同時意味著服務(wù)器磁盤的利用率在正常范圍內(nèi)。根據(jù)上述內(nèi)容,實現(xiàn)對服務(wù)器磁盤高利用率情況出現(xiàn)次數(shù)的計量[7]。通常情況下,服務(wù)器磁盤的平均利用率若超過50%,則其故障發(fā)生概率會呈現(xiàn)出爆發(fā)式的上升趨勢。因此,結(jié)合上述得出的計量結(jié)果,也能夠為后續(xù)對磁盤是否出現(xiàn)故障問題的判斷提供依據(jù)。
在利用大數(shù)據(jù)技術(shù)完成對服務(wù)器磁盤運行中負(fù)載數(shù)據(jù)的采集后,采用劃分等級的方式,完成對磁盤的故障診斷,等級分別為服務(wù)器磁盤自診和系統(tǒng)級診斷。
在進行自診前需要對服務(wù)器磁盤在運行中,對資源的使用情況以及節(jié)點在物理層面上的狀態(tài)信息進行獲取,其每個狀態(tài)下的表征數(shù)據(jù)均為數(shù)值類型數(shù)據(jù),可通過基于/proc 文件以及命令行采集相結(jié)合的方式獲取。在采集過程中,在/proc 文件當(dāng)中讀取服務(wù)器磁盤故障自診的相關(guān)文件,若文件存在并順利打開,則對該文件進行解析,并得到所需的表征值數(shù)據(jù)信息。若文件無法打開或為空,則需要調(diào)用相關(guān)的命令并將得到的結(jié)果重定向為文件再重復(fù)上述操作獲得表征數(shù)值。在實際執(zhí)行上述操作時,由于服務(wù)器磁盤個體之間存在差異,且服務(wù)器的操作系統(tǒng)版本更新問題可能會對/proc 文件結(jié)構(gòu)造成影響。因此,針對這一問題,引入基于命令行的采集方式,實現(xiàn)對上述操作的輔助,從而確保得到的表征數(shù)值更具可靠性。
在完成上述操作后,針對服務(wù)器磁盤故障自診進行設(shè)計,服務(wù)器磁盤不同的故障類型,采用不同的監(jiān)控方式,監(jiān)控到的信息類型不一致,但均采用大數(shù)據(jù)技術(shù)周期性地獲得相關(guān)狀態(tài)表增值的方式,實現(xiàn)對數(shù)據(jù)的分類和對服務(wù)器磁盤的故障診斷,并最終得出服務(wù)器磁盤是否為故障。針對上述采集到的負(fù)載數(shù)據(jù)信息,針對不同數(shù)據(jù)類型,采用不同的監(jiān)控方式[8]。例如,針對使用率、流量、輸入輸出性能等負(fù)載相關(guān)數(shù)據(jù),采用基于proc 文件和基于命令行相結(jié)合的方式進行監(jiān)控;針對核心服務(wù)進程、關(guān)鍵服務(wù)進程等負(fù)載相關(guān)數(shù)據(jù),采用內(nèi)核監(jiān)控方法。前者在監(jiān)控過程中,通過ps 命令、top 命令和who 命令,實現(xiàn)對監(jiān)控信息的獲取,并根據(jù)信息內(nèi)容實現(xiàn)故障檢測。在檢測過程中,還需要對與服務(wù)器磁盤相連接的電源、風(fēng)扇等結(jié)構(gòu)的工作狀態(tài)進行實時監(jiān)控,并采取門限檢測的方法,診斷服務(wù)器磁盤是否出現(xiàn)故障問題。服務(wù)器磁盤自診流程圖見圖1。
上述服務(wù)器磁盤故障自診過程中,可基于深度學(xué)習(xí)算法,構(gòu)建磁盤故障診斷的模型,其表達式為:
上述公式中,S(t+△t)表示為故障診斷結(jié)果;S表示為服務(wù)器磁盤的狀態(tài)當(dāng)量;g(I(t),S(t))表示為通過上述操作獲取到的磁盤運行負(fù)載數(shù)據(jù)。為提高服務(wù)器磁盤自診的精度,在完成對診斷模型的構(gòu)建后,將其應(yīng)用到監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)當(dāng)中,并進行迭代訓(xùn)練。在完成訓(xùn)練后,將輸出的結(jié)果作為最終服務(wù)器磁盤的自診結(jié)果[9]。同時,為了區(qū)別服務(wù)器磁盤的自診和系統(tǒng)級診斷,在實際應(yīng)用中,對上述建立的故障診斷模型進行閾值設(shè)定,當(dāng)采集到的負(fù)載數(shù)據(jù)沒有達到自診閾值范圍時,則不會觸發(fā)上述模型的運行,自診模塊不會啟動。
針對服務(wù)器磁盤系統(tǒng)級故障診斷進行設(shè)計,需要完成對服務(wù)器中各個節(jié)點的配置,并構(gòu)成一個完整的集群。每個節(jié)點都需要保存在同一個集群配置文件當(dāng)中。在進行系統(tǒng)級故障診斷的過程中,階段讀取配置文件得到集群中各個節(jié)點狀態(tài)[10]。在服務(wù)器磁盤處于健康狀態(tài)中運行時,每一個節(jié)點的心跳模塊都會生成一些狀態(tài)線程,若集群中包含n 個節(jié)點,則每個節(jié)點的心跳模塊都會生成n-1 個狀態(tài)線程,利用獲取到的集群節(jié)點狀態(tài)實現(xiàn)對服務(wù)器磁盤運行狀態(tài)的判斷。假設(shè)某一節(jié)點a 與另一個節(jié)點b 之間的狀態(tài)線程為ab,則每隔一定時間后,節(jié)點a 都會向節(jié)點b發(fā)送一個故障檢測結(jié)果。時間間隔按照上述負(fù)載數(shù)據(jù)采集的時間間隔進行設(shè)置,即5 min。通過對節(jié)點a 到節(jié)點b發(fā)送結(jié)果可實現(xiàn)對服務(wù)器磁盤故障的診斷,其表達式為:
上述公式中,T表示為節(jié)點a 到節(jié)點b 發(fā)送時間;cT表示為當(dāng)前時間節(jié)點;tT表示為超時時間節(jié)點。上述公式中,上半部分為超時情況下的檢測結(jié)果;下半部分為正常情況下的檢測結(jié)果。
在進行對服務(wù)器磁盤系統(tǒng)級診斷時,同樣為了區(qū)分自診和系統(tǒng)級診斷,以上述相同方式為系統(tǒng)級診斷的閾值進行設(shè)置,當(dāng)數(shù)據(jù)沒有達到系統(tǒng)級診斷的閾值范圍時,則不會觸發(fā)上述模塊的運行,系統(tǒng)級診斷模塊不會啟動。如若數(shù)據(jù)不在自診閾值范圍同時也不在系統(tǒng)級診斷閾值范圍,則自動認(rèn)為服務(wù)器磁盤未發(fā)生故障問題,處于健康運行狀態(tài),以此實現(xiàn)對服務(wù)器磁盤故障的診斷。
在上文論述基礎(chǔ)上,引入大數(shù)據(jù)技術(shù)提出了一種針對服務(wù)器磁盤的故障診斷方法,為了進一步驗證這一方法的應(yīng)用優(yōu)勢,選擇將基于無線傳感網(wǎng)絡(luò)的診斷方法作為對照組,將這一診斷方法的應(yīng)用條件作為對照條件,本文基于大數(shù)據(jù)技術(shù)的診斷方法作為實驗組,并按照上述論述該方法應(yīng)用需要作為實驗條件。利用兩種方法對相同的服務(wù)器磁盤研究對象進行故障診斷。選擇ST16000NM00 型號服務(wù)器磁盤作為實驗研究對象,將該型號所有磁盤的歷史運行信息匯總,并構(gòu)成完成的數(shù)據(jù)集,將這一數(shù)據(jù)集作為實驗數(shù)據(jù)集,其基本信息見表1。
表1 ST16000NM00 型號服務(wù)器磁盤實驗數(shù)據(jù)集
將上述實驗數(shù)據(jù)集用Python 編程語言進行編碼,并對數(shù)據(jù)集中相關(guān)信息進行預(yù)處理、排序訓(xùn)練等。將處理后的實驗數(shù)據(jù)集作為測試集,分別利用兩種方法對測試集進行故障診斷。已知服務(wù)器磁盤在出現(xiàn)故障問題時,服務(wù)器通常會表現(xiàn)出3 種狀態(tài),分別為:服務(wù)暫停、進程異常和服務(wù)停止。利用兩種方法對磁盤是否故障進行判斷,并給出具體故障診斷類型,分別從故障判斷結(jié)果和診斷故障類別結(jié)果兩方面,對兩種方法的診斷性能進行分析。將兩種方法的故障判斷結(jié)果記錄,并繪制成表2。
表2 實驗組與對照組故障判斷結(jié)果記錄表 單位:例
從表2 中記錄的實驗數(shù)據(jù)可以看出,兩種故障診斷方法在對相同服務(wù)器磁盤故障進行診斷時,實驗組磁盤故障和健康判斷結(jié)果與實際情況完全相同,而對照組判斷結(jié)果與實際相差較大。因此,從這一實驗結(jié)果能夠初步證明,本文提出的故障診斷方法在對服務(wù)器磁盤的故障和健康狀態(tài)判斷時,可實現(xiàn)99%的診斷精度。再針對兩種診斷方法對服務(wù)器磁盤故障類型診斷的精度進行對比,結(jié)合上述3種服務(wù)器磁盤故障類型,將類型診斷結(jié)果記錄,并繪制表3。
表3 實驗組與對照組服務(wù)器磁盤故障類型診斷結(jié)果 單位:個
由表3 可知,實驗組正確判斷3 種故障類型的個數(shù)均高于對照組,因此,通過這一實驗結(jié)果能夠進一步證明,本文提出的基于大數(shù)據(jù)技術(shù)的診斷方法不僅能夠?qū)崿F(xiàn)對服務(wù)器磁盤故障狀態(tài)與健康狀態(tài)的準(zhǔn)確判斷,同時還能夠?qū)崿F(xiàn)對磁盤故障具體類型的診斷,得出的診斷結(jié)果對于服務(wù)器的運行和維護策略提出具有更高利用價值。
服務(wù)器磁盤的故障原因可分為內(nèi)部因素和外部因素兩種,其中外部因素主要是受到外界物理破壞,而內(nèi)部因素包括磁盤的接口等內(nèi)部組件的運行質(zhì)量,兩方面因素的存在決定著磁盤的使用質(zhì)量和維護質(zhì)量。在明確服務(wù)器磁盤故障原因基礎(chǔ)上,本文提出一種全新的故障診斷方法,并通過實驗實現(xiàn)了對該診斷方法的應(yīng)用優(yōu)勢驗證,將該方法應(yīng)用于實際可以促進服務(wù)器磁盤運行穩(wěn)定性的進一步提升。