自由遁 2007-11-15 13:10
ISCSI技术及其发展和应用
[b]一、前言[/b]
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的性。
[b]二、iSCSI技术[/b]
1、ISCSI的发展史
2、ISCSI的技术细节
首先介绍一下SCSI的体系结构
[img=553,172]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image002.gif[/img]
SCSI-3 标准的SCSI模型
该模型定义了各层的概念,实体和他们之间的相互作用,他规定了服务/客户机模型中initiator和target。
[img=553,270]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image004.gif[/img]
SCSI Initiator and Target Interaction
[img=371,261]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image006.gif[/img]
SCSI Command Descriptor Block (CDB)
[b]ISCSI术语[/b]
在ISCSI中使用网络实体这个概念,网络实体指的是连接IP网络的设备或网关。网络实体必须包含一个或多个网络入口,在一个网络实体中的ISCSI节点能够用其中的任意一个网络入口访问IP网络。ISCSI节点实在网络实体中用名称标识的initiator或target。一个SCSI设备就是该节点的ISCSI名称。
网络入口也是网络实体的重要组成部分。对initiator来说网络入口就是他的IP地址。对target来说,其IP地址和TCP端口就是他的网络入口
下图是ISCSI服务器和客户端的组成部分
[img=395,422]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image008.gif[/img]
当initiator和target通信时,他们之间通过网络端口建立连接,initiator和target之间的多个连接建立一个会话。
[b]命名和寻址[/b]
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
[b]ISCSI协议[/b]
ISCSI协议是将SCSI的远程过程调用(rpc)映射到IP协议的过程。ISCSI协议提供了独立于他所携带的SCSI CDB的层的概念。ISCSI请求传递SCSI命令,ISCSI响应处理SCSI响应和状态。
[img=399,164]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image010.gif[/img]
与SCSI协议一样,ISCSI也使用initiator和target的概念。传送的信息被称为协议数据单元(PDUs)。同样的,对initiator来说,传输方向是分别定义的。为了提高性能,ISCSI允许命令或响应及其相关数据在单独的iSCSI PDU中传输。
[b]ISCSI会话[/b]
ISCSI initiator和target之间最高级别的通讯路径就是他们之间的会话。ISCSI定义了两种方式的会话:正常的操作会话和initiator发现target的发现会话。
会话是通过会话ID进行标识,他由initiator和target组成。在一个会话中,TCP连接可以加入,也可以移出,所有的连接都是在同一个initiator和target中。所有在一个会话中的连接都共享一个连接ID。
[img=419,155]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image012.gif[/img]
ISCSI会话是通过ISCSI登录建立的,该会话被用来标识到某个具体SCSI I_T连接的所有TCP连接。同一个会话里可能有一个或多个连接。当initiator通过默认端口或指定端口与target建立连接时,登录过程就开始了,initiator和target互相认证并建立安全协议。在登录阶段,ISCS Iinitiator和target会协商建立多种连接属性。
[b]ISCSI序列[/b]
ISCSI协议使用多个寄存器来维护命令,状态和数据的顺序。每个寄存器是一个32位的无符号的整数计数器。寄存器的数量是由initiator和target在iSCSI PDU中进行交流,initiator和target还会用NOP-OUT/IN PDU去同步顺序和寄存器数量。
自由遁 2007-11-15 13:10
[b]命令编号[/b]
在ISCSI会话中,所有的命令都用命令序列号进行编号,命令序列号用来保证命令按顺序传送,而不管它是通过那个TCP连接传送的。命令序列开始于第一个登录命令,并随后续的命令而增加。ISCSI目标层负责将命令按命令序列号的顺序送到ISCSI层。除了需要立即传送的命令除外,在这种情况下,命令序列号不会增加,ISCSI目标层会立即将他传送到ISCSI层。
[b]状态标号[/b]
与命令序列号一样,状态响应也用状态序列号进行编号。
[b]数据顺序[/b]
数据和传输请求PDUs通过数据序列号寄存器和传输请求寄存器进行排序,以此来保证数据的顺序传送。对于读操作,数据序列号从0开始,以后每次增加1。对于写操作,数据序列号从0开始,以后每次增加1。
[b]iSCSI PDUs[/b]
TCP对于ISCSI包的有效载荷是PDUs。所有的iSCSI PDUs都以一个或多个报头开始,其后跟着0或数据段。
第一个段为基本报头段,48字节,其他段跟在其后,基本报头段是必须的,其他是可选的
[img=553,296]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image014.gif[/img]
iSCSI PDUs的类型包括ISCSI的请求和响应,文本的请求和响应,登录的请求和响应等,以下是一个ISCSI请求命令的头格式。
[b][img=554,236]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image016.gif[/img][/b]
[b]ISCSI的错误处理[/b]
错误恢复的重要部分时保留足够的状态信心以此来恢复数据。ISCSI用两种方式来处理错误:重做和再分派。Initiator会重复传送丢失的数据PDU。再分派指initiator和targe之间的TCP连接中断的情况下的,initiator通过一个新的连接发送再分配连接任务,使得targe能够在一个新的连接ID继续命令的传送。
[b]ISCSI过程[/b]
[b]登录初始化[/b]
登录是在initiator和targe之间建立会话,互相交换同意操作参数。
[b][img=553,378]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image018.gif[/img][/b]
[b]认证和参数协商[/b]
如果需要认证,协商将在交换操作参数前进行,当认证成功完成后,initiator就能够进行参数协商,
[b]连接[/b]
当targe接受initiator的连接时,连接建立。
[b]注销和关闭[/b]
注销是为了断开连接,由initiator发起,targe也可因为内部错误而产生断开信息。注销后,将不再有请求和响应产生,
[b]安全考虑[/b]
在ISCSI中,存储信息是通过开放的IP网络进行传输,所以必须考虑安全问题,
[b]认证[/b]
在ISCSI中,target可能需要认证initiator,而initiator也可能需要认证target,共有以下几种认证方式:
• KRB5 Kerberos V5
• SPKM1 Simple public-key generic security service (GSS) application programming interface(API) mechanism
• SPKM2 Simple public-key GSS API mechanism
• SRP Secure Remote Password
• CHAP Challenge Handshake Authentication Protocol
• None 无认证
[b]包保护[/b]
包保护是为了保证ISCSI节点之间通信的完整,经过认证,保密。在IP层,通过IPSec提供交换的私密性。通过用3DES对IPSec 隧道进行加密,来提供通信的机密性。
ISCSI的实现方式
ISCSI技术的实现主要有三种方式:
1. 纯软件方式
[img=100,231]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image020.gif[/img]
服务器采用普通以太网卡来进行网络连接,通过运行上层软件来实现iSCSI和TCP/IP协议栈功能层。
这种方式由于采用标准网卡,无需额外配置适配器,因此硬件成本最低。但是在这种方式中,服务器在完成自身工作的同时,还要兼顾网络连接,造成主机运行时间加长,系统性能下降。这种方式比较适合于预算较少,并且服务器负担不是很大的用户。
2. 智能iSCSI网卡实现方式
[img=100,237]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image022.gif[/img]
在这种方式中,服务器采用特定的智能网卡来连接网络,TCP/IP协议栈功能由该智能网卡完成,而iSCSI层的功能仍旧由主机来完成。这种方式较前一种方式,部分提高了服务器的性能。
3. iSCSI HBA卡实现方式
[img=167,386]http://www.sansky.net/wp-content/2007/06/windowslivewriteriscsi-11672clip-image024.gif[/img]
使用iSCSI存储适配器来完成服务器中的iSCSI层和TCP/IP协议栈功能。这种方式使得服务器CPU无需考虑iSCSI以及网络配置,对服务器而言,iSCSI存储器适配器是一个HBA设备,与服务器采用何种操作系统无关。该方式性能最好,但是价格也最为昂贵。
为提高性能,主流存储厂商一般都采用第三种方式来实现iSCSI。
[b]三、iSCSI与FC、NAS的比较[/b]
成本投入小。ISCSI所使用的适配卡、交换机和缆线这些产品的价格比FC SAN所选用的硬件产品价格要低,并且ISCSI可以在现有的网络上直接安装,并不需要更改企业的网络体系,这样就大量节约资金投入。
管理方便,维护成本低。FC SAN由于需要专用的软件进行设置管理,因此需要对管理人员进行培训,并且培训的费用也比较高;而ISCSI主要是通过IP网络实现存储资源共享,我们只需要现有的网络功能就可以进行管理,并且ISCSI的设置非常简单,所以不需要对管理人员进行培训,因此ISCSI更能节约成本。
无距离限制。由于ISCSI是一种基于IP网络的存储技术,它会随着IP网络的延生而将存储距离不断扩大,因此ISCSI是无距离限制的。
数据传输速度快。ISCSI的数据传输速度是根据以太网络的速度而变化的,目前,1Gbps的以太网已经大量用于市场,而10Gbps的以太网也即将进入市场,当以太网的速度增加时,ISCSI的数据传输速度也将不断加快。
组建方式灵活,可扩展性高。由于ISCSI存储系统可以直接在现有的网络系统中进行组建,并不需要改变网络体系,加上运用交换机来连接存储设备,对于需要增加存储空间的企业用户来说,只需要增加存储设备就可完全满足,因此,ISCSI存储系统的可扩展性高。