• 【服务器数据恢复】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、完成所有的数据恢复操作后,由管理员亲自对恢复出来的数据进行验证,确认恢复出来的数据完整无误,本次数据恢复成功。

  • 相关阅读:
    ubuntu安装mmdetection
    Mybatis-plus的操作(新增,修改,删除)
    后端研发工程师面经——数据结构
    Web3中文|什么是以太坊虚拟机(EVM),它是如何工作的?
    基于遗传算法与神经网络的测井预测(Matlab代码实现)
    核爆,字节跳动算法工程师,手写1000页数据算法笔记:Github已标星79k
    猿创征文|一位测试小伙伴面试笔试题的救场 - 这是一篇枪手角度的答题文(最后小伙伴吹大了,痛失offer)
    【BUG日记】【Processing】NullPointerException,unable to decode sound file “xxx“
    39、jenkins持续集成(二)
    k8s的node节点重启后pod不正常运行
  • 原文地址:https://blog.csdn.net/beiya123/article/details/126223966