DOIT原创 崔昊 发表于:13年07月30日 17:23 [原创] DOIT.com.cn
闪存系统:不是所有闪存系统都是“合格品”
前不久在某业内厂商的大会上,该公司的存储产品线高层曾说了这样一句话:“相比那些初创厂商,我们的闪存系统更灵活、易于扩展和适用于企业应用。”虽然这句话带有着明显的进攻和宣传味道,但他所说的并不是完全毫无根据的。
我们可以通过高端存储系统和中端存储系统的区别来先为这个问题的发展做个预热:从2010年开始,此后主流存储供应商发布的存储系统在容量上的差别越来越小,往往中端存储系统的最高配置的盘片数量和IOPS性能,与高端存储系统的中、低端配置几乎相同,但它们仍然被分在中端和高端两个不同的产品系列中呢?
这就要回答一个问题:高端存储系统和中端存储系统的区别是什么——在企业级存储系统中,高端存储和中端存储的区别在早期确实主要是来自于容量和性能,因为存储系统的设计涉及到成百上千块磁盘,确实具有一定的设计难度,但随着ccNUMA等架构的不断成熟,高端和中端存储的区别已经不再由性能和容量为主要区别(尤其是在两个产品系列交界的地方),最主要的划分方式是可靠性和提供的面向企业级应用的能力。
比如说在高端存储系统上,对OLTP、OLAP的支持能力更强;在可靠性方面高端存储往往提供6个“9”的可用性,而中端存储往往是4或5个“9”;在安全访问、审核和数据加密方面,高端存储往往支持全局安全特性,而中端存储则略有差别;在支持主机、大型机以及在线升级方面,高端存储的水平也会更高。
在闪存系统上也是同样的问题:并不是全部插入闪存盘的存储阵列就是闪存系统,这其中又包括两方面的考量标准。
首先,闪存系统必须要针对闪存的特性设计,而不是在基于传统磁盘的阵列设计上更新闪存盘。众所周知,传统阵列是围绕着缓存(Cache)展开的,由于传统磁盘的速度并不够快,通过Cache技术,传统阵列能够提供读命中,以降低读时延;能够提供回写,以降低写时延,虽然这会导致较高的CPU占用率和内存占用率,但为了得到更好的性能,我们不得不这样设计。因此,我们不能也无需在闪存系统上设计复杂的Cache,尽量应释放CPU来处理更多的IO。
同样重要的是,由于SSD和传统磁盘的延迟性能指标差距巨大,如果我们直接将SSD插入传统阵列,只能发挥SSD的一小部分性能,需要尽量缩短阵列内部IO路径上各个模块的时延来充分发挥SSD的性能。
在系统设计——数据链路的设计、盘片连接、Cache设计——上,传统阵列并不应该也不能够通过直接插入SSD来获得“闪存系统”,一来这无法利用闪存的全部优势;二来在成本上将是十分低效的。
其次,是闪存系统的核心功能与技术问题,SSD的内部维护了一张映射表,记录了LBA到闪存页面的映射关系,每一个写IO,都会导致该映射表被更新,LBA被重新映射到新的闪存页面。可以说,SSD天生就是ROW(Redirect On Write,写时重定向)。
对于基于SSD构建起来的闪存系统,ROW已经深深嵌入了其灵魂深处。如果先将底层的SSD打散以实现块级虚拟化,并在此基础上实现基于查表而不是基于计算的LUN映射,那么将会给闪存系统带来无尽的好处:
1、 可以支持Thin Provisioning,部分克服SSD较贵所带来的初始投资过高的问题。
2、 可以支持ROW的快照,实现快照不影响源LUN的性能,而且快照和克隆完全归一。
3、 可以支持全局磨损均衡,以减少单块SSD失效对阵列带来的影响。
4、 可以支持在线重删,尽量减少对闪存的擦写,以使用延长寿命,同时还可以引入价格低廉的消费级SSD来支撑企业级应用。
其中,支持Thin Provisioning(自动精简配置)和De-Dupe(在线重删)对于闪存系统来说意义重大。
虽然闪存在容量价格比上正在朝着15k转速SAS逼近,但客观来说,这两者之间还是存在着一定的差距。闪存盘的单盘容量和单盘价格目前来说还不适合大规模、全数据中心的部署,如果具有Thin Provisioning(自动精简配置)技术,就能够以少量的闪存盘支撑更多的用户和应用需求,并随着闪存盘价格的下滑与单盘容量的上升,陆续以更低的成本购买并扩充闪存盘的规模。
De-Dupe(在线重删)则是有效降低闪存系统读写摩擦损耗,提升闪存系统容量的关键技术,正如上文所说,通过重复数据删除技术,将重复的数据进行删除,显然将降低对闪存的读取和写入工作量,也正是在这项指标上,许多现在市场上主要的“闪存系统”难以称得上名副其实,它们中的绝大部分都不支持在线重删技术。