服务器数据恢复环境:
某品牌StorageWorks服务器;
8块SAS硬盘组成raid5,一块热备盘。
服务器故障:
服务器运行过程中有两块硬盘先后离线,服务器瘫痪,lun无法正常使用。服务器管理员联系我们数据恢复中心进行数据恢复。
我们数据恢复中心的服务器数据恢复工程师对服务器中所有磁盘进行物理检测和坏道检测,没有发现问题。
服务器数据恢复流程:
1、对故障服务器所有硬盘做镜像,以防在数据恢复过程中对原始数据造成二次破坏。
备份的部分数据如下图:
2、服务器故障原因分析:
目前初步了解的情况为基于RAID组的LUN有6个,均分配给HP-Unix小机使用,上层做的LVM逻辑卷,重要数据为Oracle数据库及OA服务端。一旦故障服务器中的某些磁盘性能不稳定,该型号服务器中的控制器会将其认为是坏盘的磁盘踢出RAID组。而一旦RAID组中掉线的盘达到RAID级别允许掉盘的极限,那么这个RAID将不可用,服务器瘫痪。
3、分析服务器RAID组结构:
服务器的LUN都是基于RAID组的,要想恢复服务器数据就需要先分析底层RAID组的信息,然后根据分析的信息重构原始的RAID组。服务器数据恢复工程师分析所有硬盘后发现4号盘的数据同其他盘不太一样,初步认为是hot Spare盘。接着分析其他数据盘,分析Oracle数据库页在每个磁盘中分布的情况,并根据数据分布的情况获取到
RAID组的条带大小,磁盘顺序及数据走向等RAID组的重要信息。
4、分析服务器RAID组掉线盘:
根据上述分析的RAID信息,通过北亚自主开发的RAID虚拟重组程序将原始的RAID组虚拟出来。但由于整个RAID组中一共掉线两块盘,因此需要分析这两块硬盘掉线的顺序。仔细分析每一块硬盘数据,发现有一块硬盘在同一个条带上的数据和其他硬盘明显不一样,因此初步判断此硬盘可能是最先掉线的,通过北亚自主开发的RAID校验程序对这个条带做校验,最终确定最先掉线的硬盘。
5、分析RAID组中的LUN信息:
由于LUN是基于RAID组的,因此需要根据上述分析的信息将RAID组最新的状态虚拟出来,然后分析LUN在RAID组中的分配情况,以及LUN分配的数据块MAP。由于底层有6个LUN,因此只需要将每一个LUN的数据块分布MAP提取出来,然后针对这些信息编写相应的程序,对所有LUN的数据MAP做解析,然后根据数据MAP导出所有LUN的数据。
导出的数据如下图:
6、服务器LVM逻辑卷及VXFS文件系统修复:
服务器数据恢复工程师分析所有生成出来的LUN,发现所有LUN中均包含HP-Unix的LVM逻辑卷信息。数据恢复工程师尝试解析每个LUN中的LVM信息,发现一共有三套LVM:45G的LVM中划分了一个LV,存放OA服务器端的数据;190G的LVM中划分了一个LV,存放临时备份数据;剩余4个LUN组成一个2.1T左右的LVM,划分了一个LV,存放Oracle数据库文件。
服务器数据恢复工程师编写解释LVM的程序,尝试将每套LVM中的LV卷都解释出来,但发现解释程序出错。仔细分析程序报错的原因,开发工程师debug程序出错的位置,文件系统工程师对恢复的LUN做检测,检测LVM信息是否会因存储瘫痪导致LMV逻辑卷的信息损坏。经过检测发现确实因为存储瘫痪导致LVM信息损坏。
尝试人工对损坏的区域进行修复,并同步修改程序,重新解析LVM逻辑卷。
搭建HP-Unix环境,将解释出来的LV卷映射到HP-Unix,并尝试Mount文件系统,结果Mount文件系统出错。尝试使用“fsck –F vxfs”命令修复vxfs文件系统,修复后还是不能挂载。怀疑底层vxfs文件系统的部分元数据可能破坏,需要进行手工修复。
仔细分析解析出来的LV,并根据VXFS文件系统的底层结构校验此文件系统是否完整。分析发现底层VXFS文件系统果然有问题,原来存储瘫痪的同时此文件系统正在执行IO操作,因此导致部分文件系统元文件没有更新和损坏。数据恢复工程师对这些损坏的元文件进行手工修复,保证VXFS文件系统能够正常解析。再次将修复好的LV卷挂载到HP-Unix小机上,尝试Mount文件系统,文件系统没有报错,成功挂载。
7、检测Oracle数据库文件并启动数据库:
在HP-Unix机器上mount文件系统后,将所有用户数据均备份至指定磁盘空间。所有用户数据大小在1.2TB左右。
部分文件目录截图如下:
使用Oracle数据库文件检测工具检测每个数据库文件是否完整,没有发现错误。使用北亚自主研发的Oracle数据库检测工具检测,发现部分数据库文件和日志文件校验不一致,数据库数据恢复工程师对此类文件进行修复并校验,直到所有文件校验均完全通过。
将恢复出来的Oracle数据库附加到原始生产环境的HP-Unix服务器中,尝试启动Oracle数据库,Oracle数据库启动成功。
8、启动Oracle数据库,启动OA服务端,在本地电脑上安装OA客户端。通过OA客户端对最新的数据记录以及历史数据记录进行验证,并且有安排不同部门人员进行远程验证。最终数据验证无误,数据完整,数据恢复成功。