• 【服务器数据恢复】某品牌x3850服务器RAID5数据恢复案例


    服务器故障:
    某公司的一台某品牌x3850服务器raid5中两块磁盘先后掉线,服务器崩溃。故障服务器的操作系统为linux redhat,应用为公司oa,数据库采用oracle。因oracle已经不再对此oa提供后续支持,管理员联系我们数据恢复中心要求尽可能恢复数据和系统。
    数据恢复工程师对故障服务器进行检测,发现热备盘没有启用,硬盘无明显物理故障,无明显同步表现。

    服务器数据恢复方案:
    1、保护原环境,关闭服务器,确保在恢复过程中不再开启服务器。
    2、将故障硬盘标好序号,确保在拿出槽位后可以完全复原。
    3、将故障硬盘挂载至只读环境,对所有故障硬盘做完全镜像(参考<如何对磁盘做完整的全盘镜像备份>)。备份完成后交回原故障盘,之后的恢复操作直到数据确认无误前不再涉及原故障盘。
    4、对备份盘进行RAID结构分析,得到其原来的RAID级别,条带规则,条带大小,校验方向,META区域等。
    5、根据得到的RAID信息搭建一组虚拟的RAID5环境。
    6、进行虚拟磁盘及文件系统解释。
    7、检测虚拟结构是否正确,如不正确,重复4-7过程。
    8、确定数据无误后,按用户要求回迁数据。如果仍然使用原盘,需确定已经完全对原盘做过备份后,重建RAID,再做回迁。回迁操作系统时,可以使用linux livecd或win pe(通常不支持)等进行,也可以在故障服务器上用另外硬盘安装一个回迁用的操作系统,再进行扇区级别的回迁。
    9、数据移交后,由北亚数据恢复中心延长保管数据3天,以避免可能忽略的纰漏。

    服务器数据恢复过程:
    1、对故障服务器中的所有硬盘进行完整镜像,镜像后数据恢复工程师发现2号盘有10-20个坏扇区,其余磁盘没有发现坏道。
    2、分析结构:获取到的最佳结构为0,1,2,3盘序,缺3号盘,块大小为512扇区,backward parity(Adaptec),结构如下图:

    3、组好后进行数据验证,200M以上的最新压缩包解压无报错,确定结构正确。
    4、直接按此结构生成虚拟RAID到一块单硬盘上,打开文件系统无明显报错。
    5、确定备份包安全的情况下,经管理员同意后,北亚数据恢复工程师对原盘重建RAID,重建时已经用全新硬盘更换损坏的2号盘。将恢复好的单盘用USB方式接入故障服务器,再用linux SystemRescueCd启动故障服务器,之后通过命令进行全盘回写。
    6、回写后,启动操作系统。正常情况下,这时候所有工作应该完成了,不巧的是,问题还没有解决。

    下面是后续的数据恢复过程:
    1、接前文:回写完所有数据后,启动操作系统报错,报错信息为:/etc/rc.d/rc.sysinit:Line 1:/sbin/pidof:Permission denied。
    2、根据错误信息得知此文件权限有问题,用SystemRescueCd重启后检查,发现此文件时间,权限,大小均有明显错误,显然节点损坏。
    3、重新分析重组数据中的根分区,定位出错的/sbin/pidof,发现问题产生原因是2号盘的坏道。
    4、使用0,1,3这3块盘,针对2号盘的损坏区域进行xor补齐。补齐后重新校验文件系统,依然有错误,再次检查inode表,发现2号盘损坏区域有部分节点表现为下图中的55 55 55部分:

    5、虽然节点中描述的uid还正常存在,但属性,大小,最初的分配块全部是错误的。按照所有可能进行分析,数据恢复工程师确定无法找回此损坏节点,只能希望修复此节点,或复制一个相同的文件过来。
    6、对所有可能有错的文件通过日志确定原节点块的节点信息,再做修正。
    7、修正后重新dd根分区,执行fsck -fn /dev/sda5,进行检测,依然有报错,如下图:

    8、根据提示,在系统中发现有多个节点共用同样的数据块。按此提示进行底层分析,发现因3号盘早掉线,存在节点信息的新旧交集。
    9、按节点所属的文件进行区别,清除错误节点后,再次执行fsck -fn /dev/sda5,依然有极少量的报错信息。根据提示,发现这些节点多位于doc目录下,不影响系统启动,于是直接fsck -fy /dev/sda5强行修复。
    10、修复后,重启系统成功进入桌面。
    11、启动数据库服务,启动应用软件,一切正常,无报错。数据恢复及系统回迁工作完成。

  • 相关阅读:
    0206-leetcode算法实现-反转链表reverse-linked-list-python&golang实现
    Elasticsearch集群角色类型node.master及node.data
    linux cache缓存过大导致内存资源不够用
    helm v3 调试 k8s elasticsearch集群(5)
    0203-leetcode算法实现之移除链表元素-remove-linked-list-elements-python&golang实现
    算法学习步骤
    conda 安装的坑
    matplotlib Demo
    pandas小demo
    深度学习常见问题
  • 原文地址:https://www.cnblogs.com/frombyte/p/16373876.html
Copyright © 2020-2023  润新知