毫无疑问I/O是计算机行业必须攻克的下一个障碍。摩尔定律一直在发挥作用,计算机处理器的速度基本上每隔12到18个月提高一倍。内存的速度也保持了和CPU一样的快速发展。因此CPU和RAM能够以相匹配的速度协调发展。在网络交换领域,每隔3到5年就会在技术上有一个飞跃。10Gb/s以太网(10GbE)已经成为主流的部署,40Gb/s的产品也发布了,带宽是足够了。
但这一切优势可能会被I/O拉后腿。I/O一直严重影响着应用程序的性能,多年来I/O一直是性能的短板所在。
为了弄清楚为什么,我们需要从底层说起。I/O是一个设备发送和接受数据的传输器,由发起I/O调用的文件系统或操作系统控制着。一个SCSI调用指令会通过HBA/NIC/CAN卡,穿过网络,到达SCSI设备。然后,磁盘阵列的存储控制器接收并处理调用指令,数据就会被从磁盘中取出,或被写入磁盘。一直以来,I/O的问题所在是从磁盘中读写所需要的时间太长了。I/O至少滞后了30年,而且因为每年的进步很小,差距还在逐年扩大。
但现在不一样了。
NAND闪存芯片可能是缩小差距的希望所在。闪存被认为是解决过去三十年内I/O问题的最好方案。有了固态硬盘(SSD),数据的传输速度就能够满足整个系统峰值性能的要求,数据就能够匹配计算/内存的性能,网络和总线上的数据就能快如闪电地来回传输。
不仅如此。在很多方面,Vmware和其他虚拟机监控管理器受到限制:简单的应用以虚拟机的方式运行没有问题,但如果要把关键应用系统也虚拟化,I/O障碍就必须先解决掉。没有哪个IT机构会将一个对延迟很敏感,I/O密集型的应用(通常加载在专用服务器上且被调优运行)放在虚拟机环境中,除非虚拟机环境下I/O的性能等同于或比物理机环境下更优。
要求苛刻的应用——例如高性能计算(HPC)、地震分析、生物、制药、媒体和娱乐以及天气预报等,会因为I/O问题而受到阻碍甚至被迫停止。解决I/O困境的投入是非常大的。
固态存储仅仅是解决问题的曙光,现在仍不能确定它应该怎样和从哪里入手来解决I/O的问题。简单的解决之道是将固态硬盘做成与传统磁盘一样的外形尺寸,这样可以直接把他们插入磁盘阵列中使用。这是能快速发挥作用的最简单方式,但只解决了一部分问题。阵列控制器很快就成为了瓶颈,因为它们从来就不是专为如此强劲的存储设备而设计的。戴尔、EMC、惠普、日立数据、 IBM以及几乎所有的数据存储提供商提供这类产品。
为了克服存储阵列控制器的局限性,许多供货商已经开发了新的控制器来与固态驱动器的速度相匹配。这种阵列可以使对延迟敏感的应用性能提高4到10倍。这类供货商包括GridIron系统公司、SolidFire公司、Violin Memory公司等。
闪存还有另外一种用法,它在I/O到达存储阵列之前捕获数据,省掉数据从总线到HBA/NIC/CAN卡,穿过网络,再从HBA/NIC/CNA返回等一系列传输路径。在这种解决方案里,闪存安装在PCIe卡上,PCIe卡就插在服务器上。对延时敏感的数据就保存在该卡的闪存中,相关的I/O被该卡捕获并进行本地处理。这种情况下,驱动程序是非常关键的,它们通常由卡制造商提供。获得的性能是非常显着的,因为去掉了引起访问延迟的外部设备。这种模式就好像将内存变成了磁盘。缺点是只有安装了固态硬盘卡的服务器才具有这种I/O性能。这方面的供货商包括IO Trubine、Fusion-io、VeloBit等公司。
另外一个应用方向是将闪存作为存储阵列的前端缓存,例如像NetApp的Flash Cache(闪存缓存)。在这种情况下缓存要被设计得足够聪明,能够感知并自动驻留应用程序频繁访问的数据。与存储阵列中装载的SSD(数量不可能太多)不同,闪存的好处可以为整个阵列的数据访问加速。
这类应用趋势正衍生出越来越多的变化。举个例子,我们已经可以看到来自Alacritech和Avere系统公司这类供货商的产品,他们把混装了DRAM、闪存和磁盘驱动器(HDD)的机柜置于一堆NAS机柜的前端,从而使传统NAS系统的性能焕发了新生。几乎每个创新企业都有创新的产品,现在还看不出那种方式将最终成为主流。
现在是解决I/O困扰的攻坚时期。磁盘作为存储的中流砥柱产品,时间已经太长了。现在,传统的I/O模式已经开始发生彻底的改变。你会看到由此带来的性能和效率收益将是跨越式的,远超你的想象。