Watchstor专栏:存储器那点事(二)事关存储器体系架构

存储器体系架构那点事

前面说过,存储器其实也是计算机,那么我们来分析一下计算机行业的特点。计算机行业属于新兴行业,和古董收藏行业是完全相反的,一般来讲计算机产品和设备(或者说是IT产品)越新出来则价格越贵,卖得越好且越受欢迎(比如以前大家喜欢内置微型硬盘iPod,现在早流行闪存盘的iShuffle了;以前看到个10Mb HUB就很稀奇,现在动辄千兆网甚至都到10Gb网络了),一个IT新产品上市过个三个月活着半年后就变得人老珠黄,再长点时间就更不值钱了,相反古董收藏行业的藏品确实越老越值钱,就像老中医一样人见人爱。

那么影响计算机行业如此快速发展,频繁更新换代的最重要的部件是什么呢?应该说CPU是个非常重要的因素,谈到CPU,我们不得不谈到业界一个非常有名的定理,摩尔定理。什么是摩尔定理呢,摩尔定律是由英特尔(Intel)名誉董事长戈登•摩尔(Gordon Moore)经过长期观察发现的,摩尔在1965年文章中指出,IC上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍,原因是工程师可以不断缩小晶体管的体积。这就意味着,半导体的性能与容量将以指数级增长,并且这种增长趋势将继续延续下去。(1975年,摩尔又修正了摩尔定律,他认为,每隔24个月,晶体管的数量将翻番)。

摩尔定理的验证和实现使得CPU速度变得越来越快,这样使得计算机产品变得越来越普及,处理能力也越来越强大,人类也越来越依赖于计算机完成以前想都不敢想象的计算工作。这样的一个相互促进就使得计算机的设计从以前的单CPU发展到多核多线程CPU,再发多个物理CPU协同计算(因为单个CPU再怎么快也撑不住了)以此来提高计算机的整体处理能力,因此计算机系统的体系架构就成了一门大学问。

计算机体系架构中一个很重要的部分就是如何让多个CPU一起并肩战斗,而且性能能够成倍提高,这是一个很深的学问。要直到能够设计制造出单个高性能的CPU是一回事,要能够把多个CPU组织在一起高效率地提高成倍的性能是另一回事。这需要非常精妙的系统体系结构设计。(就像打篮球一样,以前奥尼尔、科比再加上一群全明星级别的球员在洛杉矶队打球很漂亮,全员身体素质也是超级好,可就是得不到总冠军,直到传奇教练菲尔杰克逊来了才得到了三连冠。可以说菲尔杰克逊教练的三角战术思想就是能够把湖人队多个全明星级别球员真正带成总冠军球队的最佳“体系结构”,后来奥尼尔负气离开了洛杉矶,科比再厉害还是好几年得不到冠军,直到最近挖来了加索尔才终于又尝到了冠军梦)。

战术的设计说到底要考虑到两点,一是本身球队球员的能力,二来是要考虑到赛场对手的实际情况。那么我们来看看对于存储这场战役来讲需要考虑的因素。中国有句名言,钱不是万能的,但是没有钱是万万不能的,结合到存储行业来讲我们可以说,有了独立的存储器工业后,可以发现主机不是万能的(现在的主机主要负责信息的快速处理,而数据存储和数据保护等工作渐渐被转移到存储器上去了),但是没有主机还是万万不能的。归根到底存储器的功能还是储存和保护被主机处理过的信息,其主要的设计思想应该是着重于在接受到主机的信息后做到以下几点:高性能的IO响应能力、高可靠性、可管理性和其他数据保护功能(如容灾、克隆、快照等)。那么根据这个思路,结合计算机体系架构的发展思路,整个存储器的体系架构划分和技术演进历程就相对清晰了许多。

参考前文2.3中的图片,我们将整个存储器的体系架构分成5类,具体如下:

1.       入门级:基于阵列控制卡技术的存储器:满足基本的数据保护要求;

2.       中端产品:基于模块化集群技术的存储器,进一步满足高可靠性、可管理性的需求

3.       高端产品路线一:统一大缓存多处理器存储scale-up架构

4.       高端产品路线二:分布式缓存scale-out多处理器存储架构

5.       其他混合型架构

 

下文将根据这五条思路详细讲解。

基于阵列控制卡技术的存储器

1、基于阵列控制卡技术的存储器的设计思想

