常在Windows平台下使用的3种文件系统是FAT(文件分区表),FAT32(32位文件分区表)和NTFS(NT文件系统)。在FAT文件系统下,每一个磁盘被分成固定大小的簇。簇最少为512个字节,其大小可以成倍增长,最大为32K。
每个簇都是由唯一的索引号——一个16位二进制数来标识。因为16位二进制数最大为65536,所以FAT分区所拥有的簇的数量不可能超过65536个。簇的数量和大小的限制,就是FAT分区为什么不能超过2GB的原因。
FAT中的入口连接着组成一个文件的各个簇,文件的目录入口包含其第一个簇的索引号,而该簇在FAT中的入口又包含着下一个簇的索引号,依此类推。一个文件的最后一簇对应的FAT入口则包含着一个特殊的文件终止符,未使用的簇和损坏的簇也会用特殊代码标识出来。FAT32文件的原理几乎与此相同,但它的簇更小,而且由于FAT32入口是32位,所以其容量理论上可以超过40亿个字节。
NTFS是一个相当高级的文件系统。它的主文件表(MFT)是一个非常完整的数据库,它负责对磁盘上的每个文件进行索引。每个MFT的入口通常为1K大小,其中记录了大量的文件信息。NTFS可以在文件的MFT入口中存储非常小的文件的全部内容;对于大一些的文件,这些入口会标识出包含文件数据的簇
因为0号FAT表项和1号FAT表项有特殊用途,无法与数据区中的簇形成映射,所以从2号FAT表项开始跟数据区中的第一个簇映射,正因为如此,数据区中的第一个簇也就编号为2号簇,这也是没有0号簇和1号簇的原因。然后3号簇跟3号FAT表项映射,4号簇跟4号FAT表项映射,以此类推,直到数据区中的最后一个簇。