數據恢復與數據結構

 
說到數據恢復,我們就不能不提到硬盤的數據結構、文件的存儲原理,甚至操作系統的啓動流程,這些

是你在恢復硬盤數據時不得不利用的基本知識。即使你不需要恢復數據,理解了這些知識(即使只是稍

微多知道一些),對於你平時的電腦操作和應用也是很有幫助的。

  我們就從硬盤的數據結構談起吧……

  硬盤數據結構

  初買來一塊硬盤,我們是沒有辦法使用的,你需要將它分區、格式化,然後再安裝上操作系統纔可以

使用。就拿我們一直沿用到現在的Win9x/Me系列來說,我們一般要將硬盤分成主引導扇區、操作系統引

導扇區、FAT、DIR和Data等五部分(其中只有主引導扇區是唯一的,其它的隨你的分區數的增加而增加

)。

  1.主引導扇區

  主引導扇區位於整個硬盤的0磁道0柱面1扇區,包括硬盤主引導記錄MBR(Main Boot Record)和分

區表DPT(Disk Partition Table)。其中主引導記錄的作用就是檢查分區表是否正確以及確定哪個分區

爲引導分區,並在程序結束時把該分區的啓動程序(也就是操作系統引導扇區)調入內存加以執行。至

於分區表,很多人都知道,以80H或00H爲開始標誌,以55AAH爲結束標誌,共64字節,位於本扇區的最末

端。值得一提的是,MBR是由分區程序(例如DOS 的Fdisk.exe)產生的,不同的操作系統可能這個扇區

是不盡相同。如果你有這個意向也可以自己去編寫一個,只要它能完成前述的任務即可,這也是爲什麼

能實現多系統啓動的原因(說句題外話:正因爲這個主引導記錄容易編寫,所以纔出現了很多的引導區病

毒)。

  2.操作系統引導扇區

OBR(OS Boot Record)即操作系統引導扇區,通常位於硬盤的0磁道1柱面1扇區(這是對於DOS來說的,

對於那些以多重引導方式啓動的系統則位於相應的主分區/擴展分區的第一個扇區),是操作系統可直接

訪問的第一個扇區,它也包括一個引導程序和一個被稱爲BPB(BIOS Parameter Block)的本分區參數記

錄表。其實每個邏輯分區都有一個OBR,其參數視分區的大小、操作系統的類別而有所不同。引導程序的

主要任務是判斷本分區根目錄前兩個文件是否爲操作系統的引導文件(例如MSDOS或者起源於MSDOS的

Win9x/Me 的IO.SYS和MSDOS.SYS)。如是,就把第一個文件讀入內存,並把控制權交予該文件。BPB參數

塊記錄着本分區的起始扇區、結束扇區、文件存儲格式、硬盤介質描述符、根目錄大小、FAT個數、分配

單元(Allocation Unit,以前也稱之爲簇)的大小等重要參數。OBR由高級格式化程序產生(例如DOS

的Format.com)。

  3.文件分配表

  FAT(File Allocation Table)即文件分配表,是DOS/Win9x系統的文件尋址系統,爲了數據安全起見

,FAT一般做兩個,第二FAT爲第一FAT的備份, FAT區緊接在OBR之後,其大小由本分區的大小及文件分配

單元的大小決定。關於FAT的格式歷來有很多選擇,Microsoft 的DOS及Windows採用我們所熟悉的FAT12

、FAT16和FAT32格式,但除此以外並非沒有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell

等都有自己的文件管理方式。

  4.目錄區

  DIR是Directory即根目錄區的簡寫,DIR緊接在第二FAT表之後,只有FAT還不能定位文件在磁盤中的位

置,FAT還必須和DIR配合才能準確定位文件的位置。DIR記錄着每個文件(目錄)的起始單元(這是最重

要的)、文件的屬性等。定位文件位置時,操作系統根據DIR中的起始單元,結合FAT表就可以知道文件

在磁盤的具體位置及大小了。在DIR區之後,纔是真正意義上的數據存儲區,即DATA區。

  5.數據區

  DATA雖然佔據了硬盤的絕大部分空間,但沒有了前面的各部分,它對於我們來說,也只能是一些枯燥

的二進制代碼,沒有任何意義。在這裏有一點要說明的是,我們通常所說的格式化程序(指高級格式化

,例如DOS下的Format程序),並沒有把DATA區的數據清除,只是重寫了FAT表而已,至於分區硬盤,也

