服务器数据恢复—EVA存储多块硬盘离线导致部分LUN丢失的数据恢复案例

服务器数据恢复环境:
1台某品牌EVA4400控制器+3台EVA4400扩展柜+28块FC硬盘。

服务器故障:
由于两块磁盘掉线导致存储中某些LUN不可用,某些LUN丢失,导致存储崩溃。

服务器数据恢复过程:
1、由于EVA4400存储故障是某些磁盘掉线导致的,因此收到故障存储中的所有磁盘后,硬件工程师先对所有磁盘做物理故障检测,检测完成后发现所有磁盘均不存在明显物理故障。使用坏道检测工具检测也没有发现坏道。
磁盘坏道检测日志截图:

将所有磁盘以只读方式进行扇区级全盘镜像,镜像完成后将所有磁盘还给用户方。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
备份完部分数据截图:

由于没有检测到磁盘存在物理故障或者坏道,可以初步判断磁盘掉线是由于某些磁盘读写不稳定导致的。EVA控制器检查磁盘策略比较严格,EVA控制器通常将性能不稳定的磁盘识别为坏盘并踢出磁盘组。一旦某个LUN的同一个条带中掉线的盘到达极限,这个LUN将不可用。如果EVA存储中所有LUN都包含这些掉线的盘,所有LUN都会受影响。所以两块盘掉线导致整个EVA存储的LUN都不可用的情况是有可能发生的。故障EVA存储目前的情况就是8个LUN正常,7个LUN损坏,6个LUN丢失。需要恢复所有LUN的数据。
2、基于镜像文件分析所有硬盘的底层数据。EVA存储中的LUN都是以RAID条目的形式存储数据的,EVA存储将每个磁盘的不同块组成一个RAID条目。RAID条目的类型有很多种,首先需要分析出组成LUN的RAID条目类型以及这个RAID条目是由哪些盘的哪些块组成。这些信息都存放在LUN_MAP中,每个LUN都有一份LUN_MAP。EVA将LUN_MAP分别存放在不同的磁盘中,使用一个索引来指定其位置,因此在每个磁盘中找这个指向LUN_MAP的索引就可以找到现存LUN的信息了。
3、虽然磁盘中记录了指向LUN_MAP的索引,但是它只记录现存的LUN,丢失的LUN是不会记录索引的。EVA存储中删除一个LUN只会清除这个LUN的索引,而不会清除这个LUN的LUN_MAP。扫描所有磁盘找到所有符合LUN_MAP的数据块,然后排除掉现有的LUN_MAP,剩下的LUN_MAP也不一定全是删除的,也有一些是以前旧的。只能将所有LUN_MAP的数据都恢复出来,人工核对哪些LUN是删除的。
4、这些由于性能不稳定而掉线的磁盘中存放的是一些旧的数据,在生成数据的时候需要将这些磁盘都排除掉。如何判断哪些磁盘是掉线的呢?由于本案例中LUN基本上都是RAID5阵列,只需要将一个LUN的RAID条目通过RAID5的校验算法算出校验值,再和原有的校验值做比较就可以判断这个条目中是否有掉线盘。将一个LUN的所有LUN_MAP都校验一遍就可以知道这个LUN中的哪些RAID条目中有掉线盘。而这些RAID条目中都存在的那个盘就一定是掉线盘。排除掉线盘,然后根据LUN_MAP恢复所有LUN的数据。
5、北亚企安数据恢复工程师编写扫描LUN_MAP的程序扫描全部LUN_MAP,结合人工分析获取到准确的LUN_MAP。编写检测RAID条目的程序检测所有LUN中掉线的磁盘,结合人工分析排除掉线的磁盘。编写LUN数据恢复程序结合LUN_MAP恢复所有LUN数据。人工核对每个LUN,确认是否和用户方描述的一致。部分LUN的数据截图:

6、根据用户方描述,所有LUN的数据可以分成两大部份:Vmware虚拟机和HP-UX上的裸设备,裸设备里存放的是Oracle的dbf数据库。由于恢复的是LUN,无法看到里面的文件,需要人工核对哪些LUN是存放Vmware的数据,哪些是HP-UX的裸设备。然后将LUN挂载到不同的验证环境中验证恢复的数据是否完整。
7、Vmware虚拟机和裸设备中oracle数据库的验证这里就不赘述了。
8、将所有恢复出来的数据移交到用户方准备好的环境中,经过验证,用户方确认恢复出来的数据完整有效,认可数据恢复结果。本次数据恢复工作完成。

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

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

相关文章

Java 对外API接口开发 java开发api接口如何编写

Java API API(Application Programming Interface)是指应用程序编程接口,的JavaAPI是指JDK提供的各种功能的Java类 String类 String类的初始化: (1)使用字符串常量直接初始化 初始化:String s…

闲话 .NET(4):为什么要跨平台?

前言 .NET Core 有一个关键词就是跨平台,为什么要跨平台呢?Windows 操作系统不香吗?今天我们来聊聊这个 原因一:安全考虑 Windows OS 是闭源的,而 Linux 是开源的,因此有些公司的技术负责人就认为 Linux…

笔记:weblogic配置内存启动参数

可以在控制台配置 参数值 -Xms2048m -Xmx2048m -XX:PermSize512m -XX:MaxPermSize512m -Xss128k激活更改。修改完之后,节点需要重启才能生效。 参数说明: -Xms 为JVM启动时分配的内存 -Xmx 为JVM运行过程中分配的最大内存 -XX:PermSize 为JVM初始分配…

Qt笔记:动态处理多个按钮点击事件以更新UI

