當(dāng)然,iSCSI 允許使用一般Ethernet NIC 卡(網(wǎng)絡(luò)卡,為了效率多半是GbE以上等級)與Ethernet Switch(交換器),若使用一般GbE 卡,則還需要搭配軟件才能讓GbE 卡收發(fā)iSCSI 協(xié)議,此軟件稱為iSCSI Initiator,事實(shí)上iSCSI HBA的角色也等同于iSCSI Initiator。


此外還有iSCSI Router(路由器),不過,目前似乎只有Cisco 一家提供,這是在需要以iSCSI 進(jìn)行異地備援傳輸時才會使用。至于iSCSI Gateway(網(wǎng)關(guān)器)則在接口轉(zhuǎn)換時才需要,例如讓iSCSI 網(wǎng)絡(luò)與FC 網(wǎng)絡(luò)接軌,就需要iSCSI-to-FC Gateway,或?qū)⒕W(wǎng)絡(luò)型的iSCSI 轉(zhuǎn)換成本地端的傳統(tǒng)SCSI,這時則用iSCSI-to-SCSI Gateway,iSCSI Gateway 也不見得用硬件方式實(shí)現(xiàn),用CPU 執(zhí)行特定的轉(zhuǎn)換程序,效用與角色等同于iSCSI Gateway。

很明顯的,一般的設(shè)計(jì)需求會集中在iSCSI Initiator(iSCSI Initiator Software、iSCSI HBA)及iSCSI Target(iSCSI Disk Array、iSCSI Tape Library)兩者,至于iSCSI Switch 即Ethernet Switch,無須更動,而iSCSI Router 則較少運(yùn)用。

 
iSCSI 運(yùn)作架構(gòu)中的各種角色連接與配置

附注:除了iSCSI Initiator 能以軟件方式實(shí)現(xiàn)外,iSCSI Target 也能以軟件方式實(shí)現(xiàn)。且iSCSI Bridge/Gateway/Router 也被視為一種iSCSI Target,Bridge 與Gateway 等皆屬轉(zhuǎn)換功效,只是負(fù)責(zé)的層級不同,一般而言Bridge 為低層次轉(zhuǎn)換,Gateway 為高層次,然有時也經(jīng)常混稱合用,無太大差別。

如何實(shí)現(xiàn)一個iSCSI Initiator?(軟件法)

要想實(shí)現(xiàn)一個iSCSI Initiator,最簡單也最省錢的作法即是在服務(wù)器上安裝iSCSI Initiator 軟件,并運(yùn)用服務(wù)器原有的GbE 卡來收發(fā)iSCSI 協(xié)議。

不過,使用iSCSI Initiator 軟件必須多加權(quán)衡,由于它運(yùn)用服務(wù)器的CPU 來進(jìn)行iSCSI 協(xié)議的編解運(yùn)算,會折損服務(wù)器的本務(wù)運(yùn)算效能(即伺服應(yīng)用服務(wù)的運(yùn)算),一般而言會折損1、2 顆CPU 的效能,所以不建議在2 CPU 的服務(wù)器上使用此法,建議在4 CPU 以上的服務(wù)器才使用,且也要多斟酌效能沖擊性,也不建議直接以服務(wù)器內(nèi)唯一的GbE 網(wǎng)埠來傳發(fā)iSCSI 協(xié)議,因?yàn)檫@將阻礙服務(wù)器原有對前端服務(wù)的能力(即Internet/LAN 與SAN 的傳輸交迭影響),所以多會額外加裝第二張GbE 網(wǎng)卡,以另一專屬區(qū)網(wǎng)(SAN)的作法來傳輸iSCSI。

使用軟件式的iSCSI Initiator 不單要考慮CPU、NIC 的效能折損,也要考慮操作系統(tǒng)支持性及取得成本,操作系統(tǒng)也還要注意硬件架構(gòu)的差別,同樣是Windows,在IA-32(即俗稱的i386)硬件上與在x64(即x86-64、AMD64、EM64T)硬件上的驅(qū)動程序并不相同,甚至IA-64 硬件上的也不同,Solaris 也類似,Solaris支持SPARC、IA-32、x64,三者的驅(qū)動程序也不相同。

