• 【服务器数据恢复】Ext4文件系统fsck后mount不上并报错的数据修复案例


    服务器数据恢复环境:
    某公司Linux系统服务器;
    共有两个分区:第一个分区是交换分区,第二个分区是Ext4文件系统。

    服务器故障&分析:
    Ext4文件系统不能umount,管理员做fsck操作检查一致性,结果导致Ext4文件mount不上。报错信息:mount: wrong fs type, bad option, bad superblock。管理员联系我们数据恢复中心进行数据恢复。
    日志和数据不一致造成的正常文件系统数据被覆盖,这种故障经常在Ext3、Ext4文件系统发生,好在本案例中的.journal日志文件留有缓冲,可以从.journal日志文件里找到相应信息并粘贴回相应位置,达到重建原文件的目的。
    Ext3、Ext4文件系统有日志功能,本案例考虑从.journal日志文件中找到丢失数据。

    服务器数据恢复方案:
    经过北亚服务器数据恢复工程师会诊最终敲定以下数据恢复方案:
    1、通过.journal日志文件里的超级块备份找到超级块,确定块大小。
    2、通过.journal日志文件里的超级块备份找到超级块,重建超级块信息。
    3、通过.journal日志文件找到目录节点,重建(恢复)目录。
    4、通过.journal日志文件找到目录节点找到要恢复的文件的节点信息,重建(恢复)文件。

    服务器数据恢复过程:
    首先用工具打开Ext4文件系统,可以看到0-23扇区的数据(包括超级块和块组描述符)被日志记录覆盖。Ext3、Ext4文件系统的日志页以C0 3B 39 98开头。如下图所示。

    1、确定块大小:
    超级块中有关于块大小的信息,可以从.journal日志中查找超级块的备份。用工具查找得到.journal日志中超级块的信息,其标志是“53ef”。查找超级块方式如下图所示。查看块大小方法如图4和图5所示。超级块0x18-0x1B处描述块大小,确定本案例块大小为4KB。

    通过超级块查看块大小如下图所示。

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

    2、重建(恢复)超级块;
    由于原文件系统超级块损坏,所以恢复文件时需要把这部分超级块信息粘贴回去,即放在2号扇区开始,或1024字节处。
    完成上述操作,超级块备份的某些地方与实际的超级块数值可能不一致,需要通过WinHex的模板管理器修改一下。本案例对超级块所在的块组作了修改,它在第0个块组里。如下图所示。

    3、重建(恢复)块组描述表:
    由于部分块组描述表被破坏,所以在.journal日志文件里找到所有的块组描述表,并把它们粘贴回去。.journal日志文件里,块组描述符表存储在超级块的后面。所以要找块组描述表时,可以先找到超级块。找到后将块组描述符表内容粘贴到4096字节处。

    4、重建(恢复)目录:
    当要恢复某个文件夹里的文件时,比如kyproc文件夹里的数据,发现这些文件夹在WinHex里是不能打开的状态,如下图所示。很明显这个目录损坏了,打开其节点信息,发现正常数据被日志填充,如下图2所示。

    我们找到它的上一级目录,即var文件夹,右击点“open”,打开看到var文件里的所有文件的目录信息。找到要恢复的kyproc目录的信息,12 32 EE 00是其i-节点号,10 00表示其目录项长度,06表示其文件名称长度,02表示其文件类型为目录。如下图所示。

    然后在var文件夹的目录块下查找kyproc目录的位置,如下图所示,标红的位置是找到的结果。此位置显示所在块号为62399108。

    根据所在块号,就可以定位kyproc目录相应节点的位置。由于人工补节点比较繁琐,北亚数据恢复工程师打开.journal日志文件,从里面找到其节点信息,把相应的信息粘贴回去。

    上述方法可以重建(恢复)目录,恢复目录里的文件也是通过同样的方法从.journal日志文件里找到相应的文件的节点信息,找到后粘贴回原来的位置,达到重建(恢复)文件的目的。

    5、完成所有的数据恢复操作后,由管理员亲自对恢复出来的数据进行验证,确认恢复出来的数据完整无误,本次数据恢复成功。

  • 相关阅读:
    webgis笔记
    应用gis笔记
    专业程序设计part2
    计算机图形学笔记
    底层学习笔记(打开黑箱世界)
    语言甄别笔记
    使用C++输入一个包含空格的字符串,再输入单独的一个字符,找到这个字符串中当前字符的个数(注意不区分大小写)
    每日刷刷C语言之输入三个数找到最小值
    C语言实现字符串大小写转换
    C语言实现头插法
  • 原文地址:https://www.cnblogs.com/frombyte/p/16561171.html
Copyright © 2020-2023  润新知