淺談存儲協議及接口

在存儲系統中,我們通常稱上層協議爲“指令”,一般執行動作是“讀出從某某開始的多少長度的扇區”,指令包含三大關鍵信息:

  1. 操作碼,Operation Code,或者成爲OP:比如Write,Read,Control(Inquery,Standby等等)。

  2. 起始地址:從哪開始讀。如果是文件的話,精確到字節。如果是硬盤的話,精確到LBA(扇區)。

  3. 長度:從起始地址往後多長的一段字節或者扇區。

那麼,指令如果傳遞給對端的設備?你可以自己將上述指令的二進制碼再編碼一下,用手電筒的量滅傳遞給對方,傳對方收到之後閃一下手電筒表示已經收到。此時,手電筒編碼、收到後怎麼表示收到,這也是一種協議,屬於傳輸層協議。而手電筒就是物理層的接口,最終通過物理層,也就是光在真空中傳播來將信息發送到對方。

同理,SCSI指令/協議和NVMe指令/協議,是存儲系統面向機械盤和固態介質分別開發的兩種上層協議。它們可以被over到傳輸層協議+網絡層/鏈路層/物理層接口上傳輸到對方,比如scsi over FC,scsi over SAS、[(scsi over tcp)over ip] over ethernet, scsi over RDMA over IB, scsi over tcp over ip over ib。

底層接口,同樣是手電筒,有人用燈絲燈泡的,有人用led的,有人用袖珍的,有人用手提的,有人用頭戴的。這就是接口不同,但是它們傳遞的信息編碼、物理層,都是一樣的。比如,PCIE可以用標準插槽,也可以用自定義的插槽,但是裏面的信號針腳數量都是一樣的。

同理,存儲系統中的硬件物理接口,包括:

  1. SCSI接口、FC接口、SAS接口:這三個都是承載SCSI上層協議的。有人可能蒙掉了,SCSI不是上層協議的名字麼,爲何底層物理接口也叫SCSI?因爲SCSI這個標準最早的時候把上層協議一直到底層傳輸協議、物理層、網絡層全給定義了。自己去搜一下SCSI接口長什麼樣。

  2. SATA接口:僅用於承載ATA協議。其前身IDE接口,也承載ATA協議。

  3. PCIE標準接口:承載PCIE傳輸協議,NVMe over PCIE。也有SCSI over PCIE但是沒有普及。

  4. M.2接口:可承載PCIE協議

  5. U.2接口:其中包含SAS、SATA和PCIE x4三套接口,充分利用空間,將三套金手指信號做到接口上,各幹各的。意味着可以插入一塊SAS或SATA或PCIE盤。U.2實質上是一種combo組合接口。

  6. m.2:接口廣泛用於平板電腦裏的固態存儲介質。其底層可承載PCIE傳輸協議,然後可以SCSI over PCIE,NVMe over PCIE。其也可以直接跑SATA信號,相當於新型的SATA接口。

  7. emmc接口:沒有連接器,直接從flash顆粒管腳以貼片的方式與emmc控制器的管腳相連。承載onfi/toogle協議。屬於並行總線。

  8. ufs接口:沒有連接器,直接從flash顆粒管腳以貼片的方式與ufs控制器的管腳相連。屬於串行總線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章