目前iSCSI Initiator 多采免費(fèi)下載或免費(fèi)隨附的策略,Microsoft 已針對IA-32、IA-64、x64 等不同硬件架構(gòu)的Windows 都提供了iSCSI Initiator 軟件,新版為2.0,支持更高層次的iSCSI 傳輸錯誤修正功能(從ERL0 提升至ERL1、ERL2,ERL為Error Recovery Level),以及多徑傳輸(Multi-Pathing I/O;MPIO)功能,2.0于2005 年6 月12 日釋出,之前的版本為1.0/1.05/1.06,另也可搭配下載iSNSServer 3.0(TCP/IP 環(huán)境下探搜iSCSI 裝置之用的伺服應(yīng)用程序)。

Sun 方面也相同,其Solaris Express(快捷版)及Solaris 10 Update 1(類似Service Pack 1)也免費(fèi)提供iSCSI Initiator 軟件,包括SPARC(64-bit)、IA-32、x64 都支持,且能支持10GbE NIC,并計(jì)劃將軟件的原始程序代碼公布于OpenSolaris.org 網(wǎng)站。自由軟件陣營也不落后,名為「Linux-iSCSI」的原碼開發(fā)項(xiàng)目即是撰寫Linux 2.4 版以上所用的iSCSI Driver(驅(qū)動程序,即iSCSI Initiator)及iSCSI Daemon(同于Demon,原意是魔鬼,但在此是指泛UNIX 操作系統(tǒng)的背景常駐執(zhí)行程序),開發(fā)過程中也與Open-iSCSI 項(xiàng)目合并,目前為4.0.x 版。此外還有UNH所釋出的「UNH-iSCSI」的開放項(xiàng)目,一樣是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 公司),但此要付費(fèi)取得,或隨SBE 的硬件套件方式一并購買。

至于軟件表現(xiàn)的強(qiáng)弱如何?此可透過實(shí)際的CPU 運(yùn)算占用(占用百分比愈低愈好)、I/O 傳輸表現(xiàn)(每秒完成多少個I/O 處理,即IOPS)來評斷,另外要重視支持的GbE 層級、錯誤修正層級,如10GbE 優(yōu)于1GbE,以及ERL2 優(yōu)于ERL1 優(yōu)于ERL0。以及是否支持MPIO,MPIO 指的是一部服務(wù)器內(nèi)有一張以上的GbE NIC 時,可同時運(yùn)用多張NIC 卡進(jìn)行傳輸,以負(fù)載平衡(Load Balance)方式盡快完成傳遞,或在某一NIC 卡故障失效時,其工作也可轉(zhuǎn)由其它仍正常運(yùn)作的NIC 卡來接手。

如何實(shí)現(xiàn)一個iSCSI Initiator?(硬件法)

軟件法的缺點(diǎn)就是耗占原有硬件資源及效能,所以也有眾多業(yè)者提出硬件實(shí)現(xiàn)法,有的是推出iSCSI 控制芯片(如SilverBack Systems),然后由硬件設(shè)計(jì)者購回芯片以做成iSCSI HBA 卡,或嵌于主機(jī)板上,讓主機(jī)板直接具備iSCSI硬件支持,或者有的業(yè)者雖有自研的iSCSI 控制芯片,但視為獨(dú)門秘方,不對外單售芯片,只售使用上自有芯片實(shí)現(xiàn)成的iSCSI 板卡(如Adaptec、iStorNetworks),或芯片與卡都提供(如Alacritech、QLogic、iVivity)。

與前述的軟件實(shí)現(xiàn)法相比,硬件法可就相當(dāng)復(fù)雜多樣,為避免混淆難懂,須在正式說明前建立好先前概念才行。


Alacritech 自研的因特網(wǎng)協(xié)議處理芯片(Internet Protocol Processor,IPP):1000×1,此芯片運(yùn)用該公司特有SLIC(Session-Layer Interface Control)技術(shù),由IPP 芯片來加速TCP/IP、iSCSI 等執(zhí)行,使用此芯片所形成的適配卡Alacritech稱為TNIC,其實(shí)即是TOE GbE NIC+iSOE iSCSI HBA。