存储器,首先是要能够做到保护数据,保护数据的方法在存储专业术语中叫做RAID,RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列。冗余磁盘阵列技术诞生于1987年,由美国加州大学伯克利分校提出。简单来讲就是将N个硬盘通过RAID Controller(分Hardware,Software)结合成虚拟单台大容量的硬盘使用。基于不同的架构的RAID 种类又可以细分为: 软件RAID  ,硬件RAID 卡和外置式RAID存储器。

 

l  1.1、软件RAID

 

软件RAID很多情况下已经包含在主机系统中,并成为其中一个功能,如 Windows、Netware及Linux和各种UNIX系统。软件RAID中的所有操作皆由中央处理器负责,所以系统资源的利用率会很高,从而使系统性能降低。软件RAID是不需要另外添加任何硬件设备,因为它是靠主机系统—主要是中央处理器的功能—提供所有现成的资源。

比如在开篇中我提到的在SUN服务器上连接的A1000系列和A3000系列磁盘柜,这些磁盘柜严格来讲不属于磁盘阵列,只能称之为JBOD,全称为Just Bundle Of Disks译成中文可以是"简单磁盘捆绑"或者“磁盘簇”,通常又称为Span。 JBOD 本身不能提供标准的RAID级别数据保护。因此当磁盘柜接入到主机后需要花些功夫配置软件RAID。早期的HP的DS2300、DS2405磁盘柜、 MSA1000系列的扩展磁盘柜,SGI的TP9000磁盘柜都是常见的需要软件RAID配合才能实现数据保护功能的JBOD。

软件RAID的最大优势在于由于不需要购买单独的磁盘阵列控制器而只需要采用廉价的JBOD磁盘柜从而大大节约了成本。但一般概念上,由于写操作需要耗费大量的RAID计算资源,软件RAID的性能是难以保证的,因此在高性能的计算环境中极少推荐使用软件RAID技术来保护数据而多推荐独立的磁盘阵列,至少也是采用硬件RAID卡。

但也有个别情况例外,那就是对于视频点播服务器的文件存储,笔者在2000年早期曾做过不少视频服务器的项目,很多时候整体性能的瓶颈都是出在IO 通道上面:如果不用RAID保护而仅仅在JBOD上做条带化打散的确能够很好地提升吞吐量,可是数据往往得不到保护,且这种环境下如果损坏一块磁盘其后果往往是致命的(因为这块磁盘上可能存放在很多视频文件的不同小片断)。当时这个问题很难解决,而早期Oracle发布过一款非常优秀的视频服务器 OVS(Oracle Video Server)却很受欢迎,除了OVS其精妙的软件体系结构设计以外,另外一个独到的特点就是这个视频服务器软件提供一个叫作Oracle Video File System的东东,在软件层做RAID 5,既提升了磁盘顺序IO的性能,又很大程度上节约了成本(当然如果你银子有多,一定要把OVS的视频文件存储在独立的磁盘阵列上OVS也不反对了)。

为什么这个时候的软件RAID就不会成为性能瓶颈呢?其主要原因是因为视频服务器对于视频存储的应用特点决定的,视频点播的文件的特点是大吞吐量的顺序传输,这些视频文件在导入到视频服务器后极少会有修改(大家在互动电视上点播一个电影100次也无法做到把里面某个片断修改掉),在很多情况下一个完全条带话的JBOD磁盘柜的顺序吞吐能力可以达到线速(即如果该磁盘柜有N块磁盘,每块磁盘的顺序吞吐能力为100MB/sec,那么该磁盘柜最大能够提供接近N*100MB/sec的吞吐量,而即使是具有高处理器和大缓存的的高端磁盘阵列的RAID控制器也很难做到这点)。而且这种业务的特点几乎碰到相对软件RAID最头痛的离散IO写操作。

由于视频服务器往往是一批批地往一个个目录灌大容量的视频文件,然后再对外提供点播功能(这样产生了高效率的批量软件RAID 5的计算,对主机系统影响相对较小),而且聪明的系统管理员往往可以选择在业务量不大的时候逐步灌入视频文件以错开高峰时刻。基于以上原因,软件RAID 的确是非常适用于OVS(Oracle Video Server)这款视频服务器应用的。只可惜2002年后Oracle逐步淡出了视频点播服务器市场,把OVS卖给了一家叫Thridspace的公司,几年前我再输入www.thirdsapce.tv,发现此网址已经消失得无影无踪了.....

基于以上原因可以进一步证明,对于存储来说,没有主机(或者说不了解主机应用)是万万不能的,正确地配置和选择存储器技术对于IT系统部署非常重要。

l  1.2 硬件RAID卡

