记录一下之前对 fsck_msdosfs(8) 的改进
fsck_msdosfs(8) 是 FreeBSD 上用来检查和修复 FAT12/16/32 文件系统问题的程序,此外, Android 也使用了这一实现,并采用它来检查使用 FAT文件系统,如 SD 卡上的文件系统问题。
众所周知,FAT 是一个结构非常简单的文件系统。它的基本分配单元是簇(clusters),每个簇可以包括1-128个逻辑扇区。FAT 文件系统使用单一的中央数据结构——文件分配表 FAT来表现存储上的所有簇的分配状态,该结构本身是一个线性表,其中每一项均与磁盘上的相对位置的簇一一对应。这个表上以单链表形式表达文件,链表的表头保存在该文件对应的目录项上,而后续的整个簇链则在 FAT表上,每一项的内容是下一簇的簇号。FAT 表项如果是 0 则表示目前没有任何文件在使用该簇,因此可以将作为保存新数据的空间使用,还有一些特殊值表示坏块、保留块,或者文件已经到达了末尾。