首先我們先要了解Ethernet 卡的過往,早在1982 年Sun 的第一部工作站出貨時就已具Ethernet 功能,在Ethernet 卡發(fā)展的初期,由于計(jì)算機(jī)CPU 效能(此處的計(jì)算機(jī)指的是工作站、個人計(jì)算機(jī))仍不足,所以當(dāng)時的Ethernet 卡都有專責(zé)處理TCP/IP 程序的芯片及電路,不需耗用CPU 效能,然之后計(jì)算機(jī)CPU 效能躍增,使Ethernet 芯片/網(wǎng)卡開始被設(shè)計(jì)成只負(fù)責(zé)部分工作,而非過去的全部工作,舍去處理的部分改由CPU 與執(zhí)行搭配軟件來負(fù)責(zé)。

然而今日iSCSI 的出現(xiàn),倘若是使用iSCSI Initiator 軟件,服務(wù)器CPU 除了要執(zhí)行iSCSI 的傳送、接收等程序外,就連GbE NIC 的TCP/IP 編解工作也是由CPU 來負(fù)擔(dān),倘若CPU 效能不足,或軟件反應(yīng)不夠快(程序撰寫不佳,或操作系統(tǒng)架構(gòu)特性使然),過重的負(fù)擔(dān)就會影響iSCSI 的傳輸表現(xiàn)。

因此,要加速iSCSI 傳輸,第一種作法即是使用iSCSI HBA 卡,iSCSI HBA卡主要是擔(dān)負(fù)iSCSI 程序的處理執(zhí)行,如此CPU 可以卸下此方面的工作,但仍要執(zhí)行TCP/IP 方面的工作,不過已有加速效用,此稱為iSOE(iSCSI Offload Engine)。第二種作法,是使用「較盡責(zé)」的GbE NIC 卡(或控制芯片),能完整包辦TCP/IP 層面的運(yùn)算,不需CPU 操煩,CPU 可以專心處理iSCSI 程序,此稱為TOE(TCP/IP Offload Engine),由于仍是個NIC 卡/芯片,所以依然需要iSCSI Initiator 軟件的輔助,但一樣有加速效果。

第三種作法則是讓iSCSI HBA 卡(芯片)既負(fù)責(zé)TCP/IP 工作也負(fù)責(zé)iSCSI工作,那么CPU 就更加輕松,也可如第一種作法般地舍去iSCSI Initiator 軟件,加速效果也勝過前兩者。

再者,如果是重視iSCSI 傳輸安全性者,則希望在TCP/IP 環(huán)境中再添入IPSec的加密,然而IPSec 一樣要耗用CPU 來編解運(yùn)算,若能用特有芯片來承擔(dān)此一運(yùn)算,卸除CPU 的負(fù)擔(dān),自然又可以更快,此稱為SOE(Security Offload Engine)。當(dāng)然!若不使用IPSec 則與第三法無所差別。

有了上述概念后,在此就以QLogic 的iSCSI 芯片為例作說明,QLogic 的ISP3010 芯片只是顆具TOE 效果的Ethernet 加速芯片,依舊是GbE NIC 卡/芯片,搭配iSCSI Initiator 軟件即可加速iSCSI 的傳輸執(zhí)行,此即是第二法。

接著,QLogic 的ISP4010 芯片是個TOE 的GbE NIC 芯片,也是個iSCSI 芯片,等于將TCP/IP、iSCSI 等執(zhí)行工作都一手包辦,不需倚賴CPU 參與運(yùn)算,但若用上IPSec 傳輸加密則還是要倚賴CPU 來運(yùn)算,此為第三法。

然后,QLogic 也提供一顆ISPSEC1000 的輔助芯片,專責(zé)處理IPSec 運(yùn)算,可搭配前述的ISP3010 或ISP4010 使用,若搭配ISP4010 則屬于我們前述的第四法,若搭配ISP3010 雖沒有前述的對應(yīng)法,但也只剩iSCSI 收發(fā)程序要交由CPU負(fù)責(zé),一樣要搭配iSCSI Initiator 軟件。


