FAT32檔案系統簡明了解

2021-10-06 06:50:09 字數 4199 閱讀 2280

了解檔案在硬碟中的存放方式有利於我們更加簡便簡介的了解計算機系統。今天簡述fat32。

如圖

管理員啟動winhex,選擇tools->open disk即可開啟磁碟。

首先映入眼簾的是dbr。它佔據512位元組,描述了卷的各種性質。

0x00~0x02:3位元組,跳轉指令。

0x03~0x0a:8位元組,檔案系統標誌和版本號。

0x0b~0x0c:2位元組,每扇區位元組數

0x0d~0x0d:1位元組,每簇扇區數

0x0e~0x0f:2位元組,保留扇區數

0x10~0x10:1位元組,fat表個數

0x11~0x12:2位元組,fat32必須等於0,fat12/fat16為根目錄中目錄的個數;

0x13~0x14:2位元組,fat32必須等於0,fat12/fat16為扇區總數。

0x15~0x15:1位元組,哪種儲存介質,0xf8標準值,可移動儲存介質。

0x16~0x17:2位元組,fat32必須為0,fat12/fat16為乙個fat 表所佔的扇區數。

0x18~0x19:2位元組,每磁軌扇區數,只對於「特殊形狀」(由磁頭和柱面分割為若干磁軌)的儲存介質有效。

0x1a~0x1b:2位元組,磁頭數,只對特殊的介質才有效。

0x1c~0x1f:4位元組,ebr分割槽之前所隱藏的扇區數。

0x20~0x23:4位元組,檔案系統總扇區數。

0x24~0x27:4位元組,每個fat表占用扇區數。

0x28~0x29:2位元組,標記,此域fat32 特有。

0x2a~0x2b:2位元組,fat32版本號0.0,fat32特有。

0x2c~0x2f:4位元組,根目錄所在第乙個簇的簇號。(雖然在fat32檔案系統下,根目錄可以存放在資料區的任何位置,但是通常情況下還是起始於2號簇)

0x30~0x31:2位元組,fsinfo(檔案系統資訊扇區)扇區號0x01,該扇區為作業系統提供關於空簇總數及下一可用簇的資訊。

0x32~0x33:2位元組,備份引導扇區的位置。備份引導扇區總是位於檔案系統的6號扇區。

0x34~0x3f:12位元組,用於以後fat 擴充套件使用。

0x40~0x40:1位元組,與fat12/16 的定義相同,只不過兩者位於啟動扇區不同的位置而已。

0x41~0x41:1位元組,與fat12/16 的定義相同,只不過兩者位於啟動扇區不同的位置而已 。

0x42~0x42:1位元組,擴充套件引導標誌,0x29。與fat12/16 的定義相同,只不過兩者位於啟動扇區不同的位置而已

0x43~0x46:4位元組,卷序列號。通常為乙個隨機值。

0x47~0x51:11位元組,卷標(ascii碼),如果建立檔案系統的時候指定了卷標,會儲存在此。

0x52~0x59:8位元組,檔案系統格式的ascii碼,fat32。

0x5a~0x1fd:共410位元組,引導**。

0x1fe~0x1ff:簽名標誌。

fat檔案系統將引導**與檔案形同資料結構融合在fat32檔案系統引導扇區的512位元組中,90~509位元組為引導**,而fat12/16則是62~509位元組為引導**。同時,fat32還可以利用引導扇區後的扇區空間存放附加的引導**。乙個fat卷即使不是可引導檔案系統,也會存在引導**。

winhex自帶模板解析dbr。

緊跟在保留分割槽後面的是fat區,其由兩個完全相同的fat(file allocation table, 檔案分配表)表單組成,fat檔案系統的名字也是因此而來。fat 表是一組與資料簇號對應的列表。fat2緊跟在fat1之後,它的位置可以通過fat1的位置加上fat表的扇區數計算出來。

檔案系統分配磁碟空間按簇來分配。因此,檔案占有磁碟空間時,基本單位不是位元組而是簇,即使某個檔案只有乙個位元組,作業系統也會給它分配乙個最小單元:即乙個簇。對於大檔案,需要分配多個簇。同乙個檔案的資料並不一定完整地存放在磁碟中乙個連續地區域內,而往往會分若干段,像鍊子一樣存放。這種儲存方式稱為檔案的鏈式儲存。為了實現檔案的鏈式儲存,檔案系統必須準確地記錄哪些簇已經被檔案占用,還必須為每個已經占用的簇指明儲存後繼的下乙個簇的簇號,對於檔案的最後一簇,則要指明本簇無後繼簇。這些都是由fat表來儲存的,fat 表對應表項中記錄著它所代表的簇的有關資訊:諸如是空,是不是壞簇,是否是已經是某個檔案的尾簇等。

對於檔案系統來說,fat表有兩個重要作用:描述簇的分配狀態以及標明檔案或目錄的下一簇的簇號。

通常情況下,乙個fat檔案系統會有兩個fat表,但有時也允許只有乙個fat表,fat表的具體個數記錄在引導扇區的偏移0x10位元組處。

