分享

网络存储技术

 langhuayipian 2012-03-19

3.1.8  CPU、缓存和存储性能

很多用户在进行产品对比和设备选型的时候,经常以CPU和缓存的大小、主机端口的数量来判断存储设备性能的好坏。许多用户片面地会认为CPU快、缓 存大、接口数量多的设备性能要好。因此在设备选型、编写招标技术要求时也经常以CPU和缓存的大小、主机端口数量来作为是否采用的重要甚至惟一标准。

存储的性能好坏不是简单地对比CPU和缓存大小的就可以区别好坏,如果你认为可以,那么你还没有真正了解存储,对存储还只是一知半解。

中高端的FC存储和iSCSI存储都是基于控制器架构的,存储性能的好坏关键在于控制内部的结构设计,设计先进的控制器可能处理效率非常高,因而并 不一定要求很高速的CPU,也不需要很大的缓存。设计不好的存储即使采用了很好的CPU、很大的缓存,其性能也不见得就好。如在XX行业的网络中,为了获 得700MB~800MB的大带宽,有的存储设备只需要2GB~4GB的缓存,而有的存储即使采用32GB的超大缓存,其带宽性能仍然很低。另外,增加缓 存是否能提升性能还要看存储应用业务环境的好坏。在数据库、小文件应用环境中增大缓存会大幅度提高写带宽,当然前提是后端磁盘性能会达到极限。但对于大文 件读取的应用环境,增加缓存所带来的性能提升幅度并不大。

NAS存储设备和一些中低端的iSCSI都是基于PC架构,其核心部分就是一台PC服务器,它的性能会因CPU和内存变化而发生变化,但变化也有一 定的范围。这类存储性能一般取决于自身操作系统设计、文件系统中数据管理和数据检索等方面的设计,而不是CPU和缓存。先进高效的文件系统可使存储产品对 外提供非常高的性能。NETAPP的高端NAS之所以性能好,就是因为它内部有一个非常高效的文件系统,而不是因为CPU好和缓存大。

另外,对于存储设备来讲,主机接口的数量很多时候只能表示存储设备区有一定的扩展能力,即可以直连更多的主机和交换机,而不能表示性能更高。存储产 品的性能是由控制器决定的,但主机端口增加到一定数量,足以完全输出存储设备的最大性能时,增加再多的主机端口也不会增加性能。因此不能片面地相信主机端 口越多性能就越高的说法。

希望用户在选择存储设备时,能够合理和正确地对待CPU、缓存和接口等技术参数,并根据自己系统的应用类型和带宽、IOPS等指标,合理地选择存储 设备。同时拿到一定产品的说明书或产品的宣传彩页,千万别完全迷信上面所写的技术参数,更别相信8个4GB的FC就能提供3200GB带宽,8个以太网接 口就能提供800MB带宽。

3.2  网络存储技术

3.2.1  网络存储技术分类

网络存储技术是基于数据存储的一种通用网络术语。网络存储结构大致分为3种:直连式存储(DAS:Direct Attached Storage)、网络存储设备(NAS:Network Attached Storage)和存储网络(SAN:Storage Area Network)。

直连式存储(DAS):一种直接与主机系统相连接的存储设备,如作为服务器的计算机内部硬件驱动。到目前为止,DAS仍是计算机系统中最常用的数据存储方法。

网络存储设备(NAS):一种采用直接与网络介质相连的特殊设备实现数据存储的机制。由于这些设备都分配有IP地址,所以客户机通过充当数据网关的服务器可以对其进行存取访问,甚至在某些情况下,不需要任何中间介质,客户机也可以直接访问这些设备。

存储网络(SAN):存储设备相互联接且与一台服务器或一个服务器群相连的网络。其中的服务器用作SAN的接入点。在有些配置中,SAN也与网相 连。SAN中将特殊交换机当作连接设备。它们看起来很像常规的以太网交换机,是SAN中的连通点。SAN使得在各自网络上实现相互通信成为可能,同时带来 了很多有利条件。

网络存储通信中使用到的相关技术和协议包括SCSI、RAID、iSCSI以及光纤信道。一直以来SCSI支持高速、可靠的数据存储。RAID(独 立磁盘冗余阵列)指的是一组标准,提供改进的性能和/或磁盘容错能力。光纤信道是一种提供存储设备相互联接的技术,支持高速通信(将来可以达到 10Gbps)。与传统存储技术,如SCSI相比,光纤信道也支持较远距离的设备相互联接。iSCSI技术支持通过IP网络实现存储设备间双向的数据传 输,其实质是使       SCSI连接中的数据连续化。通过iSCSI,网络存储器可以应用于包含IP的任何位置,而作为Internet的主要元素,IP几乎无所不在。

