基本上,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
?
如果您有足够小的文件可以完全放入该组中,则该文件将永久丢失。但还有其他情况,我不确定系统在这种情况下会如何反应。
文件可以被分割并由许多块组描述,这(在本例中)意味着文件中只有某些部分被清零。
fsck
运行后该文件会发生什么?整个文件会被放置在lost&found目录中吗?或者也许它在文件系统的结构中可见,但您将无法打开/访问它?如果上面的组被清零,目录中的文件会发生什么?只有信息
0 free blocks, 8182 free inodes, 10 directories, 8182 unused inodes
,这意味着该组描述了 10 个目录和 0 个文件,并且所有块都被数据使用。所以我们有 10 个目录,可能还有一些碎片化的大文件。至少我是这样理解信息的。但是目录可以包含文件,当您将该组清零时,目录中的文件会发生什么情况?之后可以访问吗fsck
?
答案1
基本上它可以归结为元数据和/或数据是否受到影响。
一般来说,当元数据损坏时,受影响的文件/目录将变得无法访问(或部分无法访问)。工具如fsck
可能能够修复损坏,但这实际上取决于具体损坏的内容。
然而,当数据损坏时,除非文件系统实现数据校验和(EXT4 没有实现),否则文件系统将表现得好像数据没有问题一样。如果可能的话,由应用程序来验证和执行修复。