FAT32小结(更新)

    计算机上的文件系统种类繁多,但是都可以抽象成四大组成部分:引导块,超级块,索引节点,数据区。
    FAT12,FAT16和FAT32中的12,16,32是指FAT表项的bit数(FAT32中高4位是保留的,所以实际有效的是28bit)
    FAT12只支持DOS短文件名。FAT16和FAT32则同时支持短文件名和长文件名(255个字符)。在Linux系统中把FAT12叫作msdos文件系统,把FAT16和FAT32叫作vfat文件系统。
    FAT32是Microsoft设计的文件系统,是对FAT16的改进。它由BDR(相当于引导块和超级块),FAT表(相当于索引节点,这种说法有待商榷),目录项和文件数据(相当于数据区)。引导块用来引导操作系统,超级块记录了分区的基本信息。索引节点记录了分区内文件和目录的基本信息和硬盘空间块使用情况。它把FAT16中的簇地址由16位扩展到28位,这样对簇的寻址能力就从约2^16即64K簇(如果一簇为32k,则为2G,即分区大小不能超过2G!),扩展到约2^28即256M簇。这对现代计算机来说已经绰绰有余了。然而,它的目录项中,文件大小仍然用4字节表示,这使FAT32不支持大于4G的文件。
    FAT32的一大缺点是它不支持很多安全特性,诸如用户权限,访问控制。它也不支持日志。另一大缺点是当分区很大(超过32G时),FAT表会变得很臃肿。它的链式分配的硬盘空间分配方式也使它比较低效和不太稳定。在突然断电后常常导致文件数据的丢失。所以在ntfs-3g推出后,Linux下对NTFS读写不再有任何障碍,我推荐各位使用高效安全的NTFS。
    不过,公正的说,这不能怪FAT32,因为它是在FAT16的基础上改进而来。而当时谁也预料不到硬盘容量会增加得如此之快。正如8086时代DOS的流行一样。在当时的人们看来,1M的寻址空间绰绰有余,640K内存可以干任何事。虽然DOS是单任务单用户,但是这适应了当时PC的硬件条件。这是技术发展的辩证法。
    原文出现了诸多错误,幸kghost提醒,现更正。若仍有错误,欢迎指正。

你可能感兴趣的:(FAT32小结(更新))