由於fat區緊跟在檔案系統保留區後,所以fat1在檔案系統中的位置可以通過引導記錄中偏移0x0e~0x0f位元組處的「保留扇區數」得到,即m值。

fat32中每個簇的簇位址是有32bit(4個位元組),fat表中的所有位元組位置以4位元組為單位進行劃分,並對所有劃分後的位置由0進行位址編號。0號位址與1號位址被系統保留並儲存特殊標誌內容。從2號位址開始,每個位址對應於資料區的簇號,fat表中的位址編號與資料區中的簇號相同。我們稱fat表中的這些位址為fat表項,fat表項中記錄的值稱為fat表項值。

當檔案系統被建立,也就是進行格式化操作時,分配給fat區域的空間將會被清空,在fat1與fat2的0號表項與1號表項寫入特定值。由於建立檔案系統的同時也會建立根目錄,也就是為根目錄分配了乙個簇空間,通常為2號簇,與之對應的2號fat表項記錄為2號簇,被寫入乙個結束標記。

由於簇號起始於2號,所以fat表項的0號表項與1號表項不與任何簇對應。fat32的0號表項值總是「f8ffff0f」。

1號表項可能被用於記錄髒標誌,以說明檔案系統沒有被正常解除安裝或者磁碟表面存在錯誤。不過這個值並不重要。正常情況下1號表項值為「ffffffff」或「ffffff0f」。

如果某個簇未被分配使用,它對應的fat表項值0;

當某個簇已被分配使用,則它對應的fat表項內的表項值也就是該檔案的下乙個儲存位置的簇號。如果該檔案結束於該簇,則在它的fat表項中記錄的是乙個檔案結束標記,對於fat32而言,代表檔案結束的fat表項值為0x0fffffff。

如果某個簇存在壞扇區,則整個簇會用0xffffff7標記為壞簇,這個壞簇標記就記錄在它所對應的fat表項中。

在檔案系統中新建檔案時,如果新建的檔案只占用乙個簇,為其分配的簇對應的fat表項將會寫入結束標記。如果新建的檔案不只占用乙個簇,則在其所占用的每個簇對應的fat表項中寫入為其分配的下一簇的簇號,在最後乙個簇對應的fat表象中寫入結束標記。

新建目錄時,只為其分配乙個簇的空間,對應的fat表項中寫入結束標記。當目錄增大超出乙個簇的大小時,將會在空閒空間中繼續為其分配乙個簇,並在fat表中為其建立fat錶鏈以描述它所占用的簇情況。

0號表項,0x0ffffff8,fat表起始固定標識

1號表項,0x0fffffff,不使用,預設值

2號表項,0x0fffffff,標識檔案結束,表項對應2號簇,根目錄所在簇

在兩個fat表之後就是目錄項root directory

0x00-0x07:檔名,不足8個位元組0x20補全(短檔名8.3命名規則)

0x08-0x0a:副檔名

0x0b:檔案屬性,0x20表示歸檔

0x0d:建立時間的10毫秒位

0x0e-0x0f:檔案建立時間

0x10-0x11:檔案建立日期

0x12-0x13:檔案最後訪問日期

0x14-0x15:檔案起始簇號的高16位

0x16-0x17:檔案最近修改時間

0x18-0x19:檔案最近修改日期

0x1a-0x1b:檔案起始簇號的地16位

0x1c-0x1f:檔案的長度,0x2206=8710bytes=8.5k

winhex也帶有目錄項的分析模板

資料是按簇挨個存放著的。

那麼總結來說整個卷是這樣子的

保留區扇區數[512位元組(dbr)+512位元組(fsinfo資訊)+剩下的保留區]+fat扇區數+fat扇區數+根目錄+資料區

參考:

FAT32檔案系統

windows95 osr2和windows 98開始支援fat32檔案系統,它是對早期dos的fat16檔案系統的增強,由於檔案系統的核心 檔案分配表fat由16位擴充為32位,所以稱為fat32檔案系統。在一邏輯盤 硬碟的一分割槽 超過 512 兆位元組時使用這種格式,會更高效地儲存資料,減少硬...

解析Fat32檔案系統

1.第一分區的起始扇區 2.第乙個檔案檔案配置表 fat 的位置 3.資料區域的位置 4.檔案 file1.txt 所在的簇 1 首先,用hxd開啟所要解析的fat32的檔案 2 選擇所要分析的檔案,開啟後,在起始的sector0,也就是0扇區我們就會看到該系統的主引導,在結束標誌的55aa之前的6...

NTFS與FAT32檔案系統

磁碟 包括行動硬碟 u盤 軟盤等 在格式化時都必須指定檔案系統,目前常用的檔案系統有ntfs和fat32。一 ntfs 1 概述 ntfs,即nt檔案系統。是微軟在windows nt作業系統上使用的一種檔案系統。ntfs不斷在改進,現在主流的版本是v3.1,來自windows xp。由於windo...