只是修改了MBR和OBR,絕大部分的DATA區的數據並沒有被改變,這也是許多硬盤數據能夠得以修復的原

因。但即便如此,如 MBR/OBR/FAT/DIR之一被破壞的話,也足夠咱們那些所謂的DIY老鳥們忙乎半天了…

…需要提醒大家的是,如果你經常整理磁盤,那麼你的數據區的數據可能是連續的,這樣即使

MBR/FAT/DIR全部壞了,我們也可以使用磁盤編輯軟件(比如DOS下的DiskEdit),只要找到一個文件的

起始保存位置,那麼這個文件就有可能被恢復(當然了,這需要一個前提,那就是你沒有覆蓋這個文件

……)。

  硬盤分區方式

  我們平時說到的分區概念,不外乎三種:主分區、擴展分區和邏輯分區。

  主分區是一個比較單純的分區,通常位於硬盤的最前面一塊區域中,構成邏輯C磁盤。在主分區中,

不允許再建立其它邏輯磁盤。

  擴展分區的概念則比較複雜,也是造成分區和邏輯磁盤混淆的主要原因。由於硬盤僅僅爲分區表保留

了64個字節的存儲空間,而每個分區的參數佔據16個字節,故主引導扇區中總計可以存儲4個分區的數據

。操作系統只允許存儲4個分區的數據,如果說邏輯磁盤就是分區,則系統最多隻允許4個邏輯磁盤。對

於具體的應用,4個邏輯磁盤往往不能滿足實際需求。爲了建立更多的邏輯磁盤供操作系統使用,系統引

入了擴展分區的概念。

  所謂擴展分區,嚴格地講它不是一個實際意義的分區,它僅僅是一個指向下一個分區的指針,這種

指針結構將形成一個單向鏈表。這樣在主引導扇區中除了主分區外,僅需要存儲一個被稱爲擴展分區的

分區數據,通過這個擴展分區的數據可以找到下一個分區(實際上也就是下一個邏輯磁盤)的起始位置

,以此起始位置類推可以找到所有的分區。無論系統中建立多少個邏輯磁盤,在主引導扇區中通過一個

擴展分區的參數就可以逐個找到每一個邏輯磁盤。

  需要特別注意的是,由於主分區之後的各個分區是通過一種單向鏈表的結構來實現鏈接的,因此,若

單向鏈表發生問題,將導致邏輯磁盤的丟失。

  數據存儲原理

  既然要進行數據的恢復,當然數據的存儲原理我們不能不提,在這之中,我們還要介紹一下數據的

刪除和硬盤的格式化相關問題……

  文件的讀取

  操作系統從目錄區中讀取文件信息(包括文件名、後綴名、文件大小、修改日期和文件在數據區保

存的第一個簇的簇號),我們這裏假設第一個簇號是0023。
  操作系統從0023簇讀取相應的數據,然後再找到FAT的0023單元,如果內容是文件結束標誌(FF),

則表示文件結束,否則內容保存數據的下一個簇的簇號,這樣重複下去直到遇到文件結束標誌。

  文件的寫入

  當我們要保存文件時,操作系統首先在DIR區中找到空區寫入文件名、大小和創建時間等相應信息,

然後在Data區找到閒置空間將文件保存,並將Data區的第一個簇寫入DIR區,其餘的動作和上邊的讀取動

作差不多。

  文件的刪除

  看了前面的文件的讀取和寫入,你可能沒有往下邊繼續看的信心了,不過放心,Win9x的文件刪除工

作卻是很簡單的,簡單到只在目錄區做了一點小改動——將目錄區的文件的第一個字符改成了E5就表示

將改文件刪除了。
  Fdisk和Format的一點小說明
  和文件的刪除類似,利用Fdisk刪除再建立分區和利用Format格式化邏輯磁盤(假設你格式化的時候

並沒有使用/U這個無條件格式化參數)都沒有將數據從DATA區直接刪除,前者只是改變了分區表,後者

只是修改了FAT表,因此被誤刪除的分區和誤格式化的硬盤完全有可能恢復……


硬盤引導的條件:
1.硬盤物理性正確:用DISKEDIT能看到物理硬盤或用CMOS SETUP時能識別硬盤參數或用IDE軟件能測出硬

