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

服务器数据恢复—如何应对双循环RAID5阵列的数据丢失问题?

服务器存储数据恢复环境:
一台存储中有一组由7块硬盘组建的RAID5阵列,存储中还有另外3块盘是raid中掉线的硬盘(硬盘掉线了,管理员只是添加一块的新的硬盘做rebuild,并没有将掉线的硬盘拔掉)。整个RAID5阵列的存储空间划分了一个LUN。

服务器存储故障:
硬盘出现故障导致存储中阵列瘫痪。
和管理员沟通,据管理员说是磁盘阵列中某些硬盘出现故障导致存储不可用,初步判断RAID中有硬盘掉线了。

服务器存储数据恢复过程:
1、将所有硬盘编号后取出。硬件工程师检测所有硬盘是否存在硬件故障,检测后并没有发现有硬盘存在物理故障。应该是某些硬盘上出现逻辑坏道或者其他原因导致RAID崩溃。将所有硬盘以只读方式进行扇区级全盘镜像,镜像完成后按照编号将所有磁盘按照原样还原到故障存储中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有硬盘底层数据。打开镜像盘后发现每512字节多加了一个8字节的校验,也就是说每扇区变成520字节。于是北亚企安数据恢复工程师编写小程序将8字节的校验去掉,方便后期的数据恢复工作。
3、转换完成后开始分析RAID结构。由于多了3块以前的离线的旧盘,所以需要比较每块磁盘。其中会有两块磁盘前面的部分数据相同,这两块磁盘中会有一块磁盘是旧的,这样的磁盘会有3对。旧盘的数据量没有新盘多,需要排除旧盘。
4、由于操作系统层面采用的是NTFS文件系统,通过MFT就可以获取RAID结构。搞清楚RAID结构后发现这不是一个普通的RAID5,而是一个双循环RAID5。通过常用软件如winhax无法重组RAID。经过测试发现UFS可以重组这个RAID,重组RAID后发现数据不是最新的,北亚企安数据恢复工程师判断出现这种情况的原因是管理员没有及时发现RAID5阵列中第一块硬盘掉线的情况,没有及时添加新的硬盘做rebuild。一段时间后又有一块硬盘掉线了,导致整个RAID不可用。所以还需要找出一块旧的磁盘,才能生成最新的数据。
5、尝试每次踢掉阵列中一块硬盘,然后重组RAID,看最新的数据是否可用,直到重组RAID中最新数据可用时为止。然后导出数据验证。
6、经过数据恢复工程师验证没有发现问题后,交由用户方进行检测。经过用户方的仔细检测和核对,确认恢复数据完整有效,认可数据恢复结果。本次数据恢复工作完成。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【初出江湖】分布式之什么是分布式存储?
  • P-Tuning v2:一种普遍有效的提示调整方法
  • 三分钟搭建线上RAG应用,实现定制化的知识库问答
  • 解锁企业微信营销新纪元:智驭未来,让每一次触达都精准高效!
  • Tensorflow实现深度学习8:猫狗识别
  • Qt Dialog退出事件
  • AIGC时代从新手到高手:B端竞品分析实战案例与技巧分享
  • 华为Huawei路由器交换机SSH配置
  • 设计模式-结构型模式-组合模式
  • 学习WebGl基础知识(二)
  • Docker原理及实例
  • 使用docker部署project-exam-system(项目)
  • QT connect的使用
  • SLM2110CG 1.0A/1.6A600V完美代替IR2110 精准驱动,可靠之芯 高压、高速的功率MOSFET和IGBT驱动器
  • 【深度解读】知识库的作用
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Git的一些常用操作
  • Javascript Math对象和Date对象常用方法详解
  • Js基础知识(一) - 变量
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Objective-C 中关联引用的概念
  • orm2 中文文档 3.1 模型属性
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 程序员该如何有效的找工作?
  • 从0实现一个tiny react(三)生命周期
  • 对JS继承的一点思考
  • 分布式事物理论与实践
  • 爬虫模拟登陆 SegmentFault
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用common-codec进行md5加密
  • 写代码的正确姿势
  • 新手搭建网站的主要流程
  • 学习使用ExpressJS 4.0中的新Router
  • 移动端唤起键盘时取消position:fixed定位
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (独孤九剑)--文件系统
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (杂交版)植物大战僵尸
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .gitignore文件设置了忽略但不生效
  • .net core 6 redis操作类
  • .net core Redis 使用有序集合实现延迟队列
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .Net8 Blazor 尝鲜
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET运行机制
  • .NET中winform传递参数至Url并获得返回值或文件