如何才能发挥NAND闪存的最大性能?

在过去几年里,主流企业已经逐渐转生产速度更快、延迟更少的NAND闪存,但是一些厂商卖给消费的产品仍有一些限制,以致于无法发挥闪存的全部性能。

传统的磁盘阵列将数据存放在离CPU较远的集成了NAND闪存的固态硬盘上,但却使用的是一个过时的存储控制器。无论NAND闪存的速度有多快,都要受这一数据传输过程的局限,以致于应用程序的实际吞吐量只有小的改进。

让我们退后一步,分析一下磁盘存储的弊端,传统架构使用闪存的缺陷,以及如何发挥NAND的最大性能。

传统外部存储系统的性能瓶颈

与CPU相比,磁盘的速度局限是众所周知的,但很少有人知道,IT管理员在配置磁盘以发挥其最大性能的痛苦。这包括购买昂贵的FC磁盘以及复杂的结 构,例如每块磁盘只使用一部分以提高性能,这就意味着大量的闲置容量将随磁盘堆栈的增加而增加,并且管理员还要花费更多精力去检测故障(这还不包括空间、 电力以及散热所增加的成本)。

即便是有这些技巧,但由于外部磁盘存储系统与CPU之间的距离,磁盘通常很难达到满足其所需的性能水平。当CPU与内存以微秒的速度运行时,却是以 毫秒的速度访问基于磁盘的外部存储系统,这之间是一千倍的差距。即使磁盘阵列可以快速地存取数据,但从CPU获得数据却有很长的延迟,以致于CPU要花费 大量的时间等待数据。这就给应用程序和数据库的性能发挥带来了影响。

如何才能发挥NAND闪存的最大性能?
图1:应用程序和数据库与磁盘阵列所引发的延迟

传统应用模式下闪存性能瓶颈

如果你只是将闪存当一种新的媒质,如同磁带和磁盘一样的媒质,如果在应用过程中当作之前媒质的使用方式,那么实际上存储技术就只是前进了一小步。

闪存本身消除了传统磁盘由于缓慢旋转所造成的部分延迟,但却并没有解决从CPU获取关键数据过程所造成的延迟。

使用错误的存储通道将关键过程数据存储在远离服务器CPU的闪存阵列中,导致应用程序和数据库请求超时。

这样只能达到很小的性能增益效果,除了要采购更多的硬件之外,企业还必须增加复杂和昂贵的存储区域网络基础设施,包括主机总线适配器、交换机和单片阵列。

最为重要的是,这些架构仍沿用的是传统的存储架构,还有RAID、SATA/SAS控制器-所有已优化的传统旋转磁盘,但没有NAND闪存芯片。图2显示的是传统的存储层。

传统外部存储系统的性能瓶颈

全新的PCIe接口将让闪存发挥巨大潜力

越来越多的固态硬盘供应商已经认识到这点,实现SSD性能提高的关键因素是将闪存靠近CPU。他们正研发使用主机PCIe端口的设备,以消除目前翻译层的局限。

然而,现在一些设备的基础性能是通过将闪存放置在最初是为磁盘设计的SATA或SAS控制器下所获得的,这些协议和数据处理机制,并不适用于闪存,也没有对闪存做任何的优化,这就好像把一台高性能的汽车引擎安装在一辆已经有25个年头的老爷车上。

同样的事情还发生在RAID控制器上,其最初的设计目的是为了聚合多个磁盘的性能,以避免单个磁盘故障所造成的数据丢失。对于传统的旋转媒质而言,RAID机制性能优越。但是,但这些机制并不能与NAND闪存相适应,因为其造成了太多的延迟。

最好的方法就是将闪存放置在服务器内部,并采用PCIe接入,抛开传统的存储技术,使用一个新的、划时代的架构以给NAND闪存和主机内存提供一个最直接、最方便以及最低延迟的通道。

请记住,CPU从来没有从存储系统中读取任何数据,这一切都必须首先通过系统内存。在一过程中,主机PCIe闪存设备像磁盘一样存储应用程序或数据库数据,但实际上,它们通过直接内存访问或DMA向系统内存提供数据。这样能有效保证数据存储与CPU处理处于最低延迟状态。

通过让服务器CPU不受限制地访问闪存,主机PCIe可将应用程序和数据库的性能提升10倍以上。这种方法和其他固态产品之间最大的区别是明显改善 了应用程序的吞吐量,而不只是媒质本身的性能。没有传统存储协议的服务器数据位置将使应用程序能够充分利用服务器的CPU,而不是强迫它们等待服务器的访 问速度。如图3所示。

全新的PCIe接口将让闪存发挥巨大潜力
图3:主机PCIe NAND闪存给应用程序和数据库提供更低的延迟

将闪存作为磁盘或高速缓存

主机PCIe NAND闪存设备可用作磁盘驱动器或高速缓存设备。与传统的基于磁盘的系统相比,都有明显的性能优势。

在磁盘模式下,NAND闪存PCIe设备可像传统磁盘一样存储数据,这是将整个数据集放置在一个或多个PCIe设备上的数据库的最佳选择。NAND 闪存PCIe设备可以聚合主机操作系统软件或内置卷管理功能,如Oracle的自动存储管理(ASM)。NAND闪存PCIe设备也可作为本地的大容量存 储空间使用,其可在单个服务器内存储超过10TB的数据,充足的容量几乎涵盖了大部分市场。即使整个数据集不能存储在闪存中,大多数的数据库允许将诸如索 引或“热”数据之类的活跃文件以手动的方式放置在一个特定的位置进行存储。

在缓存模式下,PCIe NAND闪存可在不改变现有的外部存储基础设施前提下,缓存频繁存取的数据。对已部署的基于子系统的数据保护和恢复机制而言,这是最适合的选择。

缓存每个服务器内的本地频繁存取数据以保证活跃数据的最大性能,并同时保留现有的数据存储。这种组合对于I/O密集型裸机或虚拟环境应用来说,是最 佳选择。在许多情况下,虚拟环境常常遭遇I/O性能不足,或者以极高的成本才能获得高I/O。在PCIe设备上缓存虚拟机频繁访问的数据可以缓解这种痛 苦。

闪存技术为提升企业应用程序和数据库速度带来了很多的好处。但如果只是将闪存当作一种新的磁盘驱动器的话,企业将不能发挥其潜在的性能。采用主机PCIe的方式,放弃传统的存储协议和关键位置过程数据以更贴近CPU,以最大限度减少延迟,实现闪存对企业的承诺。