FAT32檔案系統詳解

來源:互聯網
上載者:User

   硬碟是用來儲存資料的,為了使用和管理方便,這些資料以檔案的形式儲存在硬碟上。任何作業系統都有自己的檔案管理系統,不同的檔案系統又有各自不同的邏輯組織方式。例如:常見的檔案系統有FAT,NTFS,EXT,UFS,HFS+等等。作者後面的文章會一一講到,下面就來學習一下基於Windows的FAT32檔案系統。

FAT32檔案系統由DBR及其保留扇區,FAT1,FAT2和DATA四個部分組成,其機構如下圖:

這些結構是在分區被格式化時建立出來的,含義解釋如下:

DBR及其保留扇區:DBR的含義是DOS引導記錄,也稱為作業系統引導記錄,在DBR之後往往會有一些保留扇區。

FAT1:FAT的含義是檔案配置表,FAT32一般有兩份FAT,FAT1是第一份,也是主FAT。

FAT2:FAT2是FAT32的第二份檔案配置表,也是FAT1的備份。

DATA:DATA也就是資料區,是FAT32檔案系統的主要區域,其中包含目錄地區。


一、分析FAT32檔案系統的DBR

   FAT32檔案系統的DBR有5部分組成,分別為跳轉指令,OEM代號,BPB,引導程式和結束標誌。如下圖是一個完整的FAT32檔案系統的DBR。

跳轉指令:本身佔2位元組它將程式執行流程跳轉到引導程式處。

OEM代號:這部分佔8位元組,其內容由建立該檔案系統的OEM廠商具體安排。

BPB:FAT32的BPB從DBR的第12個位元組開始,佔用79位元組,記錄了有關該檔案系統的重要訊息,各參數解釋如下表:

FAT32檔案系統在DBR的保留扇區中安排了一個檔案系統資訊扇區,用以記錄資料區中空閑簇的數量及下一個空閑簇的簇號,該扇區一般在分區的1號扇區,也就是緊跟著DBR後的一個扇區,其內如下:

各參數解釋如下:

引導程式碼:FAT32的DBR引導程式佔用420位元組,對於沒有安裝作業系統的分區來說這段程式是沒有用處的。

結束標誌:DBR的結束標誌與MBR,EBR的結束標誌相同,為“55 AA”。


二、分析FAT32檔案系統的FAT表

FAT1的內容如下:

由於分區格式化之後沒有寫入太多的資料,所以FAT項很少。

FAT表結構及作用

1、FAT32檔案一般有兩份FAT,他們由格式化程式在對分區進行格式化時建立,FAT1是主,FAT2是備份。

2、FAT1跟在DBR之後,其具體地址由DBR的BPB參數中指定,FAT2跟在FAT1的後面。

3、FAT表由FAT表項構成,我們把FAT表項簡稱FAT項,每個FAT項佔用4位元組。

4、每個FAT項都有一個固定的編號,這個編號從0開始。

5、FAT表項的前兩個FAT項為檔案系統保留使用,0號FAT為介質類型,1號FAT為檔案系統錯誤標誌。

6、分區的資料區中每個簇都會映射到FAT表中的唯一一個FAT項,因為0號FAT和1號FAT被系統佔用,使用者的資料從2號FAT開始記錄。

7、如果某個檔案佔用很多個簇,則第一個FAT項記錄下一個FAT項的編號(既簇號),如果這個檔案結束了,則用“0F FF FF FF”表示。

8、分區格式化後,使用者檔案以簇為單位存放在資料區中,一個檔案至少佔用一個簇。

9、FAT的主要作用是標明分區儲存的介質以及簇的使用方式。


定位FAT絕對位置的方法如下:

1、首先從MBR的分區表中得知分區的起始扇區,位移到此扇區。

2、從DBR的BPB中得知DBR的保留扇區數,FAT表的個數,FAT表的大小。

3、因此FAT1=分區起始扇區+DBR保留扇區,FAT2=分區起始扇區+DBR保留扇區+FAT1。


