EMC VFCache创新与否?闪存大战爆发

服务器闪存缓存为何成为热门?

由于从去年EMC World大会就开始宣传,因此EMC VFCache(原名称闪电计划,Project Lighting)的正式发布,在企业存储行业中备受关注。来自国内外的相关报道和观点也“如同雪片般飞来”,各方面的信息,官方以及非官方的不可谓不详实。笔者在这里也想将自己对于VFCache的一些想法分享给大家。

首先是EMC为什么要做VFCache?服务器闪存缓存应用会成为一种趋势吗?

EMC VFCache创新与否?闪存大战一触即发

这个EMC列出的VFCache适用场合中,横坐标为存储工作负载的读/写比率;纵坐标为数据访问的随机程度,即以随机IOPS为主还是要求带宽的数据(下方与100% of the data并列的应该为0% of the IOPS,我们觉得可能是笔误)。

EMC表示VFCache适用于以IOPS访问为主,数据集相对不大的读取密集型工作负载。就像他们在新闻稿中所说的:“将PCIe闪存技术的优势从社交媒体边缘应用和互联网拓展到主流关键应用如微软、甲骨文和SAP。现在的数据库(CRP,ERM), 联机事务处理系统(OLTP),邮件,网站和报表系统,以及任何拥有缓存工作集的读密集型工作负荷…”

可是我们觉得,从性能和成本的角度,任何使用闪存作为介质的企业级存储产品都适合上述应用——高IOPS性能(读比写更快)、写次数限制、单位容量相对传统硬盘成本昂贵这些特点。甚至有用户将一些不太关键的应用跑在消费类(MLC)闪存存储上,不是吗?

当然我们不能只考虑这些因素,还有共享访问能力和数据保护。

Forrester研究公司分析师Andrew Reichman表示,通过在混合架构中使用闪存作为缓存,EMC可以使该技术更好地运用于一般企业,Fusion-io的薄弱点是数据保护和管理,在其最新季度报告中,Fusion-io表示其57%的收入来自于Facebook和Apple公司。

“如果你是Facebook,你有自己的开发人员团队,你知道如何保护数据和编写自己的代码,知道数据的位置,但是对于一般企业而言,事情并不是这样,”Reichman表示。

记得笔者在去年8月曾经写过这样一段话:“Fusion-io的ioMemory系列产品在操作系统中仍然表现为传统驱动器的形式,无论是OLTP应用中当作物理内存的补充/替代昂贵的外部存储,还是CDN(内容分发网络)的缓存,其应用仍有局限,或者说效率依赖于用户软件的优化程度。”

可以说Fusion-io在最近两年的“火爆”使越来越多的人开始关注PCIe闪存卡,该公司是这个领域的先行者。当我们看到其ioDrive产品在性能和延时方面的优秀表现时,同时也意识到它与传统网络存储系统的差异之处。

回到大约十年前,笔者最初接触外部控制器RAID磁盘阵列的时候,一个重要的应用就是服务器高可用(HA)。当时Linux的流行程度还不如今天,但无论是Windows Server环境下的MSCS集群、IBM AIX还是HP-UX等服务器系统的高可用,都需要后端的共享存储系统。它们可以通过SCSI、光纤通道或者后来的以太网(iSCSI等)连接到主机,在集群中一台服务器故障时由另外的一台或几台服务器接管后端存储上的应用数据,使业务中断的影响减到最小。

显然,单独依靠Fusion-io的ioDrive闪存卡是无法实现多台主机共享访问的。尽管Fusion-io支持一半的闪存空间作为镜像的数据 保护模式(存储容量减半),但FPGA闪存控制芯片以及所在服务器的一些组件还是有可能成为“单点故障”。因此当我们将重要的数据放在上面时,必须考虑使 用复制等容灾手段。

而中高端外部存储系统的可用性普遍达到了99.999%,除了类似于服务器上的电源和风扇设计之外,驱动器、RAID控制器也都具备冗余能力。而且对于关键业务数据的保护,企业级磁盘阵列普遍能够提供快照、本地/远程复制和镜像等软件功能。

因此,在Fusion-io这样的PCIe闪存卡大规模应用之前,EMC等传统存储厂商已经开始将驱动器形式的SSD应用于他们的存储系统中,提供 给用户比传统机械硬盘更好的IOPS性能。为了进一步提高闪存的使用效率,自动分层存储和阵列上的缓存这两种技术开始配合SSD工作,比如EMC的 FAST和FAST Cache(现在统一归属为FAST VP)。而NetApp很早就将固态存储器用于自家的FAS统一存储产品中,第二代PAM II PCIe卡将DRAM换成了闪存——被称为Flash Cache的读缓存加速器。

NetApp Flash Cache在硬件上接近于Fusion-io,但由于它位于阵列控制器内部,因此不会影响共享访问。如今EMC推出的VFCache也是一块PCIe闪存 卡,用于后端阵列的读缓存不会影响到数据保护,安装在服务器上不用经过存储网络使它具备相对更好的性能,但目前还不具备不同物理主机间的共享能力。

