|
本帖最后由 左脚选手 于 2011-6-16 13:24 编辑
太虚公 发表于 2011-6-16 12:57 ![]()
看来我不得不以较低的** 勉强向你解释一下这个很简单的问题了
trim做的唯一一件事情是把操作系统标记 ...
你说的空间回收应该是GC吧,trim是trim,别把2个东西混在一起,并不是所有的SSD都支持GC的,而且GC要腾挪数据,本身就会增加写入量,现在主流的方法就是trim而非GC。
A: 简而言之,这个问题是因为操作系统和文件系统不能和SSD的主控进行删除文件的交流造成的,如果有之前没清除干净的数据,所有写入的页的操作都要先清除块再改写,将严重影响写入速度。有2种途径来修复这个问题:
第一个就是定期运行垃圾回收程序(GC)(这个操作有点像整理,在SSD空闲时,全盘扫描有效的页并合并整理起来变为一个包含全部有效页的块,而那些无效的页和块都将被完全的清除)。
第二个更好的途径就是当数据删除时候让系统告诉SSD数据没了,让SSD立即擦掉那些数据占用的块,这就是Trim命令做的事。
当一个文件在支持Trim的系统里被删除后,操作系统会发个命令给SSD,让他知道这个数据所在的这个page可以直接被写入,等于把控制权从操作系统变为了SSD主控制器固件。SSD一样会复制整个包含删除数据的块到缓存,清空块并写入有效数据的页回去,区别是这样等于把这个延迟时间从覆写数据的那个时间提前到了删除数据的时候(这个时候你对速度不敏感,如果你删除了很大很大的数据,可以去观察硬盘灯在你删除之后几秒内狂闪),自然就会显得SSD的速度回来了,因为你写入的时候有可用的空块。barefoot主控的SSD,有个程序叫做Wiper,这个程序会扫描全盘,清除掉全盘过去被删除的页(和Trim的操作一样,手动),让SSD像新买来的一样。事实上这个程序在清除全盘已删除的数据之前,预先做了有效数据备份。由于程序独特算法和主控对应,别家的主控不支持,因为不算是真正的Trim命令(不是由系统发出的命令),所以可以支持XP之类的老系统。
所以我们可以说,Trim保证速度不下跌的真正秘密是: 把将来要做的事提前做掉了。 但是这件事迟早要做,所以基本不会影响SSD原有的写入次数(寿命)。
有很多人说,Trim是为测试而生的,这话其实没错,因为 1.Trim不能提速,只是保证速度尽可能不下降。(实际是SSD上没被使用的容量那里的速度不下降。Trim提前把那里的块清空了。下次直接可以写当然快了。)2.Trim没改变原本要做的事,只是提前做掉了,测试软件测试时候就不需要做了,从而“显得”速度上去了。
对于GC来说,由于是移动,整理,合并了旧页到新块,删除了无效的旧块,会牺牲点写入次数(寿命)。但是GC支持RAID,也算有利有弊吧。
|
|