天才教育網(wǎng)合作機(jī)構(gòu) > 職業(yè)技能培訓(xùn)機(jī)構(gòu) > 維修培訓(xùn)機(jī)構(gòu) >

東莞維修培訓(xùn)網(wǎng)

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:職業(yè)技能培訓(xùn)資訊 > 維修培訓(xùn)資訊 > 硬盤數(shù)據(jù)恢復(fù)教程

硬盤數(shù)據(jù)恢復(fù)教程

日期:2006-10-19 00:00:00     瀏覽:180    來源:東莞維修培訓(xùn)網(wǎng)

硬盤數(shù)據(jù)恢復(fù)教程
前言:
此文章從google搜索經(jīng)鄙人整理而來,并非本人的造詣至此,請(qǐng)勿聯(lián)系筆者。
硬盤數(shù)據(jù)恢復(fù)很大程度依靠運(yùn)氣,無必勝把握,并且不與投入時(shí)間成正比,不要寄予太大的希望。
請(qǐng)勿輕易拿自己硬盤做實(shí)驗(yàn)。
建議數(shù)據(jù)恢復(fù)前先用硬盤保護(hù)卡對(duì)拷到其他硬盤上做一個(gè)備份,然后修理備份。(用ghost不行)
●硬盤數(shù)據(jù)恢復(fù),一概論
    初買來一塊硬盤,我們是沒有辦法使用的,你需要將它分區(qū)、格式化,然后再安裝上操作系統(tǒng)才可以使用。一個(gè)完整硬盤的數(shù)據(jù)應(yīng)該包括五部分:MBR,DBR,F(xiàn)AT,DIR區(qū)和DATA區(qū)。其中只有主引導(dǎo)扇區(qū)是*的,其它的隨你的分區(qū)數(shù)的增加而增加。
    主引導(dǎo)扇區(qū)
    主引導(dǎo)扇區(qū)位于整個(gè)硬盤的0磁道0柱面1扇區(qū),包括硬盤主引導(dǎo)記錄MBR(Main Boot Record)和分區(qū)表DPT(Disk Partition Table)。其中主引導(dǎo)記錄的作用就是檢查分區(qū)表是否正確以及確定哪個(gè)分區(qū)為引導(dǎo)分區(qū),并在程序結(jié)束時(shí)把該分區(qū)的啟動(dòng)程序(也就是操作系統(tǒng)引導(dǎo)扇區(qū))調(diào)入內(nèi)存加以執(zhí)行。至于分區(qū)表,很多人都知道,以80H或00H為開始標(biāo)志,以55AAH為結(jié)束標(biāo)志,共64字節(jié),位于本扇區(qū)的最末端。值得一提的是,MBR是由分區(qū)程序(例如DOS 的Fdisk.exe)產(chǎn)生的,不同的操作系統(tǒng)可能這個(gè)扇區(qū)是不盡相同。如果你有這個(gè)意向也可以自己去編寫一個(gè),只要它能完成前述的任務(wù)即可,這也是為什么能實(shí)現(xiàn)多系統(tǒng)啟動(dòng)的原因(說句題外話:正因?yàn)檫@個(gè)主引導(dǎo)記錄容易編寫,所以才出現(xiàn)了很多的引導(dǎo)區(qū)病毒)。
    操作系統(tǒng)引導(dǎo)扇區(qū)
     OBR(OS Boot Record)即操作系統(tǒng)引導(dǎo)扇區(qū),通常位于硬盤的0磁道1柱面1扇區(qū)(這是對(duì)于DOS來說的,對(duì)于那些以多重引導(dǎo)方式啟動(dòng)的系統(tǒng)則位于相應(yīng)的主分區(qū)/擴(kuò)展分區(qū)的*個(gè)扇區(qū)),是操作系統(tǒng)可直接訪問的*個(gè)扇區(qū),它也包括一個(gè)引導(dǎo)程序和一個(gè)被稱為BPB(BIOS Parameter Block)的本分區(qū)參數(shù)記錄表。其實(shí)每個(gè)邏輯分區(qū)都有一個(gè)OBR,其參數(shù)視分區(qū)的大小、操作系統(tǒng)的類別而有所不同。引導(dǎo)程序的主要任務(wù)是判斷本分區(qū)根目錄前兩個(gè)文件是否為操作系統(tǒng)的引導(dǎo)文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS)。如是,就把*個(gè)文件讀入內(nèi)存,并把控制權(quán)交予該文件。BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、硬盤介質(zhì)描述符、根目錄大小、FAT個(gè)數(shù)、分配單元(Allocation Unit,以前也稱之為簇)的大小等重要參數(shù)。OBR由高級(jí)格式化程序產(chǎn)生(例如DOS 的Format.com)。
    文件分配表
    FAT(File Allocation Table)即文件分配表,是DOS/Win9x系統(tǒng)的文件尋址系統(tǒng),為了數(shù)據(jù)安全起見,F(xiàn)AT一般做兩個(gè),第二FAT為*FAT的備份, FAT區(qū)緊接在OBR之后,其大小由本分區(qū)的大小及文件分配單元的大小決定。關(guān)于FAT的格式歷來有很多選擇,Microsoft 的DOS及Windows采用我們所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非沒有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。
    目錄區(qū)
    DIR是Directory即根目錄區(qū)的簡寫,DIR緊接在第二FAT表之后,只有FAT還不能定位文件在磁盤中的位置,F(xiàn)AT還必須和DIR配合才能準(zhǔn)確定位文件的位置。DIR記錄著每個(gè)文件(目錄)的起始單元(這是最重要的)、文件的屬性等。定位文件位置時(shí),操作系統(tǒng)根據(jù)DIR中的起始單元,結(jié)合FAT表就可以知道文件在磁盤的具體位置及大小了。在DIR區(qū)之后,才是真正意義上的數(shù)據(jù)存儲(chǔ)區(qū),即DATA區(qū)。
    數(shù)據(jù)區(qū)
    DATA雖然占據(jù)了硬盤的絕大部分空間,但沒有了前面的各部分,它對(duì)于我們來說,也只能是一些枯燥的二進(jìn)制代碼,沒有任何意義。在這里有一點(diǎn)要說明的是,我們通常所說的格式化程序(指高級(jí)格式化,例如DOS下的Format程序),并沒有把DATA區(qū)的數(shù)據(jù)清除,只是重寫了FAT表而已,至于分區(qū)硬盤,也只是修改了MBR和OBR,絕大部分的DATA區(qū)的數(shù)據(jù)并沒有被改變,這也是許多硬盤數(shù)據(jù)能夠得以修復(fù)的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破壞的話,也足夠咱們那些所謂的DIY老鳥們忙乎半天了……需要提醒大家的是,如果你經(jīng)常整理磁盤,那么你的數(shù)據(jù)區(qū)的數(shù)據(jù)可能是連續(xù)的,這樣即使MBR/FAT/DIR全部壞了,我們也可以使用磁盤編輯軟件(比如DOS下的DiskEdit),只要找到一個(gè)文件的起始保存位置,那么這個(gè)文件就有可能被恢復(fù)(當(dāng)然了,這需要一個(gè)前提,那就是你沒有覆蓋這個(gè)文件……)。
    硬盤分區(qū)方式
    我們平時(shí)說到的分區(qū)概念,不外乎三種:主分區(qū)、擴(kuò)展分區(qū)和邏輯分區(qū)。
    主分區(qū)是一個(gè)比較單純的分區(qū),通常位于硬盤的最前面一塊區(qū)域中,構(gòu)成邏輯C磁盤。在主分區(qū)中,不允許再建立其它邏輯磁盤。
    擴(kuò)展分區(qū)的概念則比較復(fù)雜,也是造成分區(qū)和邏輯磁盤混淆的主要原因。由于硬盤僅僅為分區(qū)表保留了64個(gè)字節(jié)的存儲(chǔ)空間,而每個(gè)分區(qū)的參數(shù)占據(jù)16個(gè)字節(jié),故主引導(dǎo)扇區(qū)中總計(jì)可以存儲(chǔ)4個(gè)分區(qū)的數(shù)據(jù)。操作系統(tǒng)只允許存儲(chǔ)4個(gè)分區(qū)的數(shù)據(jù),如果說邏輯磁盤就是分區(qū),則系統(tǒng)最多只允許4個(gè)邏輯磁盤。對(duì)于具體的應(yīng)用,4個(gè)邏輯磁盤往往不能滿足實(shí)際需求。為了建立更多的邏輯磁盤供操作系統(tǒng)使用,系統(tǒng)引入了擴(kuò)展分區(qū)的概念。
    所謂擴(kuò)展分區(qū),嚴(yán)格地講它不是一個(gè)實(shí)際意義的分區(qū),它僅僅是一個(gè)指向下一個(gè)分區(qū)的指針,這種指針結(jié)構(gòu)將形成一個(gè)單向鏈表。這樣在主引導(dǎo)扇區(qū)中除了主分區(qū)外,僅需要存儲(chǔ)一個(gè)被稱為擴(kuò)展分區(qū)的分區(qū)數(shù)據(jù),通過這個(gè)擴(kuò)展分區(qū)的數(shù)據(jù)可以找到下一個(gè)分區(qū)(實(shí)際上也就是下一個(gè)邏輯磁盤)的起始位置,以此起始位置類推可以找到所有的分區(qū)。無論系統(tǒng)中建立多少個(gè)邏輯磁盤,在主引導(dǎo)扇區(qū)中通過一個(gè)擴(kuò)展分區(qū)的參數(shù)就可以逐個(gè)找到每一個(gè)邏輯磁盤。
    需要特別注意的是,由于主分區(qū)之后的各個(gè)分區(qū)是通過一種單向鏈表的結(jié)構(gòu)來實(shí)現(xiàn)鏈接的,因此,若單向鏈表發(fā)生問題,將導(dǎo)致邏輯磁盤的丟失。
    數(shù)據(jù)存儲(chǔ)原理
    既然要進(jìn)行數(shù)據(jù)的恢復(fù),當(dāng)然數(shù)據(jù)的存儲(chǔ)原理我們不能不提,在這之中,我們還要介紹一下數(shù)據(jù)的刪除和硬盤的格式化相關(guān)問題……
    文件的讀取
    操作系統(tǒng)從目錄區(qū)中讀取文件信息(包括文件名、后綴名、文件大小、修改日期和文件在數(shù)據(jù)區(qū)保存的*個(gè)簇的簇號(hào)),我們這里假設(shè)*個(gè)簇號(hào)是0023。
    操作系統(tǒng)從0023簇讀取相應(yīng)的數(shù)據(jù),然后再找到FAT的0023單元,如果內(nèi)容是文件結(jié)束標(biāo)志(FF),則表示文件結(jié)束,否則內(nèi)容保存數(shù)據(jù)的下一個(gè)簇的簇號(hào),這樣重復(fù)下去直到遇到文件結(jié)束標(biāo)志。
    文件的寫入
    當(dāng)我們要保存文件時(shí),操作系統(tǒng)首先在DIR區(qū)中找到空區(qū)寫入文件名、大小和創(chuàng)建時(shí)間等相應(yīng)信息,然后在Data區(qū)找到閑置空間將文件保存,并將Data區(qū)的*個(gè)簇寫入DIR區(qū),其余的動(dòng)作和上邊的讀取動(dòng)作差不多。
    文件的刪除
    Win9x的文件刪除工作卻是很簡單的,簡單到只在目錄區(qū)做了一點(diǎn)小改動(dòng)--將目錄區(qū)的文件的*個(gè)字符改成了E5就表示將改文件刪除了。
