悟夜叉个人博客 技术专题 聊一聊硬盘恢复原理以及TRIM机制

聊一聊硬盘恢复原理以及TRIM机制

先将文件删除到了回收站,再将回收站的文件清空,我相信绝大多数人删除文件都是这样操作的是把。是不是有很多人认为,清空回收站以后数据就彻底消失了呢?

如果你认为清空回收站,就会彻底消灭数据的话,那么看完本篇文章你可能就不这么认为了。目前我有无数种方法找回你刚才从回收站清空的数据。所以,咱们先来详细了解一下电脑里的数据删除和数据恢复的原理。

大家应该都知道,我们的电脑是利用二进制储存和计算数据的,我们的磁盘同样是利用二进制来储存数据的。无论是电脑上的磁盘,还是手机上的闪存颗粒都是这个样子的。

假如我有一块磁盘,他可以储存64字节的数据,这个时候64个格子里什么数据都没有,默认全部都是0。假设我有这么一组数据,大小是13个字节,他们合起来叫文件A,这个时候,我把13个字节存入这块磁盘。就得到了这么个情况,但是这里有一个问题。

在系统上,他并不知道那些数据是文件A的。所以我们用一个红色的方框将他们框起来。这样告诉系统,这个红色的框框是一个整体的文件,这个红色的方框就叫FAT表。

有了FAT表格以后,我们的磁盘才知道哪儿些数据合起来是一个文件,那磁盘数据是如何恢复的呢?绝大多数删除文件,就是在文件右键点一下删除,然后这个文件是不是就到了回收站里面了,对吧。这个回收站就很好理解了。,就是一个隐藏的文件夹而已。

你删除的文件并不会直接消失,而是先放进这个隐藏的文件夹,让你有一次反悔的机会。而且很多人可能还会跟最开始我演示的一样,把回收站清空。清空回收站执行的操作,就是删除该文件在FAT表中的记录,也就是说,你执行彻底删除,也就是删除并清空回收站,或者直接shift + delete,不进回收站的删除。系统完成的操作就是在FAT表中进行标记,标记这个文件已经被移除了。然后把红框框从磁盘上拿掉了,你的文件那些0101的数据本质上还是存在的,所以这就是为什么数据删除了,可以被恢复的原因了。

因为你的数据本质上并没有消失,他还在存在于你的磁盘里,只是FAT表中的记录没有了。那很多人就说了啊,为什么删除文件只是删除了FAT表呢?而不是直接把那一块区域全部清空呢,原因很简单。那就是机械硬盘的工作原理比较特殊,他在写入新的数据的时候,可以直接往旧的数据上去覆盖,所以删除旧的数据的时候,拿掉FAT表就可以了,下次还要往里写入数据的时候,直接往上面覆盖就可以了。

如果删除数据以后,还需要全部填充回00000,那就会占用一定的磁盘性能,而且反正能直接覆盖上去,填充0又有什么意义呢?还浪费时间,浪费硬盘寿命。有一句话怎么讲呢,叫可以做但是没有必要。所以你如果使用的是机械硬盘,你不小心删除数据的话,你是可以通过一定的方法进行恢复的,你删除文件以后,只是删除了FAT表当中的记录,数据还是存在于磁盘的表面上,而磁盘储存FAT表的时候是按照一定的算法去进行的,你只需要利用软件根据算法,逆推回原来的FAT表数据,就可以被找回了。

但是有的朋友会问了,为什么网上一大堆的恢复软件都恢复不了数据,那肯定技术在不断更新迭代,我们软件也会不断更新迭代,你用几年前的算法来适应现在技术,那肯定效果会很差嘛。如果就算FAT表不能进行恢复,在数据恢复行业还有很多很多的黑科技,比如说磁隧道显微镜,可以直接在硬盘表面上找0101的数据块,很多的机械硬盘被火烧了,几十层楼掉下来了,摔碎了磁盘变形了,盘表面被滑划了,都是有一定几率找回数据的。所以就数据的安全性来讲,机械硬盘可以给你留更多的后路可走,注意我这里的用词是后路,如果真的担心数据会丢失,提早按时备份才是王道。

那么上面讲的技术只适用于机械硬盘,固态硬盘是不适用这个技术的,因为固态硬盘在写入新的数据的时候,必须要保证那一块的数据区域是空白的,如果不是空的,就需要先进行擦除操作,在进行写入,固态硬盘不能像机械硬盘那样,直接往旧的数据上进行覆盖,而也正式因为这个特性,所以固态硬盘内部都有特殊的功能,TRIM回收指令。

假如你有固态硬盘,用了一段时间,然后你删除掉了一些数据,然后你下一次再进行写入数据的时候,刚好用到了这一块区域。因为需要先进行擦除,而擦除操作就会浪费一定的磁盘性能,所以写入的速度就会发生下降,这个也就是我们所说的固态硬盘,用久了以后会发生降速的现象。

所以为了避免出现降速的情况。固态硬盘的厂商就搞了一个TRIM回收指令,在你删除了一个数据以后,如果系统检测到你当前没有进行数据读写,也就是硬盘处于空闲的状态,就会开始擦除你之前删除的数据,当数据删除完成以后,那快区域就空了。下一次再写入的时候,直接往上写就好了。就不需要先进行擦除再写入了。而再古老的Windows XP系统下,系统并不支持TRIM指令,无论是机械硬盘还是固态硬盘,在系统内部都是一视同仁的。

越慢,而到了后来的Windows7系统,微软就贴心的假如了TRIM指令,系统检测到你使用的是固态硬盘的时候,就会在空闲的时候,帮你磁盘进行TRIM回收,我们可以打开命令提示符输入这么一串代码:

fsutil behavior query disabledeletenotify

就可以查看你系统有没有开启TRIM回收指令了,如果是0,说明TRIM是打开的,如果是1就是代表的是关闭的。目前的系统都是默认帮你打开TRIM来提升磁盘性能的,所以都是显示的0,已禁用。如果你想关闭TRIM,就以管理员模式进入CMD,就输入这么一串命令:

fsutil behavior set disabledeletenotify 1

就可以关闭了,如果要打开那么输入以下命令:

fsutil behavior set disabledeletenotify 0

就吧1换成0就可以了。如果你开着TRIM,你还使用的是固态硬盘,那你清空数据以后,系统也执行了TRIM擦除数据,就几乎不可能再找回来了。当然,因为我们这圈子,据说有一个大神能够恢复TRIM擦除后的数据,到底是不是真的,我也不太清楚。总之,如果你使用的是机械硬盘,不小心删除了一些文件,那立马停止一切操作,防止系统写入了新的数据,覆盖了旧的数据,手机恢复也是同理的。

如果你使用的是固态硬盘,以目前行业内的技术,就只能祈祷系统没有进行TRIM回收操作把。如果你已经执行了,那么只能将硬盘邮寄到专业机构,进行人工修复操作了。上面也说了,机械硬盘虽然能够恢复数据,但这是机械硬盘特性给你留的一条后路,包括固态硬盘一样,你可以说我宁愿损失写入性能也需要关闭TRIM,保证数据误删以后可以恢复,但是无论怎么讲,这都是数据消失后的后路了。没有必要就是特意的去关闭TRIM。

不过忘了说了,以前的数据记录是用的FAT表,现在的电脑磁盘基本上用的都是NTFS表了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

站长QQ/VX:82794

在线咨询: QQ交谈

邮箱: 82794@qq.com

任何技术问题请联系QQ,非特殊行业请勿加微信!龙信小伙伴请联系微信群找我。
关注微信
非商务合作请勿添加

非商务合作请勿添加微信

返回顶部