文件分配表

文件分配表

文件分配表FAT(File Allocation Table),指的是用來記錄文件所在位置的表格。它對於硬碟的使用是非常重要的,假若丟失文件分配表,那麼硬碟上的數據就無法定位而不能使用了。

簡介


FAT

不同的操作系統所使用的文件系統不盡相同,在個人計算機上常用的操作系統中,DOS 6.x及以下版本和Windows 3.x使用FAT16;OS/2使用HPFS;Windows NT則使用NTFS;而MS-DOS7.10/8.0(Windows 95OSR2及Windows 98自帶的DOS)及ROM-DOS 7.x同時提供了FAT16及FAT32供用戶選用。其中我們接觸最多的是FAT16、FAT32文件系統。FAT16在DOS時代得到廣泛的應用,一般不常見了。FAT32是FAT16的升級版本,這種格式採用32位的文件分配表,對磁碟的管理能力大大增強,突破了FAT16對每一個分區的容量只有2gb的限制。運用FAT32的分區格式后,用戶可以將一個大硬碟定義成一個分區,而不必分為幾個分區使用,大大方便了對硬碟的管理工作。而且,FAT32還具有一個最大的優點:在一個不超過8gb的分區中,FAT32分區格式的每個簇容量都固定為4kb,與FAT16相比,可以大大地減少硬碟空間的浪費,提高了硬碟利用效率。雖然在安全性和穩定性上比不上NTFS格式,但它有個最大的優點,那就是兼容性好,幾乎所有的操作系統都識別該格式,包括DOS6.0、Win9X、WinNT、Win2000和 WinXP。
Windows95 OSR2和Windows 98開始支持FAT32 文件系統,它是對早期DOS的FAT16文件系統的增強,由於文件系統的核心--文件分配表FAT由16位擴充為32位,所以稱為FAT32文件系統。

邏輯盤

在一邏輯盤(硬碟的一分區)超過 512兆位元組時使用這種格式,會更高效地存儲數據,減少硬碟空間的浪費,一般還會使程序運行加快,使用的計算機系統資源更少,因此是使用大容量硬碟存儲文件的極有效的系統。
(一)FAT32 文件系統將邏輯盤的空間劃分為三部分,依次是引導區(BOOT區)、文件分配表區(FAT區)、數據區(DATA區)。引導區和文件分配表區又合稱為系統區。
(二)引導區只佔一個扇區,保存了該邏輯盤每扇區位元組數,每簇對應的扇區數等等重要參數和引導記錄。之後還留有31個保留扇區。而FAT16文件系統的引導區只佔用一個扇區,沒有保留扇區。
(三)文件分配表區共保存了兩個相同的文件分配表,因為文件所佔用的存儲空間(簇鏈)及空閑空間的管理都是通過FAT實現的,FAT如此重要,保存兩個以便第一個損壞時,還有第二個可用。文件系統對數據區的存儲空間是按簇進行劃分和管理的,簇是空間分配和回收的基本單位,即,一個文件總是佔用若干個整簇,文件所使用的最後一簇剩餘的空間就不再使用,而是浪費掉了。

關於簇

從統計學上講,平均每個文件浪費0.5簇的空間,簇越大,存儲文件時空間浪費越多,利用率越低。因此,簇的大小決定了該盤數據區的利用率。FAT16系統簇號用16位二進位數表示,從0002H到FFEFH個可用簇號(FFF0H到FFFFH另有定義,用來表示壞簇,文件結束簇等),允許每一邏輯盤的數據區最多不超過FFEDH(65518)個簇。FAT32系統簇號改用32位二進位數表示,大致從00000002H到FFFFFEFFH個可用簇號。FAT表按順序依次記錄了該盤各簇的使用情況,是一種位示圖法。
每簇的使用情況用32位二進位填寫,未被分配的簇相應位置寫零;壞簇相應位置填入特定值;已分配的簇相應位置填入非零值,具體為:如果該簇是文件的最後一簇,填入的值為FFFFFF0FH,如果該簇不是文件的最後一簇,填入的值為該文件佔用的下一個簇的簇號,這樣,正好將文件佔用的各簇構成一個簇鏈,保存在FAT表中。00000000H、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位元組的定義如下:
⑴ 0-- 7位元組 文件正名。
⑵ 8--10位元組 文件擴展名。
⑶ 11位元組文件屬性,按二進位位定義,最高兩位保留未用,0至5位分別是只讀位、隱藏位、系統位、卷標位、子目錄位、歸檔位。
⑷ 11--13位元組 僅長文件名目錄項用,用來存儲其對應的短文件名目錄項的文件名位元組校驗和等。
⑸ 13--15位元組 24位二進位的文件建立時間,其中的高5位為小時,次6位為分鐘。
⑹ 16--17位元組 16位二進位的文件建立日期,其中的高7位為相對於1980年的年份值,次4位為月份,后5位為月內日期。
⑺ 18--19位元組 16位二進位的文件最新訪問日期,定義同⑹。
⑻ 20--21位元組 起始簇號的高16位。
⑼ 22--23位元組 16位二進位的文件最新修改時間,其中的高5位為小時,次6位為分鐘,后5位的二倍為秒數。
⑽24--25位元組 16位二進位的文件最新修改日期,定義同⑹。
⑾26--27位元組 起始簇號的低16位。
⑿28--31位元組 32位的文件位元組長度。
其中第⑷至⑻項為以後陸續定義的。對於子目錄項,其⑿為零;已刪除目錄項的首位元組值為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)。

格式轉換


如何將NTFS格式轉換為FAT32格式
要想使用啟動盤啟動安裝,那麼活動分區就必須是FAT格式的,我們可以使用Partition Magic軟體進行轉換。
啟動Partition Magic,在軟體主窗口中可以查看到硬碟各個分區的情況。在NTFS分區上點右鍵,選擇“轉換”,在彈出的轉換分區窗口中的文件系統中選擇“FAT32”,最後單擊“確定”,重新啟動后該分區就成功轉換成為FAT32格式的了。

分區格式


如果你在C盤下安裝的Win2000或WinXP採用了默認的NTFS格式,那麼使用Win98啟動盤進行啟動安裝將不能成功,這時你就不得不去了解一下分區格式NTFS和FAT了。
NTFS分區格式是跟隨Windows NT系統產生的,它顯著的優點是安全性和穩定性極其出色,在使用中不易產生文件碎片,對硬碟的空間利用及軟體的運行速度都有好處。它能對用戶的操作進行記錄,通過對用戶許可權進行非常嚴格的限制,使每個用戶只能按照系統賦予的許可權進行操作,充分保護了網路系統與數據的安全。除了Windows NT外,Win 2000和Win XP也都支持這種硬碟分區格式。但因為DOS和Win98是在NTFS格式之前推出的,所以並不能識別NTFS格式。