1. 程式人生 > >Raid磁盤陣列真的是100%的安全嗎?raid有哪些常見的故障?

Raid磁盤陣列真的是100%的安全嗎?raid有哪些常見的故障?

ces 磁盤陣列 text vpd 工作 控制 裏的 自然 案例

問:
數據恢復既然是數據災難的一種補救措施,那設計安全的RAID磁盤陣列系統也會出現數據災難嗎?
答:
RAID設計的初衷大約有3個原因:解決容量問題、解決IO性能問題與解決存儲安全(冗余)問題。從數據恢復的角度看,我們暫不討論容量與IO性能方面,僅討論存儲安全。
`
RAID中可以起到存儲安全的組織方案常見的為RAID1、RAID5及其變形,基本設計思路是相似的,都是能過一定的算法,用多塊硬盤之間的算法維護來保證當部分數據異常時,可通過特定算法還原出來。拿RAID5的設計方式來看,舉個簡單的例子說明一下,如果我們要記錄兩個數字,那麽可以通過再多記錄他們的和來達到記錄的冗余性,就像我們記錄3和5,同時再記錄一下8(為3+5的和),那麽如果我們不記得到底是幾和5,只需要用8-5就可以算出這個丟失的數字了,其余情況依此。在磁盤陣列裏同樣是以某種算法來達到保全數據的目的,當一組3塊盤的RAID5正常工作時,所有寫入RAID裏的數據都正確地寫到特定磁盤地址,同時再生成一個特定的計算值(通常稱為校驗和),這個時候的讀寫效率是最好的。但當其中一塊盤出現故障時,存儲在這塊故障盤上的原有數據就要通過其他硬盤的數據恢復出來,當然這個過程中控制器(硬RAID為RAID卡,軟RAID實際上是個驅動)會負責這個工作,同時為了保證不宕機,控制器也會保證存儲的正常化,不會讓操作系統認為硬盤系統出了問題。

從上面的原理來看,RAID提供的存儲安全還有一些不太容易避免的漏洞,雖然可能性不大,但存儲在RAID上的數據價值可能無法評估,出絲毫的故障都可能會導致一場大的信息災難。
技術分享圖片
轉入正題,RAID通常出現的故障可能性有:
1、處於降級狀態時,未及時rebuild:RAID是通過多出來的部分存儲空間來提供算法上的數據安全冗余的,但當某些盤出現故障下線後,RAID便不能再提供這種存儲冗余,如果管理員不及時更換盤,REBUILD整個卷,這時候其余工作中的硬盤再出現故障,RAID卷便無法正常工作了。這類故障在RAID數據恢復中比例相當高,服務器維護管理跟不上很容易發生。

`
2、控制器故障:控制器是連接物理硬盤與操作系統之間的數據存儲紐帶,同時因RAID的組成方式並非自然約定(特定),硬盤容量的大小,硬盤數量的多少,RAID組成級別,邏輯磁盤分割方式,塊大小,校驗方式等因素組合成不同的RAID信息(RAID元數據),這些RAID信息有時候會寫在陣列卡上,有時候會寫在硬盤上,還有的時候兩者皆有。如果控制器出現故障,很多情況下更換新的控制器並不能RAID信息還原,中低端的控制器出於成本考慮,這方面漏洞更會大得多。同時即使記得住原先的RAID結構,再次重建也都是錯誤的數據恢復方法(見相關文章)。

`
3、固件算法缺陷:RAID的創建、重建、降級、保護等工作在控制器的實現上是非常復雜的算法,當然這裏面的復雜更多地是提供盡可能萬無一失的無漏洞算法,盡管廠商不會輕易承認控制器的BUG,但毫無疑問,這些問題在任何一款控制器上都無法避免。因為固件算法上BUG,可能會產生很多無法解釋的故障。比如在部分服務器數據恢復案例中,有一些早期生產的DELL 2950服務器,會有RAID一塊盤OFFLINE後故障盤與報警燈不一致的情況,導致客戶在更換故障盤REBUILD時拔錯盤,整個RAID組崩潰。

`
4、IO通道受阻導致RAID掉盤:RAID控制器在設計時為了數據的絕對安全,會盡可能避免寫數據到不穩定的存儲介質上,這樣,當控制器與物理硬盤進行IO時,如果時間超過某個閥值,或不滿足校驗關系,便會認為對應的存儲設備已不具備持續工作的能力,但會讓其強制下線,通知管理員盡快解決問題。這種設計的初衷很好,同時也是正確的設計方式,但對於如物理鏈接線路松動,或因硬盤機械工作時反應超時(可能硬盤還是完好的)等隨機原因對控制器而言無法分辨設備是否具備和之前一樣的穩定狀態,所以很不在意的某些小環節,便會導致RAID卷出現故障,此類故障的發生概率極大,而且無法避免。這也是大多數RAID出現故障後,硬盤並未有故障的原因,我們好多數據恢復服務的客戶會因此質疑服務器廠商,實際上是有苦難言的,一定程度上,越是設計安全的控制器,越會發生此類現象。

`
5、控制器的穩定性:RAID的控制器在ONLINE狀態下(無離線盤)工作是最穩定的,相對而言,當部分硬盤損壞(可能是邏輯故障)後離線,控制器便會工作在一個比較吃力的狀態,這也是好多中低端的RAID控制器在一塊盤離線後讀寫性能急速下降的原因。控制器的負載太重便會極大地增加數據吞吐時出現IO滯留的可能性,從而導致如上面第4點提及的RAID離線。一個不具備高速硬件處理芯片,不具備高速緩沖的控制器發生這類故障的概率要高得多。為了避免出現故障後數據恢復帶來的業務停頓與額外開銷,還是盡量不要選擇這類磁盤陣列控制器。
技術分享圖片

6、壞硬盤:這類情況很有趣,好多人會認為正常工作的RAID裏不會有壞硬盤,因為只要硬盤一壞,RAID就會讓他這塊壞硬盤脫機,更換新硬盤後REBUILD就又是好硬盤了。但實際上,這類情況卻是不可避免的,原因是:一組RAID卷在工作很長時間以後也很少會讀到物理硬盤的所有磁盤空間,同一時間更是不可能。部分情況下,硬盤會在沒有讀到的區域或者以前讀取是良好的區域產生壞道,這類壞道因為沒有讀寫過,所以在控制器看來是好的。產生這種壞磁道的最直接危害是在REBUILD過程中。當一塊物理硬盤離線後,通常所有的技術人員及官方資料都會寫盡快做REBUILD,但如果其他硬盤存在這類平常不知的壞磁道,REBUILD又都是對全盤做全面同步,就一定會讀寫到那些壞道,這時候REBUILD沒完成,新盤無法上線,因舊盤裏又發現了壞道,便會導致RAID又多出一些下線的硬盤,這樣就可能會導致RAID出現故障,無法自行進行數據恢復了。

`
7、人為誤操作:涉及數據恢復的數據災難有相當一部分也是可以避免的,但總會有這樣的情況:無關人員誤拔RAID裏的硬盤、沒準備備件盤、不及時換盤、給RAID除塵時忘了原來的順序、不小心刪除了原RAID配置等。

`
8、其他我暫時想不起來的原因。
這些災難原因除人為原因外,大多數很難直接避免,只能通過結合備份,構建整體存儲安全方案來解決。其他文章會提到原因,以及拋開數據恢復話題的安全建議。

Raid磁盤陣列真的是100%的安全嗎?raid有哪些常見的故障?