为什么 FAT 文件系统不支持链接?

为什么 FAT 文件系统不支持链接?

FAT 文件系统通过簇链接列表(链接文件分配)表示文件。

它们在磁盘上有一个区域用于存放一个或多个表(文件分配表),这些表具有与可寻址簇一样多的条目。每个条目可以是:

  • 指向文件链表中下一个簇的指针
  • 指示链表最后一个簇的标记
  • 未使用的标记
  • 坏标记

对于符号链接,我的猜测是 FAT 无法像 ext 文件系统那样指向或存储文件路径。我能想到的最接近的事情是指向链表的头部,这需要某种维护。

对于硬链接,FAT 文件系统缺少可以在文件之间“共享”的文件节点。也无法跟踪文件的链接数量。

答案1

对于文件系统,我想答案是“因为它不是这样设计的”。也就是说,由于使用它作为主文件系统的操作系统都不想、不需要,甚至没有提出符号链接的想法,所以它们没有被实现。

至于文件系统实现/驱动程序,理论上可以添加对符号链接的支持,但是文件系统需要一种将文件标记为链接的方法,而不是常规文件(链接文本可以像普通文件数据一样存储) )。由于该功能从未实现过,因此没有预先存在的方法可以做到这一点。人们需要选择其中的某个领域目录项将文件标记为链接,但该实现将与其他实现不兼容。至少,其他系统可能不会费心添加对链接的支持,因此它们不会受到支持。

另请注意,FAT 是一个相当古老的文件系统,并且大多数情况下仅在互操作性被认为有用的情况下使用。考虑到这一点,改变现有标准是一个坏主意,并且为了认真使用,所有操作系统都有更好的文件系统来支持链接等。

硬链接甚至更难,因为它们很大程度上依赖于将文件名与其他元数据放在不同的位置。在 Unix 类型的文件系统上,inode 保存大部分元数据,目录仅包含指向 inode 的指针。在 FAT 上,目录项包含名称所有其他元数据,因此没有一个地方可以保存具有多个硬链接的文件的元数据。

相关内容