您的位置: 网界网 > 存储 > 正文

性能与ILM的平衡:服务器闪存缓存的思考

2015年01月22日 10:46:35 | 作者:黄亮 | 来源:cnw.com.cn

摘要:本文想给大家介绍下服务器闪存缓存是如何在提供高性能、低延时的同时,实现共享、高可用以及和后端阵列整合的。

标签
戴尔
全闪存阵列
服务器闪存
PCIe SSD

【CNW独家约稿】如果说闪存颠覆了企业存储市场,并不为过。如今PCIe SSD全闪存阵列的关注热度都相当高,它们属于闪存位于企业存储应用中的2种形态。还有什么别的形态呢?服务器上的SAS/SATA SSD——与PCIe闪存的位置类似,只是单个组件的性能差些;混合阵列可以算一种,无论闪存在磁盘阵列中做自动分层还是缓存,都相当于是控制器上运行的一个软件调度;如果把这个调度功能移到前端服务器上运行,就是Server Flash Cache。

服务器上的PCIe SSD,由于数据路径不需要经过存储网络,通常可以发挥出闪存最好的性能。位于内存插槽上DIMM型Flash,理论上数据延时更短,但由于目前这方面的需求还没有那么迫切,以及各方面的限制,短期内还不会对PCIe SSD的地位有大的挑战。我在《破解PCIe SSD进化:从踩坑到解决方案》一文中曾经提到,无论那种服务器本地闪存,如果只是最简单的使用,都存在单点故障的问题,而且无法共享给其它服务器。

那么全闪存阵列有没有不足呢?首先,它的性能受到存储网络的影响,包括主流的10Gb iSCSI、8Gb/16Gb FC,都会增加延时并可能形成瓶颈,举例来说单个8Gb FC端口/控制芯片的IOPS上限一般在20-25万。至于40Gb或以上的InfiniBand和RoCE,在存储网络中用于主机连接还不太普及。更重要的一点是,SSD组件经过闪存阵列控制器后提供给主机时,由于RAID保护等方面性能损耗普遍较大,而其目的——可靠性和可用性又是外置共享存储所必须保证的。

那么服务器闪存缓存,可以说是一种折中的方式,本文就想给大家介绍下它是如何在提供高性能、低延时的同时,实现共享、高可用以及和后端阵列整合的。

Server Flash Cache进化、市场格局简述

在这个市场中,有EMC XtremSF/XtremSW(前者是PCIe SSD硬件,后者是缓存软件)、SanDisk (原Fusion-io )ioControl、PernixData、Proximal、QLogic FabricCache、希捷NytroXD(收购自LSI)、HGST ServerCache(收购自Virident的FlashMAX Connect/Fabric)、赛门铁克Storage Foundation 6.1中的SmartIO,还有戴尔的Fluid Cache For SAN和SanDisk Cache For DAS等。

对于另外2家传统服务器大厂,IBM有EasyTier延伸到服务器的版本,但感觉没多大动静;惠普的新闻稿中曾经出现过SmartCache,甚至硬件上都表示要与Fusion-io的SCSI Express(SCSI over PCIe)标准合作,但后来不了了之。

至于VMware VSAN,在分布式存储的基础上也包含SSD缓存技术。VMware官方建议用于VDI、测试和容灾目标端,并不是替代运行关键业务的传统一级存储。VMware也没有给出VSAN的可用性SLA是几个9(之前VSA官方说法是99.9%),个人感觉VSAN大约在99.99%的水平。

在上面这些里挑几个有特点的简单说说:

EMC的第一代服务器闪存缓存是VFCache,最初只是单机读缓存。到XtremSW 2.0版本加入了分布式缓存一致性和RAC支持。这里要强调一下,早期的Server Flash Cache软件通常不支持像Oracle RAC这样的双活集群访问,简单说就是当一台服务器向后端共享存储中写入数据时会锁定整个LUN。而Oracle RAC需要的是传统SCSI-3那样的细粒度锁机制,一个LUN上的不同LBA允许同时接受来自多个服务器的写操作。

分布式缓存一致性解决的就是协同,或者说数据一致性。如果由一台服务器改写了后端LUN内的数据,在另一台服务器上Flash Cache内也有对应的数据块,需要做过期处理,也就是说要维护一个同步的缓存元数据索引。

我们看到,XtremSW仍然只支持读缓存而没有写缓存加速。如今EMC推广的重点是XtremIO全闪存阵列和ScaleIO Server SAN(支持全闪存但不支持缓存/分层),提到XtremSW的时候已经不多。至于神秘的后备项目DSSD,则要等它揭开面纱的时候。

SanDisk的ioControl结构相对也不复杂,前端服务器上跑PCIe闪存读缓存软件,写缓存加速统一到后端混合阵列(Fusion-io收购的NexGen)上的闪存卡来解决。但如今该方案面临一些问题——SanDisk正着手将NexGen分离出去作为独立业务进行运营。

还有一家比较有特点的QLogic FabricCache,它最大的优势是与连接阵列的FC HBA卡融合在一起,无需安装专门的客户端程序(或者说filter driver),对操作系统透明。FabricCache硬件上需要以专用子卡形式的闪存模块连接HBA主卡,应该有PCIe Switch芯片还挺复杂。缺点可能有硬件配置上比较单一化,而且也不符合OEM伙伴的利益——阵列和服务器厂商似乎都没有帮他们推广。

赛门铁克Storage Foundation 6.1新增的SmartIO(参见《IDF14:全闪存VSAN、缓存Hadoop和高可用》一文)——用分布式SSD缓存来加速后端的SAN共享存储,它支持卷(块设备)上的读缓存和文件系统上的写缓存。Veritas卷管理器的一些高级功能历来需要“破坏性”地部署VxFS文件系统。

像VSAN、Nutanix那样的,属于分布式混合存储了,或者说计算存储一体化。这些产品有其擅长的应用场景,但有人说不太建议运行像Oracle高负载OLTP应用那样的关键业务。

在本文中笔者将以自己比较熟悉,也算相对成熟的戴尔Fluid Cache For SAN为例,希望能给大家介绍Server Flash Cache的一些技术特点、性能水平、配置注意事项等。当然我的了解有限,还没有亲自测试过,如有说的不对之处请多指正,不同的技术观点也欢迎大家讨论。

从Fluid Cache For SAN剖析服务器闪存缓存技术

上图中列出的几点:PCIe SSD是否可分享、高可用、读/写缓存,能否在线维护扩充等,应该说是考虑选择服务器闪存缓存的用户普遍关注的一些问题。

这里把统一的闪存Cache池也称作一个“层”。记得我曾听某大厂磁盘存储CTO说:一旦是用于读&写缓存,和分层的区别已经不大。只是数据是否最终要持久化到后端的问题,因为这时闪存中的待写入数据必须保证可靠性和高可用性。

这里RDMA的作用又是什么呢?为了缓存池中的全局访问,还有把每台服务器的的闪存写缓存镜像到其它节点以实现冗余,最好能有一个低延迟的专用高速网络。

如上图,我们看到40GbE和10GbE交换网络的物理延迟(当然不包括TCP/IP)分别只有0.6和0.8微秒,RoCE(RDMA over Coverge Ethernet)的延迟也不到1微秒(这里我理解的应该是主机到交换机)。

这里可能会有一个疑问,众所周知InfiniBand网络一向以高带宽和低延迟见长,戴尔为什么不用IB交换网络呢?

这个图供大家参考,40G RoCE和IB互有胜负,其实RoCE中正是应用了InfiniBand上的成熟技术。

123
[责任编辑:周源 zhou_yuan@cnw.com.cn]

我也说几句

热点排行