聊聊iSCSI存儲協議的發展簡史
iSCSI的全稱是Internet Small Computer System Interface,可以看出iSCSI是基于以太網的SCSI。SCSI的全稱是Small Computer System Interface,也就是小型計算機系統接口。很多設備是基于SCSI來與計算機交互數據的,常見的如硬盤、軟驅、光驅、打印機、掃描儀等。
接下來我們繼續介紹iSCSI相關的內容。
1. SCSI協議
SCSI最早發明于1982年,一路走來有多個不同的標準,比如SCSI-1,SCSI-2和SCSI-3等等。不同標準的速度不同,硬件的接口也不盡相同。如圖是不同的SCSI接口。
SCSI不僅僅是一種接口,更是一套完整的協議,它實現了計算機的主機與外圍設備通信的協議。這樣,計算機主機就可以與這些外圍設備交互數據了。這其中比較典型的如與硬盤和光驅等交互數據。
2. iSCSI協議
采用這種粗苯的線纜來傳輸數據并不方面,于是有了iSCSI。iSCSI基于以太網來傳輸SCSI指令,以太網的連接非常方便,自然設備的訪問也變得方便了。
以太網是如何承載SCSI指令的呢?其實原理很簡單,就是將SCSI指令封裝為數據包,然后通過TCP協議傳輸。如圖所示,所謂的iSCSI協議可以理解為一個應用層的協議,其內容為各種SCSI指令。
我們知道TCP協議是CS架構的,iSCSI協議自然也是CS架構的,iSCSI的整體架構如圖所示。iSCSI通常是用來訪問存儲設備的,存儲設備為服務端,而計算服務器為客戶端。在iSCSI中有專有名詞,客戶端軟件通常被稱為initiator,也就是啟動器;而服務端軟件則被稱為target,目標器。基于iSCSI協議,當主機連接到存儲時,在主機就可以看到一個磁盤,該磁盤與本地磁盤沒有任何差別。
這樣,在主機端就可以基于該磁盤來格式化文件系統,并將數據放到磁盤上。當對磁盤進行讀寫等訪問時,這時讀寫請求就會經過啟動器轉化為SCSI指令發送到服務端,服務端解析并處理后給啟動器端返回應答。
由于協議基于以太網,因此主機和存儲之間可以通過交換機形成一個非常復雜的網絡。那么主機對存儲資源的訪問也就變得非常靈活了。
3. 基于RDMA的iSCSI
iSCSI協議已經非常好了,但是由于基于以太網協議需要在用戶態和內核態拷貝內存,這不僅要占用CPU資源,還會導致IO延遲增大。為了進一步提升iSCSI的性能,于是有了基于RDMA的iSCSI,也就是iSER。
iSER的全稱是iSCSI Extensions for RDMA,可以看出它是基于RDMA的iSCSI擴展協議。它主要還是利用RDMA技術,本質上還是封裝的SCSI指令。如圖所示,當在啟動器端寫數據時,數據直接從該端的內存發送到目標器端的CPU中進行處理,最終持久化到目標器的持久化存儲中。也就是跳過了啟動器端CPU的處理。
基于上述技術,使得啟動器訪問目標器的延時得到了大幅的降低,性能自然也會有相應的提高。
4. 性能對比
前面廢話一大堆,具體性能是怎么樣的呢?我們看一下SNIA的測試數據。下面這個是IO響應延遲的數據,可以看到基于iSER的延遲大幅下降。
帶寬方面,基于iSER則大幅增加。因此目前基于RDMA技術的iSCSI在性能方面有著非常明顯的優勢。
本文簡要介紹了iSCSI的發展史,從SCSI說起,到基于以太網的iSCSI,最后介紹了基于RDMA技術的iSCSI。通過本文的介紹,希望大家對iSCSI有所了解。