数据存储已经成为企业应用中的一个薄弱环节,如果厂商不重视这方面的话,这项技术将面临着脱节的危险。I/O栈没有与硅芯片的升级更新保 持一直步伐,最终它将有可能被像相变内存(承诺提供对数据的自由访问)这样的新技术所取代。 问题很简单:内存带宽和CPU 性能的增长速度远远高于磁盘和总线性能以及磁盘通道速度的增长,再加上I/O接口(POSIX)的限制,结果只能是随着时间推移I/O瓶颈越来越严重。 回顾过去五年存储领域不同板 块的性能增长,我们可以看到一些明显的趋势: ·内存带宽:Intel提供的内存带宽从2004年的4.3 GB/s增长了9.3倍到现在的40 GB/s,AMD提供的内存带宽也从5.3 GB/s增长了4.8倍到25.6 GB/s。 ·CPU性能:根据摩尔定律, 晶体管数量每18个月就会翻一番,那么这就意味着性能至少要增加10倍多(而事实并非如此)。 ·PCIe总线:PCI总线的 性能从2004年每个通道的250 MB/s增长到2008年每通道500 MB/s,明年有望超过1 GB/s,增长2倍(很快将达到4倍)。 ·每磁盘通道速度:从4Gb 光纤通道到6Gb SAS增长了50%。 ·SATA磁盘性能从68 MB/s增长到84 MB/s,而光纤通道/SAS从125 MB/s增长到194 MB/s,光纤通道/SAS的增长速度近似于每磁盘通道速度,而SATA只增长了大约24%。 ·磁盘密度:光纤通道/SAS 的磁盘密度翻了一番,从300GB增长到600GB,而SATA则从250GB增长到2TB,增长了8倍。 正如你所看到的,磁盘通道速度 和性能以及PCIe总线落后于CPU和内存带宽性能。这意味着,访问数据的速度远远跟不上处理数据的速度,POSIX无法判断什么是重要的,或者无法定义 服务质量,随着其他选择的出现,可能影响存储网络性能的问题也涌现出来。 数据访问速度在系统中的任何位置都没有提高,不管是PCIe、存储通道还是磁盘驱动器。唯一的 例外就是固态盘,尤其是SLC固态盘。五年前没有哪项技术能够与这些驱动器匹敌,但是它仍然受到通道速度(目前为6Gb SAS或者每通道768 MB/s)的限制。 POSIX:问题的一方面 我看到的一个问题是,在应用和存储之间我们有一个最小界面。我们所拥有的是标准POSIX控 制,打开、读取、写入和关闭以及其他一些系统调用命令。没有方法提供关于文件使用情况的信息;例如,你可能希望得到一个表明文件将被连续读取的提示,或者 关于一个文件可能被复写的提示。可能会有很多潜在的提示,但却没有一个提供这些文件提示的标准方式,尽管有些文件系统使用非标准的方法,但是接口只是问题 的一个方面。真正的问题是,存储性能远远落后于系统性能,这使得存储更难以使用,从而让它不再适用于实际使用。我认为性能落后是有很多原因的,不过其中有 几个比较主要的: ·设计内存的PCIe总线接口是很困难并耗费成本的一件事,而且将很多PCIe与内存连接会大幅度提高系统的成本 ·因为PCIe总线性能与 CPU和内存升级更新是不同步的,那么为什么我们需要更高的通道性能呢? ·磁盘驱动器接口使用的技术和通道是一样的,因此通道的性能不会提高太多 这个问题困扰了我很长时间。我 总是不断问自己,为什么这个情况没有改变,最后我总是得出相同的原因:在存储方面提高性能是很难又耗费成本的。在这里或者那里作出一个变动并不能改变整个 数据路径的性能。简单的瓶颈分析就可以证明这一点,因为即使改变了所有,但如果漏掉一个组件意味着仍然存在瓶颈。从PCIe总线到设备,再到这之间的一切 (包括软件界面)都需要通过改变来提升性能。没有哪家厂商可以做到这一切。没有人会搭建一个非标准的环境,因为设计成本太高,而市场规模太小。 现在有很多厂商开发基于 PCIe闪存的存储设备,这种设备解决了通道接口问题和一些性能问题。至少从目前来看,这种设备的成本对于消费级市场来说过高了,而消费市场是否青睐这种 技术决定着是否向存储市场扩展。即使是这种设备,PCIe总线仍然是一个性能瓶颈,这方面现在以及未来都不太可能有太大的改善。 有一项技术所要求的带宽远远超 过了PCIe,那就是固态盘。目前固态盘的读取速度超过500MB/s,大约是一个SAS通道的65%;对于SATA驱动器来说,它的峰值性能可以达到 105MB/s,大约是SATA通道的14%,对于SAS驱动器来说,它的峰值性能可以达到194MB/s,大约是SAS通道的25%。现在最底线是,它 不会占用太多的磁盘驱动器用于一个SAS驱动器。在光纤通道问世早期,也就是1998年,一个双光纤通道环可以支持9个磁盘驱动器的I/O。现在,企业驱 动器的2个6Gb SAS通道可以支持少量SAS驱动器,所以一直没有太大改善。现在我们刚刚达到6Gb SAS技术水平,大多数RAID系统仍然使用的是3Gb技术,这意味着使用目前最快的SAS驱动器可以支持大约1.9个驱动器。