FAT16/FAT32文件系统介绍
N个整数的列表,N是存储设备上最大的簇数。表中每个记录的位数称为FAT大小,是12、16或32三个数之一。早期的存储设备使用12位(1.5字节)FAT以减少浪费,12位可以提供4,096个簇。假定一个簇具有两个扇区(1,024字节),则代表存储设备将近有4.2MB存储容量。更大的簇就能实现更大的存储空间,但是在存储较小文件时,由于簇没有完全装满而将造成存储空间的浪费。
操作系统根据表现整个磁盘空间所需要的簇数量来确定使用多大的FAT。如果磁盘要求的簇少于4,096个,则可以使用12位FAT;如果小于65,536但大于4,096个簇,就使用16位FAT;否则,必须采用32位FAT。在存储设备的第一个扇区内以数据列表的形式定义了簇的大小,该数据列表被称为BIOS参数块。在系统引导期间操作系统可以读该扇区,这样就能设定如何从存储设备中读取文件。
FAT是一种链接列表,链接列表中相关记录之间互相指向对方。在存储设备目录中包含了FAT表名称、该文件大小和分配给该文件的第一个簇的编号。存储该文件的第一个簇所对应的表记录中包含了该文件的第二个簇号码。同样,第二个簇对应的记录里包含有存储该文件的第三个簇编号,以此类推直到该文件的最后一个簇。在新存储设备上存储的第一个文件将保存在连续的簇内,因此第一个簇会指向第二个,第二个指向第三个,如此类推。
实际上,第一个簇(簇0)总是保留用于存储操作系统信息、根目录和两份FAT。系统建立两份FAT,其目的是在当修改其中一个时如果系统发生中断(崩溃),另一份还完整无缺,恢复程序会检查FAT并使用这份FAT来恢复。
FAT的作用
那么FAT的重要意义是什么呢?当前的闪存设备使用12位FAT或16位FAT,数码相机和MP3播放器被设计成利用这种表结构进行读写。随着4GB微硬盘逐渐进入实际应用,16位FAT将不能够满足这种硬盘的需求,因为16位FAT只能实现65,536个簇,对于最大的32K字节的簇而言只能提供最大2.14GB的容量。对于更大容量存储设备有两个解决方案,即将FAT增加到32位或者将驱动器分成多个区。
表2:簇大小与相应FAT格式分区最大容量对应表
总容量
簇大小(KB) |
FAT12(MB) |
FAT16(MB) |
FAT32(TB) |
1 |
4.1 |
67 |
4.398 |
4 |
16.7 |
268 |
17.59 |
8 |
33.4 |
536 |
35.16 |
16 |
66.8 |
1070 |
70.36 |
32 |
134.2 |
2140 |
140.7 |
存储器分区
一个存储设备可以分成多个区(其中每个区看起来像单独的存储设备),每个区有自己的目录和FAT。大多数工程师在自己的PC硬盘上已经体验过多分区,通常仅有一个硬盘的计算机具有“C:”和“D:”盘。
多数便携式设备如数码相机和MP3播放器都没有设计成采用存储器分区,而PDA是真正的计算机,其文件系统程序是按分区来设计的。以数码相机市场为例,存储器必须只有单个分区才能兼容。对用户来说,每个区有自己的逻辑驱动器字母,通常指定为驱动器“C:”、 “D:”和“E:”等。
FAT兼容性
在一个兼容FAT32的主机里可以无缝使用FAT16存储设备,因为支持FAT32的操作系统也支持FAT16。唯一需要注意的是在对FAT16设备重新格式化的时候,有些兼容FAT32的主机(如一些PDA)在没有特别选择下会默认为FAT32格式。第一次对存储设备格式化时,必须认真观察提示以保证用的是FAT16格式,除非你的相机/PDA/MP3播放器支持FAT32。
在一个兼容FAT16的主机里使用FAT32设备会有几个可能结果,最普遍的是在显示屏上显示的“CF错误”指示。如果4GB的存储器在只兼容FAT16的主机里格式化,将可能不出现错误提示,但显示的容量将为 |