硬件RAID卡通常是一张PCI卡,你会看到在这卡上会有处理器及内存。因为这卡上的处理器已经可以提供一切RAID所需要的资源,所以不会占用系统资源,从而令系统的表现可以大大提升,这个设计思想在网卡方面也能经常看到,比如有款叫Alacritech的高性能网卡,其在网卡上集成了特殊的处理器来处理TCP/IP拆解包的工作,帮助主机减轻工作压力,我们称之为TOE(TCP/IP offload Engine)。硬件RAID的应用之一是可以连接内置硬盘、热插拔背板或外置存储设备。无论连接何种硬盘,控制权都是在RAID卡上,亦即是由主机系统所操控。在系统里,硬件RAID PCI卡通常都需要安驱动程序,否则系统会拒绝支持。磁盘阵列可以在安装系统之前或之后产生,系统会视之为一个(大型)硬盘,而它具有容错及冗余的功能。磁盘阵列不单只可以加入一个现成的系统,它更可以支持容量扩展,方法也很简单,只需要加入一个新的硬盘并执行一些简单的指令,系统便可以实时利用这新加的容量。

为了提高性能,很多硬件RAID卡上会配置额外的内存(我们也称之为缓存),这些内存的作用是为了加速IO处理,对于读写操作都是很有好处的。对于读IO的好处在于硬件RAID卡上的缓存可以存放很多被频繁读写的数据,这样当下一次需要在读写这些热点数据时,不需要重新从磁盘柜的众多磁盘中再去寻找,然后在磁盘层寻道定位,而只需要在缓存中直接获得,极大程度上加快了读IO的响应速度。对于写IO的好处在于:试想一下主机将一个IO写到硬件 RAID卡内存后就直接IO complete,其速度肯定将远远高于直接写到磁盘上硬盘上的速度,同样也避免了硬盘的寻道定位时间。

当然对于写IO来将需要考虑另外一个问题那就是硬件RAID卡上的内存需要带电池保护,否则会单主机出现故障后,很多只写入到硬件RAID内存里面而尚未写到磁盘里面的数据将会丢失,面临数据不一致的危险,这是作为存储器首先需要避免的。因此只有具备电池保护的硬件RAID卡能够同时实现读写IO加速功能,反之只能实现读IO加速功能。

上图所示的是HP公司(原Compaq公司)的一款经典的RAID卡Smart Array plus系列(2002年左右推出),它可以通过PCI接口连接到主机上,应该说这款RAID卡的功能是非常强大的,其中一个很重要的特点是这种RAID 卡支持RAID ADG(Advance Data Guarding),通俗的讲就是支持RAID 6,这在当时来讲是一种非常了不起的新技术了(特别是对于硬件RAID卡而言)。

另外,台湾地区也有很多生产硬件RAID卡的存储公司。

l  1.3 外置式RAID存储器

外置式RAID也是属于硬件RAID的一种,区别在于RAID卡不会安装在系统里,而是安装在外置的存储设备内。而这个外置的储存设备则会连接到系统的SCSI卡上。系统没有任何的RAID功能, 因为它只有一张SCSI卡;所有的RAID功能将会移到这个外置存储里。好处是外置的存储往往可以连接更多的硬盘,不会受系统机箱的大小所影响。而一些高级的技术,如双机容错,是需要多个服务器外连到一个外置储存上,以提供容错能力.外置式RAID的应用之一是可以安装任何的操作系统,因此是与操作系统无关的。为什么呢?因为在系统里只存在一张SCSI卡(或者说是FC光纤卡),并不是RAID卡。而对于这个系统及这张SCSI卡(或者说是FC光纤卡)来说,这个外置式的RAID只是一个大型硬盘,并不是什么特别的设备,所以这个外置式的RAID可以安装任何的操作系统。唯一的要求就是你用的这张SCSI 卡在这个操作系统要安装驱动程序。

表面上来看,外置式RAID仅仅是把RAID卡安装在外置的存储设备上没什么大变化,但其实这种方法还是带来了不少进步和便利。首先是可以提高存储系统的稳定性,因为外置的存储设备上可以配置不止一块RAID卡,这样当一块RAID卡出现问题以后,另外一块可以顶上来,进一步提高了系统的可用性;第二点是增加了可以连接性,外置式RAID存储器把RAID保护的功能从主机端转移出来独立存在,这样就可以支持更多台主机同时连接到这台存储器上;第三点是增加了对于集群的支持,这一点是非常重要的,因为如果单单一块具有缓存带电保护的硬件RAID卡在所连接的主机意外down机后,即使缓存上的电池能够保护那些已经写入到缓存但还没有写入到磁盘里面的数据不丢失,但你也很难做到把这块卡从原来的主机上拔出来然后插到另外一台主机上去且保证数据不丢失。