接下来的一页,我们将讨论EMC VFCache目前的功能限制,有哪些计划中尚未加入支持的特性?Fusion-io在服务器闪存缓存领域的竞争策略及优势等。

EMC VFCache当前局限,Fusion-io的优势

EMC VFCache创新与否?闪存大战一触即发

EMC VFCache硬件——来自美光(Micron)的300GB PCIe SLC NAND闪存卡

我们之前看到EMC宣传闪电计划时出示的是一块全高PCIe闪存卡,应该属于内部的早期评估样品,如今正式发布的半高PCIe使它能够兼容于绝大多数1U和2U机架式服务器。

EMC VFCache创新与否?闪存大战一触即发

使用VFCache的写操作范例

与后端存储系统结合的服务器闪存缓存方案,是EMC VFCache相对于DAS(直连存储)最大的优势。根据上图的原理,VFCache驱动软件除了拦截不超过64KB大小的I/O请求(通常为随机操作)并将其缓存到PCIe闪存卡用于加速访问之外,在应用程序进行写操作时不做改变,仍然是直接通过FC HBA卡写入后端SAN存储并等待其反馈成功信息(上图中的虚线),因此VFCache硬件故障不会导致数据丢失。

FAST集成、分布式缓存一致性暂未提供

EMC VFCache创新与否?闪存大战一触即发

去年6月,笔者应该是第一个于国内媒体中发表关于EMC“闪电计划”的原创评论分析。上图为当时引用自基辛格在EMC World演讲中的ppt。对于“扩展FAST套件到服务器”的说法,我们认为现在还没有实现,因为VFCache的fiter driver相当于一个对上层应用透明的卷管理器;而EMC存储阵列目前还不具备对VFCache的可见性,也就是说存储系统的管理软件还不能管理它,有待于未来进一步的集成。

至于分布式缓存一致性,它也是EMC VPLEX上的一个重要基础技术。如果VFCache提供对它的支持,能够将之前存储虚拟化设备基于内存的分布式缓存扩展到服务器本地闪存,而不需要断电保护。当一台服务器上的数据访问,能够在另一台主机的VFCache命中时,也不用去访问后端阵列了。而EMC VFCache目前还不支持分布式缓存一致性,我们觉得可能是因为其复杂性,首先需要在每台主机上保持元数据的同步一致,另外不同服务器上的VFCache闪存卡之间移动数据都需要经过网络,容易会带来可靠性和性能上的不确定因素。

因此,VFCache暂时还无法支持共享磁盘环境和active/active集群,包括不能使用像VMware集群的vCenter DRS(Distributed Resource Scheduler,分布式资源调度)和用于复制的vCenter SRM(Site Recovery Manager,站点恢复管理器)这样的功能,同样在执行vMotion虚拟机迁移之前,也需要先停止并移出源虚拟机上的VFCache。

EMC VFCache创新与否?闪存大战一触即发

上表为EMC VFCache的软硬件支持规格,其中Windows系统兼容64位Server 2008(包括R2)而没有较早的Server 2003,Linux当前也只有RHEL(Red Hat企业版Linux)5.6和5.7,没有最新的RHEL 6.0和另一个主流的Linux发行版——Suse Linux Enterprise Server。我们能够理解EMC的驱动软件还处于测试当中,不过传统存储阵列连接主机的的FC HBA卡和Fusion-io的ioDrive可没有这些限制。

关于PCIe闪存卡的NAND制造工艺、容量和性能,笔者不想在本文中过多讨论。需要说明的是美光的闪存卡使用了自家的ASIC控制芯片,理论上消 耗的CPU和内存资源比Fusion-io要少。不过Fusion-io尽管采用了通用的FPGA,但他们在PCIe闪存卡制造和固件算法上的经验也是一 种优势。

Fusion-io首席执行官David Flynn曾表示:“他们(EMC)正在使用SLC,以每GB计算的话其成本要高出3倍。他们会说这是个不错的东西,但是SLC不如MLC——即使是在企业级领域。”

Flynn打趣说,EMC使用SLC是因为他们依赖美光和其他组件厂商,而这些厂商并不具备Fusion-io那样可靠的MLC NAND闪存的能力。“如果他们通过美光采购组件的话,他们必须为此付出代价,支持是我们4到6倍的成本。”

此外,EMC VFCache方案目前每台服务器只支持一块闪存卡,服务器和存储阵列之间只支持4Gb/s和8Gb/s光纤通道连接协议,当然重要的一点是只支持EMC 的存储系统。如今对性能要求较高的应用通常还会选择FC存储接口,而EMC当然也不希望VFCache促进其他厂商的阵列销售。

EMC VFCache具备一种特有的“split-card(切分卡)”功能,允许用户使用服务器闪存卡的一部分作为缓存,而另外一部分作为DAS存储资源来使用。

挑战:如何支持双活集群和vMotion等功能?

写到这里,我们再来谈谈Fusion-io的举动。美光、STEC等厂商进军PCIe企业级闪存市场使该公司很难长期保持硬件上的优势,因此他们也在积极研发和收购相关的软件解决方案。

