当今市面上的存储系统存在若干具有普遍性的问题。通常情况下,数据从外部接口进入,存储引擎则进行数据处理。每种存储引擎均有其各自的特性,可以进行数据应用,或压缩、加密及映射等。在存储引擎处理数据的同时,还要进行应答,并将应答发送给高层应用。为了实现这一点,所有的存储系统均采用某种写缓存来尽可能快地作出应答,使应用得以执行各自的任务。此外,数据处理部分还会产生许多元数据。对每一个进入系统的I/O,元数据处理均如影随形般进行着。显然,也需要元数据存储来辅助数据处理。因此,这两种负载成为了存储系统中的瓶颈:写缓存和元数据缓存,亟需解决。如图1所示。
图1 现有存储系统架构中的瓶颈
这两种负载的主要特点均需要存储设备具有尽可能高的性能才能应对。理想的目标是这两种负载都能达到与图2中最上层的内存相当的性能。同时,也希望具备与图中底层所示的外存相当的非易失性来弥补内存在断电情况下数据容易丢失的问题。观察从内存到外存的存储层级,可以看出,这两种负载所需要的理想存储介乎外存与内存的层级之间――姑且称之为:关键型任务性能缺口(如图2所示)。
图2 性能缺口
如何应对这些挑战呢?自然而然的反应可能是:“用SSD来解决吧。”回头看看,这正是几年前多数存储系统采取的办法――将SSD用作写缓冲和元数据缓存。但随着技术的进步,闪存已然成为了占据主导地位的存储媒介,IOPS逐步提升,SSD而今已无法再满足这些性能需求。真正的挑战还在于SSD的耐写度。来看看这些负荷所需要的耐写程度。图3的纵轴标示的是每日写入的次数。横轴从左至右,IOPS从50,000增至1,000,000,图中显示了维持各个IOPS水平所需的写入次数。
图3 闪存的耐写度难题
几年前,50k IOPS的系统仍然非常高端,而今,却已连入门级水平都达不到。现在面对的是100k甚至更高的系统。以100k IOPS的系统为例,如果打算采用400GB SSD,即如图3中蓝线所示,那么,400GB SSD所需的耐久度是每天写100次。这显然是闪存无法达到的。即便将容量增至两倍甚至四倍,耐写度需求降至每天写入10次的范围,SSD也只是勉强可以应付,而且这样的SSD也会很昂贵。放眼未来,发展趋势是右上角的绿色圆块部分。显而易见,由于耐写度的问题,目前闪存无法胜任不断攀升的IOPS速度。
既然闪存不行,多数人会回头求助于DRAM。那么,DRAM能否胜任呢?不言而喻,从性能的角度来看,DRAM非常理想,但DRAM的缺点在于其容易受到电源故障的影响。所以必须为DRAM提供保护。保护DRAM的办法通常是加入集成的UPS系统或电池备份单元。而电池本身就存在一系列问题如可靠性差、生命周期比系统短等等,从而产生了维护的巨大困难。此外,电池要占据大量空间。有电池备份的存储机架中,四分之一的位置都被电池所占据。显然,这些为电池所霸占的空间完全可以更好地利用。
审视摆在面前的这些问题,PMC创造出了独具匠心的NVRAM 加速卡解决方案。该方案完美填补了内存层与SSD层之间的空白。PMC的NVRAM 加速卡性能优异,因此不仅仅起到了填补空白的作用,还实现了若干独特的功能。
图4 PMC
Flashtec NVRAM加速卡
首先,从硬件外观上来看,这是一款标准尺寸半高、半长的PCIe卡。其设计紧凑,可以置入任何服务器当中,基本上与所有服务器均能兼容。此外,PMC还在该方案之上与主机相连的接口层进行了若干创新。如图4所示,左边显示的是当前应用的原生接口,均是基于块。因此,我们提供了一个NVMe接口,这对一直采用块设备的应用而言是原生接口,易于整合。对于进出均使用大块数据的写缓存而言,这也是一个原生接口。此外,我们还提供了内存映射访问。在该模式下,我们将内存容量直接映射到应用的虚拟内存地址空间。因此,当应用需要访问时,就可以采用CPU的载入/存储命令将其作为原生内存来使用,而无须耗费任何存储周期,或触及任何软件层。对元数据应用而言,这种方式使之可以非常便利地访问内存。
图5 Flashtec
NVRAM应用模型
有了这两个接口:基于块的接口和内存映射接口,就为写缓存以及元数据的负载问题找到了解决方案。 那么,该方案在块模式中提供的性能如何呢?测试结果显示,该NVRAM 加速卡能提供一百万次IOPS。将之与SSD相比――与SSD的持续性能水平相比,该产品的性能比SSD要高出10倍。
图6 Flashtec
NVRAM性能十倍于SSD
图5中展示出将该产品与一款极其先进的PCIe SSD的结果。众所周知,SSD的性能基本取决于闪存。闪存的性能有可能很高,但就持续性而言,闪存存在不够耐写的问题,因此闪存的性能也是不均衡的。相比之下,PMC的NVRAM 加速卡持续性地提供均衡的性能,达到1 百万 IOPS读/写,并且没有任何耐久度的问题。
再来看看内存映射接口的情况。在内存映射端口,该卡的性能远远不止这个数值,对64B随机写,能够持续地提供一千五百万次IOPS。文中开篇时讲到,对于每个需要处理的数据缓冲,都有多次元数据I/O。因而,若要持续维持一百万次写IOPS,就需要处理相应的多份元数据。而有了一千五百万次随机读/写IOPS,该解决方案的性能是游刃有余。
图7 Flashtech对64B数据处理的随机写IOPS可达1千5百万次
最后一个性能指标是CPU利用率。与基于内存的解决方案相比,采用NVMe驱动的核心优势在于能够高效进行DMA处理。NVMe协议在这一方面的有很高的效率。用NVMe将数据从内存移至NVRAM解决方案,效率比利用CPU周期要高出四倍。这一点至关重要。进行内存备份基本上就要消耗CPU周期,而这些时间本可以用于上层应用软件的处理,这才是CPU资源最需要的地方。
图8 CPU利用率优于NV-DIMM
PMC的NVRAM 加速卡创立了一个独特的存储层级――DRAM和SSD之间的高性能存储层级。该产品能提供千万次写IOPS及百万次IOPS(4k块),从而实现了多种应用所需的性能与耐写程度。该产品采用行业标准的接口,PCIe接口,NVMe接口以及原生内存映射访问接口,因此,可以缩短系统上市的时间,降低总体拥有成本。如今的存储市场日新月异,应用场景多样化,数据类型繁多,NVRAM加速卡的推出是针对企业级关键任务应用,提供给设备厂商以及数据中心用户一个全新的选项。
NVRAM 与NV DIMM的区别
有一些新的方案如NV DIMM,就是拿普通的内存条加电容和flash,断电以后可以提供保护,机制都是一样的,形态不一样。那为什么说NVRAM比它有优势呢,一个是容量大,再一个NVRAM占用PCIE槽,而不是占用DIMM槽。再一个NV DIMM有很多劣势需要BIOS支持,NV DIMM插到主板上跟其他的内存怎么区分,BIOS需要区分开,应用需要区分开。混插的时候就比较难,OS你要改,要分清楚哪一块内存有断电保护的。再有就是需要硬件的支持,DRAM支持,以及额外支持NV DIMM插槽,这块更多牵扯到主板,最严重的是NVDIMM占用CPU周期内存,影响应用软件。
NVRAM 里有一个专门移动数据的处理器,会代替CPU把数据移动到NVRAM里。如果用DIMM的话,没有人做这件事的,只能靠CPU从普通的DIMM读出来再写到NV DIMM里面。所以CPU耗费大量的周期去拷贝数据很不划算。。