从以上三点分析得知,外置式RAID存储器比起硬件RAID卡具备了非常大的进步,也是独立存储器产生的雏形产品,因此我把具备这种架构的存储器称为基于阵列卡技术的低端存储器(或者说是入门级存储器)。

下面我会介绍这种几款基于这种体系架构,具有代表性的经典产品。

2、经典存储器产品分析 HP MSA1000

HP的MSA1000是原Compaq公司(后被HP公司收购)Proliant PC服务器部门大约在2002年前后研发的一款经典的存储器产品(原Compaq Alpha小型机部门也推出了另外一款很有特色的存储器EVA,这款产品将在后面提到)。我们来看看这款存储器在发布时宣传的几个重要卖点:

1.       内置StorageWorks独有DtSDAS to SAN)架构

2.       内置2Gb光纤通道交换机选件

3.       超级数据卫士 -- Advanced Data Guarding

 

而MSA1000控制器本身对于RAID保护方面也很有特色,支持以下功能:

 

1.       在线扩容

2.       在线改变RAID级别 RAID1, 5ADG

3.       在线改变Stripe Size

4.       在线Spares (Global)

5.       用户可选读/Cache

6.       用户可选扩展和重建优先级

 

我们会发现MSA1000控制器对于RAID保护方面的特色和指标和以前Compaq公司畅销的一款叫Smart Array plus的硬件RAID卡是完全一样的,为什么会出现这种情况呢,其实MSA1000本质上就是把两块Smart Array plus硬件RAID卡集成到一个机箱里做成的,这也就是我们前文介绍的从硬件RAID卡向外置式RAID存储器的转变的一个经典案例。

我们通过下图(HP MSA1000控制器分解图)可以清楚地看到两者间的关系,(每个MSA1000的控制器实质上是一块Smart Array plus硬件RAID卡)。


 

另外我们来进一步分析一下MSA1000的两个特点,内置StorageWorks独有DtS架构和内置2Gb光纤通道交换机选件。首先来讲MSA1000是一个前端带SAN接口,后端采用SCSI磁盘的存储器,而这个SAN接口就是通过内置2Gb光纤通道交换机来实现的。而所谓DtS架构是指DAS to SAN,可以说这是当时HP/Compaq抢占低端SAN存储市场非常厉害的一招,因为HP/Compaq的Proliant服务器出货量一直非常大,而随着服务器附带着卖出了不少内置SCSI硬盘(带内置硬件RAID卡Smart Array plus保护),也卖了不少DAS直连存储(通过SCSI卡外接到RA4100阵列上)。要知道2001-2003年正是SAN交换机市场如火如荼的普及培育期,HP/Compaq的老用户通过DtS功能只要将原来的SCSI磁盘插入到MSA1000存储器里面,就可以实现轻松实现将DAS整合到 MSA1000存储域网络环境,从Smart Array和RA4100数据环境升级
下面我们来具体介绍一下DtS的功能。

具体步骤如下(当时我们称为移植到SAN的四部曲):

1一种快速和方便的方法,把由Smart Array保护的存储数据迁移到MSA1000 存储系统
2迁移下列数据:
a)
存储在1-英寸通用磁盘驱动器(Ultra2 Ultra3,使用较新的Smart Array控制器) 上的数据
b)
存储在直接连接的RA4100存储系统上的数据
3按照一个逐步执行的过程将驱动器从较旧的系统移走,将它们插入MSA1000
4原有数据和配置信息保持不变
5RAID 装置和数据保留
6迁移工作几分钟内就完成


注:据最新消息称最新的HP MSA2000系列已经是OEM自Dothill公司的,因此原来MSA1000的Dts功能并不适用于新的MSA2000(当然HP MSA 2000也有了非常多的功能更新),本文的目的不是为了推销任何一款存储器产品,因此关于MSA2000的最新消息可以查询HP相关存储专员。

3、经典存储器产品分析 IBM 7133

我们把时间轴再往前面移动,可以说在90年代末2000年初期,IBM公司有一款相当经典的入门级存储器产品IBM 7133,这款产品由于价格实惠,又具备一定的RAID数据保护功能(那个时候人们对于存储器的要求不高,能够做到保护数据就不错了),因此这款产品市场占有率很广,而由于其主要竞争对手如HP/COMPAQ/SUN没有相对应的产品,往往碰到后陷入到价格战泥潭而非常头痛。那么我们来看看IBM 7133到底是个什么东东(注:由于此产品实在年代过于悠久,如有资料不准确之处,敬请海涵)。

