概述
SCSI即小型计算机接口(Small Computer System Interface),指的是一个庞大协议体系,到目前为止经历了SCSI-1/SCSI-2/SCSI-3变迁。SCSI协议定义了一套不同设备(磁盘、磁带、处理器、光设备、网络设备等)利用该框架进行信息交互的模型和必要命令集。SCSI协议本质上同传输介质无关,因此SCSI协议可以在多种介质上实现,如基于光纤的FCP链路协议、基于IP网络的ISCSI协议以及SAS链路协议等。
SCSI协议发展历程
scsi可以划分为scsi-1、scsi-2、scsi-3,最新的为scsi-3,也是目前应用最广泛的scsi版本。
- scsi-1:1979年提出,支持同步和异步scsi外围设备;支持7台8位的外围设备,最大数据传输速度为5mb/s。
- scsi-2:1992年提出,也称为Fastscsi,数据传输率提高到20mb/s。
- scsi-3:1995年提出,ultrascsi(Fast-20)。ultra2scsi(Fast-40)出现于1997年,最高传输速率可达80mb/s。1998年9月,ultra3scsi(utra160scsi)正式发布,最高数据传输率为160mb/s。ultra320scsi的最高数据传输率已经达到了320mb/s。
SCSI协议标准
SCSI协议标准文档是一个大集和,大致可以分为三类:体系结构文档、设备实现文档和链路实现文档。
- 体系结构文档:包括SAM和SPC文档,其中SAM定义了SCSI协议的体系结构模型、SCSI标准集合的功能划分以及SCSI实现标准的通用要求等;SPC为所有SCSI设备类型定义模型的实施标准,此标准指定了所有SCSI设备通用的所需命令和行为,并规定了SCSI启动器设备在向任何SCSI目标设备发送命令时要遵循的要求;
- 设备实现文档:定义了同介质无关实现该设备必要的命令集,例如实现块设备(如硬盘)的SBC命令集,实现流设备(如磁带)的SSC命令集等;
- 链路实现文档:描述了SCSI协议在各种链路协议的实现细节,这些都在单独的协议文档里面定义,例如基于光纤的FC链路协议、基于SAS的链路协议、基于IP链路的iSCSI协议。
SCSI命令集
SCSI命令集文档由SPC(SCSI Primary Commands)、SBC(SCSI Block Commands)、ZBC(Zoned Block Commands)、SES(Enclosure Services Commands)等构成,其中,最常使用的是SPC和SBC文档:
- SPC文档定义了适用于所有SCSI设备的通用命令集,如INQUERY、TUR等命令以及Sense信息格式;
- SBC文档中定义了适用于块设备的命令集,如READ、WRITE、VERIFY等。
SCSI client-server模型
SCSI的Initiator与Target共同构成了一个典型的C/S模型,每个指令都是“请求/应答”这样的方式来实现。
SCSI client-server模型中包含两个重要的角色:
- SCSI启动器:SCSI Initiator Device,SCSI是一个C/S架构,其中Client端成为启动器,负责向SCSI目标器发送请求指令,如SAS主机适配器;
- SCSI目标器:SCSI Target Device,处理SCSI指令的Server端称为目标器,它接收来自启动器的指令并解析处理,如SAS硬盘。
相关参考
- 《SCSI Architecture Model - 5(SAM-5)》
- 《SCSI Primary Commands - 4(SPC-4)》