FAT32定義
FAT32是Windows系統硬盤分區格式的一種。這種格式采用32位的文件分配表,使其對磁盤的管理能力大大增強,突破了FAT16對每一個分區的容量只有2 GB的限制。由于現在的硬盤生產成本下降,其容量越來越大,運用FAT32的分區格式后,我們可以將一個大硬盤定義成一個分區而不必分為幾個分區使用,大大方便了對磁盤的管理。目前已被性能更優異的NTFS分區格式所取代。
FAT32概述
性能特點
FAT32具有一個最大的優點:在一個不超過8GB 的分區中,FAT32分區格式的每個簇容量都固定為4KB,與FAT16相比,可以大大地減少磁盤的浪費,提高磁盤利用率。目前,支持這一磁盤分區格式的操作系統有Win95、Win98、Win2000、Win2003和Win7。但是,這種分區格式也有它的缺點,首先是采用FAT32格式分區的磁盤,由于文件分配表的擴大,運行速度比采用FAT16格式分區的磁盤要慢。
約束
windows 2000和windows XP能夠讀寫任何大小的FAT32文件系統,但是這些平臺上的格式化程序只能創建最大32GB的FAT32文件系統。
在dos系統下可直接訪問fat32分區,而ntfs分區則不能在dos下直接訪問。
缺點
但FAT有一個嚴重的缺點:當文件刪除后寫入新資料,FAT不會將檔案整理成完整片段再寫入,長期使用后會使檔案資料變得逐漸分散,而減慢了讀寫速度。硬盤碎片整理是一種解決方法,但必須經常整理來保持FAT文件系統的效率。
主磁盤結構
主啟動區 文件 分配表 #1 文件 分配表 #2 根目錄 其他所有資料...剩下磁盤空間
一個FAT文件系統包括四個不同的部分。
1、保留扇區
位于最開始的位置。第一個保留扇區是引導區(分區啟動記錄)。它包括一個稱為基本輸入輸出參數塊的區域(包括一些基本的文件系統信息尤其是它的類型和其它指向其它扇區的指針),通常包括操作系統的啟動調用代碼。保留扇區的總數記錄在引導扇區中的一個參數中。引導扇區中的重要信息可以被DOS和OS/2中稱為驅動器參數塊的操作系統結構訪問。
2、FAT區域
它包含有兩份文件分配表,這是出于系統冗馀考慮,盡管它很少使用,即使是磁盤修復工具也很少使用它。它是分區信息的映射表,指示簇是如何存儲的。
3、根目錄區域
它是在根目錄中存儲文件和目錄信息的目錄表。在FAT32下它可以存在分區中的任何位置,但是在早期的版本中它永遠緊隨FAT區域之后。
4、數據區域
這是實際的文件和目錄數據存儲的區域,它占據了分區的絕大部分。通過簡單地在FAT中添加文件鏈接的個數可以任意增加文件大小和子目錄個數(只要有空簇存在)。然而需要注意的是每個簇只能被一個文件占有,這樣的話如果在32KB大小的簇中有一個1KB大小的文件,那么31KB的空間就浪費掉了。
啟動扇區
格式如下
偏移(字節) 長度(字節) 說明
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 12 保留未使用 (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)。
FAT32特點
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 功能
與以前的 FAT 文件系統實現相比,FAT32 提供了以下增強功能: · FAT32 支持最大為 2 TB 的驅動器。
注意:Microsoft Windows 2000 僅能支持最大為 32 GB 的 FAT32 分區。
· FAT32 可以更高效地使用空間。FAT32 使用較小的簇(即,對于大小在 8 GB 以內的驅動器,使用 4 KB 的簇),這與大的 FAT 或 FAT16 驅動器相比,可將磁盤空間的使用率提高 10% 到 15%。
· FAT32 更穩定可靠。FAT32 可以重新定位根文件夾,而且它使用文件分配表的備份副本,而不是使用默認副本。此外,FAT32 驅動器上的引導記錄也得到擴展,包括了關鍵數據結構的備份副本。因此,與現有的 FAT16 驅動器相比,FAT32 驅動器不容易受單點故障的影響。
· FAT32 更靈活。FAT32 驅動器上的根文件夾是普通的簇鏈,因此它可以位于驅動器上的任何位置。以前對根文件夾數量的限制不復存在。此外,可以禁用文件分配表鏡像,這樣就可以讓文件分配表的副本而不是讓第一個文件分配表處于活動狀態。這些功能允許您動態重調 FAT32 分區的大小。不過要注意,雖然 FAT32 的設計允許這一功能,但 Microsoft 將不在初始版本中實現此功能。
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 擴展。
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;184006
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.
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;314463
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轉NTFS方法
?
?
?
評論
查看更多