服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例

服务器存储数据恢复环境:
一台EVA某型号控制器+EVA扩展柜+FC磁盘。

服务器存储故障&检测:
磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。

服务器存储数据恢复过程:
1、将所有磁盘做好标记后从扩展柜中取出。硬件工程师对所有磁盘做物理故障检测,并没有发现有磁盘存在物理故障。使用坏道检测工具检测也没有发现有磁盘存在大量坏道。以只读方式将所有硬盘进行扇区级全盘镜像。镜像完成后将所有磁盘按照原样还原到原扩展柜中,后续的数据分析和数据恢复都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有磁盘底层文件。由于没有检测到有磁盘存在物理故障或者大量坏道,由此推断故障是由于磁盘读写不稳定引起的。EVA控制器通常会将读写性能不稳定的磁盘认定为坏盘并踢出磁盘组。一旦某个LUN的同一个条带中的掉盘数量到达极限,这个LUN将变得不可用。EVA存储中包含这些掉线盘的LUN都会受影响。部分磁盘出现故障可能会导致整个存储无法正常使用。
3、EVA存储的LUN都是以RAID条目的形式存放数据的,EVA存储将每个磁盘的不同块组成一个RAID条目。RAID条目的类型可以有很多种,在恢复数据之前需要分析出组成LUN的RAID条目类型以及RAID条目是由哪些盘的哪些块所组成。这些信息都存放在LUN_MAP中,每个LUN都有一份LUN_MAP。EVA存储将LUN_MAP分别存放在不同的磁盘中,使用一个索引来指定其位置。在每个磁盘中找这个指向LUN_MAP的索引就可以找到现存LUN的信息了。
4、脱离EVA磁盘组的磁盘中存放一些旧的数据,在生成数据的时候需要将这些磁盘都排除掉。由于本案例LUN中RAID都是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数据。
6、恢复出所有LUN的数据后人工核对每个LUN,确认是否和用户方描述的一致。
恢复出来的部分LUN数据:

7、分析恢复出来的LUN,重组ASM磁盘组,解析ASM磁盘组。
分析每个LUN前端的结构数据,根据ASM磁盘组结构来区分哪些LUN是属于ASM磁盘组的。分析后发现共有2套ASM磁盘组。
每个磁盘组包含的LUN中的分区的情况:

使用ASM结构解析工具解析和修复每个磁盘组,解析出ASM磁盘组中存放的所有数据库文件。

8、分别按照文件类型分组导出解析出的数据库文件&初步检测导出的文件。

9、根据用户方的描述,所有LUN的数据分成两部分:一部分是Vmware的虚拟机;一部分是ORACLE上的ASM磁盘组数据,ASM磁盘组中存放的是Oracle的dbf数据库文件。人工核对哪些LUN是存放Vmware数据,哪些LUN是存放ASM磁盘组数据,然后将LUN挂载到不同的验证环境中验证恢复的数据是否完整。
10、将所有符合vmware虚拟机的LUN里面的虚拟机文件都生成出来,然后通过NFS共享的方式挂载到虚拟主机上,再将虚拟机一个一个的添加到清单。
恢复的部分虚拟机文件:

11、通过NFS将所有虚拟机都添加到虚拟主机以后,将所有虚拟机都加电开机,系统都能正常启动。验证虚拟机里面的数据都没有问题。
部分虚拟机:

12、根据甲方工程师提供的环境信息搭载Oracle数据库验证环境。
  a. 环境检测
  # uname -all
  然后检查各部分存储空间信息,保证空间足够。
  b. 检测安装依赖包
  根据安装说明“  b19068.pdf  ”,检查 oracle10g 所需的补丁包。
  检测:
  # swlist-l bundle |grep "GOLD"
  # swlist-l patch |grep PHNE_31097
  如果没有检测到的,需要到官方网站下载并安装。 安装补丁包:
  swinstall -s /patchCD/GOLDQPK11i -x autoreboot=true -x patch_match_target=true
  c. 创建用户及组
  #groupadd dba
  #useradd -g dba -d /home/oracle oracle/frombyte
  #passwd oracle
  d. 创建目录并修改权限
  创建目录:
  #mkdir –p/opt/oracle/product/10.2/oracledb/
  #chown -R oracle:dba/opt/oracle
  修改权限:
  #chown oracle:dba/usr/oracle_inst/database/frombyte.com
  #chmod 755/usr/oracle_inst/database/frombyte.com
  e. 设置环境变量
  vi /home/oracle/.profile
  f. 安装oracle
  Oracle的安装要求起图形界面,所以要先测试图像界面能正常启动。
  #exoprt  DISPLAY=192.168.0.1.0:0
  $./runInstaller
  图像界面起来之后,先只安装软件,不安装实例。
  g. 测试数据库连接
  #su - oracle
  $sqlplus / as syssdba
13、通过oracle官方检测工具DBV对导出的数据文件进行物理结构检测。

经过验证,确认所有文件结构正确,没有结构性损坏。
14、因为原来数据库实例有2个且使用的ASM存储,所以要按照原来配置和命名创建数据库实例。修改控制文件中的路径,让oracle识别到这些数据库数据文件,然后启动数据库。
dmis数据库启动截图:

gsm数据库启动截图:

整个启动过程正常,没有任何报错,基本上可以判断数据库恢复完好。
15、验证所有数据没有问题后,将vmware虚拟机文件和Oracle数据库文件拷贝至两块硬盘中,然后移交给用户方。
用户方将数据上传至后台,经过检测,程序可正常运行。用户方认可数据恢复结果。
运行情况:

运行规定:

运行变更摘要:

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

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

相关文章

解决编译 fast-lio-lc 算法时遇到的error方法

