存儲極客
這是一群存儲偏執狂
為存儲而生,跟存儲死磕
各具獨家秘笈
有觀點,有碰撞,有干貨
從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信號。