固态硬盘在删除东西的时候,系统会发trim指令告诉ssd,这个位置的数据不要了,垃圾回收或者损耗平衡时这些数据不要了,win10自带的那个固态硬盘优化据说是手动trim,既然删除东西的时候已经发过trim指令了,还怎么手动trim,难道删过的东西系统还记录下来再重新trim一遍?
trim会标记被删除文件,然后SSD在闲置时会自动擦除它。
但是SSD并不是你刚一删除文件,它就立即把那些已删除文件所占用的物理存储空间进行擦除,而是过一些时间再进行。
。。。。。。。。
手动trim与自动trim的区别是:
手动trim会让SSD立即擦除那些脏块,
自动trim需要一定条件下,擦除过程相对缓慢。
。。。。。。。。。。。
就像一个人每天磨洋工,做一个工序之后歇好久,三四个小时才能做出一颗螺丝钉
某天上级检查,他1分钟就做好了。
win10自带的Optimize Drive,你按一下就会执行一次trim(当然你可以设置成自动执行)。
但是!但是!但是!现在主流ssd上的win10已经默认在系统执行删除命令时,自动向支持trim命令的ssd发送trim命令。
简单点说,操作者一删除文件,那个文件就会被标记,自动等待主控GC回收,无论你使不使用Optimize Drive,都不会干扰主控的GC回收。
结论,win10的Optimize Drive对于支持trim命令的ssd来说,就是个多余的东西,完全可以不管它。
最后,关于Optimize Drive,微软官网没有详细介绍,网友的说法又多种多样,我也不太肯定我的答案,因为我的推理会因为中间某一处错误的条件而出错,因此,希望各位路过的多多提意见,来促进我们对Optimize Drive的认识 (? _)?
用就行了,不要管那么多
Windows 维护了一个 trim 队列,删除文件的时候就会把文件所处的区域加入这个队列,磁盘空闲的时候就会从队列里面取出一项,做 trim 操作。但是这个队列的长度有一个上限,超出上限的情况下,新的 trim 操作会被直接丢弃。
这样一来,自动 trim 是有可能有遗漏的,比如短时间删除大量文件导致队列满。
SSD 优化功能则是根据文件系统的 free space bitmap 来做的,会把文件系统标记为未分配的区域全部都做一次 trim 操作,这样就不会有遗漏的情况了。
为什么不在每次删除文件的时候做一次 trim 呢?因为 trim 本身是有成本的,有可能直接影响 IOPS,Intel 就明确反对过这种做法(其实我觉得是他们主控没写好)。