1992年的秋天 SSA问世,  其产生的本意为“成为IT行业外存设备的通用标准”,然而,可惜的是到最后也只有IBM公司支持SSA。SSA支持范围如下:

l  基于UNIX: IBM, HP, Sun, and Digital servers(均为部分)

l  基于Intel :  IBM, HP, and Compaq servers(均为部分)

l  所有的SCSI-SSAFC-SSA的适配器均由IBM公司提供

 

大家知道由于历史原因,IBM一直对于环路架构情有独钟,著名的令牌环网就是由IBM首先提出来的,SSA 也是采用类似的思路设计,其结构为双口结构,即磁盘和装在主机的适配器均为双口,光缆采用四口结构,与适配器连接后从而形成 SSA loop(仲裁环)。下图为其结构示意图:

SSA的体系结构具有以下特点:

1、任何一个单独的读或写的速度均不能够超过 20MB/sec(40MB/sec).
2、SSA 80MB/sec(160MB/sec)的计算原理是基于4 x 20MB/sec (4x40MB/sec)持续的传输速度。例如: 20MB/sec的读和 20MB/sec 的写在同一个环路中,同时另外一个读和写的操作恰好在另外一个环路中。由上图显示, ports A 和B 均为双口,即从原理上讲,可以接收4x20MB/sec的读和写。

在高可靠性方面,SSA与SCSI和FC相比有很大的差距,在SSA结构中,当一块磁盘发生故障时,整体性能降低为原来的一半,当第二块磁盘发生故障时,数据将面临丢失的危险。例如:如上所示当6号盘发生故障时,0号盘—5号盘只能通过 主机上的适配器port A 来读写数据, 处理而7号盘和8号盘只能通过port B来完成读写操作。但是如果6 号盘发生故障,并且2号盘在6号盘为被替换前发生故障,则有3, 4, 5号盘 将无法被访问。其过程如下图所示:

基于这个原因,从可靠性的观点出发,SSA一般采用数据镜像的方式方法以弥补SSA这一结构缺陷。

一般来讲,SSA的主要产品为IBM 7133,其支持的磁盘类型为2.2GB, 4.5GB, 9.1GB,18.2GB,36.4GB。每个产品的最大硬盘数量为16。每一个适配器能够支持的硬盘个数最大为96个。

由于IBM公司的SSA产品本身没有SSA控制器,即7133本身只是一款JBOD磁盘柜,SSA磁盘阵列需要与安装在主机上的SSA适配器或控制器连接,因而造成以下问题(在4.1.1 软件RAID章节有过描述):

1)消耗主机资源(需要消耗主机层CPU资源做镜像保护);
2)SSA适配器或控制器上的缓存在双机容错的结构中成为故障点,因为当主机发生故障时,SSA适配器或控制器上的缓存中的数据将会丢失,并且SSA的配置数据也有可能丢失。如果SSA的配置信息在另外一台主机中有近似于LOG文件的信息,但是这将意味着在故障发生的时候,系统恢复的时间将远远超过有磁盘控制器的设备。因而在双机容错的环境中,即使用户采用双主机的结构,如果磁盘阵列本身没有磁盘控制器,那么整个系统仍有可能处在故障点中。
3)IBM公司也逐渐发觉SSA适配器的CACHE可能造成的问题,因而在SSA适配器中并不安装CACHE(或者disable cache功能),但这样一来将占用主机更多的资源,并且即使主机的配置再高,也无法完全确保其中的百分之几是用来处理SSA磁盘的数据校验或传输。

以上原因验证了我们在4.1.3外置式RAID存储器章节中的结论,只有独立的外置式RAID存储器才能更方便的支持双机环境,并且支持更多的主机并且提供更高的IO性能。

注:IBM公司在1999年2月17日宣布支持光纤通道,从而放弃了坚守多年的SSA结构。在2003年前后7133也就逐步淡出了人们的实现,但是作为存储器后端的连接技术,它在IBM的第一代鲨鱼(Shark系列)存储器中继续存在了一段时间。

除了以上两款产品(HP MSA1000系列和IBM 7133)以外,我们可以把现在市面上经常见到的EMC的AX100系列和HDS的SMS100系列存储器也归属到基于阵列卡技术的存储器一类。

你可能感兴趣的:(职场,存储,休闲)