SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功
【用户单位】
中国联通某分公司
【数据恢复故障描述】
SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLARIS操作系统。
正常工作状态下,用户需要新增应用,所以增加了一台IBM服务器,之后在线状态下将存储中的某个LUN映射到新增的IBM服务器,不料,映射的卷是原先已经MAP到SOLARIS生产系统上的某个LUN上了,由于并未及时发现,IBM服务器上已经对此LUN进行了部分初始化操作(操作不详),之后SOLARIS上磁盘报错,重启后发现问题,卷无法挂载。
SUN工程师检测后,执行fsck,完成后文件系统可挂上,但很多数据丢失或大小变为0,尤其最新数据破坏严重。
【数据恢复故障分析】
SAN环境下此类故障较为常见,但多数是人为不小心导致,此故障也是如此。正常情况下,SAN分配出来的LUN是独占模式的,如果同时为几个操作系统所控制,极易导致写操作不互斥,导致文件系统一致性出错。
如果要恢复此部分数据,需要深入文件系统,考察其各结构的破坏情况。本例中,因文件系统采用UFS,所以对任何一个需要恢复的文件而言,优先考虑目录信息、节点、数据区是否正常,如上述3个结构均正常,数据可完整恢复。但多数情况下,fsck后INODE会清除,即使留下目录信息,也无法与数据一一对应,这时候,就只能参考文件内部格式进行类型式的恢复了。
【数据恢复过程】
1、完整备份故障卷,因RAID无故障,所以直接在SOLARIS环境中对原LUN做dd备份。
2、在备份中分析文件系统,确定需恢复文件的inode已经全部清除,无法还原。只好按文件类型进行处理。
3、对用户需要恢复的特定文件进行分析,发现采用vfs公文系统的索引文件具有强的类型特征,同时文件中包含目录信息。
4、按照公文系统的索引结构特征,写程序提取,提取后根据特征重新命名。
5、按类型恢复数据文件,之后用户人工根据索引文件,对数据文件进行重新整理。
【数据恢复结论】
历时24小时,目录索引文件99%恢复成功,数据文件大部分恢复成功,其余已破坏无法恢复的文件,用户根据目录索引文件重新向其他部门采集。
结论上,用户认可数据恢复成功。

SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功的更多相关文章
- EXT3文件系统误删除导致文件系统中的邮件丢失恢复方法
一.故障描述 由8块盘组成的RAID5, 上层是EXT3文件系统,由于误删除导致文件系统中的邮件丢失 二.镜像磁盘为防止数据恢复过程中由于误操作对原始磁盘造成二次破坏, 使用winhex软件为每块磁盘 ...
- LInux下inode空间报警-CROND出错导致/var/spool/postfix/maildrop/堆积
Linux下显示磁盘空间不足,,通过 df -ih 查询发现/dev/mapper/*****var 下的inode用满.inode介绍 通过 du -sh * 查询/目录下的问题,最终查到/var/ ...
- 配置文件 /etc/profile出错导致ls,vi不能用
配置文件 /etc/profile出错导致ls,vi不能用 关于 Linux 的配置文件 /etc/profile 路径出错后相关的命令失效解决方式(如:ls,vi不能用) 一般我记得vi是在 ...
- ERP软件数据库覆盖数据恢复成功/重装数据库系统软件,导致同名文件覆盖
ERP软件数据库覆盖数据恢复成功/重装数据库系统软件,导致同名文件覆盖 [数据恢复故障描述] 上海某酒店ERP软件原来安装在C盘上,用户误操作把软件进行了卸载,发现软件没有了, 但操作之前没有把原 ...
- SELINUX导致数据修改权限不成功
SELINUX导致数据修改权限不成功基本概念参考:https://blog.csdn.net/yanjun821126/article/details/80828908 查看SELinux状态: ./ ...
- android google 统计导致的文件冲突
android studio 加入google 统计 1. buildscript { repositories { jcenter() } dependencies { classpath 'com ...
- Android 第三方库导致jar包冲突解决办法
这几天的任务是将mapbox的工程合到程序中去,但是合并过程却出现了问题 合并方法: 在app的build.gradle中添加 dependencies { compile ('com.mapbox. ...
- Node出错导致运行崩溃的解决方案
许多人都有这样一种映像,NodeJS比较快: 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务: 它比较适合对并发要求比较高,而且简单的业务场景. 在Express的作者的TJ Hol ...
- 解决thinkPHP构造函数__construct导致tp方法冲突问题
我们在使用了__construct构造函数,覆盖了父类的构造函数,导致父类tp的方法无法使用,例如$this->display(),解决办法是: 在__construct函数中调用一下父类的构造 ...
随机推荐
- [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- CentOS 静态IP分配,提示Error, some other host already uses address解决办法
(一)第一 修改 ifup-eth vi /etc/sysconfig/network-scripts/ifup-eth #if ! /sbin/arping -q -c 2 -w 3 -D -I $ ...
- AngularJS中实现服务端分页
这个教程将介绍在AngularJS应用中的服务端分页处理.在任何涉及到列表或表格数据的应用中都可能会用到分页. 概念 当我们处理异步分页时,每次只从服务器上获取一页数据.也就是说当用户点击第二页,就只 ...
- c++函数常用
isalnum 判断一个字符是否是字符类的数字或字母isalpha 判断一个字符是否是字母isblank 判断一个字符是否是空白字符(空格,水平制表符,TAB)iscntrl 判断一个控制符(ASCI ...
- 关于slmgr命令
需要管理员的权限运行.这个命令可以用来卸载系统的序列号.使系统处于未激活状态.
- 【Unity与23种设计模式】解释器模式(Interpreter)
GoF中定义: "定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言." 传统上,执行程序代码通常通过两种方式 第一种:编译程序 第二种:解释器 常见的使用解释器的程 ...
- php类中双冒号和->的区别
就是为了区分对象的方法和属性,和是访问类的静态方法和静态变量,类的静态方法和静态变量是类公用的,不需要实例化也能访问,而对象的方法和属性是每个对象特有的,因此必须先实例化.其他语言如C++,JAVA等 ...
- install-scp
centos6 minilize system will not scp command install: yum -y install openssh-clients and another mac ...
- jmeter--简单的接口测试(GET/POST)
最近在学习接口测试,本文就简单的谈一谈对接口相关知识的理解. 一.什么是接口? 程序接口:由一套陈述.功能.选项.其它表达程序结构的形式.以及程序师使用的程序或者程序语言提供的数据组成(百度百科定义) ...
- Linux系统-解压缩命令集合
Linux系统-解压缩命令集合 linux zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. ...