出于盡可能避免數據災難的設計初衷,RAID解決了3個問題:容量問題、IO性能問題、存儲安全(冗余)問題。從數據恢復的角度討論RAID的存儲安全問題。
常見的起到存儲安全作用的RAID方案有RAID1、RAID5及其變形。基本設計思路是相似的:當部分數據異常時,可通過特定算法將數據還原出來。以RAID5為例:如果要記錄兩個數字,可以通過再多記錄這兩個數字的和來達到記錄冗余性的目的。例如記錄3和5,同時再記錄這2個數字的和8。在不記得到底是幾和5的情況下,只需要用8-5就可以算出這個丟失的數字了,其余情況依此類推。
在RAID里同樣是以某種算法來達到保全數據的目的,當一組RAID5陣列正常工作時,所有寫入RAID里的數據都正確地寫到特定磁盤地址,同時再生成一個特定的計算值(通常稱為校驗和)。當其中一塊盤出現故障時,存儲在這塊故障盤上的原有數據就要通過其他硬盤的數據恢復出來。由控制器(硬RAID為RAID卡,軟RAID實際上是個驅動)負責這個工作。為了不宕機,控制器也會保證存儲的正常化,不會讓操作系統認為硬盤系統出了問題。
RAID在存儲安全上還有一些不太容易避免的漏洞。雖然由于這些漏洞出現問題的可能性不大,但是存儲在RAID上的數據價值無法評估。
RAID常見故障:
1、處于降級狀態時,未及時rebuild。RAID是通過空余的部分存儲空間來提供算法上的數據安全冗余的。當某些盤出現故障下線后,RAID便不能再提供這種存儲冗余。如果不及時更換盤&REBUILD,如果其他硬盤再出現故障,RAID便無法正常工作了。
2、RAID控制器故障:控制器是連接物理硬盤與操作系統之間的紐帶。硬盤容量、硬盤數量,RAID級別、邏輯磁盤分割方式、塊大小、校驗方式等組合成不同的RAID信息(RAID元數據),這些RAID信息有時候會寫在陣列卡上,有時候會寫在硬盤上,還有的時候兩者皆有。如果RAID控制器出現故障,即使更換新的控制器一般也不能將RAID信息還原。中低端的RAID控制器出于成本考慮,漏洞更多。
3、固件算法缺陷:RAID的創建、重建、降級、保護等功能的實現需要非常復雜的算法。盡管廠商不會承認生產的RAID控制器的BUG,但算法漏洞在任何一款控制器上都無法避免。固件算法BUG可能會導致很多無法解釋的故障。
4、IO通道受阻導致RAID掉盤:RAID控制器在設計時為了數據的絕對安全,會盡可能避免寫數據到不穩定的存儲介質上。這樣,當控制器與物理硬盤進行IO時,如果時間超過某個閾值,或不滿足校驗關系,控制器便會認為對應的存儲設備已不具備持續工作的能力,會讓其強制下線,通知管理員盡快解決問題。這種設計的初衷很好,但對于像物理鏈接線路松動、硬盤完好情況下機械工作時反應超時等隨機因素,RAID控制器無法分辨設備是否具備和之前一樣的穩定狀態,通常會讓其強制下線,便會導致RAID卷出現故障,此類故障的發生概率極大且無法避免。
5、RAID控制器的穩定性:RAID控制器在ONLINE狀態下(無離線盤)工作是最穩定的。當部分硬盤損壞(可能是邏輯故障)后離線,RAID控制器便會工作在一個“亞健康”的狀態。這也是好多中低端的RAID控制器在一塊盤離線后讀寫性能急速下降的原因。控制器負載太重便會極大地增加數據吞吐時出現IO滯留的可能性,從而導致RAID離線。一個不具備高速硬件處理芯片,不具備高速緩沖的控制器發生這類故障的概率要高得多。
6、壞硬盤:很多人認為只要硬盤一壞,RAID就會讓這塊壞硬盤脫機,更換新硬盤后REBUILD就恢復如初了。實際情況是一組RAID在工作很長時間以后也很少會讀到物理硬盤的所有磁盤空間,同一時間更是不可能。部分情況下會在沒有讀到的區域或者以前讀取良好的區域出現壞道。這類壞道因為沒有讀寫過,所以控制器是沒有識別出來的。當一塊物理硬盤離線后,通常技術人員及官方資料都會建議盡快做REBUILD。如果其他硬盤存在這類壞道,當REBUILD(對全盤做全面同步)過程中讀到那些壞道,這時候REBUILD沒完成,新盤還無法上線,舊盤里又發現了壞道,然后又有硬盤下線,導致RAID出現故障,無法自行恢復數據。
7、人為誤操作:誤拔RAID硬盤、沒準備備件盤、不及時換盤、給RAID除塵時忘了原來的順序、不小心刪除了原RAID配置等。
8、其他原因。
上述的這些故障原因除人為因素外,大多數很難直接避免,只能結合備份,構建整體存儲安全方案來解決。
-
服務器
+關注
關注
12文章
9017瀏覽量
85182 -
RAID
+關注
關注
0文章
273瀏覽量
35056 -
數據恢復
+關注
關注
10文章
548瀏覽量
17384
發布評論請先 登錄
相關推薦
評論