各种存储结构的示意图如图3-6所示。

3.2.2  SAN存储相关基础知识(1)

1.关于HBA

HBA的全称为Host Bus Adapter,即主机总线适配器。

(1)总线适配器是什么呢?

首先要了解一下主机的结构,一台计算机内部多由两条总线串在起来(当然实际情况会有不同,这里只讨论常见的、简单的情况),一条总线叫系统总线,一 条叫I/O总线。系统总线上接了CPU、memory、cache等,I/O总线上接的就是外围设备,如今最常见的就是PCI总线。这两条总线之间用桥接 的芯片或者说电路连接起来。就好比一个城市里,有两条主干道,一条属于行政区,一条属于商业区,中间有个环岛,将两条主干道连接到了一起,系统总线就好比 行政区里的主干道,而I/O总线就好比商业区的主干道。系统总线和I/O总线的带宽的单位都是以GB来记,但行政区的主干道和商业区的主干道相比,前者肯 定更"核心"、更宽、更顺畅,设计的要求也高。在向公仆部门要求服务的时候,是要有一些接口的部门和程序的,而桥接芯片的作用就是连接和协调两条总线的工 作。

虽然I/O总线的速度和系统总线的带宽相比要低很多,但是也是以GB来计量的,而外围设备的速度,往往只有几百MB,甚至几十KB而已,怎么协调工 作呢?好比卖煎饼果子摊子不能直接戳到城市主干道上,怎么办?好办,在主干道边上开个2000平米的小吃城,把摊子都收进去好了。那么主机总线适配器的作 用也就是如此,就是要把外设组织起来,连接到I/O总线上去。HBA就是指Host和I/O BUS直接的一个适配器,也好比一个水管工常说的"双通"。

(2)常见的HBA有哪些呢?

比如显卡、网卡、SCSI卡、1394卡等。这里主要介绍FC HBA和ATA&IDE。通常说的Emulex的LP9002、Qlogic的QLA2340都是FC HBA卡,就是将Fibre Channel的设备和I/O总线连接起来的适配器。ATA也是一种适配器技术,PC主板上的ATA接口,就是一个磁盘适配器的对外接口,要强调的就 是,ATA说的是适配器技术,IDE说的是存储外设技术,比如可以说IDE硬盘、IDE光驱,说ATA接口,但是说IDE接口、ATA硬盘就不是那么合适 了,虽然很多情况下,大家都习惯把它们混在一起。

描述HBA的时候,有以下几个主要的规范。

HBA和IOBUS怎么连。人们经常说的PCI接口卡,就是指这个HBA卡是要插在PCI BUS上的PCI slot上的,但是现在的计算机上,不是只有PCI总线而已,大家碰到的时候留意。

HBA要和外设怎么连,这样的规范就很多了。

再说HBA本身,比如带宽、运行机制(protocol等)、独立处理能力等。

提示(Tips):有时看到的一块卡,实际是一个物理的卡,有时实际上是多个适配器(Adapter),好比一家机构,挂多个牌子,有的时候一块卡有两条通道,好比一家公司有两套人马。

2.关于lun

(1)lun的概念

lun的全称是logical unit number,也就是逻辑单元号。SCSI总线上可挂接的设备数量是有限的,一般为6个或者15个,可以用target ID(也称SCSI ID的)来描述这些设备,设备只要加入系统,就有一个代号,在区别设备的时候,只要说序列号就可以了。

而实际上需要描述的对象,是远超过该数字的,于是引进了lun的概念,也就是说lun id的作用就是扩充了target id。每个target下都可以有多个lun device,通常简称lun device为lun,这样每个设备的描述就由原来的target x变成target x lun y,那么描述设备的能力就增强了。就好比,以前你给别人邮寄东西,写地址的时候,可以写:xx市人民大街54号xxx(收),但是自从高楼大厦越来越多, 你不得不这么写:xx市人民大街54号xx大厦518室xxx(收)。

所以可以总结一下,lun是为了使用和描述更多设备及对象而引进的一个方法。

(2)lun是什么呢?

lun id不等于某个设备,只是个号码而已,不代表任何实体属性,在实际环境里,碰到的lun可能是磁盘空间、磁带机或者是media changer等。

