1、体系结构
在当前存储市场上,这一类的磁盘阵列种类繁多,数量巨大,同时也在质量和性能上也存在着巨大的差距,价格跨度也很大。其代表产品有IBM DS系列、HP EVA系列、EMC CLARIION系列、HDS Thunder 95系列等等。
至于IBM,采用的是传统的对称体系结构,采用其强大的570 pserver作为存储的控制器,是典型的IBM SHARK系列产品。存储的管理OS运行在控制器内,CPU与内存也都在控制器内。其高端型号DS-8300产品的每个控制器是4个CPU的P570小型机,双控制器最大配置CPU数量为8个CPU。但DS-8000系列产品具备了许多高端产品应有的特征,比如主机端口最大可达128个2Gb FC,磁盘接口多大64个,缓存容量也可以达到256GB,这些特性使其可以匹敌多控制器存储系统,因此,DS-8000系列也是IBM公司参与高档存储产品市场竞争的主要武器,而且和竞争对手高档产品相比其价格优势非常明显。IBM的这种方式的体系结构在可靠性方面是比上面的体系结构要欠缺一些的,与现有的中端存储的结构很相似
现在比较先进的高端存储是基于多控制器磁盘阵列,而双控制器磁盘阵列由于控制器只能配置两个,不能在同一磁盘阵列内配置更多控制器,在一定程度上局限了其数据处理能力。多控制器磁盘阵列便应运而生,其体系结构一般分为三层
通道控制器:管理主机和CACHE之间I/O及运行基于存储的软件解决方案。
全局缓存控制器:巨大的非易失性CACHE,它是系统性能超群的基础之一。
磁盘控制器:管理CACHE和物理磁盘组之间I/O及运行基于存储的软件解决方案。
在实际应用时,每层的控制器至��成对配置,提供全冗余特性,实现无单点故障。也可以配置多对,在性能上进行成倍扩展。比如EMC的DMX-3最多可以配置8个前端控制器(Channel Director)、8个缓存控制器(Memory Director)、8个后端控制器(Disk Director),整个系统中处理器数量最多可达130颗。多级控制器分工协作,系统整体性能因而可以获得最佳扩展性。更重要的是,在多控制器体系结构基础上,提供了许多独特存储软件解决方案。该档次产品是大型关键业务数据中心的首选。
HDS与EMC都采用了多点冗余的复合式体系结构,有多个专用的存储控制器,如专用的前端控制器,专用的后端控制器,并且以专用的 CACHE 控制器为核心,CPU集成在前/后端控制器中,操作系统以微码方式集成在硬件中,并可以方便的升级维护。在这种结构中,前端,CACHE,后端均可实现系统均衡,并多点冗余。所以,失败一个点的时候,影响量比较小。不过,还有一点差别的是,HDS前后端连接到核心CACHE,是采用交换方式,而EMC是采用直连方式,所以也叫直连矩阵(Symmetrix Direct Matrix Architecture),EMC Symmetrix DMX 利用其点对点连接可以完全消除其它设计方案所具有的总线仲裁和交换系统开销延迟
2、后端连接与RAID
IBM采用交换方式连接磁盘与后段卡,而HDS与EMC采用环路结构,在交换结构中,每个磁盘都有自己的线路连接到后端卡(口),所以,不容易产生后端瓶颈。至于环路设计,则是现在的流行设计,但是,一个环路上的盘不能太多,否则,容易产生性能瓶颈。如,一个2Gb的光纤环路,一般接到50-60颗盘,已经都达到负载极限了。而一个4Gb的环路,如果考虑翻倍的话,也就最多可以接100-120颗磁盘。
不过,上面评估磁盘个数的时候,是根据流量,也就是带宽来考虑的,如果在OLTP环境中,我们��需要考虑IO个数,因为光纤通信的规则,在同一个时间,一个环路中只能有一个通信量,也就是一个IO。不过幸好的是,光纤传送的速度是非常快的,在比较慢的磁盘面前,一般都不会有性能问题存在。我们可以想象为光纤环路是一个运行非常快的传送带(但是这个传送带很奇怪,每个时间最多只能送1个任务),而磁盘则是这些传送带旁边的工人,负责从传送带上面拿到自己的工作,把工作完成以后,再把结果放到传送带上,工人在工作期间(类似磁盘寻道时间),传送带是不需要等待的,可以传送别的工人的任务。
因为考虑到环路的可靠性与性能问题,HDS与EMC的高端存储都是双环路设计,每个磁盘都有2个环路可以达到,而且,这两个环路可以负载均衡的工作。另外,为了避免一个环路,或者一个磁盘太忙,RAID组的设计也有特殊的要求,一个RAID组中的磁盘,必须跨越在不同的环路上面。
为了扩大容量,又不影响性能,存储厂商只好不断的增加环路的个数,一般情况下,典型的OLTP环境中,一个2Gb的环路中,磁盘个数最好也不要超过32颗,如果想增加更多的磁盘,最好也增加环路个数。
3、CACHE设计
HDS与EMC都是以CACHE为核心,并且CACHE size一般比较固定,如64K,256K等等,如果这样的CACHE size在运行很离散的OLTP数据库应用的时候,因为数据库的block size一般都比较小,如8k、16K,所以,容易引起CACHE size的浪费。因为存储的一个CACHE size单元中,一定要保存相临的磁盘连续空间。
而IBM因为采用OS的内存来做存储的CACHE,所以,CACHE size就���页面大小,默认为4K,这样的CACHE size对小的IO是很适合的,但是对大型的IO操作,或者是太大的CACHE size���可能会有额外的管理负担。
比较大的CACHE size,如64K的CACHE size,一般是因为考虑到高效的算法设计以及满足大部分应用需求而设计的,如根据概率统计的数据,满足99%的应用等等,在一些特定的非常小的,离散的应用上,则不一定适合。
至于CACHE算法,HDS与EMC基本都是LRU算法,而IBM则采用改进的ARC算法。在CACHE保护中,IBM与HDS都是写CACHE镜相+电池CACHE保护,而EMC则是读写全局CACHE的全镜相+电池CACHE保护。在写CACHE镜相的规则中,读写CACHE是分离的,写CACHE镜相,读CACHE不镜相,一份数据可能同时存在与读/写CACHE中;而全局CACHE,没有读写之分,CACHE公用,只有不同的链表来决定那些数据是写CACHE,很类似Oracle的data buffer。
二:IBM DS8000系列
IBM DS8000沿用了典型的对称处理结构,利用其高性能与高可靠的P570作为阵列的双控制器,两台570互相做冗余,形成一个双active的HA结构。在处理器上也是采用其先进的Power5系列的CPU。另外,8000系列的存储也支持逻辑分区是利用P570支来持逻辑分区(LPAR)。
在结构图的最上方,就是阵列负责对外的光纤卡通道或者是主机适配器,一般高端阵列中都叫前端卡(前端口),支持4Gb带宽(bit), 在结构图的最下方,就是磁盘适配器或者是RIAD适配器接口,一般高端阵列这里叫后端卡(后端口),IBM与其它存储这里有点不一样的是,它没有采用典型的环路设计,而是采用了交换设计,也就是说,后端卡通过内部交换机其实是可以访问到每一块磁盘的。
因为IBM采用了570作为8000系列的核心控制器,所以阵列的CPU与内存也都是在P570内部控制的,而且阵列的可靠性是需要570来保证的,整个DS8000阵列的稳定性与处理能力是依赖于P570 CPU的���力。
二:EMC DMX3系列
DMX3是在早先SYMMTRIX 2000/3000系列上发展过来的,基本的体系结构没有改变,但是CACHE算法却做了一个比较大的改动,在以前的高端系统中,EMC是不采用写CACHE镜相技术的,而别的厂商基本都采用写CACHE镜相、读CACHE不镜相、读写CACHE分离这样的技术。那么,他们分别采用什么样的方式来保证写CACHE数据的正确性呢?
比如EMC的DMX-3最多可以配置8个前端控制器(Channel Director)、8个缓存控制器(Memory Director)、8个后端控制器(Disk Director),整个系统中处理器数量最多可达130颗。多级控制器分工协作,系统整体性能因而可以获得最佳扩展性。在DMA架构最多支持8个通用缓存控制器,而每个控制器负责控制4个独立的缓存模块,8个通用缓存控制器可以同时、并行地访问到所有32个相互独立的缓存模块。每条通道的传输速率为500MB/s,因此DMA架构中缓存间带宽为16GB/s。
第一,因为CACHE肯定都是电池或者UPS保护的,可以保证不掉电,或者是掉点以后系统还能维持一定时间,如果在一定时间内还没有供电,再把数据写到硬盘上,防止丢失。
第二,因为写cahce镜相保护数据也很简单,就是防止CACHE损坏,如果坏掉一个CACHE,还有另外一个,只要马上把坏的CACHE标记起来不用,镜相到新的地方即可。
第三,早先的SYMMTRIX系列采用了一种类似RAID5的电极校验法来对CACHE进行校验,保证数据的可靠性,提高CACHE的利用率。但是,在新的dmx3中,又采用了一种完全不一样的镜相方法,读写全局CACHE全镜相,���就是说,如果100G CACHE,有效CACHE是50G。
那么,“全局读写CACHE全镜相”与“读写CACHE分离,写CACHE镜相技术”的差别:
1、全局CACHE中,读写是混���一起的,类似oracle的buffer,读可以直接在一个CACHE中命中。
2、读写分离中,如果一个要读的数据在写CACHE中存在,需要先从写CACHE拷贝到读CACHE,可能存在多份。
3、读CACHE一般远远大于写CACHE。
除了CACHE算法差别,我们从体系结构图中,还可以发现,EMC一样以CACHE为核心,有前段卡有后端卡之分,如一个前端卡上有8个光纤接口,可以连接主机,一个后端卡上同样有8个后端口,用来连接磁盘。磁盘与HDS一样采用光纤环路方式。
不过,EMC前端与后端卡连接CACHE的方式与HDS有很大差别,HDS是通过内部交换方式连接,而EMC是直接连接,每个卡与每个CACHE板之间都有数据通道,所以,EMC的连接方式又叫直连矩阵。
另外,EMC的RAID方式与HDS也很不一样,HDS的RAID方式很死板,如RAID10就支持2D+2D,其实所谓的4D+4D不过是把2个2D+2D简单的连接在一起。而EMC中,RAID方式比较奇特,如做10,他们先是把磁盘划成很多道(叫split,如8split,10split,16split等等),每一split可以镜相到一个磁盘。如一个磁盘有16个split,则3.8G/split,那么这个磁盘最多可以镜相到其它16块磁盘上,同样,其它的盘也可以交错镜相到这里,形成一个比较大的磁盘pool。之后,EMC在每个split上做strip,形成metalun,这才是主机最后使用的LUN,对应到一个PV。
三:HDS USP系列
USP已经发展到多模块化设计了,以CACHE为核心,并且cpu集成在前端与后端模块中,操作系统则集成在微码之中。前端卡与后端卡连接CACHE,是要经过一个交换机的(Crossbar Switch��,交换机最小可以是2个(冗余需要),最大可以是4个,因为所有的数据都要经过前端卡/后端卡,再经过交换机到CACHE,所以switch也是一个核心部件,而且数据流量会很��。CHA(channel adapter,9970/9980也叫chip),USP的前端卡,上面可以有多个(如8个)前端口,是连接主机与存储阵列CACHE的通道,一般默认是2Gb通道,现在可以配置到4Gb通道。DKA(disk adapter,9970/9980叫acp),USP的后端卡,上面一般可以有多个(如8个)后端口,连接阵列的磁盘控制器(DKU)与CACHE,现在还是2Gb的后端光纤环路通道。在USP的后端,磁盘放在DKU的HDU中,每个HDU最多可以放16个硬盘,而USP的一个环路最多可以接3个HDU,则一个环路最多可以是48块硬盘。
注意,所谓前端卡与后端卡,只是叫法上的分别以及功能上的差别,物理位置可以是在一起的。另外,前端卡与后端卡总是成对出现。
USP最核心的就是CACHE了,有控制CACHE与数据CACHE之分,控制CACHE也可以叫shard CACHE,保存着阵列的配置信息以及数据CACHE的地址信息,在前端口过来寻找数据的时候,会先经过这里,如果能找到,则去数据CACHE,如果找不到,则可能需要磁盘读取。
数据CACHE也叫标准CACHE,如果采用4G的内存标准,最大可以到128G,而如果采用8G的内存标准,可以到256G,数据CACHE是整个阵列的核心所在。USP的内存CACHE最小单元叫segment,固定为64K,最小使用单元叫slot,在有些版本=4个segment=256K,有些版本则=1个segment=64K,因为这个slot中在磁盘上的数据必须是连续的,所以,太大的slot可能对离散度高的oltp应用不是太适合。
CACHE的命中率是一个阵列的响应速度以及处理能力的一个重要体现,因为CACHE命中的话,返回速度是非常快的,而不命中的话,就需要去磁盘寻找数据,可能会比较慢。而CACHE的命中���,与应用访问规则,数据分布规则都有很大关系。
该贴被刘伟编辑于2013-7-2 11:38:57