Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1165086
  • 博文数量: 173
  • 博客积分: 4048
  • 博客等级:
  • 技术积分: 2679
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-12 18:53
文章分类

全部博文(173)

文章存档

2018年(1)

2016年(1)

2013年(1)

2012年(118)

2011年(52)

分类: 服务器与存储

2012-11-15 15:13:18

   Trim,其实是一个ATA指令,并无正式中文名称,操作系统发送此指令给SSD主控,以通知它哪些数据占用的地址是‘无效’的。
       在讲解Trim的重要性前,先说一点文件系统的相关知识。当我们在操作系统中删除一个文件时,系统并没有真正删掉这个文件的数据,它只是把 这些数据占用的地址标记为‘空’,即可以覆盖使用。但这只是在文件系统层面的操作,硬盘本身并不知道那些地址的数据已经‘无效’,除非系统通知它要在这些 地址写入新的数据。在HDD上本无任何问题,因为HDD允许覆盖写入,但到SSD上问题就来了,我们都已知道闪存不允许覆盖,只能先擦除再写入,要得到 ‘空闲’的闪存空间来进行写入,SSD就必须进行GC操作。在没有Trim的情况下,SSD无法事先知道那些被‘删除’的数据页已经是‘无效’的,必须到 系统要求在相同的地方写入数据时才知道那些数据可以被擦除,这样就无法在最适当的时机做出最好的优化,既影响GC的效率(间接影响性能),又影响SSD的 寿命。
       大家要牢记,Trim只是一个指令,它让操作系统通知SSD主控某个页的数据已经‘无效’后,任务就已完成,并没有更多的操作。Trim指 令发送后,实际工作的是GC机制。Trim可减少WA的原因在于主控无需复制已被操作系统定义为‘无效’的数据(Trim不存在的话,主控就不知道这些数 据是无效的)到‘空闲’块内,这代表要复制的‘有效’数据减少了,GC的效率自然也就提高了,SSD性能下降的问题也就减弱了。其实Trim的意义在于它 能大量减少“有效”页数据的数量,大大提升GC的效率。特别是消费级的SSD由于一般OP空间较少,因此相对于有大量OP空间的企业级SSD来 说,Trim显得尤其重要。
       Trim的作用可参考下图。
       
       Trim指令只有在操作系统进行删除、格式化等操作时候才会发送。Trim指令目前还不支持发送给RAID阵列中的SSD。(操作系统下进行的软件RAID可以支持)。
       Trim的支持需要3个要素:
       1.SSD主控制器和当前搭配的固件需要支持Trim命令接收。
       2.当前操作系统需要支持Trim指令发送。(Win7/2008R2及后续版本)
       3.当前使用的磁盘驱动程序必须支持Trim命令传输。
       只有同时满足以上3个条件,才能做到系统Trim命令发送,驱动传输Trim命令,SSD固件接收到传输来的Trim命令。
       Trim目前不支持以下几种情况:(可能还有更多)
       1. Trim目前不支持RAID阵列中的SSD。(操作系统下进行软件RAID除外)
       2. Trim目前不支持磁盘镜像文件内操作。(VM等虚拟机软件使用的虚拟磁盘文件)
       3. Trim目前不支持加密的文件系统。(以防止暴露加密文件系统信息)
阅读(2663) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~