可能很多人已经遗忘了windows自带的磁盘碎片管理程序。这个程序已经在windows中存在了很多年,笔者刚开始接触电脑时用的win98上就自带这个工具。
那时玩电脑还是个很新奇的事情,总想把电脑的速度弄得快一点。于是时不时的就开下这个磁盘碎片整理程序,听到机械硬盘一阵嘎啦嘎啦响之后,所有的杂乱的“颜色”都被排列的整整齐齐的。有点小强迫症的我就觉得非常舒服。
如今随着NAND闪存越来越便宜,
固态硬盘(
SSD)已经成了电脑的标配了,在工业领域更是有
金沙集团1991入口Agrade等性价比很高的品牌。而大家现在对
固态硬盘特性都有所了解:读写速度快但使用寿命相对不如机械硬盘。在机械硬盘(HDD)的领域,有磁盘碎片整理(Defragment)这一据说能提高硬盘性能的功能,那么我们需要给
SSD做磁盘碎片整理么?
回答这个问题,我们想要大致了解下机械硬盘和固态硬盘结构上的区别:
机械硬盘的核心部件是由马达、磁片、磁头。磁片上可以以0、1的形式记录数据,硬盘运行时马达带动磁片以每分钟几千的转数高速旋转,磁头则在离磁片很近的位置进行读写操作。
由于数据是存储在磁片的一个个扇区中,而民用级的硬盘转速通常只有5400转和7200转两种。看似速度很快了,但实际上磁头在磁盘上读取数据时还是有“寻道时间”的。虽然硬盘制造商可以通过提高盘片密度、磁头数、缓存容量等来提高寻道效率。但受到机械结构的限制,目前最强的HDD连续读取速度也没有超过200MB/s级别,而随机性能更是完全不能和SSD相比。
而当一块空的HDD(机械硬盘)开始写入数据,它们将被分散保存到整个磁盘的不同地方,而不是连续地保存在磁道中。随着随着硬盘日复一日地被写入、删除。磁盘中的空闲扇区会越来越零碎,复制进去的数据也会被分配到不连续的扇区里。如此下去,再去读取这些数据的时候,磁头就需要更加频繁的来回移动,从而降低了磁盘的访问速度。
而所谓磁盘碎片整理,就是通过windows自带的磁盘优化工具或者第三方的磁盘整理程序。把这些不连续的数据和凌乱的文件重新整理,让它们连续和有序的排列在扇区中。这样的话理论上级可以提高磁盘的读写效率。
再来说说SSD的构造:
SSD是由NAND闪存+主控+缓存+PCB+接口等组成,由于数据传输和读写都是由电子信号来完成。SSD摆脱了马达转速和磁头寻道这些机械瓶颈,性能自然就上来了。如今高性能的SSD的连续读写速度已经超过了2GB/s(这还是受制于PCI-E 3.0的速度限制,理论上速度还可以更快),在随机读写速度上,更是把HDD远远的抛在后头。
SSD不需要寻道时间,所以文件数据排列连续与否对读取速度并没有太大的提升。相反如果用机械硬盘的思路去帧率SSD内部数据反而会影响到SSD的寿命(SSD的写入次数是有限的),而SSD写入数据时也不是像机械硬盘那样可以直接覆盖,而是需要先擦除原来的数据再把新的数据写进去。擦除的过程对于SSD来说耗时最久,所以针对机械硬盘优化的磁盘碎片整理程序并不适合SSD来使用。
那么我们要怎么去优化SSD呢?其实针对SSD的优化,软硬件厂商已经统一给出了解决方案。那就是那就是Trim指令。当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘发出删除指令,而只使用Volume Bitmap来标记这里的数据已经删除。
这相当于只是把要删除的数据标记起来,再写入数据的时候。系统会把Volume Bitmap标记出来的区块直接写入新的数据。这样就可以大大提高效率。
在windows7之前版本的windows系统中,系统是区分不出SSD 和HDD的。所以如果你还在使用XP系统,最好不要用它的磁盘碎片整理功能来优化SSD硬盘。而当你在用win7时,系统会自动不对SSD的碎片整理功能;来到win8和win10系统操作系统在识别到SSD后,在默认开启磁盘碎片整理的情况下,会把它和HDD一起放入到优化队列中,对HDD运行碎片整理,而SSD执行Trim优化。
不过个人觉得,如今使用磁盘碎片整理的意义已经不大——在以前磁盘碎片整理后可以得到一些运行速度的提升。而现在的系统通常都被装到SSD硬盘中,碎片整理对其速度提升已没有那么明显。
如今的机械硬盘都是几个T级别大小,运行磁盘整理会非常耗时。整理以后对速度的提升也十分有限。而固态硬盘的主控中就自带了SSD的擦除管理和回收机制,在机器空闲时主控会自动运行这些程序(当然不同品牌SSD整理机制和触发条件不尽相同)。真的需要优化的情况下,我还是推荐使用厂家自主开发的优化程序。
所以除非你真的很有时间且有此习惯,否则磁盘碎片整理真的是没啥必要了。