超级块和主文件表 (MFT) 有什么区别?两者似乎都是跟踪文件系统中的文件的表,但是还有其他区别吗?我发现的唯一区别是第一个用于 Ext4 文件系统,另一个用于 NTFS 文件系统,但是还有其他的吗?
答案1
从严格的角度来看,他们显然是不是“同样的事情” - 你不能交换它们 - 所以严格的答案是“不”。
但两者的目的是相似的(绝不相同),所以从某种意义上说,是的,你可以说它们是“同一件事”。
但 Ext2/3/4 和 NTFS 的总体目的(管理文件系统)的实现方式不同,因此超级块和 FAT 并不真正等同。
除了其中存储的结构和数据之外,也许最简单的区别是 MFT 有一个单一的、部分的备份于$MFTM镜子,而超级块在整个分区中有几个完整的备份。
另一个明显的区别(由于存储的信息类型不同)是它们各自的大小。一个更微妙的区别是 MFT 是基于文件(所以它可以说,得到支离破碎的),而超级块位于块组层次结构级别。
答案2
所有文件系统都会有半相似的结构,但不是,“超级块”是“超级块”,MFT 是 MFT,它们之间没有真正的重叠。
大多数“现代”文件系统(包括 ext4 和 NTFS)都源自 Fast Berkeley 文件系统 - FFS - 所以我建议您先访问 google 和 wikipedia,然后研究一下。一旦了解了 FFS,您就可以开始了解 ext4 和 NTFS 与 FFS 以及它们之间的不同之处。
通过一些非常强的拉伸,可以说 FFS/EXT4 超级块半相当于 MFT 的第一个/头块,而 MFT 大致相当于 FFS 柱面/块组,但还有更多细微差别,这使得两者非常不同。 ,非常不同的事情。
例如,通常有多个气缸组,而只有两个(甚至是不等效的!)MFT。
FFS/EXT4 和 NTFS 之间最重要的区别之一是,在 UNIX 中,唯一文件 ID 本质上只是数字(!) - 所谓的 inode。所以unix存储上的所有文件都没有名称,只有数字/索引节点!这是你要记住的最重要的事实。
但 NTFS 是基于名称的,正如已经说过的,NTFS 中的文件因此必须有名称。
因此,在这些级别上,FFS 和 NTFS 甚至无法放在一起比较。
现在您可能会问,您在 UNIX 控制台上读取的名称来自哪里,对吧?文件名基本上是某个目录的目录表中的一行的名称,它只是指向给定的索引节点。因此在UNIX中,同一个文件可以有多个名称,甚至可以同时存在于多个目录中。只要所有目录行记录都指向同一个 inode,它们都指向同一个文件。
这种组织在 NTFS 中是不可能的(但还有其他方法可以模拟类似的东西)。
最后,例如 ZFS 具有与 FFS 完全不同的“uberblock”和结构。因此,在 ZFS 中,“uberblock”既不是“超级块”,也不是 MFT 头,因为 ZFS 结构根本不映射到 FFS 的任何内容。
NTFS、FFS 或 ext4 中的“uberblock”是什么?空无一人。