Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11601835
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-08-18 15:15:09

随着科学实验的不断开展,信息化的发展与多媒体网络技术的推广应用,数据量变得越来越复杂与繁多。特别是电子商务的广泛应用,信息化的政务以及各行各业的网络应用,数据已成为一种无形的战略资产,如何利用现有的存储结构进行数据存储、共享变得越来越重要。数据存储从单一的系统转向网络化方面发展,利用网络的海量存储能力与读取的方便性,把数据进行网络存储共享已经成为数据存储共享的一种趋势,而传统的SCSI存储方案与目前应用广泛的NAS数据存储共享方案均有不尽人意之处。因此希望有一种优秀的解决方案来适应当今数据存储共享的要求。

1 当前数据存储共享的方案分析

1.1 SCSI的数据存储共享方案

  SCSI存储结构也就是最早使用的存储方案,另一种说法是DAS存储。

  其核心思想是存储介质以SCSI协议连接在服务器后面,服务器为数据存储共享的中转接点。存储介质通过SCSI协议与服务器相连,SCSI结构采用的连接端口与连接线长度都十分有限。因此能提供的存储容量十分有限,当需要增加存储容量时就要增加SCSI的HUB用以进行连接,但他们的数据量增加到一定的数量时会出现性能瓶颈,因此对于大数据量的存储使用多个DAS系统,存在着信息孤岛现象,与数据的不统一现象,这对于合理的管理数据是十分的不利的。因此,此方案不利于进行海量的数据存储共享。

  SCSI方案是以服务器为中心的数据传送方式,发展比较早,结构简单,便于实现与理解,在小规模数据存储情况下运行较好。但他没有独立的存储操作系统,数据共享与管理复杂,维护成本高。在SCSI存储方案中还可能存在有大量相互独立的、没有统一控制的数据,他们会浪费系统的存储资源,影响数据的一致性。SCSI存储方案中接口连接设备数量与距离受限,存储容量有限,当要进行扩容时不得不使用HUB进行配置,而且可配置扩容的能力相当有限,随着共享数据容量的增加,存在因大量数据存取引起延迟的性能瓶颈,更有甚当关键点服务器故障时会造成整个系统瘫痪,因此基于SCSI存储方案构建的网络数据共享存储不是一种理想的方案,他不适应对数据的可管理性,海量与共享的要求。

1.2 NAS存储方案的数据共享方案

  NAS存储是应中目前数据存储的热点存储方案,他的思想是以内嵌的NAS服务器为中心的数据存储。

  在此方案之中希望利用网络进行以数据为中心的存储管理,在构成上他从服务器的后面去掉存储器,将存储器连接布置在LAN中。NAS通常被理解为专用数据存储服务器,包括存储设备和内嵌系统软件。NAS通常被布置在LAN上某个特定的节点上,允许用户在网络上存取数据,NAS设备支持NFS与CIFS两种文件系统,因此兼容了Windows文件系统与Unix文件系统进行数据的共享存储,提供跨平台文件共享功能。由于NAS可以集中管理和处理网络上的所有数据,数据以文件的形式按照网络协议在客户机与存储设备之间流动,他可以利用NFS实现异构平台的客户机对数据的共享,集成在存储设备内的专用文件服务器提高了文件的I/O速度。

  NAS解决SCSI数据存储方案之中的扩容困难,配置复杂,不提供集中数据管理与跨平台数据共享的不足。NAS已经成为一个可以自寻址的特殊服务器,存储阵列完全从单个的服务器中解放出来,那么通过网络取得存储设备上的数据而不消耗服务器资源的设想就可以实现了。

  虽然克服了并行SCSI结构的许多缺点,但是NAS也存在很明显的缺点,这就是对LAN网络带宽的消耗。在NAS中,磁盘阵列的数据流也是通过网络流动的。使用UDP协议或者TCP/IP协议对用户数据进行打包传送对一般的LAN或WAN事务是可以接受的;但是,对磁盘访问事务进行打包传送,即使是1 000 Mb/s的以太网,当组建了大型网络数据共享系统时也很难提供足够的带宽,特别是进行多媒体应用与高数据流量的实时数据共享应用来说存在着几乎不可容忍的不足;或者当外界与NAS建立连接消耗大量带宽时也会造成网络性能急剧下降,因此对于组建海量存储共享系统来说,基于NAS的系统并不是一种理想的系统。

