作者:张宇,北亚数据恢复中心,转载请联系作者,如果实在不想联系作者,至少请保留版权,谢谢。
[数据恢复故障描述]
两台SPARC SOLARIS系统通过光纤交换机共享同一存储,本意是作为CLUSTER使用,但配置不当,两台SERVER并未很好地对存储互斥,设计意图为:平时A服务器正常工作,当A服务器宕掉后,关掉A,开启B接管服务。
偶然的机会,一位管理人员开启B服务器,查到B服务器连接了一组很大的磁盘(实际上就是那个共享存储),因B服务器一直闲置未用,管理员以为磁盘也是闲置的,于是将整个磁盘的某个分区做了newfs。
A服务器很快报警并宕机,重启A服务器后,发现所有的文件系统均无法mount,执行fsck后,大多数分区的数据均修复成功,只有在B机做过newfs的文件系统结果不理想,根目录下只有一个lost+found文件夹,里面有大量数字标号的文件。
故障文件系统存储了两组ORACLE实例,原结构为UFS,约有200~400个数据文件需要恢复。
[数据恢复分析]
  光纤设备的共享冲突案例很多,起缘于光纤交换的灵活性。此例中,A机与B机同时对UFS这个单机文件系统进行访问是很糟糕的,两台SERVER都以想当然的独享方式对存储进行管理,A机正常管理的文件系统其实底层上已经被B机做了文件系统初始化,A机从缓冲区写入文件系统的数据也会破坏B机初始化的结果。
B机newfs实际上直接会作用于原先的文件系统之上,但此例与单纯的newfs会有些不同,在A机宕机之前,会有一小部分数据(包括元数据)回写回文件系统。newfs如果结构与之前的相同,数据区是不会被破坏的,同时如果有一小部分元数据存在,部分数据恢复的可能性还是存在的。
UFS是传统的UNIX文件系统,以块组切割,每块组分配若干固定的inode区。文件系统newfs时,如果结构与之前的相同,文件系统最重要的inode区便会全部初始化,之前的无法保留,inode管理着所有文件的重要属性,所以单纯从文件系统角度考虑,数据恢复的难度很大。
好在oracle数据文件的结构性很强,同时UFS文件系统还是有一定的存储规律性,可以通过对oracle数据文件的结构重组,直接将数据文件、控制文件、日志等恢复出来。同时oracle数据文件本身会有表名称描述,也可以反向推断原来的磁盘文件名。
[数据恢复过程]
  对故障的文件系统做dd备份。
针对整个镜像文件做完全的oracle数据结构分析、重组。
对部分结构太乱,无法重组的文件,参考ufs文件系统结构特征进行辅助分析。
利用恢复的数据文件、控制文件在oracle平台恢复数据库。
[数据恢复结论]
所有数据库完全恢复。
[后记]
  fsck是很致命的操作,在fsck之前最好做好备份(dd即可)。
光纤存储的不互斥是非常多的数据灾难原因,方案应谨慎部署与实施。

