李 靜,劉冬實(shí)
(1.中國(guó)民航大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300300; 2.南開大學(xué) 計(jì)算機(jī)與控制工程學(xué)院,天津 300500)
近年來(lái),大規(guī)模云存儲(chǔ)系統(tǒng)已成為主流IT企業(yè)的主要存儲(chǔ)架構(gòu),因?yàn)閮r(jià)格等方面的優(yōu)勢(shì),硬盤仍然是它們的主要存儲(chǔ)介質(zhì)。由于制作工藝及技術(shù)的進(jìn)步,單體硬盤的可靠性不斷提高,但是,在包含成千上萬(wàn)塊硬盤的大規(guī)模云存儲(chǔ)系統(tǒng)中,硬盤故障甚至是并發(fā)故障時(shí)有發(fā)生[1]。硬盤故障不僅會(huì)引起服務(wù)中斷、降低用戶服務(wù)體驗(yàn),甚至?xí)?dǎo)致數(shù)據(jù)的永久丟失,給企業(yè)和用戶帶來(lái)無(wú)法挽回的損失。因此,當(dāng)前大規(guī)模云存儲(chǔ)系統(tǒng)面臨著高可靠性的挑戰(zhàn)。
傳統(tǒng)存儲(chǔ)系統(tǒng)普遍采用副本或糾刪碼等冗余機(jī)制提高系統(tǒng)的可靠性,如果有硬盤發(fā)生故障,系統(tǒng)可以利用其他存活盤上的數(shù)據(jù)重構(gòu)故障數(shù)據(jù),這是一種典型的“故障-重構(gòu)”模式的被動(dòng)容錯(cuò)方式。然而,面對(duì)硬盤故障頻發(fā)的大規(guī)模云存儲(chǔ)系統(tǒng),被動(dòng)容錯(cuò)技術(shù)只能通過(guò)不斷增加冗余來(lái)保證系統(tǒng)的可靠性,導(dǎo)致系統(tǒng)承受高昂的構(gòu)建、維護(hù)成本以及沉重的讀寫開銷。硬盤故障預(yù)測(cè)[2-3]可以在硬盤真正故障之前發(fā)出預(yù)警,提醒用戶對(duì)危險(xiǎn)數(shù)據(jù)采取措施(遷移或備份),從而減少或避免硬盤故障帶來(lái)的損失,這是一種“預(yù)警-處理”模式的主動(dòng)容錯(cuò)機(jī)制。如果具有良好的預(yù)測(cè)性能和有效的預(yù)警處理機(jī)制,主動(dòng)容錯(cuò)機(jī)制可以大幅度提高云存儲(chǔ)系統(tǒng)的可靠性。
正如Eckart等[4]所說(shuō),主動(dòng)容錯(cuò)方式并不能完全避免硬盤故障的發(fā)生(沒(méi)有達(dá)到100%的預(yù)測(cè)準(zhǔn)確率),還需要結(jié)合一定的冗余機(jī)制共同保證系統(tǒng)的可靠性,因此主動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)的可靠性分析非常復(fù)雜。目前針對(duì)該領(lǐng)域的研究非常匱乏,僅有少量研究[2,4-5]基于硬盤故障及重構(gòu)過(guò)程符合指數(shù)分布的假設(shè),采用馬爾可夫(Markov)模型評(píng)價(jià)主動(dòng)容錯(cuò)存儲(chǔ)系統(tǒng)的可靠性。
而且,現(xiàn)有研究存在以下缺陷:1)故障分布假設(shè)不合理。基于指數(shù)分布的假設(shè),硬盤故障率和修復(fù)率恒定不變,文獻(xiàn)[6]通過(guò)領(lǐng)域數(shù)據(jù)的分析推翻了該假設(shè)。2)故障類型考慮不全面。只關(guān)注硬盤完全崩潰故障,而忽略了潛在扇區(qū)錯(cuò)誤等塊故障對(duì)系統(tǒng)可靠性的影響,隨著系統(tǒng)規(guī)模和單體硬盤容量的增大,塊故障已不容忽視[7]。3)度量指標(biāo)不準(zhǔn)確。采用平均數(shù)據(jù)丟失時(shí)間(Mean Time To Data Loss, MTTDL)作為可靠性評(píng)價(jià)指標(biāo),而MTTDL相對(duì)于系統(tǒng)的實(shí)際運(yùn)行時(shí)間過(guò)長(zhǎng),并不能準(zhǔn)確評(píng)價(jià)云存儲(chǔ)系統(tǒng)的可靠性水平[8]。
本文針對(duì)主動(dòng)容錯(cuò)磁盤冗余陣列(Redundant Arrays of Independent Disks, RAID)RAID-5和RAID-6云存儲(chǔ)系統(tǒng)提出兩個(gè)可靠性狀態(tài)轉(zhuǎn)移模型,描述系統(tǒng)在各種可靠性狀態(tài)之間的轉(zhuǎn)換,并根據(jù)模型設(shè)計(jì)了蒙特卡洛仿真算法,模擬主動(dòng)容錯(cuò)RAID系統(tǒng)的運(yùn)行,統(tǒng)計(jì)系統(tǒng)在一定運(yùn)行周期內(nèi)發(fā)生數(shù)據(jù)丟失事件的期望個(gè)數(shù)。本文方法克服了現(xiàn)有研究的缺陷,采用更接近實(shí)際的韋布分布(而不是指數(shù)分布)函數(shù)描述隨時(shí)間變化(下降、恒定不變、或上升)的硬盤故障和修復(fù)率,除硬盤整體故障外,增加考慮塊故障和磁盤清洗過(guò)程對(duì)云存儲(chǔ)系統(tǒng)可靠性的影響,并采用更合理的指標(biāo)(某一運(yùn)行周期內(nèi)發(fā)生數(shù)據(jù)丟失的個(gè)數(shù))評(píng)價(jià)系統(tǒng)可靠性。利用本文方法可以準(zhǔn)確、定量地評(píng)價(jià)主動(dòng)容錯(cuò)技術(shù)和系統(tǒng)參數(shù)對(duì)存儲(chǔ)系統(tǒng)可靠性的影響,幫助系統(tǒng)設(shè)計(jì)師(或管理員)設(shè)計(jì)出滿足可靠性要求的容錯(cuò)方案,更好地理解系統(tǒng)性能和可靠性之間的權(quán)衡。
硬盤期望壽命的研究是可靠性評(píng)價(jià)的基礎(chǔ)。Gibson[9]認(rèn)為硬盤故障時(shí)間(Mean Time To Failure, MTTF)服從指數(shù)分布是一個(gè)合理假設(shè),這為后來(lái)很多研究[2,4-5,10-11]利用馬爾可夫模型分析存儲(chǔ)系統(tǒng)可靠性提供了理論指導(dǎo);但Schroeder等[6]以高置信度推翻了硬盤故障時(shí)間服從指數(shù)分布的假設(shè),他們建議研究者使用真實(shí)的故障替換數(shù)據(jù)(或是雙參分布,如韋布分布),模擬硬盤的故障時(shí)間,已有一些研究[12-15]基于硬盤故障非指數(shù)分布的前提,使用仿真或組合分析等方法分析存儲(chǔ)系統(tǒng)的可靠性。
基于硬盤故障分布數(shù)據(jù),研究者提出了一些存儲(chǔ)系統(tǒng)可靠性評(píng)價(jià)方法,有三類被廣泛采用:1)連續(xù)時(shí)間馬爾可夫鏈模型[2,4-5,10-11]能直觀表示系統(tǒng)的故障、修復(fù)等事件,基于硬盤故障指數(shù)分布假設(shè)前提,可方便地計(jì)算系統(tǒng)平均數(shù)據(jù)丟失時(shí)間(MTTDL);2)蒙特卡洛仿真方法[13,16]適用于不同的硬盤故障分布,且容易表達(dá)一些復(fù)雜策略,如延遲校驗(yàn)計(jì)算、延遲修復(fù)等;3)組合分析方法[13-15]直接計(jì)算各種數(shù)據(jù)丟失情況的概率,計(jì)算速度遠(yuǎn)優(yōu)于前兩種方法,且能與它們結(jié)合,適用于不同硬盤故障分布。
伴隨著硬盤故障預(yù)測(cè)問(wèn)題的研究,學(xué)術(shù)界也相應(yīng)地出現(xiàn)了一些評(píng)價(jià)主動(dòng)容錯(cuò)存儲(chǔ)系統(tǒng)可靠性的研究[2,4-5],但是這些方法存在一些缺陷,并不能真實(shí)有效地評(píng)價(jià)主動(dòng)容錯(cuò)存儲(chǔ)系統(tǒng)的可靠性水平。因此,本文擬彌補(bǔ)現(xiàn)有方法的缺陷、研究能準(zhǔn)確評(píng)價(jià)主動(dòng)容錯(cuò)存儲(chǔ)系統(tǒng)可靠性的方法。
潛在塊故障(Latent block defects)一般由潛在扇區(qū)錯(cuò)誤或數(shù)據(jù)損壞引發(fā):1)潛在扇區(qū)錯(cuò)誤是部分二進(jìn)制位永久損壞,無(wú)論嘗試多少次都不能正確讀取一個(gè)扇區(qū),一般由磁頭劃傷或介質(zhì)損壞等物理原因造成;2)數(shù)據(jù)損壞是數(shù)據(jù)塊上存放著錯(cuò)誤的數(shù)據(jù),只能通過(guò)校驗(yàn)信息驗(yàn)證才能發(fā)現(xiàn),通常由軟件或固件缺陷造成。隨著系統(tǒng)和硬盤個(gè)體容量的增大,這些塊級(jí)別的硬盤故障已不能再被忽視。為檢測(cè)和修復(fù)塊故障,存儲(chǔ)系統(tǒng)通常在后臺(tái)運(yùn)行著一個(gè)“磁盤清洗”進(jìn)程,主動(dòng)讀取并檢測(cè)系統(tǒng)中所有的數(shù)據(jù)塊,如果發(fā)現(xiàn)損壞數(shù)據(jù)塊,系統(tǒng)會(huì)利用冗余信息重構(gòu)損壞數(shù)據(jù)。
運(yùn)行故障(operational failure)是硬盤最為嚴(yán)重的故障形式,表現(xiàn)為整個(gè)硬盤永久不可訪問(wèn),只能通過(guò)替換硬盤進(jìn)行修復(fù)。如果系統(tǒng)中發(fā)生了運(yùn)行故障,系統(tǒng)會(huì)立即啟動(dòng)故障重構(gòu)過(guò)程,利用其他存活盤上的數(shù)據(jù)和冗余信息恢復(fù)出故障數(shù)據(jù)。
當(dāng)前大部分硬盤內(nèi)部都具有SMART(Self-Monitoring, Analysis and Reporting Technology)[17]配置,SMART 是硬盤的“自我監(jiān)測(cè)、分析和報(bào)告”技術(shù),可以實(shí)時(shí)監(jiān)測(cè)硬盤重要屬性值并與預(yù)先設(shè)定的閾值進(jìn)行比較,如果有屬性值超過(guò)閾值,則認(rèn)為硬盤即將發(fā)生運(yùn)行故障,于是發(fā)出預(yù)警信息,提醒用戶對(duì)危險(xiǎn)數(shù)據(jù)進(jìn)行備份或遷移。為了提高預(yù)測(cè)性能,有研究者嘗試基于硬盤 SMART 信息、采用統(tǒng)計(jì)學(xué)或機(jī)器學(xué)習(xí)方法構(gòu)建硬盤故障預(yù)測(cè)模型[2-3],其中有一些模型(比如,基于決策樹[2]的預(yù)測(cè)模型)取得了比較理想的預(yù)測(cè)效果。
在主動(dòng)容錯(cuò)系統(tǒng)中,硬盤故障預(yù)測(cè)模型運(yùn)行在系統(tǒng)后臺(tái),實(shí)時(shí)監(jiān)測(cè)工作硬盤的屬性狀態(tài)并周期性地(比如,每隔一小時(shí))輸出它們的“健康度”情況,如果發(fā)現(xiàn)預(yù)警(危險(xiǎn))硬盤,系統(tǒng)會(huì)立刻啟動(dòng)預(yù)警修復(fù)進(jìn)程,把預(yù)警硬盤上的數(shù)據(jù)遷移備份到其他健康硬盤上。
在云存儲(chǔ)系統(tǒng)中,多個(gè)運(yùn)行故障和(或者)多個(gè)塊故障同時(shí)發(fā)生會(huì)導(dǎo)致數(shù)據(jù)丟失事件的發(fā)生,如果(消除運(yùn)行故障的)重構(gòu)過(guò)程或者(消除塊故障的)磁盤清洗過(guò)程能夠及時(shí)完成,可以避免數(shù)據(jù)丟失事件的發(fā)生。
RAID-5和 RAID-6是兩種廣泛應(yīng)用在云存儲(chǔ)系統(tǒng)的冗余機(jī)制,存儲(chǔ)硬盤在系統(tǒng)中被劃分為不同的校驗(yàn)組,數(shù)據(jù)在校驗(yàn)組中按條紋存儲(chǔ),從而實(shí)現(xiàn)數(shù)據(jù)的并行訪問(wèn)以提高系統(tǒng)訪問(wèn)性能[18]。每個(gè)RAID-5校驗(yàn)條紋能夠容忍任意一個(gè)故障——一個(gè)運(yùn)行故障或一個(gè)塊故障;每個(gè)RAID-6校驗(yàn)條紋能夠容忍任意兩個(gè)并發(fā)故障——兩個(gè)并發(fā)的運(yùn)行故障、一個(gè)運(yùn)行故障和一個(gè)塊故障、或兩個(gè)塊故障。
在實(shí)際系統(tǒng)中,硬盤故障的發(fā)生率不是恒定不變的,而是遵循典型的“浴盆曲線”規(guī)律[ 19]:經(jīng)歷過(guò)初期比較高的“嬰兒死亡率”之后,硬盤故障率進(jìn)入平穩(wěn)期,直到硬盤生命周期的末尾,由于磨損老化,故障率再次升高。另外,Schroeder和Gibson[6]發(fā)現(xiàn),相對(duì)指數(shù)分布,韋布分布可以更好地?cái)M合硬盤故障數(shù)據(jù)的累積分布函數(shù)。而且,Elerath和Schindler[13]通過(guò)領(lǐng)域數(shù)據(jù)的分析,發(fā)現(xiàn)韋布分布可以很好地匹配硬盤故障、修復(fù)以及磁盤清洗事件的時(shí)間分布。
因此,使用兩個(gè)參數(shù)的韋布分布函數(shù)模擬硬盤故障(運(yùn)行故障和塊故障)、故障重構(gòu)以及磁盤清洗過(guò)程在云存儲(chǔ)系統(tǒng)中的發(fā)生。韋布分布的概率密度函數(shù)f,累積密度函數(shù)F,風(fēng)險(xiǎn)率函數(shù)h,以及累積風(fēng)險(xiǎn)率函數(shù)H的公式[20]如下:
(1)
F(t)=1-e(-(t/α)β)
(2)
(3)
H(t)=tβ/αβ
(4)
其中:α是表示特征生命的尺度參數(shù)(scale parameter),β是控制分布形狀的形狀參數(shù)(shape parameter)。
根據(jù)上述公式可以看到:1)β>1時(shí),風(fēng)險(xiǎn)率h隨著時(shí)間t的增長(zhǎng)而變大,即硬盤發(fā)生運(yùn)行故障的風(fēng)險(xiǎn)隨時(shí)間逐漸升高,能夠模擬運(yùn)行時(shí)間較長(zhǎng)出現(xiàn)老化現(xiàn)象的云存儲(chǔ)系統(tǒng);2)β=1時(shí),韋布分布退化為指數(shù)分布,即硬盤發(fā)生運(yùn)行故障的概率是恒定不變的(不隨時(shí)間變化而變化),能夠模擬處于穩(wěn)定運(yùn)行時(shí)期的云存儲(chǔ)系統(tǒng);3)0<β<1時(shí),風(fēng)險(xiǎn)率h隨時(shí)間的推移而降低,能夠模擬處于“早期失效”時(shí)期的云存儲(chǔ)系統(tǒng)。
對(duì)于一個(gè)RAID-5校驗(yàn)組,理論上有三種導(dǎo)致數(shù)據(jù)丟失的情況:
1)同時(shí)發(fā)生兩個(gè)運(yùn)行故障;
2)同時(shí)發(fā)生一個(gè)運(yùn)行故障和一個(gè)塊故障;
3)同時(shí)發(fā)生兩個(gè)塊故障。
通常每個(gè)硬盤存儲(chǔ)著上萬(wàn)個(gè)數(shù)據(jù)塊,相同校驗(yàn)條紋上的數(shù)據(jù)塊同時(shí)發(fā)生故障的概率非常小(從而可以忽略),即,校驗(yàn)組內(nèi)兩個(gè)或更多并發(fā)的塊故障一般不會(huì)導(dǎo)致數(shù)據(jù)丟失,因此,只考慮上述前兩種導(dǎo)致數(shù)據(jù)丟失的故障情況。
針對(duì)主動(dòng)容錯(cuò)RAID-5校驗(yàn)組,創(chuàng)建了如圖1所示的可靠性狀態(tài)轉(zhuǎn)移模型,大致存在8種不同的可靠性狀態(tài),隨著故障、修復(fù)、預(yù)警等事件的發(fā)生,校驗(yàn)組在不同可靠性狀態(tài)之間轉(zhuǎn)移。
圖1 主動(dòng)容錯(cuò)RAID-5可靠性狀態(tài)轉(zhuǎn)移
圖1中,RAID-5校驗(yàn)組總共有N+1塊硬盤,包含N塊數(shù)據(jù)硬盤和一塊冗余硬盤,符號(hào)“W”表示預(yù)警事件,“OP”表示運(yùn)行故障事件,“LD”表示塊故障事件。使用單、雙箭頭兩種狀態(tài)轉(zhuǎn)移線,其中,單箭頭表示某一狀態(tài)到另一狀態(tài)的轉(zhuǎn)換,雙箭頭表示兩種狀態(tài)之間的相互轉(zhuǎn)換。狀態(tài)轉(zhuǎn)移線上的符號(hào)“g[·]”表示狀態(tài)之間轉(zhuǎn)移的通用函數(shù),轉(zhuǎn)移線上面的“g[·]”是左邊狀態(tài)轉(zhuǎn)移到右邊狀態(tài)的函數(shù),下面的表示右邊轉(zhuǎn)移到左邊的函數(shù)?!癴dr”表示硬盤故障預(yù)測(cè)模型的故障檢測(cè)率(Failure Detection Rate),“d”表示某事件的時(shí)間分布,其中:“dLD”表示塊故障事件的時(shí)間分布, “dOP”表示運(yùn)行故障的時(shí)間分布,“dW-OP”表示預(yù)警硬盤(沒(méi)有被及時(shí)處理)發(fā)生運(yùn)行故障的時(shí)間分布,“dScrub”表示磁盤清洗事件的時(shí)間分布,“dRestore”表示運(yùn)行故障修復(fù)的時(shí)間分布,“dHandle”表示預(yù)警處理事件的時(shí)間分布。“dW-OP”由提前預(yù)測(cè)模型的提前預(yù)測(cè)時(shí)間TIA(Time In Advance)和預(yù)警處理分布“dHandle”確定。
狀態(tài)1 校驗(yàn)組中所有硬盤都在正常運(yùn)行且沒(méi)有塊故障。從狀態(tài)1出發(fā)校驗(yàn)組有三種轉(zhuǎn)移可能:1)有硬盤發(fā)生了塊故障(LD),轉(zhuǎn)移到狀態(tài)2;2)有硬盤被預(yù)警即將發(fā)生運(yùn)行故障(出現(xiàn)預(yù)警硬盤),轉(zhuǎn)移到狀態(tài)3;3)有硬盤(被預(yù)測(cè)模型漏報(bào))發(fā)生了運(yùn)行故障,轉(zhuǎn)移到狀態(tài)5。狀態(tài)轉(zhuǎn)移依賴于可用硬盤的數(shù)量,預(yù)測(cè)模型的故障檢測(cè)率,(運(yùn)行或塊損壞)故障以及修復(fù)(或預(yù)警備份)事件的時(shí)間分布。比如,從狀態(tài)1到2的轉(zhuǎn)移是N+1塊硬盤根據(jù)故障分布dLD發(fā)生塊故障的函數(shù),狀態(tài)1到5的轉(zhuǎn)移是N+1塊硬盤根據(jù)分布dOP存在故障風(fēng)險(xiǎn),并以(1-fdr)的概率(被漏報(bào))發(fā)生運(yùn)行故障的函數(shù)。
狀態(tài)2 校驗(yàn)組內(nèi)發(fā)生了塊故障。校驗(yàn)組從狀態(tài)2出發(fā)有三種轉(zhuǎn)移可能:1)磁盤清洗過(guò)程及時(shí)修復(fù)了塊故障,返回狀態(tài)1;2)其他(無(wú)損壞塊的)硬盤被預(yù)警即將發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)4;3)其他硬盤(被預(yù)測(cè)模型漏報(bào))發(fā)生了運(yùn)行故障,轉(zhuǎn)移到狀態(tài)7。
狀態(tài)3 有硬盤被預(yù)警將要發(fā)生運(yùn)行故障。從狀態(tài)3出發(fā)有4種轉(zhuǎn)移可能:1)預(yù)警硬盤得到及時(shí)有效的處理(危險(xiǎn)數(shù)據(jù)被安全遷移到新的健康硬盤,并替換預(yù)警盤),返回狀態(tài)1;2)其他(非預(yù)警)硬盤發(fā)生塊故障,轉(zhuǎn)移到狀態(tài)4;3)預(yù)警硬盤沒(méi)有得到及時(shí)處理,發(fā)生了運(yùn)行故障,轉(zhuǎn)移到狀態(tài)5;4)其他硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)6。
狀態(tài)4 校驗(yàn)組內(nèi)發(fā)生了塊故障,同時(shí)又有其他硬盤被預(yù)警。從狀態(tài)4出發(fā)有三種轉(zhuǎn)移可能:1)預(yù)警硬盤得到及時(shí)處理,返回狀態(tài)2;2)磁盤清洗過(guò)程消除了塊故障,返回狀態(tài)3;3)預(yù)警硬盤沒(méi)有被及時(shí)修復(fù)而發(fā)生了運(yùn)行故障,或者其他硬盤發(fā)生了運(yùn)行故障,轉(zhuǎn)移到狀態(tài)7。
狀態(tài)5 校驗(yàn)組內(nèi)發(fā)生了運(yùn)行故障。從狀態(tài)5出發(fā)有四種轉(zhuǎn)移可能:1)故障修復(fù)完成(增加新硬盤替換故障硬盤,并重構(gòu)損壞數(shù)據(jù)),返回狀態(tài)1;2)其他硬盤被預(yù)警,轉(zhuǎn)移到狀態(tài)6;3)其他硬盤又發(fā)生了運(yùn)行故障,轉(zhuǎn)移到狀態(tài)8;4)其他硬盤發(fā)生塊故障,轉(zhuǎn)移到狀態(tài)7。
狀態(tài)6 校驗(yàn)組內(nèi)發(fā)生了運(yùn)行故障,同時(shí)又有其他硬盤被預(yù)警。從狀態(tài)6出發(fā)有三種轉(zhuǎn)移可能:1)運(yùn)行故障被成功修復(fù),返回狀態(tài)3;2)預(yù)警硬盤得到及時(shí)處理,返回狀態(tài)5;3)預(yù)警硬盤發(fā)生了運(yùn)行故障,或者,其他(非預(yù)警)硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)8。
狀態(tài)7 校驗(yàn)組內(nèi)同時(shí)發(fā)生一個(gè)運(yùn)行故障和其他硬盤的塊故障。
狀態(tài)8 校驗(yàn)組內(nèi)存在兩個(gè)并發(fā)的運(yùn)行故障。處于這兩種狀態(tài)時(shí),校驗(yàn)組發(fā)生數(shù)據(jù)丟失事件,不能再提供正常服務(wù)。
對(duì)于一個(gè)RAID-6校驗(yàn)組,理論上有4種導(dǎo)致數(shù)據(jù)丟失的情況:
1)3個(gè)運(yùn)行故障同時(shí)發(fā)生;
2)2個(gè)運(yùn)行故障和1個(gè)塊故障同時(shí)發(fā)生;
3)1個(gè)運(yùn)行故障和2個(gè)位于同一條紋的塊故障同時(shí)發(fā)生;
4)3個(gè)位于同一條紋的塊故障同時(shí)發(fā)生。
與RAID-5類似,多個(gè)并發(fā)的塊故障處于同一校驗(yàn)條紋的概率很小,可以忽略。通常來(lái)說(shuō),當(dāng)RAID-6校驗(yàn)組內(nèi)3個(gè)硬盤同時(shí)發(fā)生損壞時(shí)(3個(gè)運(yùn)行故障,或者,2個(gè)運(yùn)行故障和1個(gè)塊故障),會(huì)導(dǎo)致數(shù)據(jù)丟失事件的發(fā)生。
針對(duì)主動(dòng)容錯(cuò)RAID-6校驗(yàn)組,創(chuàng)建了如圖2所示的可靠性狀態(tài)轉(zhuǎn)移模型。
圖2 主動(dòng)容錯(cuò)RAID-6可靠性狀態(tài)轉(zhuǎn)移
RAID-6校驗(yàn)組內(nèi)有N+2塊硬盤,包括N塊數(shù)據(jù)盤和2塊校驗(yàn)盤,大致存在12種可靠性狀態(tài),其中,狀態(tài)1~8與圖1的情況類似,此處僅介紹與圖1不同的內(nèi)容。因?yàn)镽AID-6可以容忍任意的兩個(gè)并發(fā)故障,所以轉(zhuǎn)移到狀態(tài)7和8時(shí),不會(huì)發(fā)生數(shù)據(jù)丟失,系統(tǒng)還可以自我修復(fù)。
處于狀態(tài)4時(shí),如果其他(非預(yù)警或塊損壞)硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)9。
處于狀態(tài)6時(shí),如果:1)其他(非預(yù)警)硬盤發(fā)生塊故障,轉(zhuǎn)移到狀態(tài)9;2)其他硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)10。
處于狀態(tài)7時(shí),如果:1)其他硬盤被預(yù)警,轉(zhuǎn)移到狀態(tài)9;2)其他硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)11。
處于狀態(tài)8時(shí),如果:1)其他硬盤被預(yù)警,轉(zhuǎn)移到狀態(tài)10;2)其他硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)12;3)其他硬盤發(fā)生塊故障,轉(zhuǎn)移到狀態(tài)11。
狀態(tài)9,校驗(yàn)組內(nèi)發(fā)生了運(yùn)行故障和塊故障,同時(shí)又出現(xiàn)預(yù)警硬盤。此時(shí),校驗(yàn)組有四種轉(zhuǎn)移可能:1)運(yùn)行故障得到及時(shí)修復(fù),返回狀態(tài)4;2)預(yù)警硬盤得到及時(shí)有效的處理,返回狀態(tài)7;3)塊故障被磁盤清洗消除,返回狀態(tài)6;4)預(yù)警硬盤沒(méi)有得到及時(shí)修復(fù),發(fā)生了運(yùn)行故障,或者其他硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)11。
狀態(tài)10,校驗(yàn)組內(nèi)有兩個(gè)并發(fā)的運(yùn)行故障,同時(shí)又有硬盤被預(yù)警。此時(shí),校驗(yàn)組有3種轉(zhuǎn)移可能:1)某個(gè)運(yùn)行故障被成功修復(fù),返回狀態(tài)6;2)預(yù)警硬盤得到及時(shí)處理,轉(zhuǎn)移到狀態(tài)8;3)預(yù)警硬盤發(fā)生了運(yùn)行故障,或者其他硬盤發(fā)生運(yùn)行故障,轉(zhuǎn)移到狀態(tài)12。
狀態(tài)11,校驗(yàn)組內(nèi)發(fā)生了2個(gè)運(yùn)行故障和一個(gè)(些)塊故障,數(shù)據(jù)丟失事件發(fā)生。
狀態(tài)12,校驗(yàn)組內(nèi)同時(shí)發(fā)生了3個(gè)運(yùn)行故障,數(shù)據(jù)丟失事件發(fā)生。
根據(jù)第2章提出的可靠性狀態(tài)轉(zhuǎn)移模型,設(shè)計(jì)了事件驅(qū)動(dòng)的蒙特卡洛仿真算法,模擬主動(dòng)容錯(cuò)RAID云存儲(chǔ)系統(tǒng)的運(yùn)行,并統(tǒng)計(jì)系統(tǒng)在一定運(yùn)行周期內(nèi)(比如10年)發(fā)生數(shù)據(jù)丟失事件的期望個(gè)數(shù)。算法通過(guò)6種仿真事件向前推進(jìn)模擬時(shí)間:
a)運(yùn)行故障事件,潛在存在于每一個(gè)硬盤上;
b)塊故障事件,潛在存在于每一個(gè)硬盤上;
c)故障重構(gòu)完成事件,在運(yùn)行故障修復(fù)完成時(shí)觸發(fā);
d)磁盤清洗完成事件,在磁盤清洗過(guò)程完成時(shí)觸發(fā);
e)故障預(yù)警事件,在預(yù)測(cè)模型檢測(cè)到潛在運(yùn)行故障時(shí)觸發(fā)(故障發(fā)生前TIA小時(shí)發(fā)生),受到預(yù)測(cè)模型性能的限制;
f)預(yù)警處理完成事件,在預(yù)警數(shù)據(jù)備份完成時(shí)觸發(fā)。
事件e)和f)模擬了主動(dòng)容錯(cuò)技術(shù)在存儲(chǔ)系統(tǒng)中的應(yīng)用,事件c)和f)觸發(fā)系統(tǒng)增加新硬盤。如果發(fā)生的故障滿足一定條件,系統(tǒng)發(fā)生數(shù)據(jù)丟失事件,為了保持系統(tǒng)規(guī)模,增加新數(shù)據(jù)到系統(tǒng)中。
程序開始時(shí)為系統(tǒng)中的每塊硬盤生成一個(gè)潛在的運(yùn)行故障和塊故障,并基于硬盤故障預(yù)測(cè)模型的性能生成一些預(yù)警事件,然后根據(jù)事件發(fā)生的先后順序插入一個(gè)最小堆。在程序運(yùn)行期間(達(dá)到指定仿真時(shí)間之前),不斷地從最小堆的頂部彈出最先出現(xiàn)的事件以模擬它的發(fā)生,并根據(jù)事件類型采取相應(yīng)操作。事件的發(fā)生時(shí)間是累積的,直到達(dá)到或超過(guò)指定的仿真時(shí)間。重復(fù)執(zhí)行仿真程序,直到系統(tǒng)發(fā)生10次以上的數(shù)據(jù)丟失事件,最后統(tǒng)計(jì)數(shù)據(jù)丟失事件的期望數(shù)量作為仿真程序的結(jié)果。
本章首先評(píng)價(jià)了可靠性狀態(tài)轉(zhuǎn)移模型的準(zhǔn)確性,然后利用模型對(duì)主動(dòng)容錯(cuò)RAID云存儲(chǔ)系統(tǒng)作了參數(shù)敏感性分析。
對(duì)仿真算法中的事件a)~d),使用Elerath等[13]通過(guò)領(lǐng)域數(shù)據(jù)分析得出的分布參數(shù),詳細(xì)信息見表1,其中,硬盤A和B是1 TB容量的近線SATA類型硬盤,硬盤C是288 GB容量的企業(yè)級(jí)FC型號(hào)硬盤。
Li等[2]提出的分類決策樹模型可以提前大約360 h預(yù)測(cè)出95%的潛在運(yùn)行故障,所以設(shè)置提前預(yù)警時(shí)間TIA=300 h,即運(yùn)行故障發(fā)生前300 h觸發(fā)預(yù)警事件。預(yù)警發(fā)出后,系統(tǒng)會(huì)啟動(dòng)預(yù)警處理進(jìn)程,把危險(xiǎn)硬盤上的數(shù)據(jù)遷移備份到其他健康硬盤上。為了簡(jiǎn)化程序,假設(shè)預(yù)警處理需要的時(shí)間與故障重構(gòu)時(shí)間相同,使用故障重構(gòu)的參數(shù)設(shè)置預(yù)警完成事件。
表1 韋布分布參數(shù)[13]
設(shè)置每個(gè)RAID-5校驗(yàn)組內(nèi)包含的硬盤總量為15,每個(gè)RIAD-6校驗(yàn)組內(nèi)為16,這樣,每個(gè) RAID 校驗(yàn)組內(nèi)都包含14塊數(shù)據(jù)硬盤。為每個(gè)主動(dòng)云存儲(chǔ)系統(tǒng)部署1 000個(gè)校驗(yàn)組,即,RAID-5系統(tǒng)總共包含15 000塊硬盤,RAID-6系統(tǒng)總共包含16 000塊硬盤,這樣,兩個(gè)存儲(chǔ)系統(tǒng)都存儲(chǔ)相同容量的用戶數(shù)據(jù)。
4.2.1 被動(dòng)容錯(cuò)系統(tǒng)
如果設(shè)置預(yù)測(cè)模型的故障檢測(cè)率(fdr)為0,本文模型退化為被動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)的可靠性狀態(tài)轉(zhuǎn)移模型。為了驗(yàn)證模型在被動(dòng)容錯(cuò)系統(tǒng)上的有效性,使用論文[14]和[13]中的可靠性公式(被動(dòng)容錯(cuò)RAID-5公式[14]、被動(dòng)容錯(cuò)RAID-6公式[13])與本文提出的模型作了實(shí)驗(yàn)對(duì)比。實(shí)驗(yàn)分別使用公式和仿真統(tǒng)計(jì)了不同運(yùn)行周期內(nèi)被動(dòng)容錯(cuò)RAID-5和RAID-6云存儲(chǔ)系統(tǒng)發(fā)生數(shù)據(jù)丟失事件的期望個(gè)數(shù),結(jié)果顯示在圖3中。
圖3 系統(tǒng)在不同運(yùn)行周期內(nèi)發(fā)生數(shù)據(jù)丟失事件的期望數(shù)
對(duì)于所有型號(hào)的硬盤,每個(gè)云存儲(chǔ)系統(tǒng)的仿真結(jié)果和公式計(jì)算結(jié)果都非常接近,只有不到10%的偏差,這些結(jié)果證實(shí)了本文模型在被動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)上的有效性。
4.2.2 主動(dòng)容錯(cuò)系統(tǒng)
為了驗(yàn)證模型在主動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)上的有效性,使用馬爾可夫可靠性評(píng)價(jià)模型(主動(dòng)容錯(cuò)RAID-5模型[4]、主動(dòng)容錯(cuò)RAID-6模型[2])與本文的模型進(jìn)行實(shí)驗(yàn)對(duì)比。因?yàn)轳R爾可夫模型的限制,此實(shí)驗(yàn)設(shè)置βf=1,βr=1,并且忽略塊故障和磁盤清洗事件。分別使用仿真算法和馬爾可夫模型評(píng)價(jià)了硬盤A系統(tǒng)在10年內(nèi)的可靠性水平,結(jié)果顯示在圖4中。
結(jié)果顯示,在不同的預(yù)測(cè)性能下兩種模型得出的結(jié)果都非常接近,平均只有10%的誤差,證實(shí)了本文模型在主動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)上的有效性。
圖4 不同預(yù)測(cè)性能下發(fā)生數(shù)據(jù)丟失事件的期望數(shù)
使用本文提出的模型,系統(tǒng)設(shè)計(jì)者在系統(tǒng)部署前或者潛在數(shù)據(jù)丟失事件發(fā)生前就能了解系統(tǒng)參數(shù)對(duì)系統(tǒng)整體可靠性的影響,有助于系統(tǒng)構(gòu)建和維護(hù)。本節(jié)將演示如何使用狀態(tài)轉(zhuǎn)移模型分析系統(tǒng)參數(shù)對(duì)系統(tǒng)可靠性的影響。除非特殊說(shuō)明,下述實(shí)驗(yàn)使用硬盤A的分布參數(shù),運(yùn)行周期設(shè)置為10年。
4.3.1 重構(gòu)時(shí)間
故障修復(fù)時(shí)間越長(zhǎng),系統(tǒng)(降級(jí)模式期間)發(fā)生并發(fā)故障的概率越大,所以故障重構(gòu)時(shí)間對(duì)系統(tǒng)可靠性的影響很大。本實(shí)驗(yàn)分析了故障重構(gòu)時(shí)間對(duì)主動(dòng)/被動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)可靠性的影響。對(duì)于主動(dòng)容錯(cuò)云存儲(chǔ),設(shè)置預(yù)測(cè)模型的預(yù)測(cè)準(zhǔn)確率fdr為0.8;當(dāng)fdr=0時(shí),系統(tǒng)退化為被動(dòng)容錯(cuò)系統(tǒng)。
通過(guò)調(diào)節(jié)參數(shù)αr改變重構(gòu)時(shí)間,結(jié)果顯示在圖5中。
圖5 不同重構(gòu)時(shí)間下發(fā)生數(shù)據(jù)丟失的期望數(shù)
正如上述分析所示,隨著重構(gòu)時(shí)間的增加,系統(tǒng)可靠性逐漸降低。而且,1)相比RAID-5系統(tǒng),RAID-6系統(tǒng)的可靠性受重構(gòu)時(shí)間的影響更明顯,這主要是因?yàn)镽AID-6系統(tǒng)發(fā)生數(shù)據(jù)丟失需要更多的運(yùn)行故障;2)與被動(dòng)容錯(cuò)系統(tǒng)相比,主動(dòng)容錯(cuò)系統(tǒng)的可靠性對(duì)重構(gòu)時(shí)間的敏感性低,由于主動(dòng)容錯(cuò)技術(shù)的引入,系統(tǒng)由“正常-故障恢復(fù)”兩狀態(tài)變化為“正常-預(yù)警處理-故障恢復(fù)”三狀態(tài),系統(tǒng)處于故障恢復(fù)狀態(tài)的時(shí)間變短,使得重構(gòu)時(shí)間對(duì)系統(tǒng)可靠性的影響減弱。
4.3.2 塊故障率
塊故障的發(fā)生頻率受到硬盤型號(hào)和硬盤使用情況的影響。本實(shí)驗(yàn)想研究系統(tǒng)可靠性對(duì)塊故障率的敏感性。通過(guò)改變參數(shù)α1調(diào)整塊故障的發(fā)生頻率,結(jié)果顯示在圖6中。結(jié)果顯示,塊故障率越高,系統(tǒng)可靠性越低。而且,相比被動(dòng)容錯(cuò)系統(tǒng),主動(dòng)容錯(cuò)系統(tǒng)受塊故障率的影響較大,這主要是因?yàn)橐胫鲃?dòng)容錯(cuò)技術(shù)之后,系統(tǒng)中發(fā)生運(yùn)行故障的概率降低,從而導(dǎo)致塊故障對(duì)數(shù)據(jù)丟失事件的貢獻(xiàn)增大。
圖6 不同塊故障率下發(fā)生數(shù)據(jù)丟失的期望數(shù)
4.3.3 磁盤清洗周期
本實(shí)驗(yàn)研究磁盤清洗周期對(duì)系統(tǒng)可靠性的影響,通過(guò)改變參數(shù)αs調(diào)整磁盤清洗時(shí)間,結(jié)果顯示在圖7中。結(jié)果顯示,隨著清洗周期的變長(zhǎng),系統(tǒng)可靠性不斷降低;而且,與塊故障率實(shí)驗(yàn)結(jié)論類似,相比被動(dòng)容錯(cuò)系統(tǒng),主動(dòng)容錯(cuò)系統(tǒng)對(duì)磁盤清洗周期的敏感性更強(qiáng)。
圖7 不同清洗周期下發(fā)生數(shù)據(jù)丟失的期望數(shù)
本文分別針對(duì)主動(dòng)容錯(cuò)RAID-5和RAID-6云存儲(chǔ)系統(tǒng)提出可靠性狀態(tài)轉(zhuǎn)移模型,分析了運(yùn)行故障和塊故障下系統(tǒng)的全局可靠性。基于狀態(tài)轉(zhuǎn)移模型,設(shè)計(jì)了蒙特卡洛仿真算法,模擬主動(dòng)容錯(cuò)云存儲(chǔ)系統(tǒng)的運(yùn)行,評(píng)價(jià)主動(dòng)容錯(cuò)技術(shù)、硬盤運(yùn)行故障、重構(gòu)過(guò)程、塊故障以及磁盤清洗過(guò)程對(duì)系統(tǒng)全局可靠性的影響。利用本文提出的模型,系統(tǒng)設(shè)計(jì)者可以方便準(zhǔn)確地評(píng)價(jià)主動(dòng)容錯(cuò)技術(shù)以及其他系統(tǒng)參數(shù)對(duì)云存儲(chǔ)系統(tǒng)可靠性的影響,有助于存儲(chǔ)系統(tǒng)的構(gòu)建和維護(hù)。
[15] EPSTEIN A, KOLODNER E K, SOTNIKOV D. Network aware reliability analysis for distributed storage systems [C]// Proceedings of the 2016 IEEE 35th Symposium on Reliable Distributed Systems. Washington, DC: IEEE Computer Society, 2016: 249-258.
[16] HALL R J. Tools for predicting the reliability of large-scale storage systems [J]. ACM Transactions on Storage, 2016, 12(4): Article No. 24.
[17] ALLEN B. Monitoring hard disks with smart [J]. Linux Journal, 2004, 2004(117):9.
[18] 羅象宏,舒繼武.存儲(chǔ)系統(tǒng)中的糾刪碼研究綜述[J].計(jì)算機(jī)研究與發(fā)展,2012,49(1):1-11.(LUO X H, SHU J W. Summary of research for erasure code in storage system [J]. Journal of Computer Research and Development, 2012, 49(1): 1-11.)
[19] ELERATH J G. Specifying reliability in the disk drive industry: No more MTBF’s [C]// Proceedings of the 2000 International Symposium on Product Quality and Integrity, Reliability and Maintainability Symposium. Piscataway, IEEE, 2000: 194-199.
[20] McCOOL J I. Using the weibull distribution: reliability, modeling and inference [J]. Journal of Applied Statistics, 2012, 41(4): 913-914.