1.3 SAN的数据存储

  SAN是目前正在流行的前沿数据存储方案,他的核心思想是用存储区域网进行数据的存储,他的结构特点如图3所示。

  他的主要思路是利用成熟的网络技术,把服务器与存储分离,使用一个专用的网络进行存储(也称SAN网络),服务器以FC协议通过专用的集线器、交换机和网关建立服务器(Server)和磁盘阵列(Storage)之间的直接连接,将LAN上的存储事务转换到主要由存储设备组成的SAN上。从构成本质上看SAN并非一种产品,他是配置网络化存储的一种方法,这种网络技术支持远距离通信,并允许存储设备真正与服务器隔离,使存储设备不再单独属于某个专用的服务器,服务器可以对存储设备中的任何单个设备进行连接。SAN网络中的存储如磁带库与磁盘阵列等设备可以不通过服务器直接进行相互之间的协作。

  SAN从结构上解决了NAS数据访问对网络带宽占用的问题,如果建立合适的存储系统数据的访问、备份和恢复不影响LAN的性能,在有大量数据访问时,不会大幅度降低网络性能。在SAN架构中,Server/Storage间的通讯采用SAN,而Client/Server间的通讯采用的是LAN。采用SAN适合Setver/Storage间大容量数据传送,而Cli-ent/Server间的数据交换,LAN又可以发挥其灵活的优势。

  在SAN存储方案中:存储网中物理上分散的存储设备在逻辑上完全一体,具有逻辑上的统一性;适合对数据进行统一管理,降低了管理费用;使用独立的存储网络后,容易进行海量存储扩充;具有很高的容错能力,如果出现某个存储局部点故障,则可以利用网络的可容单点故障进行错误纠正,提高了系统的可靠性;以光纤网络为传输介质,充分利用网络带宽提高了存取速度。具有在线扩充的能力,能满足网络存储中数据的快速增长存储需要,存储网络还具有很大的灵活性,能满足在Internet计算大环境下各种计算变化对存储的要求。

  当然要利用好SAN存储的优秀从逻辑角度上来说,一个SAN的逻辑运行要求有应用程序和管理工具的参与,这些工具能够对多个主机系统中的存储资源进行管理。这种逻辑管理体系结构包括从数据管理应用程序到设备管理在内的几个层次,以及每一层中的管理控制。

  正因为SAN具有海量的扩充能力,不受带宽的限制,适应网络化环境下数据快速增长与多样性的要求。对于设计一种高效'的网络数据存储共享系统来说,基于SAN存储平台是一种理想的选择。

2 基于SAN的存储共享方案构造

2.1基于SAN的存储共享的思想

  利用网络技术,高效的存储共享数据是一种必然,但网络的带宽是有限的,当大量的数据在网上传递时,会造成网络响应时间过长,不能满足人们的需求。同时,传统的分散式存储结构由于分散数据的格式不统一、数据传输中的网络拥挤等自身的局限性,很难从根本上解决数据共享的问题。

  存储局域网SAN(Storage Aiea Network)为此提供了一种解决思路。SAN的主要思想是将LAN上的存储转换到主要由存储设备组成的SAN上,使得数据的访问、备份和恢复不影响LAN的性能,在有大量数据访问时,不会大幅度降低网络性能,同时具有海量扩充的能力,很适应数据量爆炸性增加的存储共享形势。 SAN由存储设备和联网设备组成,可以使磁盘阵列、磁带库等存储设备以高传输速率与多服务器相连,这样就为基于Cilent/Serve:架构下的集群技术的应用奠定了硬件基础。从软件层次上看,SAN还需要一个异构系统数据存储和共享系统来管理这个存储网络。

  在软件角度上看Unix系统具有较强的灵活性强、应用软件丰富、应用广泛的优势;大型机系统具有高可靠性、高可用性、高服务能力(Reliability,Availability,service-ability),以及强大的I/O处理能力等不可替代的优点,并且长期以来积聚了大量丰富的信息资源。大型机系统通常承担关键性的大数据量信息处理的工作,而Unix服务器、Windows服务器等开放系统通常作为服务器来提供与客户相关的前端服务。在数据存储领域,研究如何如何将他们结合起来,以充分利用两类机器的优势,降低数据存储成本,并在存储整合基础上实现异构系统的计算资源整合是目前的一大难点与热点。

  所要设计的新系统就是要设计并实现这样一个基于SAN的存储共享软件系统,用来实现大型机、Unix工作站、Windows NT工作站对磁盘阵列的共享存储,并提供一组统一的应用编程接口(APplication programming In-terface,API),供上层应用程序使用。