附錄:
--------------------------------------------------------------------------------
    Fdisk和Format的一點(diǎn)小說明
    和文件的刪除類似,利用Fdisk刪除再建立分區(qū)和利用Format格式化邏輯磁盤(假設(shè)你格式化的時(shí)候并沒有使用/U這個(gè)無條件格式化參數(shù))都沒有將數(shù)據(jù)從DATA區(qū)直接刪除,前者只是改變了分區(qū)表,后者只是修改了FAT表,因此被誤刪除的分區(qū)和誤格式化的硬盤完全有可能恢復(fù)……

    系統(tǒng)啟動(dòng)流程
    各種不同的操作系統(tǒng)啟動(dòng)流程不盡相同,我們這里以Win9x/DOS的啟動(dòng)流程為例。
    *階段:系統(tǒng)加電自檢POST過程。POST是Power On Self Test的縮寫,也就是加電自檢的意思,微機(jī)執(zhí)行內(nèi)存FFFF0H處的程序(這里是一段固化的ROM程序),對(duì)系統(tǒng)的硬件(包括內(nèi)存)進(jìn)行檢查。
    第二階段:讀取分區(qū)記錄和引導(dǎo)記錄。當(dāng)微機(jī)檢查到硬件正常并與CMOS設(shè)置相符后,按照CMOS設(shè)置從相應(yīng)設(shè)備啟動(dòng)(我們這里假設(shè)從硬盤啟動(dòng)),讀取硬盤的分區(qū)記錄(DPT)和主引導(dǎo)記錄(MBR)。
    第三階段:讀取DOS引導(dǎo)記錄。微機(jī)正確讀取分區(qū)記錄和主引導(dǎo)記錄后,如果主引導(dǎo)記錄和分區(qū)表校驗(yàn)正確,則執(zhí)行主引導(dǎo)記錄并進(jìn)一步讀取DOS引導(dǎo)記錄(位于每一個(gè)主分區(qū)的*個(gè)扇區(qū)),然后執(zhí)行該DOS引導(dǎo)記錄。
    第四階段:裝載系統(tǒng)隱含文件。將DOS系統(tǒng)的隱含文件IO.SYS入內(nèi)存,加載基本的文件系統(tǒng)FAT,這時(shí)候一般會(huì)出現(xiàn)Starting Windows 9x...的標(biāo)志,IO.SYS將MS.SYS讀入內(nèi)存,并處理System.dat和User.dat文件,加載磁盤壓縮程序。
    第五階段:實(shí)DOS模式配置。系統(tǒng)隱含文件裝載完成,微機(jī)將執(zhí)行系統(tǒng)隱含文件,并執(zhí)行系統(tǒng)配置文件(Config.sys),加載Config.sys中定義的各種驅(qū)動(dòng)程序。
