瀏覽人次:【13093】
為什麼需要RAID 6?
基本上,RAID指的是藉由一組硬碟和相對應的資料設計,可在某些元件發生讀取錯誤的情況下,確保從系統仍能存取資料。RAID 0是基礎條帶化模型,由於不支援任何冗餘,因此在執行系統性能優化時,也無法在故障情況下恢復資料。RAID 5則透過添加一個校驗盤(又稱P盤),作同行數據XOR的計算,從而實現資料恢復之功能。以數學角度來說,資料恢復過程可視為只有一個未知變數(因讀取故障而遺失的資料)的線型方程式,並可輕鬆的透過基礎代數方法求解。
RAID 6延伸RAID 5的功能,並可在同一數據集上恢復兩個資料錯誤。從數學角度來說,RAID 5使用一個方程式解出一個未知變數,而 RAID 6則能通過兩個獨立的線型方程構成一個方程組,從而恢復兩個未知數據。而第二個方程則額外創建一個Q盤,因此RAID 6又稱作P+Q盤機制。
理論上來說,此數列可無限延伸,並創建任意類型的M+N冗餘,但實際應用通常僅限於N=2。也就是說,RAID 6被賦予的主要任務即是解決數據條上同時發生的兩個獨立錯誤。
RAID 5的侷限性
RAID 5可獨立解決兩種磁碟無法存取資料的情況:
●其中一顆磁碟損壞且無法進行任何資料讀寫動作,需要進行更換時,RAID 5能從保存的對等資料中恢復該損壞硬碟之所有資料,並重建毀損的磁碟。
●磁片組本身沒問題,但其中一個磁區上出現了壞軌(即不能讀取的區塊),造成某些資料不能恢復時。
請注意,從數學角度來說,每個磁片的平均無故障時間(MTBF)大約為50萬至150萬小時(也就是每50~150年發生一次硬碟損壞),但實際情況往往無法達到上述理想值。目前在大多數散熱和機械條件下,都會造成硬碟正常工作的時間大幅減少。由於陣列中的每個磁碟皆為獨立且皆有可能發生故障,因此從統計學的角度來看的話,一個包含N個磁碟的陣列,其發生故障的機率就比單一磁碟要大上N倍。綜上所述,如果陣列中的磁片數量合理,且這些磁片的平均無故障時間(MTBF)較短,那麼在磁碟陣列的預期使用壽命週期中,就很有可能發生磁片故障(比方說每隔幾個月或幾年就會發生一次故障)。
那麼,兩顆磁碟同時損壞的機率有多大呢(「同時」是指在其中一顆磁碟修復前,另一顆磁碟即發生故障)?如果說RAID 5陣列的MTBF與MTBF2成比例關係,那麼此種機率約為每一萬年出現一次,也就是說不論在何種工作環境之下,兩顆磁碟同時損壞的機率極低。然而,這僅為純粹數學計算,並不符合現實考量。現實中意外狀況時常發生,而有些原因則根本與MTBF毫無關係。
讀取錯誤(不能恢復的ECC讀取錯誤)是一種較難以掌握的現象,從統計數據上發現其與位元讀取數成比例關係。就SCSI/ FC/ SAS磁片來說(SAS是本文的重點,但本量化說明同樣適用於其他兩種種技術),發生讀取錯誤的機率為每讀取10^15位元(約100TB)到10^16位元(約1000TB或1PB),會出現一次錯誤。我們把這一機率稱作誤碼率(Bit Error Rate;BER)。
SATA磁碟的BER比上述技術要高一到兩個數量級(其BER為每讀取10^14到10^15位元出現一次錯誤,即每讀取10到100TB 就出現一次錯誤,取決於磁碟設計)。若一個SATA磁碟容量為1TB,代表完整讀取該磁碟十次集會出現壞區塊(假定這裡的BER為每讀取10^14位出錯一次)。存儲相同資料的兩個對應區塊幾乎不可能同時出現問題,因其BER為每讀取10^30位元出現一次錯誤。
然而,若同時發生的兩個問題,分別由MTBF與讀取錯誤所引起,則該機率有多大?假設將10個分別擁有300GB容量與BER為10^-15的磁碟組合成一個陣列,那麼我們在重建磁片時發生讀取錯誤的可能性有多大?計算方法為:10^15(位)×1/8(位元組/位元)×1/10(磁片)×1/300GB,從而得出每50次重建就會出現一次錯誤,看起來相當顯著但不足以令人吃驚。如果在磁碟陣列的使用壽命內,發生了50次故障的話,那才真令人頭痛。上述機率在統計學上並非為不顯著,因此我們可以換句話說,若您出售了50顆該款硬碟給某人,則其中至少會有一顆發生故障。看起來還好,但對於一個安裝了數百個磁碟陣列的客戶來說,是非常嚴重的問題。不過,有些SAS磁碟的BER比這裡假定的情況要好上10倍,因此故障率可以大幅降低。
那麼,SATA的情況又如何呢?一般來說,當磁碟的容量越大,就越容易發生重大的故障,而SATA的BER較其他技術要低-這是一個非常嚴重的問題。假定有上述同樣的10個磁碟組成陣列,但每個磁碟容量為500GB,BER為10^-14,則計算公式如下:10^14×1/8×1/10×1/500GB,得出每2.5次重建就會出現一次故障,這是一個需要被高度重視的數據。
RAID 6的重要性與彈性
上面所談的是一個5TB容量的磁碟陣列,儘管這種陣列還不太常見,但完全是當前技術可以達到的水準。每2.5個陣列就有一個會在重建時發生區塊毀損,然後用戶會看到「Read Error at LBA = 0xF43E1AC9」這類對他們來說毫無用處的錯誤訊息。0xF43E1AC9到底是什麼?是說空間為空?還是說內核資料下次重啟會發生藍屏錯誤?是僅涉及沒人會用得到的資料庫?還是我的銀行帳戶資訊?實際上看到這種錯誤資訊根本無從做出判斷,唯一的辦法就是從備份中恢復資料,但這會花費大量時間,而且還要考慮到從5TB容量的磁帶中存取資料將面臨多大的錯誤機率。這種讀取錯誤的機率極高,因此用戶會遇到無窮盡的問題。
RAID 6之所以重要,不是因為它能恢復兩個同時發生的磁碟故障,而是能用完好的對等磁碟恢復一個磁碟故障和一個讀取錯誤。隨著磁碟容量不斷增長,上述錯誤的發生率也越來越高,加上低品質SATA磁碟的使用,又使該機率提高十倍乃至百倍。說到底,要在價格與風險之間進行權衡,SAS與高端硬碟擁有較佳的MTBF與BER,因此發生錯誤的機率較小(儘管不是零);反之SATA能大幅節約購買設備的資本投入,卻會面臨較高的雙重故障機率。在此情況下,RAID6 市場便乘勢而起。
值得注意的是,上面提到的一些風險可以透過其他技術加以降低,例如定期掃描磁碟以避免區塊損壞的巡讀(Patrol Read),可以確保不會因為另一顆磁碟的損壞,造成同一條磁帶上的資料發生雙重故障。目前來說,RAID 6似乎是更適合SATA硬碟。不過就如同市場的預期,當磁碟容量與陣列規模不斷增加,RAID 6在SAS領域的應用商機也令人期待。
---作者為LSI公司企業策略總監---
|