2.2基于SAN的共享存储系统总体设计

  本系统的核心思想是基于SAN架构,利用大型机的高性能与丰富的软件支持进行应用数据处理,通过共享的磁盘阵列与通用系统进行数据访问。基于Unix或者Windows平台,两者的原理相同。考虑到Unix的丰富资源,在Unix上进行本系统的设计。

2.2.1 大型机端部分

  大型机端Server部分负责和Unix端进行通信,控制Unix端对共享磁盘阵列的访问,并对各个Unix端的Serve进行管理。大型机端可以运行多个Server,也可以有多台大型机,各自运行多个Server,在Unix端看来,这些Server的功能相同,地位并列,Unix端Server可以任意选择其中之一与之通信实现应有的功能,以如何响应时间最短为选择标准。

2.2.2 Unix端部分

  UnIx端包括Server部分、动态链接库部分及Com-mand群部分。Server部分是运行在通用系统即Unix或Windows上的daemon程序,他负责管理host,Path,media,AP等资源,转发动态库的各种文件操作请求。其中host。指大型机端不同的Server,每个Server认为是一个host;media被定义为共享LD。Path被定义为media所映射而成的本地设备文件;AP则是本地进程。

  Library(动态链接库)是一组函数,其中包括提供给用户的一组API和一些I/O操作的中间处理函数。利用该模块提供的API,Unix端就可以实现对共享磁盘阵列的访问。

  Command群是提供给用户使用的一组命令,可以实现对系统的管理、控制功能以及对共享文件访问的管理和控制。

2.3基于SAN网络存储共享系统的关键设计

  对Unix端要设计如下一些功能进程:

  父进程 也成为总体进程,控制整个系统的其他进程,创建其他的进程。

  监视进程他用于对整个系统的进程的监视,以判别他们是否工作正常。

  控制进程 对磁盘进行管理,管理磁盘上面的共享数据,对大型机的请求进行响应。 通信进程 对Unix与大型机进行TCP/IP通信。

  命令管理进程该进程主要是提供一组命令,通过此命令进行启动或者停止Unix端的Server命令。激活与大型机的联系,激活与磁盘阵列的联系。

2.3.1 Unix端下的Server要完成的功能

  共享磁盘文件资源控制功能;用户名的转换功能;对访问共享文件的AP的监视功能;共享磁盘的构成管理功能;与大型机端Server通信的功能;共享文件的访问闭塞功能;处理管理命令的功能。

2.3.2 Unix端的Library(动态链接库)设计

  Library实际上是一个函数库,是Unix部分主体功能的实现者。其中包括面向用户使用户能够用来访问大型机管理下的共享盘的API,以及对用户不公开的其他处理函数。Library被设计成如图6所示的功能模块。

  应用程序接口(API)部分 该模块是面向用户的函数接口,他们就像一个个普通的C函数一样,用户可以在自己编写的C/C++程序中调用这些的函数来实现共享磁盘文件访问和管理的功能。

  Fprc部分 该模块主要完成与Unix端Server通信获取文件信息,文件打开、关闭等,及其他前期准备和后续处理工作(构造/销毁各种文件访问控制表,分配/释放内存空间等)。

  Fseq部分 此模块是各种文件访问函数的核心部分,他是对大型机文件的数据进行访问的主要处理部分。虚拟访问接口(Virtual Access Interface,VAI)部分此模块位于Library的最底层,所有的磁盘访问任务最终都要通过VAI来实现,他可以对大型机的共享文件进行存取访问。

