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

服务器数据恢复—raid5阵列+LVM+VXFS数据恢复案例

服务器存储数据恢复环境:
某品牌MSA2000FC存储中有一组由7块盘组建的RAID5阵列,另外还有1块硬盘作为热备盘使用。
基于RAID5阵列划分的几个LUN分配给小机使用,存储空间通过LVM管理,重要数据为Oracle数据库及OA服务端。

服务器存储故障:
RAID5阵列中2块硬盘离线,唯一的热备盘成功激活,RAID5阵列还是变得不可用,上层LUN无法使用。

服务器存储数据恢复过程:
1、将故障存储中所有磁盘标记后取出,由硬件工程师对所有磁盘做物理故障检测,检测后没有发现有磁盘存在物理故障,都可以正常读取。以只读方式将所有磁盘进行扇区级全盘镜像,镜像过程中没有发现有磁盘存在坏道。

2、由于所有磁盘经过检测都不存在物理故障或者坏道,基本上可以判断磁盘掉线的是磁盘读写不稳定造成的。故障存储的控制器通常会将某些性能不稳定的磁盘识别为坏盘,并踢出RAID。而一旦RAID中掉线的盘数达到该RAID级别允许掉盘的极限,这个RAID将变得不可用,上层基于RAID的LUN也无法正常使用。
基于镜像文件分析所有磁盘底层数据,获取到重组raid所需信息(RAID级别,条带规则,条带大小,校验方向,META区域等)并找到热备盘和2块掉线硬盘的掉线顺序,然后根据这些信息重组RAID。
3、raid重组完成后分析LUN在RAID中的分配情况,以及LUN分配的数据块MAP,将每一个LUN的数据块分布MAP提取出来。北亚企安数据恢复工程师编写程序解析所有LUN的数据MAP,然后根据数据MAP导出所有LUN的数据。

4、分析所有LUN,发现所有LUN中均包含LVM逻辑卷信息。尝试解析每个LUN中的LVM信息,一共发现三套LVM:第一个LVM中划分了一个LV,存放OA服务器端的数据;第二个LVM中也划分了一个LV,里面存放临时备份数据;剩下几个LUN组成一个LVM,也划分了一个LV,里面存放Oracle数据库文件。北亚企安数据恢复工程师编写解释LVM的程序,将每套LVM中的LV卷都解释出来,但是解释过程中出现错误。
5、分析程序报错的原因,由开发工程师debug程序出错的位置。文件系统工程师检测恢复出来的LUN,检测LVM逻辑卷的信息是否损坏。经过检测,发现LVM信息确实因为存储瘫痪而损坏。尝试人工修复损坏的区域,并同步修改程序,然后重新解析LVM逻辑卷。
6、搭建环境,将解释出来的逻辑卷映射到小机,并尝试挂载文件系统,结果文件系统挂载出错。尝试使用“fsck –F vxfs” 命令修复vxfs文件系统,修复后还是无法挂载。数据恢复工程师怀疑vxfs文件系统的元数据被破坏,需要修复。
7、分析解析出来的LV,根据VXFS文件系统的底层结构校验此文件系统的完整性。经过分析发现底层VXFS文件系统果然有问题,部分文件系统元文件损坏。人工修复这些损坏的元文件,保证VXFS文件系统能够正常解析。将修复好的逻辑卷挂载到小机上,并尝试挂载文件系统。这回没有报错,成功挂载。
8、在小机上挂载上文件系统后,将所有用户数据备份至指定空间。

9、使用Oracle数据库文件检测工具“dbv”检测每个数据库文件的完整性,没有发现错误。使用北亚企安自主开发的Oracle数据库检测工具检测,发现部分数据库文件和日志文件校验不一致。修复此类文件并再校验,直到所有文件校验均通过。
10、将恢复出来的Oracle数据库附加到原始生产环境的小机中,尝试启动Oracle数据库,Oracle数据库启动成功。

11、在用户方的配合下,启动Oracle数据库和OA服务端。在本地电脑上安装OA客户端,通过OA客户端验证最新的数据记录以及历史数据记录,并且安排不同部门工作人员进行远程验证。经过仔细验证,用户方确认数据完整可用,认可数据恢复结果。


http://www.kler.cn/a/414813.html

相关文章:

  • Scala身份证上的秘密以及Map的遍历
  • 百度智能云千帆部署流程---语音识别和合成
  • [保姆式教程]使用labelimg2软件标注定向目标检测数据和格式转换
  • Vue3的通灵之术Teleport
  • CentOS上如何离线批量自动化部署zabbix 7.0版本客户端
  • notepad++文件github下载
  • 英语知识网站开发:Spring Boot框架应用
  • 行为型模式-迭代器模式
  • 【高等数学学习记录】微分中值定理
  • 网络传输介质
  • 怎么样才算得上熟悉高并发编程?
  • vue3【实战】自定义全局指令(含批量自动注册全局自定义指令,复制,防抖,节流,长按,水印,拖拽,打字机特效等)
  • git常用命令和问题
  • C++的依赖颠倒原则
  • C++ 【异步日志模块和std::cout << 一样使用习惯替代性好】 使用示例,后续加上远程日志
  • ABAP 快速入门之 Hello World 和 ALV 列表
  • 深度学习基本单元结构与输入输出维度解析
  • C语言根据字符串变量获取/设置结构体成员值
  • c++基础开发环境vscode+mingw-w64
  • 【Oracle11g SQL详解】WHERE 子句的条件筛选及常用操作符
  • Seata使用ZooKeeper作为注册中心
  • 【面向对象的程序设计——集合框架】主要接口
  • java charAt()返回数值型 详解
  • python之Flask入门—路由参数
  • 从数据孤岛到数据协同:企业如何构建安全的数据共享生态?
  • php 导出excel 带图片