共计 1972 个字符,预计需要花费 5 分钟才能阅读完成。
服务器数据恢复环境:
Linux 零碎,Ext4 文件系统;
划分为 2 个分区:1 个替换分区和 1 个文件系统分区。
在剖析理论案例之前,咱们先理解一下 Ext4 的相干常识。
Ext4 文件系统的全副空间被划分为若干个块组,每个块组内的构造大致相同。
每个块组都对应一个块组描述符,这些块组描述符都放在文件系统的前部,称为块组描述符表。每个块组描述符大小为 32 字节,形容了块位图、i- 节点位图及 i - 节点表的地址等信息。
超级块 (Superblock) 是用来存储文件系统的配置参数 (如块大小、总块数、i- 节点数) 和动静信息 (以后闲暇块数和 i - 节点数)。Ext4 文件系统的超级块(Superblock) 开始于 1024 字节处,即 2 号扇区。
i 节点形容文件的工夫信息、大小、块指针等信息。
块组描述符和超级块在块中的地位:当块大小为 2 个扇区时,0 号块是疏导程序或者保留块,超级块起始于 1 号块。当块大小为 4 个扇区时,疏导程序或者保留块位于 0 号块的前两个扇区,超级块位于 0 号块的后两个扇区。当块大小为 8 个扇区时,疏导程序或者保留块位于 0 号块的 0 - 1 号扇区,超级块位于 0 号块的 2 - 3 号扇区。
Ext4 文件系统的整体构造及第一个块组的具体构造如下图所示:
服务器故障 & 剖析:
某公司 Ext4 文件系统 umount 失败,管理员执行 fsck 查看一致性,后果 Ext4 文件 mount 不上 (有时也体现为目录变成了文件),报错信息:mount: wrong fs type, bad option,bad superblock。
因为日志和数据不统一而导致失常文件系统数据被笼罩的状况在 Ext3、Ext4 文件系统中产生的频率较高。因为 journal 日志文件保留着缓冲数据,数据恢复时能够通过 joumal 日志文件找到相干信息并重建源文件。
装置 Linux 零碎的硬盘第一个扇区是 MBR 扇区,通过观察 MBR 分区表得悉本案例中 Linux 零碎分为两个分区:替换分区和文件系统分区。北亚数据恢复工程师决定通过 joumal 日志文件找回失落的数据。
通过数据恢复工程师的检测剖析,本案例 Ext4 文件系统相干信息如下:
1、块大小为固定的 4KB,即 8 个扇区。
2、超级块 (Superblock) 起始地位在 1024 字节处,即 2 号扇区,大小为 2 个扇区。
3、块组形容表从第一个块开始,即从 4096 字节处开始。
服务器数据恢复过程:
1、首先用数据恢复工具将 Ext4 文件系统关上,发现 0 -23 扇区的数据 (包含超级块和块组描述符) 被日志记录所笼罩。Ext3、Ext4 文件系统的日志页以 C0 3B 39 98 结尾。
超级块中能够找到对于块大小的信息。从 journal 日志中把超级块的备份查找进去,而后再通过数据恢复工具进行超级块信息的查找,其标记是“53ef”。超级块 0x18-0x1B 处形容块大小,本案例块大小为 4KB。
通过超级块查看块大小。
通过数据恢复软件的模板编辑器也能够显示块大小。
2、重建 (复原) 超级块;因为原文件系统超级块损坏,所以复原文件时要把这部分超级块信息粘贴回去,即放在 2 号扇区开始或 1024 字节处。超级块备份的某些局部的数值可能与理论的超级块数值不统一,这种状况下须要通过数据恢复工具的模板管理器进行批改。本案例对超级块所在的第 0 个块组做了批改。
3、重建 (复原) 块组形容表;因为局部块组形容表被毁坏,所以须要先在 journal 日志文件里找到所有块组形容表并把它们粘贴回去。本案例中 journal 日志文件里的块组描述符表存储在超级块的前面,要找块组形容表能够先找超级块,找到后将块组描述符表内容粘贴到 4096 字节处。
4、重建 (复原) 目录;当要复原某个文件夹里的文件时,比方 kyproc 文件夹里的数据,这些文件夹在 WinHex 里是不能关上的状态,这意味着这个目录曾经损坏(下图 1)。关上其节点信息,发现失常数据被日志填充(下图 2)。
找到上一级目录 var 文件夹,右击点“open”,关上后能看到 var 文件夹里的所有文件的目录信息。找到要复原的 kyproc 目录的信息:12 32 EE 00 是其 i - 节点号,10 00 示意其目录项长度,06 示意其文件名称长度,02 示意其文件类型为目录。如下图所示。
在 var 文件夹的目录块下查找 kyproc 目录的地位,如下图所示,标红的地位是找到的后果。此地位显示所在块号为 62399108。
依据所在块号能够定位 kyproc 目录相应节点的地位。因为人工补节点比拟繁琐,能够从 journal 日志文件外面找到其节点信息,把相应的信息粘贴回去。
通过上述办法能够重建 (复原) 目录。复原目录里的文件也是通过同样的办法从 journal 日志文件里找到相应的文件的节点信息,找到后粘贴回原来的地位,达到重建 (复原) 文件的目标。
5、通过数据恢复工程师的致力,终于把用户须要的数据都复原进去,通过数据恢复工程师和用户的核检没有发现问题。本次数据恢复工作实现。