本文基于主要验证软件iSCSI实现机制,在linux操作系统上进行SCSI目标端(target,也
可以称之为服务端)和发起端(Initiator,也可以称之为客户端)的安装配置,测试iSCSI的通
讯过程,为在实际的应用中将专用存储设备配置规划为基于iSCSI架构的存储网络奠定基础。
在以太网上进行数据块传输的标准,提供了可以在IP 协议上层传输SCSI指令和数据的表示规则,
其基本上是一个表示层协议。SCSI命令和响应在两个具有iSCSI功能的设备之间发送,设备可以
是多用途的计算机或者特定用途的存储设备。简单地说,iSCSI 可以实现在IP网络上传递和运行
SCSI 协议,使其能够在诸如高速千兆以太网上进行数据存取,实现了数据的网际传递和管理,
基于iSCSI建立的存储区域网(SAN)与基于光纤的FC-SAN相比,具有很好的性价比。由于IP
网络的广泛应用,iSCSI能够在LAN、WAN甚至internet上进行数据传送,打破了数据存储的地域
限制。iSCSI继承了SCSI协议,因此涉及的端点名称相同,实质上,iSCSI只是定义了如何基于IP
网络实现对SCSI命令和数据的传递机制,不是SCSI的升级或者改造。
在SCSI协议中包括两类端点:
>1 Initiator -- 发起器或客户端
>2 Target -- 目标器或服务端SCSI-3 模型如下图:
发起器(Initiator)是一个在SCSI总线上触发任务的设备,目标器是执行该任务的设备。计算
机的主机适配器(Adapter)是一个典型的发起器,磁盘驱动器则是一个典型的目标器。在SCSI规
范中没有明确说明在SCSI配置中可以有多少个发起器和目标器,只是说明了它们的总的数目,这个
数目随SCSI规范的版本不同而不同。一个最小的配置至少需要一个发起器和一个目标器。在本文中,
将把发起器称为客户端,将目标器称为服务端以方便理解。在iSCSI连接中,服务端(target)在网
络上宣布其存在,客户端(initiator)绑定到一个服务端。
iSCSI 服务端和客户端的通讯就是一个在网络上封包和解包的过程,在网络的一端,数据包被封
装成包括TCP/IP 头、iSCSI 识别包和SCSI 数据三部分内容,传输到网络另一端时,这三部分内容分
别被顺序地解开。为了保证安全,iSCSI 有约定操作顺序。在首次运行时,客户端(initiator)设备需
要登录到服务端(target)中。任何一个接收到没有执行登录过程的客户端的iSCSI PDU (iSCSI
Protocol Data Units,iSCSI 协议数据单元)服务端都将生成一个协议错误,并且关闭连接。在关闭
会话之前,服务端可能发送回一个被驳回的iSCSI PDU。
在工作时,iSCSI使SCSI数据块由原来的SCSI总线连接扩展到internet上,这一过程有些产品通过
硬件来实现,这种硬件产品被简称为TOE(TCP Offload Engine),随着近年来服务器芯片技术的不断
发展,服务器处理能力日益强劲,目前更为普遍的是通过软件来实现SCSI数据块的封装过程。这种软件
通常被称为iSCSI Initiator软件。软件方式的iSCSI客户端,通过普通以太网卡来进行网络连接,iSCSI协议
的封装和处理通过运行软件实现,但是需要占用CPU资源。
下图是一个简单的基于iSCSI架构示意:
iSCSI属于端到端的会话层协议,它定义的是SCSI到TCP/IP的映射,即Initiator将SCSI指令和数据封
装成iSCSI协议数据单元,向下提交给TCP层,最后封装成IP数据包在IP网络上传输,到达Target后通
过解封装还原成SCSI指令和数据,再由存储控制器发送到指定的驱动器,从而实现SCSI命令和数据在
IP网络上的透明传输。它整合了现有的存储协议SCSI和网络协议TCP/IP,实现了存储与TCP/IP网络的
无缝融合。
3、iSCSI设备连接方式
根据主机端HBA卡、网络交换机的不同,iSCSI设备与主机之间有三种连接方式,分别为:
iSCSI存储也通过以太网线连接到以太网交换机上,或直接连接到主机的以太网卡上。在主机上安装Initiator
软件。安装Initiator软件后,Initiator软件可以将以太网卡虚拟为iSCSI卡,接受和发送iSCSI数据报文,
从而实现主机和iSCSI设备之间的iSCSI协议和TCP/IP协议传输功能。其他两种方式与第一种方式的差别主要是
采用了专业的硬件设备,即TOE网卡和iSCSI HBA卡,将协议转换工作交由专业设备来完成,减轻主机CPU的
负担,提高系统执行效率。
本文所做的实验,采用第一种连接方式。在《iSCSI 在Linux下的模拟实验(二)》将说明相关软件的
安装配置过程。