三、分析FAT32檔案系統的資料區

資料區的位置在FAT2的後面,具體定位方式如下;

1、通過MBR中的分區表資訊得知分區的起始位置。

2、通過分區中DBR得知DBR的保留扇區數以及FAT表的大小,FAT表的個數。

3、通過上面的資訊就可以找到資料區的起始位置,根目錄=資料區的起始扇區+(簇大小*2)。


資料區的類容主要由三部分組成:根目錄,子目錄和檔案內容。在資料區中是以“簇”為單位進行儲存的,2號簇被分配給根目錄使用。

根目錄的定位方式為:根目錄=分區起始扇區+DBR保留扇區+(FAT表*2)+(簇大小*2)

FAT32檔案系統中,分區根目錄下的檔案和目錄都放在根目錄區中,子目錄中的檔案和目錄都放在子目錄區中,並且沒每32個位元組為一個目錄項,每個目錄項紀錄著一個目錄或檔案(也可能是多個目錄項記錄一個檔案或目錄),如上圖所示就是一個目錄項。

在FAT32檔案系統中,目錄項可以分為四類:卷標目錄項、“.”和“..”目錄項、短檔案名稱目錄項、長檔名目錄項。

卷標目錄項:卷標就是分區的名字,可以在格式化分區時建立,也可以隨意修改,長度為11位元組。

“.”和“..”目錄項:“.”表示目前的目錄,“..”表示上一層目錄。這兩個目錄項多存在子目錄中。

短檔案名稱目錄項:所謂短檔案名稱既檔案名稱的“8.3”格式,此格式支援主檔案名不能超過8位元組,副檔名不能超過3位元組。短檔案名稱目錄始終存放在一個目錄項中。

短檔案名稱的各參數解釋如下:

其中關於時間的表達方式如下:

關於日期的表達方式如下:

長檔名目錄項:由於短檔案名稱“8.3”的格式遠遠不能滿足現實中的需求,所以就出現了長檔名,長檔名其實就是將檔案名稱進行分段,分成若干個短檔案名稱進行儲存。

長檔名在進行分段儲存的時候,遵循一下三個處理原則:

1、系統取長檔名的前6個字元加上“~1”形成短檔案名稱,其副檔名不變;

2、如果已存在這個名字的檔案,則符號“~”後的數字自動增加;

3、如果檔案名稱記憶體在windows非法的字元,則以底線“_”代替;

4、長檔名目錄項採用倒敘的方式進行記錄,如上圖。

如下:是長檔名目錄的各參數的解釋


FAT32檔案系統總結

上述的內容已經簡單的介紹了FAT32檔案系統,下面根據定位某個檔案來詳細的瞭解FAT32檔案系統是如何儲存資料的。

1、根據磁碟0號扇區MBR的分區表得知分區的起始位置,既DBR;

2、根據DBR中BPB記錄的資訊,得知DBR保留扇區數,FAT的大小,FAT的個數;

3、根據上述資訊可以算出資料的起始位置,資料區=分區起始扇區+DBR保留扇區+(FAT表*2);

4、計算根目錄所在的絕對位置,根目錄=資料區的起始扇區+(簇大小*2);

5、根據根目錄中的目錄項資訊得知,根目錄下的檔案以及子目錄等所對應的簇;

6、根據檔案的簇號就可以找到檔案內容的絕對扇區;

7、如果一個檔案佔用多個簇,則需要根據FAT表項得知下一個資料簇的簇號。

7、如果根目錄下的目錄項是子目錄的話,則根據子目錄中的檔案目錄項得知檔案內容的簇號;

8、如果子目錄中還有子目錄的話,則根據這種方法一直找下去即可。


至此FAT32檔案系統就簡紹完畢了,希望對那些喜歡資料底層的朋友們有所協助。


作者:鄧奇

TEL:18911808630



本文出自 “鄧奇的Blog” 部落格,請務必保留此出處http://dengqi.blog.51cto.com/5685776/1349327

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.