实现iSCSI Initiator 的两种方法(一)
2013-12-03 09:06:20 来源:华军科技数据恢复
首先我们要了解iSCSI 架构中的角色与专词,iSCSI 的储存设备称为iSCSITarget(或称iSCSI Target Device),例如iSCSI 磁盘阵列柜、iSCSI 磁带柜等,而iSCSI 卡称为iSCSI HBA(Host Bus Adapter),与FC 卡称呼相同,但与Ethernet卡称呼不同,一般称网络卡为NIC(Network Interface Card),也与IB 卡称呼不同,IB 卡称为HCA(Host Channel Adapter)。
当然,iSCSI 允许使用一般Ethernet NIC 卡(网络卡,为了效率多半是GbE以上等级)与Ethernet Switch(交换器),若使用一般GbE 卡,则还需要搭配软件才能让GbE 卡收发iSCSI 协议,此软件称为iSCSI Initiator,事实上iSCSI HBA的角色也等同于iSCSI Initiator。
此外还有iSCSI Router(路由器),不过,目前似乎只有Cisco 一家提供,这是在需要以iSCSI 进行异地备援传输时才会使用。至于iSCSI Gateway(网关器) 则在接口转换时才需要,例如让iSCSI 网络与FC 网络接轨,就需要iSCSI-to-FC Gateway,或将网络型的iSCSI 转换成本地端的传统SCSI,这时则用iSCSI-to-SCSI Gateway,iSCSI Gateway 也不见得用硬件方式实现,用CPU 执行特定的转换程序,效用与角色等同于iSCSI Gateway。
很明显的,一般的设计需求会集中在iSCSI Initiator(iSCSI Initiator Software、iSCSI HBA)及iSCSI Target(iSCSI Disk Array、iSCSI Tape Library)两者,至于iSCSI Switch 即Ethernet Switch,无须更动,而iSCSI Router 则较少运用。 iSCSI 运作架构中的各种角色连接与配置
附注:除了iSCSI Initiator 能以软件方式实现外,iSCSI Target 也能以软件方式实现。且iSCSI BridgeGatewayRouter 也被视为一种iSCSI Target,Bridge 与Gateway 等皆属转换功效,只是负责的层级不同,一般而言Bridge 为低层次转换,Gateway 为高层次,然有时也经常混称合用,无太大差别。
如何实现一个iSCSI Initiator?(软件法)
要想实现一个iSCSI Initiator,最简单也最省钱的作法即是在服务器上安装iSCSI Initiator 软件,并运用服务器原有的GbE 卡来收发iSCSI 协议。
不过,使用iSCSI Initiator 软件必须多加权衡,由于它运用服务器的CPU 来进行iSCSI 协议的编解运算,会折损服务器的本务运算效能(即伺服应用服务的运算),一般而言会折损1、2 颗CPU 的效能,所以不建议在2 CPU 的服务器上使用此法,建议在4 CPU 以上的服务器才使用,且也要多斟酌效能冲击性,也不建议直接以服务器内唯一的GbE 网埠来传发iSCSI 协议,因为这将阻碍服务器原有对前端服务的能力(即InternetLAN 与SAN 的传输交迭影响),所以多会额外加装第二张GbE 网卡,以另一专属区网(SAN)的作法来传输iSCSI。
使用软件式的iSCSI Initiator 不单要考虑CPU、NIC 的效能折损,也要考虑操作系统支持性及取得成本,操作系统也还要注意硬件架构的差别,同样是Windows,在IA-32(即俗称的i386)硬件上与在x64(即x86-64、AMD64、EM64T)硬件上的驱动程序并不相同,甚至IA-64 硬件上的也不同,Solaris 也类似,Solaris支持SPARC、IA-32、x64,三者的驱动程序也不相同。
目前iSCSI Initiator 多采免费下载或免费随附的策略,Microsoft 已针对IA-32、IA-64、x64 等不同硬件架构的Windows 都提供了iSCSI Initiator 软件,新版为2.0,支持更高层次的iSCSI 传输错误修正功能(从ERL0 提升至ERL1、ERL2,ERL为Error Recovery Level),以及多径传输(Multi-Pathing IO;MPIO)功能,2.0于2005 年6 月12 日释出,之前的版本为1.01.051.06,另也可搭配下载iSNSServer 3.0(TCPIP 环境下探搜iSCSI 装置之用的伺服应用程序)。
Sun 方面也相同,其Solaris Express(快捷版)及Solaris 10 Update 1(类似Service Pack 1)也免费提供iSCSI Initiator 软件,包括SPARC(64-bit)、IA-32、x64 都支持,且能支持10GbE NIC,并计划将软件的原始程序代码公布于OpenSolaris.org 网站。自由软件阵营也不落后,名为「Linux-iSCSI」的原码开发项目即是撰写Linux 2.4 版以上所用的iSCSI Driver(驱动程序,即iSCSI Initiator)及iSCSI Daemon(同于Demon,原意是魔鬼,但在此是指泛UNIX 操作系统的背景常驻执行程序),开发过程中也与Open-iSCSI 项目合并,目前为4.0.x 版。此外还有UNH所释出的「UNH-iSCSI」的开放项目,一样是Linux 上的iSCSI Initiator 软件,目前为1.6.0 版。
其它如HP HP-UX 11i v1、IBM AIX 5.2、Novell NetWare 6.5 等也都支援iSCSIInitiator。至于Mac OS X 也有SBE 公司能提供Xtend SAN iSCSI Initiator for Mac OS X(收并自PyX 公司),但此要付费取得,或随SBE 的硬件套件方式一并购买。
至于软件表现的强弱如何?此可透过实际的CPU 运算占用(占用百分比愈低愈好)、IO 传输表现(每秒完成多少个IO 处理,即IOPS)来评断,另外要重视支持的GbE 层级、错误修正层级,如10GbE 优于1GbE,以及ERL2 优于ERL1 优于ERL0。以及是否支持MPIO,MPIO 指的是一部服务器内有一张以上的GbE NIC 时,可同时运用多张NIC 卡进行传输,以负载平衡(Load Balance)方式尽快完成传递,或在某一NIC 卡故障失效时,其工作也可转由其它仍正常运作的NIC 卡来接手。
如何实现一个iSCSI Initiator?(硬件法)
软件法的缺点就是耗占原有硬件资源及效能,所以也有众多业者提 出硬件实现法,有的是推出iSCSI 控制芯片(如SilverBack Systems),然后由硬件设计者购回芯片以做成iSCSI HBA 卡,或嵌于主机板上,让主机板直接具备iSCSI硬件支持,或者有的业者虽有自研的iSCSI 控制芯片,但视为独门秘方,不对外单售芯片,只售使用上自有芯片实现成的iSCSI 板卡(如Adaptec、iStorNetworks),或芯片与卡都提供(如Alacritech、QLogic、iVivity)。
与前述的软件实现法相比,硬件法可就相当复杂多样,为避免混淆难懂,须在正式说明前建立好先前概念才行。