ibm ds8000
hds usp
emc dmx3
hds与emc都采用了多点冗余的复合式体系结构,有多个专用的存储控制器,如专用的前端控制器,专用的后端控制器,并且以以专用的 cache 控制器为核心,CPU集成在前/后端控制器中,操作系统以微码方式集成在硬件中,并可以方便的升级维护。在这种结构中,前端,cache,后端均可实现系统均衡,并多点冗余。所以,失败一个点的时候,影响量比较小。不过,还有一点差别的是,hds前后端连接到核心cache,是采用交换方式,而EMC是采用直连方式,所以也叫直连矩阵。
至于IBM,采用的是传统的对称体系结构,采用其强大的570 pserver作为存储的控制器,所以,存储的管理OS运行在控制器内,CPU与内存也都在控制器内。这一种体系结构是应当是说与现有的中端存储的结构很相似,IBM的这种方式的体系结构在可靠性方面是比上面的体系结构要欠缺一些的。
2、后端连接与RAID
IBM采用交换方式连接磁盘与后段卡,而HDS与EMC采用环路结构,在交换结构中,每个磁盘都有自己的线路连接到后端卡(口),所以,不容易产生后端瓶颈。
至于环路设计,则是现在的流行设计,但是,一个环路上的盘不能太多,否则,容易产生性能瓶颈。如,一个2Gb的光纤环路,一般接到50-60颗盘,已经都达到负载极限了。而一个4Gb的环路,如果考虑翻倍的话,也就最多可以接100-120颗磁盘。
不过,上面评估磁盘个数的时候,是根据流量,也就是带宽来考虑的,如果在OLTP环境中,我们还需要考虑IO个数,因为光纤通信的规则,在同一个时间,一个环路中只能有一个通信量,也就是一个IO。不过幸好的是,光纤传送的速度是非常快的,在比较慢的磁盘面前,一般都不会有性能问题存在。我们可以想象为光纤环路是一个运行非常快的传送带(但是这个传送带很奇怪,每个时间最多只能送1个任务),而磁盘则是这些传送带旁边的工人,负责从传送带上面拿到自己的工作,把工作完成以后,再把结果放到传送带上,工人在工作期间(类似磁盘寻道时间),传送带是不需要等待的,可以传送别的工人的任务。
因为考虑到环路的可靠性与性能问题,HDS与EMC的高端存储都是双环路设计,每个磁盘都有2个环路可以达到,而且,这两个环路可以负载均衡的工作。另外,为了避免一个环路,或者一个磁盘太忙,RAID组的设计也有特殊的要求,一个RAID组中的磁盘,必须跨越在不同的环路上面。
为了扩大容量,又不影响性能,存储厂商只好不断的增加环路的个数,一般情况下,典型的OLTP环境中,一个2Gb的环路中,磁盘个数最好也不要超过32颗,如果想增加更多的磁盘,最好也增加环路个数。
不过,怎么来说,交换结构是要优于环路设计的,所以,这里IBM更好一些。
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。
原文链接:http://www.ixdba.com/html/y2007/m05/98-storage-contrast.html