FAT32

FAT32

FAT32是Windows系統硬碟分區格式的一種。這種格式採用32位的檔案分配表,使其對磁碟的管理能力大大增強,突破了FAT16對每一個分區的容量只有2 GB的限制。由於現在的硬碟生產成本下降,其容量越來越大,運用FAT32的分區格式後,我們可以將一個大硬碟定義成一個分區而不必分為幾個分區使用,大大方便了對磁碟的管理。但由於FAT32分區內無法存放大於4GB的單個檔案,且性能不佳,易產生磁碟碎片。目前已被性能更優異的NTFS分區格式所取代。

參數

分區標識: 0x0B, 0x0C(MBR)EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(GPT)

FAT32FAT32

最大單檔案大小: 4 GB (Fat16分區是2 GB )

最大檔案數量: 268,435,437

最長檔名限制: 8.3 或者 長檔案名稱255個字元

最大卷大小: 8 TB (在windows 2000和windows XP環境下格式化程式只能創建最大32GBFAT32檔案系統,不過可以用如PQ等分區軟體分出大於32GB的FAT32分區,大於32GB的FAT32分區在WIN2000/XP下使用完全正常)

記錄日期: 創建、修改、訪問

日期範圍: 1980年1月1日至2107年12月31日

屬性: 唯讀,隱藏,系統,卷標,子目錄,檔案

透明加密:不支持

透明壓縮:不支持

訪問許可:無限制

啟動扇區

格式如下

偏移(位元組) 長度(位元組) 說明

0x00 3 跳轉指令(跳過開頭一段區域)

0x03 8 OEM名稱(空格補齊)。 MS-DOS檢查這個區域以確定使用啟動記錄中的哪一部分數據。常見值是IBM 3.3(在“IBM”和“3.3”之間有兩個空格)和MSDOS5.0.

0x0b 2 每個扇區的位元組數。基本輸入輸出系統參數塊從這裡開始。

0x0d 1 每簇扇區數

0x0e 2 保留扇區數(包括啟動扇區)

0x10 1 檔案分配表數目

0x11 2 最大根目錄條目個數

0x13 2 總扇區數(如果是0,就使用偏移0x20處的4位元組值)

0x15 1 介質描述 0xF8 單面、每面80磁軌、每磁軌9扇區

0xF9 雙面、每面80磁軌、每磁軌9扇區

0xFA 單面、每面80磁軌、每磁軌8扇區

0xFB 雙面、每面80磁軌、每磁軌8扇區

0xFC 單面、每面40磁軌、每磁軌9扇區

0xFD 雙面、每面40磁軌、每磁軌9扇區

0xFE 單面、每面40磁軌、每磁軌8扇區

0xFF 雙面、每面40磁軌、每磁軌8扇區

同樣的介質描述必須在重複複製到每份FAT的第一個位元組。有些作業系統(MSX-DOS 1.0版)全部忽略啟動扇區參數,而僅僅使用FAT的第一個位元組的介質描述確定檔案系統參數。

0x16 2 每個檔案分配表的扇區(FAT16)

0x18 2 每磁軌的扇區

0x1a 2 磁頭數

0x1c 4 隱藏扇區

0x20 4 總扇區數(如果超過65535,參見偏移0x13)

0x24 4 每個檔案分配表的扇區(FAT32)。擴展基本輸入輸出系統參數塊從這裡開始。

0x24 1 物理驅動器個數(FAT16)

0x25 1 當前磁頭(FAT16)

0x26 1 簽名(FAT16)

0x27 4 ID (FAT16)

0x28 2 Flags (FAT32)

0x2a 2 版本號 (FAT32)

0x2c 4 根目錄啟始簇 (FAT32)

0x2b 11 卷標(非FAT32)

0x30 2 FSInfo 扇區 (FAT32)

0x32 2 啟動扇區備份 (FAT32)

0x34 2 保留未使用 (FAT32)

0x36 8 FAT檔案系統類型(如FAT、FAT12、FAT16)

0x3e 2 作業系統自引導代碼

0x40 1 BIOS設備代號 (FAT32)

0x41 1 未使用 (FAT32)

0x42 1 標記 (FAT32)

0x43 4 卷序號 (FAT32)

0x47 11 卷標(FAT32)

0x52 8 FAT檔案系統類型(FAT32)

