首先我們要了解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)。
與前述的軟件實現法相比,硬件法可就相當復雜多樣,為避免混淆難懂,須在正式說明前建立好先前概念才行。