数据恢复软件设计与实现(二)

上接(一)

硬盘构造及恢复方法

2.1 硬盘的结构
2.1.1 硬盘的物理结构
硬盘主要由盘片、磁头及定位驱动系统、主轴系统和控制电路四部分组成。
盘片:盘片由较轻质的金属或玻璃制成,表面再涂上一层磁性材料,它拥有最高精度的光滑表面。为了防止磁头和盘片刮伤,在盘片的表面覆盖了由真空沉积工艺生成的氧化铬或钴。盘片的光洁度极高,硬盘都是密封的,内部非常干净,哪怕是一丝肉眼看不见的灰尘也会给盘面带来致命的损伤。现在的盘片使用垂直记录技术,在一定的面积内比水平记录技术存储的数据多很多。目前的商用硬盘技术已经达到了单碟1TB,以希捷、日立、西部数据三巨头为主导。
磁头及定位驱动系统:磁头顾名思义就是对盘片数据进行读写,每个盘片有正反两面,每个面有一个磁头负责,磁头是硬盘中最昂贵最精密的部分。磁头安装在磁头支架上,它们像梳子的齿一样伸进各自负责的盘片间隔中。磁头支架在定位电机驱动下,可以使磁头在盘片上不同的地方来回移动。盘片在高速旋转时会带动盘表面的空气,空气作用在磁头上产生一个浮力使磁头与盘面保持一个极微小的距离,这样既可有效进行读写,也不会磨损盘面。
主轴系统:主轴系统就是主轴电机,由电机组成,驱动盘片高速旋转。主流磁盘转速有5400rpm、7200rpm。盘片转的越快,读取速度越快,但是更容易损坏,使用过程中尽量避免碰撞。
控制电路:在硬盘上的电路板及元件。主要控制数据的读写,磁头的定位等。


2.1.2 硬盘的逻辑结构
硬盘的盘片在逻辑上由柱面、磁道、扇区组成。
磁道(Track):硬盘在出厂前,厂家都会对硬盘进行低级格式化。低格就是在盘片上划分许多同心圆,这些同心圆叫做磁道,信息就存储在磁道,磁道之间是有间隔的。每个盘片有成千上万个磁道,为了便于管理,每个磁道都有一个编号,从外到内自0开始顺序编号。
扇区(Sector):每个磁道上又划分为很多段,每一段是一个扇区,像扇子一样的圆弧。一般每个磁道包含63个扇区。每个扇区也有自己的编号,从1到63。
柱面(Cylinder):指各个盘面上编号相同的磁道构成的整体。如有三个盘片,每个盘面上0号磁道构成的整体叫一个柱面。
盘片有编号,磁头也有逻辑编号,逻辑上按照从上到下自0开始依次编号。


2.1.3 硬盘的逻辑C/H/S 
硬盘是通过磁头、柱面、扇区进行寻址的,就是所谓的C/H/S。要从磁盘上定位一个数据,就要为这个数据编号,磁头号负责定位哪个盘面,柱面定位磁道,扇区定位对应的扇区,这样就可以唯一确定地址了。由于系统的限制,逻辑C/H/S的起始值为0/0/1,最大取值为1023/254/63,所以逻辑C/H/S能够管理的柱面、磁头、扇区分别为1024、255、63,这样就可以算出逻辑C/H/S能管理的扇区总数为1024*255*63=16450560,大约为8GB,这也是逻辑C/H/S能管理的最大空间。后文分析FAT32及NTFS文件系统会遇到C/H/S参数,但现在的系统对C/H/S参数已经是忽略了。


2.1.4 硬盘的LBA
LBA(Logic Block Address)即扇区逻辑块地址。由于C/H/S的限制,引入了LBA的概念。LBA把所有的物理扇区都按照某种规则看做是一线性编号的扇区,即从0到最大值,形成一条直线,这样使用唯一的编号就可以确定数据的物理扇区。LBA最初定义的是28位地址,只能管理137GB的硬盘,然而由于硬盘的容量增长到28位已经不能满足需求。T13组织提出的48位标准,使逻辑扇区地址达到了281474976710655,即144PB(1PB=1000 000GB)。现在的硬盘都是以LBA编址。


2.2 数据恢复方法
数据可能在多种情况下丢失,比如物理硬盘的故障、无可抗拒的自然灾害、病毒的损坏、黑客入侵、误操作等。根据不同的情况分为两种方法。


