ISCSI技术及其发展和应用-1

Posted by

一、前言

ISCSI(INTERNET SCSI)是由Internet Engineering Task Force(IETF)开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, ISCSI能够在LAN,WAN甚至INTERNET上进行数据传送,使得数据的存储不再受地域的现在。

计算机行业面临严峻的考验,信息数据呈几何级别地增长,迅速地填满了系统内一切可用的存储空间。传统的解决办法就是安装一套光纤存储区域网络(FC SAN)。在SAN环境下,所有的服务器将被整合到一个存储池内,共享所有的资源,用户可根据服务器的实际需求来分配资源。而且,用户还可以扩大逻辑分区的容量大小,为应用程序分配一个临时的磁盘分区,等任务结果之后,再将这部分资源重新收回来,归还存储池。然而成本昂贵,是部署光纤存储区域网络的最大缺点。如果用户想将一台服务器接入到FC SAN当中,需要购买一个主机总线适配器(售价约在1,000美元左右),而且,光纤交换机每增加一个端口,需要花费800~4,000美元不等,具体数目视情况而定。这还不算什么,最糟糕的情况就是,当你花了一大笔钱之后,才发现你从A供应商那儿购买的主机总线适配器、B供应商那儿购买的磁盘阵列、C供应商那儿购买的交换机竟然是不兼容的,无法构筑一套光纤网络。众所周知,光纤设备的互操作性一向是不太稳定的。除非你按照厂商提供的SAN硬件兼容器件单去采购,否则,网络即使部署起来了,可能也无法正常运作。

ISCSI技术横空出世,使情况大为改观,它的价格不仅较光纤系统便宜许多,而且管理起来更加方便。ISCSI依然支持标准的TCP/IP协议,也就是说,用户可使用标准的千兆级以太网传输协议,通过Cat5线缆和任意的交换机产品,将服务器与磁盘阵列连接在一起,并且能够提供接近FC SAN的性。

二、iSCSI技术

1、ISCSI的发展史

2、ISCSI的技术细节

首先介绍一下SCSI的体系结构

SCSI-3 标准的SCSI模型

该模型定义了各层的概念,实体和他们之间的相互作用,他规定了服务/客户机模型中initiator和target。

SCSI Initiator and Target Interaction

SCSI Command Descriptor Block (CDB)

ISCSI术语

在ISCSI中使用网络实体这个概念,网络实体指的是连接IP网络的设备或网关。网络实体必须包含一个或多个网络入口,在一个网络实体中的ISCSI节点能够用其中的任意一个网络入口访问IP网络。ISCSI节点实在网络实体中用名称标识的initiator或target。一个SCSI设备就是该节点的ISCSI名称。

网络入口也是网络实体的重要组成部分。对initiator来说网络入口就是他的IP地址。对target来说,其IP地址和TCP端口就是他的网络入口

下图是ISCSI服务器和客户端的组成部分

当initiator和target通信时,他们之间通过网络端口建立连接,initiator和target之间的多个连接建立一个会话。

命名和寻址

ISCSI协议为initiator和target定义了一套命名和寻址方法。所有的ISCSI节点都是通过他的ISCSI名称被标识的。这种命名方式使得ISCSI名称不会与主机名混淆。共有两种ISCSI命名格式:iqn (iSCSI qualifier name) 和 IEEE EUI。Iqn的格式如下:iqn.1987-05.com.Cisco.00.9f9ccf185aa2508c7a168967ccf96e0c.target1.

通过ISCSI名称,可以做到:

1、 多个initiator和target共享一个IP地址。

2、多个initiator和target可以通过多个IP地址被访问。

3、 为节点通过防火墙进行访问提供了一种方式。

ISCSI协议除了对ISCSI名称进行区分大小写的比较外,对ISCSI名称不做任何处理。

ISCSI协议遵循标准的IP寻址规范 域名:端口号。域名可以使IPV4和IPV6地址,也可以是域名。对ISCSItarget,端口号可以随地址指定,如果不指定,默认为3260

ISCSI协议

ISCSI协议是将SCSI的远程过程调用(rpc)映射到IP协议的过程。ISCSI协议提供了独立于他所携带的SCSI CDB的层的概念。ISCSI请求传递SCSI命令,ISCSI响应处理SCSI响应和状态。

与SCSI协议一样,ISCSI也使用initiator和target的概念。传送的信息被称为协议数据单元(PDUs)。同样的,对initiator来说,传输方向是分别定义的。为了提高性能,ISCSI允许命令或响应及其相关数据在单独的iSCSI PDU中传输。

ISCSI会话

ISCSI initiator和target之间最高级别的通讯路径就是他们之间的会话。ISCSI定义了两种方式的会话:正常的操作会话和initiator发现target的发现会话。

会话是通过会话ID进行标识,他由initiator和target组成。在一个会话中,TCP连接可以加入,也可以移出,所有的连接都是在同一个initiator和target中。所有在一个会话中的连接都共享一个连接ID。

ISCSI会话是通过ISCSI登录建立的,该会话被用来标识到某个具体SCSI I_T连接的所有TCP连接。同一个会话里可能有一个或多个连接。当initiator通过默认端口或指定端口与target建立连接时,登录过程就开始了,initiator和target互相认证并建立安全协议。在登录阶段,ISCS Iinitiator和target会协商建立多种连接属性。

ISCSI序列

ISCSI协议使用多个寄存器来维护命令,状态和数据的顺序。每个寄存器是一个32位的无符号的整数计数器。寄存器的数量是由initiator和target在iSCSI PDU中进行交流,initiator和target还会用NOP-OUT/IN PDU去同步顺序和寄存器数量。