为什么你的机械硬盘支持TRIM?机械硬盘工作原理浅谈
现在很多人都会购置SSD加上一块1TB或者2TB的HDD来组成自己的存储系统,SSD用于放置系统,HDD用来当作存储仓库,然后等你装完机装完系统,用工具检测一下新买的各种配件是不是全新的时候,可能你就会注意到,你新买的HDD,支持的功能上面赫然多了一个TRIM。
可能对硬件知识略知一二的你心中马上就会产生疑惑,不是说SSD上面才会有TRIM的吗,怎么我这块机械硬盘上面也会有?是不是检测软件识别不正确?
上为支持TRIM的HDD,下为不支持的
其实并不是软件出现了问题,而确实是你的这块HDD支持TRIM指令。比较大的可能就是你买到了一块使用了“先进”SMR技术的HDD。那么什么是SMR技术呢,要搞明白它,首先还是要对HDD上面的一点原理做一些简要介绍。
传统HDD与常规磁记录(CMR)
硬盘的物理结构一般由磁头与碟片、电动机、主控芯片与排线等部件组成;当主电动机带动碟片旋转时,副电动机带动一组磁头到相对应的碟片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与碟片同心的圆形轨道(磁道 Track或称柱面),这时由磁头感应盘片上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位扇区,从而得到该扇区的数据内容。
常规磁道示意图。图片来自于希捷,下同
为了降低磁道间的干扰,一般在两条磁道间加入一定的间距,这就是传统HDD使用的常规磁记录(CMR)方式。
叠瓦式磁记录方式(SMR)
叠瓦式硬盘磁道示意图
随着传统磁记录方式的存储密度几乎达到物理极限,HDD厂商们纷纷开发出新技术来继续给HDD扩容,其中有充氦气、热辅助等等技术。不过这些新技术的成本比较高,于是成本比较低廉的叠瓦式技术得到了大规模的运用。
叠瓦式,顾名思义,如同瓦片堆叠起来一般,不仅取消了原来磁道间的间距,甚至更进一步把磁道叠到一起了,不过叠起来的磁道并不影响正常读取,因为读取磁头比较小,但是写入磁头就不一样了,为了保证数据的稳定性,一般写入磁头都比读取大不少,实际写入的轨道宽度也比实际读取到的磁道宽度要大(图中灰色部分就是写入的磁道,而绿色部分为读取磁道)。
修改数据的时候会把旁边的也给改了
于是,同样的写入磁头到了采用SMR式的盘片上面,刚开始的时候由于整个盘片都是空的,随便你写都不会出现什么问题。然而当要对已经写入的数据进行更改的时候,最麻烦的问题就来了:原本普通的CMR式硬盘,在修改数据的时候磁头直接定位到要修改点直接写入就行了;但是SMR式硬盘上面的磁道是部分重叠的,直接写入新的数据上去是会把旁边无关但是有用的数据给覆盖掉。怎么办呢?
解决方案就是先行把旁边会被覆盖掉的数据读取出来保存到高速缓存或者是写入到缓冲区中,然后在完成对数据的修改之后重新把“备份”写回到原来的位置上去。
TRIM与其他优化
是不是觉得这个解决方案和闪存式存储设备的写入方式有点像?在覆盖一个区域的数据时,闪存式设备是要先擦除该区域内容再进行写入。于是,TRIM这个可以帮助硬盘知道哪些区域可以被清理的指令就被引进来了,它可以帮助SMR式硬盘在空闲时把一些已经废弃了的数据区块给清除,方便之后在这些区域中的写入,在一定程度上可以提高性能。
另外,HDD厂商也引入了一些其他的手段更好地优化SMR式硬盘的性能,比如将多条磁道分到一个组(Band)中。原本修改数据的读取-再写入过程将一直持续至盘片末尾,而引入分组之后,写入过程在一个组的末尾处即可完成,有效地提高了整个运作的效率。
把磁道给分组
但是目前主流的几个文件系统中,比如我们平常用的最多的NTFS等都没有加入对SMR式硬盘的优化(EXT4除外),使得购买了SMR式硬盘的用户在使用过程中常常遇到“硬盘一直在转”、“磁盘活动时间一直在100%”这类的问题。目前还没有很好的办法在Windows上面优化SMR式硬盘的性能,因为目前在操作系统看来,SMR式硬盘与其他机械硬盘并无区别,只能依靠HDD厂商内建在硬盘固件和主控中的优化算法来尽可能地提高用户体验。