为什么固态硬盘删除数据后无法恢复?

无论是谁,都难免会有误删文件的情况出现,所以捏,Windows从一开始就有了“回收站”的保护机制。但也架不住强迫症患者们没事就清理,毕竟鼠标右键点击“清空”选项的时候,它们就真的从硬盘上抹掉了。

  嗯,当走到这步的时候,我们还有最后救命的办法,用软件尝试恢复数据,但绝对不是次次有效,对传统的机械硬盘用这招还好,虽然不能说是100%吧,但成功率超过五成还是有的。但在SSD可就不好说了,真心的十试九败。为什么SSD的成功率就那么低,关键的问题点就在它和机械硬盘完全不同的数据存储方式。

  和机械硬盘相关的知识大家从《固态涨涨涨 机械硬盘你不考虑一下吗?》里面汲取营养吧,小编重点说说SSD。它用闪存作为存储介质是地球人都知道(火星人应该也知道吧),问题也就在这儿,SSD在新数据写入之前需要先进行擦除操作,然后捏,厂商们为了保证SSD随时有可以写入的地方,平均分配各个闪存模块的损耗(也就是寿命,闪存是都是有擦写次数限制),用名为FTL的动态链表记录和维护。

  因为是动态记录,使SSD数据存放的位置和外部的存取地址并不对应,举个例子,如果我们用闪存模块ABCD来区别命名它们的话,在传统的思维中,C盘的文件一定是存在闪存A上吧?但其实除了SSD控制器,谁都不知道实际的数据是在哪个模块内。使用数据恢复软件按着操作系统之前的记录方式,铁定找不到!

  再加上为了让SSD更长寿的Trim指令,当我们删除数据时,它直接让SSD把数据清理掉腾地方,而不是像机械硬盘那样先存着,新数据进来再擦写覆盖。有了这两位坐镇,想要恢复数据真的是难上加难(SSD长时间不使用还会丢文件捏)。

  那些能恢复数据的SSD是啥情况?没开Windows里面开Trim呗。大家想要知道自己的SSD是否已经使用了Trim的话,可以用管理员模式启动命令提示符,输入

  fsutil behavior QUERY DisableDeleteNotify

  如果显示的是“DisableDeleteNotify = 0”就是开了,“1”就是没开,数据恢复有望。

  要是壕们不太在乎SSD的使用寿命问题,只为了数据安全着想,那就关闭它,在命令提示符(管理员)中输入“fsutil behavior set disabledeletenotify 1”就齐活了!

  现在SSD这么贵,机械硬盘辣么便宜,养成把重要数据备份到机械硬盘上的习惯不是更好吗?或者就像我们给大家推荐的那样,小容量SSD只装系统,机械硬盘为数据保驾护航也是中不错的解决方案嘛。

更多数据恢复知识持续更新中:

希贝软件网站:www.mp4recovery.cn

时间: 2024-11-05 12:19:52

为什么固态硬盘删除数据后无法恢复?的相关文章

id 自增------删除数据后恢复到删除前自增id

删除数据后,执行下面语句: ALTER TBALE TableName AUTO_INCREMENT=1 mysql删除比较 一.DROP drop  table tablename 绝招:删除内容和定义,释放空间.简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表 二.TRUNCATE truncate table tablename 绝招:删除内容.释放空间但不删除定义(表定义和结构).与drop不同的是,他只是清空表数据而已.执行语句之后,发现数据表的结构还在,也就是不删除

mysql优化, 删除数据后物理空间未释放(转载)

OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化.这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 .OPTIMIZE TABLE

关于mysql 删除数据后物理空间未释放

OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化.这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 .OPTIMIZE TABLE

关于mysql 删除数据后物理空间未释放(转载)

转自 关于mysql 删除数据后物理空间未释放(转载) - NETDATA - 博客园http://www.cnblogs.com/shawnloong/archive/2013/02/07/2908911.html OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . B

关于mysql 删除数据后物理空间未释

OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化.这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 .OPTIMIZE TABLE

解决sqlite删除数据后,文件大小不变问题(VACUUM)

删除表格的全部数据: DELETE FROM [Name] 当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变.原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据.磁盘空间并没有丢失.但是也不向操作系统返回磁盘空间. 解决方法有以下两种:1,在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单.推荐使用.2,在数据库文件建成中,将auto_vacuum设置成“1”.但是第二个方法同样有缺点,只会从数据

Ajax请求数据与删除数据后刷新页面

1.ajax异步请求数据后填入模态框 请求数据的按钮(HTML) <a class="queryA" href="javascript:void(0)" onclick="query(${register.id})"> <span class="glyphicon glyphicon-search"></span></a>  ajax异步请求数据后给id为queryInfo的模态

Oracle 删除数据后释放数据文件所占磁盘空间

测试的时候向数据库中插入了大量的数据,测试完成后删除了测试用户以及其全部数据,但是数据文件却没有缩小.经查阅资料之后发现这是 Oracle “高水位”所致,那么怎么把这些数据文件的大小降下来呢?解决办法如下: 概念: 表空间的相关知识请见这里,详细的介绍了 Oracle 数据库的存储结构. 高水位:High Water Mark (HWM),是段(Segment)的一个指标,界定了段(Segment)曾经配置过的 block 水位. 据说,随着数据的 insert,所使用段(Segment)的数

Hibernate删除数据后,再查询数据依然存在的解决办法

删除数据后,重新查询了数据库,DB中记录已经删除了,但是数据依然能查询到,网上都说是Hibernate的缓冲问题. 我对session进行了clear,flush,并且在事务和查询中都对session进行了关闭操作. 但问题总是解决不了. 后来看来这个帖子:http://stackoverflow.com/questions/12035517/hibernate-reading-function-shows-old-data 在Hibernate的配置文件添加了配置 <property name