微軟在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)。