我们对2011年公布的SPC-1测试成绩进行了汇总分析,其中提出了一些问题,有的得出答案而有些还尚未了结。从本文的标题上,您应该看出笔者想先从中端存储系统入手,做进一步的讨论。
为什么选择中端存储系统呢?因为这可以说是一个“百花齐放,百家争鸣”的市场。首先是前文中涉及的五款中端阵列:NetApp FAS3270A、IBM Storwize V7000、Pillar Axiom 600 Series 3、华为赛门铁克Oceanspace S5600T,以及Oracle Sun ZFS Storage 7420c分别有一定的代表性,尽管没有包括EMC VNX/CLARiiON、HDS AMS2000、戴尔Compellent和惠普(P6000)EVA这四个系列产品,但基本上也涵盖了绝大多数FC SAN所支持的功能。相比之下,入门级存储系统通常无法提供一些高级特性,而高端阵列的出货量和覆盖用户群则要小得多。
我们还是先回顾一下之前遗留的问题:
1.同样是中端SAN阵列,NetApp FAS3270A是如何在驱动器数量较少的情况下实现较高的效率?
2.IBM V7000和Pillar Axiom 600在这里看似亮点不多,它们“贵”在哪里?也就是说哪些方面为用户提供了更多的附加价值?
3.华赛S5600T和Sun ZFS 7420c是怎样在价格竞争力突出的情况下,性能效率又在传统磁盘阵列中领先?
从SPC-1测试报告中截选出每款存储系统相对重要(所占大头)的部件参考价格,其中没有包含服务。笔者感觉最“给力”的Oracle Sun ZFS 7420c,其实就是2台定制的Sun Fire X4470服务器,每控制器配置4颗Intel Xeon X7550八核心2.0GHz CPU,一共128条8GB 1066MHz DDR3内存(每控制器512GB),8个2.5英寸512GB SATA SSD读闪存加速(可能是eMLC或者MLC NAND)和8个3.5英寸SLC SAS-1 SSD写闪存加速(容量和具体用途我们将在下文交代)。
上表中的部分内容和名词,到了介绍对应产品时自然会具体解释。当然笔者在本文还有很多想要和大家交流的地方,比如说通过SPC-1测试报告中的结构 图和配置信息,来简单分析每一款存储系统的硬件设计。我们也会补充其它方面的资料,结合笔者以前积累的经验。其中部分内容在存储行业资深人士看来可能有些 班门弄斧,某种程度上带有一定产品技术普及的目的。
另外,最近我也收到了来自一些同行中肯的意见反馈:比如SPC-1结果无法全面反映出存储系统各种配置下的性能、以及附带/支持的软件功能等价值。 因此,笔者在比较不同型号阵列时,也会相应的提到统一存储、自动分层存储、SSD缓存、存储虚拟化、Scale-out横向扩展、压缩/重复数据删除等方 面的高级技术特性。希望能够让读者对产品有一个更全面了解。
我们曾经提到了空间利用率与每驱动器IOPS之间的微妙关系,而“每驱动器IOPS×空间利用率×2”是一个仅供参考的数字,其目的是排除未用存储容量(短击硬盘?)对性能测试可能带来的影响。
在后面的几页中,笔者将分别讨论5款各具特点的中端存储系统。涉及的话题包括x86架构控制器、存储虚拟化技术的不同形式、自动分层存储应用现状分析、形形色色的SSD缓存加速等。
NetApp FAS3270:统一存储+FlashCache
NetApp FAS3270A运行SPC-1测试配置的参考示意图
NetApp FAS系列统一存储和V系列网关都能同时提供SAN和NAS文件协议访问的支持,曾经有一段时间NetApp几乎就是NAS的代名词,IBM OEM自NetApp的N系列产品几乎就是当作NAS来卖。还有人认为NetApp在WAFL文件系统的基础上“模拟”块存储设备,其效率可能不如纯粹的 SAN阵列。不过从FAS3270A的SPC-1测试结果来看,如今对于NetApp中端存储系统的这种顾虑基本可以打消了。
其实任何RAID阵列的数据分块(Stripe)方式,应该都需要有基本的元数据或者映射表,文件系统的索引也属于这种形式。在此借用一位业内朋友的话:“当LUN从树上下来开始直立行走的时候,才发现其实文件系统早就变成人了。”
NetApp FAS3270A SPC-1测试配置
如上图,NetApp FAS3270A统一存储系统的2个控制器位于单一的3U机箱内,还有一种2个两个机箱各安装一个控制器和IOXM(I/O扩展模块)的HA配置形式。每个控制器带有16GB内存(总共32GB)、6MB二级缓存的CPU、512GB FlashCache闪存卡(一共1024GB,用于读缓存),运行NetApp FAS/V系列产品通用的Data ONTAP 8.0.1版本操作系统。
NetApp FAS3270A的控制器机箱的2种配置方式:上面那个为3U机箱内安装一个控制器和IOXM,实现HA配置需要再增加一个机箱;下面的图在一个机箱中实现了2个控制器的HA配置,但没有I/O扩展模块。
FAS3270A分别使用2条6Gb SAS后端连接(miniSAS x4,带宽2.4GB/s)访问后端级联的5台DS3424驱动器架(扩展柜)–每个DS4243里满配24块3.5英寸300GB 15K RPM高转速SAS硬盘。控制器前端则各有2个4Gb/s光纤通道接口(可选8Gb FC)经过2台博科300 FC交换机的冗余存储网络配置连接到2台服务器。
NetApp Flash Cache (PAM II) PCIe闪存卡,硬件上类似于Fusion-io,安装在外置存储系统中使其具备服务器主机共享的读缓存加速功能。Fusion-io的“PCIe SSD”虽然可以实现更低的访问延时,不过被其收购的ioTurbine软件(以及由它组成的ioCache方案)是在一台服务器的Windows虚拟机之间共享SSD缓存。
FAS3270A使用120个驱动器的SPC IOPS测试结果为68,034.63,不知继续增加驱动器数量性能会有什么样的提升(最多支持960个),当然也有人关注EMC CLARiiON CX4-960/VNX的这个方面。NetApp高容量利用率的RAID DP(双校验盘,类似于RAID 6)却能够达到本次测试最高的每驱动器IOPS效率,我们认为除了WAFL(Write Anywhere File Layout,写任意文件布局)文件系统重定向随机写操作之外,Flash Cache对于随机读的贡献应该最大,当然也因此带来了成本的上升。
注:据了解NetApp现在出货的高端产品FAS6200系列,应该是免费赠送512GB的PAM II闪存卡。
尽管NetApp官方资料中并没有公布其阵列使用的CPU型号,但是通过《2011存储Benchmark盘点,意义何在?》一文提到的 SPECsfs2008网络文件系统IOPS测试报告,我们查询到FAS3270使用了Intel Xeon E5240双核处理器,每控制器2颗(一共4颗),这与上面SPC-1配置中的6MB L2 Cache是一致的。
FAS3270在NetApp FAS3200系列中规格最高,作为一款在2010年下半年发布的产品,仍然使用至强5400平台似乎有点陈旧,而且2颗Xeon 5200系列CPU的性能才相当于一颗5400四核处理器。相对于FAS6200系列使用的Xeon 5500平台相比,FAS3200更像是在FAS3100基础上的一个小幅升级。另一方面,也可以看出相比那些用于计算的服务器来说,存储系统对CPU的要求并不是很高。
IBM V7000:虚拟化、自动分层存储普及难?
IBM Storwize V7000运行SPC-1测试配置的参考示意图
Storwize V7000 Unified是IBM这款产品现在的正式名称,因为在去年10月增加了可选的File Module(文件模块)即NAS网关之后,V7000也成为一款统一存储。
上图给我们的第一感觉有点抽象,看起来是2个Storwize V7000节点(其实就是2个控制器,见下文说明),各自通过2条6Gb SAS(同样是miniSAS x4)与后端10个包含24块硬盘的单元连接;前端使用每节点4个8Gb/s FC接口经由2个光纤通道交换机连接到2块双端口FC HBA卡。而图片下方的文字解释有点容易让人产生误解。
IBM Storwize V7000 SPC-1测试配置
这里的双节点集群,指的是V7000控制机箱中的两个控制器,每个控制器带有8GB内存/缓存。Storwize V7000上面的8Gb/s光纤通道接口既可以连接主机,也可以(经过FC交换机)连接其它存储系统,因为V7000的软件系统使用了SVC SAN存储虚拟化核心代码。因此该产品是一款具备存储虚拟化功能的FC+iSCSI阵列。
9个驱动器扩展机箱与控制机箱之间的连接方式见下图:
Storwize V7000增加扩展柜按照右侧一列文字从1到9的顺序,下方5个由蓝色示意线级联的扩展柜属于SAS Chain(链路) 1,控制机箱和上面使用绿色示意线级联的4个扩展柜属于SAS Chain 2,SPC-1测试配置的每个机箱中都装满了2.5英寸300GB 10K RPM SAS驱动器。
IBM Storwize V7000控制器结构示意图
上图是IBM V7000单个控制器的结构示意图,其中使用了一颗代号为Jasper Forest的Intel Xeon C5500/3500系列四核2.1GHz CPU(应该是实际频率2.13GHz的Intel Xeon EC3539)。
IBM Storwize V7000软件模块示意图
Storwize V7000号称集IBM存储技术之大成。上面绿色部分为来自SVC(SAN Volume Controller)已有的I/O堆栈,并在二款产品之间通用;蓝色部分为来自DS8000 DA Adapter的RAID代码;粉色部分包括针对V7000硬件组件编写的新Firmware,以及从XIV“Scale-out网格存储”移植过来的图形用户界面。
当然还有最初应用在IBM System Storage DS8700高端阵列上的Easy Tier自动分层存储技术。V7000目前支持SSD和HDD两个性能层级,也就是说如果有不同转速的机械硬盘都会被当作同一个分层来处理,而现在 DS8800的Easy Tier已经可以支持3个分层。
本文涉及的5款产品中,IBM V7000是唯一支持自动分层存储的。同样属于将热点数据放在固态存储上优化性能并节约成本的技术,我们看到SSD缓存技术应用越来越多,而自动分层存储 技术的应用似乎没有当初预料的那样多。究其原因,笔者认为首先是闪存存储技术还不完全成熟,特别是由其自身结构带来的写入性能和寿命问题,SLC NAND的情况相对好一些,eMLC和MLC现阶段主要适合于以随机读为主的应用。其次是实现的复杂度,SSD作为缓存不基本需要用户进行设置就能实现比 较理想的效果,自动分层则必须有一个数据迁移策略,并允许用户对其规则进行定制;而且读缓存在闪存单元失效的情况下也不会丢失数据,而自动分层存储则需要 考虑SSD模块的冗余高可用,现在流行的RAID 1(10)保护方式又使其逻辑容量减半。
还有一点,就是存储系统的定位和处理能力。我们在这里暂时先不谈全闪存阵列,当前的高端阵列IBM DS8800、EMC Symmetrix VMAX、HDS VSP和惠普3PAR都有各家的自动分层存储功能,这个前提是存储系统能够发挥出一定数量SSD的性能,而且购买相应设备的用户愿意支付这个成本。以自动 分层存储技术见长的Compellent就不是推荐所有的用户选择SSD,在不同转速驱动器、RAID级别甚至硬盘内/外圈分层都有各自的应用价值。 3PAR V800配置1,920块HDD创造45万SPC-1 IOPS纪录并不让我感到意外,因为以前他们是一家比较务实的公司,在宣传自动分层存储技术时并没有一味强调性能,而是在同样性能水平降低30%的成本。 这仍是绝大多数传统磁盘阵列的现状。
IBM Storwize V7000 Unified统一存储组成示意图
V7000 Unified的NAS网关“基于GPFS近20年在分布式文件领域的技术”,可以说相当于在SONAS基础上简化而来。这一对File Module(文件模块)中是不包含写缓存的,这样的好处是不需要像戴尔EqualLogic FS7500等统一存储那样使用UPS或者电池等来保护DRAM中的数据,另外在Active/Active双节点高可用的实现上省去了对写缓存进行一致性镜像。缺点是文件系统服务器不对写入数据进行缓存加速处理。
Storwize V7000发布时支持240个驱动器(加入双节点集群功能之后一共480块盘),SPC-1 IOPS测试在中端阵列中没有明显的亮点,不过这款产品集成的功能还是比较丰富的。
Pillar Axiom 600:缓存/RAID分离式Scale-out
Pillar Data Systems在被Oracle收购之前是一家由甲骨文CEO Larry Elison持有的私人公司,如今其产品线仍然保持着和Sun ZFS 7000系列相对独立的特点,因此本文也将对它们单独进行分析。
Pillar Axiom 600 Series 3运行SPC-1测试配置的参考示意图
上图说明中的2个Pillar Axiom Slammer控制器,与两个机柜中间的4个控制器机箱似乎有点矛盾?而通过来自不同控制器节点的8个8Gb/s FC连接到光纤通道交换机,却只使用服务器上的一块双端口HBA卡运行测试负载,恰恰是Scale-out横向扩展存储系统特征的表现(实际应用往往会连接不只一台服务器)。
Pillar Axiom 600 Series 3测试配置
这里的QLogic QLA2462 8Gb FC HBA又一次出现了笔误(应该是QLA2562,前面那张图是正确的)。Pillar Axiom 600的双控制器(即Slammer)被称为active/active data mover,每控制器24GB缓存一共48GB.测试系统分别有8个8Gb/s FC和8个4Gb/s FC接口用于前、后端连接(总共各有16个),经过配置的所有驱动器都可以被每一个控制器上的每一个后端连接访问。
“FC RAID Brick”是Pillar Axiom 600专用的阵列驱动器扩展柜,根据名称可以看出底层的RAID功能在它上面实现,而不仅仅是简单的JBOD连接。除了2U 12盘位的FC Brick之外,还有2U 13盘位的
SATA Brick和SSD Brick(其中都包含一个热备盘)可选。每个Brick两个“RAID adapter”指的就是双活动配置的RAID控制器(注意:这个与Slammer控制器不同)。26个FC Brick满配一共312个300GB 15K RPM驱动器是一种优化的配置,具体原因我们稍后就会交待。
Pillar Axiom Slammer规格表
Pillar Axiom的Slammer一共有四种版本:SAN(4/8Gb FC主机接口)、iSCSI(1GbE主机接口)、NAS(1/10GbE主机接口)和iSCSI Combo(1GbE + 4/8Gb FC主机接口)。我们理解NAS Slammer的功能就像带有文件系统NAS网关,而另外3款则与IBM SVC那样的(存储虚拟化)卷管理器有相似之处,为什么这样说呢?
Pillar Axiom 600能够支持4个Slammer横向扩展,即最多8个存储控制器单元。根据每控制器24GB缓存容量判断应该是Intel Xeon 5500/5600系列4核处理器(3或6通道内存?)。Slammer一共有6个10/100Mb以太网接口用于和Pilot管理节点的通信;26个 2Gb或4Gb FC接口针对Brick后端连接,应该也包括Slammer之间的通信。
Pillar Axiom 600在一个系统中最多支持64个Brick,也就是他们所说的128个可以独立并发工作的RAID控制器。在SPC-1测试中配置26个Brick,估 计是为了与Slammer的26个后端连接相对应,超出这个数量之后带宽理论上无法增加。不过笔者觉得,继续增加硬盘应该是可以提高IOPS性能的。
上图为以点对点方式互连的Pillar分布式RAID,与传统的双RAID控制器通过菊花链形式级连JBOD扩展柜的对比示意图。Pillar的 RAID功能在后端的每个Brick上实现,因此前端的Slammer主要负责存储池/文件系统)的缓存加速;而传统双控制器阵列的缓存和RAID功能都 要在控制器上进行。按照这个原理,Pillar的成本和性能应该会更高,而且Slammer和Brick都属于Scale-out扩展方式。那为什么 Axiom 600 Series 3在SPC-1测试中表现一般呢?
第一种可能:前面的测试配置参考示意图,以及配置表中的前/后端各16个FC连接(使用了其中8个),应该表示该存储系统配置了最多数量的4个 Slammer(8个控制器单元);而2个Slammer Controller和48GB total缓存的文字说明好像只有一个Slammer;本文第一页的价格表中又是2个8Gb FC SAN Slammer.到底应该以哪个为准呢?
第二种可能:即优化不足。Pillar没有提到为Slammer搭配了UPS等断电数据保护组件,那么也许它们的Cache只是读缓存,写入数据时经过Slammer到Brick反而会增加延时。当然这只是我们的一种推测。
IBM SVC(SAN卷控制器)6节点集群 + 2套DS8700运行SPC-1测试配置的参考示意图
使用6个IBM SVC存储虚拟化节点(3对高可用)在2套满配1024块硬盘的DS8700阵列前端,运行SPC-1测试结果达到曾经创纪录的38万IOPS,而在只是将SVC减少到4个节点其它都不变的情况下,性能就下降到31.5万SPC-1 IOPS.SVC对性能提升的秘诀就在于缓存,而且每个节点捆绑一台UPS能够保护写缓存中的数据在断电时不会丢失。
根据上图中的连接情况,数据从DS8700经过FC交换机到达SVC之后,还要再次经过FC交换机才能到达服务器主机,存储网络结构会比没有SVC时更为复杂。这是因为SVC上的光纤通道接口兼具连接前端主机和后端被虚拟化阵列的功能。
相比之下,尽管Pillar Axiom 600的Slammer和Brick之间也需要交换机,但Slammer的前后端FC却是独立的,Slammer、Brick分别有点像存储虚拟化设备及其后端连接的阵列,只是二者是专门打包在一起的产品,增加Slammer就像增加SVC节点那样来提高性能。
Pillar Axiom 600现在属于Oracle的存储产品线的一员,再加上他们以前的渊源,具备专门针对Oracle数据库的混合列式压缩(Hybrid Columnar Compression)功能不足为奇。理论上说,在上面运行这种应用能够比其它厂商的产品节约空间,同时可能提升性能,后面会介绍到的Sun ZFS 7420统一存储也是如此。
华赛S5600T:高性价比的x86双控阵列
华为赛门铁克Oceanspace S5600T运行SPC-1测试配置的参考示意图
华为赛门铁克Oceanspace S5600T测试配置
华赛S5600T应该属于Intel Xeon服务器平台的双控制器存储系统。其实本文前面谈到的NetApp FAS3270也是如此,与IBM Storwize V7000之类采用SBB Form Factor结构设计的阵列相比,由于控制器的空间较大,因此可以选择功耗高一些的CPU,而且内存容量处于明显优势。
S5600T配置252个驱动器的SPC-1 IOPS测试结果为102,471.66,而华赛另一款定位更高的中端阵列S6800T配置368个驱动器(都不是满配)的SPC-1 IOPS为150,061.17。在没有使用SSD缓存的情况下就实现了较高的每驱动器IOPS,可能与DRAM缓存算法的优化有关。
华赛S5600T的特点大致包括TurboModule高密度I/O模块及热插拔设计(PCIe扩展卡)、TurboBoost三级性能加速技术 –包括Intel CPU睿频加速和SmartCache动态数据缓存技术(使用自家的SSD)等。总之应该有不少人承认华为系公司不缺乏技术,但价格或许才是他们真正的杀手锏。
Sun ZFS 7420c:至强7500、1TB内存、SSD缓存
Oracle Sun ZFS Storage 7420c运行SPC-1测试配置的参考示意图
Oracle Sun ZFS Storage 7420c测试配置
Sun ZFS 7420的一大亮点是每控制器配置了512GB的大容量缓存/内存,远远超过本次对比的另外4款中端阵列。该统一存储运行了Solaris ZFS文件系统,并使用8个512GB SSD作为读缓存,还有8个73GB相对小容量的写缓存SSD应该是用于文件系统的ZIL(ZFS intent log)日志。
参与SPC-1测试的7420是Oracle Sun ZFS Storage Appliance系列产品中定位最高的一款,除了刚刚提到过的内存容量,每控制器支持四颗6核1.86GHz或者8核2.0GHz Intel Xeon处理器一看就是至强7500系列。如此高的硬件配置让我们有些惊讶,有这个必要吗?
经过对5款产品的分析,可以发现Intel Xeon平台控制器、前端主机接口使用8Gb/s FC和后端通过6Gb/s SAS连接驱动器已经成为主流。除了NetApp FAS3270控制器板载的光纤通道接口仍为4Gb/s(可选8Gb/s FC HBA卡),Pillar Axiom 600的RAID功能位于后端的Brick上属于例外。
我们再看看Sun ZFS统一存储的软件特性。文件访问协议支持NFS v2/v3/v4(pNFS)和CIFS等,块存储协议除了iSCSI和光纤通道之外,还有不多见的IP over Infiniband和RDMA over Infiniband。Oracle使用ZFS文件系统提供了4种级别的数据压缩和Inline(线内)块级重复数据删除。强大的CPU计算能力和大容量内存用于数据比对的历史缓冲区,在未来出现的支持压缩/去重等主存储数据精简技术的设备中可能会成为一种趋势。
在这个示意图的最右端,Sun ZFS 7420c的SPC-1测试配置有34,811GB的未用存储容量,因此其空间利用率(即总ASU容量在物理容量中所占比例)仅有28.22%。这应该与ZFS文件系统无关,而可能是人为(短击硬盘)提高IOPS性能所致。
Sun ZFS 7420c在如此“堆硬件”的情况下,使用280个驱动器运行SPC-1测试结果为137,066.20 IOPS.尽管其每驱动器IOPS仅次于NetApp FAS3270A在本次对比中位居第二,不过考虑到磁盘镜像之后的空间利用率仅有28.22%(华赛S5600T为45.38%),这个性能效率数字或许又打了一定的折扣。看来存储系统的缓存也不见得是越大越好,尤其是像Sun 7420这样内存容量已经达到高端阵列水平的产品。