存储技术综述:SCSI协议支撑存储发展的脊梁

    SCSI协议的主要功能是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI协议可谓是最重要的脊梁。 
  
     操作系统与SCSI I/O
  
    操作系统对外部设备(如磁盘、磁带、光存储、打印机和扫描仪)的I/O操作,可以通过SCSI协议来实现,一般情况下SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。 
  
    因为SCSI协议层位于操作系统和外部资源之间,它具有不同的功能组件。例如,应用程序一般将数据作为文件或者记录来访问。尽管数据最终都将在磁盘或者磁带介质上以数据块的方式存放,但是文件的检索需要一系列功能将未加工的块数据装配成应用程序能够操作的连续文件。 
  
    这个过程的第一步由应用程序通过操作系统所连接的文件系统承担。文件系统以目录、文件夹和文件的方式来创建人们可读的数据抽象。当一个用户的应用程序打开一个文件时,会引发一系列的进程。它们使用底层SCSI命令,控制数据块从存储系统到内存的安全传输。因此在文件系统层次中,数据传输在文件描述和块I/O之间进行。 
  
    正像文件系统描述了对用户应用程序数据的抽象一样,物理存储设备被描述成文件系统的抽象。例如,在Windows中的E驱动器或者Unix中的/dev/dsk2可以是一个单独的磁盘、一个大磁盘的一部分或者多磁盘的条带阵列。文件系统依赖于卷管理功能,它将各种存储设备看作可以并发的、很容易访问的资源。设备的虚拟化将物理存储转换成逻辑存储,并且承担了在磁盘上放置数据块所需的复杂任务。文件/数据块转换和映射功能可以像一个单独的卷管理应用程序那样复杂,也可以像适配卡设备驱动程序接口那么简单明了。例如,Windows NT提供了Windows磁盘管理程序,为物理磁盘分配逻辑驱动器名。适配卡的设备驱动程序负责将它的资源作为一个物理SCSI实体,出现在Windows磁盘管理程序中。Windows磁盘管理程序可以为这些资源分配逻辑名,文件系统按顺序使用这些逻辑名为目录和文件确定位置。 
  
    如图一所示,逻辑抽象的层次从实际的物理SCSI设备一直到同主机系统的连接。在操作系统层次,一般的访问方法允许对SCSI设备进行统一的处理,而不考虑它们在系统中的物理连接。在保存文件时,文件系统并不关心逻辑驱动器是一个SCSI单元、一个Fibre Channel阵列还是千兆以太网的某个IP存储设备。在各种情况下,逻辑实体和物理存储的映射完成主机系统和合适的目标SCSI命令的发送,它在二者之间用来传输数据块。



    不考虑潜在的通道,操作系统对物理设备的描述是通过总线/目标/LUN三元组定义的,这种三元组来自于并行SCSI技术。总线描述了主机上潜在的几个SCSI接口之一,每一个都支持一个单独的磁盘串。目标代表了串上一个单独的磁盘控制器,窄SCSI一共可以有7个,宽SCSI可以有15个。LUN标志允许控制器管理额外的磁盘,例如一个RAID设备。 
  
    总线/目标/LUN三元组和逻辑设备标识符之间的映射为物理设备提供了到高层文件系统的端口。因为Fibre Channel和IP存储是串行通信,没有总线设备,为了和操作系统的SCSI名称相兼容,总线标识符可以伪造。例如,一个单独的服务器中的两个IP存储网卡可以具有不同的总线标识符以模仿SCSI适配器配置。厂商不同,具体实现也不同,但是设备驱动器程序遵守操作系统的标准SCSI访问方法。 
  
    总线/目标/LUN标识符可以进一步映射到某个传输的寻址条件上。例如,FCP(Fibre Channel Protocol,光纤通道协议)将总线/目标/LUN映射到DI(device identification,设备标识符)/LUN对上。因此,物理存储的表示有两个组成部分。一个是对于操作系统,使用大家都熟悉的基于SCSI三元组的可访问实体;另外一个是针对某个传输,以适应更改拓扑结构的寻址条件。



    在这一层下面,数据块传送的引发器(initiator)和目标相互交换SCSI-3命令和状态。SCSI引发器和目标之间的关系定义在SAM-2中,对于特定的SCSI-3实现有不同的标准文档。 
  
    SCSI体系结构模型 
  
    SCSI-3标准家族引进了几种新的SCSI命令变体,其中包括串行SCSI-3和在磁带中进行数据流和介质处理所需要的特殊命令组。如图二所示,命令层独立于协议层,协议层用来在设备之间传送SCSI-3命令。这使得取代SCSI-3同操作系统之间的命令接口下的不同传输更具有灵活性。例如,在视频编辑系统中,外部设备可以使用IEEE 1394 FireWire处理高速但是有距离限制的SCSI-3串行总线事务。 
  
    SCSI体系结构定义了引发器(主机)和目标(例如磁盘、磁带)之间作为客户/服务器进行交换的关系。SCSI-3应用程序客户端在主机上,它描述了高层应用程序、文件系统和操作系统的I/O请求。SCSI-3设备服务器在目标设备中,负责对请求做出响应。客户/服务器请求和响应通过底层传输的方式进行交换,并且由合适?SCSI-3服务发送协议进行管理,如FCP协议或者千兆串行链路的iSCSI协议。因此,SCSI-3协议和SCSI-3传输协议就区分开了,前者从主机的应用程序中对I/O请求提供服务,后者通过服务发送子系统传输数据。


    因为一个引发器可能向一个目标发送多个请求,因此客户/服务器模型必须支持并发请求/响应交换,并且记录每个交换的状态。状态和诊断功能可以由两个实体之间的任务管理程序负责。 
  
    SCSI-3体系结构模型是结构化的,因此主机系统的I/O请求可以不考虑底层的服务发送子系统就获得服务。因此,一个单独的文件服务器可以管理不同目标类型的I/O操作。例如,一台服务器在千兆以太网接口上可以具有直接的SCSI目标,也可以具有串行SCSI目标。一些NAS系统使用之间连接的存储提供文件服务,使用千兆传输的串行SCSI提供数据块、存储扩展和磁带备份服务。 
  
    相关链接:SCSI-3与SAM-2 
  
    SCSI(Small Computer System Interface,小型计算机系统接口)是一种高性能计算机外部设备接口。通过这个接口,所有连接到PC的外部设备均可通过HBA(Host Bus Adapter,主机总线适配器)实现彼此间独立于主机的数据传输和分发。 
  
    从1982年SCSI的前身SASI(Shugart Associates Systems Interface)到1986年被ANSI接受为标准(X3.131-1986),再到目前乃至将来各种SCSI相关标准和技术的不断推出,SCSI已经走过了20多年的历程。 
  
    SCSI是一种规范,是一组协议族。第三代SCSI最初被称为SCSI-3,以区别于SCSI-2。但当SCSI-3体系结构模型SAM(SCSI-3 Architecture Model)被修改时,这种体系结构模型就被称为SAM-2了。