lun的神秘之处(相对于一些新手来说)在于,它很多时候不是什么可见的实体,而是一些虚拟的对象。比如一个阵列柜,主机那边看作是一个 target device,为了某些特殊需要,要将磁盘阵列柜的磁盘空间划分成若干个小的单元给主机来用,于是就产生了一些什么逻辑驱动器的说法,也就是比 target device级别更低的逻辑对象,人们习惯把这些更小的磁盘资源称之为lun0、lun1、lun2…。而操作系统的机制使操作系统识别的最小存储对象级 别就是lun device,这是一个逻辑对象,所以很多时候称之为logical device。

有人说,我的windows里就认到一个磁盘,没看到什么lun的说法,lun是不是物理磁盘(physical disk)呢?回答是否定的,只要注意,磁盘的属性里就可以看到有一个lun的值,只是因为你的disk没有被划分为多个存储资源对象,而将整个磁盘当作 一个lun来用,lun id默认为零。

曾经碰到过这样的问题,比如有人问,我们有一个磁盘阵列,连到了两个主机上,我们划分了一个lun给两个主机,然后我们想,先在操作系统将磁盘分为 两个区,让两个主机分别使用两个分区,然后再出现某一台主机宕机之后,使用集群软件将该分区切换到另外一个主机上去,这样可行吗?答案也是否定的,集群软 件操作的磁盘单元是lun,而不是分区,所以该操作是不可行的。当然,在一些环境下,一般也是一些要求比较低的环境,可以在多个主机上挂载不同的磁盘分 区,但是这种情况下,实际上是没有涉及磁盘的切换的,所以在一些高要求的环境里,这种情况根本就不允许存在。

还要说明的地方是,在有些厂商和有些产品的概念里,lun id被绑定到了具体的device上,比如IBM的一些带库,整个带库只有一个target ID,然后changer、tape drive被分别分配为lun0、lun1、lun2…但是要注意到,这只是产品做了特别设计,也是少数情况。
图3-6  各种存储架构示意图

3.2.2  SAN存储相关基础知识(2)

(3)存储和主机的电气独立时代的lun的概念

在磁盘阵列和磁带库大行其道的时代,存储越来越智能化,越来越像一个独立的机器,实际上存储和主机的电气独立本来就是一个必然趋势,在存储越来越重要的时代,存储要独立出来是必然的事。

如果把存储当作一个独立的主机,理解起来就很简单了。说到lun的概念的时候,就要分为两个层面。一个层面就是在阵列这个机器的OS识别到的范围, 一个层面就是服务器的OS识别到的范围。这两个层面是相对独立的,因为如果把存储当作一个主机来看,那么它自然有自己的device、target、 lun之说,而服务器也有自己的device、target、lun之说。另一方面,这两个层面又是相互关联的,一个阵列的控制系统,大多都有虚拟化的功 能,阵列想让主机看到什么样的内容,主机才能看到相应的内容。当然,服务器识别到的最小的存储资源,就是lun级别的。那么主机的HBA卡看到的存储上的 存储资源就主要靠两个设备来定位,一个就是存储系统的控制器(target),一个就是lun id,这个lun是由存储的控制系统给定的,是存储系统的某部分存储资源。

(4)lun masking、lun mapping

有了独立的磁盘阵列之后,服务器只要看到存储的控制系统,就有可能使用磁盘阵列的磁盘资源,但是磁盘阵列不可能只为某一个服务器来使用,所以它必须 管制主机使用某部分磁盘资源。这个管制分为两个部分:一部分就是lun mapping,类似于绿色通道,就是保证服务器能看到某部分存储资源;一部分就是lun masking,类似于警戒线,就是保证服务器只可访问给它分配的存储资源,不可访问没分配给服务器的资源。

实现lun masking和lun mapping有3种方法,一个是基于存储控制系统来设置,一个是基于存储交换系统来设置,一个是基于服务器OS来设置。

基于存储控制系统的设置是比较常见的设置,很多磁盘阵列的控制系统本身就能设置lun被某服务器看到,比如FastT的partition功能。

基于存储交换系统的设置也是一种常用的方法,比如常说的zoning。

基于服务器OS的设置,比较少采用。

(5)lun的多路径(multi-path)

现在,存储网络越来越发达,一个lun有多条通路可以访问也不是新鲜事了。服务器使用多个HBA连接到存储网络,存储网络又可能是由多个交换设备组 成,而存储系统又可能有多个控制器和链路,lun到服务器的存储网络链路又可能存在着多条不同的逻辑链路。那么,必然的,同一个physical lun在服务器上必然被识别为多个设备。因为OS区别设备用的是总线、target id、lun id,只要号码不同,就是不同的设备。

