专家博客:单片架构和模块化架构的选择(下)

本文作者Chris Evans 是“Storage Architect”博主,Brookend公司存储设计师。

DOSTOR存储在线9月8日国际报道:在我的第一篇文章中,我讨论了共享存储模式架构,即我们有时所认为的企业阵列,不过我称之为单片架构。这个名词可以追溯到大型机时代(见Wiki的定义),因此它用于描述配置单个大型高速缓存的存储阵列。在过去10年中,我们看到存储技术从单个共享高速缓存向分布式高速缓存架构转变。这种分布式架构采用多个存储引擎或节点,每个引擎或节点都有独立的处理能力,但是它们共享一个快速的网络互联。这种技术最知名的部署可能是3PAR(InServ)、IBM(XIV)和EMC(VMAX)。现在让我们仔细看看这些架构。

EMC VMAX

VMAX架构包含1个到8个VMAX引擎(存储节点)。这些引擎相互连接在一起,被称为虚拟Matrix架构。每个引擎都可以当作存储阵列,拥有自己的前端主机端口连接、后端磁盘导向器、高速缓存(内部镜像化)和处理器。VMAX引擎使用Matrix接口主板封装器(MIBE)连接在一起。MIBE有副本以备冗余。虚拟Matrix可以进行引擎之间的记忆体访问。当主机访问端口和数据不在同一个引擎上的时候需要虚拟Matrix提供连接性。在这篇文章后面有两幅图,一张显示引擎互联的逻辑视图,一张显示后端磁盘机箱如何分配给每个引擎。

不过我们还不太清楚虚拟Matrix架构是如何运作的。我不确定VMAX引擎是否可以直接访问其他引擎上的高速缓存,以及引擎的互联是否需要处理器。此外,一个引擎是否可以单纯为了管理逻辑主机和磁盘连接上的吞吐量而访问另一个引擎上的高速缓存?我不是很肯定。

3Par InServ

3Par由多个存储节点组成。这些存储节点汇集到一个高速连接上。3Par称之为InSpire架构。2到8个节点(按对配置)连接到一个被动背板,每个节点之间的带宽可高达1.6Gb/秒。3Par如图所示展示他们的8节点架构,连接的数量很容易就能看清楚。我还看到2节点、4节点、6节点和8节点部署下的连接是如何增加的。InServ阵列按对写入高速缓存数据,因此每个节点都有一个伴点。如果一个节点发生故障,伴点上的高速缓存可以马上写入另一个节点,从而保护高速缓存数据。

InServ和VMAX架构非常相似,但是它们之间有一个隐晦但非常重要的区别。3Par InServ LUN(逻辑单元号)分割成一个个小盘(Chunklet,磁盘的256KB部分),这些小盘分散在复合体内的所有磁盘上。因此如果一个阵列得到部署和创建,阵列中的所有节点都参与到数据服务。VMAX使用Symmetrix架构,利用Hyper–磁盘的一大块–来创建LUN。例如,4个Hyper创建一个3+1 RAID(独立磁盘冗余阵列)-5 LUN。随着新的引擎加入VMAX阵列,数据不是分布到新的物理磁盘,因此VMAX引擎和物理磁盘上的数据访问是非均匀的。从这个角度来说,InServ有更好的机会来优化节点的使用,不过在VMAX内部,虚拟配置的使用可以帮助将工作负荷更均匀地分布到磁盘上。此外,一个完全设置的VMAX阵列的VMA带宽可以达到128Gb/秒,超过InServ的带宽。

在我看来,VMAX是通过专有节点来提高可扩展性,但是如果数据不在本地节点上,那么延迟性会增加。在3Par模式下,数据始终是跨节点访问的。在EMC模式下,只有当LUN的物理磁盘不在本地节点上的时候,节点之间才交换数据。这带来了两个问题。首先,随着节点的增加,节点<->节点之间的连接数会指数性增加。一个8节点的阵列至少有28个节点到节点的连接(还不包括为冗余所设的连接)。16节点阵列内的连接数量有120个(节点数量增加一倍而节点-节点连接数量增加近6倍),32节点阵列的连接数量将近500个–32节点是VMAX理论上可以扩展到的节点数量。其次是投资回报率递减。随着节点的增多,需要用更多的资源来处理非本地节点上的数据。因此,额外增加的节点所得到的好处有可能不足以弥补因此而增加的成本。

IBM XIV

IBM XIV阵列采用的是另一种节点设置方式。节点直接连接到底层硬件的数据保护机制。XIV只使用RIAD-1类型的保护,采用的是1MB大小的数据块,也称为分区。数据以伪随机方式均匀分布在节点上,确保对任何LUN来说,数据都是写入在所有节点上。本文底部的XIV图片显示了这个架构。节点(在XIV中称为模块)分成接口模块和数据模块。接口模块有自己的高速缓存、处理器、数据磁盘和主机接口。数据模块没有主机接口,但是仍然有高速缓存、处理器和磁盘。每个模块有12个1TB SATA驱动器。当数据写入阵列的时候,这些1MB分区写入到所有驱动器和模块中,确保任意一个分区的两个镜像对不会都处在同一个模块上。LUN的顺序分区分布在各个模块上。这样做的结果就是所有的模块都参与服务所有的卷,且单个模块的故障不会导致数据丢失。

虽然XIV可能在性能上做了不少文章,但是它仍然有一些内在风险(尽管比较小)。因为所有LUN都分布在所有磁盘上,如果两个磁盘发生故障,那么有可能带来比较严重的数据丢失。此外,XIV架构要求每个写入操作必须通过以太网交换机,因为数据首先是写入主模块和次模块上的高速缓存,然后才写入主机。因此,单个模块的总带宽受限于可用的网络容量,接口节点的带宽限制是6Gb/秒,数据节点的带宽限制是4Gb/秒。如果以太网交换机发生故障,那么带宽将进一步受到限制。

小结

如今市场上的各种多节点存储阵列实施的方式各有不同。每种方式都有自己的优点和缺点。在你为数据选择平台的时候,要充分考虑它们的优缺点。它们中哪一种方式更适合"企业级"数据仍将是热门话题。在我看来,我会希望使用"1层"存储阵列来提供高水平的可用性和性能。

下次我会讨论模块化阵列和使用双控制器架构的好处。

        

 VMAX Architecture   VMAX Disk<->Engine Connectivity  XIV Architecture

单片架构和模块化架构的选择(上)