第六階段:調(diào)入命令解釋程序(Command.com)。系統(tǒng)裝載命令管理程序,以便對(duì)系統(tǒng)的各種操作命令進(jìn)行協(xié)調(diào)管理(我們所使用的Dir、Copy等內(nèi)部命令就是由Command.com提供的)。
    第七階段:執(zhí)行批處理文件(Autoexec.bat)。微機(jī)將一步一步地執(zhí)行批處理文件中的各條命令。
    第八階段:加載Win.com。Win.com負(fù)責(zé)將Windows下的各種驅(qū)動(dòng)程序和啟動(dòng)執(zhí)行文件加以執(zhí)行,至此啟動(dòng)完畢。
●硬盤數(shù)據(jù)恢復(fù),三文件分配表
FAT是DOS、Windows9X系統(tǒng)的文件尋址格式,位于DBR之后。
在解釋文件分配表的概念的時(shí)候,我們有必要談?wù)劥兀–luster)的概念。文件占用磁盤空間,基本單位不是字節(jié)而是簇。一般情況下,軟盤每簇是1個(gè)扇區(qū),硬盤每簇的扇區(qū)數(shù)與硬盤的總?cè)萘看笮∮嘘P(guān),可能是4、8、16、32、64……同一個(gè)文件的數(shù)據(jù)并不一定完整地存放在磁盤的一個(gè)連續(xù)的區(qū)域內(nèi),而往往會(huì)分成若干段,像一條鏈子一樣存放。這種存儲(chǔ)方式稱為文件的鏈?zhǔn)酱鎯?chǔ)。由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統(tǒng)在讀取文件時(shí),總是能夠準(zhǔn)確地找到各段的位置并正確讀出。
為了實(shí)現(xiàn)文件的鏈?zhǔn)酱鎯?chǔ),硬盤上必須準(zhǔn)確地記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲(chǔ)后繼內(nèi)容的下一個(gè)簇的簇號(hào)。對(duì)一個(gè)文件的*一簇,則要指明本簇?zé)o后繼簇。這些都是由FAT表來保存的,表中有很多表項(xiàng),每項(xiàng)記錄一個(gè)簇的信息。由于FAT對(duì)于文件管理的重要性,所以為了安全起見,F(xiàn)AT有一個(gè)備份,即在原FAT的后面再建一個(gè)同樣的FAT。初形成的FAT中所有項(xiàng)都標(biāo)明為“未占用”,但如果磁盤有局部損壞,那么格式化程序會(huì)檢測出損壞的簇,在相應(yīng)的項(xiàng)中標(biāo)為“壞簇”,以后存文件時(shí)就不會(huì)再使用這個(gè)簇了。FAT的項(xiàng)數(shù)與硬盤上的總簇?cái)?shù)相當(dāng),每一項(xiàng)占用的字節(jié)數(shù)也要與總簇?cái)?shù)相適應(yīng),因?yàn)槠渲行枰娣糯靥?hào)。FAT的格式有多種,最為常見的是FAT16和FAT32。
當(dāng)一個(gè)磁盤Format后,在其邏輯0扇區(qū)(即BOOT扇區(qū))后面的幾個(gè)扇區(qū)中存在著一個(gè)重要的數(shù)據(jù)表-文件分配(FAT),文件分配表一式兩份,占據(jù)扇區(qū)的多小憑磁盤類型大小而定。顧名思義,文件分配表是用來表示磁盤問件的空分配信息的。它不對(duì)引導(dǎo)區(qū),文件目錄的信息進(jìn)行表示,也不真正存儲(chǔ)文件內(nèi)容。

我們知道磁盤是由一個(gè)一個(gè)扇區(qū)組成的,若干個(gè)扇區(qū)合為一個(gè)簇,文件存取是以簇為單位的,哪怕這個(gè)文件只有1個(gè)字節(jié)。每個(gè)簇在文件分配表中都有對(duì)應(yīng)的表項(xiàng),簇號(hào)即為表項(xiàng)號(hào),每個(gè)表項(xiàng)占1.5個(gè)字節(jié)(磁盤空間在10MB以下)或2個(gè)字節(jié)(磁盤空間在10MB以上)。為了方便起見,以后所說的表項(xiàng)都是指2個(gè)字節(jié)的。


文件分配表結(jié)構(gòu)如1(H表示16進(jìn)制)
表1
第0字節(jié) 表頭,表磁盤類型。FFH雙面軟盤,每次道8扇區(qū)FEH單面軟盤,每磁道8扇區(qū)FDH雙面軟盤,每磁道9扇區(qū)FCCH單面軟盤,每磁道9扇區(qū)FC8H硬盤
第1~2字節(jié) (表項(xiàng)號(hào)1)表示*簇狀態(tài),因*簇被系統(tǒng)占據(jù),故此兩字節(jié)為FFFFH
第3~4字節(jié) (表項(xiàng)號(hào)2)表示第二簇狀態(tài),若為FFFH表此簇為壞的,DOS已標(biāo)記為不能用;0000H表示此簇為空,可以用;FFF8H表不能示該簇為文件的*一簇;其余數(shù)字表示文件的下一個(gè)簇號(hào),注意高字節(jié)在后,低字節(jié)在前。
第5~6字節(jié) (表項(xiàng)號(hào)3)表示第三簇狀態(tài),同上。


注意:
不要把表項(xiàng)內(nèi)的數(shù)字誤認(rèn)為表示當(dāng)前簇號(hào),而應(yīng)是該文件的下一個(gè)簇的簇號(hào)。.高字節(jié)在后,低字節(jié)在前是一種存儲(chǔ)數(shù)字方式,讀出時(shí)應(yīng)對(duì)其進(jìn)行調(diào)整。是如兩字節(jié)12H,34H,應(yīng)調(diào)整為3412H。
文件分配表與文件目錄(FDT)相配合,可以統(tǒng)一管理整個(gè)磁盤的文件。它告訴系統(tǒng)磁盤上哪些簇是壞的或已被使用,哪些簇可以用,并存儲(chǔ)每個(gè)文件所使用的簇號(hào)。它是文件的“總調(diào)度師”。
當(dāng)DOS寫文件時(shí),首先在文件目錄中檢查是否有相同文件名,若無則使用一個(gè)文件目錄表項(xiàng),然后依次檢測FAT中的每個(gè)表項(xiàng)對(duì)應(yīng)的簇中,同時(shí)將該簇號(hào)寫入文件目錄表項(xiàng)相的26-27字節(jié),如文件長度不止一簇,則繼續(xù)向后尋找可用簇,找到后將其簇號(hào)寫入上一次找到的表項(xiàng)中,如此直到文件結(jié)束,在*一簇的表項(xiàng)里填上FFF8H,形成單向鏈表。
DOS刪除文件時(shí)只是把文件目錄表中的該文件的表項(xiàng)第0個(gè)字節(jié)改為E5H,表此項(xiàng)已被刪除,并在文件分配表中把該文件占用的各簇的表項(xiàng)清0,并釋放空間。其文件的內(nèi)容仍然在盤上,并沒有被真正刪除,這就是undelete.exe,unerase.exe等一類恢復(fù)刪除工具能起作用的原因。
文件分配表在系統(tǒng)中的地位十分重要,用戶*不要去修改它,以免誤操作帶來嚴(yán)重的后果。
FAT表的定位
 硬盤分區(qū)的主要結(jié)構(gòu)說明:
