当前位置: 首页 > news >正文

服务器数据恢复-EMC存储磁盘损坏的RAID5数据恢复案例

服务器数据恢复环境:
北京某单位有一台EMC某型号存储,有一组由10块STAT硬盘组建的RAID5阵列,另外2块磁盘作为热备盘使用。RAID5阵列上层只划分了一个LUN,分配给SUN小机使用,上层文件系统为ZFS。

服务器故障:
存储RAID5阵列中有2块硬盘损坏离线,只有一块热备盘激活,RAID5阵列瘫痪,上层LUN无法正常使用。

服务器数据恢复过程:
1、将故障存储中所有磁盘编号后取出,由硬件工程师对所有磁盘做硬件故障检测,经过检测没有发现有硬盘存在物理故障和坏道。

磁盘没有发现物理故障和坏道,初步推断是某些磁盘读写不稳定导致故障发生。EMC控制器的磁盘检测策略非常严格,一旦检测到某些磁盘性能不稳定,EMC控制器极有可能会判定这些磁盘为坏盘,将认定为坏盘的磁盘踢出RAID阵列。一旦RAID阵列中掉线的盘到达到该RAID级别允许掉盘的极限值,就会导致RAID阵列崩溃不可用,由于EMC存储的LUN都是基于RAID阵列的,RAID崩溃会导致基于该RAID阵列的LUN不可用。
2、将故障存储中所有磁盘以只读方式做全盘镜像备份,镜像完成后按照编号将所有磁盘还原到原存储中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。镜像完成后发现源磁盘的扇区大小为520字节,使用工具将镜像数据做520字节To512字节的转换。
3、基于镜像文件分析底层RAID5阵列的相关信息。经过分析发现发现其中有2块盘(8号盘和11号盘)完全没有数据,从管理后台上显示这2块盘是Hot Spare,8号盘替换了离线的5号盘。虽然8号盘作为热备盘成功激活,但该RAID级别为RAID5,因为有2块盘离线,所以该RAID5阵列还缺失一块硬盘,所以数据没有同步到8号盘中。继续分析其他10块硬盘,分析数据在硬盘中的分布规律、RAID条带的大小、盘序等相关信息。
4、根据上面步骤分析出来的RAID信息虚拟重构原RAID。由于整个RAID阵列中一共掉线两块盘,需要分析这两块盘掉线的顺序。经过分析发现有一块盘在同一个条带上的数据和其他盘明显不一样,因此初步判断此盘可能是先掉线的。使用北亚企安自主开发的RAID校验程序对这个条带做校验后确认先掉线的那块硬盘。
5、由于LUN是基于RAID阵列的,完成原RAID阵列的重组后分析LUN在RAID阵列中的分配信息和LUN分配的数据块MAP。根据LUN相关信息解释LUN的数据MAP并导出LUN的所有数据。
6、使用北亚企安自主开发的ZFS文件系统解释程序对生成的LUN做文件系统解释,在解释某些文件系统元文件的过程中程序报错。开发工程师对程序做debug调试并分析程序报错原因,经过数小时的分析与调试,发现无法解释文件系统的的原因是存储瘫痪导致ZFS文件系统中某些元文件损坏。人工修复这些损坏的元文件。
7、修复完成后解析ZFS文件系统,解析所有文件节点及目录结构。

8、由用户方工程师对恢复出来的数据进行验证,验证过程中没有发现问题,确认恢复数据完整有效。本次数据恢复工作完成。

http://www.lryc.cn/news/164501.html

相关文章:

  • Nginx优化文件上传大小限制
  • navicat SSH连接数据库报错: Putty key format too new
  • 基于大规模MIMO通信系统的半盲信道估计算法matlab性能仿真
  • 自然语言处理学习笔记(九)———— OVV Recall Rate与 IV Recall Rate
  • 区块链正在开启一场回归商业,融合商业的新发展
  • 【软考】系统集成项目管理工程师(三)信息系统集成专业技术知识③
  • js中如何判断一个对象是否为空对象?
  • Linux SysRq 简介
  • Mac版本破解Typora,解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题
  • elementui el-dialog 动态生成多个,点击按钮打开对应的 dialog
  • 自己开发一个接口文档页面html
  • 信息化发展28
  • React 入门实例教程
  • Window安装Node.js npm appium Appium Desktop
  • Pytorch intermediate(三) RNN分类
  • vue2+webpack升级vue3+vite,修改插件兼容性bug
  • 案例实战-Spring boot Web
  • Spring6.1之RestClient分析
  • 冒泡排序、选择排序、插入排序、希尔排序
  • OpenCV(二十三):中值滤波
  • Prompt Tuning训练过程
  • 装备制造企业是否要转型智能装备后服务型公司?
  • day-49 代码随想录算法训练营(19) 动态规划 part 10
  • 检查文件名是否含不可打印字符的C++代码源码
  • 学习笔记-正则表达式
  • Wireshark TS | 网络路径不一致传输丢包问题
  • CMake高级用法实例分析(学习paddle官方的CMakeLists)
  • 数据采集: selenium 自动翻页接口调用时的验证码处理
  • IDEA安装翻译插件
  • DBeaver使用