Title:粉碎文件对固态硬盘来说是没有意义的?Create:2023-01-11 ◊ :586

:2023-01-11 13:46
: TabKey9  :0  :0  


建议

在固态硬盘上的文件直接删除就好,在机械硬盘上的文件,酌情使用粉碎文件操作。

概念

一些数据清除工具,在清除文件的时候,是写入三遍以上的,写入数据也不一定是简单的置零,可能是置1,也可能是写入随机数据。如果360粉碎也是写入三遍的话,那么对一个4M的文件进行粉碎,数据写入量为 4M×3=12M。

固态硬盘真正用于存储文件的闪存芯片上的页(Flash Page,可以近似理解为机械硬盘的扇区)的逻辑地址不是固定的。文件被删除后,操作系统向固态的主控芯片发送Trim指令标记为无效,此时这个Page是不可读的——理论上如果这个时候马上把整个固态硬盘所有的闪存芯片的数据用RAW访问的方式读取出来,结合FTL表中的数据还是有可能恢复出文件数据。不过我不清楚有没有固态支持这样的访问方式(起码我没听说过),如果主控不支持RAW访问的话,需要把闪存芯片焊下来用专用设备才有可能实现了——还要保证焊下来的过程不会破坏芯片内的数据。

此外,固态的主控会定期回收这些被标记为无效的页——具体方式为把属于同一个Block的有效页写入到另外一个Block,然后把这个Block擦除,同时分配一个新的未使用的逻辑地址。目前没有听说过可以从被擦除的Block恢复出原有数据。

另外,如果文件粉碎软件是基于硬盘逻辑地址擦除的话(粉碎机械硬盘数据肯定是这样的),假设某个文件原来占用的逻辑地址是A1~A10,物理位置为Flash芯片F0,Block B1,Page P1~P10的话,第二次覆盖写入可能会写入F0-B1-P11~P20,第三次覆盖写入写入F0-B2-P1~P10……根本就没有覆盖F0-B1-P1~P10上的数据。

因此,固态上的文件删除后,无法从原有的Page读取数据,回收后更是无法定位到原来存放文件数据的Page,即使成功定位了也无法读取出擦除前的数据——总之,就是无法恢复被删除的文件;所以粉碎文件操作,对固态来说是没有意义的。

粉碎原理

1、在机械硬盘上: 对文件进行彻底删除完全不可恢复,最起码是要把原来存储文件的扇区做一遍置零操作。具体点说,就是一个4M的文件,大概占用1000个扇区(假设是4K硬盘),软件需要对这4K×1000个扇区全部写入0,数据写入量为4M。

2、在固态硬盘上: 对于512G固态,假设是三星970 Evo,官方标称寿命是600TB的数据写入量。2G的文件粉碎,写入量可能是2G或者6G或者更多。按照6G计算的话,寿命缩短了1/100,000。假设你的固态硬盘使用方式是在5年保修期之后再使用5年,一共10年内使用完600TB的写入量,那么你的固态硬盘使用寿命缩短了 60×24×365×10÷600000=8.76分钟。这么一次操作影响是不大的,不过如果长期使用这种方式来删除文件的话,固态硬盘的使用寿命可能会缩短到原有的1/2甚至1/3。不过也不用太担心,即使再严重点,算缩短到1/6,用10年也意味着平均每天你要向固态硬盘写入 600÷6×1000÷(10×365)=27.4GB 数据,这个一般家用情况真的很难达到。

总结

固态硬盘上的文件直接删除就好,没有必要粉碎。
因为粉碎文件的操作,对机械硬盘来说是有意义的、但对固态来说是没有意义的。

转载说明

知乎作者:木头龙

来源链接:https://www.zhihu.com/question/317709335/answer/636670751