EXT3文件系统误删除导致文件系统中的邮件丢失恢复方法
一.故障描述
由8块盘组成的RAID5, 上层是EXT3文件系统,由于误删除导致文件系统中的邮件丢失
二.镜像磁盘
为防止数据恢复过程中由于误操作对原始磁盘造成二次破坏, 使用winhex软件为每块磁盘做镜像, 以后所有的数据恢复操作都在镜像盘上进行, 不会对原始磁盘造成影响
镜像结果如下:
图一

三.组建RAID
通过分析数据在硬盘中分布的规律, 获取RAID类型, RAID条带的大小,以及每块磁盘的顺序。根据分析结果使用UFS组建RAID。
结果如下:
图二

四.导出目标分区
从组建好的RAID中可以看出,上层划分了好几个EXT3分区,通过对每个分区中底层数据的分析, 发现605G的分区里面有大量的邮件头,并且有nsmail目录, 确认此分区是数据恢复的目标分区,使用UFS软件将此分区导出,以便后续处理。
图三

RAID中的所有分区如下:
nsmail文件夹:
图四

邮件头示例:
图五

五.邮件恢复
由于EXT3文件系统中文件删除后,节点中的文件大小和块指针都被清零, 因此很难通过常规手段去恢复。针对EXT3文件系统的特点和邮件文件本身的结构,确定算法概要:
在整个文件系统范围内,做全盘扫描,将找到的邮件文件全部取出,然后根据邮件本身记录的收件人、发件人、抄送、主题等信息进行整理,最后再将数据迁移到263平台上
详细过程:
1.完成邮件标识程序,识别收发人、主题等memi标识程序编写。
2.完成ext3超过48k邮件提取程序编写。
3.按小于48k、大于48k两种算法对邮件进行提取。提取同时,生成邮件索引信息库,并且提取非自由空间和非邮件区。
4.对3中提取的非自由空间和非邮件区进行人工分析,确定有无遗漏的邮件,如果有,确定遗漏的原因,调整算法,重新进行扫描。
5.重复3,4过程,直到最后的非自由空间和非邮件区中没有遗漏的邮件。
6. 对所有提取出的邮件,按照数据库中解析到的收件人和发件人归类,每个账号一个文件夹,内含收件和发件两个文件夹。
结果:
第一次 导出邮件 68.2G, 数据量 692,767 个文件
第二次 算法改进后, 导出邮件 77.2G, 数据量 720,209 个文件, 多了3万文件左右
第三次 再次改进算法, 导出邮件 84.8G, 数据量 895,032 个文件, 比第二次多了174823
总的存储空间是605G, 邮件区占用84.8G 剩下的有491.6G 自由空间,属于全零区域,肯定没有邮件了,非自由空间和非邮件区的垃圾数据有28.6G
经过3次大的算法改进,以及中途无数的细节增删,至此,剩余的非自由空间和非邮件区经人工验证也已经无法找到新的邮件文件,只剩下一些邮件的中间碎片,无法进行拼接,以及一些杂乱数据,此结果经北亚数据恢复总监亲自审核。
示例如下,邮件中间碎片:
图六

垃圾数据:
图七

六.验证数据
验证数据分为两部分,一个是邮件数据量的验证,通过对几个已知账号的收件和发件数量的统计,大概估算一下邮件的回复比例。二是邮件正确性的验证,用FoxMail打开提取出的邮件,查看内容是否正常.几个账号的数量如下:
图八

一些邮件内容:
图九

图十

