1. 程式人生 > >Raid磁盤陣列數系列問題答疑

Raid磁盤陣列數系列問題答疑

判斷 允許 調整 raid10 重要 讀取 創建 jbod 災難

[問題]

?——?在斷電情況下,把已經配置好的RAID中的硬盤盤位互換後,再次開機會不會影響原先存儲數據的完整性,是否會導致數據災難?
?

[回答]

——??這個要取決於RAID控制器的固件設計,一個最重要的根本是,RAID信息(RAID元數據)記錄在什麽地方?可以記錄RAID信息的地方只能有RAID控制器上的存儲單元和硬盤上。
?——?如果RAID信息只記錄在控制器上,那麽配置好的RAID裏硬盤盤位互換後,數據一定會受到影響。這種記錄方式使用較少,目前只有部分低端控制器采用。
??——RAID信息只記錄在硬盤上的情況也不多見,如果RAID信息只記錄在硬盤上,控制器便不具備記錄RAID配置的能力,完全依賴於硬盤,安全性也較低。如果是這種情況,更換RAID盤位並不會導致數據災難。

??——目前大多數控制器的實現是將RAID信息同時記錄在控制器與硬盤上,這樣,當兩者中有一出故障,可通過另一份COPY還原。同時,可對RAID信息的正確性進行校驗,通過控制器上存儲的RAID信息為主信息,當RAID裏的信息與硬盤裏的信息不相同時,需要手工進行判斷處理(比如強制上線)。此類情況更換硬盤盤位後,要麽自動調整過來,不影響數據,要麽需要手工確認一下。只要正確操作,便不會有數據災難。
??——但必須指出的是,更換RAID盤位的操作還是相當危險的,安全級別越高的RAID控制器越敏感,更換盤位導致的一點點接口松動都有可能導致硬盤下線,從而影響整個RAID卷。更換RAID盤位操作,僅僅適用於遷移到另外的服務器或磁盤陣列控制下,但遷移之前,盡可能還是要完整備份數據,以防意外。


[問題]

——??RAID有不同的組織方案,JBOD,RAID0,RAID1,RAID5,RAID6,RAID10,RAID01,ADG等,這些方案都適用於什麽環境?
?

[回答]

?——?RAID要解決的問題主要有3個:容量合並、IO性能、存儲安全
??——JBOD是低端的RAID結構,有時候等同於WINDOWS的跨區卷,是將1塊或幾塊硬盤首尾相接連起來的結構,只為解決硬盤擴容問題,安全性頭差,IO性能與單盤無異,適用於安全級別與IO性能不高的容量組合環境。可以由任意多塊硬盤組成。
??——RAID0實現容量合並,IO性能提高的目的,尤其IO性能是RAID0的主要特點,但安全性極差,比單盤還容易損壞,且設計成本很低,適合需要快速IO、容量大、但數據並不重要的環境。比如中轉性的數據服務器,流媒體點播系統、或要求不高的監控系統。可以由任意多塊硬盤組成。

??——RAID1安全突出存儲安全,提供了所有RAID級別中最高的安全系數,當然也浪費了空間,增加了成本,同時IO性能並無明顯提升,適合數據量不大,但極其重要的使用環境。通常只適合兩塊盤。
??——RAID5是一種中和的RAID結構,可以提供大容量空間,同時如果控制器性能足夠好,可以提供高於單盤的IO性能(尤其是讀性能),同時提供允許一塊硬盤損壞的安全保護,因多方面因素均有考慮,所以使用較廣,缺點是最小需要3塊硬盤組成,同時RAID5的算法復雜,需要有強勁的處理單元與高速緩沖才能更好的發揮RAID5的作用,導致成本很高。低端的RAID5實際上可能更容易出問題,性能不如單盤。適用於一般型企業的大多數存儲要求。可多塊硬盤構建。?
??——RAID10與RAID01是結合RAID0與RAID1的一種結構,通常建議做RAID10(見以一起數據災難談RAID0+1及RAID1+0),標準的RAID10適合4塊以上的偶數塊硬盤組建,安全如RAID1,速度如RAID0,但會浪費50%的磁盤空間,處理器設計也較為簡單,大型企業數據存儲,如空間要求不大,RAID10是首選。
?——?RAID6與ADG是RAID5的升級結構,支持兩塊硬盤同時離線,使得安全性更高,但算法過於復雜,導致IO讀寫命中率很低,IO性能很低,即使有高速的處理器與高速緩沖,仍然不見得是最好的組織結構,造價又很高,通常使用很少。但如果硬盤很多,數據量很大,RAID5的安全級別又不夠高,RAID10又浪費太多,RAID6或ADG是最適合的了。