(Cylinder柱面/磁道-Side磁頭-Sector扇區(qū)地址以下簡稱為?-?-?)
《主分區(qū)》
名稱 地址   長度(扇區(qū))
主引導(dǎo)記錄(Main Boot Record) 0-0-1 1
系統(tǒng)扇區(qū)(System Secotrs)   0-0-2,0-0-63  62
引導(dǎo)扇區(qū)(Boot) 0-1-1 1
   FAT16系統(tǒng)中,此扇區(qū)包含BPB(BIOS Parameter Block)表,描述邏輯盤結(jié)構(gòu)組成,包含隱藏扇區(qū)數(shù)目(從0-1-1開始計(jì)算)、FAT扇區(qū)數(shù)、FAT拷貝數(shù)、硬盤磁頭總數(shù)、根目錄表項(xiàng)*值等。
    FAT32系統(tǒng)中,BPB表的偏移與FAT16不同,但表項(xiàng)基本相同。整個(gè)隱藏扇區(qū)部分都作為邏輯盤的描述區(qū)域。
隱藏扇區(qū)(Hidden Secotrs):
    FAT16              0-1-1          1
    FAT32              0-1-1          32
文件分配表(File Allocation Table):
    FAT16              0-1-2          根據(jù)邏輯盤容量變化    
    FAT32              0-1-33          根據(jù)邏輯盤容量變化
    說明:
    FAT16的每個(gè)表項(xiàng)由2字節(jié)(16位)組成,通常每個(gè)表項(xiàng)指向的簇包含64個(gè)扇區(qū),即32K字節(jié)。
        邏輯盤容量*為2047MB。
    FAT32的每個(gè)表項(xiàng)由4字節(jié)(32位)組成,通常每個(gè)表項(xiàng)指向的簇包含8個(gè)扇區(qū),即4K字節(jié)。
        邏輯盤容量最小為512MB。
    對(duì)于C分區(qū),在MBR的偏移01c2H處,F(xiàn)AT16為06H,F(xiàn)AT32為0CH。
        有關(guān)計(jì)算公式為:
        每個(gè)扇區(qū)長度=512字節(jié)
        總簇?cái)?shù)=邏輯盤容量/簇容量
        總簇?cái)?shù)=FAT表長度(字節(jié))/每個(gè)表項(xiàng)長度(字節(jié))-2
        FAT表長度=邏輯盤容量/簇容量*每個(gè)表項(xiàng)長度
    FAT表的開始由介質(zhì)描述符+一串“已占用”標(biāo)志組成:
        FAT16硬盤----F8 FF FF 7F
        FAT32硬盤----F8 FF FF 0F FF FF FF 0F
    每個(gè)有效的FAT結(jié)構(gòu)區(qū)包含兩個(gè)完全相同的拷貝:FAT1、FAT2
文件目錄表(File Directory Table),即根目錄區(qū),又稱為ROOT區(qū):
    緊跟在FAT2的下一個(gè)扇區(qū),長度為32個(gè)扇區(qū)(256個(gè)表項(xiàng))。如果支持長文件名,則每個(gè)表項(xiàng)
    為64個(gè)字節(jié),其中,前32個(gè)字節(jié)為長文件鏈接說明;后32個(gè)字節(jié)為文件屬性說明,包括文件長
    度、起始地址、日期、時(shí)間等。如不支持長文件名,則每個(gè)表項(xiàng)為32個(gè)字節(jié)的屬性說明。
數(shù)據(jù)區(qū)(Data Area):
    緊跟在FDT的下一個(gè)扇區(qū),直到邏輯盤的結(jié)束地址。
《擴(kuò)展分區(qū)》
名稱 地址 長度(扇區(qū))
擴(kuò)展分區(qū)(Extend Partition) ?-y-1 1
系統(tǒng)扇區(qū)(System Secotrs) ?-y-2,?-y-63 62
引導(dǎo)扇區(qū)(Boot) ?-(y+1)-1  1
其后各項(xiàng)與主分區(qū)相同……


FAT表引起的讀寫故障

硬盤文件分配表龐大無法手工修復(fù),只能依靠工具。
FAT表記錄著硬盤數(shù)據(jù)的存儲(chǔ)地址,每一個(gè)文件都有一組FAT鏈指定其存放的簇地址。FAT表的損壞意味著文件內(nèi)容的丟失。慶幸的是DOS系統(tǒng)本身提供了兩個(gè)FAT表,如果目前使用的FAT表損壞,可用第二個(gè)進(jìn)行覆蓋修復(fù)。但由于不同規(guī)格的磁盤其FAT表的長度及第二個(gè)FAT表的地址也是不固定的,所以修復(fù)時(shí)必須正確查找其正確位置,一些工具軟件如NU等本身具有這樣的修復(fù)功能,使用也非常的方便。采用DEBUG也可實(shí)現(xiàn)這種操作,即采用其m命令把第二個(gè)FAT表移到*個(gè)表處即可(不建議這樣做)。如果第二個(gè)FAT表也損壞了,則也無法把硬盤恢復(fù)到原來的狀態(tài),但文件的數(shù)據(jù)仍然存放在硬盤的數(shù)據(jù)區(qū)中,可采用CHKDSK或SCANDISK命令進(jìn)行修復(fù),最終得到*.CHK文件,這便是丟失FAT鏈的扇區(qū)數(shù)據(jù)。如果是文本文件則可從中提取出完整的或部分的文件內(nèi)容。

軟盤文件分配FAT表修復(fù)

在運(yùn)行某個(gè)程序時(shí),有時(shí)會(huì)在屏幕上看到:File allocation table bad,drive A(文件分配表壞)的錯(cuò)誤信息,導(dǎo)致程序不能正常運(yùn)行。
  我們知道,在磁盤中有兩個(gè)文件分配表:FAT1和FAT2。FAT1用于日常工作,F(xiàn)AT2備用。因此,在FAT1損壞時(shí),可用FAT2表修補(bǔ)。
  具體方法是:運(yùn)行DEBUG,將FAT2讀入緩沖區(qū),用緩沖區(qū)的FAT2數(shù)據(jù)覆蓋磁盤中的FAT1。
  例:修復(fù)3寸1.44M軟盤,在A驅(qū)
  在DOS環(huán)境下進(jìn)入debug環(huán)境
  在“-”提示符下進(jìn)行如下操作:
        -L 100 0 0A 9
        -W 100 0 1 9
        -q
  其它類型的軟盤的修復(fù)方法參照下表進(jìn)行。
起止邏輯扇區(qū) 5.25"低密 5.25"高密 3.5"低密 3.5"高密
BOOT區(qū) 0 0 0 0
FAT1 1-2 1-7 1-3 1-9
FAT2 3-4 8-0EH 4-6 0A-12H
  例如我們要修復(fù)5.25"高密軟盤的FAT,則需將上述參數(shù)改為:
        -L 100 0 8 7
        -W 100 0 1 7
        -q