2.2.1 物理恢复
在硬盘出现物理故障情况,如磁头的损坏、磁组变形、盘片划伤、硬盘产生坏道、电机损坏、控制电路损坏、磁盘异响等情况下应该立即停止使用,防止数据的进一步丢失,这种情况下要对硬盘维修后再进行数据恢复。一般是进行开盘数据恢复,开盘就是在洁净度有保障的环境下打开硬盘外壳,对其盘腔内部进行操作。物理恢复对环境和技术的要求非常高,专业数据恢复公司都有洁净间,恢复的几率也比较大,但是费用昂贵。


2.2.2 逻辑恢复

逻辑恢复就是在没有出现物理故障,仅仅是数据的丢失。逻辑恢复可以通过软件的方式进行数据修复,整个过程不涉及硬件的维修。而导致数据丢失的原因往往是误删除,误格式化,误分区,病毒感染,黑客攻击恶意删除等。硬盘出现逻辑故障一般表现为:文件丢失、分区丢失、无法进入操作系统、无法读取文件等。造成逻辑数据丢失的原因是十分复杂的,一般的数据恢复软件只针对特定情况设计算法,所以恢复的效果是非常差的,要真正恢复只有人工分析数据。一般情况下,只要数据区没有被覆盖,数据的恢复效果是很理想的。

2.3 恢复前的准备工作
在恢复数据之前,对硬盘情况的了解是十分必要的,如果盲目操作只会造成数据彻底丢失。首先要了解检查是否有物理故障,然后对物理故障进行修复。之后要对源数据硬盘进行备份到另外一个硬盘上进行恢复,不在源盘上进行操作,防止数据的进一步丢失。恢复之前也可以进行硬盘的坏道检测,因为坏道很容易造成数据丢失。


2.4 坏道检测
硬盘坏道可以分为逻辑坏道和物理坏道。逻辑坏道是由于软件或使用不当造成文件系统的损坏,这种情况下重新格式化分区就可以解决问题。物理坏道是硬盘盘片磁介质出问题,造成某些扇区无法读写,这种坏道不能修复,只能使用软件屏蔽掉坏道。出现坏道的症状一般有系统无故死机、蓝屏,无法启动,读取文件时间久或者根本无法读取文件。
针对硬盘的坏道,编程实现了坏道检测。坏道检测原理根据扇区的读取时间判断,一般扇区读取时间是在3ms以内,一直到150ms都是正常情况,大于150ms就很危险了,很容易形成坏道,如果扇区读取失败就说明是坏道。只要一个扇区出现问题,整个磁道都不能使用了,所以叫坏道。
在windows系统中,有API函数读取文件 -- ReadFile,系统可以把物理硬盘当做一个文件来读取,所以能检测整个硬盘。算法为:使用CreateFile函数打开要检测的物理磁盘,然后获取当前的系统时间,使用ReadFile函数读取一个扇区,如果ReadFile 的返回值是错误,则可以判断整个扇区是出现坏道的,读取完后再获取当前系统时间,用后面的时间减去前面的时间得到读取整个扇区的时间,最后根据时间判断扇区的情况。关键代码如下:




2.5 磁盘克隆
为了防止进一步的数据丢失,首先要把数据复制到另外一个硬盘上再操作。磁盘克隆是基于整个硬盘的数据复制,把01比特按原样照搬,而不理会数据的意义。这区别于文件级的数据复制,文件的复制是基于有意义的文件系统数据,不会对MBR,DBR和一些隐藏的文件进行复制,所以磁盘的克隆是很有必要的。
磁盘克隆的原理也很简单。要复制的硬盘叫源盘,存放复制的数据是目的盘。算法:

首先使用ReadFile打开源盘和目的盘,源盘从0扇区开始读取,每读取一个扇区就按照扇区序号写入目的盘,读取源盘的同时也获取计算读取时间,发现读取失败的说明源盘有坏道,这时在目的盘的对应扇区使用全1数据填充,这样就可以最大程度保留源盘的数据,造成数据丢失的也是这个扇区而已,对其他扇区不会有影响。关键代码如下:

数据恢复软件设计与实现(二)_第1张图片


累了,更多详情,请看下回分解


你可能感兴趣的:(数据恢复)