服务器数据恢复环境:
某品牌X3850服务器中有一组由数块SAS硬盘组建的RAID5阵列,该阵列中有一块盘是热备盘。操作系统为linux redhat,上面跑着一个基于oracle数据库的oa。
服务器故障:
服务器raid5阵列中有一块硬盘离线,但是热备盘没有成功激活,之后另外一块硬盘离线,RAID崩溃。
服务器数据恢复过程:
1、将故障服务器中所有硬盘标记后取出,硬件工程师检测后没有发现存在硬件故障的硬盘。将所有硬盘以只读方式进行扇区级全盘镜像,镜像过程中发现较后掉线的那块盘上存在少量坏扇区,其余磁盘均没有发现无坏道。
2、基于镜像文件分析所有磁盘底层数据,找到重组raid所需要的相关信息。
3、根据上述获取到的raid结构相关信息(RAID级别,条带规则,条带大小,校验方向,META区域等)重组raid,重组完成后进行数据验证,发现200M以上的最新压缩包解压正常,判断该raid结构信息没有问题。
4、按照该结构生成RAID到一块单硬盘上,打开文件系统无明显报错。
5、在确定备份没有问题后,经用户方授权,对原盘重建RAID。重建时已经用全新硬盘更换发现坏道的后掉线的那块盘。
6、将恢复好的单盘接入故障服务器,用linux SystemRescueCd启动故障服务器并通过dd命令进行全盘回写。
7、回写完成后启动操作系统,无法进入操作系统并且报错,报错信息为:/etc/rc.d/rc.sysinit:Line 1:/sbin/pidof:Permission denied,怀疑该文件权限有问题。用SystemRescueCd重启后检查,发现此文件时间,权限,大小均有明显错误,显然节点损坏。
8、分析重组数据中的根分区,定位出错的/sbin/pidof,发现问题是由于后掉线硬盘上的坏道导致的。
9、使用其他几块完好的硬盘针对后离线磁盘的损坏区域进行xor补齐。补齐后重新校验文件系统,依然有错误。再次检查inode表,发现这块盘损坏区域有部分节点表现异常。
虽然节点中描述的uid还正常存在,但属性、大小、最初的分配块全部错误。按照所有可能性进行分析后,确定无法找回此损坏节点。只能希望能够修复此节点,或复制一个相同的文件过来。
10、针对所有可能有错的文件,北亚企安数据恢复工程师通过日志确定原节点块的节点信息,然后做修正。
11、修正后重新dd根分区,执行fsck -fn /dev/sda5进行检测,依然报错。
根据提示检查发现在系统中发现有多个节点共用同样的数据块。按此提示分析底层,发现因为有一块盘很早掉线,所以存在节点信息的新旧交集。
12、按照节点所属的文件进行区别,清除错误节点后,再次执行fsck -fn /dev/sda5,依然有报错信息,但已经很少。根据提示,发现这些节点多位于doc目录下,不影响系统启动,于是执行fsck -fy /dev/sda5强行修复。
13、修复后,重启系统,成功进入桌面。启动数据库服务,启动应用软件,一切正常,无报错。用户方检测后,认可数据恢复结果。