何歡 何倩
[摘要] 磁盤陣列是由多個(gè)穩(wěn)定性較高的磁盤,組合成一個(gè)大型的磁盤組,磁盤陣列具有擴(kuò)充性及容錯(cuò)機(jī)制兩大功能,不同的RAID級別數(shù)據(jù)容錯(cuò)及讀寫速度不一樣,誤操作和硬件故障同樣會(huì)引起的陣列數(shù)據(jù)丟失,本文探討了在磁盤陣列各種故障情況下修復(fù)方法。
[關(guān)鍵詞] 磁盤陣列容錯(cuò)機(jī)制故障修復(fù)方法
1.引言
RAID是將N臺(tái)硬盤通過RAID 卡(或是軟件)組合成虛擬的單臺(tái)大容量的硬盤使用,其功能是讓N臺(tái)硬盤同時(shí)讀取,加快數(shù)據(jù)存取速度及提供容錯(cuò)性, RAID是最重要用途是數(shù)據(jù)存儲(chǔ)和備份。
磁盤陣列是由多個(gè)穩(wěn)定性較高的磁盤,組合成一個(gè)大型的磁盤組,在儲(chǔ)存數(shù)據(jù)時(shí),將數(shù)據(jù)切割成許多區(qū)段,分別存放在各個(gè)硬盤上,磁盤陣列還能利用同位檢查,在陣列中任一個(gè)硬盤故障時(shí),可重構(gòu)數(shù)據(jù),在數(shù)據(jù)重構(gòu)時(shí),將故障硬盤內(nèi)的數(shù)據(jù),經(jīng)計(jì)算后重新置入新硬盤中,磁盤陣列在停機(jī)情況下可處理以下動(dòng)作:
◇自動(dòng)檢測故障硬盤。
◇重建硬盤壞道的資料。
◇支持不須停機(jī)的硬盤熱備空間(Hot Spare)。
◇支持不須停機(jī)的硬盤熱備盤自動(dòng)替換(Hot Swap)。
◇在線擴(kuò)充硬盤容量。
2.磁盤陣列的工作原理
利用RAID技術(shù)不僅可以增大存儲(chǔ)容量,提高數(shù)據(jù)傳輸速率,同時(shí)采取冗余信息的方式提供了容錯(cuò)機(jī)制,提高了數(shù)據(jù)存儲(chǔ)的可靠性。
實(shí)現(xiàn)RAID可用兩種方法,一種是硬件RAID,用專門的控制器RAID卡來完成;另一種是軟RAID,用軟件的方法來實(shí)現(xiàn)。磁盤陣列主要用到以下幾種技術(shù):
(1)條帶化存儲(chǔ)
RAID通過條帶化存儲(chǔ)和奇偶校驗(yàn)兩個(gè)措施來實(shí)現(xiàn)其冗余和容錯(cuò)的目標(biāo)。條帶化存儲(chǔ)可以以一次寫入一個(gè)數(shù)據(jù)塊的方式將文件寫入多個(gè)磁盤。條帶化存儲(chǔ)技術(shù)將數(shù)據(jù)分開寫入多個(gè)驅(qū)動(dòng)器,從而提高數(shù)據(jù)傳輸速率并縮短磁盤處理總時(shí)間。
(2)奇偶校驗(yàn)
奇偶校驗(yàn)通過對所有數(shù)據(jù)進(jìn)行冗余校驗(yàn)實(shí)現(xiàn)確保數(shù)據(jù)的有效性。利用奇偶校驗(yàn),當(dāng)RAID系統(tǒng)的一個(gè)磁盤發(fā)生故障時(shí),其它磁盤能夠重建該故障磁盤。
(3)磁盤鏡像
鏡像是將數(shù)據(jù)同時(shí)寫入兩個(gè)驅(qū)動(dòng)器的技術(shù),如果一個(gè)磁盤發(fā)生故障,鏡像磁盤將接替它進(jìn)行運(yùn)行。
(4)奇偶校驗(yàn)
異或(XOR)是進(jìn)行奇偶校驗(yàn)的一種方法,從每個(gè)磁盤中取出一位(0和1)并相加。如果和為偶數(shù),則奇偶為被置為0;如果和為奇數(shù),則奇偶位被置為1。根據(jù)RAID等級,奇偶校驗(yàn)即可保存到一個(gè)磁盤上,也可分配到所有磁盤上。
3.磁盤陣列級別
目前業(yè)界公認(rèn)的有RAID0~RAID7等數(shù)個(gè)等級規(guī)范,它們的側(cè)重點(diǎn)各有不同。每個(gè)RAID等級分別針對速度、保護(hù)或兩者的結(jié)合而設(shè)計(jì),RAID等級包括:
RAID 0 ——數(shù)據(jù)條帶化存儲(chǔ)陣列
RAID 1 ——鏡像磁盤陣列
RAID 2 ——并行陣列,漢明碼
RAID 3 ——帶奇偶校驗(yàn)的并行陣列
RAID 4 ——帶專用奇偶校驗(yàn)驅(qū)動(dòng)器的磁盤陣列
RAID 5——磁盤陣列,所有驅(qū)動(dòng)器均包括奇偶校驗(yàn)
RAID 6 ——帶有兩種分布存儲(chǔ)的奇偶校驗(yàn)碼的磁盤陣列
RAID 7 ——優(yōu)化的高速數(shù)據(jù)傳送磁盤陣列
RAID5集合了RAID2、RAID3和RAID4的優(yōu)點(diǎn),應(yīng)用最廣泛, RAID6是RAID5的擴(kuò)展,進(jìn)一步增強(qiáng)了數(shù)據(jù)的可靠性,但效率較低,RAID6和RAID7都因成本高昂而用得較少,本文簡要介紹常用的磁盤陣列的技術(shù):RAID0、RAID1、RAID5。
(1)RAID 0
RAID0是無數(shù)據(jù)冗余的存儲(chǔ)空間條帶化,具有成本低、讀寫性能極高、存儲(chǔ)空間利用率高等特點(diǎn),適用于音、視頻信號存儲(chǔ)、臨時(shí)文件的轉(zhuǎn)儲(chǔ)等對速度要求極其嚴(yán)格的特殊應(yīng)用。但由于沒有數(shù)據(jù)冗余,其安全性大大降低,構(gòu)成陣列的任何一塊硬盤的損壞都將帶來災(zāi)難性的數(shù)據(jù)損失。
(2)RAID 1
RAID1是兩塊硬盤數(shù)據(jù)完全鏡像,安全性好,技術(shù)簡單,管理方便,讀寫性能均好。因?yàn)樗且灰粚?yīng)的,所以它無法單塊硬盤擴(kuò)展,要擴(kuò)展,必須同時(shí)對鏡像的雙方進(jìn)行同容量的擴(kuò)展。RAID1冗余方式為了安全起見,實(shí)際上只利用了一半的磁盤容量,數(shù)據(jù)空間浪費(fèi)大。
(3)RAID 5
RAID5是目前應(yīng)用最廣泛的RAID技術(shù)。各塊獨(dú)立硬盤進(jìn)行條帶化分割,相同的條帶區(qū)進(jìn)行奇偶校驗(yàn)(異或運(yùn)算),校驗(yàn)數(shù)據(jù)平均分布在每塊硬盤上。以n塊硬盤構(gòu)建的RAID 5陣列可以有n-1塊硬盤的容量,存儲(chǔ)空間利用率非常高。任何一塊硬盤上的數(shù)據(jù)丟失,均可以通過校驗(yàn)數(shù)據(jù)推算出來。
RAID5提供了冗余性(支持一塊盤掉線后仍然正常運(yùn)行),磁盤空間利用率較高(N-1/N),讀寫速度較快(N-1倍)。由于奇偶校驗(yàn)塊是平均分布在每個(gè)磁盤上的,因此存在著數(shù)據(jù)條帶的順序和校驗(yàn)塊的位置方向的問題,不同的廠家或系統(tǒng)在設(shè)計(jì)RAID5時(shí)有不同的組織方式。RAID5的關(guān)鍵參數(shù)有:
◇盤序——每塊硬盤的組織順序,在拆卸前應(yīng)做好標(biāo)記。
◇塊大小——分割數(shù)據(jù)塊進(jìn)行存儲(chǔ)時(shí)的大小單位,可能為十幾KB到上百KB。
◇組織方式——數(shù)據(jù)塊和奇偶校驗(yàn)塊存放的方式。
◇起始位置——第一個(gè)奇偶校驗(yàn)塊的起始位置。
4.磁盤陣列的常見故障與修復(fù)方法
復(fù)雜的RAID 系統(tǒng)有著特定的容錯(cuò)機(jī)制保護(hù)磁盤數(shù)據(jù),但由于誤操作和硬件故障引起的數(shù)據(jù)丟失還是經(jīng)常發(fā)生。雖然RAID提供了容錯(cuò)功能,如果用戶沒有認(rèn)真地作備份,忽視了RAID潛在危險(xiǎn),當(dāng)RAID故障時(shí)都是一場大的災(zāi)難。
磁盤陣列設(shè)備,在使用過程中,經(jīng)常會(huì)遇到一些常見故障,很多情況下是超出了陣列的冗余能力,這也使得RAID在給我們帶來海量存儲(chǔ)空間的應(yīng)用之外,也帶來了很多難以估計(jì)的數(shù)據(jù)風(fēng)險(xiǎn),這里將重點(diǎn)介紹RAID常見故障及相關(guān)處理方式。
以RAID5為例,常見有三種基本工作狀態(tài),即容錯(cuò),臨界和重建,這三種狀態(tài)定義如下:
(1)容錯(cuò)
即容錯(cuò)陣列狀態(tài)(正常工作),所有硬盤處于激活狀態(tài),陣列具備冗余性,此時(shí)任何一個(gè)硬盤的故障均不會(huì)影響數(shù)據(jù)可用性。
(2)臨界
即無容錯(cuò)陣列狀態(tài)(降級工作),陣列中某個(gè)硬盤單元已經(jīng)失效,陣列中剩下的硬盤均處于激活狀態(tài),但已無法進(jìn)行XOR奇偶數(shù)據(jù)寫入。
(3)重建
即陣列重建/確認(rèn)狀態(tài),一個(gè)空閑硬盤正被合并到陣列中。當(dāng)重建完成后,陣列將回復(fù)到容錯(cuò)狀態(tài)。
4.1 磁盤陣列一般異常處理
以RAID5為例,如果磁盤陣列中某塊磁盤發(fā)生故障,系統(tǒng)會(huì)使其停止運(yùn)轉(zhuǎn),此時(shí)系統(tǒng)的工作效率將會(huì)下降,如果感覺道系統(tǒng)反映速度明顯下降了,就應(yīng)當(dāng)首先檢查磁盤陣列的工作情況。
如果使用的RAID系統(tǒng)支持熱插拔,則可直接將壞硬盤拆下,換上一個(gè)好硬盤即可,系統(tǒng)會(huì)自動(dòng)更新數(shù)據(jù)。如果不支持熱插拔,則需關(guān)機(jī)后更換硬盤,然后開機(jī)。
4.2 硬件陣列的故障原因及修復(fù)方法
(1)磁盤陣列卡出錯(cuò)
磁盤陣列出錯(cuò)的具體原因有陣列卡損壞、陣列卡電池電力耗盡、槽口控制芯片損壞、板載的控制程序出錯(cuò)。當(dāng)發(fā)生陣列卡損壞時(shí),隨意更換新的陣列卡也易造成磁盤ID號紊亂。
(2)操作系統(tǒng)故障
當(dāng)發(fā)生系統(tǒng)故障甚至是系統(tǒng)崩潰時(shí),一些用系統(tǒng)自帶功能(Ms windows,Unix,Linux,Sun solaris等)創(chuàng)建的磁盤陣列或者用第三方軟件(Disk management,Veritas disk management等)組建的磁盤陣列會(huì)發(fā)生數(shù)據(jù)丟失。
(3)磁盤故障
由于管理不善和服務(wù)器相對穩(wěn)定的特性對管理者造成麻痹,發(fā)生超出允許數(shù)量壞硬盤的事故發(fā)生,如Raid-5損壞兩塊硬盤,一旦RAID陣列出現(xiàn)故障,硬件服務(wù)商只能給客戶重新初始化或者REBUILD,這樣客戶數(shù)據(jù)就會(huì)無法挽回。
(4)硬件磁盤陣列故障修復(fù)方法
磁盤陣列中最常見故障是“掉盤”,出現(xiàn)這類故障可以用以下基本方法解決:
檢查硬盤驅(qū)動(dòng)器是否損壞,比如有壞道,如果有壞盤則需更換好盤。
檢查機(jī)殼或背板是否損壞。
檢查 SCSI 電纜或是SATA線纜,如果長時(shí)間使用變軟,可能會(huì)造成接觸不良。
檢查電源,如果電源供電異常,就更換電源。
如果使用的不是同型號同容量的硬盤或不是企業(yè)級的硬盤,則有可能工作不穩(wěn)定或是讀寫有延遲造成掉盤,請更換為同型號和容量得企業(yè)級硬盤。
硬盤固件版本與RAID卡不匹配,造成陣列RAID信息不穩(wěn)定,可通過升級硬盤固件方式解決。
溫度高,散熱不好,造成硬盤控制芯片不穩(wěn)定,解決辦法是加強(qiáng)散熱,例如在硬盤上加裝散熱裝置。
RAID卡本身的問題,卡壞了、卡的驅(qū)動(dòng)或設(shè)置不正確、卡的BIOS沒有刷新等,可通過換卡方式解決磁盤故障。
4.3 軟件RAID的故障原因與修復(fù)方法
(1)主硬盤(即安裝操作系統(tǒng)的物理硬盤)發(fā)生故障
主硬盤發(fā)生故障導(dǎo)致系統(tǒng)不能啟動(dòng)時(shí),有兩種處理方法。
第一種是將主硬盤拆下來,將鏡像硬盤上的硬盤ID號改成主硬盤的硬盤ID號,然后將鏡像硬盤安裝到主硬盤所在的位置,重新加電啟動(dòng)操作系統(tǒng)。
第二中是將鏡像磁盤從服務(wù)器硬盤托架上拆下來,安裝到其他的服務(wù)器上,找到鏡像硬盤下的Boot.ini文件,修改文件中的操作系統(tǒng)啟動(dòng)位置參數(shù),保存,變鏡像硬盤為主硬盤,加電實(shí)現(xiàn)系統(tǒng)的啟動(dòng)。系統(tǒng)啟動(dòng)后,應(yīng)及時(shí)更換已壞的硬盤,按照上述方法重新做一次硬盤軟鏡像。
(2)鏡像盤(第二個(gè)物理磁盤)發(fā)生故障
鏡像硬盤發(fā)生故障時(shí),系統(tǒng)可繼續(xù)運(yùn)行。但不能實(shí)現(xiàn)數(shù)據(jù)的冗余備份,應(yīng)及時(shí)對已壞的鏡像磁盤進(jìn)行更換,按照上述方法重新做一次硬盤軟鏡像。
當(dāng)實(shí)現(xiàn)軟件RAID5的磁盤發(fā)生故障時(shí),不影響系統(tǒng)的正常使用和數(shù)據(jù)的安全性。用戶可以更換有故障的磁盤,重新插入新的磁盤,不需要用戶做任何工作,系統(tǒng)可以通過計(jì)算機(jī)自動(dòng)將發(fā)生故障磁盤上的數(shù)據(jù)全部恢復(fù)到新的磁盤上。
正確地判斷出故障情況是非常重要的,它是RAID數(shù)據(jù)恢復(fù)的必要前提??梢酝ㄟ^觀察、詢問和經(jīng)驗(yàn)判斷的方法來分析故障的形成原因及過程,然后再選擇正確的修復(fù)手段。由于磁盤陣列故障往往不是單一原因造成,常規(guī)的故障修復(fù)手段只能恢復(fù)陣列狀態(tài),而不能恢復(fù)陣列數(shù)據(jù),即使讓磁盤陣列恢復(fù)到正常使用狀態(tài),但這些操作往往會(huì)導(dǎo)致陣列底層數(shù)據(jù)的徹底損壞,所以必須根據(jù)具體情況制訂相應(yīng)的解決方案,切不可貿(mào)然實(shí)施陣列修復(fù)。
在修復(fù)過程中,首先要把硬盤組的盤序弄清楚,然后要設(shè)定好RAID 5的組織方式,比如反向動(dòng)態(tài)校驗(yàn),正向校驗(yàn)等,可以根據(jù)磁盤上數(shù)據(jù)塊的大小和內(nèi)容來分析判斷,組織方式確定下來后,起始位置和數(shù)據(jù)塊大小也可以確定,最后可根據(jù)磁盤順序、數(shù)據(jù)塊大小、起始位置來修復(fù)磁盤陣列。
5.結(jié)束語
本文簡單介紹了磁盤陣列的構(gòu)成原理和容錯(cuò)機(jī)制,并對實(shí)際運(yùn)行中磁盤陣列出現(xiàn)故障的原因進(jìn)行了詳細(xì)的分析,并給出了具體故障處理方法,為讀者提供了磁盤陣列出現(xiàn)故障時(shí)解決故障的思路。