Adaptec 的iSCSI HBA 卡:7211F,F(xiàn) 即Fiber 之意,使用1Gbps 以太光纖連接,控制芯片則是由Adaptec 自行研發(fā),能卸載CPU 的TCP/IP、iSCSI 等運(yùn)算負(fù)荷,另有7211C,C 即Copper,使用1Gbps 以太銅線。

上述的四、五法是較常見的幾種,但不代表全部,例如Intel 的iSCSI HBA卡:PRO/1000 T IP Storage Adapter(2003 年7 月提出,2005 年1 月停供)則又是另一種作法,該卡使用一套IOP310 的I/O 處理芯片組(由一顆80200 處理控制芯片與一顆80312 輔助芯片所組成)及一顆82544EI 的GbE MAC 控制芯片,這些都是較中性、泛用取向的芯片,并未針對任何應(yīng)用調(diào)整過功能規(guī)格,但以此再搭配軟件(驅(qū)動程序)執(zhí)行,一樣可以實(shí)現(xiàn)iSCSI 效用,不過CPU 負(fù)荷的卸載性在此不得而知。

關(guān)于此法,就筆者的觀點(diǎn)看,雖然以泛用芯片的搭配組合來實(shí)現(xiàn),較無設(shè)計(jì)變更與制造供貨的顧慮,但中性的結(jié)果卻是介于純軟件法與上述其它特有硬件芯片實(shí)現(xiàn)法間,軟件法屬成本取向,特有硬件芯片法則屬效能取向,中性芯片組合在成本與效能上都不易討好,筆者認(rèn)為此法日后被實(shí)行的機(jī)會將相對減少。

另外還有一種更「高深」的實(shí)現(xiàn)法,即是運(yùn)用10GbE 標(biāo)準(zhǔn)及RDMA 規(guī)范中的iSER 協(xié)議,此方式是最新銳高階作法,速度最佳但也最昂貴,關(guān)于此我們將在后頭更深入說明。

上述我們只是將「基本」實(shí)現(xiàn)法說完,尚未談到細(xì)部與進(jìn)階,在細(xì)部方面,目前最容易猶豫的就是接口問題,眼前正處于64-bit PCI 2.2/2.3(已有3.0 版)、PCI-X 1.0/2.0、PCI Express 1.1 并存的時刻,雖然往未來看以PCI Express 最具發(fā)展,不過業(yè)者現(xiàn)在提供的iSCSI 芯片多以PCI-X 1.0/2.0 為主,并向下兼容64-bit PCI,PCI Express 仍屬少數(shù),所以主要多實(shí)行PCI-X,64-bit PCI 則是因應(yīng)較過往的服務(wù)器需求才需啟用。

其次,iSCSI 既可使用光纖(Fiber,IEEE 802.3z 的1000Base-LX、1000Base-SX)也可使用銅線(Copper,IEEE 802.3z 的1000Base-CX 及IEEE 802.3ab 的1000Base-T),設(shè)計(jì)時必須先選定,或者在一張卡上兩種并存,提供購買用戶選用的彈性,或者在同一張iSCSI HBA 上提供雙埠(Dual Port),好實(shí)現(xiàn)前述的MPIO 功能,此法與兩張單埠iSCSI HBA 卡相較更能省成本與插槽數(shù),如QLogic ISP4022 芯片即以單顆芯片同時提供兩個iSCSI 埠的平行處理功效。


QLogic 的ISP4010 芯片,以64bit PCI/PCI-X 與系統(tǒng)主存儲器相連,ROM 方面使用8-bit 寬、2MB∼16MB 的閃存,RAM 方面使用72-bit 寬(含查核位)、16MB∼256MB 的SDRAM,另有36-bit 寬(含查核位)、2MB 的額外程序/數(shù)據(jù)存儲器(使用SRAM,很明顯是扮演快取加速功效),ISP4010 芯片具備TCP/IP卸載及GbE 接口。

本文版權(quán)歸DoSTOR及作者本人所有,未經(jīng)許可,不得轉(zhuǎn)載。

分享到

多易

相關(guān)推薦