0x1FE 2 扇區結束符(0x55 0xAA)

這裡描述的啟動扇區能在如OS/2 1.3的啟動盤上看到。早期的版本使用一個較短的基本輸入輸出系統參數塊,它們的啟動代碼在前面開始(如OS/2 1.1中是偏移0x2b)。

檔案分配

一個分區分成同等大小的簇,也就是連續空間的小塊。簇的大小隨著FAT檔案系統的類型以及分區大小而不同,典型的簇大小介於2KB到32KB之間。每個檔案根據它的大小可能占有一個或者多個簇;這樣,一個檔案就由這些這些(稱為單鍊表)簇鏈所表示。然而,這些鏈並不一定一個接著一個在磁碟上存儲,它們經常是在整個數據區域零散的儲存。

檔案分配表(FAT)是映射到分區每個簇的條目列表。每個條目記錄下面五種信息中的一種。

●鏈中下一個簇的地址

●一個特殊的檔案結束符(EOF)符號指示鏈的結束

●一個特殊的符號標示壞簇

●一個特殊的符號標示保留簇

●0來表示空閒簇

FAT32條目值:

FAT32 描述

0x?0000000 空閒簇

0x?0000001 保留簇

0x?0000002 - 0x?FFFFFEF 被占用的簇;指向下一個簇

0x?FFFFFF0 - 0x?FFFFFF6 保留值

0x?FFFFFF7壞簇

0x?FFFFFF8 - 0x?FFFFFFF 檔案最後一個簇

注意FAT32隻使用32位中的28位。高4位通常是0但它們是保留位,不要更改它們。在上面的表中它們用問號表示。

目錄表

目錄表是一個表示目錄的特殊類型檔案(現今通常稱為資料夾)。它裡面保存的每個檔案或目錄使用表中的32位條目表示。每個條目記錄名字、擴展名、屬性(檔案、目錄、隱藏、唯讀、系統和卷)、創建的日期和時間、檔案/目錄數據第一個簇的地址,最後是檔案/目錄的大小。

除了FAT12和FAT16檔案系統中的根目錄表占據特殊的根目錄區域位置之外,所有其它的目錄表都存在數據區域。

合法的DOS檔案名稱包括下面一些字元:

●大寫字母A-Z

●數字0-9

●空格(儘管結尾的空格被作為填充而不是檔案名稱的一部分)

●! # $ amp;amp; ( ) - @ ^ _ ` { } ~ '

●數值 128-255

●DOS檔案名稱位於OEM字元集。

長檔案名稱(LFN)使用一個技巧存儲在FAT檔案系統上——在目錄表中添加假的條目。這些條目使用一個普通檔案無法使用的卷標屬性標識,普通檔案無法使用是由於它們被大多數舊的MS-DOS程式忽略。很顯然,一個只包含卷標的目錄被當作空卷,這樣就允許刪除;使用長檔案名稱創建的檔案在從普通的DOS刪除就會發生這樣的情形。

