[raid 数据恢复故障描述]
需要进行数据恢复的是北京一家公司的 IBM X3850 服务器, 服务器挂载了 5 块 73G SAS 硬盘组成 raid5 磁盘阵列, 4 号盘为热备盘 (Hot-Spare), 由于未知原因 2 号盘离线后未能成功激活热备盘 rebuild, 后 3 号盘离线, RAID 崩溃.
用户服务器的操作系统为 linux redhat 5.3, 服务器存储有 oracle 数据库, 因 oracle 已经不再对基于数据库上的 oa 系统提供后续支持, 用户要求尽可能数据恢复 + 操作系统复原.
[数据恢复初检结情况]
Raid 阵列中硬盘无明显物理故障, raid 无同步表现.
[raid 阵列数据恢复方案]
1, 关闭服务器并确保数据恢复过程中保持服务器关闭状态以保护故障服务器原始状态.
2, 将故障硬盘标好序号, 确保在拿出槽位后可以完全复原.
3, 将需要进行数据恢复的硬盘挂载至北亚数据恢复中心只读环境中, 对所有故障硬盘做完全镜像 (参考 < 如何对磁盘做完整的全盘镜像备份 >). 用于数据恢复操作使用.
4, 分析备份磁盘的 raid 结构, 得到原 raid 阵列的 RAID 级别, 条带规则, 条带大小, 校验方向, META 区域等必要信息并根据这些信息搭建虚拟 raid5 环境.
5, 解释虚拟磁盘及文件系统, 然后检测虚拟结构的正确性, 如果虚拟结构不正确则重复上述步骤, 直到成功为止.
6, 数据检测正常后进行数据回迁, 原则上不再使用原盘, 如确实经客户认可需要使用原盘则需要确认原盘已经完整备份后再重建 raid, 回迁数据. 可以使用 linux livecd 或 win pe(通常不支持) 等进行, 也可以在故障服务器上用另外硬盘安装一个回迁用的操作系统, 再进行扇区级别的回迁.
[恢复周期]
备份时间, 约 2 小时.
解释及导出数据时间, 约 4 小时.
回迁操作系统, 约 4 小时.
[数据恢复实施过程]
1, 对用户服务器进行镜像后发现除 2 号盘有坏扇区存在, 其他盘均无坏道, 坏道数量悦游 20 个左右.
2, 分析结构: 得到的最佳结构为 0,1,2,3 盘序, 缺 3 号盘, 块大小 512 扇区, backward parity(Adaptec), 结构如下图:
图一:
3, 组好后数据验证, 200M 以上的最新压缩包进行测试性解压查看有无报错, 确定结构是否正确, 解压正常, 结构正确. 直接按此结构生成虚拟 RAID 到一块单硬盘上, 打开文件系统无明显报错.
4, 在对客户原盘进行备份后重建 raid 阵列 (将存在坏道的 2 号硬盘以新盘替换), 连接恢复好的数据盘后通过 "dd" 命令进行全盘回写操作.
5, 通常情况下数据回写后数据恢复工作完成, 数据恢复为成功, 但是在这一步出现了小故障, 影响了数据恢复进程.
[系统复原过程]
使用 "dd" 命令进行全盘回写操作后启动操作系统却出现报错:/etc/rc.d/rc.sysinit:Line 1:/sbin/pidof:Permission denied , 系统无法进入
工程师预判报错原因为文件权限问题, 于是用 SystemRescueCd 重启后检查文件时间, 权限, 大小均有明显错误.
对数据中的根分区进行了重新分析, 将出错的 / sbin/pidof 定位出来发现问题的原因再于 2 号盘的坏道..
通过没有坏道的 0 号盘, 1 号盘, 3 号盘进行对 2 号盘的损坏区域 xor 补齐后校验文件系统依然有错误, 再一次对 iNode 表进行检查发现 2 号盘损坏区域有部分节点表现为 (图中的 55 55 55 部分):
图二:
问题显而易见, 节点中描述的 uid 还正常存在, 但属性, 大小, 以最初的分配块均不正确. 此种情况下是没有办法找回损坏的节点了, 只能希望修复此节点, 或复制一个相同的文件过来. 对所有可能有错的文件, 均通过日志确定原节点块的节点信息, 再做修正.
修正后重新 dd 根分区, 执行 fsck -fn /dev/sda5, 进行检测, 依然有报错, 如下图:
图三:
根据提示, 在系统中发现有多个节点共用同样的数据块. 按此提示进行底层分析, 发现, 因 3 号盘早掉线, 帮存在节点信息的新旧交集.
按节点所属的文件进行区别, 清除错误节点后, 再次执行 fsck -fn /dev/sda5, 依然有报错信息, 但已经很少. 根据提示, 发现这些节点多位于 doc 目录下, 不影响系统启动, 于是直接 fsck -fy /dev/sda5 强行修复.
修复后, 重启系统, 成功进入桌面.
启动数据库服务, 启动应用软件, 一切正常, 无报错.
到此, 数据恢复及系统回迁工作完成.
来源: http://blog.51cto.com/sun510/2116552