第三章 iSCSI和SCSI
3.1 iSCSI概述
iSCSI 协议是一个Internet 草案标准,用来定义在TCP/IP协议上传送SCSI命令。2001年1月IBM和Cisco首先提出了iSCSI的草案标准。于同年8月提交给IETF的IP Storage(IPS)工作组进行标准化。2001年7月IETF第一次定义了iSCSI草案标准。根据草案,许多公司已开发了该类产品。
iSCSI允许在使用TCP/IP协议的网络上传输SCSI I/O命令和数据,就像将SCSI命令映射到光纤通道、并行SCSI和SSA介质上一样。在服务器端安装iSCSI设备驱动器,接收应用程序的I/O请求,再使用iSCSI协议将它们在LAN上传输。目标器存储设备可以直接附着于LAN,也可以使用路由器(协议,转换器)来连接到LAN。第二种方法中,在LAN的另一端存在一个光纤通道端口,可以连接到一个支持光纤通道附件的存储设备。这种方案允许不带有iSCSI端的存储产品通过iSCSI协议被访问到,也允许服务器在没有光纤通道主机总线适配卡的情况下访问设备。与其它解决方案相比,iSCSI有一下一些优点:
1.可连接性:在NAS和SAN连接到设备时可以使用iSCSI。ISCSI设备可放于现有的包含多种应用的LAN上,或专用于存储I/O的LAN上,或只连接到一个处理器(DAS)的LAN上。TCP/IP是一种已经比较成熟的协议,许多IT人员对它已经很熟悉,这就降低了大量的管理和培训费用。
2.介质:iSCSI附着于IP网络,与单纯的光纤通道SAN比较起来,可以支持更长的传输距离。
3.I/O协议:iSCSI使用SCSI I/O协议,因此它是基于块的I/O,避免了不合适数据库或者其它不使用文件协议的应用的尴尬。可连接多个独立的网络,可使用一般的交换机,不像光纤通道那样要特定的交换机。
4.管理:iSCSI的管理与其它直接附着的SCSI设备的管理是一样的。从处理器的角度看,连接到iSCSI的磁盘卷是可见的。任何支持附着于SCSI卷的数据备份方法对于iSCSI同样是可行的。与光纤通道SAN相比,iSCSI可以利用已经促步完善的网络管理工具和人力技能的优势。
5.性能:同样基于Ethernet,iSCSI的性能要优于NAS,因为它直接对SCSI设备进行操作,而不需要在文件I/O协议和SCSI协议之间进行转换。速度可以达到10Gigabit,可以和OC-192 SONET(同步光纤网络)相媲美。
6.费用:一般而言,同样情况下,一个iSCSI SAN的费用要低于光纤通道SAN的费用,从硬件角度看,以太网主机适配器一般要比光纤通道主机适配器便宜,如果iSCSI直接附着与SAN,那就根本不需要新的主机适配卡了。iSCSI SAN的建立要比光纤通道SAN的建立快,所需的新技术也少一些。由于不需要支持文件系统、文件共享协议和其它集成到NAS产品中的应用,同等条件下,iSCSI盘设备要比一个NAS设备便宜。
在I/O操作频繁的情况下,iSCSI的优势尤其明显。
3.2 iSCSI协议分层
下图简易给出了iSCSI协议的分层:
3.3 SAN和iSCSI的关系
就如同在LAN和WAN上,客户机和服务器要进行通信,必须由相应的通信机制(常见的有TCP/IP协议等),在服务器和存储设备通过SAN通信时,也需要相应的机制,iSCSI就是其中一种很有发展潜力的协议。由于iSCSI从本质上来讲就是SCSI命令封装在TCP/IP协议中,在详细讲述iSCSI之前,有必要先介绍SCSI及相关内容。
3.4 SCSI
在最高层,SCSI是向I/O设备请求服务的接口族,它包括了硬件驱动器、磁带驱动器、CD和DVD驱动器、打印机和扫描仪。在SCSI术语中,一个I/O设备被称为一个“逻辑单元”(LU,logical Unit).SCSI采用客户机---服务器结构。一个SCSI接口的客户机被称为“启动器”。启动器发出“命令”向一个逻辑单元请求服务。在逻辑单元上的“设备服务器”接收SCSI命令并处理它。一个“SCSI传输”将客户机---服务器SCSI协议映射到一个特有的交互连接。启动器是SCSI传输的一个终点。一个目标器包含多个逻辑单元。每个逻辑单元在目标器内有一个地址,称为逻辑单元号。一个SCSI任务是一个SCSI命令或者一个SCSI命令的逻辑集。一些逻辑单元支持多个挂起(排队)任务,任务队列由目标器管理。目标器使用启动器提供的“任务标签”来区分任务。在任意给定时刻,只有一个任务的一条命令可以被执行。每个SCSI命令导出一个可选的数据阶段和一个必须的应答阶段。在数据阶段,信息能从启动器到目标器(比如写操作),也能从目标器到启动器(比如读操作),或者双向。在应答阶段,目标器送回操作的最终状态,包括任何错误。一个应答中止一个SCSI命令。一个命令描述块是一个数据结构,包含了从启动器到目标器要处理的命令参数。
SCSI是一种通用的支持块级别访问的技术,它的瓶颈在于SCSI总线
的长度。目前由一些协议用来扩展SCSI总线长度:光纤通道,SCSI封装协议和iSCSI。一根SCSI总线上最多带有16个设备,它们可以是任意
多个启动器和目标器的组合,但是一个可用的系统至少要有一个启动器和一个目标器。SCSI协议为每一个SCSI设备指定了一个ID号(地址),用来唯一识别设备,在带有16个SCSI设备的系统中,ID号从0编号到15。每一个目标器又可以细分为多个逻辑单元,每个设备上最多有8个逻辑单元。
3.5 SCSI命令描述块
从应用客户端到设备服务器的通信命令的数据结构称为命
令描叙块(CDB)。一条SCSI命令或者一组相关的命令称为“任务”。任何时候,一个任务中只有一条命令被执行。SCSI命令执行后的结果是一个可选的数据阶段和一个状态阶段。在数据阶段,写命令中数据从启动器到目标器,读命令中数据从目标器到启动器;在状态阶段,目标器回送操作的最后状态。状态应答中止一条SCSI命令或任务。SCSI驱动的基本功能是根据应用程序提出的请求建立SCSI命令描叙块(CDB),并将CDB发送到iSCSI层,SCSI驱动也从iSCSI层接收CDB并将数据转发到应用层。CDB分为6字节、10字节和12字节3种,下图是一个基本的16字节SCSI CDB。其中,对于操作码部分,我在附录中给出了所有SCSI设备的通用命令,请参看。