1.当我在linux中使用mkfs命令时,我想知道当设置不同的--type时,磁盘会发生什么情况。
2.当我使用fdisk -l时,它将显示每个分区的文件系统类型。所以我想肯定有一些信息存储在磁盘中以供识别。我说得对吗?如果我是,信息在哪里?什么格式?

最佳答案

Linux不使用MBR和EBR中的分区信息来标识存储在分区中的文件系统。这是因为MBR对于文件系统类型只有一个8位值的空间,而且众所周知,它是不可靠的。没有一个注册表分配分区类型ID,如果有,考虑到MBR已经被大量操作系统使用多年(从MS-DOS、Windows、Xenix、许多BSD、SCO Unix、Linux),256种不同的分区类型是不够的。
因此,文件系统有“幻数”,它们存储在不同的位置,几乎总是存储在分区的前32k左右(最常见的是存储在分区的前4-8k)。当Linux内核挂载根文件系统时,它只需尝试许多不同的文件系统类型,直到一个成功挂载。在/etc/fstab文件中,列出了应该用于特定块设备的文件系统类型,因此内核不必猜测或盲目尝试不同的文件系统类型。
如果您不知道某个分区表中可能有哪种类型的文件系统,那么像blkid这样的程序将使用hueritics(通常带有一组表驱动的幻数)来确定文件系统类型。在这里可以找到一个这样的表:
https://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/lib/blkid/probe.c?h=v1.43.1#n1411
魔法数字可以在多个地方找到,这听起来确实很可怕,因为你可能会得到不同的答案,这取决于你尝试探索魔法数字的顺序。但幸运的是,大多数mkfs工具都足够聪明,可以将磁盘上以前可能在该分区上使用过的文件系统中的幻数的其他部分归零,并且在实践中,如果将分区中的前32k和后32k归零,它就足够好用了。

关于linux - 文件系统信息如何存储?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34193698/

10-11 23:19
查看更多