天天看點

iscsi架構分析

iscsi協定是SCSI協定在TCP/IP網絡的具體實作。它将SCSI的邏輯模型映射為TCP/IP通道上的具體實作。同時,也提供了相應的路徑管理相應的能力,比如target的發現、連接配接的建立、會話的管理等方面的工作。

SCSI協定解決了裝置通路邏輯層面的問題,将傳輸層面、媒體層面的問題交給相應的實作協定處理。是以,SCSI協定族中包括了許多具體鍊路上的實作。下圖展現在SCSI協定的實作層次,SAM、CAM是對垂直層次關系的定義。從概念抽象的層次,SCSI協定架構可以分為互聯、協定、指令三個層次。其中互聯層次定義了資料端對端的通信。從iscsi協定的角度,TCP/IP可以了解為SCSI的互聯層次,其解決的主要問題是點對點的資料互通。協定層是SCSI協定子產品在具體互聯協定中的實作定義。如,基于FC互聯通信鍊路,定義了FCP協定;基于TCP/IP鍊路定義了iscsi。指令層詳細定義了不同裝置所需要的請求及響應。

圖中在協定(protocol)層中沒有将iscsi列入是因為iscsi協定與SCSI協定的起草組織不同。

由于我們将iscsi協定了解為SCSI協定層次的具體實作,也即SCSI協定在TCP/IP傳輸網絡的具體實作。是以,iscsi協定不僅可以提供基于塊裝置的通路,也可以實作其他的裝置類型。在前幾年,也有廠商為虛拟帶庫提供iscsi接口。

iscsi架構分析

下圖展示了iscsi實作的總體架構。 與SCSI協定對應,iscsi采用C/S架構實作。用戶端與服務端遵循請求響應模型。

在協定上下文中,我們将用戶端稱為啟動端(initiator),将服務端稱為目标端(target)。如圖所示,兩種型的節點在iscsi拓撲裡,我們都稱為網絡實體。網絡實體指的是可以通過IP網絡通路的裝置或者網關。

iscsi架構分析

通常情況下,iscsi的發起端會與作業系統的SCSI子系統對接,而作業系統往往将SCSI裝置抽象為一個邏輯的裝置,展現給使用者使用。比如,我們在作業系統中看到的磁盤裝置。應用程充可以像通路本地的磁盤裝置一樣,通過Posix接口通路發起端所呈現的裝置。作業系統的SCSI子系統會将使用者的通路翻譯成SCSI指令傳遞到iscsi initiator子產品。iscsi initator并不真正的執行指令,而是将這些指令封裝成PDU傳遞給Target進行處理。

每個網絡實體至少有一個網絡接口用于連接配接網絡。網絡端口(network portal)在邏輯上指的是具體IP位址,可以連接配接到網絡并進行通信的元件。對于initiator的網絡實體可以用IP位址唯一辨別;對于target網絡實體可通過IP位址和端口号唯一确定。在實作層面,我們可以将網絡端口了解為作業系統TCP/IP協定棧。網絡實體與裝置的實體網口并非嚴格的一對一的關系。事實上,對于一個實體網口,我們可以設定多個IP位址。對于一個IP位址,同樣可以應用于多個實體端口。上述兩種情況都有其現實的意義。前者出現在存儲系統高可用應用場景中。設想兩個節點分别采用不同的IP位址提供服務且互相熱備,當一個節點出現故障時,另一個節點接管其IP位址及服務,這時一個節點的網口對應着兩個不同的IP位址。後者出現在網絡綁定的應用環境中。

在發起端和目标端進行實質性的資料傳輸之前,首先需要建立會話。

會話的建立确定了發起端和目标端的協作關系。iscsi提供了兩種會話類型:

- 一般操作會話:不受限制的操作。在此會話狀态下,發起端可以向目标端請求任何它已經支援的操作;

- 發現會話:此會話主要用于目标端的發現。在此會話狀态下,目标端隻接受文本請求。其它請求将被拒絕。

當發起端和目标端建立第一個TCP/IP連接配接時,會話被建立,當所發起端和目标端所有的連接配接失效時,會話被删除,是以,會話在存活期間,網絡至少有一條連結可供資料傳輸。

繼續閱讀