微软在Dos/Windows系列操作系统中共使用了6种不同的文件系统(包括即将在windows的下一个版本中使用的Winfs)。它们分别是:FAt12、FAT16、FAT32、NTFS、NTFS5.0和WINFS。下面我们一一来对它们的相关特点和规则做个介绍。其中FAt12、FAT16、FAT32均是Fat文件系统。是File Allocation Table的简称。
最古老的文件系统FAT12:
这是伴随着Dos诞生的“老”文件系统了。它采用12位文件分配表,并因此而得名。而以后的FAT系统都按照这样的方式在命名。在DOS3.0以前使用。但是在现在,我们都还能找得到这个文件系统:用于软盘驱动器。当然,其他地方的确基本上不使用这个文件系统了。Fat12可以管理的磁盘容量是8M。这在当时,没有硬盘的情况下,这个磁盘管理能力是非常大的。
Fat12文件系统的限制:
1)文件名:只能是8.3格式的文件名。
2)磁盘容量:最多8M。(4096clusters×4sectors/clusters×512bytes、sectors)
3)文件碎片严重。(只在磁盘上不存储在不连续的簇内。)
使用时间最长文件系统的Fat16:
在Dos2.0的使用过程中,对更大的磁盘的管理能力的需求已经出现了,所以在Dos3.0中,微软推出了新的文件系统Fat16。除了采用了16位字长的分区表之外,Fat16和Fat12在其他地方都非常的相似。实际上,随着字长增加4位,可以使用的簇的总数增加到了65546。在总的簇数在4096之下的时候,应用的还是Fat12的分区表,当实际需要超过4096簇的时候,应用的是Fat16的分区表。刚推出的Fat16文件系统管理磁盘的能力实际上是32M。这在当时是看来是足够大的。1987年,硬盘的发展推动了文件系统的发展,Dos4.0之后的Fat16可以管理128M的磁盘。然后这个数字不断的发展,一直到2G。在整整的10年中,2G的磁盘管理能力都是大大的多于了实际的需要。需要指出的是,在windows95系统中,采用了一种比较独特的技术,叫做VFat来解决长文件名等问题。FAT16分区格式存在严重的缺点:大容量磁盘利用效率低。在微软的DOS和Windows系列中,磁盘文件的分配以簇为单位,一个簇只分配给一个文件使用,不管这个文件占用整个簇容量的多少。这样,即使一个很小的文件也要占用一个簇,剩余的簇空间便全部闲置,造成磁盘空间的浪费。由于分区表容量的限制,FAT16分区创建的越大,磁盘上每个簇的容量也越大,从而造成的浪费也越大。所以,为了解决这个问题,微软推出了一种全新的磁盘分区格式FAT32,并在Windows 95 OSR2及以后的Windows 版本中提供支持。
Volume size | Cluster size |
---|---|
0 to 32 MB |
512 bytes |
33 to 64 MB |
1 KB |
65 to128 MB |
2 KB |
129 to 256 MB |
4 KB |
257 to 511 MB |
8 KB |
512 to 1023 MB |
16 KB |
1024 to 2047 MB |
32 KB |
2048 to 4095 MB |
64 KB |
最新的Fat32文件系统:
Fat32文件系统将是Fat系列文件系统的最后一个产品。和它的前辈一样,这种格式采用32位的文件分配表,磁盘的管理能力大大增强,突破了FAT16 2GB的分区容量的限制。由于现在的硬盘生产成本下降,其容量越来越大,运用FAT32的分区格式后,我们可以将一个大硬盘定义成一个分区,这大大方便了对磁盘的管理。
FAT32推出时,主流硬盘空间并不大,所以微软设计在一个不超过8GB的分区中,FAT32分区格式的每个簇都固定为4KB,与FAT16相比,大大减少了磁盘空间的浪费,这就提高了磁盘的利用率。在其他更大的分区中的簇大小的可以看下表:
Volume size | Cluster size |
---|---|
less than 8GB |
4 KB |
less than 16GB |
8 KB |
less than 32GB |
16 KB |
more than 32gB |
32 KB |
目前,支持这种格式的操作系统有Windows 95、Windows 98、OSR2、Windows 98 SE、Windows Me、Windows 2000和Windows XP,Linux Redhat部分版本也对FAT32提供有限支持,然而,如果Linux安装在FAT32分区下,必须使用软盘进行引导。但是,这种分区格式也有它明显的缺点,首先是由于文件分配表的扩大,运行速度比FAT16格式要慢,特别是在DOS 7.0下,性能差别更明显。
FAT32的限制:
1)最大的限制在于兼容性方面,Fat32不能保持向下兼容。
2)当分区小于512M时,Fat32不会发生作用。
4)单个文件不能大于4G。(精确数据是4G-2bytes)。