存储领域从来不缺少创新的产品,即便是非常成熟的技术,不同的厂商做出的解决方案也可能有非常大的差别,以磁盘为例,虽然磁盘技术已经发展了数十年之久,能够说这是存储发展的最基础的部分,也是最为成熟的技术。但是磁盘市场上仍然会有氦气硬盘这样特立独行的产品存在。而今天我们所讨论的是另一个小众的存储产品,PMC的Flashtec 。
PMC的Flashtec 的出现正是由于能够承担数据中心中关键型任务的产品缺失所致,这里的关键性任务以IO密集型应用为主,比如在线的重删、索引、数据压缩等等,这些应用都会对存储造成大量的读/写操作。处理IO密集型的应用,当下最常见的方法是在主机中插入PCIe闪存卡,但是闪存并不适合大量的写操作,另一方面其性能也较内存相差较远,虽然其性能高出磁盘几个数量级,但是性能上还是难以满足上述关键应用对存储的需求。即是说内存和PCIe闪存卡中间缺少了一个产品,这个产品首先需要有超高的IOPS,这里说的超高IOPS需要达到100万~1000万的级别(当下主流PCIe闪存卡读写性能在30万IOPS左右);其次这个产品耐擦写能力也需要比闪存强;最后这是存储的第0层,产品需要是一个非易失存储。
虽然这实在一个小众需求,但是在数据中心中并不缺少类似的解决方案,只是之前小众的需求造成没有厂商为其耗费巨大的精力做成一个完整的产品。PMC看到了这个小众市场带来的发展机遇,并作出了Flashtec ,该方案完美填补了内存层与SSD层之间的空白。
PMC Flashtec NVRAM加速卡
上图是一张Flashtec的实物图并附议组件的解读,笔者标出了四个个卡上除备份电源外的主要组成部分。首先从硬件外观上来看,这是一款标准尺寸半高、半长的PCIe卡。其设计紧凑,能够置入任何服务器当中,基本上与所有服务器均能兼容。
卡的主要组成部分:
1)显示的是Flashtec主要部分,DRAM芯片,Flashtec有4/8/16GB三个版本(能够看到Flashtec容量比PCIe闪存卡会小很多。对于这个现象PMC张冬的解释为北美由很多互联网用户用NVRAM的场景确实不需要太大的容量,统计发现4G到16G基本上能够覆盖多数场景。扩容对PMC来说技术上不是问题,PMC将来会根据应用场景变化开发新产品),DRAM芯片的数量随版本的不同会有所差异;
2)标出的是PCIe接口,这款卡使用的是标准的原生PCIe/NVMe接口,所以使用起来与标准的PCIe闪存卡并没有非常大的差别;
3)显示的是用于备份的闪存模块,由于既要发挥DRAM的性能,又要做到非易失,所以闪存+备份电源模但是不可或缺的(备份电源模块并没有在图中标出);
4)也是这张卡最为核心的地方,是散热片下面PMC为其研发的Flashtec控制器,控制器分为32通道x8 PCIe和16通道x4 PCIe两个版本,需要指出的是这里的控制器也是基于NVMe标准的控制器。
简单来说,Flashtec最直接的使用方法是作为一个性能高于PCIe闪存卡的加速卡装进主机中,这样的用法颇像装进PC的SATA SSD,PMC2这种模式称为基于块的访问模式。除此之外,PMC还提供了内存映射访问模式。在该模式下,PMC将内存容量直接映射到应用的虚拟内存地址空间。所以,当应用需要访问时,就能够采用CPU的载入/存储命令将其作为原生内存来使用,而无须耗费任何存储周期,或触及任何软件层。对元数据应用而言,这种方式使之能够非常便利地访问内存,这种模式使得Flashtec更像是一个内存。
CPU利用率优于NV-DIMM
相对于内存解决方案,Flashtec在CPU利用率有非常大的优势。因为与基于内存的解决方案相比,采用NVMe驱动的核心优势在于能够高效进行DMA处理。NVMe协议在这一方面的有很高的效率。用NVMe将数据从内存移至NVRAM解决方案,效率比利用CPU周期要高出四倍。这一点至关重要。进行内存备份基本上就要消耗CPU周期,而这些时间本能够用于上层应用软件的处理,这才是CPU资源最需要的地方。
在Flashtec发布之后,看来PCIe闪存卡还不能算是存储的tie0层, PMC的NVRAM 加速卡创立了一个独特的存储层级——DRAM和SSD之间的高性能存储层级。该产品能提供千万次写IOPS及百万次IOPS(4k块),从而实现了多种应用所需的性能与耐写程度。另一方面Flashtec采用了PCIe/NVMe标准化设计以及原生内存映射访问接口,所以,能够缩短系统上市的时间,降低总体拥有成本,另一方面多方面的标准化设计使得Flashtec更像是一款能够开拓出一片市场的产品而并非专为特定客户定制的专属方案。现在的存储市场日新月异,应用场景多样化,数据类型繁多,NVRAM加速卡的推出是针对企业级关键任务应用,提供给设备厂商以及数据中心用户一个全新的选项。