盤參數。

2.主引導區(0 CYLINDER 0 SIDE 1 SECTOR)正確:結束部分要有55 AA,分區表內要有一個80標記,代

表可激活,主引導區代碼正確,有80標記對應的分區結束部分有55 AA。
分區表位置信息舉例:(從1BE開始)
80 00 02 00 01 03 51 30 01 00 00 00 03 51 00 00
① ② ③ ④ ⑤ ⑥
它們各自的含義如下:
①可自舉分區;
②分區起始地址爲0頭0柱面2扇區;
③DOS分區,04或06代表DOS分區,05代表擴展分區,65代表NOVELL分區;
④分區終止地址爲3頭304柱面17扇區;
⑤區相對扇區號爲1;
⑥分區實用扇區數爲20739個。

3.引導區正確:
BPB表代碼要正確:
EB 3C 90 4d 53 44 4f 53 35 2e 30 00 02 04 01 00 02 00 02
a b c d e f g

00 00 F8 50 00 27 00 08 00 27 00 00 00
h i j k l m n
a 代表JMP
b 版本號
c 每個扇區的字節數
d 每個簇的扇區數
e 保留扇區數
f FAT的個數
g 根目錄項的個數
h 扇區的總數
i 介質說明符
j 每個FAT所佔的扇區數
K 每個磁道的扇區數
l 磁頭個數
m 隱藏扇區的個數
n 存放計算的驅動器號和磁頭號

結束部分爲55 AA,並且最後部分的英文字母(屏幕的右側)爲IO SYSMSDOS SYS。

4.根目錄上前兩條必須是引導文件IO.SYS、MSDOS.SYS,且必須存放在連續的扇區。

5.引導文件IO.SYS、MSDOS.SYS和COMMAND.COM文件要正確。

修復硬盤:

1.準備好工具盤TOOLS、殺病毒盤VRVNT和引導盤。

2.檢查CMOS配置是否正確。

3.用DISKEDIT備份系統數據。備份分區表、BOOT區和FAT1、FAT2。
注意:備份至軟盤,不要在硬盤上備份或做其它COPY動作。

4.用DISKEDIT分析硬盤。根據硬盤引導的條件,判斷硬盤故障的原因,採用不同的修復方法。

5.若不滿足硬盤引導第五條件,用乾淨、正確的系統文件COPY或REPLACE。

6.若不滿足硬盤引導第四條件,用DISKEDIT將根目錄上的CHAIN LINK前約20個簇填爲0,然且用SYS c:命

令TRANSFER系統。

7.若不滿足硬盤引導第三條件,用VRVNT盤,將配置項中的校驗開關改爲覆蓋方式,然後用修復引導區進

行修復(即使在C盤不出現的情況下也可進行)。

8.若不滿足硬盤引導第二條件,首先要了解該硬盤的分區情況。

A. 若只有一個C盤,用系統盤引導,運行TOOLS盤中的NOFDISK,該軟件必須駐留在內存中,可用MI/A查

看,然後運行FDISK,先將原有分區刪除,然後重新進行分區,即可修復分區表。

B.若有多個邏輯硬盤
如果能知道各個邏輯硬盤的確切大小,則用以上方法即可恢復,即用FDISK將原有的各邏輯硬盤重新進行

分區(必須駐留NOFDISK)。

如果不知道各個邏輯硬盤的情況,用DISKEDIT中的FIND菜單尋找學符串00 00 00 55 AA,並判斷是否爲

EXTEND分區的分區信息,如果找到,即可知道EXTEND分區的起始位置,並可推算DOS主分區的起始和結束

位置,並推算相關的參數,由於備邏輯盤是連續的,由 EXTEND分區信息,可找到各邏輯硬盤的分區信息

,並推算出EXTEND分區的結束位置及相關參數,將推算出的相關信息寫入主分區表中,即可恢復分區表



注意:EXTEND分區爲05,DOS分區爲04或06。

用DISKEDIT中的OBJECT菜單選擇PHYSICAL SECTOR,鍵入0,0,1,即可進入主引導區。用VIEW菜單中的AS

PARTITION TABLE項可看分區結構。一般情況下主引導區BIGDOS的起始位置SIDE=1 SECTOR=1 ,EXTEND分