问题描述 在开发Qt应用程序时,经常需要处理多个按钮的点击事件,并根据点击的按钮来更新用户界面(UI),如下图。例如,你可能有一个包含多个按钮的界面,每个按钮都与一个文本框和一个复选框相关联…

python从0开始学习(十二)

目录 前言 1、字符串的常用操作 2、字符串的格式化 2.1 格式化字符串的详细格式(针对format形式) ​编辑 总结 前言 上一篇文章我们讲解了两道关于组合数据类型的题目,本篇文章我们将学习新的章节,学习字符串及正则表达式。 …

react实现把pc网站快捷添加到桌面快捷方式

文章目录 1. 需求2. 实现效果3. 核心逻辑4. 完整react代码 1. 需求 这种需求其实在国外一些游戏网站和推广网站中经常会用到,目的是为了让客户 快捷方便的保存网站到桌面 ,网站主动尽量避免下次找不到网站地址了,当然精确的客户自己也可以使…

打印安全:防止打印过程中的商业机密泄露

在数字化办公日益普及的今天,打印安全常常成为企业信息保护中被忽视的一环。商业机密在打印过程中泄露,可能会给企业带来巨大的损失。本文将探讨如何通过一系列措施,确保打印过程中的商业机密安全。 一、打印安全的重要性 打印设备作为企业中…

hbase版本从1.2升级到2.1 spark读取hive数据写入hbase 批量写入类不存在问题

在hbase1.2版本中&#xff0c;pom.xml中引入hbase-server1.2…0和hbase-client1.2.0就已经可以有如下图的类。但是在hbase2.1.0版本中增加这两个不行。hbase-server2.1.0中没有mapred包&#xff0c;同时mapreduce下就2个类。版本已经不支持。 <dependency><groupId>…

两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。 本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。 所有被测软件的验证操作可参见上述前文中对应章节的说明。 准备 CentOS 6.…

数据量较小的表是否有必要添加索引问题分析

目录 前言一、分析前准备1.1、准备测试表和数据1.2、插入测试数据1.3、测试环境说明 二、具体业务分析2.1、单次查询耗时分析2.2、无索引并发查询服务器CPU占用率分析2.3、添加索引并发查询服务器CPU占用率分析 三、总结 前言 在一次节日活动我们系统访问量到达了平时的两倍&am…

SAP PRD覆盖QAS 替代方案构想

随着时间的推移&#xff0c;SAP PRD的数据跟QAS的差异会越来越大&#xff0c;一般是定期PRD覆盖QAS。但是在没有BASIS的情况下&#xff0c;没有这块经验的情况下&#xff0c;也没有外部支持的情况下&#xff0c;贸然做这个事情也是有风险的&#xff0c;有没有替代方案&#xff…

算法2:滑动窗口(上)

文章目录 长度最小子数组无重复字符的最长子串[最大连续 1 的个数III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)将x减到0的最小操作数 长度最小子数组 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {in…

vue3中基于element-plus封装一个表格弹框组件,要求可以单选和多选table数据

单选&#xff1a; <template><SelectMaterialref"selectMaterialRef"check"checkbox"select"selectMaterial"></SelectMaterial><el-button type"primary" size"small" icon"el-icon-plus"…

Web API——获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标&#xff1a;能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法&#xff1a; document.querySelector(css选择…

RedisTemplate操作Redis, 看这一篇文章就够了

文章目录 1. String 命令1.1 添加缓存1.2 设置过期时间(单独设置)1.3 获取缓存值1.4 删除key1.5 顺序递增1.6 顺序递减1.7 常用的 2. Hash命令2.1 添加缓存2.2 设置过期时间(单独设置)2.3 添加一个Map集合2.4 提取所有的小key2.5 提取所有的value值2.6 根据key提取value值2.7 获…

C语言-牛客-实现四舍五入

欢迎来到Harper.Lee的学习小世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦&#xff01; 本篇博客总结C语言刷题的相关笔记~~~~ #牛客–实现四舍五入 题目描述&#xff1a;随机输入浮点数&#xff0c;输出四舍五入后的整数…

vue中数据已经改变了,但是table里面内容没更新渲染!

解决方案&#xff1a; 给table或者el-table标签上添加一个动态key值&#xff0c;只要数据发生改变&#xff0c;key值变动一下即可 标签上&#xff1a; :key“timeStamp” 初始data&#xff1a;timeStamp:0, 更新数据&#xff1a;this.timeStamp 这样每次更新数据&#xff…

【B站 heima】小兔鲜Vue3 项目学习笔记Day03

文章目录 Home1.Home整体结构搭建和分类实现2. banner轮播图功能3. Home 面板组件封装4.新鲜好物和人气推荐实现5. 图片懒加载指令实现6. Home- product产品列表实现7. Home-GoodsItem 组件封装 一级路由1. 整体认识和路由配置2. 面包屑导航3. 一级分类 - 轮播图的实现4. 激活状…

2024年5月天润融通JAVA二面15-20K

二面 1、聊项目 2、举例说明你在上家公司职级晋升的原因 3、开发者和管理者的区别&#xff0c;你怎么做管理者 4、对sass的理解&#xff0c;包括流程&#xff0c;技术选型 5、springboot如何把bean加载到ioc容器中&#xff0c;ioc容器的理解 6、一万个任务同时执行&#…

内网安全之搭建ADCS证书服务

在域控上安装ADCS服务时&#xff0c;默认会自动配置完LDAPS&#xff0c;如果不是在域控上安装ADCS服务&#xff0c;需要手动配置LDAPS 安装证书服务ADCS 打开服务器管理器——>添加角色和功能 选择“基于角色或基于功能的安装”选项&#xff0c;然后点击下一步 选择“从…