超级块中文件系统的“魔术”数字是多少?

mbb*_*mbb 10 linux file-types

我正在开发一个基本上在 Linux 上运行的中端 NAS 系统,今天我必须进行一些出色的测试。一步一步引导我使用 fsdb 来破坏文件系统上的幻数,以破坏它/测试应该修复它的脚本。

我用谷歌搜索了很多,没有找到可靠的解释。任何人都可以以中间方式阐明一些观点吗?

Gil*_*il' 16

幻数是在一个特定格式的所有文件所使用的,通常在给定的位置(通常在开始时)的字节序列。由于该特定格式的所有文件都在该特定位置具有该特定字节序列,而其他格式的大多数文件没有它,所以幻数是一种识别文件格式的方法。

在这里,这个概念被应用于文件系统格式。例如,ext2/ext3/ext4 文件系统总是0x53 0xEF在位置 1080-1081 处有字节。reiserfs 文件系统总是ReIsErFs从位置 65588 开始(或者ReIsEr2Fs,在更新的版本中,等等)。其他文件系统也有类似的幻数。文件系统工具会检查是否存在幻数(以及其他可能的线索),以确保您不会意外地在以它们无法处理且可能损坏的格式组织的数据上启动它们。如果您更改文件系统上的幻数,普通工具可能会拒绝接触它;修复工具可能更聪明,将坏的幻数视为可能被破坏的事物之一。

file命令根据幻数识别文件。您可以运行file -s /dev/sda1以查看它认为分区上的内容/dev/sda1。它的决定基于通常在/etc/magic或 中找到的数据库/usr/share/misc/magic。特定的命令可能会使用不同的幻数来识别它们可以处理的文件格式。