2.4基于SAN网络存储共享系统的工作原理

  基于SAN的数据存储共享系统工作时,大型机端运行的文件共享Server是运行在大型机上的服务程序,运行的操作系统是大型机上的专用操作系统。他负责与UnixServer连接并接收文件访问请求,再利用大型机的API进行文件操作(非数据访问),之后把文件信息通过TCP/IP返回给Unix端Server,最终通过Unix端的动态库函数进行处理。从本质上看Unix端Server相对于本地的AP而言是一个服务程序,而相对于大型机端Server而言,他又相当于一个客户端,所以有时也将他叫作中间Server。

  大型机端Server与Unix端Server进行通信时,使用的是Socket连接,通过TCP/IP网络进行信息的交互。而在访问磁盘数据时,无论是Unix端还是大型机端,都是通过SAN直接访问磁盘。另外,大型机端Server还负责管理各Unix端Server。

  对于Unix等通用系统而言,虽然disk array与普通本地硬盘不同,但一旦连接到系统则对应用程序而言都是disk设备,访问方式完全一样。在磁盘阵列上存放的是可共享的数据,他的格式是大型机操作系统的文件系统。倘若Unix直接访问这些数据,由于文件系统的不同,所读出的数据必然是乱码,所写入的,也将不是正确的大型机文件系统的文件格式。因此,当利用通用系统进行文件读写时,必须首先通过动态库提供的对大型机格式的文件的访问函数,从大型机端Server取得文件信息并获得文件控制权,这些请求全部经消息队列发送到通用机端Server,再由通用机端Server将返回结果传递给动态库读写函数,直接打开物理盘,进行文件的读写。

  从大型机端的返回的文件信息,包括文件的属性及地址分布、需要访问长度等。通用机端得到这些信息后,将不再需要大型机的介入而直接根据这些文件信息进行访问。这种访问是用被称为raw disk access的方式进行的。raw disk access是将disk看成连续Sector,以byte offset方式访问disk的数据。这种访问方式直接使用disk driv-er进行I/O,由于OS没有参与读写过程,因此效率较高。另外,由于磁盘阵列上的文件系统不能被通用Server识别,也只能用raw disk的方式进行数据访问。

  磁盘阵列上的各个逻辑盘将会通过光纤网络映射为Unix系统的硬盘设备。逻辑盘Lgicai Disk(LD)是diskarray的概念,他可以由多个物理disk(各物理disk的一部分或全部)按照一定的RAID方式构成,可以进行并行访问或存储冗余数据。LD可以叫volume,或media,在OS看来这就是一个raw disk,与普通物理硬盘一样。因为Unix上的设备都被看作特殊文件,访问设备类似于文件访问,设备驱动程序都提供打开和读写接口来操作真正的硬件,另外还提供I/O 口来进行特殊的设备控制或从设备获取信息。与disk相关的special file都在/dev/dsk或/dev/rdsk目录下,dsk目录与rdsk目录的差别是打开rdsk disk设备后,read/write/ioctl等调用将直接发送给硬件,而dsk目录的设备则还经过OS的中间处理。

  通过此过程,基于SAN的数据存储共享系统能很好地进行高效的数据存储共享,能够提供跨平台的文件共享服务,利用SAN的海量扩充潜力,能提供不断增长的数据存储服务。

3 结语

  目前已经在实验室建成以两台Unix端,一台HP服务器模拟的大型机,一个小型光纤网建立的基于SAN的网络数据存储共享存储系统。通过模拟运行数据海量增长情况与数据的跨平台共享表明本系统具有:实现了大型机与Windows及Unix平台对磁盘阵列的共享访问,跨平台性好、接口简单、扩容简单。克服了传统的SCSI存储方案中的扩容有限,数据管理复杂,不直接支持跨平台的数据共享,同时也克服了NAS存储方案中数据仿问量增大时造成整个网络性能急剧恶化的不足,能很好地适应当前网络成熟,数据量急剧增长时用户对数据存储共享的需要,是一种很有应用价值的先进数据存储共享解决方案。

阅读(1166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~