●硬盤數(shù)據(jù)恢復(fù),二分區(qū)表的推算
Master Boot Record

The Master Boot Record is located at the physical beginning of a hard disk, editable using the Disk Editor. It consists of a master bootstrap loader code (446 bytes) and four subsequent, identically structured partition records. Finally, the hexadecimal signature 55AA completes a valid Master Boot Record.


硬盤的主引導(dǎo)記錄在硬盤的0磁頭0柱面1扇區(qū)。
主引導(dǎo)記錄由三部分組成:
(1)主引導(dǎo)程序;
(2)四個(gè)分區(qū)表;
(3)主引導(dǎo)記錄有效標(biāo)志字。

詳見表1。
[表1主引導(dǎo)記錄結(jié)構(gòu)]

位   置 內(nèi)   容
0000H -00D9H 主引導(dǎo)記錄代碼區(qū)
00DAH -01BDH 空閑區(qū)
01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息
01CEH -01DDH 分區(qū)2結(jié)構(gòu)信息
01DEH -01EDH 分區(qū)3結(jié)構(gòu)信息
01EEH -01FDH 分區(qū)4結(jié)構(gòu)信息
01FEH -01FFH 55 AAH 主 引 導(dǎo) 記 錄 有 效 標(biāo) 志

說明:
A,分區(qū)表自偏移1BEH處開始,分區(qū)表共64個(gè)字節(jié),表中可填入四個(gè)分區(qū)信息,每十六個(gè)字節(jié)為一個(gè)分區(qū)說明項(xiàng),這16個(gè)字節(jié)含義詳見表2。
B,必須注意:扇區(qū)號(hào)的高二位占用柱面號(hào)所在字節(jié)的*二位,即柱面號(hào)為10位,扇區(qū)號(hào)6位。
The format of a partition record is as follows:

Offset Size Description
0  8 bit A value of 80 designates an active partition.

1  8 bit Partition start head
2  8 bit Partition start sector (bits 0-5)
3  8 bit Partition start track (bits 8,9 in bits 6,7 of sector)
4  8 bit Operating system indicator
5  8 bit Partition end head
6  8 bit Partition end sector (bits 0-5)
7  8 bit Partition end track (bits 8,9 in bits 6,7 of sector)
8  32 bit Sectors preceding partition
C  32 bit Length of partition in sectors

Operating system indicators: (hexadecimal, incomplete list)

00 Empty partition-table entry
01 DOS FAT12
04 DOS FAT16 (up to 32 MB)
05 DOS 3.3+ extended partition
06 DOS 3.31+ FAT16 (over 32 MB)
07 OS/2 HPFS, Windows NT NTFS, Advanced Unix
08 OS/2 v1.0-1.3, AIX bootable partition, SplitDrive
09 AIX data partition
0A OS/2 Boot Manager
0B Windows 95+ FAT32
0C Windows 95+ FAT32 (using LBA-mode INT 13 extensions)
0E DOS FAT16 (over 32 MB, using INT 13 extensions)
0F Extended partition (using INT 13 extensions)
17 Hidden NTFS partition

1B Hidden Windows 95 FAT32 partition
1C Hidden Windows 95 FAT32 partition (using LBA-mode INT 13 extensions)
1E Hidden LBA VFAT partition
42 Dynamic disk volume
50 OnTrack Disk Manager, read-only partition
51 OnTrack Disk Manager, read/write partition
81 Linux
82 Linux Swap partition, Solaris (Unix)
83 Linux native file system (ext2fs/xiafs)
85 Linux EXT
86 FAT16 volume/stripe set (Windows NT)
87 HPFS fault-tolerant mirrored partition, NTFS volume/stripe set

BE Solaris boot partition
C0 DR-DOS/Novell DOS secured partition
C6 Corrupted FAT16 volume/stripe set (Windows NT)
C7 Corrupted NTFS volume/stripe set
F2 DOS 3.3+ secondary partition


[表2分區(qū)結(jié)構(gòu)信息]
偏移 長度    含義
00H  1   活動(dòng)分區(qū)指示符,該值為80H表示為可自舉分區(qū)(僅有一個(gè)),該值為00H表示其余分區(qū)。
01H  1   分區(qū)起始磁頭號(hào)。
02H  1   低6位是分區(qū)開始的扇區(qū),高2位是分區(qū)開始的柱面的頭兩位。
03H  1   分區(qū)開始的起始柱面號(hào)的低8位。
04H  1   系統(tǒng)標(biāo)志,該值為01H表示采用12位FAT格式的DOS 分區(qū),該值04H表示采用16位FAT格式的DOS分區(qū),該值為05H表示為擴(kuò)展DOS分區(qū),為06H表示為DOS系統(tǒng)。
05H  1   分區(qū)終止頭號(hào)
06H  1   低6位為分區(qū)結(jié)束的扇區(qū)號(hào),頭2位為結(jié)束柱面號(hào)的前2位。
07H  1   分區(qū)結(jié)束柱面號(hào)的低8位。
08H  4   本分區(qū)前的扇區(qū)數(shù),低位字節(jié)在 前。
0CH  4   本分區(qū)總的扇區(qū)數(shù),低位字節(jié)在前。

重要公式:
02H為X,03H為Y。柱面=(X>>6)*16^2+Y;
以我的硬盤為例:
有九個(gè)可用分區(qū),二個(gè)不可用分區(qū);
兩個(gè)Primary NTFS分區(qū),第二個(gè)為active;
七個(gè)Extened 分區(qū),第五個(gè)為NTFS其他為FAT32.
.
主分區(qū)表數(shù)據(jù):位置cylinder0, head 0,sector1
偏移 0 1 2 3 4 5 6 7  8 9 A B C D E F
0 33 C0 8E D0 BC 00 7C FB  50 07 50 1F FC BE 1B 7C
1 BF 1B 06 50 57 B9 E5 01  F3 A4 CB BE BE 07 B1 04
2 38 2C 7C 09 75 15 83 C6  10 E2 F5 CD 18 8B 14 8B
3 EE 83 C6 10 49 74 16 38  2C 74 F6 BE 10 07 4E AC
4 3C 00 74 FA BB 07 00 B4  0E CD 10 EB F2 89 46 25
5 96 8A 46 04 B4 06 3C 0E  74 11 B4 0B 3C 0C 74 05
6 3A C4 75 2B 40 C6 46 25  06 75 24 BB AA 55 50 B4
7 41 CD 13 58 72 16 81 FB  55 AA 75 10 F6 C1 01 74
8 0B 8A E0 88 56 24 C7 06  A1 06 EB 1E 88 66 04 BF
8 0A 00 B8 01 02 8B DC 33  C9 83 FF 05 7F 03 8B 4E
9 25 03 4E 02 CD 13 72 29  BE 59 07 81 3E FE 7D 55
A AA 74 5A 83 EF 05 7F DA  85 F6 75 83 BE 2E 07 EB
B 8A 98 91 52 99 03 46 08  13 56 0A E8 12 00 5A EB
C D5 4F 74 E4 33 C0 CD 13  EB B8 00 00 80 24 45 00
D 56 33 F6 56 56 52 50 06  53      
1B                00 00
1C 01 46 07 FE 7F 1E C6 28  11 00 99 31 35 00 80 00
1D 41 30 07 FE 7F B2 30 85  4A 00 C3 1C 20 00 00 00
1E 41 B3 0F FE FF FF F3 A1  6A 00 08 FE F7 01 00 00
1F 00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 AA

