关注SSD盘阵已经有一段时间了,前几年SSD的容量比较小,更重要的是它有限寿命和昂贵的价格使得SSD只能作为存储领域的加速介质存在,如果谁想用SSD作为盘阵来使用,那这个系统有点太疯狂了。因此,前几年无论是学术界还是工业界,一直将SSD作为加速介质使用,例如作为Cache,我曾经研发过一个系统将SSD作为磁盘阵列的CACHE。当年的创业公司Fusion-IO研制的PCI-E总线接口的SSD盘深受存储公司的喜爱,直到今天,很多关键业务的加速都可以采用Fusion-IO的高性能SSD盘。目前该公司已经上市。


技术发展到今天,SSD无论在性能上还是在容量上都有了巨大的进步,应用对高性能存储的需求愈发强烈,采用SSD搭建盘阵的想法逐渐靠谱。为此,硅谷出现了一批面向SSD的创业型公司,其中比较典型的是pure-storage,该公司推出的SSD盘阵很具特色。

 
作为一个技术研发人员,我们不禁要问:SSD盘阵和磁盘阵列在技术方面有什么特殊的差别吗?传统的盘阵技术可以直接利用到SSD盘阵上吗?

 
存储技术的实施始终围绕着一点,那就是存储介质的读写行为。无论文件系统还是操作系统的IO调度层,所有的技术考虑都会围绕存储介质的读写行为,因此,目前操作系统中的很多策略都是针对磁盘介质特征的。磁盘有何特征?磁盘最大的特征是存在寻道时间,如果在随机读写的模式下,磁盘的性能非常差。为此,操作系统会采用pre-fetch的方式减少磁盘的读写次数,IO-schedule层采用IO聚合排序的方式减少磁盘抖动。


SSD不是机械盘,其采用半导体存储介质,因此,不具备传统磁盘的特征,因此,我们在应用SSD时,软件层面所采用的技术将会有所变化,这一点我们可以从Linux开源项目中窥见一斑。例如,Linux为SSD增加了TRIM机制,需要修改SCSI,IO-schedule,MD-RAID和文件系统,目的就是为了增强SSD的性能。言归正传,由于SSD的读写特征发生了变化,所以,我们在设计SSD盘阵的时候所采用的技术必然与传统磁盘阵列的有所不同。在此,我非常深信如下几大技术将非常有利用SSD盘阵技术的发展:


1, Deduplication。由于磁盘随机读写性能的问题,重复数据删除基本上和磁盘系统无缘。如果是备份系统,那将另当别论,由于备份系统的数据存在很强的顺序性,所以,可以通过locality很高的Cache弥补磁盘随机读写性能的问题。SSD的随机读写性能很高,Samsung最近的测试数据表明,SSD可以达到80K的随机读写IOPS。因此,完全可以将deduplication技术应用到SSD盘阵上。采用重复数据删除的盘阵可以达到用“计算换IO“的目的,系统性能可以伴随着CPU性能的进步而提升;另一方面,deduplication可以很好的弥补SSD容量偏小的问题。在很多应用中,高性能的deduplication可以做到20:1的数据压缩率,这是非常乐观的数字。


2, Data-log。SSD一个非常的好的表现是随机读写性能,而一个令人头疼的问题是写放大问题,小写对SSD中的firmware来说是一个负面的操作。而log技术可以正好利用SSD的优越的随机读写性能来弥补SSD的小写问题。Log技术在传统磁盘上也有应用,大家熟知的DCD技术就是采用磁盘优秀的顺序些性能来弥补低效的随机写性能。但是,由于磁盘的随机读性能很差,所以,面向磁盘的DCD技术只能在写应用中可以采用,而读性能是很差的,无法应用。面向SSD的log技术不会存在这个问题,优秀的随机性能完全可以胜任应用的需求。

我想深入考虑SSD的读写特征,采用符合SSD读写特征的技术,能够使得SSD盘阵在性能上和使用寿命上都达到最佳。