如果将 EXT4 文件系统中的某一组块清零,会发生什么情况?

如果将 EXT4 文件系统中的某一组块清零,会发生什么情况?

基本上,EXT4 文件系统具有大小为 128MiB(默认情况下)的数据块,该块称为“组”或“块组”,在磁盘上基本上如下所示:

在此输入图像描述

磁盘越大,一个接一个的组就越多。

当您使用该dumpe2fs工具时,它可以简单地告诉您有多少个组,并返回有关它们的一些信息,例如:

Group 690: (Blocks 22609920-22642687) csum 0x7443 [ITABLE_ZEROED]
  Block bitmap at 22544386 (bg #688 + 2), csum 0xab2a9072
  Inode bitmap at 22544402 (bg #688 + 18), csum 0x1ef9c14a
  Inode table at 22545440-22545951 (bg #688 + 1056)
  0 free blocks, 8182 free inodes, 10 directories, 8182 unused inodes
  Free blocks: 
  Free inodes: 5652491-5660672

我的问题是:如果您使用该工具将整组块归零,会发生什么dd

如果您有足够小的文件可以完全放入该组中,则该文件将永久丢失。但还有其他情况,我不确定系统在这种情况下会如何反应。

  1. 文件可以被分割并由许多块组描述,这(在本例中)意味着文件中只有某些部分被清零。fsck运行后该文件会发生什么?整个文件会被放置在lost&found目录中吗?或者也许它在文件系统的结构中可见,但您将无法打开/访问它?

  2. 如果上面的组被清零,目录中的文件会发生什么?只有信息0 free blocks, 8182 free inodes, 10 directories, 8182 unused inodes,这意味着该组描述了 10 个目录和 0 个文件,并且所有块都被数据使用。所以我们有 10 个目录,可能还有一些碎片化的大文件。至少我是这样理解信息的。但是目录可以包含文件,当您将该组清零时,目录中的文件会发生什么情况?之后可以访问吗fsck

答案1

基本上它可以归结为元数据和/或数据是否受到影响。

一般来说,当元数据损坏时,受影响的文件/目录将变得无法访问(或部分无法访问)。工具如fsck 可能能够修复损坏,但这实际上取决于具体损坏的内容。

然而,当数据损坏时,除非文件系统实现数据校验和(EXT4 没有实现),否则文件系统将表现得好像数据没有问题一样。如果可能的话,由应用程序来验证和执行修复。

相关内容