主分區(qū)表分析:
Master bootstrap loader code0000H -00D9H  33 C0 8E D0 BC 00 7C FB 50 。。。主引導(dǎo)記錄代碼,表示住分區(qū)表
  01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息multi(0)disk(0)rdisk(0)partition(0)知該分區(qū)Boot Sector位于:起始磁頭為0頭,起始柱面為70D,起始扇區(qū)為1扇區(qū)。
  01CEH -01DDH 分區(qū)2結(jié)構(gòu)信息 multi(0)disk(0)rdisk(0)partition(1)活動(dòng)分區(qū)指示符為80H,表示該分區(qū)為可自舉分區(qū)。系統(tǒng)標(biāo)志為07表示OS/2 HPFS, Windows NT NTFS, Advanced Unix系統(tǒng)。知該分區(qū)Boot Sector位于:起始磁頭為0頭,起始柱面為304D,起始扇區(qū)為1扇區(qū)。
  01DEH -01EDH 分區(qū)3結(jié)構(gòu)信息Extended partition系統(tǒng)標(biāo)志字節(jié)為0F,說明是擴(kuò)展分區(qū)Extended partition (using INT 13 extensions)。從擴(kuò)展分區(qū)說明項(xiàng)知下一個(gè)分區(qū)表位于:起始磁頭為0頭,起始柱面為435D,起始扇區(qū)為1扇區(qū)。
  01EEH -01FDH 分區(qū)4結(jié)構(gòu)信息分區(qū)說明項(xiàng)數(shù)據(jù)均為00H沒有定義。
  01FEH -01FFH 55 AAH 主引導(dǎo)記錄有效標(biāo)志

擴(kuò)展分區(qū)一分區(qū)表數(shù)據(jù):位置cylinder435D, head 0,sector1
偏移 0 1 2 3 4 5 6 7  8 9 A B C D E F
0 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
1B                00 00
1C 41 B3 0B FE FF 08 3F 00   00 00 97 D5 53 00 00 00
1D C1 09 05 FE FF FF D6 D5   53 00 D6 D5 53 00 00 00
1E 00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00
1F 00 00 00 00 00 00 00 00   00 00 00 00 00 00 55 AA

擴(kuò)展分區(qū)表分析:
  01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息multi(0)disk(0)rdisk(0)partition(3)知該分區(qū)位于:起始磁頭為1頭,起始柱面為435D,起始扇區(qū)為1扇區(qū)(分區(qū)表占用磁頭0)。系統(tǒng)標(biāo)志字0BH表示 Windows 95+ FAT32
  01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息系統(tǒng)標(biāo)志字節(jié)為05H,說明是擴(kuò)展DOS分區(qū)。于是知下一個(gè)分區(qū)表位于:起始磁頭為0頭,起始柱面為777D,起始扇區(qū)為1扇區(qū)。
Partition Table Entry #3 數(shù)據(jù)均為00H沒有定義。
Partition Table Entry #4 數(shù)據(jù)均為00H沒有定義。

其他擴(kuò)展分區(qū)同理。


---------------------------------------------------------------------------------------------------------------------
附錄:
   Fdisk的MBR參數(shù)
   MBR 系 FDISK.COM(EXE) 一項(xiàng)未公布的開關(guān),隱含于 MS DOS 3.30,延至 MS DOS 8.0(Windows ME)。實(shí)踐中,有籍以修復(fù)主引導(dǎo)信息,重點(diǎn)在主引導(dǎo)程序。
   FDISK /MBR 命令流程的分支有二:
  讀得主引導(dǎo)扇區(qū)檢驗(yàn)標(biāo)志(字) AA55h,操作單一,僅向主引導(dǎo)扇區(qū)位移 0-1BDH 寫入當(dāng)前系統(tǒng)固有的主引導(dǎo)程序,安全可靠。
  難能可貴的是它不觸動(dòng)主引導(dǎo)信息其余模塊(分區(qū)表、檢驗(yàn)標(biāo)志),以及隨后的 DOS 引導(dǎo)信息、文件分配表、根目錄,省事許多。檢出檢驗(yàn)標(biāo)志非 AA55h,寫主引導(dǎo)程序、初始化分區(qū)表及登錄檢驗(yàn)標(biāo)志,在 MS DOS 7.0 - 8.0 環(huán)境中,常規(guī)以系統(tǒng)支持的*容量分配給基本 DOS 分區(qū)的方式登錄分區(qū)表。分區(qū)表初始化(可能幸存的分區(qū)表被清除)的后果不難想象; 目前硬盤大都設(shè)置有其它分區(qū),即使在高版本 DOS 環(huán)境中運(yùn)作,常規(guī)建立的分區(qū)表每難能符合實(shí)際需求,后續(xù)工作量也相當(dāng)可觀。
  不過,它也不觸動(dòng)位于其后的 DOS 引導(dǎo)信息、文件分配表及根目錄,高版本 FDISK /MBR 命令適用于修復(fù)僅設(shè)基本 DOS 分區(qū)的硬盤分區(qū)表及檢驗(yàn)標(biāo)志受損,或主引導(dǎo)信息全毀。
  可見,在運(yùn)行 FDISK /MBR 命令之前,需查明檢驗(yàn)標(biāo)志是否 AA55h,酌情處理,切忌盲動(dòng)。
  經(jīng)由 DOS 軟盤引導(dǎo),認(rèn)硬盤,檢驗(yàn)標(biāo)志必健在。
  另外,在 FDSIK 主菜單中選 4. Display Partition Information,列出分區(qū)信息,進(jìn)一步證實(shí)檢驗(yàn)標(biāo)志正常; 若現(xiàn) No partitition defined,檢驗(yàn)標(biāo)志每變異,而分區(qū)表●硬盤數(shù)據(jù)恢復(fù),深入邏輯分區(qū)


現(xiàn)在深入每一個(gè)邏輯分區(qū)。邏輯分區(qū)結(jié)構(gòu)如下:

FAT12/16
Logical sector =0 Logical sector=1(Floppy disk=1~9) Logical sector=1+sectors_per_FAT(Floppydisk=10~18) Logical sector=1+sectors_per_FAT*2(Floppy disk=19~32) Logical sector=1+sectors_per_FAT*2+sectors_of_rootdirectories(Floppy disk=33~)
DOS Boot Sector FAT1 FAT2 ROOT Directory Data area(where files and subdirectories are stored)

FAT32
Usually 32 sectors Logical sector =0032h Logical sector =0032h+ 2*sectors_per_FAT
DOS Boot Recore 3 Sectors Reserved sectors Copy of record Reserve sectors FAT1 FAT2 Data area(where files and all bdirectories are stored)


