众所周知,SSD固态盘有很高的速度性能,可以补足硬盘的不足。在这里,我先澄清一点很多人的误会,是SSD的读写速度是同样快速,这是不对的。SSD的读数据速度是非常快速,但是,写数据的速度只是比硬盘快几倍而已。 所以,如果你的应用是写为主,单纯利用SSD对速度的帮助不会非常大。
另外,SSD自身有着一些缺点,令到SSD不可以完全替代硬盘。第一,SSD的单位成本比硬盘高很多,这令到容量大的存储系统不可能用SSD完全替代硬盘。在可见的未来,我们也看不到SSD的成本和硬盘的单位成本会大大缩小。第二,SSD有着一个非常致命的缺点,就是写数据的寿命问题。SSD有好几种类,包括SLC(Single Layer Cell),MLC(Multi Layer Cell)和eMLC (Enterprise Grade Multi Layer Cell)。 SLC有着最好的写寿命性能,大概可以写100,000次,但成本也最高;MLC则有着最短的写寿命性能,大概1000到好几千次,而成本也最低;而eMLC却大概在中间,大概可以写几万次,成本也在中间。
一般企业级的存储系统,会采用eMLC,因为他的性价比比较好,也可以满足企业级存储系统比较高的可靠性要求。当然,如果你的应用是写数据很厉害的,eMLC几万次的写数据寿命也很快会耗尽。
在传统存储系统里,我们一般有2种方法利用SSD来提高总体的IOPS。
第一种方法是,利用SSD在控制器上来作为Cache缓存,来提高系统的总体IOPS。这方法的好处是,你可以很简单地利用这方法提高IOPS,但是,有一点缺点是,控制器上可以安装的SSD的数量是被本身的物理空间所限制。 举个例子,某个知名品牌的存储系统,某个高端型号的彩页里注明,最大可以控制的硬盘的数量是1000块,但是,在2块控制器上可以安装的SSD最大总数是2.1 TB。 这就是说,如果系统本身的硬盘数量是几十块的时候,2.1 TB的SSD可以提供比较大比例的总体IOPS,譬如说30%;但是,如果系统里的硬盘数量是几百块的时候,2.1 TB的SSD相对的提升就不太明显。
第二种方法是,利用SSD作为数据自动分层的高速度层,并把常用数据迁移到SSD让应用直接读写。当然,不是每一个存储系统都有自动分层的功能,可能是高端型号才有,并且,一般都需要额外收费。另外,有一点可能大多数的用户也不知道,传统存储系统的自动分层的数据迁移是一天做一回的(某些品牌更可能会7天才迁移数据一次)。这意味着,如果在一天里数据的读写随机性比较大,你需要用峰值数据来设计自动分层的SSD层的数量。 另外,自动分层的SSD层,是直接面向应用的数据读写的。 这意味着,如果你的应用的写数据的比例比较大的话,你的SSD的写数据寿命会很快耗尽。
其实,市场上已经有更先进的技术。硬盘的供应商老大希捷,在2007年的时候,已经有很好的办法去利用SSD来提高硬盘的IOPS,但同时间可以避免SSD写数据寿命的缺点。希捷研发了一种新的实时数据迁移技术,名叫 CADP (Continuous Adaptive Data Placement)。 CADP是一个实时的数据迁移逻辑,把硬盘上出现的热点数据,每5秒做一个决定,把如果迁移到SSD上可以令到应用有速度好处的硬盘热点数据,迁移到SSD上,给应用读,从而提高总体IOPS。 但是,如果该硬盘热点数据如果迁移到SSD后并不会带来明显好处的,譬如一些写为本的数据,CADP会把数据继续保留在硬盘上。 所有从应用来的数据,会先写在硬盘上,而不会直接写在SSD上。 这样,就可以很有效的延迟SSD写数据的寿命。
CADP是希捷应对新一代云存储的技术,也是一种网格式的技术。通过采用CADP技术,可以利用小量的SSD,维持着硬盘的成本,而提供像SSD般的IOPS。CADP 同时解决了SSD写数据的寿命问题,特别适合应用在需要高IOPS来支撑的应用,如VDI,OLTP,大数据,数据挖掘,应用云,超算等。
希捷在2007年的时候,把CADP技术,连同一些其他的先进存储底层技术,全转到一家从希捷公司分拆出来的一家新的独立公司,名叫Xiotech,后来在2011年再把名字改为X-IO,百分百专注高性能存储方案的研发和销售。