姓名:刘哲宁
【嵌牛导读】:硬盘数据丢失一般认为很难恢复,真实情况分为好多种。
【嵌牛鼻子】:硬盘,恢复,数据
【嵌牛提问】:硬盘数据丢失情况有哪些?
【嵌牛正文】:
数据丢失情况1:误删除和误格式化;
机械硬盘数据恢复的原理是:人们平常所做的删除,只是让系统修改了文件分配表中的前两个代码(相当于作了“已删除”标记),同时将文件所占簇号在文件分配表中的记录清零,以释放该文件所占空间。因此,文件被删除后硬盘剩余空间就增加了;而文件的真实内容仍保存在数据区,它须等写入新数据时才被新内容覆盖,在覆盖之前原数据是不会消失的。
对于FAT格式的文件结构,文件删除仅仅是把文件的首字节改为E5H,其余的内容并不没有被修改,因此可以比较容易恢复。我们可以使用后面介绍的数据恢复软件轻松的把我们误删除或意外丢失的文件找回来。不过特别注意的是,我们在发现文件丢失后,准备使用恢复软件时,千万不要在本机安装这些恢复工具,因为软件的安装可能恰恰把刚才丢失的文件覆盖掉。最好使用能够从光盘直接运行的数据恢复软件,或者把硬盘挂在别的机器上进行恢复。
硬盘上的数据即使删除了,也只是在数据存储的前端打上标记,标识为已删除。但是实际并没有删除,只是操作系统认为删除了而已。读取到这个文件头的时候,会识别为已删除,不继续读取。那些数据恢复得软件也就是借由这个原理,读取到文件头后指示继续读取,并把文件头的标识剥离。最后拼凑出完整的文件,数据就恢复出来了。
由于机械盘因为寻道和调速的问题,会导致冗长的延迟从而影响系统整体响应性能。所以机械盘只有在写满或需要只用删除数据的这个扇区和磁道,才会擦除原来的数据并且写入。
固态盘的特点却有很多不同。固态盘拥有自己的处理器和缓存,这运算能力数倍于机械盘。也就是说,固态盘是能自己管理存储空间的。固态盘数据难恢复是源于一个叫做“垃圾回收”的机制。
众所周知,固态盘所使用的NAND FLASH颗粒存在覆写次数少使用寿命低的特点。所以设计者设计出覆写机制来平衡这NAND FLASH芯片的磨损。“垃圾回收机制”就是其中之一。在系统空闲的时候,回收原来删除的数据所占用的存储区域,以方便将来再使用。
无论机械盘还是固态盘,在覆写模式下,工作速度都会受到很大的制约。机械盘会耗费冗长的寻道及调速时间。固态盘会擦除整个簇的数据并重写。所以,设计了“垃圾回收机制”来保证写入操作的时候尽量只需要写入空白区块,以保证速度。
也正是有了“垃圾回收机制”,固态盘的数据一旦删除,随时都有可能被主控真正删除掉,以腾出空白区块。所以,那些数据恢复软件就无法从实际上已经不存在的数据区块恢复出数据来。
因为NAND 闪存不能直接对一个已经写入了数据的 Page 马上进行重写,它必须等待到这个 Page 所在的 Block 被擦除后才能进行,而且每次擦除都是一整个 Block 而不只是单独的某个 Page。
为了对闪存中的数据重新放置、删除掉陈旧数据并腾出空白 Block 来存放新数据,NAND 闪存需要执行被称作 Garbage Collection(或者 Merges,合并)的操作,而 SSD 的损耗平衡操作也主要在这个时候执行。
另外,还有一个更高层次的原因。
由于机械盘是磁存储介质,无论用什么方法删除的数据,都会因为磁介质的记忆效应有一定强度的磁残留。通过特殊手段依旧可以复原出一部分数据。另外通过特定的算法,那些复原出来的残破数据依然有希望复原成原来的数据。
而固态盘的记录是改变晶体管极性来进行数据存储以及做到掉电非易失性的。所以,被主控回收的区域就相当于没有使用过,数据本身不会再硬件层面上产生记忆效应。所以,想要恢复固态盘的数据,其实手段并不多。
数据丢失情况2:硬盘损坏;
机械硬盘构造原理是硬盘里面是由1张或几张可读写数据的储存盘体,盘体上有只读写枪,有点象老式光碟机,硬盘里面还有一保马达带动储存盘转动,从而能读取到不同部分的数据。
一块新的机械硬盘在使用前,必须首先分区,再用Format对相应的分区实行格式化,这样以后我们才能在这个硬盘存储数据。硬盘的分区就象是对一块地方建仓库,每个仓库就好比是一个分区。格式化就好比是为了在仓库内存放东西,必须有货架来规定相应的位置。我们有时接触到的引导分区就是仓库大门号,上面要记载这个分区的容量的性质及相关的引导启动信息。FAT表就好比是仓库的货架号,目录表就好比是仓库的帐簿。如果我们需要找某一物品时,就需要先查找帐目,再到某一货架上取东西。正常的文件读取也是这个原理,先读取某一分区的BPB参数至内存,当需要读取某一文件时,就先读取文件的目录表,找到相对应文件的首扇区和FAT表的入口后,再从FAT表中找到后续扇区的相应链接,移动磁臂到对应的位置进行文件读取,就完成了某一个文件的读写操作。
长久以来我们都已经非常习惯于使用电脑来完成我们的日常工作,以至于我们从来没有认真考虑过一旦计算机出错所造成的后果将是我们不能承受的。其中又以数据载体-硬盘损坏造成的后果最为严重。
机械硬盘故障大体可以分为两类:一类是可以通过软件或者指令来进行修复的,我们称之为硬盘固件级故障;一类则是由于硬盘的物理构件发生物理损坏所造成的故障,我们称为硬盘物理级故障。对于后面这类物理级的硬盘故障,在实际数据恢复案例中最常见到的就是由于硬盘磁头与硬盘盘片在高速运转过程中发生碰撞而造成的磁头损坏以及盘片的大面积划伤。这种故障的硬盘通常表现为硬盘不能正常识别,长时间不能进入就绪状态,同时对一个典型症状为硬盘通电后即发出磁头往返运作的敲击声,甚至还带有磁头与盘片碰撞摩擦的刮擦声。
如果读写磁头在硬盘运转时与盘片表明发生直接的接触,那么尖锐的磁头将会划穿包含绝缘层与喷镀碳层在内的保护层,造成一个圆形的划伤地带的同时也会损毁磁头本身。这就是我们所谓的硬盘物理划伤或者物理磁头损坏。
磁头损坏的元凶可以是落在盘片上的一颗极小的尘埃颗粒。因为磁盘运行时磁头在盘片上的悬浮高度是极其微小的,加上盘片高速运转产生的动量,一旦磁头受到外力的碰撞就极有可能会破坏悬浮飞行的平衡,从而撞击到盘片表面。而读写磁头是由较为坚硬的材料制造的,可以在接触时轻易的造成对保护层的穿透性划伤。上述的磁头与盘片之间的碰撞会损坏盘片储存数据的磁性物质层。一旦磁头在盘片上拽行,那么就会造成数据的永久性丢失。除此之外磁头最终会因为摩擦过热或者撞击变形造成硬盘无法正常工作。并且损坏的磁头和盘片划伤后产生的细小颗粒会在磁盘继续通电运转的情况下对盘片原本完好的区域造成更多的划伤。
关于磁头物理损坏情况下的数据恢复,现在最好也是可能唯一的解决办法就是在一个适当的环境(例如无尘室)中打开硬盘盘腔更换损坏的硬盘物理磁头,同时清理盘片上附着的细小颗粒后进行数据读取。但是这一方法也不是万能的,除了更换磁头的技术之外,普遍存在的一个难题就是在盘片上有严重的物理划伤的情况下,更换硬盘磁头也无济于事,磁头会立即报废,使得该划伤区域之后的完好区域也无法进行读取。原因在于磁头在经过划伤区域时(无论但是硬盘是否正在尝试读取该区域),由于盘片的保护层缺失,磁头将无法在该区域保持悬浮状态,从而会再次在与盘片直接接触的时候由于过热,变形或者短路等原因损坏。如何保证磁头安全通过划伤区域成为了是否能够成功获取硬盘数据的关键。
固态硬盘 简单些有点象平时的U盘,只是电路板更复杂。没有象机械硬盘那样的马达及储存碟盘,而主要以半导体固体作为数据储存介质。
由于固态硬盘的内部构造与传统硬盘有很大的区别,所以两者在硬件故障的表现形式上也有所不同,固态硬盘内部是一系列较为复杂的电子元件,其中包括存储芯片、控制芯片等,所以最常见的故障首先是电路故障,其次是固件故障。固件故障多表现为主板和系统无法识别硬盘,型号、容量识别错误或者读取某个区域文件及文件夹时频繁死机等。
主板和系统无法识别硬盘,大多数是由于固态硬盘里的电路元件损坏,而型号容量识别错误则可能是固态硬盘固件损坏导致的。电路损坏只要更换相应的配件即可修复,而修复固件故障必须首先有能读写固态硬盘固件的工具和软件,而后还要有相同版本得完好固件才能修复,修复过程是相当复杂的。因此修复固态硬盘不单需要经验、设备,还需要充足的配件和固件程序库。我公司在固态硬盘恢复方面积累了丰富经验,并且拥有充足的配件以及类型繁多的固件程序版本,所以在恢复此类故障时拥有很高的成功率。
固态硬盘内最重要的是控制单元和固态存储单元,固态存储单元是用来记录数据的,控制单元则是控制硬盘正常工作的。 打开固态硬盘我们便可以看到电路上多个FLASH闪存颗粒,这些颗粒就是固态硬盘的存储单元,存储单元有一定使用寿命也就是有擦写次数的限制,当存储单元达到或超过擦写次数时就会出现不稳定的情况或出现坏块,这时会导致整个固态硬盘不能正常工作。例如出现系统读取数据时很卡或频繁死机。
由于读取设备的限制,损坏的存储单元内数据恢复过程既复杂难度又大,这最终有可能影响恢复的效果。有些人会问只是一个存储单元损坏而已,我用设备把其他存储单元读出来,读出来的数据不是大部分可用的么?但是答案是否定,原因就是FLASH存储单元采用了损耗均衡的算法,数据被分割成很小的数据块,然后根据存储块的损耗程度(即擦写次数)进行漂移存储。
为什么要采用耗均衡的算法呢?
我们知道FLASH存储单元有擦写次数限制,特别是MLC存储单元,它的可擦写次数大约为1万次,SLC是MLC的10倍。但是我们知道硬盘的某些区域在使用中会被频繁的擦写,比如系统引导扇区,虚拟内存等等,这些区域的频繁擦写会导致FLASH存储单元的提前损坏,从而导致硬盘报废,但是此时其他区域的FLASH存储单元也许只擦写了几百次,为了防止这种情况出现,耗均衡的算法便诞生了,这个算法最早被应用于U盘上。
什么是损耗均衡的算法呢?
损耗均衡会按照一定大小将存储单元划分为若干个块,并为使用中的块进行索引编号,每次擦写都会更新一个块。其核心思想就是将新写入的数据写进写入次数较少的块,将擦写次数较多的块中的数据移至擦写次数较少的块。
以上我们可以看出来固态硬盘中的数据在底层实际是无序存放,所以就算把其它存储单元中的数据用专业设备读出来也很难将数据恢复出来。将无序的数据进行整理后输出则是控制单元的作用,如果控制单元损坏,那么必须用同样型号的控制单元进行更换,如果没有匹配的控制单元则数据恢复的难度较大,所以这也是业界的一大难题。由于不同的厂家不同的型号甚至不同的批次的固态硬盘内部数据块的排序算法都不一样,因此要花很长时间去研究数据块排序的算法,然后根据这个算法再编写出相应的恢复软件。