我去查找FAT16信息的所有站点都声明性地声明它不能分配超过2 GB的空间。好。大。我相信你。但是,您如何得出这个结论(不仅仅是测试它)?
是否可以使用某种公式来确定FAT16系统可以容纳多少?
我去查找FAT16信息的所有站点都声明性地声明它不能分配超过2 GB的空间。好。大。我相信你。但是,您如何得出这个结论(不仅仅是测试它)?
是否可以使用某种公式来确定FAT16系统可以容纳多少?
Answers:
FAT16使用16位来识别群集。因此,在标识符用尽之前,最多有65536个群集,并且某些标识符保留供非文件使用。每个文件至少占用一个群集。较大的群集会增加每个文件的最小分配,从而增加小型文件的开销。
然后,群集大小会告诉您最大可识别的卷。对于32KiB群集,即32 * 1024 * 65536 B = 2GiB。
您可以通过增加磁盘上扇区的大小来无限期地增加群集的大小,但是仍然限于最大文件数。您还会遇到假定默认扇区大小为(512B)的软件的问题。
在大约2GiB的物理量可用的时候,处理器和操作系统是32位的,因此迁移到FAT32是一个明智的选择,在小型群集中允许更多文件
多年来,实际上存在“ FAT16”的多个变体,并具有不同的限制,但让我们考虑从“ compaq DOS 3.31”到Windows 95的版本。
FAT卷分为多个簇。每个群集由两个扇区的幂组成。FAT16上每个群集的扇区数存储为8位带符号数。因此,每个群集的最大扇区数为64。
群集号存储为16位无符号值。将总群集数限制为65536。将其乘以每个群集的最大扇区数,即可得到4194304个扇区的限制。
硬盘驱动器的(逻辑)扇区大小为512字节。将其乘以上面提到的扇区数限制,即可得到2GiB限制。原则上,具有较大扇区大小的介质可以支持更大的FAT16量,但我认为这实际上没有发生。
Windows NT将“每个群集的扇区”字段的解释更改为无符号的8位。这允许具有512字节扇区的4GiB FAT16分区(理论上在具有更大扇区的驱动器上更大)。AIUI Windows 98增加了对读写此类分区的支持,但是它无法创建它们,并且磁盘实用程序无法修复它们。
当然可以对文件系统格式进行较小的调整,以支持更大的群集,从而支持更大的卷。但是,MS决定采用更根本的选择,即使用Windows 95 OSR2生成FAT32迁移到32位群集索引。
我相信选择更激进的选择的原因是空间效率。考虑到当时的典型文件大小,32kiB集群已经非常浪费,甚至更大的集群也会迁移。