SSD Trim 详解

转载: 中国闪存市场 2018-11-01
阅读量 2675

SSD就是固态硬盘,相对于传统机械硬盘HDD,除了使用不同的存储介质(NAND Flash)外,SSD在使用上和HDD并没有太多差异,他实现的功能仍是有行业标准的。

硬盘的标准走了好多代了,现在硬盘以SATA为代表,上面加载的是ATA命令集;企业级常见的SAS硬盘,加载的是SCSI命令集;新兴的SSD新贵,采用PCIe接口,加载的有NVMe命令集。

一:历史

2007年底,区分SSD和HDD而使用的不同命令出现了,ATA8-ACS2 (additional command set)标准中制定了Trim的命令标准。Trim是单独为SSD设计的命令。

随后在SATA 3.1 spec中,Trim 命令被拓展为Queued Trim,实现了多条Trim和IO的并发操作。

Trim只是因为SATA而广为人知,SCSI 里面的同等命令叫做UNMAP,NVMe里面叫Deallocate. 他们指的都是同一个功能。

Trim这个词在SSD领域里面还有一个专有含义,”Nand Flash的Trim”指的是Flash上的各种隐藏参数设置。

Data Set Management Command这个命令覆盖了一系列和数据类型相关的管理命令。然而在ACS2中,所谓的一系列其实只有Trim这一种,其他的还没制定呢。

NVMe协议里终于有了不止一个属性,除了描述LBA空间被” Deallocate “, 还有其他属性,如描述LBA区间的latency,读写频率提示等。

有了Trim 命令,还需要有上层应用来用这个命令。

最早在2008年底的Linux内核版本 2.6.28里,系统开始支持使用Trim。随后Windows 7在2009年10月开始全面支持SSD的Trim功能,Trim 才开始广为人知。而Mac OS 则维持了他一贯的傲娇,直到2011年中的10.6.8才开始支持Trim, 还只支持Apple(OEM)厂牌的SSD,到10.10.4才放宽到第三方SSD

二:缘由

硬盘上的数据一般是由文件系统管理的。文件系统的抽象结构是这样的:

 

每个”文件”都是一组指针,指向了实际存放文件内容的LBA空间。文件指针则存在”目录”里。

当删除文件时,实际上是删除了文件指针,文件的数据就被废弃了,空间可以再被其他文件占用。

如图所示,file 1被删除,file 3取代了file 1 的部分空间。

然而在SSD的环境下,文件系统的这种操作带来了很多的负担。

熟悉SSD的同学应该知道SSD需要有垃圾回收,此处file 1遗留在LBA空间的数据并不是垃圾,对于SSD而言还是有效数据! 只有当LBA被复写,也就是上图中红色覆盖的部分绿色,才是对SSD有意义的垃圾数据 – LBA上有新的值了,旧的可以被回收再利用了。

虽然你的在系统管理器里看到SSD不是全满的状态,但那些被文件系统删掉的文件数据,仍然要被垃圾回收所搬运,带来很多不必要的写放大。

为了解决这个问题,Trim 命令应运而生。

三:意义

Trim 命令的用途,表面上仅是告诉SSD:”某段LBA空间的数据对我不再有用了,你看着办吧“,隐含的意思是这样的:”你别再把这些数据搬来搬去了,直接扔掉,擦掉就最好了。”

 

简单说来,Trim功能的作用就是Host主机删除文件后会告诉SSD哪些地方已经被删除,可以释放存储空间等待下一次数据写入操作使用,如果没有Trim指令,SSD就不知道数据是无效的,在进行数据整理时还要对数据进行迁移,这样就降低了速度也缩短了NAND Flash的擦写寿命,Trim功能大大提高SSD在系统中使用的效率和用户体验,微软windows 8以上操作系统是为TLC SSD的应用提供了更好的环境。

1.本文整理自网络,如有侵权,请联系删除。

2.所刊内容仅代表作者观点,非闪德资讯立场。

我的评论

登录后评论

最新评论

渠道报价
查看更多

DDR3

  • 一年
  • 半年
  • 三个月
  • 一个月

微信订阅

APP下载

存储未来,赢得先机

18126200184

Copyright©2008-2024 闪德资讯 版权所有 粤ICP备18080549号-1

粤公网安备 44030402002744号