code学习

SNIA 共享存储模型

一. 以服务器和存储的为中心的架构

在讲SNIA 共享存储模型之前,先看其他的2个体系结构:

1. 以服务器为中心的IT 体系结构

       在传统的IT 体系结构中,存储设备通常只连接到单个服务器,为了增加容错能力,有时也会连接到两个服务器,但在任一时刻仅一个服务器能实际地直接使用存储设备。 在这种方法中,服务器和存储之间一般通过SCSI(The Small Computer System Interface)电缆连接在一起的。

       在这种体系下,如果所有服务器都失效,就无法读取存储设备了。 虽然现在技术进步,磁盘都是白菜的价格,容量也是大增,从72G 到300G,但是每台服务器只能安装有限数据的I/O卡(如SCSI卡),并且SCSI 电缆长度最大只允许25m。 所以, 用这种方法连接到服务器的存储数量是有限的。

2. 以存储为中心的IT 体系结构

       存储网络将多个存储设备连接到一起,在计算机和存储设备之间的连接,通过这个网络就可以完成。 这样存储设备也会强化。存储网络也解决以服务器为中心的IT体系结构的问题。

二.  SNIA 共享存储模型

       在传统意义上,每个计算机都可以配置直接附接的存储设备(DAS:Direct Attached Storage)。 但是为了在多个服务器和工作站之间共享存储资源,就需要一个连接目标机器和源机器的对等网络。

     一般来说,共享存储体系结构主要划分为SAN(Storage Area Network) 和 NAS(Network Attached Storage)两大类。

       (1)对于SAN,网络基础设施可以是光纤通道,也可以是千兆或者万兆以太网,其上传输的数据类型是SCSI块。

       (2)NAS: 典型的网络基础设施是以太网,其上传输的存储数据类型基于文件。

       SNIA 把一个共享存储环境从上到下划分为三层:

              Application(应用)

              File/Record(文件/记录)

              Block(块)

       (1)SNIA 对应用没有进一步的描述,它被看成是该模型的用户。 一般来说,应用支持诸如在线事务处理,数据挖掘或Web 服务等用户行为。

       (2)文件/记录层包含数据库和文件系统。

       (3)块层:包括存储设备和块聚合。 SNIA 共享存储模型使用术语“聚合”代替通常使用的术语“存储虚拟化”。

       (4)服务子系统,这也是SNIA的一部分。 它定义了管理其他部件的功能,包括存储特性的应用,比如管理,安全,备份,可用性维护以及容量规划等。

       SNIA 共享存储模型(SSM: Shared Storage Model)为运行在计算机上的用户应用与底层的存储设施建立了普遍的联系。       具体地讲,它定义了下列成分。

1. 互联网络

       互联网络表示存储网络,即把共享存储环境的各个成分互相连接的基础设施,网络必须能够提供高的性能和易于扩展的连接。在实际的安装中,当前主要使用光纤通道、千兆位或万兆位以太网以及InfiniBand等传输技术。

2. 主计算机

       主计算机是至少会从共享存储环境获取存储的计算机系统,在它们上面可能要实现某些跟存储相关的功能。主计算机通过主机总线适配器或网卡连接到存储网络。

3. 物理存储资源

       物理存储资源包括简单的硬盘驱动器、磁盘阵列、磁盘子系统和控制器,以及磁带驱动器和磁带库。物理存储资源借助冗余数据通路,诸如抽点快照和镜像这样的复制功能,以及 RAID (Redundant Array oflndependent Disks,独立磁盘冗余阵列)等措施来预防其失效。

4. 存储设备

       存储设备是存储数据的专门的物理存储资源。

5. 逻辑存储资源

       逻辑存储资源是物理存储资源、存储管理功能或者它们的结合的服务或抽象合成。典型的例子有卷、文件和数据移动器。

6. 存储管理功能

       存储管理功能是一种服务,它监视和检查共享存储环境,或者实现逻辑存储资源。这些功能典型地是用在物理存储资源或主计算机上的软件实现。

       SNIA共享存储模型定义的 4个层次,即存储设备、块聚合层、文件/记录层和应用。其中,文件/记录层又包括数据库和文件系统。块聚合功能可以实现在共享存储环境的不同的点上,可以在主机上,可以在存储网络上,也可以在存储设备中。存储设备和块聚合层加在一起又被称作块层。

       把实际上是模型的用户的应用也作为模型的一个层次,主要是为了说明它们被链接的位置。因此,下面我们主要讨论其他 3个层次。

       文件/记录层由数据库和文件系统构成。诸如 SQL Server和 Oracle这样的数据库使用记录格式作为处理单元,而大多数的其他应用则普遍使用文件作为处理单元。

       文件/记录层把数据库记录和文件映射到存储设备的面向块的卷。文件由许多个字节组成,因此在SNIA共享存储模型中被看成是字节向量。文件系统和数据库操作文件目录或记录、检查访问、分配存储空间和缓存数据。因此文件/记录层工作在由它下面的块层提供的卷上工作。卷本身由被称作块向量的多个块构成。数据库系统通过表和表空间把一个或多个记录映射到卷,即

       记录组 —> 表 —> 表空间 —> 卷

