最近我不小心将一个EXT4分区格式化为FAT。我陷入了恐慌。经过一段漫长的旅程,穿过一片黑暗的树林,我的希望逐渐消失,我可以恢复我的隔断,看起来还不错。在sudo mke2fs -n /dev/sdx
介绍了一些超级块之后,我拿起一个并跑去sudo e2fsck -b a_block_number /dev/sdxy
宾果游戏!我的所有文件和目录都放在“lost+found”文件夹中。
问题是所有备份超级块是否都相同,或者一个可能比另一个更新得更多?
第二个问题是将 EXT4 分区重新格式化为 EXT4 是否会覆盖备份超级块? (我们之间,在尝试 mke2fs 和 e2fsck 之前,我再次将 FAT 分区重新格式化为 EXT4)
答案1
所有备份超级块都是相同的。它们都是超级块的副本,并且分散在整个磁盘中,以在磁盘的大部分连续部分损坏时提供冗余。
格式化分区,即使具有相同的文件系统类型,也会清除超级块。 (这是有道理的:格式化的目的是在分区上创建一个干净的石板,因此所有文件系统元数据都会被删除。)但是,它不会删除备份超级块,因为没有必要这样做(并且您的经验证实了这)。
编辑:回答您的评论问题:
e2fsck
如果格式化会清除超级块,我如何才能恢复我的分区?
第一种 FAT 格式清除了超级块,但所有文件和目录仍然存在,只是不可用,因为文件系统中不再引用它们。 (没有经验的用户常常会惊讶地发现,格式化磁盘后,99% 的内容仍然存在。因此,如果您打算出售二手磁盘,切勿进行简单的格式化 - 一点一点安全地擦除所有内容! )
mke2fs -n
显示 ext4 文件系统的备份超级块的位置,这是格式化为 FAT 之前的文件系统;因此,该超级块是“正确的”超级块。e2fsck -b
应用在该位置找到的超级块。这使得数据片段能够在 中恢复/lost+found
。
如何将 EXT4 格式化为 FAT 清除超级块而不清除文件系统的其他部分(如索引节点)?
格式化会清除超级块,但不会清除 inode,因为 inode 分散在整个磁盘中;在哪里确切地说,它们的分散程度取决于文件系统类型。例如,EXT2/EXT3 文件系统中的空间被分成块,分组为块组; inode 存储在每个块组中的数据块之前。正如我之前所说,格式化会使磁盘的很大一部分保持不变。
备份超级块何时创建?根据 Justin Davies 的 SUSE Linux 9 Bible,“备份超级块是在创建 EXT2 或 EXT3 文件系统时创建的”。因此,我希望当我重新格式化分区时,备份超级块也会被重新格式化。
不,只有主超级块被擦除。备份超级块驻留在磁盘的其他位置,并且像元数据(索引节点...)和文件一样,不会被格式擦除,如前所述。他们可能然而,会被新文件系统的备份超级块覆盖;这取决于新的文件系统类型。