SUN平台,光纤共享存储互斥失败导致的数据灾难恢复相关推荐

  1. Linux系统卸载USB存储设备失败导致kworker进程CPU占用异常问题的解决办法

    问题描述 U盘或移动硬盘umount弹出设备失败,后台会出现一个kworker进程,疯狂占用CPU资源,其中: top命令直接可以看到kworker进程: htop命令默认隐藏了内核进程,需要在按F2 ...

  2. android平台上持久化存储3种手段_Android 数据持久化==存储数据的五种方法

    1.使用SharedPreferences存储数据 2.文件存储数据 3.SQLite数据库存储数据 4.使用ContentProvider存储数据 5.网络存储数据 第一种: 使用SharedPre ...

  3. k8s核心技术-Pod(两种实现机制)_Pod底层实现机制_共享网络_共享存储_Pause根容器_Pod数据卷---K8S_Google工作笔记0021

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 pod上面咱们说,采用了多进程的设计,而且,一个pod中,的各个用户容器都是 相互网络互通的,那么 ...

  4. 并行多核体系结构基础 Yan Solihin 第6章 共享存储多处理器简介 摘录

    本章讨论需要什么样的硬件支持才能保证多处理器系统上基于共享存储的并行程序的正确执行.将介绍三种主要类型的硬件支持:1)缓存一致性协议,确保多个处理器看到的缓存数据是一致的:2)存储一致性模型,确保存储 ...

  5. 迪蓝DiBLUEVS DiStort系列NAS共享存储

    共享存储是指两个或多个工作站主机共用一个磁盘阵列的并行体系结构.每一个工作站主机都可以把文件信息存入磁盘阵列内,或从中取出文件信息.13581951712 DiBLUEVS DiStort系列NAS共 ...

  6. 11月26日:操作系统实验杂记 shmget(创建共享存储区) shmat(连接共享存储区) shmdt(断连共享存储区) shmctl(共享存储区控制)

    文章目录 函数语法介绍 1.创建共享存储区shmget 2.连接共享存储区shmat 3.断连共享存储区shmdt 4.控制共享存储区shmctl 示例程序代码 进程1代码 进程2代码 函数语法介绍 ...

  7. PolarFS :一个用于共享存储云数据库的超低延迟和容错分布式文件系统

    目录 1. 简介 2. 背景 3. 架构 4. I/O 执行模型 5. 一致性模型 6. FS中层的实现 7. 设计选择和经验教训 8. 价值评估 9. 相关工作 10. 结论 PolarFS : A ...

  8. SQL Server群集共享存储迁移

    1 使用现状 1.在四台Windows Server 2003服务器上(分别称服务器A.B.C.D)安装有四套SQL Server 虚拟服务器 2.SQL SERVER采用互备工作方式,原有磁盘阵列划 ...

  9. 基于VMware_vSphere的银行虚拟化平台设计 ——网络存储课程设计

    一.引言 随着银行业务量的不断提升以及客户数量的持续增长,银行数据库和应用的数量也随之扩大,因而服务器的使用数量也相应增长.过多的物理服务器导致巨大的性能浪费,银行的运维成本不断攀升,如何使服务器性能 ...

最新文章

  1. layer.open子页面调用父页面的方法_记好这 24 个 ES6 方法,用来解决实际开发的 JS 问题...
  2. 当知识图谱遇上推荐系统(总述和推荐)
  3. PostgreSQL判断一个表是否存在
  4. 多媒体方面的应用程序java_Java编程之多媒体基础
  5. C# ZPL命令 实现打印中文
  6. $java_home位置_关于java home:echo $ JAVA_HOME不返回jdk位置
  7. 咔嚓冲印: 用IPHONE冲印LOMO卡片和明信片
  8. C++项目实战——简易版日期计算器(Date类改编)
  9. MQTT5.0新特性(比对3.1.1)
  10. AHBA| 如何建立Null模型控制富集分析中的假阳性偏差
  11. Android 如何加载网页、图片以及PDF文件之项目实战
  12. curl检测网页的用法
  13. python判断正数和负数教案_正数和负数教案(教学设计)
  14. WGS84、GCJ-02、BD-09、图吧坐标简介及坐标转换实现(js版)
  15. Ubuntu20.04安装与配置记录
  16. cae计算机仿真分析技术,仿真分析工作在研发中的定位
  17. hnustoj 2108 湖南科技大学2019年大学生计算机程序设计新生赛
  18. 【计算机毕设】毕设题分析及设计
  19. “超融合”元年,你准备好了吗?
  20. 湖北武汉机械员证书机械设备管理制度的重要性建筑七大员培训

热门文章

  1. 【总结整理】如何做需求分析(转)
  2. 第二讲 从图像到点云 笔记
  3. Linux基础—screen命令
  4. C#快速生成数据数组
  5. 搜索引擎爬虫蜘蛛的USERAGENT大全
  6. Oracle和Mysql的 != 差异
  7. Ansible 入门指南 - ansible-playbook 命令
  8. mycat教程(一) —— 安装
  9. linux 文件搜索 grep locate find
  10. [HNOI2008]遥远的行星