Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1256276
  • 博文数量: 185
  • 博客积分: 495
  • 博客等级: 下士
  • 技术积分: 1418
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-02 15:12
个人简介

治肾虚不含糖,专注内核性能优化二十年。 https://github.com/KnightKu

文章分类

全部博文(185)

文章存档

2019年(1)

2018年(12)

2017年(5)

2016年(23)

2015年(1)

2014年(22)

2013年(82)

2012年(39)

分类: LINUX

2016-10-10 11:14:06

转载地址:

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的作用可参考下图:
       011.jpg
       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目前不支持加密的文件系统。(以防止暴露加密文件系统信息)


阅读(845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~