星期三, 4月 17, 2013

FAT




Filesystem Layout Diagrag
Figure 5: FAT32 Filesystem Overall Layout

主磁碟結構

主啟動區檔案
分配表#1
檔案
分配表#2
根目錄其他所有資料...
剩下磁碟空間

一個FAT檔案系統包括四個不同的部份。
  1. 保留磁區,位於最開始的位置。第一個保留磁區是引導區分割啟動記錄)。它包括一個稱為基本輸入輸出參數塊的區域(包括一些基本的檔案系統訊息尤其是它的型別和其它指向其它磁區的指標),通常包括作業系統的啟動呼叫程式碼。保留磁區的總數記錄在引導磁區中的一個參數中。引導磁區中的重要訊息可以被DOS和OS/2中稱為驅動器參數塊的作業系統結構存取。
  2. FAT區域。它包含有兩份檔案分配表,這是出於系統冗餘考慮,儘管它很少使用,即使是磁碟修復工具也很少使用它。它是分割訊息的對映表,指示叢集是如何儲存的。
  3. 根目錄區域。它是在根目錄中儲存檔案和目錄訊息的目錄表。在FAT32下它可以存在分割中的任何位置,但是在早期的版本中它永遠緊隨FAT區域之後。
  4. 資料區域。這是實際的檔案和目錄資料儲存的區域,它佔據了分割的絕大部份。透過簡單地在FAT中添加檔案連結的個數可以任意增加檔案大小和子目錄個數(只要有空叢集存在)。然而需要注意的是每個叢集只能被一個檔案佔有,這樣的話如果在32KB大小的叢集中有一個1KB大小的檔案,那麼31KB的空間就浪費掉了。

[編輯]啟動磁區

格式如下
偏移(位元組)長度(位元組)說明
0x003跳轉指令(跳過開頭一段區域)
0x038OEM名稱(空格補齊)。MS-DOS檢查這個區域以確定使用啟動記錄中的哪一部份資料 [1] 。常見值是IBM 3.3(在「IBM」和「3.3」之間有兩個空格)和MSDOS5.0.
0x0b2每個磁區的位元組數。基本輸入輸出系統參數塊從這裡開始。
0x0d1每叢集磁區數
0x0e2保留磁區數(包括啟動磁區)
0x101檔案分配表數目 Number of FATs. The number of copies of the FAT on the volume. The value of this field is typically 2.
0x112最大根目錄條目個數Root Entries. The total number of 32-byte file and folder name entries that can be stored in the root folder of the volume. On a typical hard disk, the value of this field is 512. One entry can be used as a volume label, and files and folders with long names use multiple entries per file. The largest number of file and folder entries is typically 511; however, if long file names are used, entries usually run out before you reach that number.
0x132總磁區數(如果是0,就使用偏移0x20處的4位元組值)
0x151介質描述
0xF8單面、每面80磁軌、每磁軌9磁區
0xF9雙面、每面80磁軌、每磁軌9磁區
0xFA單面、每面80磁軌、每磁軌8磁區
0xFB雙面、每面80磁軌、每磁軌8磁區
0xFC單面、每面40磁軌、每磁軌9磁區
0xFD雙面、每面40磁軌、每磁軌9磁區
0xFE單面、每面40磁軌、每磁軌8磁區
0xFF雙面、每面40磁軌、每磁軌8磁區
同樣的介質描述必須在重複複製到每份FAT的第一個位元組。有些作業系統(MSX-DOS 1.0版)全部忽略啟動磁區參數,而僅僅使用FAT的第一個位元組的介質描述確定檔案系統參數。
0x162每個檔案分配表的磁區(FAT16)Sectors Per FAT. The number of sectors occupied by each FAT on the volume. The computer uses this number and the number of FATs and reserved sectors to determine where the root directory begins. The computer can also determine where the user data area of the volume begins based on the number of entries in the root directory (512).
0x182每磁軌的磁區Sectors Per Track.
0x1a2磁頭數Number of Heads
0x1c4隱藏磁區Hidden Sectors. The number of sectors on the volume before the boot sector. This value is used during the boot sequence to calculate the absolute offset to the root directory and data areas.
0x204總磁區數(如果超過65535,參見偏移0x13)Large Sectors.
(36)0x244每個檔案分配表的磁區(FAT32)。擴充功能基本輸入輸出系統參數塊從這裡開始。Sectors per FAT. The size of the FAT in sectors.
(36)0x241物理驅動器個數(FAT16)
(40)0x251當前磁頭(FAT16)
(42)0x261簽名(FAT16)
(44)0x274ID(FAT16)
(40)0x282Flags(FAT32)
(52)0x2a2版本號(FAT32)
(44)0x2c4根目錄啟始叢集(FAT32)The cluster number of the root directory. Often this field is set to 2.
0x2b11卷標(非FAT32)
(48)0x302FSInfo扇區(FAT32)File System Information Sector Number (FAT32 only). The sector number of the File System Information (FSINFO) structure in the reserved area of the FAT32 volume. The value is typically 1. A copy of the FSINFO structure is kept in the Backup Boot Sector, but it is not kept up-to-date.
(50)0x322啟動扇區備份(FAT32)The cluster number of the backup boot sector.
(52)0x3412保留未使用(FAT32)
0x368FAT檔案系統型別(如FAT、FAT12、FAT16)
0x3e2作業系統自引導程式碼
(64)0x401BIOS設備代號(FAT32)Physical Drive Number.
(65)0x411未使用(FAT32)
(66)0x421標記(FAT32)Extended Boot Signature. A field that must have the value 0x28 or 0x29 to be recognized by Windows Server 2003.
(67)0x434卷序號(FAT32)Volume Serial Number. A random serial number that is created when a volume is formatted and that helps to distinguish between disks.
(71)0x4711卷標(FAT32)Volume Label. A field that was once used to store the volume label. The volume label is now stored as a special file in the root directory.
(82)0x528FAT檔案系統型別(FAT32)System ID. A text field with a value of FAT32.
(510)0x1FE2磁區結束符(0x55 0xAA)




Default FAT Cluster Sizes
Volume SizeFAT16 Cluster SizeFAT32 Cluster Size
7 megabytes (MB)–16 MB
2 KB
Not supported
17 MB–32 MB
512 bytes
Not supported
33 MB–64 MB
1 KB
512 bytes
65 MB–128 MB
2 KB
1 KB
129 MB–256 MB
4 KB
2 KB
257 MB–512 MB
8 KB
4 KB
513 MB–1,024 MB
16 KB
4 KB
1,025 MB–2 gigabytes (GB)
32 KB
4 KB
2 GB–4 GB
64 KB
4 KB
4 GB–8 GB
Not supported
4 KB
8 GB–16 GB
Not supported
8 KB
16 GB–32 GB
Not supported
16 KB
32 GB–2 terabytes
Not supported
Not supported

1 則留言:

Jack 提到...

http://www.c-jump.com/CIS24/Slides/FAT/lecture.html#F01_0190_another_sample