由于上面的情况,多路径管理软件应运而生,比如emc的powerpath,这个软件的作用就是让操作系统知道哪些操作系统识别到lun实际上是一 个真正的physical lun,具体的做法就是生成一个特别的设备文件,操作系统操作这个特殊的设备文件。设备文件+driver+firmware的一个作用,就是告诉操作系 统该怎么使用这个设备。就是说,多路径管理软件从driver和设备文件着手,告诉了操作系统怎么处理这些身份复杂的lun。

3.关于备份(Backup)和高可用性(High availability)

备份,从字面的意思来理解,其实就是现时存在和应用的一个实体的后备实体。

高可用性,即硬件的环境、设施、数据、应用系统等,在复杂环境下可用的能力和可能达到的一个较高的值;在现实世界里,都讲究稳定、可靠,所以经常在计算机环境设计里,涉及高可用性和备份等元素。

对于备份主要说以下几个方面。

(1)设备的备份

设备的备份,也就是除使用的设备之外,采取相同或类似的设备做后备。

比如在服务器上采用冗余电源,也叫后备电源,使用单独的硬盘来做RAID的备用盘,也叫热备盘。

如果采取单独的一台服务器来做后备,这就成了主机的备份,主机的备份有很多种方式,比较著名的就是所谓的cluster、双机热备和双机容错,它们 有一个共同的特点,就是都是为了实现主机的备份,即某一个主机失效了,由另外一个主机顶替它来运行。实现主机热备的软件有很多,比如IBM的HACMP、 HP的MCSG、SUN的sun cluster、Compaq的Ture Cluster、Veritas的VCS、EMC的autostart、ROSE HA等。

(2)数据的备份

数据的备份,就是在现时使用的数据之外,实现或设置另外一份不同物理体现的、内容相同的有效数据复制,比如将生产数据复制到磁带上,就是一种数据备份方式。比如将生产数据复制到磁盘的另一个分区、另一个文件系统或者复制到别的主机的磁盘上等,都是一种数据备份的方式。

实现数据备份的软件有很多,比如一些磁带操作的小工具,tar、cpio等,大的工具软件有EMC Networker、Symantec Netbackup、CommVault、tapeware等,数据复制的工具就更多了,操作系统的复制命令、EMC replicator、srdf等。

(3)应用系统的备份

应该说应用系统的备份,包含了以上两种备份,因为一个完善的应用系统,其设备和数据都是要求有备份的,除此之外,作为一个应用系统,它还包含了业务程序、人员、业务逻辑、外部环境等一系列让应用运行的内容。

在这个层面,就有一个远程容灾。远程容灾,就是在生产系统环境之外,在相隔较远的物理空间,构建相同或类似的一个应用系统,以达到在必要的时候顶替原生产系统工作的           目的。

要实现远程容灾的目的,除了外部环境,比如机房、电力、后勤保障、人员配备、业务程序之外,我们比较着重的一个环节,就是数据的问题,也就是在两个 系统之间要保证数据的相对一致,实现这个目标的方法有很多,比如磁盘阵列之间的卷复制、两个主机之间文件系统上的复制等。当然,在一个系统里,把数据用磁 带导出来,快递到另外一个系统地点,再用磁带把数据导进去,也不能说不是一个办法,但是这样操作,经常会和业务的逻辑相违背。

可用性是指在各种复杂环境下,数据、应用等计算资源都可以保持使用的能力和可能性。比如服务器配备冗余电源,就提高了服务器的可用性,即一个电源工 作不正常或者能力不够的时候,服务器不受影响。再比如,磁盘阵列采用双控制器,当某个控制器和链路工作不正常的时候,数据的访问能平滑地过渡到另外一个控 制器上和链路上,这也提高了数据和存储设备的可用性。

那么高可用性就是一切为了提高系统可用性的实现方法和结果,就是cluster或者双机。为了实现生产的应用系统的高可用性,其中一个环节就是实现 服务器的高可用性,就是某服务器失效或者能力不足时,应用能平滑地过渡到另外的主机上,也就是说对于应用系统来说,服务器保证了相对的可用性。

那备份和高可用性有什么区别呢?这是两个不同的概念,它们的着眼点是不同的。备份只是保证了有后备,而高可用性则是为了保证应用的尽快恢复。打个比 方,备份就好比买保险,买保险不能保证平安无事,但是肯定能减轻损失。高可用性,就是安全气囊、ABS,能快速地重新开始或者说将危险消弭于萌芽时刻。所 以说做备份和提高可用性,两手都不可放松,也不互相矛盾。




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多