服务器数据恢复环境:
一台ibm某型号服务器,5块硬盘组建一组raid5磁盘阵列,redhat linux操作系统,上层部署有oracle数据库。
服务器故障:
raid5阵列中两块硬盘离线,服务器崩溃。经过初检发现故障服务器中的硬盘不存在物理故障,热备盘未激活,无同步迹象。
服务器数据恢复过程:
1、将故障服务器中的所有磁盘编号后取出槽位,挂载至北亚企安数据备份平台,以只读方式做全盘镜像备份,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘造成二次破坏。备份完成后将磁盘按照编号还原到原服务器中。对硬盘做镜像过程中,发现除了2号盘有十几个坏扇区外,其他硬盘均正常。
2、基于镜像文件分析raid5结构,获取到原阵列中的条带大小、校验方向、条带规则以及meta区域等raid相关信息。
3、根据分析出来的raid相关信息虚拟重构raid5。重构完成后进行数据验证,200M以上的最新压缩包解压无报错。将raid5生成到一块硬盘上,通过USB的方式接入到原服务器,然后通过linux SystemRescueCd启动故障服务器并使用dd命令进行全盘回写。
4、数据回写完成后无法进入操作系统,报错信息为:/etc/rc.d/rc.sysinit:Line 1:/sbin/pidof:Permission denied。北亚企安数据恢复工程师使用SystemRescueCd重启后进行检查,发现文件的权限、时间、大小都有明显错误。对根分区再次进行分析,定位出错的/sbin/pidof/,确定出现错误的原因是2号盘有坏道。
5、通过其他盘针对2号盘的损坏区域进行xor补齐并重新校验文件系统,依然出错。数据恢复工程师只好再次检查inode表,发现2号盘损坏区域有部分节点表现为(图中的55 55 55部分):
6、虽然节点中描述的uid还在,但大小、属性和最初分配块全部是错误的。通过日志确定原节点块的节点信息并进行修正,重新dd根分区,执行“fsck -fn /dev/sda5/”命令进行检测。报错情况如下图:
7、经过分析发现,原来3号盘最先离线,节点信息新旧交集导致有多个节点共用数据块。北亚企安数据恢复工程师按节点所属的文件进行区别,清除错误节点后再次执行“fsck -fn /dev/sda5”命令,依然有部分位于doc目录下的节点报错。由于不影响启动,强行修复后重启系统,系统正常,启动数据库正常。
8、经过用户方工程师反复验证,确认恢复数据完整有效。本次数据恢复工作完成。