SCSI 即小型計算機系統接口(Small Computer System Interface;簡寫:SCSI),一種用於計算機和外部設備之間(硬盤、光驅、軟驅、打印機等)系統級接口的獨立處理器標準。SCSI是一種智能的通用接口標準,它是各類計算機和外部設備之間的接口標準。前端
iSCSI是由Cisco和IBM發起的,它將SCSI命令封裝在TCP/IP包裏,並使用一個iSCSI幀頭。它基於IP協議棧,假設以不可靠的網絡爲基礎,依靠TCP恢復丟失的數據包。數據庫
背景:後端
相比直連存儲,網絡存儲解決方案可以更加有效地共享,整合和管理資源。從服務器爲中心的存儲轉向網絡存儲,一直依賴於數據傳輸技術的發展,速度要求與直連存儲至關,甚至更高,同事須要克服並行SCSI固有的侷限性。緩存
全部數據在沒有文件系統格式化的狀況下,都以塊的形式存儲於磁盤上。並行SCSI將數據以塊的形式傳送至存儲,可是,對於網絡它的用處至關有限,由於線纜不能超過25m,並且最多鏈接16個設備;安全
光纖通道(FC,Fiber Channel,跑FC協議)是目前SAN的主導架構,它在專門的高速網絡上分離存儲資源。光纖通道協議與互聯技術起源於知足高性能傳送塊數據的需求,同時克服直連存儲的鏈接和距離限制。一般光纖通道設備鏈接距離可達到10000米,甚至數十萬米,而且對於鏈接在SAN之上的設備沒有數量要求。服務器
與SAN不一樣,NAS將數據以文件的形式傳輸而且能夠直接鏈接至IP網絡。部署NAS設備傳送數據庫塊數據,使用基於SCSI的光纖通道協議,比Server Message Block(SMB)協議更加高效。網絡
iSCSI是一種使用TCP/IP協議,在現有IP網絡上傳輸SCSI塊命令的工業標準,它是一種在現有的IP網絡上無需安裝單獨的光纖網絡便可同時傳輸消息和塊數據的突破性技術。iSCSI基於應用很是普遍的TCP/IP協議,將SCSI命令/數據塊封裝爲iSCSI包,再封裝至TCP 報文,而後封裝到架構
IP 報文中。iSCSI經過TCP面向鏈接的協議來保護數據塊的可靠交付。因爲iSCSI基於IP協議棧,所以能夠在標準以太網設備上經過路由或交換機來傳輸。併發
iSCSI架構依然遵循典型的SCSI模式:性能
隨着光纖通道的發明,initiator和target之間的SCSI線纜已被光纖線纜所代替。
如今隨着iSCSI的出現光纖線纜又被價格低廉的網線和TCP/IP網絡所替代。
雖然現有的光纖存儲網絡具備高吞吐量的優點,與其餘廠商之間的互通性還是一個短板。而基於成熟的TCP/IP協議的iSCSI網絡,不只免於互通性限制並且在安全性等方面具有優點。同時,因爲千兆以太網的增量部署,iSCSI的吞吐量也會隨之增長,與光線通道匹敵甚至超越光線通道。
iSCSI SAN組件與FC SAN組件相相似。包括如下部件:
iSCSI Client/Host:
系統中的iSCSI客戶端或主機(也稱爲iSCSI initiator),諸如服務器,鏈接在IP網絡並對iSCSI target發起請求以及接收響應。每個iSCSI主機經過惟一的IQN來識別,相似於光纖通道的WWN。
要在IP網絡上傳遞SCSI塊命令,必須在iSCSI主機上安裝iSCSI驅動。推薦經過GE適配器(每秒1000 megabits)鏈接至iSCSI target。如同標準10/100適配器,大多數Gigabit適配器使用Category 5 或Category 6E線纜。適配器上的各端口經過惟一的IP地址來識別。
iSCSI Target:
iSCSI target是接收iSCSI命令的設備。此設備能夠是終端節點,如存儲設備,或是中間設備,如IP和光纖設備之間的鏈接橋。每個iSCSI target經過惟一的IQN來標識,存儲陣列控制器上(或橋接器上)的各端口經過一個或多個IP地址來標識。
本機與異構IP SAN:
iSCSI initiator與iSCSI target之間的關係如圖1所示。
本例中,iSCSI initiator(或client)是主機服務器,而iSCSI target是存儲陣列。此拓撲稱爲本機iSCSI SAN,它包含在TCP/IP上傳輸SCSI協議的整個組件。
與之相反,異構IP SAN,以下圖所示,包含在TCP/IP與光纖交換結構傳輸SCSI的組件。
爲了實現這一點,須要在IP與光纖通道之間安裝鏈接橋或網關設備。鏈接橋用於TCP/IP與光纖通道之間的協議轉換。
所以iSCSI主機將存儲看作iSCSI target。直接鏈接光纖通道target的服務器必須包含HBA而不是iSCSI主機的網絡適配卡。iSCSI主機可以使用NIC或HBA。
控制器系統架構:
iSCSI的核心處理單元採用與FC光纖存儲設備相同的結構。即採用專用的數據傳輸芯片、專用的RAID數據校驗芯片、專用的高性能cache緩存和專用的嵌入式系統平臺。打開設備機箱時能夠看到iSCSI設備內部採用無線纜的背板結構,全部部件與背板之間經過標準或非標準的插槽連接在一塊兒,而不是普通PC中的多種不一樣型號和規格的線纜連接。
控制器架構iSCSI存儲內部基於無線纜的背板連接方式,徹底消除了連接上的單點故障,所以系統更安全,性能更穩定。通常可用於對性能的穩定性和高可用性具備較高要求的在線存儲系統,好比:中小型數據庫系統,大型數據的庫備份系統,遠程容災系統,網站、電力或非線性編輯製做網等。
鏈接橋系統架構:
整個iSCSI存儲系統架構分爲兩個部分,一個部分是前端協議轉換設備,另外一部分是後端存儲。結構上相似NAS網關及其後端存儲設備。
前端協議轉換部分通常爲硬件設備,主機接口爲千兆以太網接口,磁盤接口通常爲SCSI接口或FC接口,可鏈接SCSI磁盤陣列和FC存儲設備。經過千兆以太網主機接口對外提供iSCSI數據傳輸協議。後端存儲通常採用SCSI磁盤陣列和FC存儲設備,將SCSI磁盤陣列和FC存儲設備的主機接口直接鏈接到iSCSI橋的磁盤接口上。iSCSI鏈接橋設備自己只有協議轉換功能,沒有RAID校驗和快照、卷複製等功能。建立RAID組、建立LUN等操做必須在存儲設備上完成,存儲設備有什麼功能,整個iSCSI設備就具備什麼樣的功能
PC系統架構:
即選擇一個普通的、性能優良的、可支持多塊磁盤的PC(通常爲PC服務器和工控服務器),選擇一款相對成熟穩定的iSCSI target軟件,將iSCSI target軟件安裝在PC服務器上,使普通的PC服務器轉變成一臺iSCSI存儲設備,並經過PC服務器的以太網卡對外提供iSCSI數據傳輸協議。
在PC架構的iSCSI存儲設備上,全部的RAID組校驗、邏輯卷管理、iSCSI 運算、TCP/IP 運算等都是以純軟件方式實現,所以對PC的CPU和內存的性能要求較高。另外iSCSI存儲設備的性能極容易收PC服務器運行狀態的影響。
PC+NIC系統架構
PC+iSCSI target軟件方式是一種低價低效比的iSCSI存儲系統架構解決方案,另外還有一種基於PC+NIC的高階高效性iSCSI存儲系統架構方案。
這款iSCSI存儲系統架構方案是指在PC服務器中安裝高性能的TOE智能NIC卡,將CPU資源較大的iSCSI運算、TCP/IP運算等數據傳輸操做轉移到智能卡的硬件芯片上,由智能卡的專用硬件芯片來完成iSCSI運算、TCP/IP運算等,簡化網絡兩端的內存數據交換程序,從而加速數據傳輸效率,下降PC的CPU佔用,提升存儲的性能。
iSCSI協議是讓SCSI在TCP協議之上工做的傳輸協議,是一種SCSI遠程過程調用模型到TCP協議的映射。SCSI命令加載在iSCSI請求之上,同時SCSI狀態和響應也由iSCSI來承載。iSCSI一樣使用請求響應機制。
在iSCSI 配置中,iSCSI 主機或服務器將請求發送到節點。 主機包含一個或多個鏈接到IP 網絡的啓動器,以發出請求,並接收來自iSCSI 目標的響應。
每一個啓動器和目標都指定了一個惟一的iSCSI 名稱,如 iSCSI 限定名 (IQN) 或擴展的惟一標識(EUI)。 IQN 是 223 字節的 ASCII 名稱。EUI 是 64 位標識。iSCSI 名稱表明全球惟一命名方案,該方案用於標識各啓動器或目標,其方式與使用全球節點名(WWNN) 來標識光纖通道光纖網中設備的方式相同。
iSCSI 目標是響應 iSCSI 命令的設備。iSCSI 設備能夠是諸如存儲設備的結束節點,或者能夠是諸如IP 與光纖通道設備之間的網橋的中間設備。每一個iSCSI 目標由惟一的iSCSI 名稱標識。
要經過 IP 網絡傳輸 SCSI 命令,iSCSI 驅動程序必須安裝到iSCSI 主機和目標中。驅動程序用於經過主機或目標硬件中的網絡接口控制器(NIC) 或 iSCSI HBA 來發送iSCSI 命令和響應。
爲實現最佳性能,請使用傳輸速度爲每秒 1000 兆位 (Mbps) 的千兆以太網適配器在iSCSI 主機和 iSCSI 目標間進行鏈接。
iSCSI 命令封裝:
發起端和目標端之間以消息的形式進行通訊。PDU(Protocal Data Unit)就是用來傳輸這些消息的。
iSCSI 協議就是一個在網絡上封包和解包的過程,在網絡的一端,數據包被封裝成包括TCP/IP頭、iSCSI識別包和SCSI數據三部份內容,傳輸到網絡另外一端時,這三部份內容分別被順序地解開。iSCSI 系統由一塊 SCSI 卡發出一個 SCSI 命令,命令被封裝到第四層的信息包中併發送。
接收方從信息包中抽取SCSI 命令並執行,而後把返回的SCSI命令和數據封裝到IP信息包中,並將它們發回到發送方。系統抽取數據或命令,並把它們傳回SCSI子系統。全部這一切的完成都無需用戶干預,並且對終端用戶是徹底透明的。 爲了保證安全,iSCSI 有本身的上網登陸操做
順序。在它們首次運行的時候,啓動器(initiator)設備將登陸到目標設備中。
任何一個接收到沒有執行登陸過程的啓動器的iSCSI PDU目標設備都將生成一個協議錯誤,並且目標設備也會關閉鏈接。在關閉會話以前,目標設備可能發送回一個被駁回的iSCSI PDU。這種安全性是基本的,由於它只保護了通訊的啓動,卻沒有在每一個信息包的基礎上提供安全性。
還有其餘的安全方法,包括利用IPsec。在控制和數據兩種信息包中,IPsec 能夠提供總體性,實施再次(replay)保護和確認證實,它也爲各個信息包提供加密。
iSCSI 會話:
iSCSI 會話創建於一個initiator與一個target之間,一個會話容許多個TCP鏈接,而且支持跨鏈接的錯誤恢復。大多數通訊仍是創建在SCSI基礎之上的,例如,使用R2T進行流量控制。
iSCSI添加於SCSI之上的有:當即和主動的數據傳輸以免往返通訊;鏈接創建階段添加登陸環節,這是基於文本的參數協商。
創建一個iSCSI會話,包括
命名階段:肯定須要訪問的存儲,以及initiator,與FC不一樣,命名與位置無關;
發現階段:找到須要訪問的存儲;
登陸階段:創建於存儲的鏈接,讀寫以前首先進行參數協商,按照TCP鏈接登陸。
iSCSI有兩大主要網絡組件。
第一個是網絡團體,網絡團體表現爲可經過IP網絡訪問的一個驅動或者網關。一個網絡團體必須有一個或者多個網絡入口,每個均可以使用,經過IP網絡訪問到一些iSCSI節點包含在網絡團體中。
第二個是網絡入口,網絡入口是一個網絡團隊的組件,有一個TCP/IP的網絡地址可使用給一個iSCSI節點,在一個ISCSI會話中提供鏈接。一個網絡入口在啓動設備中間被識別爲一個IP地址。一個網絡入口在目標設備被識別爲一個IP地址+監聽端口。
iSCSI支持同一會話中的多個鏈接。在一些實現中也能夠作到同一會話中跨網絡端口組合鏈接。端口組定義了一個iSCSI節點內的一系列網絡端口,提供跨越端口的會話鏈接支持。