天天看點

存儲極客 | 瓜哥圖解存儲協定

存儲極客

這是一群存儲偏執狂

為存儲而生,跟存儲死磕

各具獨家秘笈

有觀點,有碰撞,有幹貨

從2015年8月18起

做客存儲極客欄目

與你分享存儲裡的那點事兒

scsi、ide、fc及sata……,這些令人眼花缭亂的存儲協定和接口之間都有怎樣“剪不斷理還亂”的關系呢?今天,我們就聽瓜哥細細道來吧。

一.頂層協定描述了什麼

在存儲系統中,上層協定可以泛指“指令”,也就是比如“讀出從某某開始的多少長度的扇區”,指令包含三大關鍵資訊:

1. 操作碼:operation code,或者稱為op code。比如write,read,control(inquery,standby等等)。

2.起始位址:從哪開始讀。如果是檔案的話,精确到位元組。如果是硬碟的話,精确到lba(扇區)。

3.長度:從起始位址往後多長的一段位元組或者扇區。

二.下層協定及接口又有什麼用

那麼,指令如何傳遞給對端的裝置?你可以自己将上述指令的二進制碼再編碼一下,用手電筒的亮滅傳遞給對方,對方收到之後閃一下手電筒表示已經收到。此時,手電筒編碼、收到後怎麼表示收到,這也是一種協定,屬于傳輸層協定。而手電筒就是實體層的接口,最終通過實體層,也就是光在真空中傳播來将資訊發送到對方。

同理,scsi指令/協定和nvme指令/協定,是存儲系統面向機械盤和固态媒體分别開發的兩種上層協定。它們可以被over到傳輸層協定+網絡層/鍊路層/實體層接口上傳輸到對方,比如scsi over fc,scsi over sas、[(scsi over tcp)over ip] over ethernet(iscsi), scsi over rdma over ib(srp), scsi over tcp over ip over ib。以及nvme over pcie over 标準插槽、nvme over pcie over m.2接口、nvme over pcie over sff8639接口等等。nvme最好是直接over到pcie上,因為目前來講,pcie的實體層+鍊路層+網絡層+傳輸層還是非常高效的,算是開放式it裝置外部io總線裡速率較高使用最廣泛的。當然,如果為了擴充性考慮,也可以把nvme over tcp/ip over 以太網,或者nvme over rdma over 以太網/ib,或者nvme over fc等等。

底層接口,同樣是手電筒,有人用燈絲燈泡的,有人用led的,有人用袖珍的,有人用手提的,有人用頭戴的。這就是接口不同,但是它們傳遞的資訊編碼、實體層,都是一樣的。比如,pcie可以用标準插槽,也可以用自定義的插槽,但是裡面的信号針腳數量都是一樣的。

三.各類存儲系統使用的協定及接口一覽

存儲系統中的硬體實體接口,包括:

1.scsi協定及接口:最原始的上層協定及底層接口标準。有人可能蒙掉了,scsi不是上層協定的名字麼,為何底層實體接口也叫scsi?因為scsi這個标準最早的時候把上層協定一直到底層傳輸協定、網絡層、實體層全給定義了。下圖就是scsi體系裝置側的接口實體形态。目前已被淘汰。其定義了:表示層到實體層。

存儲極客 | 瓜哥圖解存儲協定

2.ide協定及接口:承載ata協定。面向消費級,與scsi接口處于同一個時代。同屬并行總線接口,最大接2個裝置。實體層速率比同時代scsi接口低。目前已被淘汰。其定義了:傳輸層到實體層。

存儲極客 | 瓜哥圖解存儲協定

3.fc協定及接口:用于存儲系統時則承載scsi協定,理論上可以承載任何上層協定。分為fcal和fc fabric兩種網絡層拓撲。磁盤接入的是fcal拓撲。實體層接口如下圖所示。為了滿足企業級對可用性的要求,fc盤被作為雙資料接口,接入兩個成環器再各自上聯到fc控制器上。圖中所示的接口中包含兩套資料針腳。其定義了:傳輸層到實體層。