[數據恢復問題]

——RAID5當一塊硬盤離線後,處理降級狀態,這時候正常的建議是馬上更換硬盤做REBUILD以恢復完整的數據狀態,如果有熱備盤的話,就會自動做REBUILD,這樣做合適嗎?
?

[回答]

____一組RAID卷在工作很長時間以後也很少會讀到物理硬盤的所有磁盤空間,同一時間更是不可能。部分情況下,硬盤會在沒有讀到的區域或者以前讀取是良好的區域產生壞道,這類壞道因為沒有讀寫過,所以在控制器看來是好的。產生這種壞磁道的最直接危害是在REBUILD過程中。當一塊物理硬盤離線後,通常所有的技術人員及官方資料都會寫盡快做REBUILD,但如果其他硬盤存在這類平常不知的壞磁道,REBUILD又都是對全盤做全面同步,就一定會讀寫到那些壞道,這時候REBUILD沒完成,新盤無法上線,因舊盤裏又發現了壞道,便會導致RAID又多出一些下線的硬盤,這樣就可能會導致RAID出現故障,無法自行進行數據恢復了。
??——所以,當RAID處理降級狀態時,如重要數據容量不大,建議先做備份,當然這種備份應該是異機的,不可備份至當前已降級的RAID中。
?——?如果在REBUILD當中出現另外硬盤離線的情況導致RAID卷OFFLINE,切不可重建RAID,如確定後離線的硬盤,可通過強制上線恢復數據(有些控制器沒有選項,就沒辦法了),也可咨詢數據恢復公司進行處理。


[問題]

??——當RAID損壞,出現數據丟失的情況下,能否通過重建RAID結構來恢復raid數據?
??磁盤陣列環境出現的數據災難中RAID信息丟失的情況占很大比例,很多工程師都有過這樣的經歷:按原來的RAID結構重建一下RAID,數據就恢復出來了。這種方式可行嗎?
?

[回答]

??——RAID的重建大致有幾種方式:只創建RAID信息(RAID元信息)、創建RAID時只重新生成校驗(只做同步)、創建RAID時填充初始化。
??——如果重建的結構與原先的結構不相同(涉及控制器固件、RAID級別、塊大小、校驗方式、盤序),重建好的RAID LOGICAL DRIVER一定和原先是不一樣的,這樣貿然加載文件系統,會破壞文件系統結構,導致數據丟失。
??——以下假設重建的結構與原先的結構是相同的:
??——如果控制器的重建方法是只創建RAID信息,那要看之前的RAID結構是正常的還是降級的,如果是降過級的(已有硬盤下過線),重建好後,因數據是由新數據與部分舊數據組合而成的,文件系統會破壞,且不可逆向恢復。如果之前的RAID結構是完好的,重建RAID不會影響數據,可以將原來的數據完全原樣的恢復出來。
??——如果控制器的重建方法是創建RAID重新生成校驗(即使是後臺的),和上面的情況相同,如果硬盤之前就有離線的,這樣的重建會破壞數據的一致性。如果之前的RAID狀態是ONLINE(GOOD)的,那麽這樣的重建不會影響數據。
??——如果控制器的重建方法是填充數據重建(通常是清0),那無論如何都會破壞數據。
??——這樣看來,當RAID損壞後重建RAID可以恢復數據的前提是:控制器的設計是不破壞數據的,而且之前的RAID狀態是良好的,同時重建的結構和原先的要完全一致。除此之外的重建都有數據風險。
?——?實際上,多數RAID損壞並不是從良好 一下子到癱瘓的,大多數會通過降級這一步,所以實際上強行重建文件系統無論如何都不是很好的做法,只是降級到癱瘓這段時間內如果數據寫入不多,可能重建後修復文件系統只影星降級到癱瘓這段時間內做的改動。
??——早期很多基於SCSI的磁盤陣列都會在重建時至少清0前面部分扇區(比如1M,10M等)。目前基於LSI的SAS控制器市場占有率很高,其控制器在重建時往往不會清除數據,但會在後臺重新同步數據,也是有風險的。

Raid磁盤陣列數系列問題答疑