1. 程式人生 > >FAT32檔案系統之結構初探(一)

FAT32檔案系統之結構初探(一)

FAT32檔案系統總結

FAT32能夠支援大於32M小於32G的分割槽。雖然第三方的格式化程式可以把超過32G的分割槽格式化為FAT32,會是微軟的系統不允許將大於32G的分割槽格式化為FAT32檔案系統。

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


DBR及保留扇區:DOS Boot Record,含義是DOS結構引導記錄,也稱為作業系統引導記錄,在DBR之後往往有一些保留扇區存在

FAT1: File AllocationTable,含義是檔案分配表。FAT32一般有兩份FAT表,

FAT2:FAT32的第二份分配表,也就是FAT1的備份,稱為備份FAT。

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

FAT32檔案系統的DBR分析

1:跳轉指令

         跳轉指令本身佔用2位元組,它將程式執行流程跳轉到載入程式處。例如,當前DBR中的“EB 58”,就是代表組合語言中的“JMP 58”。需要注意該指令本身佔用2個位元組,計算跳轉目標地址時該指令的下一個位元組為基準,所以實際上執行的下一條指令應該位於 5A。緊接著跳轉是一條空的指令NOP(90H)

2:OEM代號

         佔用8個位元組,這個說明了微軟不同的作業系統版本。修改這個值不影響檔案系統的使用。

3:BPB(BIOSParameter Block,BIOS引數塊)

         BPB從DBR的第12個位元組開始,佔用79個位元組,記錄了有關該檔案系統的重要資訊,其中各個引數的含義見下表

位元組偏移

欄位長度(位元組)

欄位名與定義

0X0B

2

每扇區位元組數

0X0D

1

每簇扇區數

0X0E

2

DOS保留扇區數

0X10

1

FAT個數

0X11

2

未用

0X13

2

未用

0X15

1

介質描述符

0X16

2

未用

0X18

2

每磁軌扇區數

0X1A

2

磁頭數

0X1C

4

隱藏扇區數

0X20

4

該分割槽的扇區總數

0X24

4

每FAT扇區數

0X28

2

標記

0X2A

2

版本

0X2C

4

根目錄首簇號

0X30

2

檔案系統資訊扇區號

0X32

2

DBR備份扇區號

0X34

12

保留

0X40

1

BIOS驅動器號

0X41

1

未用

0X42

1

擴充套件引導標記

0X43

4

卷序死列號

0X47

11

卷標

0X52

8

檔案系統型別

下面對這些引數做詳細的分析

(1)每扇區位元組數

每扇區位元組數記錄每個邏輯扇區的大小,其常見的值為512,但是並不是固定的值。該值可以由程式定義,合法值包括512,1024,2048,4096。

(2)每簇扇區數

每簇扇區數記錄著檔案系統的簇大小,即由多少個扇區組成一個簇。

簇是FAT12,FAT16及FAT32檔案系統下資料的最小儲存單元,一個簇由一組連續的扇區組成,簇所含的扇區數必須是2的整數次冪,如1,2,4,8,16,32,64,128.

在Windows 2000以前族最大值為64扇區,之後最大值為128.

FAT檔案系統中,所有的族是從2開始編號,每個簇都有一個自己的地址編號,但是所有的族都位於資料區,在資料區之前沒有族。

(3)DOS保留扇區數

DBR及保留扇區數是DBR到FAT1表之間的扇區數,或者說是FAT1的開始扇區號

對於FAT32檔案系統來說,該值的範圍是32扇區到38扇區之間。

(4)FAT個數

一般為2.

(5)未用

(6)未用

(7)介質描述符

介質描述符是描述磁碟介質的引數,根據磁碟性質的不同,取不同的值

(8)未用

(9)每磁軌扇區數   一般其值為63.

(10)磁頭數         其值一般為255.

(11)隱藏扇區數

是MBR到DBR之間的扇區數,對於擴充套件分割槽中邏輯驅動順來說,是其EBR到DBR

(12)分割槽總扇區數

扇區總數是指分割槽的總扇區數,也就是FAT32分割槽的大小。

(1)      每FAT扇區數

(14)標誌

FAT2是否可用,2為可用。

(15)版本     通常為0.

(16)根目錄首簇號

                .分割槽在格式化的時候,格式化程式會在資料區中指派一個簇作為FAT32的根目錄的開始,並把該簇號記錄在BPB中。通常都是把資料區中的第一人簇分配給根目錄使用,也就是2號簇。

(17)檔案系統資訊扇區號

                FAT32檔案系統在DBR的保留扇區中安排了一個檔案系統資訊扇區,用以記錄資料區中空閒簇的數量及下一個可用的空閒簇的簇號,該扇區一般在分割槽的1號扇區,也就是緊跟在DBR之後的一個扇區。

位元組偏移

欄位長度(位元組)

欄位名與定義

0x00

4

擴充套件引導標籤52 52 61 41RRaA

0X04

480

未用

0X1E4

4

檔案系統簽名72 72 41 61rrAa

0X1E8

4

空閒簇數

0X1EC

4

下一個空閒簇號

0X1F0

14

未用

0X1FE

2

結束標誌“55 AA

(18)DBR備份扇區號

                FAT32檔案系統在DBR的保留扇區中安排了一個DBR的備份,一般在6號扇區,也就是分割槽的第7個扇區,該備份扇區與原DBR扇區的內容完全一樣,如果原DBR遭到破壞,可以用備份扇區號修復。

(19)未用

(20)BIOS驅動器號

                這是BIOS的INT 13H所描述的裝置號碼,一般把硬碟定義為8xh.

(21)未用

(22)擴充套件引導標記

                用來確認後面的三個引數是否有效,一般值為29H

(23)卷序列號

(24)卷標

                不在這裡進行記錄,放到目錄項中來管理

(25)檔案系統型別

                使用ASCII碼記錄當前分割槽的檔案系統型別

4:載入程式

                Fat32的DBR載入程式佔用420個位元組,在98 之前的系統之下,這段程式碼負責完成DOS三個系統檔案的裝入; 2000之後的系統中,其負責完成將系統檔案NTLDR裝入。對於一個沒有作業系統的分割槽來講,這段程式碼是沒有作用的。

5:結束標誌