FAT16的BPB(BIOS Parameter Block)表,描述邏輯盤(pán)結構組成,包含隱藏扇區數目(從0-1-1開(kāi)始計算)、FAT扇區數、FAT拷貝數、硬盤(pán)磁頭總數、根目錄表項最大值等。FAT32系統中,BPB表的偏移與FAT16不同,但表項基本相同。整個(gè)隱藏扇區部分都作為邏輯盤(pán)的描述區域。
硬盤(pán)BPB主要結構說(shuō)明:
(Cylinder柱面/磁道-Side/Head磁頭-Sector扇區地址以下簡(jiǎn)稱(chēng)為?-?-?)
主分區 名稱(chēng) 地址 長(cháng)度(扇區) 主引導記錄(Main Boot Record) 0-0-1 1 系統扇區(System Secotrs) 0-0-2 0-0-63 62 引導扇區(Boot) 0-1-1 1
擴展分區 名稱(chēng) 地址 長(cháng)度(扇區) 擴展分區(Extend Partition) ?-y-1 1 系統扇區(System Secotrs) ?-y-2 ?-y-63 62 引導扇區(Boot) ?-(y+1)-1 1 其后各項與主分區相同……
隱藏扇區(Hidden Secotrs): FAT16 0-1-1 1 FAT32 0-1-1 32
文件分配表(File Allocation Table): FAT16 0-1-2 根據邏輯盤(pán)容量變化 FAT32 0-1-33 根據邏輯盤(pán)容量變化
說(shuō)明:
1. FAT16的每個(gè)表項由2字節(16位)組成,通常每個(gè)表項指向的簇包含64個(gè)扇區,即32K字節。 邏輯盤(pán)容量最大為2047MB。
2. FAT32的每個(gè)表項由4字節(32位)組成,通常每個(gè)表項指向的簇包含8個(gè)扇區,即4K字節。邏輯盤(pán)容量最小為512MB。
3. 對于C分區,在MBR的偏移01c2H處,FAT16為06H,FAT32為0CH 深入邏輯分區之文件分配表(FAT)
FAT是DOS、Windows9X系統的文件尋址格式,位于DBR之后。 在解釋文件分配表的概念的時(shí)候,我們有必要談?wù)劥兀–luster)的概念。
文件占用磁盤(pán)空間,基本單位不是字節而是簇。一般情況下,軟盤(pán)每簇是1個(gè)扇區,硬盤(pán)每簇的扇區數與硬盤(pán)的總容量大小有關(guān),可能是4、8、16、32、64……同一個(gè)文件的數據并 不一定完整地存放在磁盤(pán)的一個(gè)連續的區域內,而往往會(huì )分成若干段,像一條鏈子一樣存放。這種存儲方式稱(chēng)為文件的鏈式存儲。由于硬盤(pán)上保存著(zhù)段與段之間的連 接信息(即FAT),操作系統在讀取文件時(shí),總是能夠準確地找到各段的位置并正確讀出。為了實(shí)現文件的鏈式存儲,硬盤(pán)上必須準確地記錄哪些簇已經(jīng)被文件占 用,還必須為每個(gè)已經(jīng)占用的簇指明存儲后繼內容的下一個(gè)簇的簇號。對一個(gè)文件的最后一簇,則要指明本簇無(wú)后繼簇。這些都是由FAT表來(lái)保存的,表中有很多 表項,每項記錄一個(gè)簇的信息。由于FAT對于文件管理的重要性,所以為了安全起見(jiàn),FAT有一個(gè)備份, 即在原FAT的后面再建一個(gè)同樣的FAT。初形成的FAT中所有項都標明為“未占用”,但如果磁盤(pán)有局部損壞,那么格式化程序會(huì )檢測出損壞的簇,在相應的 項中標為“壞簇”,以后存文件時(shí)就不會(huì )再使用這個(gè)簇了。FAT的項數與硬盤(pán)上的總簇數相當,每一項占用的字節數也要與總簇數相適應,因為其中需要存放簇 號。
FAT的格式有多種,最為常見(jiàn)的是FAT16和FAT32。當一個(gè)磁盤(pán)Format后,在其邏輯0扇區(即BOOT扇區)后面的幾個(gè) 扇區中存在著(zhù)一個(gè)重要的數據表—文件分配(FAT),文件分配表一式兩份,占據扇區的多小憑磁盤(pán)類(lèi)型大小而定。顧名思義,文件分配表是用來(lái)表示磁盤(pán)問(wèn)件的 空分配信息的。它不對引導區,文件目錄的信息進(jìn)行表示,也不真正存儲文件內容。
我們知道磁盤(pán)是由一個(gè)一個(gè)扇區組成的,若干個(gè)扇區合為一個(gè) 簇,文件存取是以簇為單位的,哪怕這個(gè)文件只有1個(gè)字節。每個(gè)簇在文件分配表中都有對應的表項,簇號即為表項號,每個(gè)表項占1.5個(gè)字節(磁盤(pán)空間在 10MB以下)或2個(gè)字節(磁盤(pán)空間在10MB以上)。為了方便起見(jiàn),以后所說(shuō)的表項都是指2個(gè)字節的。
FAT表的開(kāi)始由介質(zhì)描述符+一串“已占用”標志組成:
FAT16硬盤(pán)----F8 FF FF 7F
FAT32硬盤(pán)----F8 FF FF 0F FF FF FF 0F
每個(gè)有效的FAT結構區包含兩個(gè)完全相同的拷貝:FAT1、FAT2
第0字節:表頭,表磁盤(pán)類(lèi)型。FFH雙面軟盤(pán),每次道8扇區FEH單面軟盤(pán),每磁道8扇區FDH雙面軟盤(pán),每磁道9扇區FCCH單面軟盤(pán),每磁道9扇區FC8H硬盤(pán)
第1~2字節:(表項號1)表示第一簇狀態(tài),因第一簇被系統占據,故此兩字節為FFFFH
第3~4字節:(表項號2)表示第二簇狀態(tài),若為FFFH表此簇為壞的,DOS已標記為不能用;0000H表示此簇為空,可以用;FFF8H表不能示該簇為文件的最后一簇;其余數字表示文件的下一個(gè)簇號,注意高字節在后,低字節在前。
第5~6字節:(表項號3)表示第三簇狀態(tài),同上。
注意
不 要把表項內的數字誤認為表示當前簇號,而應是該文件的下一個(gè)簇的簇號。.高字節在后,低字節在前是一種存儲數字方式,讀出時(shí)應對其進(jìn)行調整。是如兩字節 12H,34H,應調整為3412H。文件分配表與文件目錄(FDT)相配合,可以統一管理整個(gè)磁盤(pán)的文件。它告訴系統磁盤(pán)上哪些簇是壞的或已被使用,哪 些簇可以用,并存儲每個(gè)文件所使用的簇號。它是文件的“總調度師”。
當DOS寫(xiě)文件時(shí),首先在文件目錄中檢查是否有相同文件名,若無(wú)則使 用一個(gè)文件目錄表項,然后依次檢測FAT中的每個(gè)表項對應的簇中,同時(shí)將該簇號寫(xiě)入文件目錄表項相的26-27字節,如文件長(cháng)度不止一簇,則繼續向后尋找 可用簇,找到后將其簇號寫(xiě)入上一次找到的表項中,如此直到文件結束,在最后一簇的表項里填上FFF8H,形成單向鏈表。
DOS刪除文件時(shí)只是把文件目錄表中的該文件的表項第0個(gè)字節改為E5H,表此項已被刪除,并在文件分配表中把該文件占用的各簇的表項清0,并釋放空間。其文件的內容仍然在盤(pán)上,并沒(méi)有被真正刪除,這就是undelete.exe,unerase.exe等一類(lèi)恢復刪除工具能起作用的原因。
文件分配表在系統中的地位十分重要,用戶(hù)最好不要去修改它,以免誤操作帶來(lái)嚴重的后果。 深入邏輯分區之文件目錄表(FDT)
文件目錄表(File Directory Table)
即根目錄區,又稱(chēng)為ROOT區緊 跟在FAT2的下一個(gè)扇區,長(cháng)度為32個(gè)扇區(256個(gè)表項)。如果支持長(cháng)文件名,則每個(gè)表項為64個(gè)字節,其中,前32個(gè)字節為長(cháng)文件鏈接說(shuō)明;后32 個(gè)字節為文件屬性說(shuō)明,包括文件長(cháng)度、起始地址、日期、時(shí)間等。如不支持長(cháng)文件名,則每個(gè)表項為32個(gè)字節的屬性說(shuō)明。
值得注意的是:
FAT32沒(méi)有儲存目錄的目錄區,而 FAT16儲存根目錄并把子目錄放到數據區。表示目錄的目錄項指出根目錄地址同時(shí)長(cháng)度字節為0,表示文件的目錄項指出數據地址。
注意:DOS7前的怪字符為E5H,表示被刪除,被刪除文件仍舊能夠找到開(kāi)始簇,數據恢復就依靠這一特點(diǎn)。
數據區(Data Area):
緊跟在FDT的下一個(gè)扇區,直到邏輯盤(pán)的結束地址。它存儲著(zhù)所有的數據,而且即使文件目錄被破壞仍舊可能從磁盤(pán)里把信息讀出,這也就是硬盤(pán)數據的理論依據。
到現在為止,硬盤(pán)數據結構的理論部分已經(jīng)講完。
數 據恢復主要是手動(dòng)找出FAT、目錄、數據的對應關(guān)系或直接找到數據,現在已經(jīng)有完善的磁盤(pán)編輯器幫助我們做到這一點(diǎn),使工作大大簡(jiǎn)化了。有智能化的恢復工 具能不依靠FAT而恢復被刪除文件,比如RECOVERNT,估計是依靠Win2000的文件使用記錄。這種方法在重新啟動(dòng)之前恢復文件的可能性很大。從 理論上講只要數據不被覆蓋總能被恢復的。
聯(lián)系客服