Luca Bert 絕對(duì)的RAID專家
RAID 6 擴(kuò)展了 RAID 5 的功能,可在同一數(shù)據(jù)集上恢復(fù)兩個(gè)數(shù)據(jù)錯(cuò)誤。從數(shù)學(xué)角度來說,RAID 5 使用一個(gè)方程式解出一個(gè)未知變量,而 RAID 6 則能通過兩個(gè)獨(dú)立的線性方程構(gòu)成方程組,從而恢復(fù)兩個(gè)未知數(shù)據(jù)。第一個(gè)方程與 RAID 5 機(jī)制一樣,也是通過添加P盤實(shí)現(xiàn)的,而第二個(gè)方程則有所不同,將創(chuàng)建一個(gè) Q 盤,因此 RAID 6 又稱作“P+Q”盤機(jī)制。
從理論上說,這種回歸計(jì)算可以無限延伸,可創(chuàng)建任意類型的 M+N 冗余,但實(shí)際應(yīng)用通常僅限于 N=2,也就是說數(shù)據(jù)條帶上同時(shí)發(fā)生兩個(gè)不同的故障,這也就是RAID 6 所要解決的主要問題。
為什么需要 RAID 6?
RAID 5可獨(dú)立解決磁盤不能檢索數(shù)據(jù)的兩種情況:
• 一個(gè)磁盤損壞,也就是說不能對(duì)任何讀寫命令做出響應(yīng),需要更換。RAID 5 能從保存的對(duì)等數(shù)據(jù)中恢復(fù)所有數(shù)據(jù),重建缺陷磁盤。
• 磁盤組本身沒問題,但其中一個(gè)磁盤上出現(xiàn)了壞塊(即不能讀取的塊),造成某些數(shù)據(jù)不能恢復(fù)。
請(qǐng)注意,從數(shù)學(xué)角度說,每個(gè)磁盤的平均無故障時(shí)間 (MTBF) 大約為 50 萬至 150 萬小時(shí)(也就是每 50~150 年發(fā)生一次硬盤損壞)。實(shí)際往往不能達(dá)到這種理想的情況,在大多數(shù)散熱和機(jī)械條件下,都會(huì)造成硬盤正常工作的時(shí)間大幅減少??紤]到每個(gè)磁盤的壽命不同,陣列中的任何磁盤都可能出現(xiàn)問題,從統(tǒng)計(jì)學(xué)角度說,陣列中 N 個(gè)磁盤發(fā)生故障的機(jī)率比單個(gè)磁盤發(fā)生故障的機(jī)率要大 N 倍。結(jié)合上述因素,如果陣列中的磁盤數(shù)量合理,且這些磁盤的平均無故障時(shí)間 (MTBF) 較短,那么在磁盤陣列的預(yù)期使用壽命過程中,就很有可能發(fā)生磁盤故障(比方說每幾個(gè)月或每隔幾年就會(huì)發(fā)生一次故障)。
兩塊磁盤同時(shí)損壞的幾率有多大呢(“同時(shí)”就是指一塊磁盤尚未完全修復(fù)時(shí)另一塊磁盤也壞掉了)?如果說 RAID 5 陣列的MTBF相當(dāng)于MTBF^2,那么這種幾率為每隔1015個(gè)小時(shí)發(fā)生一次(也就是1萬多年才出現(xiàn)一次),因此不管工作條件如何,發(fā)生這種情況的概率是極低的。從數(shù)學(xué)理論角度來說,是有這種概率,但在現(xiàn)實(shí)情況中我們并不用考慮這一問題。不過有時(shí)卻是會(huì)發(fā)生兩塊磁盤同時(shí)損壞的情況,我們不能完全忽略這種可能性,實(shí)際兩塊磁盤同時(shí)損壞的原因與MTBF基本沒有任何關(guān)系。
讀取錯(cuò)誤(不能恢復(fù)的ECC讀取錯(cuò)誤)從統(tǒng)計(jì)角度來說也比較少見,一般來說是指讀取多少位后會(huì)出現(xiàn)一次讀取錯(cuò)誤。就 SCSI/ FC/ SAS 磁盤(SAS 是本文的重點(diǎn),但同樣的量化說明適用于所有這三種技術(shù))來說,發(fā)生讀取錯(cuò)誤的幾率為每讀取10^15位(也就是約100TB)到10^16位(約 1000TB 或 1PB),會(huì)出現(xiàn)一次錯(cuò)誤。我們把這一幾率稱作誤碼率 (BER)。
不過,SATA 磁盤的錯(cuò)誤率要大一些,其 BER 比其它類型的磁盤要高出一兩個(gè)數(shù)量級(jí)(即其BER為每讀取10^14到10^15位出現(xiàn)一次錯(cuò)誤,或者說每讀取10/100TB 出現(xiàn)一次錯(cuò)誤,具體取決于磁盤設(shè)計(jì))。如果 SATA 磁盤容量為1TB,完整讀取磁盤十次,就會(huì)發(fā)現(xiàn)新的故障塊(假定這里的 BER 為每讀取10^14位出錯(cuò)一次)。存儲(chǔ)相同數(shù)據(jù)的相應(yīng)兩個(gè)塊同時(shí)出現(xiàn)問題幾乎是不可能的,幾率為每讀取 10^30 位發(fā)生一次。
然而,如果一個(gè)問題由于 MTBF 引起,另一個(gè)問題由于讀取錯(cuò)誤引起,這樣兩個(gè)錯(cuò)誤同時(shí)發(fā)生的幾率有多大?假設(shè)我們有 10 個(gè) SAS 磁盤組成的陣列,每個(gè)磁盤容量為 300GB,BER為每讀取10^-15 位出錯(cuò)一次,那么我們?cè)谥亟ù疟P時(shí)發(fā)生讀取錯(cuò)誤的可能性有多大?
計(jì)算方法如下: 10^15(位)X 1/8 (字節(jié)/位)X 1/10 (磁盤)X 1/300GB,從而得到每 50 次重建就會(huì)出現(xiàn)一次。這種幾率還是比較大的,但并不足以讓人震驚,要是磁盤陣列在使用壽命中要發(fā)生50次故障的話,那才真成了問題!不過,上述幾率在統(tǒng)計(jì)學(xué)上還是有意義的,我們可以換一種方式來理解,也就是說,如果我們出售50款與上述配置一樣的陣列,那么至少其中一個(gè)會(huì)出現(xiàn)上述嚴(yán)重問題。這種幾率也不算高,但要是客戶安裝上百個(gè)陣列的話,問題就比較嚴(yán)重了。不過,有的SAS磁盤的BER比我們這里假定的情況要好上10倍,因此問題可以大大化解。
如果使用 SATA 會(huì)有什么情況呢?磁盤容量越大,問題就越嚴(yán)重!
磁盤的BER會(huì)較差,造成問題的嚴(yán)重性。假定同樣有上述10個(gè)磁盤組成陣列,但每個(gè)磁盤容量為500GB,BER為讀取10^-14位出錯(cuò)一次,那么計(jì)算如下:10^14 X 1/8 X 1/10 X 1/500GB,得出每 2.5 次重建就會(huì)出一次嚴(yán)重問題,這就要引起我們的高度重視了。我們這里所談的是5TB容量的陣列,盡管這種陣列還不太常見,但完全是當(dāng)前技術(shù)可以達(dá)到的水平。這就是說,這種容量大小的陣列每 2.5 個(gè)中,就有一個(gè)陣列會(huì)出現(xiàn)每次重建就發(fā)生塊損壞的問題,用戶會(huì)看到“Read Error at LBA = 0xF43E1AC9”這類報(bào)錯(cuò)信息,著實(shí)讓人頭痛。用戶怎么會(huì)明白0xF43E1AC9 到底指什么?是說空間為空?還是說內(nèi)核數(shù)據(jù)下次重啟會(huì)發(fā)生藍(lán)屏錯(cuò)誤?是僅涉及沒人會(huì)用得到的數(shù)據(jù)庫?還是包含著銀行帳戶信息?實(shí)際上看到這種錯(cuò)誤信息我們根本無所做出判斷,唯一的辦法就是從備份中恢復(fù)數(shù)據(jù),這會(huì)花大量時(shí)間,而且還要考慮到從 5TB 容量的磁帶中恢復(fù)數(shù)據(jù)會(huì)面臨多大的讀取錯(cuò)誤幾率。這種讀取錯(cuò)誤的幾率要大大高于磁盤,因此用戶會(huì)遇到無窮盡的問題。
內(nèi)容提要:RAID 6 之所以重要,不是因?yàn)樗芑謴?fù)兩個(gè)同時(shí)發(fā)生的磁盤故障,而是能用完好的對(duì)等磁盤恢復(fù)一個(gè)磁盤故障和一個(gè)讀取錯(cuò)誤。隨著磁盤容量的上升,上述這種錯(cuò)誤的發(fā)生幾率也在增加。更為重要的是,低質(zhì)量SATA磁盤使用比較多,造成這種幾率又要提高10倍乃至百倍。
說到底,我們要在價(jià)格與風(fēng)險(xiǎn)之間進(jìn)行權(quán)衡,SAS 和高端驅(qū)動(dòng)器的平均無故障時(shí)間 (MTBF) 更長/BER 性能更高,因而出問題的可能性也就少得多(盡管不是不可能出問題),而低端SATA 有助于大幅節(jié)約購買設(shè)備的資本投入,卻會(huì)面臨較高的雙重故障幾率。在此情況下,RAID6 市場(chǎng)便應(yīng)運(yùn)而生。
需要指出的是,上述涉及的某些風(fēng)險(xiǎn)可通過其它技術(shù)加以規(guī)避減輕,如定期掃描磁盤以避免壞塊的巡讀 (Patrol Read),確保不會(huì)因?yàn)榱硪粔K磁盤的故障造成同一條帶上的數(shù)據(jù)發(fā)生雙重故障。就目前而言,RAID 6 似乎是針對(duì) SATA 驅(qū)動(dòng)器的更合適的解決方案,也是我們更加需要的解決方案。不過隨著市場(chǎng)預(yù)期的發(fā)展,磁盤容量和陣列規(guī)模不斷上升,這種技術(shù)在 SAS 磁盤領(lǐng)域的應(yīng)用也可能頗有商機(jī)。