同样地,文件系统借助文件把多个字节映射到卷,即:

       字节 --> 文件 --> 卷

       某些数据库系统也能使用文件即字节向量工作。在这种情况下,块向量通过文件系统被组合成字节向量,这是另一个层次的抽象。由于这个附加的抽象层次消耗性能,所以仅小的数据库以面向文件的方式工作。在大的数据库中,出于性能的考虑免除了字节到块的附加映射层。

文件/记录层的功能可以在不同的点上实现:

1. 全部在主机上

       在这种情况下,文件/记录层完全在主机上实现。数据库和面向主机的文件系统就是   以这种方式工作的。

2. 既有客户成分也有服务器成分的实现

       文件/记录层也可以用分布式方式实现。在这种情况下,功能被分布到客户机和服务器上。客户成分在一台客户计算机上实现,而服务器成分在下列设备上实现:

 (1) NAS/文件服务器

       一个 NAS/文件服务器是一台特别的主计算机,它通常在本地连接专有的存储设备。

 (2) NAS头湍

       NAS头端也提供文件服务,但它可以访问通过存储网络连接的外部存储。NAS头端也被称作NAS 网关。

       在使用分布式方式的实现中,客户和服务器成分在诸如 NFS(Network File System,网络文件系统或 CIFS (CommonInteriiet File System,通用因特网文件系统)这样的网络文件系统上工作。

       对于高层应用而言,有用的信息无论是以记录还是文件的形式出现,最终都要以连续的数据字节的方式存储到磁盘或磁 上,人们把这些连续的数据字节称作数据块 (block)。数据块的大小以及把记录或文件映射到块上的方式,都可能因系统而异。然而在任何情况下都需要采用一种方法来把数据块来跟记录或文件相关联。这种功能由块聚合层执行。术语“块聚合”也常被称作存储虚拟化。

      块聚合意味着把物理的块或块向量聚合成逻辑的块或块向量。为此,块层把磁盘存储设备的物理块映射成逻辑块,并使得它们能够以卷 (块向量)的形式提供给高层。这可以是 1:1 的直接映射,也可以是首先把物理块聚合成逻辑块,然后再以卷的形式传递到高层。在SCSI的情况下,存储设备层的存储设备以一个或多个称作逻辑单元 (LU:Logical Unit)的形式呈现给用户。

       存储设备是存储数据的物理存储资源,包括磁盘、磁带等。

       块层的其他任务是使用所谓的逻辑单元号(LUN:Logical Unit Number)给逻辑单元做标记,缓存以及访问控制。 块聚合可以用于多种不同的目的,如:

       (1)卷/空间管理

              卷管理的典型任务是聚合多个小的块向量形成一个大的块向量。 在SCSI层次上,这就以为着聚合多个逻辑单元形成一个大的卷,卷又被传到诸如文件/记录层这样的高层。

       (2)条块

              在条块中,不同存储设备的物理块被聚合成一个卷。 这样做可以增加读和写操作的I/O 吞吐量,因为负载被分布到多个物理存储设备上。

       (3)冗余

              为了预防物理数据存储设备的失效,可以采用RAID 和远程镜像。 另外,抽点快照(即时复制)技术也可用于数据的冗余存储。

块层和块聚合功能可以在共享存储环境的不同点上实现:

(1)在主机上

       在主机上的块聚合功能可以在逻辑卷管理(LVM:logical Volume Management)软件中,也可以实现在设备驱动程序中或主机总线适配卡中。

(2)在存储网络中

       在存储网络中的块聚合功能可以放在存储网络的连接设备中,也可以放在存储网络中的特别的服务器中。

(3)在存储设备中

       块聚合功能也可以用诸如RAID 或卷管理功能这样的形式实现在存储设备中。

一般来说,各种块聚合功能也可以在共享存储环境的不同点上结合配置。 如,在磁盘子系统中使用RAID的同时,可以在主计算机上的卷管理程序附加从一个磁盘子系统到另一个磁盘子系统的镜像。 这样,RAID 预防物理磁盘的失效,主机上卷管理程序实现的镜像预防一个磁盘子系统的完全失效。 这种配置还可以增强读操作的性能,因为卷管理程序可以同时从镜像的两边读取数据。

继续阅读