【问题标题】:How does a file system information stores?文件系统信息如何存储?
【发布时间】:2016-03-15 14:31:08
【问题描述】:

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

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

【问题讨论】:

  • 信息似乎存储在MBR和EBR中。对吗?
  • @xmojmr 谢谢!除此之外,linux如何识别文件系统类型号与MBR中相同的ext4、fat等特定文件系统类型?
  • @xmojmr 我想mkfsmkswap 做的是我想知道的。他们具体是做什么的?
  • @xmojmr 我在网上搜索了一个名字super block。这两个命令的工作可能是创建超级块。

标签: linux operating-system filesystems


【解决方案1】:

Linux 不使用 MBR 和 EBR 中的分区信息来识别存储在分区中的文件系统。这样做的原因是因为 MBR 只能为文件系统类型提供一个 8 位值的空间,而且它是出了名的不可靠。没有分配分区类型 ID 的单一注册表,如果有的话,考虑到 MBR 多年来已被大量操作系统使用(从 MS-DOS,到 Windows,到 Xenix,到许多 BSD,到SCO Unix,到 Linux),256 种不同的分区类型还不够。

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

如果您不知道特定分区表中可能包含哪种文件系统,则可以使用诸如 blkid 之类的程序来确定文件系统类型,该程序通常使用一组表驱动的幻数来确定文件系统类型。可以在这里找到一张这样的表格:

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

可以在多个地方找到幻数这一事实听起来确实很可怕,因为根据您尝试探索幻数的顺序,您可能会得到不同的答案。但幸运的是,大多数 mkfs 工具都足够聪明,可以将磁盘的其他部分清零,其中以前可能在该分区上使用过来自文件系统的幻数,实际上,如果将前 32k 和最后 32k 清零,它就可以很好地工作在分区中。

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多