基于集群技术的模块化存储器的设计思想
0 g1 s# j2 Q/ Y5 s, 5 U
根据我们前文的分析,基于阵列控制器技术的存储器历经软件RAID,硬件RAID 卡和外置式RAID存储器三个步骤的发展,终于成功应对了一个主要的挑战——把存储器和主机逐步地分开,这是存储器工业发展非常重要的一步,标志着存储器工业终于独立了。然而在独立后,存储器要解决的下一步的问题是如何做大做强,设想一下我们从DAS演进到SAN以后现在常见的存储网络架构一般是这样的:数据中心存在多台服务器(其中运行核心应用的服务器会跑各种cluster集群软件),每台服务器配置了两块或者更多的HBA,通过两台SAN交换机(或者两个SAN Fabric)连接到一台存储器上面,而这个存储器采用的多半是我们谈到的基于集群技术的模块化存储器架构(见下图)。 + @% D) g1 D1 ^( ]7 l/
, \% h- M& R: j* m# v& d5 C& B为什么会这么设计呢,这里就出现了一个可靠性的问题,我们经常会听到很多厂商在吹嘘自己存储器产品的高可靠性时常用到一个所谓5个9,或者说4个9之类的说法,这是什么意思呢?这里的几个9是指全年如果换算成分钟数,有百分之多少的可能性是可以在计划内安全运行的。比如说某个存储设备提供99.995%的高可靠性 ,我们可以具体换算一下365*24*60*(1-0.99995)=26.28,也就意味着平均每一年大概是26分钟的非计划宕机时间,而如果说集群提供99.998%的高可靠性,则一年大概是10分钟左右的宕机时间,而很多厂商经常吹嘘的所谓5个9,则是指一年只有5分钟左右的宕机时间,每年只有5分钟(一般在本地数据中心里面,做到5个9算是最高境界了),我的乖乖,挺厉害的吧。
0 J7 z- W$ C! A1 }# ~" @有看官一想,敢情这卖的存储器的九越多就越高档,就像高纯度黄金饰品一样“九”越多就卖得越贵,那干脆下一步弄个6个9、7个9,99个9?打住,坚决不能这么瞎想了,存储器毕竟也是个有技术含量的高科技行业,当然不能学习侯总“劳斯丹顿”的卖法了。
# ^7 Z! w6 \: O0 e. p. J+ ^, P. y4 l: [+ m! f
+ w4 n' W, y& C" A
那么这个几个9到底有怎么个说法呢?其实这是来自于IT业界的一些共识,一般来讲高品质的服务器(IA芯片或者RISC芯片)一般最多能够做到4个9的安全性,为了达到5个9的安全性,系统架构师们会把至少两台服务器通过集群软件(如微软的MSCS,HP MC ServiceGuard,IBM HACMP,Veritas的 Clluster软件等等)组成一个cluster(集群)。这样即使一台服务器发生了故障(软件层面或者硬件层面)down机,集群里面另外一台服务器也会马上顶上去,通过两台服务器共同完成任务提供更高的安全性和可靠性,这样就从4个9进化到5个9进一步提高了可靠性。
* D* \$ _4 D+ i) v' m) C* $ \: P
我们说过,存储器也是计算机,顺着这个思路往下面走,我们只要把两个用作存储器的专用计算机(这里称之为为存储控制器或者SP storage processor)组成一个集群,两个控制器同时接到磁盘柜(前面说过叫JBOD),把存储控制器和磁盘柜装在一个大盒子里面卖给用户,那么一个具有5个9的高可靠性存储阵列就出现了。采用这种架构的存储器主要包括以下部分:存储控制器2个组成集群和可以根据用户容量需求一个个添加磁盘柜模块,因此我们称之为“基于集群技术的模块化存储器”。 0 b4 H% M2 E/ f0 U+ _. R/ ]4 q
8 B% N/ I& d/ i. ?9 Y* J
集群模块化存储器设计经常会碰到的问题 ) K) e; h3 ? ~2 }
6 L. Y: o, V- }7 _6 I1 Y
当然,这种基于集群技术的模块化存储器的设计也是一步步不断完善的。早期模块化存储器设计上有以下缺陷: & c8 O. S, ]- X. U1 Z
1、: d+ B3 . w6 R7 G% ?9 b
控制器处理能力不够:以前的集群式模块化存储器每块控制器一般最多支持几十块磁盘,随着磁盘容量变得越来越大而且现在往往最大要支持到数百块磁盘,控制器的处理能力要求越来越高。因此如何提升处理器的能力变成一个关键因素。
2、
早期两个控制器共享一个大背板从而并不是完全独立,往往是装在一个大机箱里面的两块存储控制器(又叫SP storage processor)。在绝大多数情况下当存储控制器/SP级别出现问题时,可以由另外一个SP顶上。但是如果是这个共享的大背板出现问题,则整个存储器需要停机维护。因此在选购存储器时不能一味图价格便宜,我们需要仔细观察其控制器级别的冗余性;
3、9 t( c4 v' `. z! o2 j4 E# b) G9 R
有的存储器两个控制器确是完全独立的两个设备,可是每个控制器上面只有一个电源或风扇。这种设计往往会带来潜在的可靠性问题,要知道相比计算机电子设备,电源和风扇出故障的概率要大得多,而一旦电源或者风扇出了问题,你就需要把原来归属在该控制器上的lun全部映射到另外一个控制器上,这样往往会带来系统的down机,降低整个存储系统的可用性;
4、
存储器控制器间互连只有一条线缆或者互连带宽不够。控制器互连的线缆作用非常重要,一来传递存储控制器间的控制信息,二来传递控制器间的心跳信息(做HA检测用),三来实现数据的跨控制器传输。当只有一条线缆且传输中断,两个控制器间由于信息无法交流,将导致存储停机;而如果互连线缆带宽不够也很容易出现“乒乓”效应(当然这也和存储管理员不正确的设置有关,我们将会在后文中详细阐述)。
$ ] h; C8 F4 ^* F0 ]
下文中我们将从以下几个方面讨论模块化存储器的提升方法1 O I1 ?' I& d4 g% ^
1、
存储控制器设计方面:更快更多的处理芯片和更多的内存
2、% @! D2 z# L3 K. I! ]
存储控制器设计方面:更先进的专用ASIC芯片加速
3、- k u; N1 S4 p. Z/ p
存储控制器设计方面:更先进的控制器间互连技术
4、+ E3 h7 `1 K. N0 M2 R
前端主机通道接口设计方面:更快的存储器前端主机连接
5、- U) A; w! M9 J
前端主机通道接口设计方面:前端主机接口更多协议的接入能力
6、
后端磁盘通道设计方面:磁盘后端采用更多的并发通道
模块化存储器自我提升之道:更快更多的处理芯片和更多的内存
前文谈过,存储器提升控制器性能成为各家厂商的头等大事,而且我们也说过存储器本质上也是一台计算机(如果你能找到早期的Clarion 3000、4000系列存储器,你可以发现机器背面都有VGA的接口),因此采用更快和更多的处理芯片成为一个很好的办法。为了节省成本,模块化存储器一般多采用通用处理器(如Intel或者AMD芯片),升级到更快的CPU处理器可以明显地提升,或者通过在每个控制器上面部署更多的CPU通过SMP架构来提升综合处理能力(不仅仅是做RAID保护,还要负责克隆、镜像、容灾等软件的运行);而采用更多的内存(在存储器里面称为缓存)可以更好的做到常用 IO数据的加速和多个存储器软件的并行运行。因此存储器采用更快更多的通用处理器芯片和配置更多的内存是最常见的提升存储器性能的方法,从硬件层面说白了就是PC服务器的升级,代表产品是EMC的Clarion(或者称为CX系列)和Netapp的FAS系列。: o. a' S' \8 g2 m
* r9 p5 l6 Y8 E9 g" b2 g9 j
EMC模块化存储器的Clarion系列系1999年收购DG公司得来,国内用户最先碰到的多半是其4500和4700系列(也有很少量的3000系列),但是真正让EMC在业内扬名立万的个人认为还是2002年发布的CX200/400/600系列产品(同年EMC和DELL结盟也发布了DELL /EMC联合品牌,进一步加强在PC服务器市场的CX存储器的认知程度和占有量)。
我们来回顾一下当年EMC CX系列发布的时候的一些资料,可以说当时EMC当时采用了一种全新的思路重新定义了模块化存储市场,这就好像买车有A级、B级、C级车一样把模块化存储器细分为3个档次:分别是30块磁盘、1GB缓存配置的CX200,60块磁盘、2GB缓存配置的CX400和240块磁盘、8GB缓存的CX600,越高档的CX采用更加高主频或者更多个CPU,比如CX400存储器每个控制器采用了2个800MHz的Intel CPU,而最高的CX600存储器每个控制器用到了2个2GHz的Intel CPU,让用户根据需求和预算对号入座。
- l/ h; o6 i, ]3 C: o% * x
. m# X0 V7 f! h7 L
EMC CX定义了一种全新的判断存储器性能档次的标准,用一种类似于PC服务器竞争比较的思路,即越高档的存储器也就是采用越快、越多的通用处理器和越多的内存、越多的磁盘后端接口和主机前端接口,为了进一步佐证这种理论,EMC为CX不同档次的产品提供了不错的IOPS指标(通常用于衡量OLTP交易能力)和MB/sec吞吐量指标(通常用于衡量顺序IO吞吐量)进一步展示其优点。
3 s H; [. L$ D: l, i
& l" [( @* m0 }) F+ f" @& O
俗话说不怕不识货,就怕货比货,EMC又进一步列出了和各家竞争厂商的对比,见下图,通过所谓真金白银的点对点对比,可以说CX200、400、600当时在模块化存储器市场取得了极大的成功。
当然EMC在 CX市场当时一炮打响和当时其主要竞争对手IBM/HP在模块化存储线面临到不少问题也是有关的。2002年HP正着手收购Compaq整合两家的模块化存储器产品EVA系列和VA系列,价格定位策略方面明显滞后。而IBM在01年曾经OEM过原Compaq公司的存储产品,在Compaq被IBM的最大对头HP收购后,开始转向到OEM LSI的FastT系列(即后来的DS4000系列),短期内市场认可度难以建立。可见天时、地利、人和三点对于任何一款成功的产品都是非常重要的。
到了2004-5年,EMC又再接再厉,接着推出了CX300/500/700系列,相对于上一代的CX200/400/600,升级后的CX系列进一步升级了其存储器控制器的CPU/内存和前后端接口数量,其各项指标又了更进一步的升级。
/ q% ]& m5 [, R: ~8 V
: W u/ r9 Y/ h! k3 n
时间飞逝如电,转眼到了2008年,EMC再接再厉,推出了CX4系列,进一步把CX产品线细分成4个档次,我们来看看EMC官方对于CX4的亮点的介绍
1.
UltraFlex 技术可提供双协议功能、用于在线扩展的可热插拔 IO 模块,以及支持未来技术的能力。
2.
与前几代产品相比,采用 64 位 FLARE 和 Intel 多核处理器的 CLARiiON CX4 体系结构在性能和规模方面都提高了一倍。
3.+ q, ^" Z1 l- c0 P5 A% r! ?& ?' `
通过 RecoverPoint/SE 集成实现了并行本地和远程 (CLR) 复制。
4.! \$ A* Q& N) p$ C; f: s
CLARiiON 是第一款支持将闪存驱动器用于第“0”层存储的中端产品,IOPS(每秒输入输出次数)可以提高 30 倍。
5.
驱动器降速、低功耗 SATA II 驱动器以及自适应冷却是 CLARiiON CX4 采用的 3 种提高能效的新技术。
/ Z2 I4 g- q& H. W' C9 l1 Z
…………" g$ p# q8 P4 r. L* x
从这里我们可以看出来,EMC一如既往地坚持了其CX的设计思路:其控制器通用处理芯片从早期的Intel P4甚至升级到了Intel的64位的多核处理器,缓存从早期2GB升级到了32GB,可以非常轻松地支撑更多的IO操作,运行更多的数据保护程序;控制器提供更多的主机IO接口(同时支持内置的FC和iSCSI接口)和更多的后端磁盘接口,整体的吞吐能力也会大大增强;另外也支持最新的SDD磁盘,可以提供更快的IO响应能力。因此笔者认为EMC CX产品是这种设计思路的典型代表。 p- m0 a& T6 F* k; Z$ n/ g4 A
当然,业界另外一家赫赫有名的存储器公司Netapp在硬件体系架构设计方面也是走的同样的设计思路,从90年代的F740, F760 and F630,到后来的F840,F880C,再到现在流行的FAS3000系列和FAS6000系列,其机头控制器的配置也是和CPU发展的时间与时俱进的。唯一不一样的是Netapp FAS系列控制器历经了一次从采用Intel CPU转为采用AMD CPU的过程。这不禁让我想起业界一个好笑的故事,当时碰到Netapp的做跨国制造业的销售正愁眉苦脸,一问才知道原因:以前Intel在中国设有很多厂区,广泛部署Netapp的存储器,而在Netapp从Intel芯片改换成AMD以后,Intel厂区便慢慢改用了EMC的存储器了,这么大的客户丢了,自然生意难做了很多。当然AMD的厂区开始增大了对Netapp存储器的采购,可显然AMD的厂区规模要小于INTEL的厂区,其对于存储器的采购量也要远小于Intel。可见同样采用通用处理器提升性能的思路,各家厂商也是有细微的差别。) n- j' [$ O! q% R
附:笔者列出这些说明并不是为了给哪家厂商做广告。每款设备都有各自的优缺点,而且除了硬件体系架构设计以外,各家存储软件的设计思路也有很大区别,广大用户在采购设备时请充分沟通,仔细斟酌各家的优缺点做出独立判断。
模块化存储器自我提升之道:专用的ASIC芯片加速, v5 t! v$ a6 R' m! b6 L
+ n' j: }! \6 d' i% O5 ^+ B
看完上一节后,估计不少看官在想,难怪不少存储厂商频频升级存储器产品,原来是CPU换代了,不得不这样做,以后要判断存储厂商要不要升级换代了,只要看看Intel、AMD两家在干嘛不就可以了吗。这话有一定道理,但也不是放之四海皆准,也有不少模块化存储器的是另辟蹊径来提升性能,通过专用的ASIC 芯片来做到。
* @# H5 ]. o% p3 T4 H1 ~* i2 X
- w9 q9 d3 H6 R# B
通过ASIC芯片来提升性能的典型厂家代表是LSI(又称Engenio),可能很多不做存储的大侠们都很少听过这家公司,可是这家公司在圈内可真是鼎鼎有名,我们甚至可以说EMC系和LSI系在模块化存储器市场影响力就像80年代末90年代初香港歌坛的谭咏麟和张国荣一样(当然其他家的也不错,只是影响力没有这么大罢了)。
, l. v l, O& J' M1 b2 Q* P
和EMC市场威风凛凛不一样, LSI相对低调,很少直接面对客户,而是躲在幕后,把产品OEM了很多主机厂商,做为其整体解决方案的一部分,包括IBM(OEM后先叫FAStT系列,后来改名DS4000系列),SUN(OEM后称做SUN 6000系列),SGI等国际大牌厂商都在oem LSI的存储器产品。国内的服务器厂商如宝德、华赛等也OEM LSI的产品。) w. C& q- a; H8 Q% i
2 ~ E: _1 E4 {) ]; X2 b/ q
除了多年来一直坚持以OEM为主的运营模式外,LSI这���多年来能够被这么多主机厂商看中,肯定是有几把刷子的,这几把刷子中很重要的一把就是在存储控制器的设计思路上,和通用EMC/NETAPP服务器的架构设计不同,LSI的存储控制器主要包括两个部分:第一个部分是常见的通用CPU,通过这个CPU 来运行存储控制器的操作系统(前文就说过,存储器也是计算机,计算机有操作系统,存储器当然也有自己的操作系统);而第二个部分是采用ASIC芯片而缓存处理存储IO,通过专门针对存储IO特点设计的专用芯片提升整体性能。
; R" X ?4 `1 h1 x
我们来看看ASIC到底是个什么东东,ASIC全称Application Specific Integrated Circuit,即为特点应用设计的专用集成电路。/ j+ R5 b E9 k& l% A9 u
& r4 ]# T5 j( z) K! r& `
目前,在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。2 z' P/ `5 B8 X, i( @" N9 W
ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC芯片运行速度更快。半定制使用库里的标准逻辑单元(Standard Cell),设计时可以从标准逻辑单元库中选择SSI(门电路)、MSI(如加法器、比较器等)、数据通路(如ALU、存储器、总线等)、存储器甚至系统级模块(如乘法器、微控制器等)和IP核,这些逻辑单��已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。! M9 j; g9 H) ^ v* m! z
1 b* y1 M5 x* `3 o1 n$ ^
现代ASIC常包含整个32-bit处理器,类似ROM、RAM、EEPROM、Flash的存储单元和其他模块. 这样的ASIC常被称为SoC(片上系统)。
) A8 T! ~2 f) E2 H0 M9 j6 s
我们来看下面的例子,IBM在2003年模块化存储器市场和EMC CX600/700,HP EVA5000竞争得最多的一款存储器就是FAStT900,这款产品就是OEM自LSI的经典的5884控制器。要知道当时EMC CX600每个控制器采用的2个2G的Intel CPU,而CX 700采用的是2个3.2G的Intel CPU,其他存储厂商销售人员攻击IBM FAStT900最常见的一招就是说其控制器偷工减料,因为其竟然只配置了一个Intel® Pentium® III 850 MHz processor,听上去确实蛮有道理,别人用两个CPU,你才用一个CPU,而且主频也很低,甚至连别人主频一半都比不上,这也忒不上档次了吧….% [! i( M' ~9 o a+ P( H) b
/ x& f4 H# W9 W: u
然而,如果我们仔细看看LSI 5884的datasheet,就会发现以下对于控制器的表述:
) X' ]$ r5 @/ o+ n! a6 {
{8 Z9 F& K- o+ _2 i! I; Z! v
LSI 5884 Controller Specifications 控制器指标描述 + I" \% s8 e' O* S3 ~& t8
1 L( V% z# H# g( l3 j
Two specialized processors: 两个专用处理芯片
•
Custom ASIC with built-in hardware XOR engine for RAID parity:专门处理RAID硬件XOR奇偶计算的定制化的ASIC芯片;
•
Intel® Pentium® III 850 MHz processor manages I/O movement and instruction sets:采用Intel® Pentium® III 850 MHz processor芯片处理IO移动和存储器通用指令集;
•
Data cache: 1 GB RDRAM (battery backed):1GB的带电保护的RDRAM作为数据缓存;
•
Processor memory: 128 MB SDRAM:配置128MB SDRAM作为处理器专用缓存;
•# R: C7 I$ H- , i& ~" g
Memory bus bandwidth (ASIC to data cache): 1.6 GB/sec:ASIC芯片到数据缓存的内存带宽是1.6GB/sec
•
Data bus bandwidth (ASIC to external I/O): 1.6 GB/s:ASIC芯片到外部的带宽也是1.6GB/sec;
$ b' u/ s% u" w+ K6 K5 M
这样细细一看,我们恍然大悟,原来LSI系列的存储控制器里面最核心核心的部分是它的ASIC芯片,就像什么XX记香辣蟹里面的独家调料一样,这个ASIC里面到底是什么东东外人一时很难讲清楚,但是它是能够提高存储器性能(或者提升香辣蟹口味)的关键。3 E( K% z% \+ T8 V+ a
& q8 q7 Y: ]8 ?( ^, x8 D! R
随着时间的推移,LSI系列的存储控制器不断推陈出新,前端接口从1Gb、2Gb、4Gb到现在的8Gb甚至直接Infiniband接口,缓存大小也从单控制器1GB发展到32GB(到现在为止在模块化阵列中是支持缓存容量最大的),但是其架构方面一直保持不变,即通过通用处理芯片和专用处理芯片相结合的方式,提升存储器的整体处理性能。
$ b, U/ [" e0 ?5 [4 `
下图是现在IBM热卖的DS4800存储器的控制器架构图,尽管说其通用处理芯片已经与时俱进地升级到了Intel 2.4G XEON芯片,但其关键核心部分还是中间那个XOR芯片。
除了LSI外,HDS的AMS系列存储器,3PAR公司的Titan系列存储器也采用了类似的思路,通过ASIC芯片来提升性能。
* n( @( S# ]. c6 y
前文说过ASIC芯片是一种专门目的而定制的芯片,而还有一个叫FPGA的东东也出现在存储控制器里,FPGA是一种可编程门电路,算是ASIC的近亲,一般通过原理图、VHDL对数字系统建模,运用EDA软件仿真、综合,生成基于一些标准库的网络表,配置到芯片即可使用。它与ASIC的区别是用户不需要介入芯片的布局布线和工艺问题,而且可以随时改变其逻辑功能,使用灵活。在目前的电子设计中,常使用硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,烧录至 FPGA 上进行测试。当测试完成后,再制作ASIC。存储业内有一个专门做高性能NAS的厂商叫Bluearc就是通过采用FPGA来提升NAS机头的文件处理能力,最近超级3D大片据说有采用了其设备。& ]6 w2 Y+ ]- l% m" @$ Z
由于一般存储器控制器多基于通用处理器架构,自然会受限于其南北桥的bus总线限制,我们再来看看基于BlueArc的NAS存储器基于FPGA可编程门电路的设计思路,其采用并行体系结构,根据文件共享服务的IO细分为TCP/IP协议解析、NFS/CIFS拆解包、文件服务管理、存储服务处理等几个部分,每个部分的工作分散到响应的FPGA芯片处理(每个部分也有单独的内存模块配合IO处理),自然能够做到高效。
+ }% S5 s# d6 M7 z4 O
可以说,基于ASIC/FPGA的芯片加速IO是一种在IT界经常采用的方式,高效且省电,不仅仅在存储器行业,在网络设备行业更是被广泛采用,比如当年赫赫有名的Netscreen防火墙、还有很多高端路由器等等….! t& ?# J2 G+ R. r) n' w; r6 p
3 @- _& V: r* ^+ A( Y6 O% j F
前文我们也说过,ASIC芯片就像香辣蟹店或者火锅店的独门配料一样,属于独门暗器。当然各位读者也不能仅仅听说有个神秘的ASIC就认为是个好东东(独门配料也不是说每位食客都喜欢),因此建议在采购该类存储设备时都看看相关行业的成功案例,有条件的也可以搭个环境测测,看看这个存储控制器里面的 ASIC芯片的加速功能对自己的应用到底是不是管用。