【IT168 专稿】iSCSI(Internet SCSI)是2003年IETF(InternetEngineering Task Force,互联网工程任务组)制订的一项标准,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议。
从根本上说,iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法,iSCSI使用以太网协议传送SCSI命令、响应和数据。iSCSI可以用我们已经熟悉和每天都在使用的以太网来构建IP存储局域网。通过这种方法,iSCSI克服了直接连接存储的局限性,使我们可以跨不同服务器共享存储资源,并可以在不停机状态下扩充存储容量。
iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成iSCSI消息包并通过TCP/IP传送到设备侧,设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应,在经过设备侧iSCSItarget层时被封装成iSCSI响应PDU,通过TCP/IP网络传送给主机的iSCSI initiator层,iSCS Iinitiator会从iSCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。
最早的时候,iSCSI的封装过程完全由硬件来实现,随着服务器处理器技术的日益提高,今天,iSCSI的发起与接收已经基本上都采用软件实现。发起端叫iSCSI initiator,接收设备一侧的软件叫iSCSI Target。本文将对比一些iSCSI initiator与iSCSI Target软件。
目前多数的iSCSI Target仿真软件多为需付费的商业软件,而iSCSI initiator则已有许多免费软件可供选用。
三款免费iSCSI initiator
Microsoft iSCSI Initiator
Microsoft提供的iSCSI发起器软件,可让Windows客户端将以太网卡仿真成iSCSI发起器,以便对网络上的iSCSI目标设备发起存取需求,建立iSCSI联机。
Microsoft iSCSI Initiator最新的版本为2008版,可支持Windows 2000/XP/Server 2003/2008等微软作业环境,并分别有支持x64、IA64、x86等处理器平台的版本。下载完成安装后,在Discovery选单输入iSCSI目标设备的 IP或iqn地址,即可在Target选单中选择与iSCSI设备建立连接,透过IP网络存取iSCSI存储设备,还支持多路径传输。
Linux-iSCSI
在使用时,系统中必须备妥kernel-source、kernel、gcc、perl、Apache等相关档案。下载并完成编译后,先将/etc/iscsi.conf内的iSCSI配置组态,改为符合目前使用的iSCSI目标设备的正确网址、用户名称与密码,接下来以 #/etc/init.d/iscsi start启动iSCSI设备,并以fdisk指令分割磁盘,最后用mkdir与 mount指令将磁盘驱动器挂载。
Solaris iSCSI Initiator
Solaris已内建了iSCSI Initiator软件,包括SPARC 64、x64与IA-32等处理器平台都能支持。Sun把iSCSI相关驱动程序整合在iSCSI Device Driver and Utilities的更新程序内。
使用时,先用svcadm enable svc:/network/iscsi_initiator的指令格式先行启始iSCSI Initiator,接下来的的操作主要依靠iscsiadm指令,先以iscsiadm add discovery-address指令设定目标设备地址,再用iscsiadm modify initiator-node修改与目标设备间的连接设定,然后依序使用devfsadm -c iscsi、format、newfs等指令建立新的磁盘区,最后再用mount指令将磁盘区挂载起来即可。
iSCSI Target软件功能特性对比
iSCSI Initiator 可用软件方式实现,同样的iSCSI Target 也行,不过优劣特点也相近,即是偏成本取向且不易达到专属硬件的效能。
要更注意的是,iSCSI Initiator 软件确实多半采用随机赠送的免费策略,而iSCSI Target软件则不同,多数的iSCSI Target 都要收费,仅少数免费,如UNH-iSCSI 项目中除了iSCSI Initiator软件开发也有iSCSI Target 软件开发,虽免费但也多半用于测试验证之用,少用于实际的商务运作。此外,有一个iSCSI Enterprise Target 开放项目能提供iSCSI Target 软件,但目前仅在0.4.x 版,连1.0 正式版都还有段距离。
现阶段真正成熟运用的iSCSI Target 多半由商业软件业者提供,如DataCore Software 的SANmelody/SANmelody Lite,或FalconStor Software 的iSCSI Server for Windows,或String Bean Software 的WinTarget 等,颇为玩味的,三者都是只能安装在Windows 伺服操作系统上,这似乎与节约成本有些违背(纯就操作系统的软件授权费,Windows 向来高于Linux、UNIX)。
实现iSCSI Target的方法也很多。拿飞康来说,飞康公司将iSCSI与ESX捆绑,意味着你没有应用ESX,就不能使用他们的iSCSI软件。DataCore公司同样把iSCSI软件与其产品相捆绑。微软将iSCSI与其操作系统捆绑,供应给OEM厂商并通过他们销售iSCSI软件。如果希望应用 iSCSI软件,你需要从戴尔,惠普,富士通公司或那些销售基于Windows设备的厂商购买。
Nimbus免费产品MySan由于某种原因只能在Windows 2003 SP1上运行。根据他们信息,SP2不支持Windows 2003。Starwind和Kernsafe的iSCSI和独立的服务器有很多不同的版本。最好的方法就是你可以选择一个你需要的产品,你也愿意为此而付款。
为你的Windows环境选择一种iSCSI软件,有些东西一定要记得。看以上表格,有很多不同版本的iSCSI软件,并且特征也不相同。如果你想要仿真磁带库并复制数据,价格就相对比较高。对一个或两个同时发生的连接,价格相对低些。在产品方面,并联(concurrent connections)并没有给你带来很多好处。考虑到可用的特征和不同情况的不同需求,建议尽可能多的使用虚拟化。你需要分析你真正需要什么,并为此做出决定。
iSCSI的2种多路径访问机制
经过数年的发展后,iSCSI已成为IP SAN的代名词,大幅促进了存储局域网络(SAN)的普及应用。但相较于FC SAN,iSCSI虽然有建置价格低的优点,但也被认为存在着许多不足,包括易受攻击、可用带宽低,且缺乏高可用性的冗余访问机制等。
事实上,若有适当的环境配合,iSCSI也能实现多路径I/O(Multi-Path Input/Output,MPIO,多路径输入输出)与多重连结(Multiple Connections per Session,MC/S)两种多重路径存取的机制,可建立负载平衡、故障失效切换等带宽聚合应用,提供更可靠的存储网络环境。
MPIO与MC/S都是利用多条实体存取通道,在服务器(iSCSI Initiator段)与存储设备(iSCSI Target端)之间建立逻辑通道,可透过轮替的存取动作,避免单一实体通道中断时,连带导致存取中断;或是平衡多个实体通道间的传输负载,避免传输负荷集中在单一实体通道上。但2种机制间又有所不同:
多重路径MPIO
MPIO可允许1个iSCSI Initiator透过多个Session连入同1个iSCSI Target设备,以便利用多网卡或iSCSI HBA启用负载平衡与故障失效切换机制,也可称作Multiple Sessions per Initiator。
多重连接MC/S
MC/S可允许在同一个Session中,在iSCSI Initiator与iSCSI Target间建立多个TCP/IP连接,同样也能让用户利用多张网卡或iSCSI HBA启用负载平衡与故障失效切换机制。
简而言之,MPIO是在更高的网络堆栈层上运作(即在iSCSI层上的SCSI指令层),且多条存取路径间的负载平衡机制,是针对1个指定的独立逻辑驱动器(LUN)运作;而MC/S则是iSCSI RFC中所定义的方法,是在iSCSI层上运作,具有更好的传输验证能力(Error Recovery Levels),另外MC/S的负载平衡是“同时”针对所有的逻辑驱动器运作,这点也与MPIO不同。
实现多路径存取的3种方式
iSCSI的底层是IP与以太网,理论上可直接从网卡实施,利用Port Trunking/Teaming/Link Aggregation的方式,将主机上的多张网卡捆绑在1个IP下,再连接到iSCSI存储设备上,搭配iSCSI存储设备传输埠上的对应设定,从而实现实体多路径连接。但问题在于,不是所有网卡都能支持这种方式。
另外,有一些存储厂商提供的SAN路径管理软件,也能协助用户建立iSCSI多路径存取环境,如EMC PowerPath、HDS的Hitachi Dynamic Link Manager、NetApp SnapDrive、Infortrend EonPath等,但这些软件通常都只支持特定厂牌型号的iSCSI设备。
不过我们也可跳过网卡这一层,亦无须使用路径管理软件,直接利用iSCSI Initiator软件配合iSCSI设备建立多路径存取。要利用这种方式建立MPIO还是MC/S,都必须满足一定条件:
(1)iSCSI Initiator端需有多张网卡或网络端口连接到Target端。
(2)iSCSI Initiator软件需支持MPIO或MC/S。
(3)iSCSI Target设备需支持MPIO或MC/S。
其中第1项是最基本的条件,主机若没有2个以上的网络端口(或2张以上网卡/iSCSI HBA)可用,自然谈不上多路径存取,不过目前多数服务器都内建了至少2组GbE网络端口,这点通常不会成为太大问题。
第2项条件则视不同环境而定,目前各主要操作系统厂商提供的iSCSI Initiator软件中,目前以Windows的支持较为齐全,如微软的iSCSI Initiator 2.06版以后就能支持MPIO与MC/S;Sun则有OpenSolaris MPxIO程序可支持Solaris环境的MPIO;Linux环境同样也能支持MPIO。
而就第3点来说,目前MPIO远比MC/S普及,大多数iSCSI存储设备都能支持MPIO,只要能允许同一个iqn建立的session即可。
但能支持MC/S的产品就少了许多,在软件式的iSCSI Target方面,目前能支持的也不多,如微软的iSCSI Target、Sun的Solaris iSCSI Target都不支持。