在邏輯分區(qū)當(dāng)中用邏輯的cluster和sector。換算關(guān)系為:
cluster=logical_sector/sectors_per_cluster;
這里sectors_per_cluster是在BIOS Parameter Block里得到的。
Sector=( logical_sector mod sectors_per_track)+1;
Head=( logical_sector / sectors_per_track)mod total_heads;
Cylinder= logical_sector(sectors_per_track* total_heads);
logical_sector=( cluster-2)*sectors_per_cluster+sector_of_file_area_offset;
logical_sector=(sector-1)+head*sector_per_track+sector*sector_per_track*heads;
每個(gè)扇區(qū)長度=512字節(jié)
總簇?cái)?shù)=邏輯盤容量/簇容量
總簇?cái)?shù)=FAT表長度(字節(jié))/每個(gè)表項(xiàng)長度(字節(jié))-2
FAT表長度=邏輯盤容量/簇容量*每個(gè)表項(xiàng)長度

Dos引導(dǎo)記錄塊位于邏輯0 sector中包含三部分:
(1) 磁盤IO參數(shù)表BPB;
(2) 磁盤基數(shù)表;
(3) 引導(dǎo)區(qū)代碼。

FAT16的BPB(BIOS Parameter Block)表,描述邏輯盤結(jié)構(gòu)組成,包含隱藏扇區(qū)數(shù)目(從0-1-1開始計(jì)算)、FAT扇區(qū)數(shù)、FAT拷貝數(shù)、硬盤磁頭總數(shù)、根目錄表項(xiàng)*值等。FAT32系統(tǒng)中,BPB表的偏移與FAT16不同,但表項(xiàng)基本相同。整個(gè)隱藏扇區(qū)部分都作為邏輯盤的描述區(qū)域。

典型的primary partion 的磁盤IO參數(shù)表BPB:

典型的 logical partion 磁盤參數(shù)表:

 


硬盤BPB主要結(jié)構(gòu)說明:
(Cylinder柱面/磁道-Side/Head磁頭-Sector扇區(qū)地址以下簡稱為?-?-?)
主分區(qū)
名稱 地址   長度(扇區(qū))
主引導(dǎo)記錄(Main Boot Record) 0-0-1 1
系統(tǒng)扇區(qū)(System Secotrs)  0-0-2,0-0-63  62
引導(dǎo)扇區(qū)(Boot) 0-1-1 1
 
擴(kuò)展分區(qū) 
名稱 地址 長度(扇區(qū))
擴(kuò)展分區(qū)(Extend Partition) ?-y-1 1
系統(tǒng)扇區(qū)(System Secotrs) ?-y-2,?-y-63 62
引導(dǎo)扇區(qū)(Boot) ?-(y+1)-1  1
其后各項(xiàng)與主分區(qū)相同…… 

隱藏扇區(qū)(Hidden Secotrs):
    FAT16              0-1-1          1
    FAT32              0-1-1          32
文件分配表(File Allocation Table):
    FAT16              0-1-2          根據(jù)邏輯盤容量變化    
    FAT32              0-1-33          根據(jù)邏輯盤容量變化
    說明:
FAT16的每個(gè)表項(xiàng)由2字節(jié)(16位)組成,通常每個(gè)表項(xiàng)指向的簇包含64個(gè)扇區(qū),即32K字節(jié)。 邏輯盤容量*為2047MB。
FAT32的每個(gè)表項(xiàng)由4字節(jié)(32位)組成,通常每個(gè)表項(xiàng)指向的簇包含8個(gè)扇區(qū),即4K字節(jié)。邏輯盤容量最小為512MB。
對(duì)于C分區(qū),在MBR的偏移01c2H處,F(xiàn)AT16為06H,F(xiàn)AT32為0CH。

 
FAT是DOS、Windows9X系統(tǒng)的文件尋址格式,位于DBR之后。
在解釋文件分配表的概念的時(shí)候,我們有必要談?wù)劥兀–luster)的概念。文件占用磁盤空間,基本單位不是字節(jié)而是簇。一般情況下,軟盤每簇是1個(gè)扇區(qū),硬盤每簇的扇區(qū)數(shù)與硬盤的總?cè)萘看笮∮嘘P(guān),可能是4、8、16、32、64……同一個(gè)文件的數(shù)據(jù)并不一定完整地存放在磁盤的一個(gè)連續(xù)的區(qū)域內(nèi),而往往會(huì)分成若干段,像一條鏈子一樣存放。這種存儲(chǔ)方式稱為文件的鏈?zhǔn)酱鎯?chǔ)。由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統(tǒng)在讀取文件時(shí),總是能夠準(zhǔn)確地找到各段的位置并正確讀出。
為了實(shí)現(xiàn)文件的鏈?zhǔn)酱鎯?chǔ),硬盤上必須準(zhǔn)確地記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲(chǔ)后繼內(nèi)容的下一個(gè)簇的簇號(hào)。對(duì)一個(gè)文件的*一簇,則要指明本簇?zé)o后繼簇。這些都是由FAT表來保存的,表中有很多表項(xiàng),每項(xiàng)記錄一個(gè)簇的信息。由于FAT對(duì)于文件管理的重要性,所以為了安全起見,F(xiàn)AT有一個(gè)備份,即在原FAT的后面再建一個(gè)同樣的FAT。初形成的FAT中所有項(xiàng)都標(biāo)明為“未占用”,但如果磁盤有局部損壞,那么格式化程序會(huì)檢測出損壞的簇,在相應(yīng)的項(xiàng)中標(biāo)為“壞簇”,以后存文件時(shí)就不會(huì)再使用這個(gè)簇了。FAT的項(xiàng)數(shù)與硬盤上的總簇?cái)?shù)相當(dāng),每一項(xiàng)占用的字節(jié)數(shù)也要與總簇?cái)?shù)相適應(yīng),因?yàn)槠渲行枰娣糯靥?hào)。FAT的格式有多種,最為常見的是FAT16和FAT32。
當(dāng)一個(gè)磁盤Format后,在其邏輯0扇區(qū)(即BOOT扇區(qū))后面的幾個(gè)扇區(qū)中存在著一個(gè)重要的數(shù)據(jù)表-文件分配(FAT),文件分配表一式兩份,占據(jù)扇區(qū)的多小憑磁盤類型大小而定。顧名思義,文件分配表是用來表示磁盤問件的空分配信息的。它不對(duì)引導(dǎo)區(qū),文件目錄的信息進(jìn)行表示,也不真正存儲(chǔ)文件內(nèi)容。
我們知道磁盤是由一個(gè)一個(gè)扇區(qū)組成的,若干個(gè)扇區(qū)合為一個(gè)簇,文件存取是以簇為單位的,哪怕這個(gè)文件只有1個(gè)字節(jié)。每個(gè)簇在文件分配表中都有對(duì)應(yīng)的表項(xiàng),簇號(hào)即為表項(xiàng)號(hào),每個(gè)表項(xiàng)占1.5個(gè)字節(jié)(磁盤空間在10MB以下)或2個(gè)字節(jié)(磁盤空間在10MB以上)。為了方便起見,以后所說的表項(xiàng)都是指2個(gè)字節(jié)的。
FAT表的開始由介質(zhì)描述符+一串“已占用”標(biāo)志組成:
FAT16硬盤----F8 FF FF 7F
    FAT32硬盤----F8 FF FF 0F FF FF FF 0F
   每個(gè)有效的FAT結(jié)構(gòu)區(qū)包含兩個(gè)完全相同的拷貝:FAT1、FAT2
