一例Ext4文件系统fsck后损坏的修复过程

一例Ext4文件系统fsck后损坏的修复过程,第1张

一例Ext4文件系统fsck后损坏的修复过程 1.故障发生背景

Ext4文件系统没有卸载,然后进行fsck *** 作检查一致性,导致Ext4文件无法挂载(有时目录变成了文件)。

错误消息:装载:错误的文件系统类型,错误的选项,错误的超级块

2.故障原理分析

当故障发生时,由于日志和数据之间的不一致,正常的文件系统数据被覆盖。这种故障经常发生在Ext3和Ext4文件系统中。幸运的是。日志文件有一个缓冲区。恢复时,您可以从。日志文件,并将其粘贴回相应的位置,以达到重建原始文件的目的。

3.案例重要信息

Linux系统硬盘的第一个扇区就是MBR扇区。从MBR分区表可以看出,在这种情况下有两个分区。第一个分区是交换分区,共7.8G,第二个分区是Ext4文件系统,共292G。的总尺寸是300克。

3.Ext34文件系统具有日志功能。在这种情况下,我们考虑从。日志文件。

1.块大小固定为4KB,即8个扇区。

2.超级块起始于1024字节,即扇区2,大小为2个扇区。

3.块组描述表从第一块开始,即从4096字节开始。

4.案例重要概念

超级块:用于存储文件系统的配置参数(如块大小、总块数、I节点数)和动态信息(当前空空闲块数、I节点数)。Ext4文件系统的超级块从1024字节开始,也就是扇区2。

block:ext4文件系统的整体空分为若干个块组,每个块组中的结构大致相同。

块描述符表:每个块组对应一个块组描述符。这些块组描述符统一放在文件系统的前端,称为块组描述符表。每个块组描述符大小为32字节,主要描述块位图、I节点位图、I节点表地址等信息。

Node:描述文件的时间信息、大小、块指针等信息。

组描述符和超级块在块中的位置:当块大小为2扇区时,块0为引导程序或保留块,超级块从块1开始。当块大小为4个扇区时,引导程序或保留块位于块0的前两个扇区,超级块位于块0的后两个扇区。当块大小为8个扇区时,引导程序或保留块位于块0的扇区0-1,超级块位于块0的扇区2-3。

Ext4文件系统的整体结构和第一块组的具体结构如图1所示。

5.解决步骤

步骤摘要:

1.通过超级块备份在。日志文件,并确定块大小。

2.通过超级块备份在。日志文件并重建超级块信息。

3.通过查找目录节点。日志文件并重建(恢复)目录。

4.通过查找目录节点。日志文件,以查找要还原的文件的节点信息,并重建(还原)该文件。

首先用WinHex打开Ext4文件系统,可以看到0-23扇区的数据(包括超级块和块组描述符)被日志记录覆盖。3.Ext3文件系统的日志页从C03B3998开始。如图2所示。


图2

  • 确定块大小

  • 超级块中有关于块大小的信息。从中找到超级块的备份。日志。中找到超级块的信息。使用WinHex的日志,其标志是“53ef”。寻找超级块的方法如图3所示。检查块大小的方法如图4和图5所示。块大小在超级块0x18-0x1B中描述,这种情况下的块大小确定为4KB。

    图3

    按超级块检查块大小,如图4所示。

    图4

    或者WinHex模板编辑器也可以显示块大小,如图5所示。

    图5

    2.重建(恢复)超级块

    因为原文件系统的超级块损坏,在恢复文件的时候,把这个超级块信息贴回去,也就是放在扇区2的开头,或者1024字节。

    以上 *** 作后,超级块备份的某些部分可能与实际超级块值不一致,需要通过WinHex的模板管理器进行修改。这种情况下,超级块所在的块组已经被修改,在第0块组。如图6所示。

    图6

    3.重建(恢复)块组描述表

    由于一些块组描述表已损坏,请在中查找所有块组描述表。日志文件并将它们粘贴回去。

    在日志文件中,如图1所示,块组描述符表存储在超级块的后面。所以当你想找块组描述表的时候,可以先找超级块。找到后,将块组描述符表的内容粘贴到4096字节。

    4.重建(恢复)目录

    例如,当我们想要恢复某个文件夹中的文件时,我们需要恢复kyproc文件夹中的数据。我们发现这些文件夹无法在WinHex中打开。如图7所示。显然,该目录已损坏。打开它的节点信息,发现正常数据被日志填充,如图8所示。

    图7

    图8

    我们找到了它的上层目录,即var文件夹。右键“打开”打开var文件中所有文件的目录信息。找到要恢复的kyproc目录的信息。1232EE00是它的I节点号,1000是它的目录项长度,06是它的文件名长度,02是它作为目录的文件类型。如图9所示。

    图9

    然后在var文件夹的目录块下查找kyproc目录的位置,如图10所示。红色标记的位置就是结果。这个位置显示街区号是62399108。

    图10

    根据块号,可以定位到kyproc目录对应的节点。因为手动填充节点很繁琐,所以我们可以打开。日志文件,从中找到它的节点信息,并将相应的信息粘贴回去。

    上面的方法可以重建(恢复)目录,被恢复目录中的文件也从。日志文件,并将其粘贴回原来的位置,以达到重建(恢复)文件的目的。




    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/784160.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-04
    下一篇 2022-05-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存