服務(wù)器、存 儲維修/維保及RAID數據恢複 數據庫修複 機房維保

RAID0陣列數據恢複方法

  • 時間:2020-10-26
  • 訪問量:94
  • 關于RAID(磁盤陣列),大家可(kě)能(néng)有(yǒu)些陌生。在個人電(diàn)腦上,RAID用(yòng)的不多(duō),但工(gōng)作(zuò)站,或服務(wù)器常用(yòng)到RAID(磁盤陣列),例如RAID-0  RAID-1  RAID-5 RAID-10 等。

  • 對于RAID0的分(fēn)析主要在于重組磁盤,重組磁盤就需要确定盤序,塊大小(xiǎo),判斷磁盤加入陣列的起始位置等。确定了上述參數後就可(kě)以重組陣列達到恢複數據的目的了。
  • 分(fēn)析一下RAID0。希望能(néng)給大家帶來一些啓示。

  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法

  • 這個是我在windows 2003下虛拟出的三塊磁盤,每塊磁盤的大小(xiǎo)都是200M三塊磁盤做了一個RAID0  ,采用(yòng)NTFS格式化。上圖顯示的三塊磁盤的0号扇區(qū),這個扇區(qū)的主要作(zuò)用(yòng)是一個DOS分(fēn)區(qū)結構。和基本磁盤的MBR有(yǒu)點類似。這個扇區(qū)也有(yǒu)一個分(fēn)區(qū)表,但是隻占用(yòng)了一個分(fēn)區(qū)表項。。大家看下圖
  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法

  • 分(fēn)區(qū)類型是 0x42 起始于63号扇區(qū),大小(xiǎo)是0x9A 20 06 00 也就是401562個扇區(qū)。而磁盤的總扇區(qū)數是 409600個扇區(qū)。因為(wèi)在windows系統中(zhōng)采用(yòng)邏輯磁盤管理(lǐ)也就是LDM。
  • LDM支持JBOD, RAID0, RAID1和RAID5。要組成這些陣列類型,我們需要把我們的磁盤轉換成動态磁盤,而LDM就是管理(lǐ)動态磁盤的。動态磁盤有(yǒu)兩個重要的部分(fēn),一個是LDM分(fēn)區(qū)區(qū)域,它占用(yòng)磁盤的絕大部分(fēn),另一個就是動态磁盤的最後1MB,分(fēn)配給LDM數據庫。LDM數據庫包含分(fēn)區(qū)區(qū)域的分(fēn)配情況。所以在把基本磁盤轉換成動态磁盤時需要在磁盤最後有(yǒu)一定的剩餘空間。我們上圖顯示的類似基本磁盤的分(fēn)區(qū)表部分(fēn)我們管它叫軟分(fēn)區(qū),分(fēn)區(qū)類型就是0x42 而基本磁盤的分(fēn)區(qū)我們就叫硬分(fēn)區(qū)吧。好了,現在我們對組成RAID的磁盤有(yǒu)了一個基本的了解了,我們來總結一下

  • 1.成員盤都是動态磁盤,windows操作(zuò)系統有(yǒu)個叫LDM的管理(lǐ)它們。
  • 2.LDM會在每個成員盤的最後1MB建立一個數據庫,記錄一些動态盤的信息,而且這個數據庫還有(yǒu)一個作(zuò)用(yòng),當我們的成員盤被卸載了加載到其他(tā)機器上去之後,如果那台機器采用(yòng)的和原來的機器一樣的RAID那麽我們的成員盤又(yòu)可(kě)以組建成原來的RAID了,而數據不會丢失,這就方便了移植。
  • 3.LDM會在動态磁盤的0号扇區(qū)建立一個如上圖所示的軟分(fēn)區(qū)表。
  • 4.LDM數據庫中(zhōng)包含四個區(qū)域,一個叫做LDM私有(yǒu)頭,一個内容表區(qū)域,一個數據庫記錄區(qū)和一個事物(wù)處理(lǐ)日志(zhì)區(qū)。
  • 5.軟分(fēn)區(qū)描述的扇區(qū)總數并沒有(yǒu)包括最後那1MB的LDM數據庫。
  • 好的,我們先看看是不是磁盤的最後1MB是數據庫,看看數據庫都寫了些什麽。1MB就是2048個扇區(qū),我們的磁盤有(yǒu)409600個扇區(qū)減去2048。 那麽我們的數據庫的起始扇區(qū)就是407553号扇區(qū)了。
  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法

  • 看到了嗎,真的是有(yǒu)東西簽名(míng)标志(zhì) 54 4F 43 4C 4F 43 4B 具(jù)體(tǐ)的數據庫分(fēn)析我們就不做了,太費時了,如果大家有(yǒu)興趣可(kě)以加我共同讨論。這裏我隻是想讓大家知道在RAID0中(zhōng)的各成員盤的具(jù)體(tǐ)結構是怎樣的,寫入的各部分(fēn)數據有(yǒu)什麽作(zuò)用(yòng)。我們回到0号扇區(qū),找到那個軟分(fēn)區(qū)表,分(fēn)區(qū)表顯示分(fēn)區(qū)的起始扇區(qū)是63号扇區(qū),那麽也就是說磁盤加入陣列的起始扇區(qū)是63号扇區(qū)。通過搜索發現前面的63個扇區(qū)除了0号扇區(qū)有(yǒu)一個軟分(fēn)區(qū)表6号扇區(qū)有(yǒu)一些東西其他(tā)扇區(qū)都是零。好的,我們轉到63号扇區(qū)看看。
  • 1 确定盤序:
  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法

  • 看到了嗎 ,硬盤1的63号扇區(qū)是DBR 而其他(tā)兩塊盤的63号扇區(qū)不是DBR而是數據,這樣我們就能(néng)知道硬盤1就是這個RAID0的第一塊盤了。至于剩下的兩塊盤的盤序就通過其他(tā)方法确認了,而且我們在這裏知道了硬盤1是RAID0的第一塊盤,那麽硬盤2和硬盤3肯定就是相鄰的了。我們可(kě)以通過尋找硬盤2和硬盤3的MFT來确認他(tā)們的盤序和塊大小(xiǎo)。這個方法不錯。但是很(hěn)遺憾,我做的這個RAID居然找不到合适的MFT。也就是說通過比較MFT來判斷盤序和塊大小(xiǎo)的方法就沒戲了。那我們怎麽辦(bàn),馬老師貌似沒有(yǒu)給出方法了。看來我們的自己尋找解決的方法了。因為(wèi)此RAID采用(yòng)的是NTFS文(wén)件系統,那麽我們能(néng)不能(néng)根據對NTFS文(wén)件系統的特點,找找看能(néng)不能(néng)通過其他(tā)的一些特征來确定盤序和塊大小(xiǎo)呢(ne)?我們通過分(fēn)析DBR得出:
  • 1,每簇扇區(qū)數 1 個;
  • 2,$MFT起始簇号 401408這裏就是401408号扇區(qū)了;
  • 3,$MFTMIRR起始簇号602111這裏也就是602111号扇區(qū)了;
  • 4,分(fēn)區(qū)總扇區(qū)數1204223個扇區(qū);
  • 我們就想了,硬盤1已經确定是RAID0的第一塊盤了,$MFTMIRR的起始扇區(qū)在$MFT的後面。那麽系統就是先向磁盤寫入$MFT然後再寫入$MFTMIRR了。

  • 好的,我們就根據以MFT為(wèi)線(xiàn)索,我們把每塊成員盤的MFT搜索出來,當然就搜索前面幾個MFT項就行了。這裏我就直接給出我搜索出的結果了
  • 硬盤1  在20768号扇區(qū)搜到了第一個MFT項,這塊硬盤一共有(yǒu)3個MFT項分(fēn)别是1号 2号 3号MFT項。
  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法

  • 硬盤2  133823号扇區(qū)搜到了第一個MFT項,這塊硬盤一個找到了從0号MFT項到36号MFT項,我們知道$MFT記錄的0号MFT項到15号MFT項是NTFS文(wén)件系前面16個重要的元文(wén)件16到23号用(yòng)作(zuò)保留。而我們這裏出現了36号MFT項,顯然這個就是文(wén)件的MFT項了。
  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法

  • 硬盤3  200766号扇區(qū)找到了第一個MFT項,這塊硬盤就一個MFT項,是0号MFT

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法


  • 現在我們應該就能(néng)判斷了吧,硬盤2号記錄的是$MFT這個元文(wén)件,而硬盤1和硬盤3記錄的是$MFTMIRR這個元文(wén)件,也就是$MFT這個元文(wén)件前4個MFT項的備份,這個和NTFS系統的描述的一樣。呵呵,看來分(fēn)析對了。。。
  • 我們說了系統先寫入$MFT在寫入$MFTMIRR而硬盤2就是$MFT  硬盤1和硬盤3是$MFTMIRR  而我們前面已經确定硬盤1是RAID的第一塊盤,這裏我想我們就能(néng)判斷出硬盤2就是RAID0的第二塊盤了吧。硬盤3是第三塊盤。而且根據各磁盤上的MFT參考号,我們也能(néng)判斷出,系統先向硬盤1寫入數據,到該寫入$MFT元文(wén)件的時候,就轉到了硬盤2向硬盤2寫入,寫入完成之後又(yòu)轉到了硬盤3開始寫入$MFTMIRR,因為(wèi)硬盤3記錄的MFI參考号是0 接着又(yòu)跳轉到了硬盤1繼續寫入沒有(yǒu)寫完的$MFTMIRR所以硬盤1的MFT參考号是從1号開始的,這樣就形成了一個完整的寫入過程了。。盤序分(fēn)析就出來了。。。
  • 盤序就是 硬盤1 硬盤2 硬盤3
  • 2 确定塊大小(xiǎo)
  • 我們已經确定了盤序,磁盤加入陣列的起始扇區(qū)是63号扇區(qū),而塊大小(xiǎo)是2的整數次冥,也就是隻可(kě)能(néng)是 2 4 8 16 32 64 128等等,那麽就挨個試,如果塊大小(xiǎo)吻合,那麽數據就能(néng)恢複成功。這裏我在選擇塊大小(xiǎo)是128時,數據完美重現了,恢複完成。
  •  

  • 講解服務(wù)器RAID0癱瘓陣列數據恢複方法


    講解服務(wù)器RAID0癱瘓陣列數據恢複方法


    講解服務(wù)器RAID0癱瘓陣列數據恢複方法





推薦案例