1.创建工作空间和下载 fast-lio-lc功能包 mkdir -p fast_lio_lc_ws/src cd fast_lio_lc_ws/src/ catkin_init_workspace git clone https://github.com/yanliang-wang/FAST_LIO_LC.git2.进入工作空间,编译 编译 fast-lio-lc遇到的error: 🕐error: fatal error: opencv/cv…

软件著作权申请教程(超详细)(2024新版)软著申请

目录 一、注册账号与实名登记 二、材料准备 三、申请步骤 1.办理身份 2.软件申请信息 3.软件开发信息 4.软件功能与特点 5.填报完成 一、注册账号与实名登记 首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注册【个人】的身份。中…

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件,用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容,并通过滚动机制来查看全部内容。这对于显示大量信息(如长列表、长篇文本或大型图像等&…

webWorker基本用法

我们都知道js是一个单线程的语言,当线程堵塞时,可能会导致页面无法正常交互,如一些复杂的可视化处理。即使是异步处理,也只是将其暂存到任务队列中去,等主线程执行完后依然会从任务队列中取过去。 为此,js提…

《手写Spring渐进式源码实践》实践笔记(第十八章 JDBC功能整合)

文章目录 第十八章 JDBC功能整合背景技术背景JDBC JdbcTemplate关键特性 用法示例业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件测试用例测试结果: 总结 第十八章 JDBC功能整合 背景 技术背景 JDBC JDBC(Java Database Conne…

【Python】轻松实现机器翻译:Transformers库使用教程

轻松实现机器翻译:Transformers库使用教程 近年来,机器翻译技术飞速发展,从传统的基于规则的翻译到统计机器翻译,再到如今流行的神经网络翻译模型,尤其是基于Transformer架构的模型,翻译效果已经有了质的飞…

Linux awk命令详解-参数-选项-内置变量-内置函数-脚本(多图、多示例)

文章目录 awk基础结构说明与示例参数与内置变量常用参数内置变量其他参数内置变量 简单示例理解option简单参数NR与FNR-v ARGC ARGV参数 执行脚本if elsefor循环关联数组指定匹配pattern 使用正则指定分隔符理解pattern正则与逻辑算术 printfif else for whileBEGIN ENDnext(跳…

RHCE的学习(12)

第九章 Ubuntu 什么是Ubuntu 概述 Ubuntu(乌班图)属于Debian系列,Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。 Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch&…

可视化建模与UML《顺序图实验报告》

旷野的规则是永不回头。 一、实验目的: 1、熟悉顺序图的构件事物。 2、熟悉发送者与接受者的关系 3、熟练掌握描绘顺序图 4、加深对顺序图的理解和应用能力 二、实验环境: window7 | 10 | 11 EA15 三、实验内容: 据如下描述绘制顺序图&…

30-手动准备地图包

map包遵循特定的文件夹结构,并且必须包含描述该结构的.json文件。我们的自动地图导入过程自动创建这个.json文件,但您也可以选择自己准备它。包括您自己的.json文件将覆盖传递给make import命令的任何参数。 标准地图 为标准地图创建文件夹结构 1.…

汽车免拆诊断案例 | 2017款凯迪拉克XT5车组合仪表上的指针均失灵

故障现象 一辆2017款凯迪拉克XT5车,搭载LTG 发动机,累计行驶里程约为17.2万km。车主反映,组合仪表上的发动机转速表、车速表、燃油表及发动机冷却液温度表的指针均不指示,但发动机起动及运转正常,且车辆行驶正常。 故…

docker镜像文件导出导入

1. 导出容器(包含内部服务)为镜像文件(docker commit方法) 原理:docker commit命令允许你将一个容器的当前状态保存为一个新的镜像。这个新镜像将包含容器内所有的文件系统更改,包括安装的软件、配置文件等…

数据结构:顺序表(动态顺序表)

专栏说明:本专栏用于数据结构复习,文章中出现的代码由C语言实现,在专栏中会涉及到部分OJ题目,如对你学习有所帮助,可以点赞鼓励一下博主喔💓 博客主页:Duck Bro 博客主页系列专栏:数…

Golang--网络编程

1、概念 网络编程:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享数据、软件、数据信息等资源。 客户端(Client) 客户端是请求服务…

软件设计师中级 第9章 数据库技术基础

9.1 基本概念 9.1.1 数据库的三级模式结构 数据库系统有三级模式结构,一个数据库可以由多个外模式,只能有一个内模式。 视图对应外模式、基本表对应模式(概念模式)、存储文件对应内模式。 外模式 也称子模式(Subsch…

Rust项目结构

文章目录 一、module模块1.二进制文件的cargo项目2.库的cargo项目模块中使用crate关键字模块中使用super模块中结构体的访问规则模块中枚举的访问规则模块中use关键字不同模块定义了相同类型冲突解决办法使用pub use导出本模块的函数给外面模块引入外部依赖模块与子模块 小结3.…

Java-字符串常量池

在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、 更节省内存,Java为8种基本数据类型和String类都提供了常量池。 1.为什么要…

【Python爬虫实战】深入解锁 DrissionPage:ChromiumPage 自动化网页操作指南

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、ChromiumPage基础操作 (一)初始化Drission 和 ChromiumPage 对象 &#xff0…

无人机之姿态融合算法篇

无人机的姿态融合算法是无人机飞行控制中的核心技术之一,它通过将来自不同传感器的数据进行融合,以实现更加精确、可靠的姿态检测。 一、传感器选择与数据预处理 无人机姿态融合算法通常依赖于多种传感器,包括加速度计、陀螺仪、磁力计等。这…

基于SSM的图书馆座位预约系统+lw示例参考

#1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、座位管理、座位分类管理、图书馆管理、预约信息管理、退座管理、系统管理等)、普通用户(信息查看、图书馆管理、个人中心、座位预约等)技…