校驗和也允許檢驗長檔案名稱是否與8.3檔案名稱匹配;當一個檔案刪除之後使用DOS在同一個目錄位置重新創建之後就會出現不匹配現象。校驗和使用下面的算法計算。(注意pFcbName是指向如正常目錄條目中所顯示的檔案名稱的指針,例如前八個字元是檔案名稱,最後三個是擴展名。點是隱含的。檔案名稱中沒有使用的空間將使用空格(ASCII 0x20)補齊。例如,“Readme.txt”將記錄為"README TXT"。

特點

FAT32實際上是檔案分區表採取的一種形式,它是相對於FAT16而言的。眾所周知,Dos和Windows95採用的都是FAT16格式。至於FAT32,準確地說是在Windows95OSR2中第一次出現的,之所以沒有宣傳是因為當時該檔案系統還不夠成熟,尚處於試探階段。那么為什麼一定要推出FAT32呢?這主要是由其自身的優越性決定的。

首先,它可以大大地節約磁碟空間。檔案在磁碟上是以簇的方式存放的,簇里存放了一個檔案就不能再存放另外的檔案。假如一個磁碟的分區大小為512MB,基於FAT16的系統的簇的大小為8KB,而FAT32系統的簇的大小僅是4KB,那么,我們存放一個3KB的檔案,FAT16系統就會有5KB的空間被浪費,而FAT32的浪費則會少一些。如果分區達到1GB,FAT16的簇為16KB,而FAT32還是4KB,節省的也就更多了。

在推出FAT32檔案系統之前,通常PC機使用的檔案系統是FAT16。像基於MS-DOS,Win 95等系統都採用了FAT16檔案系統。在Win 9X下,FAT16支持的分區最大為2GB。我們知道計算機將信息保存在硬碟上稱為“簇”的區域內。使用的簇越小,保存信息的效率就越高。在FAT16的情況下,分區越大簇就相應的要增大,存儲效率就越低,勢必造成存儲空間的浪費。並且隨著計算機硬體和套用的不斷提高,FAT16檔案系統已不能很好地適應系統的要求。在這種情況下,推出了增強的檔案系統FAT32。同FAT16相比,FAT32主要具有以下特點:

1. 同FAT16相比FAT32最大的優點是可以支持的磁碟大小達到2TB(2048GB),但是不能支持小於512MB的分區。基於FAT32的Win 2000可以支持分區最大為32GB;而基於 FAT16的Win 2000支持的分區最大2GB。

2. 由於採用了更小的簇,FAT32檔案系統可以更有效率地保存信息。如兩個分區大小都為2GB,一個分區採用了FAT16檔案系統,另一個分區採用了FAT32檔案系統。採用FAT16的分區的簇大小為32KB,而FAT32分區的簇只有4KB的大小。這樣FAT32就比FAT16的存儲效率要高很多,通常情況下可以提高15%。

3. FAT32檔案系統可以重新定位根目錄和使用FAT的備份副本。另外FAT32分區的啟動記錄被包含在一個含有關鍵數據的結構中,減少了計算機系統崩潰的可能性。

稍作補充:

兼容性

軟硬體的兼容問題

為了與現有程式、網路和設備驅動程式保持最大程度的兼容性,FAT32 儘可能不改動現有的 Windows 體系結構、內部數據結構、應用程式編程接口(API) 和磁碟上的格式。然而,因為需要 4 位元組來存儲簇值,所以許多內部的和磁碟上的數據結構以及發布的 API 都作了修改或擴展。某些情況下,現有的 API 無法在 FAT32 驅動器上運行。大多數程式不會受這些更改的影響。現有工具和驅動程式在 FAT32 驅動器上應能夠繼續正常運行。不過,MS-DOS 塊設備驅動程式(例如 Aspidisk.sys)和磁碟工具需要經過修改才能支持 FAT32 驅動器。

所有 Microsoft 捆綁磁碟工具(格式化、Fdisk、碎片整理、基於 MS-DOS 和 Windows 的磁碟掃描)已經過修改,可以在 FAT32 中正常運行。此外,Microsoft 正在與一些主要設備驅動程式和磁碟工具廠商協作,幫助他們修改其產品以支持 FAT32。

注意:不能使用 Microsoft DriveSpace 或 DriveSpace 3 壓縮 FAT32 卷。

FAT32 性能

轉換到 FAT32 檔案系統是您可以在基於 Windows 98 的計算機上實現的最大的一種性能增強。

雙啟動計算機

目前,在 Microsoft 作業系統中,只有 Windows 95 OSR2、Windows 98、Windows 2000 和 Windows Me 可以訪問 FAT32 卷。MS-DOS、Windows 95 原始版和 Windows NT 4.0不識別 FAT32 分區,它們無法從 FAT32 卷啟動。此外,如果使用其他作業系統(例如,Windows 95 或 MS-DOS 啟動盤)啟動計算機,也無法正確訪問 FAT32 卷。

Windows 95 OSR2 和 Windows 98 可以在實模式下啟動(例如為了運行遊戲)並可以使用 FAT32 卷。

創建 FAT32 驅動器

在 Windows 95 OSR2、Windows 98 和 Windows Me 中,如果在大小超過 512 兆位元組 (MB) 的硬碟上運行 Fdisk 工具,Fdisk 將提示您是否啟用大磁碟支持。如果回答“是”(啟用大磁碟支持),您創建的任何大於 512 MB 的分區都將被標記為 FAT32 分區。

Windows 98 和 Windows Me 中還帶有一種 FAT32 轉換工具,您可以使用該工具將現有驅動器轉換為 FAT32 檔案系統。要使用該轉換工具,請按照下列步驟操作: 1. 單擊開始,依次指向程式、附屬檔案、系統工具,然後單擊驅動器轉換器 (FAT32)。

2. 單擊下一步。

3. 單擊希望轉換為 FAT32 檔案系統的驅動器,然後單擊下一步。

4. 按照螢幕上的說明操作。

支持範圍

Microsoft 將支持 FAT32 檔案系統的功能,以實現無錯讀取和在實模式或保護模式下保存檔案。Microsoft 支持 Windows 95 中所帶的實模式和保護模式工具。

對於舊式(較早的)程式,如果它們無法在 FAT32 卷上安裝,或者無法正確保存檔案或讀取檔案,則您必須與軟體包的生產廠商聯繫。

注意:雖然 FAT32 檔案系統所支持的硬碟容量最高可以達到 2 TB,但有些硬碟可能會因為計算機基本輸入/輸出系統 (BIOS) INT13 接口的限制而無法包含大於 7.8 GB 的可啟動分區。請與硬體製造商聯繫,以確定您計算機的 BIOS 是否支持更新後的 INT13 擴展。

Windows 作業系統使用 FAT32 檔案系統時存在以下限制: · 簇不能是 64 千位元組 (KB) 或更大。如果簇為 64 KB 或更大,有些程式(例如安裝程式)在計算磁碟空間時可能會出錯。

· 卷必須包含至少 65,527 個簇,才能使用 FAT32 檔案系統。您不能增加使用 FAT32 檔案系統的卷上的簇大小,以致於該卷的最終簇數小於 65,527。

· 在使用 FAT32 檔案系統的卷上,簇最多是 268,435,445 個。對於檔案分配表 (FAT) 的空間,每簇最大為 32 KB,據此計算出的最大磁碟大小大約為 8 太位元組 (TB)。

· Microsoft Windows 95 和 Microsoft Windows 98 附帶的“磁碟掃描”工具是 16 位程式。這樣的程式有一個記憶體塊,該記憶體塊的最大分配大小等於 16 MB 減去 64 KB。因此,Windows 95 或 Windows 98 的“磁碟掃描”工具無法處理使用 FAT32 檔案系統(其 FAT 大小大於 16 MB 和 64 KB 之差)的卷。使用 FAT32 檔案系統的卷上的 FAT 項使用 4 位元組,因此 ScanDisk 無法處理使用定義的簇數大於 4,177,920(包括兩個保留的簇)的 FAT32 檔案系統的卷上的 FAT。將 FAT 本身包括在內,按每簇最大 32 KB 計算,卷大小為 127.53 吉位元組 (GB)。

· 您不能減少使用 FAT32 檔案系統的卷上的簇大小,以致於 FAT 的最終大小大於 16 MB 與 64 KB 之差。

· 在 Windows 2000 中您無法使用 FAT32 檔案系統格式化大於 32 GB 的卷。Windows 2000 FastFAT 驅動程式可以安裝和支持使用 FAT32 檔案系統且大於 32 GB的卷(受到其他限制),但是您不能使用格式化工具創建一個這樣的卷。這種現象是設計使然。如果需要創建大於 32 GB 的卷,請改用 NTFS 檔案系統。

備註:在嘗試格式化大於 32 GB 的 FAT32 分區時,在進程快結束時格式化會失敗,並出現以下錯誤:

Logical Disk Manager:Volume size too big.

Windows XP 中 FAT32 檔案系統的限制

當您在 Windows XP 中使用 FAT32 檔案系統時,請注意下列限制: · 簇不能等於或大於 64 KB。如果簇大小為 64 KB 或更大,則有些程式(例如安裝程式)可能會不正確地計算磁碟空間。

· FAT32 卷必須至少包含 65,527 個簇。您不能增加使用 FAT32 檔案系統的卷上的簇大小,這樣會導致卷上的簇數少於 65,527 個。

· 如果考慮到以下可變因素,則最大磁碟大小大約為 8 TB:一個 FAT32 卷上允許的最大簇數為 268,435,445,每個簇最大為 32 KB,另外還有檔案分配表 (FAT) 所需的空間。

· 您不能減少 FAT32 卷上的簇大小,這樣會導致 FAT 的大小大於 16 MB 減去 64 KB。

· 在 Windows XP 安裝過程中,您不能使用 FAT32 檔案系統格式化大於 32 GB 的卷。Windows XP 可以裝入和支持大於 32 GB 的 FAT32 卷(受到其他限制),但是您不能在安裝期間使用 Format 工具創建大於 32 GB 的 FAT32 卷。如果您需要格式化大於 32 GB 的卷,請使用 NTFS 檔案系統來格式化。另一種方法是從 Microsoft Windows 98 或 Microsoft Windows Millennium Edition (Me) 啟動盤啟動,然後使用該磁碟上包含的 Format 工具。

有關如何使用 Microsoft Windows 98 或 Microsoft Windows Millennium Edition (Me) 啟動盤格式化硬碟的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:

255867 如何使用 Fdisk 和 Format 工具對硬碟進行分區或重新分區

注意:當您在 Windows XP 安裝過程中試圖格式化大於 32GB 的 FAT32 分區時,在格式化過程快結束時操作將會失敗,並且您可能會收到以下錯誤信息:

Logical Disk Manager:Volume size too big.

· MS-DOS(Microsoft Windows 95 的原始版本)和 Microsoft Windows NT 4.0 及更低版本都不能識別 FAT32 分區,因此無法從 FAT32 卷啟動。

· 您不能在 FAT32 分區上創建大於 (2^32)-1 位元組(即 4 GB 減去 1 個位元組)的檔案。

FAT32格式理論上可以支持128TB的磁碟,即簇的大小乘簇的數量32K*(2^32),但由於受到軟硬體的限制和其他方面的原因,不可能達到理論值。

FAT32數據恢復原理

由於FAT與FDT對數據的鏈式存儲管理的,可以通過鏈式搜尋查找。只有FAT表和FDT配合使用,才能可以統一管理整個磁碟檔案,也就可以準確定位被刪除的檔案的確切位置。

在 Window作業系統下對檔案的刪除工作,是將FDT中該檔案的第一個字元改“E5”來表示該檔案已經刪除,同時改寫引導扇區的第二個扇區中表示該分區點用空間大小的相應信息。因此,在設計的時候,根據其存儲結構,對相應的地方進行修改,搜尋E5刪除標誌,再按被刪檔案數據鏈進行恢復。

具體步驟如下:

(1) 獲取磁碟分區類型,分區存儲空間,FAT、FDT、檔案等存儲的起始扇區。

(2) 獲取FAT、FDT表項內的簇信息,即簇的刪除、未使用、壞簇、以及檔案占用簇的起始扇區信息等。

(3) 通過FAT、FDT計算不同檔案在物理扇區的起始位置,包括有標識E5的刪除檔案起始位置、檔案類型、占用大小和存儲的所在簇。

(4) 改變刪除位,通過第3步得到的結果,並按FAT表對檔案進行鏈式查找並快取,當達到檔案所在簇尾時,停止操作。

(5) 對存儲的數據進行轉換,生成檔案。

(6) 對檔案進行異區存儲。 而作業系統在讀寫檔案時,會根據FDT中的起始單元,結合FAT表就可以知道檔案在磁碟的具體位置,然後順序讀取每個簇的內容,檔案的查找如圖4-1所示。具體的方法如下:

(1)在檔案目錄項FDT中找到存放在FAT表中的檔案File的地址M(2)2*M得到FAT表中File檔案數據鍊表首地址B。

(3)在FAT表中的B地址中,存放有檔案FILE數據鍊表頭P。

(4)P*4得到在FAT表項中的下一個偏移位置,即下一個數據鍊表。

(5)如果下一個數據鍊表內的信息為0FFFFFFH,則表示檔案存儲已經結束圖4-1查找檔案流程需要說明的是,新建檔案時,系統在FAT表中查找未用的簇記錄在新檔案目錄項中做為首簇;FDT檔案目錄項中,第0~7位元組為檔案名稱(若有剩餘位元組用20填充)第1位元組表明了該檔案的狀態,第1位元組又表明了檔案的狀態,00HE5H及其它字元。當該位元組為00H時,表示該目錄項是空表項,可以使用。當為E5H時,表示該目錄項以前用過,但是檔案被已經刪除了。

小知識

在FAT32下,一個目錄只能夠容納65536個檔案。微軟的官方文檔沒有給出。

相關搜尋

熱門詞條

聯絡我們