基本上,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 目录中吗?或者也许它会在文件系统的结构中可见,但您将无法打开/访问它?如果上面的组被清零,目录中的文件会发生什么?只有 info that
0 free blocks, 8182 free inodes, 10 directories, 8182 unused inodes
,这意味着该组描述了 10 个 dirs 和 0 个文件,并且所有块都被数据使用。所以我们有 10 个目录,可能还有一些零散的大文件。至少我是这样理解信息的。但是目录可以包含文件,当您将该组归零时,目录中的文件会发生什么?之后它们可以访问fsck
吗?
基本上它归结为元数据和/或数据是否受到影响。
一般来说,当元数据损坏时,受影响的文件/目录变得不可访问(或部分不可访问)。诸如此类的工具
fsck
可能能够修复损坏,但这实际上取决于损坏的确切内容。但是,当数据损坏时,除非文件系统实施数据校验和,而 EXT4 没有,文件系统将表现得好像数据正常。如果可能,由应用程序来验证和执行修复。