區的起始位置SIDE=0 SECTOR=1,而ENDING LOCATION處SIDE和SECTOR必然是最大值。可直接在該分區表

中修改數據。光標移至任意處回車,可顯示該數據處的分區結構,並可通過F2和 F6切換。後一個分區的

STARTING LOCATION必然是前一個分區ENDING LOCATION的下一個扇區。NUMBER OF SECTORS可通過分區的

ENDING LOCATION和STARTING LOCATION計算出,例如,STARTING LOCATION的SIDE=1,CYLINDER=0,

SECTOR=1,ENDING LOCATION的SIDE=7,CYLINDER=262,SECTOR=39則通過以下式子計算:

主引導區的RELATIVE SECTORS 是SECTOR的最大值。
EXTEND分區的RELATIVE SECTORS=主引導區的RELATIVE SECTORS+主引導區的NUMBER OF SECTORS。
EXTEND分區的NUMBER OF SECTORS=本分區的ENDING LOCATION (換算爲SECTORS)-本分區的RELATIVE

SECTORS。

下面是某116M硬盤(參數爲CYLINDER=760 HEAD=8 SECTOR=39)共分有:
C盤(DOS引導盤)大小爲40M
DOS擴充盤 大小爲76M
DOS擴充盤上的邏輯驅動器爲:
D: 32M E: 3M F: 4M G:6M H:7M I:7M J:17M


Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
BIGDOS Yes 1 0 1 7 262 39 39 82017
h1 c1 s1 h2 c2 s2 r1 n1
EXTEND No 0 263 1 7 760 39 82056 155376
h3 c3 s3 h4 c4 s4 r2 n2
unused No 0 0 0 0 0 0 0 0

unused No 0 0 0 0 0 0 0 0


即:r1=s2
n1=(h2+1)*(c2+1)*s2-s2
r2=r1+n1
n2=(h4+1)*(c4+1)*s4-r2

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-16 No 1 263 1 7 472 39 39 65481
h5 c5 s5 h6 c6 s6 r3 n3
EXTEND No 0 473 1 7 492 39 65520 6240
h7 c7 s7 h8 c8 s8 r4 n4
unused No 0 0 0 0 0 0 0 0

unused No 0 0 0 0 0 0 0 0


公式:r3=s6
n3=(h6+1)*(c6+1)*s6-r3-r2
r4=r3+n3
n4=(h8+1)*(c8+1)*s8-r4-r2

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-12 No 1 473 1 7 492 39 39 6201
h9 c9 s9 h10 c10 s10 r5 n5
EXTEND No 0 493 1 7 519 39 71760 8424
h11 c11 s11 h12 c12 s12 r6 n6
unused No 0 0 0 0 0 0 0 0

unused No 0 0 0 0 0 0 0 0


公式:r5=s10
n5=(h10+1)*(c10+1)*s10-r5-r2-r4
r6=r4+r5+n5
n6=(h12+1)*(c12+1)*s12-r2-r6

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-12 No 1 493 1 7 519 39 39 8385
h13 c13 s13 h14 c14 s14 r7 n7
EXTEND No 0 520 1 7 559 39 80184 12480
h15 c15 s15 h16 c16 s16 r8 n8
unused No 0 0 0 0 0 0 0 0

unused No 0 0 0 0 0 0 0 0


公式:r7=s14
n7=(h14+1)*(c14+1)*s14-r7-r2-r4-n4
r8=r5+r6+n6-r7
n8=(h16+1)*(c16+1)*s16-r2-r8

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-12 No 1 520 1 7 559 39 39 12441
EXTEND No 0 560 1 7 605 39 92664 14352
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-12 No 1 560 1 7 605 39 39 14313
EXTEND No 0 606 1 7 651 39 107016 14352
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-12 No 1 606 1 7 651 39 39 14313
EXTEND No 0 652 1 7 760 39 121368 34008
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0

光標停留在EXTEND行,按回車鍵出現下列DOS擴展分區邏輯分區表:

Starting Location Ending Location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors
DOS-16 No 1 652 1 7 760 39 39 33969
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0

C.若有NOVELL分區,採用B方法,NOVELL分區爲65。

9.若不滿足硬盤引導的多個條件,則按分區表,BOOT區等順序修復。

10.在修復前或修復後均用VRVNT查找病毒,發現後消除病毒。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章