服务器数据恢复—raid5磁盘阵列崩溃如何恢复数据?
服务器数据恢复环境&故障:
一台服务器中有5块硬盘,其中的4块组建了一组RAID5阵列,剩下一块盘作为热备盘(Hot-Spare)使用。服务器操作系统为linux,应用系统为构架于oracle数据库的一个oa。
raid5阵列中一块盘离线,但热备盘未自动激活rebuild。直到另外一块盘离线,RAID崩溃。
由于oracle已经不再对本案例中的oa系统提供后续支持,用户方要求尽可能恢复数据和操作系统。经过检测发现热备盘完全没有启用,硬盘无明显物理故障,无明显同步表现。
服务器数据恢复过程:
1、将故障服务器中所有硬盘做好标记后取出,以只读方式将所有硬盘进行扇区级别完整镜像,镜像后发现后离线的硬盘有10-20个坏扇区,其余磁盘,均无坏道。镜像完成后将所有硬盘根据标记按照原样还原到原服务器中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免后续操作对原始数据造成二次破坏。
2、基于镜像文件分析raid结构,获取到盘序、块大小、backward parity(Adaptec)等raid结构相关信息。
3、验证数据发现大小200M以上的压缩包解压无报错,确定结构正确。
4、按照此结构虚拟重组RAID到一块单硬盘上,打开文件系统无明显报错。
5、确定备份包安全的情况下,经用户方同意后,对原盘重建RAID(重建时已经用全新硬盘更换发现坏扇区的硬盘)。将恢复好的单盘用USB方式接入故障服务器,再用linux SystemRescueCd启动故障服务器,之后通过dd命令进行全盘回写。
6、回写后启动操作系统。无法正常进入操作系统并且报错。
怀疑报错信息中提到的文件权限有问题。使用SystemRescueCd重启后检查,发现此文件时间,权限,大小均有明显错误,显然节点损坏。
7、重新分析重组数据中的根分区,定位出错的目录,发现问题是由硬盘坏道引起的。
使用其他数据盘盘,针对发现坏道的硬盘的损坏区域进行xor补齐。补齐后重新校验文件系统,依然有错误。再次检查inode表,发现坏道的硬盘上的损坏区域有部分节点表现下图中的55 55 55部分。
8、虽然节点中描述的uid还正常存在,但属性、大小、最初的分配块全部是错误的。按照所有可能进行分析,确定无法找回此损坏节点。要么修复此节点,或者复制一个相同的文件过来。
对所有可能有错的文件,通过日志确定原节点块的节点信息,再做修正。
修正后重新dd根分区,执行fsck命令进行检测,依然报错。
9、根据提示,在系统中发现有多个节点共用同样的数据块。按此提示进行底层分析,发现存在节点信息的新旧交集。
10、北亚企安数据恢复工程师按照节点所属的文件进行区别。清除错误节点后,再次执行fsck命令检测,依然出现报错,但数量已经很少。根据提示,发现这些节点大多位于doc目录下,不影响系统启动,于是直接fsck命令强行修复。
修复完成后重启系统,成功进入桌面。启动数据库服务和应用软件,一切正常,无报错。数据库数据恢复工作完成。