七.移交数据
配合客户将所有提取出的邮件迁移到263平台
EXT3文件系统误删除导致文件系统中的邮件丢失恢复方法的更多相关文章
- Linux 文件系统引起的云盘文件系统异常导致 MySQL 数据页损坏事故恢复复盘
事故的起因是因为当我访问某个数据库的某个表的时候,MySQL 立即出现崩溃并且去查看 MySQL 的错误日志出现类似信息 --09T05::.232564Z [ERROR] InnoDB: Space ...
- 在CentOS6或RHEL6恢复上ext4文件系统误删除的文件
首先说明: [root@CentOS6 ~]# rm -rf / //这条命令不可以执行 [root@CentOS6 ~]# rm -rf /* //这条命令可以执行,别去试 ext4文件系统上误删除 ...
- ext3是对ext2文件系统的一个扩展高性能日志文件系统
嵌入式开发者所做的最重要的决定之一就是部署哪种文件系统.有些文件系统性能比较高有些文件系统空间利用率比较高,还有一些文件系统设备故障或者意外断电后恢复数据比较方便. linux文件系统概念 分区 分区 ...
- SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功
[用户单位] 中国联通某分公司[数据恢复故障描述] SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLAR ...
- Linux文件系统损坏导致无法正常启动与fsck修复工具
今天在打开自己的虚拟机学习的时候,发现在文件系统检查过程中出现以下的报错: /dev/mapper/VolGroup-lv_root:UNEXPECTED INCONSISTENCY;RUN fsck ...
- 【Window OS】”对于目标文件系统,文件XXXXX过大“导致无法进行文件操作的解决方法
问题原因:这是目标文件系统不支持这么大的文件的操作问题.例如:目标文件系统的格式是FAT32,FAT32最大支持4G,如果你要进行发送或粘贴4G以上的文件就会出现这个问题. 解决办法:把目标文件系统的 ...
- 文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解
阅读此文,必须具备知识点:<Linux 查看磁盘分区.文件系统.使用情况的命令和相关工具介绍><实例解说 fdisk 使用方法><合理规划您的硬盘分区><Fe ...
- hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 .
一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx. ...
- Linux 创建文件系统及挂载文件系统流程详解(转)
作者:北南南北 来自: LinuxSir.Org 摘要:本文对新增硬盘,切割硬盘,创建硬盘分区,为硬盘分区创建文件系统,以及加载文件系统的流程做总结性论述:主要是为初学者弄清楚这一操作过程:本文涉及f ...
随机推荐
- HAproxy负载均衡
HAproxy 简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这 ...
- 数据分析之Pandas和Numpy学习笔记(持续更新)<1>
pandas and numpy notebook 最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...
- js备战春招の四のjs函数
1.普通函数声明: 2.函数表达式:函数表达式可以存储在变量中,在函数表达式存储在变量后,变量也可作为一个函数使用: 以上函数实际上是一个 匿名函数 (函数没有名称).函数存储在变量中,不需要函数名称 ...
- 关于eclipse安装Genymotion插件的方法
其实Genymotion的安装方法也有两种:在线安装和离线安装,不过推荐使用在线安装,这个更快.这里我只说在线安装的方法. 打开eclipse,点击help-install new software ...
- Ext概述
Ext是一个具有丰富组件的javascript集合类库,除了自身提供的一套选择器.效果.ajax等功能,还提供了大量的javascript创建页面元素的类.方法.这个意味着:只要客户端支持javasc ...
- 如何在IPFS里面上传一张图片
之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...
- Java爬取 百度图片Google图片Bing图片
先看看抓取的结果. 8个Java类: Startup.java - main函数 ImageCrawler.java - Crawler基类 BaiduImageCrawler.java - 百度图片 ...
- Maven-09: 在线插件信息
仅仅理解如何配置使用插件是不够的.当遇到一个构建任务的时候,用户还需要知道去哪里寻找合适的插件,以帮助完成任务.找到正确的插件之后,还要详细了解该插件的配置点.由于Maven的插件非常多,而且这其中的 ...
- CXF 开发 REST 服务
今天我们将视角集中在 REST 上,它是继 SOAP 以后,另一种广泛使用的 Web 服务.与 SOAP 不同,REST 并没有 WSDL 的概念,也没有叫做"信封"的东西,因为 ...
- 从 MVC 到前后端分离
从 MVC 到前后端分离 1 理解 MVC MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器. 其中,模型 是用于封装数据的载体,例如,在 Ja ...