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