呂秀鑒
摘要:RAID0陣列作為第一種也是最常見的一種磁盤陣列類型被大量的服務器和個人機作為提升系統存儲性能的一種廉價解決方式而普遍使用。但是由于RAID0陣列自身的磁盤組織方式,使得這種陣列也成為了所有RAID陣列最容易出現故障,且故障后數據最容易遭到破壞的一種陣列形式。本文在分析RAID0陣列組織形式的基礎上,提出了針對RAID0陣列數據進行恢復重組的方法。
關鍵詞:數據恢復;RAID0;冗余陣列;數據重組
中圖分類號:TP311 文獻標識碼:A 文章編號:1007-9416(2018)11-0188-01
對于RAID0陣列來說,它是最早的一種RAID類型,陣列由多塊硬盤組成,通過陣列控制器讀寫數據,數據被分成大小一樣的條塊,按照盤序依次均勻寫入每塊硬盤相對應的帶區,循環往復。它可以較低的成本提供高于一般硬盤的存儲容量和數據讀寫速率。但RAID0陣列不提供冗余校驗功能,所以陣列中只要有一塊硬盤出現故障,即造成整個陣列數據損壞,無法完整讀出。
對于RAID0的數據恢復來說,由于陣列已經失效,無法正常讀出,所以只能把硬盤從陣列控制器上斷開,作為單一硬盤逐個取出,排除可能存在的物理故障。然后對硬盤依次做鏡像,并對鏡像文件進行分析,確定RAID陣列控制參數:RAID組織方式、起始位置、塊大小、盤序。最后使用專業RAID數據重組工具軟件對磁盤鏡像進行重組,嘗試讀出陣列數據。我們以一個由3塊硬盤組成的RAID0陣列為例,具體分析思路分以下幾步:
1 確認硬盤上RAID0數據塊的起始位置扇區
我們分析RAID0數據塊的起始位置,就是要找到由多個硬盤組成的邏輯卷的起始位置。一般來說,由陣列卡組成的硬RAID陣列從每個硬盤開始位置第一個扇區即是陣列數據,但由操作系統組建的軟RAID一般都不會從硬盤的起始位置第一個扇區開始記錄陣列數據。所以針對不同的情況,首先要分析每塊硬盤的0號扇區,進行比較。如果是硬RAID陣列硬盤的話,每塊硬盤里0號扇區的內容是不一樣的,我們可以初步確定RAID陣列數據塊的起始位置就在每塊硬盤的0號扇區;如果是軟RAID陣列硬盤的話,會發現每塊硬盤的0號扇區的內容是一樣的,那么這些一樣的內容肯定不屬于RAID陣列數據,RAID0數據塊會在相對靠后的位置存在。所以起始位置判斷的依據就是磁盤分區結構。以最常見的DOS分區結構為例,0扇區的MBR(主引導記錄)和每個分區的DBR(操作系統引導記錄)都是用作分析起始位置的判斷依據。MBR和DBR這類分區結構扇區都屬于引導扇區,有著不同于普通扇區的結構標記,即扇區結束位置的第510和511字節的數據是固定組合十六進制數據“55AA”。所以我們可以在分析階段從0扇區開始查找符合位置要求的十六進制數值“55AA”,從而找出陣列的MBR和DBR(硬RAID只存在DBR)。
在服務器陣列中,采用NTFS文件系統的比較多。如果我們通過查找“55AA”的方法直接在陣列中某塊硬盤的0號扇區找到了NTFS文件系統的 DBR的話,基本上就可以判斷陣列數據起始位置就是每塊硬盤的0號扇區了。如果沒有,而是在0號扇區或稍后的位置找到了MBR,則要分析MBR中所標出的DPT分區表信息。我們可以從DPT分區表項中讀出分區類型和分區開始位置等重要信息,以當前圖中偏移地址0x01c2處取值為“42”,代表當前分區為活動分區類型;偏移地址0x01c6處取值為0x0000003F,代表當前分區的起始位置偏移地址為63扇區。我們從發現MBR的0號扇區位置開始加上這個參數63,就可以在硬盤上找到DBR的位置,也就是陣列數據起始的位置扇區號是0+63=63號扇區。
2 分析RAID數據塊的大小
由于數據在RAID0陣列上是以數據塊的方式均勻分布存儲在每一塊硬盤上,所以我們在重組陣列數據時,確定數據塊的大小是非常必要的。一般我們通過由陣列構造的 NTFS卷中的一個重要存儲結構元文件$MFT(主文件表)來進行判斷。$MFT中的文件記錄項以兩個扇區為一個文件記錄的存儲單位,我們可以通過分別在每個硬盤上查找文件記錄項的開始標記十六進制數值“46494c45”來定位$MFT文件記錄的位置。在相同的扇區地址上分別比較不同硬盤上文件記錄中記錄號之間的差值,就可以推算出在一個數據塊內包含的文件記錄個數,進而推算出數據塊的大小。例如我們分別在每塊硬盤的41791號扇區處找到了$MFT文件記錄,則我們可以查看到文件記錄號分別為0x000000c0,0x00000080,0x00000100,十進制的數值分別為192,128,256。通過計算這三個數字間的等差值,我們可以推算出每個數據塊存儲了64個文件記錄,每個文件記錄占用2個扇區的存儲空間,就是每個數據塊一共有64×2=128個扇區。
3 確認硬盤盤序
盤序關乎著組成陣列的所有硬盤的讀寫順序,是重組RAID0陣列數據的另一個關鍵參數。盤序的判斷思路分為兩步,首先通過查找起始位置扇區的操作,我們可以判斷由陣列構造的 NTFS卷中DBR的位置,那么存儲著DBR扇區的這塊硬盤就是NTFS卷的第一個扇區,也是陣列起始位置,也就是第一塊被RAID0讀寫的硬盤,它是陣列中的第一塊盤。其次通過判斷數據塊大小的操作,我們可以找到每個硬盤在相同扇區位置上文件記錄號的差異,以上例中我們分別在每塊硬盤的41791號扇區處找到的$MFT文件記錄號分別為192,128,256,(128﹤192﹤256)則可以判斷第②塊盤為1號盤,第①塊盤為2號盤,第③塊盤為3號盤。至此每塊硬盤的盤序得以確定。
4 重組RAID0陣列數據
在確定了起始位置在63號扇區、塊大小為64KB、盤序為②①③,這幾個參數之后,我們可以利用一些專用軟件來將這幾塊硬盤的鏡像進行重組,建立虛擬RAID卷,嘗試讀出陣列數據。常用的工具軟件有WinHex,R-Studio等,我們以WinHex為例,選擇Specialist菜單中的Reconstruct RAID System工具項,在彈出的窗口中按照盤序依次將鏡像文件載入窗口列表;設置Header size in sectors(起始扇區)取值為63;選擇RAID類型為Level0;設置Stripe size in sectors(塊大小)取值為128扇區;然后點擊確認按鈕,即可看到重組之后的虛擬RAID卷,并導出分區數據。
RAID0陣列作為一種常見的磁盤陣列組織方式,在日常應用中由于硬件故障或操作者處理不當等因素,極容易出現陣列的失效、數據無法讀出。作為數據恢復技術的初學者,可能接觸磁盤陣列恢復業務的機會不是很多,不過只要我們依據上述恢復步驟,認真分析,不斷嘗試,總是可以將用戶的數據恢復回來的。
在基于工作過程的數據恢復技術課程改革與研究中,我們向行業專家、企業一線數據恢復從業者求教;對數據恢復工程師實施職業分析;圍繞工作任務的需要進行了課程教學內容的選擇,在傳統軟件恢復方法的教學內容基礎之上,增加了磁盤陣列數據重組和數據提取等實際生產中經常遇到的典型工作場景,以期促進學生職業興趣發展和能力的拓展以及就業后能很快適應工作的需要。
參考文獻
[1]武春嶺,何倩.數據恢復技術[M].高等教育出版社,2016(7).
Research on RAID0 Data Recovery Method
LV Xiu-jian
(Shi Jia Zhuang University of Applied Technology,Shijiazhuang Hebei? 050081)
Abstract:RAID0, as the first and most common type redundant arrays of disks, is widely used by a large number of servers and personal computers as a cheap solution to improve the storage performance of the system. However, due to the RAID 0 's own disk organization, RAID 0? has become the most vulnerable to failure of all RAID , and the data is most vulnerable to damage after failure. Based on the analysis of RAID0 organization form, this paper proposes a method of recovery and reorganization for RAID0 data.
Key words:data recovery;RAID0;redundant arrays;data reorganization