很多人都听说过“固态硬盘不需要做碎片整理”,但对于为什么不需要整理,和“整理的话会有什么后果”不甚了解。今天就以东芝TR200为例,通过试验来看看固态硬盘内的“碎片整理”到底发生了什么。
为了展现固态硬盘内数据读取的速度变化,首先在TR200固态硬盘内写入两个4GB大小的文件,通过不同的修改日期将二者从File Bench文件读取速度测试软件的结果当中分离开来。最初两个文件的读取速度应当是完全一致的:大约在480MB/s左右。
接下来通过一款名为PassMark Fragger的软件,对iobw.tst进行“碎片化”处理。这里的碎片和机械硬盘一样,是文件系统层面的概念,指的是文件中原本连续的部分因为写入位置的不同而零碎地分布在不同的逻辑地址上。
碎片化处理的后果是,数据片段被写入到新的闪存位置,原本可以一次性整段读出的数据,未来需要分多次读取。尽管闪存的随机读取速度比机械盘的磁头寻道要快的多,终究不比连续读取速度快。所以碎片化处理过后,iobw.tst文件的读取速度大幅掉落至361MB/s。说明一个问题:即便是固态硬盘不需要碎片整理,但大量的文件碎片对于固态硬盘依然是不利的。
接下来我们用Defraggler碎片整理程序来执行碎片整理,看它能否解决固态硬盘的碎片问题。Defraggler默认对固态硬盘执行的是“优化”而非“整理”,但是我们可以强制它执行“整理”:
但是软件已经明确的提醒了碎片整理会减少固态硬盘寿命。这一点并不奇怪,碎片整理的过程就是将逻辑地址不连贯的文件碎片读取出来,然后重新写入到连贯的逻辑地址上。
但由于固态硬盘有FTL这样一个中间转换层,逻辑地址和物理地址并不一一对应。尽管碎片整理程序将零碎的文件片段在逻辑地址上整理成了连贯的顺序,却无力改变数据在固态硬盘闪存芯片中的具体分布。碎片整理话费了大量时间,产生了大量的写入,却依旧劳而无功,无法让文件的读取速度恢复到原有的水平。
更可怕的是,即便我们现在遵照软件的建议,使用“优化”而非“整理”的方式处理固态硬盘,速度也无法恢复了。因为“优化”操作本质上是对没有文件存储的“空白”地址手动发送Trim指令,促使固态硬盘主控完成对空白位置的垃圾回收。
但已经存储有数据的地方是无法Trim的:Trim的结果只有一个,那就是数据被清空。所以最终在浪费了大量闪存写入耐久度之后,我们还是没有任何办法能让文件的读取速度完整恢复。
执行磁盘碎片整理的时候会产生新的写入,而固态硬盘主控会因闪存不能覆盖写入的特点,选择新位置写入数据,然后将老位置标记为失效。每次碎片整理都会让文件在闪存中的碎片化程度又提升了一点点:好心办坏事!
还记得机械硬盘时代我们怎么处理越用越慢的操作系统吗?使用GHOST备份后再还原回去,电脑运行速度就恢复了不少。其实GHOST恢复的过程就是全部重新写入一次,只不过这个方法并不适合写入受限的固态硬盘。我们正常使用固态硬盘的过程中,只要不刻意地整理碎片就可以了。