存儲極客 | 瓜哥圖解存儲協定

4.sata協定及接口,僅用于承載ata協定。其用于取代ide接口。屬于串行總線,每個通道隻能接入一個裝置,采用特殊的mux可以複用多個裝置。下圖中左側為資料口,右側為供電口。資料口有三根地線和兩對差分線。供電口有不同電流的多路備援供電。其定義了:傳輸層到實體層。

存儲極客 | 瓜哥圖解存儲協定

5.sas協定及接口:在存儲系統中用來取代fcal接口。目前速率達到12gb/s,支援交換式組網,電路交換,不能成環。其定義了:傳輸層到實體層。sas和sata的連接配接器看上去差不多,仔細觀察會發現sata連接配接器中間的缺口在sas上是被補平的,其反面其實還有7根資料線,這就是企業級備援所要求的雙端口,這第二個資料口接入到第二個sas控制器或者expander上。

存儲極客 | 瓜哥圖解存儲協定

6.pcie協定及接口,承載pcie傳輸協定。其可承載各種上層協定。用于存儲系統時,一般直接承載nvme協定,也可以承載scsi協定,但是後者沒有普及。其定義了:傳輸層到實體層。目前pcie裝置側連接配接器形态主要是标準插槽或者sff8639(u.2)。

7.emmc協定及接口,沒有連接配接器,直接從flash顆粒管腳以貼片的方式與emmc控制器的管腳相連。承載emmc上層協定(與ata/scsi/nvme處于同一個階層)。底層實體層采用并行總線。emmc與早期scsi的做法類似,從頂層協定到底層實體層全都定義了一套自己的标準。其定義了:表示層到實體層。

存儲極客 | 瓜哥圖解存儲協定

8.ufs協定及接口,沒有連接配接器,直接從flash顆粒管腳以貼片的方式與ufs控制器的管腳相連。底層實體層采用串行總線。上層協定采用ufs協定(與ata/scsi/nvme/emmc處于同一個階層)。ufs與早期scsi的做法類似,從頂層協定到底層實體層全都定義了一套自己的标準。其定義了:表示層到實體層。

存儲極客 | 瓜哥圖解存儲協定

連接配接器

上述的scsi、fc、sas等各種協定都相應定義了自己的實體層連接配接器形态。但這并不意味着某種連接配接器隻能承載當初定義它的那個協定。比如,sata連接配接器可以承載以太網實體層信号,rj45連接配接器可以承載串行通信協定實體層信号。sas協定定義的hd minisas連接配接器可以承載pcie實體層信号,等等。有個原則就是,為高速率傳輸協定定義的連接配接器,可以承載低速率傳輸協定,反之則不行。

1.上述各種協定原生定義的連接配接器,不再多描述。

2.sas方面,由于引入了expander,外置端口形态在早期比較多,但是到12gb速率時代之後,逐漸統一成hd minisas類型的連接配接器,如下圖所示,分内口和外置口兩個版本。minisas逐漸不再用。

存儲極客 | 瓜哥圖解存儲協定

3.u.2連接配接器(sff-8639連接配接器),其中包含sas、sata和pcie x4三套接口,充分利用空間,将三套金手指信号做到接口上,各幹各的。意味着可以插入一塊sas或sata或pcie盤。樣子乍一看和sas差不多,但是别搞混了,還是有差别的。u.2實質上是一種combo組合接口。其定義了:連接配接器。

存儲極客 | 瓜哥圖解存儲協定

4.m.2連接配接器廣泛用于平闆電腦裡的固态存儲媒體。其底層可承載pcie傳輸協定,然後可以scsi over pcie,nvme over pcie。其也可以直接跑sata信号。

存儲極客 | 瓜哥圖解存儲協定

本文轉自d1net(轉載)