産生背景
Windows的文件系統在每個硬盤都使用一個被稱為文件分配表(FAT)的專用扇區來儲存跟蹤全部文件位置所需的數據,以前操作系統中使用的是16位的FAT,這種方式的缺點是:
- 雖然能夠有效地管理小容量硬盤上的數據,但不能管理大容量硬盤,硬盤分區不能大于2GB。由于在計算機内文件是以簇的形式存儲的,在FAT16情況下,硬盤分區越大,簇的尺寸越大,這樣文件存儲時将浪費硬盤空間,硬盤空間利用率很低,尤其在小文件比較多時。
因此,FAT32應運而生。Windows98包括一種被稱為FAT32的新32位文件系統,可以有效地管理大容量硬盤并識别容量超過2GB的硬盤。FAT32是文件分配表系統的提高版,使用比FAT驅動程序更小的簇,使大硬盤上的空間得以充分利用。
磁盤結構
對于使用FAT32文件系統的每個邏輯盤内部空間又可劃分為三部分,依次是引導區(BOOT區)、文件分配表區(FAT區)、數據區(DATA區)。引導區和文件分配表區又合稱為系統區,占據整個邏輯盤前端很小的空間,存放有關管理信息。數據區才是邏輯盤用來存放文件内容的區域,該區域以簇為分配單位來使用。
引導區
FAT32文件系統的第一個扇區就是引導扇區,其内存放了一個文件系統的很多具體信息,例如FAT表個數、每個FAT表的大小(扇區數目)、每扇區内的字節數目、每簇中所包含的扇區數目、被保留的扇區數目、文件系統大小(扇區數目)、根目錄的起始簇号及一些其它的附加信息。引導區(BOOT區)從第一扇區(邏輯扇區号0)開始使用了三個扇區,保存了該邏輯盤每扇區字節數,每簇對應的扇區數等等重要參數和引導記錄。之後還留有若幹保留扇區,其中有一至三扇區的備份。
文件分配表區
文件分配表區(FAT區)是FAT文件系統管理磁盤空間和文件的最重要區域,它保存邏輯盤數據區各簇使用情況信息,采用位示圖法來表示,文件所占用的存儲空間及空閑空間的管理都是通過FAT實現的。FAT區共保存了兩個相同的文件分配表,便于第一個損壞時,還有第二個可用。FAT表的大小由該邏輯盤數據區共有多少簇所決定,取整數個扇區。數據區中每簇的使用情況通過查找其在FAT表中相應位置的填充值可知曉。
FAT32表中每簇占用四個字節(32位)表示,開頭的8個字節(0H-07H字節)用來存放該盤介質類型編号了,因此有效簇号從02H開始使用。02H簇的使用情況由08H-0BH字節組成的32位二進制數指示出來,03H簇的使用情況由0CH一0FH字節組成的32位二進制數指示出來,依此類推。未被分配使用和已回收的簇相應位置寫零,壞簇相應位置填入特定值0FFFFFF7H标識,已分配的簇相應位置填入非零值,具體為:如果該簇是文件的最後一簇,填入的值為0FFFFFFFH,如果該簇不是文件的最後一簇,填入的值為該文件占用的下一個簇的簇号,這樣,正好将文件占用的各簇構成一個簇鍊,保存在FAT32表中。
數據區
數據區是被用來存放用戶數據的,位于FAT2後,同樣被劃分成簇,從2開始編号,即2号簇起始位置即是數據區的真正起始位置。
(1)根目錄
通常情況下根目錄位于2号簇,但是原則上FAT32文件系統中的根目錄可以位于數據區的任意位置。根目錄區保存根目錄下的各文件的目錄項,每個目錄項占用32字節。FAT32文件系統中,根目錄作為數據區的一部分,采用與子目錄相似的管理方式,這一點與FAT12、FAT16明顯不同,如FAT16文件系統的根目錄區(ROOT區)是固定區域、固定大小的,占用從FAT區之後緊接着的32個扇區,最多保存512個目錄項(其根目錄保存的文件數受限的原因在此),作為系統區的一部分。
(2)子目錄
FAT32文件系統中,除了根目錄外,全部子目錄均在被使用過程中,根據具體的需要而建立。若在根目錄之下創建了一個新的子目錄,則稱該子目錄是根目錄的子目錄,并且稱根目錄為該子目錄的父目錄。子目錄被新建時,在為其父目錄分配的簇中建立目錄項,目錄項中描述了目錄的起始簇号,并且為其在空閑的空間中分配一個簇并清零,将該簇的簇号記錄在其目錄項之中。為子目錄創建目錄項的同時,為子目錄分配的簇中通過用前兩個目錄項來記錄其與對應父目錄的關系。
(3)目錄項
FAT32文件系統由于結構的不同,一般将目錄項分成四種:卷标目錄項、“.”目錄項和“..”目錄項、短文件名目錄項、長文件名目錄項。短文件名目錄項中存放子目錄或文件的短文件名、屬性、起始簇号、時間值、内容大小等基本的信息。
特點
以下是對FAT32的一些特點的闡述:
(1)FAT32文件系統仍然将邏輯盤的空間劃分為三部分,依次是引導區(BOOT區)、文件分配表區(FAT區)、數據區(DATA區)。引導區和文件分配表區又合稱為系統區。
(2)FAT32的MBR和擴展分區的結構與DOS的仍然相同。隻不過引導程序的代碼不同而已。前一小節在介紹MBR所使用的就是win98的引導程序。這裡不再贅述。
(3)FAT32的引導區從第一扇區開始,使用了三個扇區,保存了該邏輯盤每扇區字節數,每簇對應的扇區數等等重要參數和引導記錄。之後還留有若幹保留扇區。
(4)FAT32的文件分配表的結構與DOS下的FAT16相同,仍然采用簇鍊結構來管理文件,隻不過FAT32的一個表項用4Byte即32位罷了,這樣文件分配表可以有更多的簇,可以管理更大的磁盤空間。
(5)FAT32系統一簇對應8個邏輯相鄰的扇區,理論上,這種用法所能管理的邏輯盤容量上限為16TB,容量大于16TB時,可以用一簇對應16個扇區,依此類推。FAT16系統在邏輯盤容量介于128MB到256MB時,一簇對應8個扇區,容量介于256MB到512MB時,一簇對應16個扇區,容量介于512MB到1GB時,一簇對應32個扇區,容量介于1GB到2GB時,一簇對應32個扇區,超出2GB的部分無法使用。顯然,對于容量大于512MB的邏輯盤,采用FAT32的簇比采用FAT16的簇小很多,大大減少了空間的浪費。
(6)FAT32的一個大的改進之處就是根目錄區(ROOT區)不再是固定區域、固定大小,可看作是數據區的一部分。因為根目錄已改為根目錄文件,采用與子目錄文件相同的管理方式,一般情況下從第二簇開始使用,大小視需要增加,因此根目錄下的文件數目不再受最多512的限制。
(7)目錄區中的目錄項變化較多,一個目錄項仍占32字節,可以是文件目錄項、子目錄項、卷标項(僅根目錄有)、已删除目錄項、長文件名目錄項等。
适用條件
一般來說,隻有在以下情況下才能創建(用Windows 95OSR2或者Windows 98)FAT32分區:
硬盤總容量必須大于528MB。
每個分區的大小必須大于528MB。
用戶需要有一張OSR2安裝盤,或者是由其他安裝OSR2的PC制作的OSR2啟動盤(或者是适當的Windows98啟動盤)。
當0SR2/98的FDISK提示Do you wish to enable large disk support?Y or N(是否希望啟動大硬盤支持?)時,應回答Y。如果回答N,那麼創建的就将是FAT16磁盤分區。
應用要點
1、FAT32的速度
FAT32通常與FAT16一樣快,在某些情況下,它會稍快一些。典型的情況下沒有明顯的性能差異。FAT32的主要優點是它對大磁盤的利用比FAT16更為有效。
在實模式MS-DOS或Windows98安全模式下,FAT32會比FAT16慢不少。如果要在MS-DOS下運行程序,最好要運行SMARTDRV。
2、雙重引導和FAT32
不能在需要對另一個操作系統進行雙重引導的機器上使用FAT32,如Windows 95.Windows NT,Windows3.1或MS-DOS6.x。其他操作系統不能訪問FAT32分區表。隻要C驅是FAT16的,那麼其他系統也可以引導,但是其餘FAT32的分區對其他操作系統來說是不可見的。如果使用FAT16,那麼Windows 98也支持在Windows98和以前的MS-DOS操作系統之間進行雙重引導,并用F4進行切換,但是不能在Windows95和Windows98之間進行切換。
3、FAT32和防病毒軟件
在FAT32中使用防病毒軟件,改變驅動器會引起分區表和引導記錄的更新。如果防毒軟件啟動,它可能截取更新分區表或引導記錄的要求,并詢問是否允許更新。并且,在改變驅動器後重啟計算機時,防病毒軟件會發覺分區表或引導記錄被更改了,會提出“修複”的請求。不要讓防病毒軟件修複引導記錄或分區表,不然驅動器和上面的所有的數據都将丢失。