Fusion-io首先发布了directCache缓存软件来配合ioDrive闪存卡,能够支持ACTIVE-PASSIVE FAILOVER CLUSTER(活动-被动故障切换集群,指服务器双机高可用),而不支持像Oracle RAC那样需要同时访问共享块存储设备的HA集群模式。directCache可以说与EMC的VFCache非常类似,当然它不会像EMC那样限定后端的存储类型和磁盘阵列型号。随后收购的ioTurbine(以及由它组成的ioCache方案)则是VMware服务器虚拟机专用的缓存软件,其部署方式如下图:

EMC VFCache创新与否?闪存大战一触即发

Fusion-io ioTurbine部署原理图

EMC VFCache其实在原理上和Fusion-io ioTurbine也有不少相似之处。拿VFCache为例来说,需要在ESX/ESXi Hypervisor层安装一个VFCache Vender Driver,将闪存卡资源分享给上层虚拟机;还有位于虚拟机上的VFCache Driver(包括VFCache software),用于实现像在物理服务器操作系统上那样将VFCache作为后端阵列读缓存的功能。

VFCache支持RDM(块级裸设备)和VMFS加速,也就是说无论将外部存储系统创建为虚拟机共享文件系统datastore,还是透过物理机上的HBA卡(前提是支持VT-d)直通访问都可以支持。

既然原理类似,也都是只加速读的Write-through(策略),为什么ioTurbine能够支持vMotion而VFCache不支持呢?

我们觉得,这是因为vMotion、vCenter DRS、SRM这些功能都建立在vCenter对Hypervisor管理的层面上,在将数据访问权从一台物理机切换到另外一台时,需要先在源端解除 SCSI锁定。而无论VFCache还是ioTurbine都是在虚拟机上安装了第三方驱动软件,这时就需要它的数据卷(包括后端存储和闪存缓存)控制权 释放机制与VMware的软件功能相配合。即使是EMC与VMware这样的关系,VFCache现在还不能支持vMotion等,而ioTurbine 却能够做到,正是具备这样的“功力”促使Fusion-io去收购他们。

笔者还注意到,在ioTurbine公开的资料中,只支持VMware ESX 4.0, ESX 4.1, ESXi 4.1而没有最新的vSphere 5.0,另外客户机VM也只支持Windows Server 2008和2008 R2 (x64-bit only),没有Linux可见其实现的难度。应该说未来还有很多需要做的工作。

简单说,闪存缓存软件几乎每家都能做,但能否支持双活访问和虚拟化集群环境中的高级功能,就不是那么容易了。据了解NetApp开发了有一段时间的 “水星计划(Mercury)”,将会支持VMware的高可用特性、vMotion和DRS,并将支持任何服务器PCIe闪存卡,以及多卡联合功能。

最后一页,我们再来关注下EMC后续将要发布的Project Thunder(雷电计划)。

雷电计划(Project Thunder):有哪些创新?

最后,笔者也来谈谈对EMC下一步“Project Thunder(雷电计划,或称雷霆计划)”的观点。

首先,Project Thunder被称为“Server Networked Flash(服务器联网闪存)”,较VFCache而言增加了可扩展性和共享能力。雷电计划在2U/4U服务器机箱中使用了一个轻量级的软件堆栈,内置最多15个类似于VFCache硬件的PCIe闪存卡,采用了优化的高速Infiniband和以太网(估计是考虑支持已经产品化的40GbE,因而放弃了现在刚达到16Gb/s的FC)RDMA主机数据路径。能够提供数十GB/s带宽和真实应用环境中百万级别的IOPS。

EMC将Thunder定位于VFCache的扩展,针对读和写延迟/IOPS密集型应用来优化。既然包括写数据,雷电计划将可能不只支持作为缓存来使用,而且应该具备高可用特性。笔者觉得它更接近一个EMC全新打造的(相对其现有存储系统而言)全闪存阵列。就像Texas Memory Systems(TMS)、Violin Memory等厂商的产品那样。

注:在《SPC-1:闪存 vs.磁盘新旧势力的战场》一文中,我们提到TMS RamSan-630全闪存阵列去年曾以400,503 IOPS创造过SPC-1测试的纪录,并且具备$1.05/SPC-1 IOPS的优异性价比。

EMC VFCache创新与否?闪存大战一触即发

TMS RamSan-720的IOPS和带宽性能没有EMC Project Thunder宣传的那样高,当然它只有1U机箱的空间占用,堆叠使用也可以将容量和性能翻番。关键的一点是,TMS宣称RamSan-720是第一款没有单点故障的全闪存阵列,这使它能够真正胜任企业关键应用中的高可用存储。

EMC VFCache创新与否?闪存大战一触即发

RamSan-720的高可用建立在双RAID控制器的基础上,底层有被称为“2D Flash RAID”的闪存模块内部(即芯片之间)和跨越闪存模块的RAID 5,外部主机接口同样支持40Gb/s QDR InfiniBand,还有当前主流的8Gb/s Fibre Channel。

可以想象,无论服务器闪存缓存还是全闪存阵列领域的竞争都会越来越激烈,让我们期待EMC雷电计划、NetApp Mercury和其它存储厂商给我们更多的惊喜,“让暴风雨来得更猛烈些吧!”