FAT32檔案系統

2021-04-12 20:11:07 字數 3099 閱讀 9951

windows95 osr2和windows 98開始支援fat32檔案系統,它是對早期dos的fat16檔案系統的增強,由於檔案系統的核心--檔案分配表fat由16位擴充為32位,所以稱為fat32檔案系統。在一邏輯盤(硬碟的一分割槽)超過 512 兆位元組時使用這種格式,會更高效地儲存資料,減少硬碟空間的浪費,一般還會使程式執行加快,使用的計算機系統資源更少,因此是使用大容量硬碟儲存檔案的極有效的系統。本人對windows 98下的fat32 檔案系統做了分析實驗,總體上與fat16檔案系統變化不大,現將有關變化部分簡介如下:

(一)fat32 檔案系統將邏輯盤的空間劃分為三部分,依次是引導區(boot區)、檔案分配表區(fat區)、資料區(data區)。引導區和檔案分配表區又合稱為系統區。

(二)引導區從第一扇區開始,使用了三個扇區,儲存了該邏輯盤每扇區位元組數,每簇對應的扇區數等等重要引數和引導記錄。之後還留有若干保留扇區。而fat16檔案系統的引導區只占用乙個扇區,沒有保留扇區。

(三)檔案分配表區共儲存了兩個相同的檔案分配表,因為檔案所占用的儲存空間(簇鏈)及空閒空間的管理都是通過fat實現的,fat如此重要,儲存兩個以便第乙個損壞時,還有第二個可用。檔案系統對資料區的儲存空間是按簇進行劃分和管理的,簇是空間分配和**的基本單位,即,乙個檔案總是占用若干個整簇,檔案所使用的最後一簇剩餘的空間就不再使用,而是浪費掉了。

從統計學上講,平均每個檔案浪費0.5簇的空間,簇越大,儲存檔案時空間浪費越多,利用率越低。因此,簇的大小決定了該盤資料區的利用率。fat16系統簇號用16位二進位制數表示,從0002h到ffefh個可用簇號(fff0h到ffffh另有定義,用來表示壞簇,檔案結束簇等),允許每一邏輯盤的資料區最多不超過ffedh(65518)個簇。fat32系統簇號改用32位二進位制數表示,大致從00000002h到fffffeffh個可用簇號。fat表按順序依次記錄了該盤各簇的使用情況,是一種位示圖法。

每簇的使用情況用32位二進位制填寫,未被分配的簇相應位置寫零;壞簇相應位置填入特定值;已分配的簇相應位置填入非零值,具體為:如果該簇是檔案的最後一簇,填入的值為ffffff0fh,如果該簇不是檔案的最後一簇,填入的值為該檔案占用的下乙個簇的簇號,這樣,正好將檔案占用的各簇構成乙個簇鏈,儲存在fat表中。0000000h、00000001h兩簇號不使用,其對應的兩個dword位置(fat表開頭的8個位元組)用來存放該盤介質型別編號。fat表的大小就由該邏輯盤資料區共有多少簇所決定,取整數個扇區。

(四)fat32系統一簇對應8個邏輯相鄰的扇區,理論上,這種用法所能管理的邏輯盤容量上限為16tb(16384gb),容量大於16tb時,可以用一簇對應16個扇區,依此類推。fat16系統在邏輯盤容量介於128mb到256mb時,一簇對應8個扇區,容量介於256mb到512mb時,一簇對應16個扇區,容量介於512mb到1gb時,一簇對應32個扇區,容量介於1gb到2gb時,一簇對應32個扇區,超出2gb的部分無法使用。顯然,對於容量大於512mb的邏輯盤,採用fat32的簇比採用fat16的簇小很多,大大減少了空間的浪費。

但是,對於容量小於512mb的盤,採用fat32雖然一簇8個扇區,比使用fat16一簇16個扇區,簇有所減小,但fat32的fat表較大,占用空間較多,總資料區被減少,兩者相抵,實際並不能增加有效儲存空間,所以微軟建議對小於512m的邏輯盤不使用fat32。

另外,對於使用fat16檔案系統的使用者提一建議,硬碟分割槽時,不要將分割槽(邏輯盤)容量正好設為某一區間的下限,例:將一邏輯盤容量設為1100m(稍大於1024m),則使用時其有效儲存容量比分區為950m的一般還少,因其簇大一倍,浪費的空間較多。還有,使用fdisk等對分割槽指定容量時,由於對1mb的定義不一樣(標準的二進位制的1mb為1048576b,有的系統將1mb理解為1000000b,1000kb等),及每個分割槽需從新磁軌開始等因素,實際分配的容量可能稍大於指定的容量,亦需注意掌握。

(五)根目錄區(root區)不再是固定區域、固定大小,可看作是資料區的一部分。因為根目錄已改為根目錄檔案,採用與子目錄檔案相同的管理方式,一般情況下從第二簇開始使用,大小視需要增加,因此根目錄下的檔案數目不再受最多512的限制。fat16檔案系統的根目錄區(root區)是固定區域、固定大小的,是從fat區之後緊接著的32個扇區,最多儲存512個目錄項,作為系統區的一部分。

(六)目錄區中的目錄項變化較多,乙個目錄項仍佔32位元組,可以是檔案目錄項、子目錄項、卷標項(僅跟目錄有)、已刪除目錄項、長檔名目錄項等。目錄項中原來在dos下保留未用的10個位元組都有了新的定義,全部32位元組的定義如下:

(1) 0-- 7位元組 檔案正名。

(2) 8--10位元組 副檔名。

(3) 11位元組 檔案屬性,按二進位制位定義,最高兩位保留未用,0至5位分別是唯讀位、隱藏位、系統位、卷標位、子目錄位、歸檔位。

(4) 11--13位元組 僅長檔名目錄項用,用來儲存其對應的短檔名目錄項的檔名位元組校驗和等。

(5) 13--15位元組 24位二進位制的檔案建立時間,其中的高5位為小時,次6位為分鐘。

(6) 16--17位元組 16位二進位制的檔案建立日期,其中的高7位為相對於2023年的年份值,次4位為月份,後5位為月內日期。

(7) 18--19位元組 16位二進位制的檔案最新訪問日期,定義同(6)。

(8) 20--21位元組 起始簇號的高16位。

(9) 22--23位元組 16位二進位制的檔案最新修改時間,其中的高5位為小時,次6位為分鐘,後5位的二倍為秒數。

(10)24--25位元組 16位二進位制的檔案最新修改日期,定義同(6)。

(11)26--27位元組 起始簇號的低16位。

(12)28--31位元組 32位的檔案位元組長度。

其中第(4)至(8)項為以後陸續定義的。 對於子目錄項,其(12)為零;已刪除目錄項的首位元組值為e5h。在可以使用長檔名的fat32系統中,檔案目錄項儲存該檔案的短檔名,長檔名用若干個長檔名目錄項儲存,長檔名目錄項倒序排在檔案短目錄項前面,全部是採用雙位元組內碼儲存的,每一項最多儲存十三個字元內碼,首位元組指明是長檔名的第幾項,11位元組一般為0fh,12位元組指明型別,13位元組為校驗和,26--27位元組為零。

(七)以前版本的 windows 和dos與 fat32 不相容,不能識別fat32分割槽,有些程式也依賴於 fat16 檔案系統,不能和 fat32 驅動器一道工作。將硬碟轉換為 fat32,就不能再用雙引導執行以前版本的 windows(windows 95 [version 4.00.950]、windows nt 3.x、windows nt 4.0 和 windows 3.x)

解析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...

NTFS與FAT32檔案系統

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