原创 对TRIM SCSI命令的一些分析

2012-4-6 21:38 2757 8 8 分类: 软件与OS

前一段时间做了一些对SSD方面进行优化的工作,SSD最大的问题在于长时间使用之后,IO性能会急剧下降。其主要问题在于为了防止“写放大”问题的产生,SSD的firmware采用了类似于log方式的算法,当存储资源基本基本耗尽时,在每次写操作时firmware只能进行garbage collection(垃圾回收,GC)操作,从而引入了很多费时操作,例如Nand Flash块的擦除,从而导致IO性能急剧下降。


为了缓解这个问题 ,大家想到可以将垃圾回收操作提前,不能等到资源耗尽的时候再做,这样可以在一定程度上避免IO性能的急剧下降。但是,不管怎么样,资源回收会影响到系统的IO性能,通过引入TRIM命令可以将这种影响离散化,平均化,起到非常不错的效果。


TRIM命令是SCSI层新加入的一个命令,因此SCSI Middle Level会对这个命令进行支持,另外SSD的Firmware会对这个命令进行响应。从表面上看,这仅仅是一条垃圾回收命令,但是,会影响到存储系统IO路径的方方面面,下面分析一下TRIM命令对IO路径的影响:


1, 垃圾回收是应用层的行为,这条命令不能在块设备或者SCSI一层进行触发,而只能在数据应用层(通常为文件系统)进行触发,如果在底层进行触发的话,那么上层应用将会看到错误的数据,这种行为非常危险。因此,为了支持TRIM命令,文件系统需要做出修改,例如,EXT3需要判断那些数据块可以被释放?并且需要知道何时可以释放?因为,TRIM命令将会对IO性能产生影响,所以,文件系统尽量不要频繁调用TRIM command。在这里,文件系统等应用层是TRIM命令的触发者,其熟悉应用的行为,可以在合适的时机触发SSD资源回收命令。

 

2, IO Schedule层需要进行修改。传统的IO Schedule层只关注读写请求,而TRIM命令是一个特殊的BIO,如果把TRIM命令当成传统的请求进行处理,那么将会带来很多不必要的麻烦,例如TRIM命令的BIO也许没有分配Page页,很多传统的驱动将会panic。为了实现兼容,在IO Schedule层不能将TRIM BIO和普通的读写BIO进行合并,应该将TRIM命令过滤出来。

 

3, 对于软RAID,TRIM命令存在很多问题,会导致RAID工作不正常,数据正确性存在问题。当RAID小写时,RAID需要从磁盘上获取整个条带的数据,如果RAID中一个条带中的局部数据块被回收,那么SSD返回的数据将和原来的数据不同,RAID条带的校验和就会失效,在系统故障的情况下,RAID将无法正确恢复数据。所以,TRIM命令将会导致Linux中的软RAID无法采用局部条带写操作,而只能采用整条带写的方式。

 

4, SSD对于TRIM之后的块会返回什么样的数据?不同SSD厂商可能会采用不同的策略。由于SSD Firmware在接收到TRIM命令之后,不一定会立即执行TRIM操作,因为,如果小数据块释放的话,可以进行聚合,直到聚合成一个Nand Flash块之后,才真正将其释放掉,否则会引入数据迁移问题。基于上述考虑,访问一个TRIM之后的块,该返回什么数据将和设计相关,我认为最简单的是返回原始数据或者是0,并且存在一定的随机性,和访问数据块属性相关。这种返回数据的随机性将会影响IO通路的数据正确性,需要引起注意。


在此列举了一些对TRIM命令的考虑,Linux开源社区也在做这方面的开发,大家可以在此一起讨论,畅所欲言!

 

ssd

文章评论0条评论)

登录后参与讨论
相关推荐阅读
tiloog 2012-12-18 12:58
我的存储之道博客
大家好,最近一直在做存储方面的工作,所以我在51CTO上专门开辟了一个空间讨论存储相关的问题,喜欢存储的朋友可以可以访问我的存储博客: 存储之道 (http://alanwu.blog.51cto...
tiloog 2012-04-06 21:39
SAS Cable可以有多长?
SAS接口是高端硬盘的主流接口,是存储系统的理想选择。我们知道高速信号的传输距离和传输线相关的,那么SAS作为外部通信接口,其Cable线具体可以有多长呢? 我在网上找到上图所示的眼图测...
tiloog 2012-04-06 21:35
惊叹!我们的跨洋网络
  每次地质自然灾害的时候,总会伴随着网络的问题,这是由于我们的越洋光纤网络出了故障,受到自然力的破坏而导致断裂。越洋光纤,听起来的确是件非常不可思议的事情,工程量非常的巨大,但正是如此伟大的...
tiloog 2012-04-06 21:33
科学仪器网络模型
科学仪器概述     科学仪器发展趋势 科学是从测量开始的,科学仪器是信息技术的源头,是信息产业的重要组成部分,是现代科学与工业的基石。科学仪器产业的发展关系到国家科学研究实力、生...
tiloog 2012-04-06 21:16
谈谈RAID产品与技术
说起RAID,学计算机的同学马上会说RAID技术简单啊,就是将数据条带化,然后计算一些冗余数据,一并写入磁盘。通过RAID技术一方面提高系统的IO性能;另一方面提高系统的可靠性。单纯从RAID的原...
我要评论
0
8
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /3 下一条