【服務(wù)器數(shù)據(jù)恢復(fù)】Raid磁盤陣列常見故障&原因分析

由于raid的特點(diǎn)和優(yōu)勢,磁盤陣列技術(shù)被廣泛應(yīng)用于服務(wù)器和存儲等商用領(lǐng)域。由于用戶基數(shù)大,出現(xiàn)故障的情況也不少。通過這篇文章介紹一下常見的raid磁盤陣列數(shù)故障類型和原因。

故障類型一、磁盤陣列處于降級狀態(tài)時未及時rebuild。
RAID磁盤陣列的數(shù)據(jù)安全冗余是利用部分空余空間實(shí)現(xiàn)的,陣列中有成員盤下線便無法繼續(xù)提供冗余空間。如果此時未能及時更換新磁盤并rebuild整個卷,一旦raid中有其他成員盤離線將會導(dǎo)致整個raid卷無法工作。這類故障是北亞企安數(shù)據(jù)恢復(fù)工作中會經(jīng)常遇到case。
故障類型二、raid控制器故障。
磁盤陣列控制器在充當(dāng)著操作系統(tǒng)與物理硬盤之間的連接紐帶。磁盤陣列中的硬盤數(shù)量、容量大小、raid級別、校驗(yàn)方式等raid信息有的存儲于硬盤,有的存儲于陣列卡或者在二者中都有存儲。如果控制器出現(xiàn)故障,raid信息就無法還原,如果出現(xiàn)這種故障,即使能夠還原raid結(jié)構(gòu)并再次重建raid陣列也無法恢復(fù)數(shù)據(jù)。
故障類型三、固件算法缺陷。
RAID的創(chuàng)建、重建、降級、保護(hù)等功能的實(shí)現(xiàn)依靠的raid固件上的一套非常復(fù)雜的算法,任何復(fù)雜的算法都會有BUG,盡管廠商不會輕易承認(rèn)自家產(chǎn)品固件算法的BUG(有可能自己也不知道)。因?yàn)楣碳惴˙UG,發(fā)生無法解釋的故障可能性肯定是有的。比如在北亞企安接到的數(shù)據(jù)恢復(fù)case中就遇到過早期生產(chǎn)的某品牌服務(wù)器RAID中一塊盤OFFLINE后,故障盤與報(bào)警燈不一致的情況。用戶在更換故障盤進(jìn)行REBUILD時被誤導(dǎo)拔錯盤,導(dǎo)致整個RAID崩潰。

故障類型四、IO通道受阻導(dǎo)致RAID掉盤。
RAID控制器在設(shè)計(jì)時候優(yōu)先考慮的是數(shù)據(jù)的安全性,RAID會盡可能避免將數(shù)據(jù)寫到不穩(wěn)定的存儲介質(zhì)上。當(dāng)控制器與物理盤進(jìn)行IO時,如果時間超過某個閾值或校驗(yàn)關(guān)系不滿足,RAID控制器便會認(rèn)為對應(yīng)的存儲介質(zhì)已不具備持續(xù)穩(wěn)定工作的能力并讓其強(qiáng)制下線,然后通知管理員盡快解決問題。這種設(shè)計(jì)的初衷從技術(shù)上和邏輯上來看沒有問題,但對于如物理連接線路松動,硬盤工作反應(yīng)超時(硬盤還是完好的)等場景來說,控制器無法分辨存儲介質(zhì)是否真的出現(xiàn)物理故障,這種情況下會大概率強(qiáng)制磁盤下線。這類故障發(fā)生概率比較高且無法避免,很多用戶因此類故障質(zhì)疑服務(wù)器廠商。實(shí)際上。越是設(shè)計(jì)安全的RAID控制器,越容易發(fā)生此類故障。
故障類型五、控制器的穩(wěn)定性。
RAID的控制器在ONLINE狀態(tài)下(無離線盤)工作是最穩(wěn)定的。當(dāng)部分硬盤(物理故障或者邏輯故障)離線后控制器便會工作在一個相對不穩(wěn)定的狀態(tài),這也是好多中低端的RAID控制器在有磁盤離線后就表現(xiàn)出讀寫性能下降的原因??刂破鞯牟环€(wěn)定會增加數(shù)據(jù)吞吐時IO滯留的可能性,從而導(dǎo)致上述第四個類型的故障的發(fā)生。中低端的控制器(無高性能處理芯片或者大容量高速緩存)發(fā)生這類故障的概率要高得多。
故障類型六、陣列中硬盤故障。
很多人認(rèn)為磁盤陣列只要在正常工作,陣列中就不會存在有物理故障的硬盤。這個觀點(diǎn)的判斷依據(jù)是一旦raid中有硬盤出現(xiàn)物理故障,陣列控制器就會將故障硬盤踢下線。然而實(shí)際上并非如此。
RAID很少會讀取到物理硬盤的所有磁盤空間,同一時間更是不可能。部分情況下,硬盤會在RAID沒有讀取到的區(qū)域或者RAID以前讀取過的區(qū)域出現(xiàn)壞道,這類壞道因?yàn)闆]有被RAID讀過,所以在控制器來看還是好的。
出現(xiàn)這種情況后可能會產(chǎn)生的直接后果就是在REBUILD過程中,當(dāng)一塊物理硬盤離線后,在進(jìn)行REBUILD過程中,如果其他硬盤存在這類沒有被RAID讀取到的壞道,由于REBUILD是對全盤做全面同步,在REBUILD過程中就一定會讀寫到這類之前沒有被RAID讀取到的壞道。這時REBUILD還沒完成,新盤無法上線,又在舊盤發(fā)現(xiàn)了壞道,RAID極有可能將發(fā)現(xiàn)壞道的舊盤踢出,這樣就會導(dǎo)致RAID故障。
故障類型七、人為誤操作。
人為誤操作導(dǎo)致的RAID故障,例如:誤拔了RAID里的硬盤、更換壞盤不及時、拔出硬盤更換或者進(jìn)行其他操作后忘記硬盤在RAID中的順序、不小心刪除了原RAID配置等。
