服务器数据恢复环境:
某公司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所示。
文章图片
【【服务器数据恢复】Ext4文件系统fsck后mount不上并报错的数据修复案例】
文章图片
我们找到它的上一级目录,即var文件夹,右击点“open”,打开看到var文件里的所有文件的目录信息。找到要恢复的kyproc目录的信息,12 32 EE 00是其i-节点号,10 00表示其目录项长度,06表示其文件名称长度,02表示其文件类型为目录。如下图所示。
文章图片
然后在var文件夹的目录块下查找kyproc目录的位置,如下图所示,标红的位置是找到的结果。此位置显示所在块号为62399108。
文章图片
根据所在块号,就可以定位kyproc目录相应节点的位置。由于人工补节点比较繁琐,北亚数据恢复工程师打开.journal日志文件,从里面找到其节点信息,把相应的信息粘贴回去。
上述方法可以重建(恢复)目录,恢复目录里的文件也是通过同样的方法从.journal日志文件里找到相应的文件的节点信息,找到后粘贴回原来的位置,达到重建(恢复)文件的目的。
5、完成所有的数据恢复操作后,由管理员亲自对恢复出来的数据进行验证,确认恢复出来的数据完整无误,本次数据恢复成功。
推荐阅读
- 网络|HTTP/HTTPS TCP/IP
- Linux|yum报错(failure: repodata/repomd.xml from xxxxxx: [Errno 256] No more mirrors to try.解决办法)
- 环境搭建|Grasscutters 2.8私服搭建
- Linux基础|基于NoneBot2的qq机器人配置记录
- 产品功能|1 秒完成授权,Authing 全新上线一键登录功能
- 虚拟化|vSphere6.7创建Windows Server 2008虚拟机及磁盘扩容
- 虚拟化|vSphere6.7创建Windows Server 2016虚拟机及磁盘扩容
- 开源资讯|Linus(我终于在 M2 芯片的 MacBook 上发布了 Linux 最新版本!)
- SSM框架|SpringMVC回写数据方式方法