文件分配表結(jié)構(gòu)如1(H表示16進(jìn)制)
表1
第0字節(jié) 表頭,表磁盤類型。FFH雙面軟盤,每次道8扇區(qū)FEH單面軟盤,每磁道8扇區(qū)FDH雙面軟盤,每磁道9扇區(qū)FCCH單面軟盤,每磁道9扇區(qū)FC8H硬盤
第1~2字節(jié) (表項(xiàng)號(hào)1)表示*簇狀態(tài),因*簇被系統(tǒng)占據(jù),故此兩字節(jié)為FFFFH
第3~4字節(jié) (表項(xiàng)號(hào)2)表示第二簇狀態(tài),若為FFFH表此簇為壞的,DOS已標(biāo)記為不能用;0000H表示此簇為空,可以用;FFF8H表不能示該簇為文件的*一簇;其余數(shù)字表示文件的下一個(gè)簇號(hào),注意高字節(jié)在后,低字節(jié)在前。
第5~6字節(jié) (表項(xiàng)號(hào)3)表示第三簇狀態(tài),同上。

注意:
不要把表項(xiàng)內(nèi)的數(shù)字誤認(rèn)為表示當(dāng)前簇號(hào),而應(yīng)是該文件的下一個(gè)簇的簇號(hào)。.高字節(jié)在后,低字節(jié)在前是一種存儲(chǔ)數(shù)字方式,讀出時(shí)應(yīng)對(duì)其進(jìn)行調(diào)整。是如兩字節(jié)12H,34H,應(yīng)調(diào)整為3412H。
文件分配表與文件目錄(FDT)相配合,可以統(tǒng)一管理整個(gè)磁盤的文件。它告訴系統(tǒng)磁盤上哪些簇是壞的或已被使用,哪些簇可以用,并存儲(chǔ)每個(gè)文件所使用的簇號(hào)。它是文件的“總調(diào)度師”。
當(dāng)DOS寫文件時(shí),首先在文件目錄中檢查是否有相同文件名,若無則使用一個(gè)文件目錄表項(xiàng),然后依次檢測FAT中的每個(gè)表項(xiàng)對(duì)應(yīng)的簇中,同時(shí)將該簇號(hào)寫入文件目錄表項(xiàng)相的26-27字節(jié),如文件長度不止一簇,則繼續(xù)向后尋找可用簇,找到后將其簇號(hào)寫入上一次找到的表項(xiàng)中,如此直到文件結(jié)束,在*一簇的表項(xiàng)里填上FFF8H,形成單向鏈表。
DOS刪除文件時(shí)只是把文件目錄表中的該文件的表項(xiàng)第0個(gè)字節(jié)改為E5H,表此項(xiàng)已被刪除,并在文件分配表中把該文件占用的各簇的表項(xiàng)清0,并釋放空間。其文件的內(nèi)容仍然在盤上,并沒有被真正刪除,這就是undelete.exe,unerase.exe等一類恢復(fù)刪除工具能起作用的原因。
文件分配表在系統(tǒng)中的地位十分重要,用戶*不要去修改它,以免誤操作帶來嚴(yán)重的后果。
典型的FAT32表:
F8 FF FF FF FF FF FF FF 96 C4 00 00 FF FF FF 0F
FF FF FF 0F 06 00 00 00 FF FF FF 0F 08 00 00 00
09 00 00 00 0A 00 00 00 0B 00 00 00 0C 00 00 00
0D 00 00 00 0E 00 00 00 0F 00 00 00 10 00 00 00
FF FF FF 0F 00 00 00 00 FF FF FF 0F 14 00 00 00
15 00 00 00 FF FF FF 0F FF FF FF 0F FF FF FF 0F
19 00 00 00 1A 00 00 00 1B 00 00 00 FF FF FF 0F
00 00 00 00 1E 00 00 00 FF FF FF 0F 20 00 00 00
FF FF FF 0F 22 00 00 00 23 00 00 00 24 00 00 00
25 00 00 00 26 00 00 00 27 00 00 00 28 00 00 00


   文件目錄表(File Directory Table),即根目錄區(qū),又稱為ROOT區(qū):
   緊跟在FAT2的下一個(gè)扇區(qū),長度為32個(gè)扇區(qū)(256個(gè)表項(xiàng))。如果支持長文件名,則每個(gè)表項(xiàng)為64個(gè)字節(jié),其中,前32個(gè)字節(jié)為長文件鏈接說明;后32個(gè)字節(jié)為文件屬性說明,包括文件長度、起始地址、日期、時(shí)間等。如不支持長文件名,則每個(gè)表項(xiàng)為32個(gè)字節(jié)的屬性說明。
值得注意的是:
1,FAT32沒有儲(chǔ)存目錄的目錄區(qū),而 FAT16儲(chǔ)存根目錄并把子目錄放到數(shù)據(jù)區(qū)。
  2,表示目錄的目錄項(xiàng)指出根目錄地址同時(shí)長度字節(jié)為0,表示文件的目錄項(xiàng)指出數(shù)據(jù)地址。

典型的FAT32根目錄:
30 30 30 30 30 30 20 20 20 20 20 10 00 12 3C 7C
39 2B 39 2B 05 00 3D 7C 39 2B 3A 34 00 00 00 00
              
44 4D 32 4B 44 49 53 4B 49 4D 47 20 00 96 DB 40
39 2B 39 2B 0A 00 DC 40 39 2B 88 02 5B 72 13 00
              
42 49 4E 42 49 4E 20 20 20 20 20 08 00 00 00 00
00 00 00 00 00 00 47 65 09 2B 00 00 00 00 00 00

 

000000子目錄

注意OS7前的怪字符為E5H,表示被刪除,被刪除文件仍舊能夠找到開始簇,數(shù)據(jù)恢復(fù)就依靠這一特點(diǎn)。

數(shù)據(jù)區(qū)(Data Area):    緊跟在FDT的下一個(gè)扇區(qū),直到邏輯盤的結(jié)束地址。

 


由上圖可以想到,即使目錄被破壞仍舊可能從磁盤里把信息讀出。

到現(xiàn)在為止,硬盤數(shù)據(jù)結(jié)構(gòu)的理論部分已經(jīng)講完。
  數(shù)據(jù)恢復(fù)主要是手動(dòng)找出FAT、目錄、數(shù)據(jù)的對(duì)應(yīng)關(guān)系或直接找到數(shù)據(jù),現(xiàn)在已經(jīng)有完善的磁盤編輯器幫助我們做到這一點(diǎn),使工作大大簡化了。
有只能化的恢復(fù)工具能不依靠FAT而恢復(fù)被刪除文件,比如RECOVERNT,估計(jì)是依靠Win2000的文件使用記錄。這種方法在沖啟動(dòng)之前恢復(fù)文件的

如果本頁不是您要找的課程,您也可以百度查找一下: