服务器数据恢复—EMC存储RAID5磁盘阵列数据恢复案例

服务器数据恢复环境:
一台EMC某型号存储设备,该存储中有一组由12块(包括2块热备盘)STAT硬盘组建的raid5阵列。

服务器故障:
该存储在运行过程中突然崩溃,raid瘫痪。数据恢复工程师到达现场对故障存储设备进行初检,发现raid中有两块硬盘掉线但只有一块热备盘成功激活,所以导致阵列瘫痪,上层lun无法使用。

服务器数据恢复过程:
1、将故障存储中所有磁盘标记后取出。由硬件工程师检测后没有发现有磁盘存在物理故障,使用坏道检测工具检测也没有发现有磁盘存在坏道。将所有磁盘以只读方式进行扇区级全盘镜像,由于源磁盘的扇区大小是520字节,做完镜像后将520字节转换成512字节。
2、由于故障存储中所有硬盘经过检测没有发现存在物理故障和坏道,基本上可以推断硬盘掉线是磁盘读写性能不稳定造成的。EMC控制器的磁盘检测策略十分严格,读写性能不稳定的磁盘一般会被控制器判定为坏盘并踢出raid。当raid中掉线盘超过该raid级别的允许掉盘数量的极限,raid就会崩溃,基于raid的lun不可用。本案例中只有一个lun分配给sun小机,上层文件系统是ZFS。
3、EMC存储的LUN都是基于RAID。通过分析发现有2块盘完全没有数据,EMC存储的管理界面上显示这2块没有数据的盘都是热备盘,其中一块热备盘替换了一块离线盘。虽然这块热备盘成功激活,RAID中还有一块硬盘离线,所以数据没有同步到这块热备盘中。继续分析其他10块盘,分析数据在硬盘中的分布规律、RAID条带大小以及盘序等重组RAID所需要的信息。


4、由于RAID中有两块盘掉线,需要搞清楚这两块盘的掉线顺序。分析每一块盘中的数据,发现有一块硬盘在同一个条带上的数据和其他硬盘明显不一样,因此初步判断此硬盘可能是最先掉线的。通过北亚企安自主开发的RAID校验程序对这个条带做校验,最终确定这块硬盘就是最先掉线的。
5、根据上面步骤获取到的信息将RAID重组出来。EMC存储的LUN是基于RAID的。分析LUN在RAID中的分配信息,以及LUN分配的数据块MAP。根据上述信息,用北亚企安自主开发的程序解释LUN的数据MAP并导出LUN的所有数据。
6、用北亚企安自主开发的ZFS文件系统解释程序对生成的LUN做文件系统解释,但是在解释某些文件系统元文件的时候报错。开发工程师对程序做debug调试并分析程序报错原因,文件系统工程师分析ZFS文件系统是否因为版本原因而导致程序不支持。经过长达数小时的分析与调试,发现ZFS文件系统因存储瘫痪导致某些元文件损坏,从而导致文件系统解释报错。
7、北亚企安数据恢复工程师手工修复这些损坏的元文件,直到ZFS文件系统能够正常解析。
8、解析ZFS文件系统,解析所有文件节点及目录结构。用户方工程师对恢复出来的数据进行随机验证,经过仔细验证没有发现问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点云数据与多相机图像融合实现3D场景的彩色可视化

引言 在现代3D计算机视觉和机器人感知领域,点云数据和图像信息的融合正变得越来越重要。点云数据提供了精确的几何结构,而图像则包含了丰富的颜色和纹理细节。将这两种数据源结合起来,我们能够创建更加逼真和信息丰富的3D场景表示。本文将深…

Django学习笔记之Django基础学习

Django笔记 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录…

剧场的客户端形式区别,APP,小程序,H5的不同优势以及推广方案

剧场的客户端形式区别与推广策略 在数字化时代,剧场的线上化成为大势所趋。不同的线上平台如APP、小程序和H5各有千秋,如何选择最适合自己的平台,并制定有效的推广方案,成为了剧场管理者需要考虑的重要问题。 APP:深度…

nn.functional.softmax(X, dim=-1)

dim-1表示在最后一个维度(大概率是一行)应用Softmax函数,将值标准化为概率分布。 实例 假设我们有一个张量X,形状为(2,3),内容如下: import torch import torch.nn.…

vite 打包前请求接口和打包后的不一致

在使用 Vite 进行项目打包时,如果发现打包前请求接口和打包后的行为不一致,这可能是由于多种原因导致的。以下是一些可能的原因和相应的解决方案: 1. 代理配置问题 开发环境:在开发环境中,Vite 通常使用 vite.config…

【AIGC】OpenAI API在快速开发中的实践与应用:优化ChatGPT提示词Prompt加速工程

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯使用最新型号确保最佳实践利用最新模型进行高效任务处理为什么要选择最新模型?结论 💯指令与上下文的分隔最佳实践分隔指令和上下文的重要性使用符…

univer实现excel协同

快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src&q…

【分布式微服务云原生】 探索SOAP协议:简单对象访问协议的深度解析与实践

探索SOAP协议&#xff1a;简单对象访问协议的深度解析与实践 摘要&#xff1a; 在现代分布式系统中&#xff0c;SOAP&#xff08;简单对象访问协议&#xff09;扮演着至关重要的角色&#xff0c;提供了一种标准化的方式来实现不同系统间的通信。本文深入探讨了SOAP的工作原理、…

无线费控智能水表:智能生活的守护者

在当今智能化日益普及的时代&#xff0c;无线费控智能水表作为一项重要的技术创新&#xff0c;正在逐步改变我们的生活方式。它不仅能够实现远程抄表&#xff0c;自动计费&#xff0c;还能有效监控用水情况&#xff0c;促进水资源的合理利用&#xff0c;是现代城市智慧化管理不…

如何在 cPanel 中使用 PHP-FPM

PHP性能一直是影响网站托管的一个重要问题。PHP是当前网络上使用最广泛的服务器编程语言&#xff0c;远远领先于其他语言。最受欢迎的内容管理系统和电子商务应用程序&#xff0c;如WordPress、Joomla、Drupal、Magento等&#xff0c;都是用PHP编写的。 PHP-FPM加速了在繁忙服务…

【微信小程序_10_wxss模板中的内边距与外边距】

摘要:本文介绍了微信小程序开发中内边距(padding)和外边距(margin)的概念及作用。内边距是元素内容与边框间的距离,可调整文字与边框的间隔;外边距是元素边框与相邻元素间的距离,用于控制元素间隔及实现水平居中。合理运用这两个属性可实现美观、合理的页面设计。 微信…

计算机毕设选题推荐【基础功能+创新点】【Python方向】

以下是50条精选Python方向的毕业设计选题&#xff0c;每个选题包含基础功能和创新功能&#xff0c;涵盖多样化的应用场景&#xff0c;以帮助计算机专业学生完成毕业设计。 1. 基于Python的个人理财管理系统 基础功能&#xff1a;用户注册与登录、支出记录管理、收入记录管理、…

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic 一、认识TDengine二、TDengine Kafka Connector三、什么是 Kafka Connect?四、前置条件五、安装 TDengine Connector 插件六、启动 Kafka七、验证 kafka Connect 是否启动成功八、TDengine Source Connector 的使用…

24/10/12 算法笔记 NiN

LeNet、AlexNet和VGG都有一个共同的设计模式&#xff1a;通过一系列的卷积层与汇聚层来提取空间结构特征&#xff1b;然后通过全连接层对特征的表征进行处理。 AlexNet和VGG对LeNet的改进主要在于如何扩大和加深这两个模块。 或者&#xff0c;可以想象在这个过程的早期使用全连…

用java来编写web界面

一、ssm框架整体目录架构 二、编写后端代码 1、编写实体层代码 实体层代码就是你的对象 entity package com.cv.entity;public class Apple {private Integer id;private String name;private Integer quantity;private Integer price;private Integer categoryId;public…

C++:STL:vector类常用函数介绍(附加部分重要函数模拟实现)

cplusplus.com/reference/vector/vector/https://cplusplus.com/reference/vector/vector/ vector在实际中非常的重要&#xff0c;在实际中我们熟悉常见的接口就可以&#xff0c;有了string的基础&#xff0c;vector其实大体使用方法上二者是类似的&#xff1a; 这里我们先给…

ScriptableObject基本使用

使用方法 自定义类继承ScriptableObject 可以在类内部增加数据或者数据类&#xff0c;一般用于配置 注意事项 给继承ScriptableObject的类增加CreateAssetMenu特性。 CreateAssetMenu一般默认三个参数 第一个参数是父目录 第二个参数是父目录的子选项 第三个参数是可以…

k8s yaml编写规范

yaml简介 yaml 是专门用来写配置文件的语言 yaml文件也是一种配置文件类型&#xff0c;后缀名是.yaml或.yml都可以 yaml语法规则 大小写敏感使用缩进表示层级关系&#xff08;不能用Tab&#xff0c;只能用空格&#xff09;相同层级的元素左对齐#号表示单行注释字符串可以不用…

多态(二)

1.多态的原理 虚函数表 class Base { public:virtual void Func1(){cout << "Func1()" << endl;} private:int _b 1; };b对象是8bytes&#xff0c;除了_b成员&#xff0c;还多一个__vfptr放在对象的前面(注意有些 平台可能会放到对象的最后面&#xf…

微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动

app.json "resolveAlias": {"~/*": "/*"},文件代码也没有问题&#xff0c;网上的方法试过来了&#xff0c;大模型AI也问过遍&#xff0c;熬夜到凌晨2点半&#xff0c;最不可思议的是居然是因为微信开发者工具版本的问题&#xff0c;我真的是笑死…