作者:HDS资深技术顾问 吕峰 一说到闪存大家先想到的就是价格高,所以,我想从性价比说起。
其实,任何一种商品都是没有绝对的贵和便宜的,我想举个例子用数据说明。IO密集型应用是一种常见的应用类型,我们不妨假设有一个应用的设计要求,IOPS需要达到26万,采用传统介质和采用闪存介质会是什么效果呢?为了能够采用第三方公开评测数据,我选取了权威存储性能第三方检测机构SPC测试报告作为数据来源: 从上表可以看到,在IO密集型应用中,采用半个机柜的闪存加速模块就可以超过1152块15000转硬盘的IO效果(IO数量更多,IO延迟降低80%)。如果按照每个IO来计算,闪存已经是目前最便宜的选择之一。 以上结果仅仅是老款HDS VSP的情况,是为了给您一个具体的数字概念而专门提出来的。毕竟VSP是2010年推出的产品,当年26万的IOPS已经足够笑傲江湖了。时光飞逝,到了2015年,VSP早已经升级到了VSP G1000,闪存加速模块也已经升级到了第二代。目前的业界主流设备采用闪存介质能够达到什么样的性能效果呢?这是我们的第二个问题!
先看一下SPC-1的测试结果,这个测试主要关注IOPS和延迟: 再看一下SPC-2的测试结果,这个测试结果主要关注稳定带宽输出: 通过上边这些数据,不难发现,闪存介质不仅在IO密集型应用中独领风骚,更是已经逐渐进入了大带宽应用的范围,在最新SPC-2测试报告中,两家友商就是采用了闪存介质。也许在不远的将来,真的是闪存遍地的节奏。但是,我们也看到,同样是闪存介质,单盘的性能发挥却是差距巨大的。
主机IO落入到闪存介质中,需要经过光纤交换机、存储控制器、闪存模块,最终做到闪存颗粒。交换机大家没有差别,同类型的闪存颗粒本身差别不大,比较热门的eMLC概念,其实和普通MLC都是采用了MLC颗粒,只是在控制芯片和冗余颗粒比例上有差别,颗粒优选之类的说法,也可以作为一个安慰选项。 最大的差别在闪存模块控制器和存储阵列控制器。 举个例子来说,HDS的FMD闪存加速模块是HDS为闪存介质专门打造的专用模块,一个模块中就有146项技术专利,这些专利保证了FMD模块本身既具备强大的性能,又能够在不影响性能的情况下去实现数据压缩、ECC校验、写压缩等复杂功能。这样最大限度的解放了控制器的资源。采用成品的SSD硬盘,必须在控制器内实现诸多复杂功能,必然是要做功能与性能的平衡,牺牲一些性能在所难免。你看看一块SSD硬盘仅仅跑出不到2000 IOPS的悲催结果,就知道硬件为软件功能牺牲了多少。 那么,存储阵列控制器有多大差别呢?请看下表: 从上表可以看出,16个控制器的性能并不是8控制器的2倍,8控制器的性能,也不是双控制器的4倍,甚至端口,似乎也不是线性关系,缓存更是有产品压根找不到。单纯看硬件指标已经很难确定设备档次了,难道是真的到了软件定义存储的时代?我们先看看,软件对存储性能影响有多大吧! 要看软件的影响,最好是同一产品在不同微码下的测试结果。我摘取了两家H公司的测试结果比较: HDS的老款VSP是软件升级后提升性能的典型代表,从老款微码升级到针对闪存介质的微码后,配置闪存阵列加速模块,性能翻倍达到60万,延迟降低为0.72ms,效果是显著的。 另一友商的18800是其最高端的存储设备,第一版SPC-1测试报告比较奇怪,按照正常值估算,192块SSD硬盘足够支持100万的IOPS,但是居然又配置了1344块SAS硬盘,延迟居然达到5ms以上,为啥呢?我是没想通过。最新的300万IOPS的测试结果,让人看到了国产设备的进步!虽然单盘的性能还是仅有5000多,但是集群节点数量从8控制器到了16控制器,直追VMAX400K而去,单控制器的性能也从12万提升到了19万,考虑到更换了CPU,好像微码的效率并没有提升啊!当然,最大的进步就是,延迟终于从5ms降低到了1ms以下,为蒙受不白之冤的闪存介质平反了。不过HDS新发布的闪存模块已经大步走向0.1ms延迟了。
要发挥出闪存的性能优势,要有合适的闪存控制器、合适的存储控制器和适当数量的闪存介质。 需要说明的是,HDS的VSP采用的高端紧耦合架构,与传统的多控制器松耦合架构是不一样的,所以,不像是其他产品可以清晰的分出到底是多少个控制器,上表中是按照引擎柜来计算的。 以选择SPC-1业务模型下50万IOPS来举例说明,按照SPC-1测试结果折算会发现有意思的结果。 对于双控制器中端存储而言,50万IOPS之后增加其他配置已经没有意义,某些友商则需要增加控制器数量,单纯的增加硬盘和缓存是没有意义的。增加控制器是个技术活,相当于在集群中增加新节点。HDS从50万升级到100万IOPS,不需要新增机柜空间,不需要增加太多功耗,只需要在现有盘框里加硬盘,在控制框内插板卡,全部是在线即可操作的。这就是高端存储,超强的承载力,超简单和平稳的扩容升级。
存储性能本来就是一个复杂的问题,没有完全相同的业务系统,即使完全相同的软件和硬件,实际运行起来也是千差万别。SPC-1测试报告,最大的意义不在于比拼IOPS数值有多少,也不能保证SPC-1测试的配置在不同的应用环境下一定测试出一样的结果,它的最大意义是为广大的用户提供一个统一测试模型下各个厂家设备的对比平台,让我们看到一个存储系统在满负荷运转的情况下瓶颈在哪里,什么样的配置是合理的,需要预防哪些问题。 具体到每个业务采用闪存之后会达到什么样的效果,需要评测的话,第一步应该了解业务的读写模型,这个读写模型包括非常多的内容,包括数据块的大小、读写比例、随机和顺序的比例、时间分布特点等。没有调查研究就没有发言权,没有调查研究拍脑袋很容易掉到“常识”的陷阱里。 例如,前几天我刚帮一个客户分析了其数据读写的特点,为了保护客户隐私隐去客户名称和实际IO量,仅以实际性能图形说明问题。我们有一个常识,就是二八原则,通常读是80%,写是20%,据说很多交易系统都是这样的。我们和客户一开始讨论也觉得应该大体会符合这个规律。但是我们抽取了一个交易日全天的存储性能日志进行了分析,结果是这样的: 从上图中,很容易看出交易时间段(早九点到下午三点)实际应用的IOPS中,写占了绝大多数,我们知道大多数厂家宣传的性能都是读性能,存储设备的写入数据是有写惩罚的,如果还是按照读估算,如果留出的裕量不足够大,买到的设备可能会有性能不足的问题。同时,我们通常认为,数据库的查询数据块大小应该是小数据块16K到64K。但实际存储设备上的读是什么样子呢? 可以看到,读数据块基本都是100K以上的大数据块,这个时候参考4K数据块的性能就没有太大意义。 我跟客户一起看了这个性能分析结果,都觉得有点出乎意料,与二八原则不相符的原因我们不得而知,也许二八原则本也就是一个传说而已。但是,有了真正业务数据读写模型,我们给客户做了一个实际业务负载的性能模拟,让客户清晰的知道购买设备在具体业务模型下的性能表现,而且保证这种偏差率非常低。 本文稍微有点长,但是记得关键的一点,了解自己的业务是最核心的。
|
|