做PCIe SSD的Memblaze在Flash Memory Summit 2015(FMS 2015)上,展示了一款使用NVMe SSD的"软件定义"的全闪存阵列BlazeArray的产品原型,吸引了包括大会主席TomCoughlin在内的一众北美技术专家的目光,这一新产品(原型)的推出,其光芒甚至盖过了Memblaze拥有78万IOPS、3.1GB/s带宽的最新一代PCIe SSD PBlaze 4产品。
NVMe标准进一步推动了PCIe SSD朝着更高性能、更高可靠性和更成熟的生态环境发展,自2014年底开始至今,几乎所有的主流闪存供应商,都开始转向NVMe标准产品的设计和生产,在某种意义上来说,NVMe标准的PCIe SSD(包括PCIe插卡和SFF-8639)已经成为闪存领域高端产品的代名词。
但在全闪存阵列领域,限于产品研发周期和市场销售的问题,转向NVMe标准的全闪存阵列仍然步伐缓慢,传统的存储供应商们或仍然采用旧的PCIe SSD,或继续使用SASSSD作为其容量介质,在某种程度上来说,这些产品需要更新换代。
Memblaze整个公司目前最重要的产品,PBlaze IV(4,第四代)NVMe SSD
Memblaze的这款产品原型经过初步的测试,IOPS可以达到(4KB随机读)性能800,000 IOPS(延迟水平控制在了350微秒左右),硬件平台基于标准的英特尔x86服务器架构,使用双路英特尔至强E5 v2 2680处理器,6x16GB DDR3内存、2xPCIe Gen 3 x8接口,在1U的空间内(暂时)使用8块Memblaze NVMe SSD(即最新一代的Memblaze PBlaze 4),提供25.6。
吴忠杰的这张幻灯片显示,BlazeArray目前的测试性能可以达到82万IOPS,延迟在230微秒左右。
根据Memblaze团队工程师的介绍,产品原型暂时使用2 x Dual-Port的16Gb FC HBA,提供FC接口,但考虑到未来HBA的整体趋势,以及Mellanox等推出的高性能融合HBA卡,支持InfiniBand、FC和Ethernet显然不是什么问题,而且除了目前留出的双槽位全高PCIe插槽以为IO使用之外,还会在未来产品设计中再留出半高PCIe卡的插槽空间以更进一步加强IO性能(考虑到后面提到的CPU的问题,半高PCIe卡插槽是否只被用来用作IO呢?)
在软件设计思路方面,Memblaze的研发团队以标准Linux为基础设计了被称为Memblaze MemOS 1.0的操作系统(软件功能方面虽然暂时不提供重删和压缩功能,但据称已经在路线图上),基于这一OS,Memblaze将更进一步为BlazeArray增加软件功能。
考虑到BlazeArray所使用的8块(也可能是10块哦,往下看)NVMe SSD的性能,这一产品突破100万IOPS并非难事,但正如当前很多全闪存阵列遇到的问题一样,处理器需要负担大量的工作,比如像是EMCXtremIO就需要负担非常重的De-Dupe工作,导致其每一个X-Birck(砖块)的性能在一定程度上被限制。
客观来说,NVMe SSD的性能跑满双路英特尔至强E5 v2处理器还是比较轻松的,特别是在未来(考虑)增加JBOD(JBOF?D=Disk,F=Flash)的情况下,处理器的性能是一个非常需要考虑的问题,而且BlazeArray的RAID6是通过处理器计算的"软RAID",这在某种程度上又给处理器增加了很重的负担,一块3.2TB的NVMe SSD一旦出现问题进行RAID重建,处理器的负载压力之大可想而知。
Memblaze闪存系统负责人吴忠杰在现场表示,BlazeArray更可取的方式是使用Scale-Out的方式,JBOD虽然在考虑范围之内,但毕竟处理器的性能瓶颈会是一个问题。
事实上,考虑到目前BlazeArray使用处理器直连PCIe的方式,增加数十块SSD的JBOD方式,很可能涉及到需要采用PCIe Switch之后架构重新设计的问题,因此可能性应该不大。不过,吴忠杰表示,类似PMC的PCIe Switch的设计在实现PCIe交换机方面还是有比较好的前景的。
当然,考虑到英特尔未来每年都会发布30-40%左右性能提升的新一代英特尔至强E5 处理器(目前是V3),处理器瓶颈的问题在某种程度上可以得到一定的缓解;另一方面,Memblaze在使用处理器核心时,使用的是类似EMC MCx的动态多核心优化技术,即将处理器核心动态的调配不同的工作负载,以提高处理器的整体使用效率--在高工作负载的情况下,压榨处理器性能就显得非常必要。
但BlazeArray的一个特殊设计让Memblaze团队的多核心应用技术有了一定的难度,这一产品使用AGIGA Tech的NVDIMM(准确的说是NVDIMM-N)进行内存数据掉电保护,与EMC的XtremIO不同,其不需要一个庞大的BBU(Battery Backup Unit,电源备份单元,1U高度)来支持。
插在内存插槽上但是明显矮一截的就是AGIGA的NVDIMM。
AGIGA Tech的NVDIMM-N是一种同时拥有DRAM和NAND Flash的NVDIMM产品,在断电时,可通过SuperCap(大容量电容)进行数据保护,通过向DRAM供电,并将资料转移到NAND中,恢复后将重新放回DRAM上来保证正在写入的数据不会丢失。
BlazeArray的设计思路是,将所有的写操作都通过AGIGA Tech的NVDIMM来进行(当然这就是一种写缓存机制),这样出现掉电时,可以保证数据被写入到这块NVDIMM的NAND Flash上面,但对于其OS设计来说挑战在于:考虑到链路延迟和写入数据保护的需求,所有的写操作都需要经过其中一个处理器(肯定是要找到NVDIMM插槽"最近"也就是从属的处理器)以期继而通过NDIMM来写入到NVMe SSD上,从而保证所有的写入数据都可以在这一个NVDIMM的NAND Flash上保存。
BlazeArray的写延迟表现,4GB NVDIMM即AGIGA的NVDIMM-N。
对于软件设计团队来说,如何优化通过一个处理器进行写(或者说是找到那些负责写链路的处理器核心),不仅可能会占用一定的处理器资源,而且软件复杂度的也会提高。
但对于用户来说,BlazeArray的这种设计写入数据保护的可靠性是很高的,也避免了类似产品需要"UPS"来保护的问题,不过目前所有的NVDIMM-N产品都采用1条NVDIMM使用1个2.5英寸规范的SuperCap的方式(即在目前的设计中,10个2.5寸槽位,其中两个被SuperCap所占用了),大容量电容所占的宝贵的机架空间、电容的寿命及其替换问题仍然是需要考虑的因素。
RISL(Random Input Stream Layout)是Memblaze申请专利的架构,这一架构使用NVDIMM(延迟水平保持在10~100ns左右)作为写缓存和掉电写保护。
特别是据吴忠杰介绍,未来Memblaze会考虑把SuperCap放入机架内而不是类似SFF-8639的前插式设计(这是目前的设计方案),虽然BlazeArray的软件会监控电容健康状况,但更换问题还需要考虑的。
AGIGA给出的NVDIMM工作原理示意图
在AGIGA NVDIMM下面的就是BlazeArray使用的SuperCap
据吴忠杰介绍,BlazeArray的设计思路以"软件定义的NVMe全闪存阵列"为核心,考虑以行业标准的硬件,加上以标准Linux开发出来的MemOS,为企业客户提供可以定制化、软件化的解决方案,实现根据工作负载软件定义全闪存阵列,这当然是一个非常不错的设计思路,但具体产品在原型展示后会出现哪些软件方面的持续优化和改进还需要时间加以评判。
事实上就在Memblaze展台对面就是昨天发布了"逆天"的号称1000万IOPS以上性能基于PCIe NVMe M.2 SSD的NVMe全闪存阵列的SK海力士,支持CentOS 7.1 Linux的这一产品,面向HyperScale的数据中心环境,使用标准M.2 NVMe SSD,在一个2OU(OpenU,FacebookOCP U)的机架空间里,提供最多252块SSD,整个解决方案基于Facebook的OCP项目设计,符合OCP规范。
但在软件方面乏善可陈,据SK海力士的展台员工表示,这一产品的重点在硬件(Flash)的密度,而不是软件,换句话说,设计用在超大规模数据中心,Facebook或是BAT这样软件能力甩出硬件供应商几条街的互联网公司那里的产品,软件方面其实并不需要考虑太多--这是与Memblaze的BlazeArray完全不同的设计思路。毕竟,后者是为了那些传统企业级存储客户所设计的。