一.故障描述

由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文件系统误删除导致文件系统中的邮件丢失恢复方法的更多相关文章

  1. Linux 文件系统引起的云盘文件系统异常导致 MySQL 数据页损坏事故恢复复盘

    事故的起因是因为当我访问某个数据库的某个表的时候,MySQL 立即出现崩溃并且去查看 MySQL 的错误日志出现类似信息 --09T05::.232564Z [ERROR] InnoDB: Space ...

  2. 在CentOS6或RHEL6恢复上ext4文件系统误删除的文件

    首先说明: [root@CentOS6 ~]# rm -rf / //这条命令不可以执行 [root@CentOS6 ~]# rm -rf /* //这条命令可以执行,别去试 ext4文件系统上误删除 ...

  3. ext3是对ext2文件系统的一个扩展高性能日志文件系统

    嵌入式开发者所做的最重要的决定之一就是部署哪种文件系统.有些文件系统性能比较高有些文件系统空间利用率比较高,还有一些文件系统设备故障或者意外断电后恢复数据比较方便. linux文件系统概念 分区 分区 ...

  4. SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功

    [用户单位] 中国联通某分公司[数据恢复故障描述]    SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLAR ...

  5. Linux文件系统损坏导致无法正常启动与fsck修复工具

    今天在打开自己的虚拟机学习的时候,发现在文件系统检查过程中出现以下的报错: /dev/mapper/VolGroup-lv_root:UNEXPECTED INCONSISTENCY;RUN fsck ...

  6. 【Window OS】”对于目标文件系统,文件XXXXX过大“导致无法进行文件操作的解决方法

    问题原因:这是目标文件系统不支持这么大的文件的操作问题.例如:目标文件系统的格式是FAT32,FAT32最大支持4G,如果你要进行发送或粘贴4G以上的文件就会出现这个问题. 解决办法:把目标文件系统的 ...

  7. 文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解

    阅读此文,必须具备知识点:<Linux 查看磁盘分区.文件系统.使用情况的命令和相关工具介绍><实例解说 fdisk 使用方法><合理规划您的硬盘分区><Fe ...

  8. hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 .

    一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx. ...

  9. Linux 创建文件系统及挂载文件系统流程详解(转)

    作者:北南南北 来自: LinuxSir.Org 摘要:本文对新增硬盘,切割硬盘,创建硬盘分区,为硬盘分区创建文件系统,以及加载文件系统的流程做总结性论述:主要是为初学者弄清楚这一操作过程:本文涉及f ...

随机推荐

  1. 【Luogu1501】Tree(Link-Cut Tree)

    [Luogu1501]Tree(Link-Cut Tree) 题面 洛谷 题解 \(LCT\)版子题 看到了顺手敲一下而已 注意一下,别乘爆了 #include<iostream> #in ...

  2. [BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)

    Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口 ...

  3. python多线程、多进程以及GIL

    多线程 使用threading模块创建线程 传入一个函数 这种方式是最基本的,即调用threading中的Thread类的构造函数,然后指定参数target=func,再使用返回的Thread的实例调 ...

  4. cookie 使用方法

    //写cookies setCookie: function(name, value) { let days = 1 let exp = new Date() exp.setTime(exp.getT ...

  5. Wp-UserAgent——让WordPress在评论后面加上浏览器和操作系统信息

    在很多的博客网站都看到过在评论的后面显示了浏览器和操作系统的信息,网上也用过一些插件,但是都不是很好看,有一次在一个网页上看见了这个评论后面不仅显示了浏览器和操作系统的图片,还有文字信息, 感觉不错, ...

  6. python全栈开发-Day4 列表

    python全栈开发-Day4 列表 一.首先按照以下几个点展开列表的学习 #一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 ...

  7. canvas描绘渐变的矩形

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. mount挂载与umount卸载

    mount挂载与umount卸载 author:headsen chen      2017-10-23  15:13:51 个人原创,转载请注明作者,否则依法追究法律责任 mount:挂载: eg ...

  9. VISUALSVN: UNABLE TO CONNECT TO A REPOSITORY AT URL 无法连接主机的解决办法

    场景:我的系统是win7,安装的 VisualSVN Server 作为svn 服务器,昨天是好的,我手渐,使用鲁大师优化了系统,今天提交,更新的时候,直接提示:Unable to connect t ...

  10. PHP开发中涉及到emoji表情的几种处理方法

    最近几个月做微信开发比较多,存储微信昵称必不可少 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...