- RAID 系統可以提高效能和可用性,但它們不能取代備份,也無法避免實體、邏輯或人為故障。
- 奇怪的噪音、降級狀態、異常緩慢以及奇偶校驗或讀取/寫入錯誤都是 RAID 即將出現問題的明顯跡象。
- 強制重建、在沒有文件的情況下重新排列磁碟,或使用通用修復工具,都可能將原本可控的故障變成徹底的資料遺失。
- 謹慎及時地採取行動,並得到 RAID 恢復專家的支持,可以大大提高挽救資訊的幾率。
RAID 系統因其能夠提升效能和容錯能力,已成為伺服器、NAS 設備和儲存陣列的標配。然而,儘管 RAID 系統能讓人安心,但它並非萬靈藥:管理不善的故障可能導致災難性後果,並在幾分鐘內造成資料遺失。
當 RAID 系統出現異常症狀時,關鍵不在於如何快速進行維修,而在於如何保持謹慎。能夠識別故障跡象並知道哪些操作不可取,決定了最終是只需更換磁碟還是導致資料徹底丟失且無法恢復,即使是專業的實驗室也難以避免。
什麼是 RAID 故障?為什麼它與備份不同?
RAID(獨立磁碟冗餘陣列)將多個磁碟組合在一起,根據所使用的級別,提供更高的可用性、效能和/或冗餘度。從經典的鏡像 RAID 1 到更複雜的配置,例如 RAID 5、RAID 6 或 RAID 10,其理念是即使一個或多個實體磁碟發生故障,系統也能繼續運作。
問題在於,許多人想當然地認為“有了 RAID,就等於有了備份”,這是一個根本性的錯誤。 RAID並不能取代備份:它能防止一個或多個磁碟發生故障(取決於 RAID 等級),但它無法防止邏輯損壞、人為錯誤、勒索軟體攻擊、意外刪除或控制器/伺服器故障。
此外,控制器(包括控制器韌體)分發資料的方式(磁碟順序、條帶大小、奇偶校驗演算法、元資料等)意味著,對陣列的任何錯誤操作都可能破壞其結構,並使恢復變得極其複雜,即使磁碟「看起來」沒有問題。
主要 RAID 等級及其對恢復的影響
不同等級的 RAID 在發生故障時的表現各不相同,這會對資料恢復方案產生重大影響。了解這些差異有助於在出現問題時避免做出冒險的決策。
在 RAID 0 陣列中,資料條帶化分佈在多個磁碟上,沒有奇偶校驗或鏡像。沒有任何形式的冗餘:如果單一磁碟發生故障或效能嚴重下降,邏輯資料將完全遺失,因為每個檔案的關鍵部分都會遺失。此時談論「重建」意義不大;首要任務是嘗試從物理損壞的磁碟中恢復可以恢復的資料。
在 RAID 1 陣列中,磁碟是鏡像的:每個磁碟機都包含資料的完整副本。只要沒有操作錯誤(例如,在不同的系統上初始化其中一個磁碟或將它們混用在不相容的控制器上),這種配置通常對資料恢復非常可靠。
RAID 5 將資料分散在多個硬碟上並計算分散式奇偶校驗,使其能夠承受一個硬碟的故障。但問題在於,當第二個硬碟在重建過程中發生故障時:工作負載會急劇上升,讀取錯誤會接踵而至,陣列可能會在沒有任何警告的情況下崩潰。
RAID 6 的工作原理與 RAID 5 類似,但它增加了一個奇偶校驗位,使其能夠容忍最多兩塊磁碟的故障。作為代價,其架構更加複雜,重建時間更長,任何邏輯或配置錯誤都會進一步增加復原工作的難度。
RAID 10 結合了鏡像和條帶化:鏡像的磁碟對會被「刮擦」。為了便於恢復,磁碟的順序以及鏡像和條帶化之間的關係至關重要;即使所有磁碟物理狀態良好,混用磁碟位置或盲目重建也可能導致陣列損壞。
RAID 開始出現故障的明顯跡象
系統徹底失效之前,通常會留下一系列跡象。學會辨識這些跡象,就能及時阻止故障,防止造成進一步的損失。
最明顯的跡象之一是磁碟發出異響:重複的咔嗒聲、吱吱聲、間歇性的嗡嗡聲,或以前從未出現過的金屬撞擊聲。這些異響通常表示讀寫磁頭或碟片出現機械故障,或是馬達有問題。如果忽略這些異響並繼續強制讀取,硬碟的狀況通常會迅速惡化。
另一個典型跡像是NAS或RAID控制器的管理控制台中出現「降級」、「故障」或「嚴重」訊息。這些訊息表示一個或多個磁碟已被標記為存在問題,陣列在沒有預期冗餘的情況下運作。此時,尤其是在RAID 5中,第二次故障可能就是壓垮駱駝的最後一根稻草。
注意一些不太明顯但同樣危險的症狀,例如表現突然且無法解釋的下降。如果讀寫時間急劇增加,尤其是在存取某些磁碟區或資料夾時,可能是控制器難以讀取某些磁區,或因持續重試而導致系統過載。
系統或控制器日誌經常顯示 I/O 錯誤、奇偶校驗錯誤訊息、「不可恢復的讀取錯誤」、「奇偶校驗失敗」或「偵測到壞條帶」。即使系統仍在運行,讀取/寫入錯誤持續增加也是一個不容忽視的危險信號。
另一個危險訊號是,即使沒有磁碟完全失效,磁碟區也顯示為降級狀態。這通常表示 RAID 元資料或分散式區塊存在邏輯損壞,在這種情況下強制自動重建可能會將損壞傳播到整個陣列。
RAID 中邏輯損壞和隱性問題的症狀
並非所有 RAID 故障都會導致磁碟立即「損壞」。通常情況下,問題在於資料逐漸損壞,這種損壞悄無聲息地發生,直到情況變得難以逆轉。
一個典型的例子是,檔案看似存在,大小和名稱也正確,但卻無法開啟、格式錯誤或顯示為截斷狀態。資料庫無法掛載、虛擬機器無法啟動或檢視器拒絕顯示影像,通常都表示分佈在磁碟上的資料區塊存在不一致。
作業系統或應用程式在某些 RAID 磁碟區上出現局部運作緩慢的情況也很常見,即使 CPU 和記憶體似乎並未承受過大的壓力。如果速度下降集中在同一磁碟區的讀寫操作上,則很可能是資料損壞或磁區不穩定導致的。
另一個危險的症狀是,磁碟更換後啟動的重建過程總是停在同一位置,拋出奇怪的錯誤,或直接將過程標記為失敗。這通常表示來源資料塊已經損壞,控制器無法在新磁碟上產生一致的副本。
有時只有一塊磁碟出現 SMART 警報(例如磁區重新分配、存取時間過長等),但整個 RAID 陣列都會出現異常行為。在這種情況下,一塊存在壞磁區的磁碟可能會影響整個陣列的一致性,尤其是在執行奇偶校驗或重建操作時。
忽略這些警告並繼續照常操作,甚至更糟的是,強制執行驗證、批量備份或自動重建等高強度任務,都可能導致資料損壞擴散,並將損壞的資料區塊覆蓋到正常資料區塊上。一旦發生這種情況,即使是專業的工具也無法保證完全恢復。
控制器、伺服器和主機板的常見故障
這不僅僅是磁碟的問題。 RAID 控制器、主機板,甚至整個伺服器都可能成為薄弱環節,即使磁碟本身沒有問題,也會導致陣列故障。
RAID 控制器(無論是專用硬體還是整合在主機板上)負責決定每個資料區塊的寫入位置、奇偶校驗的計算方式以及磁碟區的組裝方式。故障、韌體損壞或電源突波都可能導致其失效,從而導致陣列消失或顯示為「外部」、「離線」或類似狀態。
對於專用硬體控制器而言,還有一個額外的問題:不同型號和製造商之間幾乎完全不相容。例如,如果某個 Supermicro 控制器發生故障,僅更換一個「類似的」控制器是不夠的:通常情況下,需要使用完全相同的型號,並且韌體版本也相近,才能正確讀取 RAID 元資料。
對於整合式 RAID 解決方案(所謂的「偽 RAID」),例如某些 AMD 或 Intel 晶片組的軟體 RAID,其風險在於更換主機板、重設 BIOS 或遺失 CMOS 配置都可能導致陣列無法運作。在許多桌上型電腦和工作站中,主機板或 CMOS 電池故障會清除 RAID 配置,使各個硬碟成為孤立的單元。
此外,伺服器本身(電源、記憶體、主機板、背板等)也可能因電氣問題、過熱或硬體缺陷而發生故障。在許多情況下,實際結果是 RAID 陣列無法訪問,但實際上,如果將這些磁碟連接到另一台採用適當策略的系統,則可以恢復其中的資料。
更糟的是,系統每次重新啟動或啟動時都必須「重新組裝」RAID陣列。如果在此過程中發生斷電、電壓尖峰或設定檔(例如Linux中的mdadm.conf)錯誤,系統可能會錯誤地組裝陣列、導致陣列不完整,或者根本無法識別陣列,從而使該磁碟區無法使用。
RAID陣列中資料遺失的常見原因
綜上所述,RAID陣列雖然非常有用,但仍有相當大的風險。在這些環境中,資料遺失的主要原因通常是物理因素、邏輯因素和人為因素共同作用的結果。
最明顯的原因是由於磨損、製造缺陷、振動、溫度或衝擊導致一個或多個磁碟發生故障。雖然 RAID 的設計旨在應對其中一些情況,但它並非總能避免附帶損害:一個開始返回損壞扇區的磁碟可能會拖累其相鄰磁碟,尤其是在驗證或重建過程中。
另一個常見問題來源是組裝或重建錯誤。如果系統以錯誤的參數掛載陣列、磁碟順序錯誤、RAID 等級與原始設定不同,或遷移失敗,資料很容易發生錯位。實際上,磁碟區可能顯示為 RAW 格式、需要格式化或顯示不一致的檔案結構。
伺服器故障(主機板、韌體、背板、SAS/SATA 控制器等)也起著至關重要的作用。在絕大多數情況下,當伺服器突然發生故障時,RAID 陣列將無法訪問,系統也無法存取數據,即使資料仍然物理存在於磁碟上。
除此之外,我們還必須考慮人為因素:沒有文件記錄的配置變更、為了「測試」而重新排列磁碟、在沒有事先備份配置的情況下更新 BIOS、意外刪除磁碟區、在陣列中的磁碟上重新安裝作業系統,或在同一個損壞的 RAID 上還原損壞或不完整的備份。
最後,還有勒索軟體等外部威脅,它們可以加密 RAID 陣列上儲存的資料和磁碟區結構。在這種情況下,復原過程會變得異常複雜:首先必須處理加密問題,然後還要處理 RAID 本身可能存在的內部損壞。
當你的 RAID 開始故障時,千萬不要這樣做
週末伺服器宕機,大家都很焦慮,最常見的反應就是有人試圖臨時修復。這可以理解,但許多出於好意的嘗試最終反而讓數據變得更糟。
最危險的做法是在未先分析磁碟實際狀態的情況下強制執行自動重建。如果其中一個磁碟有資料損壞或無法讀取的磁區,重建過程會將垃圾資料與正常資料混合複製,直到磁碟區的結構完全被破壞。
另一個常見的錯誤是在不清楚哪個硬碟實際損壞或沒有記錄每個硬碟的原始位置的情況下隨意更換硬碟。在不同硬碟位元之間移動硬碟、在不同的控制器之間混用硬碟,或在沒有計劃的情況下一次更換多個硬碟,都可能導致控制器混亂,進而導致 RAID 陣列遺失其設定資訊。
直接在出現損壞跡象的 RAID 磁碟區上執行 Windows 上的 CHKDSK 或 Linux 上的 fsck 等工具也非常危險。這些工具會嘗試基於可能已損壞的表來「修復」檔案結構,而它們的修復通常涉及刪除條目、重新定位資料塊和重寫元資料。在已經受到攻擊的環境中,這可能會導致數千個檔案永久遺失。
同樣糟糕的是依賴那些號稱「自動設定任何RAID」的通用RAID恢復軟體。許多此類工具只是表面上運行,假定使用標準的條帶化、偏移和奇偶校驗模式,但這些模式並非總是成立。誤用此類軟體可能會覆蓋關鍵磁區,甚至使磁碟狀況比最初安裝時更差。
最後,重複重啟伺服器、斷電重啟NAS,或在效能下降的RAID陣列或存在奇偶校驗錯誤的陣列上繼續正常運行,只會進一步損壞磁碟,重新分配更多磁區,並擴散資料損壞。在出現第一個嚴重問題後,寫入操作越多,專家們可操作的空間就越小。
偵測到可能的 RAID 故障時應採取的謹慎步驟
面對任何嚴重症狀(例如噪音、狀態降級、奇偶校驗錯誤、運行速度極慢、重建失敗等),最明智的做法是放慢速度,按部就班地進行操作。現在不寫入或更改的內容,以後或許可以挽救。
首先,立即停止對陣列的所有寫入操作:不要複製數據,不要建立新的虛擬機,不要進行批量更新。如果磁碟區仍然可以訪問,最好將其掛載為唯讀(如果系統允許)。
接下來,建議盡可能詳細地記錄當前狀態:BIOS 或 NAS 介面的螢幕截圖、磁碟清單及其實體位置、序號、連接的連接埠、日誌中出現的特定錯誤訊息等等。這些資訊對於任何恢復實驗室在重現原始場景時都至關重要。
如果 RAID 陣列無法掛載或伺服器無法啟動,則一種技術解決方案是移除磁碟,並將它們連接到另一台計算機,對每個磁碟建立逐扇區的取證副本。這些以唯讀模式建立的副本,可讓您在後續操作中建立複製盤,而不會對原始磁碟造成進一步損壞。
憑藉先進的知識、專用工具和受控環境,可以嘗試從這些克隆磁碟中邏輯地重建陣列,推斷磁碟順序、條帶大小、奇偶校驗模式、偏移量和元資料。然而,這是一項精細的逆向工程任務:任何涉及隨機參數變更的試誤操作都可能導致對資料的誤解。
對於大多數企業和關鍵環境而言,最穩健的做法是盡快聯繫專業的 RAID 資料復原服務機構,並遵循他們的初步指導。恢復成功率通常與送至實驗室之前嘗試恢復的失敗次數密切相關。
專業 RAID 復原實驗室的工作原理
專門處理 RAID 環境資料復原的專業服務公司,將對硬體和檔案系統的深入了解,與專有工具和嚴格的流程結合。一般來說,這就是他們在接到 RAID 故障案例時通常會採取的措施。
第一步是對每塊硬碟進行單獨診斷:檢查硬碟的機械、電子和邏輯狀態,識別壞扇區,檢查SMART表,並評估短期故障風險。如果任何硬碟有物理損壞,則優先在無塵室中處理。
接下來,對所有涉及的磁碟建立取證克隆。與直接操作原始磁碟不同,這裡採用逐扇區複製的方式,並使用允許跳過嚴重損壞磁區或使用安全模式重試的工具。這樣做的目的是為了在必要時恢復到先前的步驟,從而保留原始狀態。
複製完成後,需要手動對 RAID 進行邏輯重建:識別原始控制器的等級(0、1、5、6、10 等)、磁碟順序、條帶大小、偏移量、奇偶校驗演算法以及任何其他特性。通常,即使沒有建立該磁碟區的相同控制器或 NAS,也可以重建該磁碟區。
一旦重建的虛擬磁碟區看起來協調一致,就會根據需要修復檔案系統:NTFS、ReFS、ext4、XFS、Btrfs、ZFS、VMFS 等。這項工作類似於外科醫生的手術:修復結構,重建 inode 表、MFT、超級塊或日誌,始終力求將改動降到最低。
最後,數據被提取並進行系統驗證。主要資料庫、虛擬機器和關鍵資料夾的一致性已檢查,檔案確認可以正確打開,資料被交付到新的、獨立的儲存媒體上,例如外部硬碟或新的NAS設備,以便客戶在接受恢復結果之前進行審核。
在特別複雜的場景中,例如受勒索軟體影響的 RAID、先前重建失敗或已損壞陣列中的虛擬卷,解密技術、取證分析和 RAID 重建會結合起來,但始終遵循同樣的規則:不要對原始資料進行超出絕對必要的操作。
歸根結底,RAID 系統是提高數據可用性的強大工具,但它們仍然容易受到物理、邏輯和人為錯誤的影響。了解它們的弱點、辨識早期預警訊號,以及最重要的是,在故障發生時避免衝動決策,才是真正區分小驚小怪和資料災難的關鍵。
