文件系统信息如何存储?

时间:2015-12-10 04:29:14

标签: linux operating-system filesystems

1.当我在linux中使用mkfs命令时,我想知道当我设置不同的--type时,磁盘会发生什么。

2.当我使用fdisk -l时,它会显示每个分区的文件系统类型。所以我想必须有一些信息存储在磁盘中以供识别。我对吗?如果是的话,信息在哪里找到?用什么格式?

1 个答案:

答案 0 :(得分:1)

Linux不使用MBR和EBR中的分区信息来识别存储在分区中的文件系统。这样做的原因是因为MBR只能为文件系统类型的单个8位值留出空间,而且众所周知它是不可靠的。没有单一的注册表可以分配分区类型ID,如果有的话,因为多年来(从MS-DOS,Windows,Xenix,许多BSD,SCO Unix,Linux),256种不同的分区类型Just Isn's足够。

所以会发生的事情是文件系统有"魔术数字"它们存储在各种不同的位置,几乎总是在分区的前32k左右(最常见的是分区的前4-8k)。当Linux内核安装根文件系统时,它只会尝试许多不同的文件系统类型,直到成功安装。在/ etc / fstab文件中,列出了应该用于特定块设备的文件系统类型,因此内核不必猜测,或盲目地尝试不同的文件系统类型。

如果您不知道特定分区表中可能存在哪种文件系统,那么像blkid这样的程序将使用hueristics(通常使用表驱动的幻数集)来确定文件系统类型。在这里可以找到一个这样的表:

https://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/lib/blkid/probe.c?h=v1.43.1#n1411

魔术数字可以在多个地方找到的事实听起来很可怕,因为你可能会得到不同的答案,具体取决于你尝试探测魔术数字的顺序。但幸运的是,大多数mkfs工具都足够聪明,可以将磁盘的其他部分归零,这些部分可能是以前在该分区上使用过的文件系统中的幻数,而实际上如果你将第一个32k和最后一个32k归零,它的效果就足够了在分区中。