微信号:gh_22d5acd6318e

介绍:由存储系统架构师冬瓜哥创立.分享业界逼格甚高的存储和计算机系统底层知识,皆为原创.存储系统底层技术、机理、设计、思路分享,绝不忽悠.想变得比别人逼格高一点,就来阅读本公众号的文章.

【冬瓜哥画PPT】最完整的存储系统接口/协议/连接方式总结

2016-05-19 07:52 冬瓜哥

   声明:只要在本页面底部赞赏2元或以上者,冬瓜哥便将本文中的配图PPT原稿推送给你,每天晚上在公众号上统一对已打赏的朋友推送原稿。来吧,兄弟们!!


    上周,冬瓜哥写过一篇各种存储接口协议总结,不过是篇比较初步的。本次,冬瓜哥打算图文并茂的完整总结一下常见的存储协议接口连接器。


 一.顶层协议描述了什么

    在存储系统中,上层协议可以泛指“指令”,也就是比如“读出从某某开始的多少长度的扇区”,读/写类指令包含三大关键信息:

1.  操作码,OperationCode,或者称为OP code。比如Write,Read,Control(Inquery,Standby等等)。

2.  起始地址:从哪开始读。如果是文件的话,精确到字节。如果是硬盘的话,精确到LBA(扇区)。

3.  长度:从起始地址往后多长的一段字节或者扇区。

二.下层协议及接口又是做什么用的

        那么,指令如果传递给对端的设备?你可以自己将上述指令的二进制码再编码一下,用手电筒的量灭传递给对方,传对方收到之后闪一下手电筒表示已经收到。此时,手电筒编码、收到后怎么表示收到,这也是一种协议,属于传输层协议。而手电筒就是物理层的接口,最终通过物理层,也就是光在真空中传播来将信息发送到对方。 

        同理,SCSI指令/协议和NVMe指令/协议,是存储系统面向机械盘和固态介质分别开发的两种上层协议。它们可以被over到传输层协议+网络层/链路层/物理层接口上传输到对方,比如scsi over fc,scsi over sas、[(scsiover 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 overM.2接口、NVMe over PCIE over SFF8639接口等等。

        NVMe最好是直接over到PCIE上,因为目前来讲,PCIE的物理层+链路层+网络层+传输层还是非常高效的,算是开放式IT设备外部IO总线里速率较高使用最广泛的。当然,如果为了扩展性考虑,也可以把NVMe overTCP/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连接器(SFF8649连接器),其中包含SAS、SATA和PCIE x4三套接口,充分利用空间,将三套金手指信号做到接口上,各干各的。意味着可以插入一块SAS或SATA或PCIE盘。样子乍一看和SAS差不多,但是别搞混了,还是有差别的。U.2实质上是一种combo组合接口。其定义了:连接器



4.    M.2连接器广泛用于平板电脑里的固态存储介质。其底层可承载PCIE传输协议,然后可以SCSI over PCIE,NVMe over PCIE。其也可以直接跑SATA信号



总结一下:


顶层协议

传输层协议

物理层接口/连接器

端到端

SCSI  

(面向机械盘)

SCSI

FC  

SAS

TCP(over  IP)

RDMA oE/oIB

TCP(over  IP)

SCSI

FC

SAS

Ethernet

Infiniband

SCSI  over SCSI over SCSI(Phased out)

SCSI  over FC

SCSI  over SAS

SCSI  over TCP/IP over Ethernet (iSCSI)

SCSI  over RDMA over IB(SRP)

SCSI  over TCP/IP over IB

NvMe

(面向固态盘)

PCIE


 

 

PCIe standard

M.2

SFF8639(U.2)

NvMe  over PCIE over standard interface

NvMe  over PCIE over M.2

NvMe  over PCIE over SFF8639

ATA

(For PC Disk Drive)

ATA

SATA

IDE

SATA

M.2

ATA  over IDE(Phased out)

ATA over SATA

EMMC

UFS

EMMC

UFS

EMMC

UFS

full end to end, not overed to other transportation protocol yet

(注:上表由热心网友yvonne.cai整理,特此致谢!)


四.各类存储系统控制器/HBA一览

        通信是双方的,上文中大家看到的只是硬盘/外设一侧的接口形态,所有设备必须被接入到IO通道控制器上,比如IDE需要接入到IDE控制器,SATA盘需要接入到SATA控制器,SAS接入到SAS控制器,SCSI、PCIE等各自也都有各自的控制器。这些IO通道控制器在后端通过各自的连接器将1个、2个或者多个设备通过各自不同的总线方式挂接上,在前端则通过PCIE或者内部私有总线与系统IO桥相连,IO桥在通过更高速的总线连接到CPU。所以这类控制器又被称为总线适配器,如果将这类IO控制器做成一张板,插到PCIE槽上与IO桥相连,则称之为HostBus Adapter,HBA。当然,PCIE控制器是直接集成到CPU里的,PCIE设备是直接连接到CPU而不需要HBA,最多用个连接器转接板将CPU上的PCIEIO管脚连接到外部连接器或者插槽上。


1.    SATA、IDE、PCIE、emmc、ufs这些协议的接口控制器,由于太过常用,一般都被集成到系统IO桥芯片中了。不需要转接到PCIE外扩出HBA来。


2.    SCSI HBA


3.    FC HBA


4.    SAS HBA


5.    以太网HBA


 

6.    Infiniband HBA

IB体系习惯把HBA叫做HCA(HostChannel Adapter)


 

五.带Raid功能的HBA被称为Raid卡

        在HBA上增加或者增强对应资源,比如嵌入式CPU、板载DRAM、硬加速计算逻辑等,便可实现各种Raid了,此时HBA上报给OS的并不是其下挂的物理资源,而是经过Raid虚拟化之后逻辑资源。由于提升了并发性,增加了Write Back模式的缓存并加以电池或者超级电容保护,这些逻辑资源拥有更高的速度、更好的时延和更好的可靠性。


1.  SCSIRaid卡


2.  SATARaid卡


3.  SAS Raid卡


 

六. SAS/SATA硬盘、HBA、接入到服务器中的方式

        下图是最早期的SCSI硬盘的接入方式,由于采用总线结构,背板可以做成无源背板,而且走线十分方便,大部分导线被焊接到背板的PCB上,只留一个链接器连接到SCSI HBA/Raid卡即可。由于SCSI底层接口已经被淘汰,不多描述。


1.    SAS卡直连无源背板形式。该形式下,SAS卡(不管是HBA还是带Raid功能的HBA)采用x4的线缆直接连接到背板上的连接器,背板上每4个硬盘接口被导入到一个x4的连接器上从而直接连接到SAS卡。也就是说,如果有16块盘,那么背板需要出4个x4连接器,分别连接到SAS卡一侧的一个x4连接器上,前提是SAS卡必须支持对应数量的直连设备。目前Adaptec的12Gb SAS HBA可以单芯片最大直连16个SAS设备,为接入密度最大的产品。


2.    SAS卡连接带Expander的有源背板形式。有些型号的SAS卡最大只能直连8个设备,而有些服务器比如Dell R910,其前面板有12个硬盘槽位。此时,只能靠SAS Expander(简称EXP)了。12个槽位先连接到EXP上,EXP再出1个或者2个上行的x4口连接到HBA上。下图就是Dell R910的带SASEXP的背板。



3.    SAS卡连接Expander子板再连接无源背板的形式。有些时候服务器厂商不想为了增加一个Expander而再制作一款背板,而是想利用现有的无源背板,比如支持16盘位的无源背板,再加上一小块子板,将Expander放在这个子板上,再将这个子板与SAS HBA及背板分别连接起来。下图是Dell R730服务器的硬盘连接部分的俯视图。可以看到那块黄色的子卡,其背面有一块SAS Expander芯片,北向采用4个x4接口连接到SAS HBA,南向采用连接器与无源背板相连。


4.    SAS卡直连设备无背板形式。这种形式下,SAS/SATA盘直接放到服务器托架上,比如PC机,不提供背板。此时需要使用1分4的线缆,x4那头接到SAS卡上,分出来的4个数据口分别接一个SAS/SATA设备。 1分4的线缆如下图所示。


5.    SAS连接到服务器机箱外置的JBOD形式。这种形态并无本质上的变化,只是要求HBA提供外置接口,用外置线缆,硬盘和背板放到单独的箱子中。一般JBOD上的背板都是带Expander的,这样可以只保留一两个上行接口即可。



七. NVMe固态盘、PCIE转接卡、PCIE交换芯片接入到服务器中的方式


1.    全Combo形式。如下图,24个插槽均为SFF8639也就是U.2接口,这就意味着不管是插SATA/SAS还是NVMe SSD到任何一个槽位,混差,数量配比不限,系统都可以识别到对应的硬盘,也就是所谓三模式(Tri-mode)。所以,每个接口必须将对应的金手指触点真的连接到对应的控制芯片上,如下图,每个插槽均连接SAS信号到SAS HBA以及PCIE信号到PCIE Switch芯片。这样做的成本当然是非常高的。


2.    只有固定槽位支持全Combo盘的形式。如下图,同样是这24个插槽,同样均为SFF8639也就是U.2接口,但是只有最后的4个槽位同时支持三模式Tri-mode,其余的20个槽位只支持SAS/SATA盘。


3.    只有固定槽位支持NVMe盘的形式。为了进一步节省成本,服务器厂商还可以让少数几个槽位只支持NVMe固态盘而不支持SAS/SATA,虽然依然是U.2接口,上面依然有对应的SAS/SATA的金手指信号,但是这些信号是被空置在那里的,没有连接任何上游的芯片。只有PCIE对应的针脚会被连接到上游芯片。而由于只有比如2个、4个NVMe Only的槽位,按照每个NVMe固态盘使用x4 Lane的PCIE接口的话,4个盘共需要16个Lane,可以将这16个Lane对应的金手指信号直接连接到CPU,也就是连接到主板上的一个x16的槽位上。所以,需要一块连接器转接卡先插到主板的x16 PCIE插槽上,转接板下游再出4个x4的miniSAS或者HD miniSAS连接器,然后用线缆连接到该连接器,线缆另一端再与硬盘背板上对应的miniSAS或者HDminiSAS连接器相连,这样就是下图所示的拓扑了。

该服务器是一台戴尔服务器上的第一代 Express Flash PCIe SSD,以及PCIe 2.0的转接卡。散热片下面的是一块信号Repeter/Relay,其内部就是大量的三态缓冲门,为了增强信号质量,增强信号电流。


 

八.Dell R930服务器的硬盘连接方式简析

        Dell R930服务器是一台最大支持4路CPU,提供最大24盘位的高端服务器。在硬盘配置方面,其提供了3个不同的背板,4盘位SAS/SATA背板,24 SAS/SATA盘位背板,以及16 SAS/SATA盘位+8 NVMe固态盘位背板。下面我们就来说说最后这种SAS和NVMe混布的选择。

        下图就是配置了该背板的服务器前视图。可以看到竖插的12块SAS/SATA盘和左右两边最下方的各两块横插的SAS/SATA盘;以及左右两边上方的各4块NVMe固态盘。


        对于NVMe盘位,其采用了NVMe Only的方式而不是Combo方式,也就是说这8个NVMe插槽只有PCIE信号被接入了系统中,SAS信号空置。如下图所示,可以看到每一边的4个U.2插槽上的x4 PCIE Lane信号被分别连接到一个HDminiSAS连接器,两边各4个。再采用对应的线缆连接到分别连接到一块PCIE连接器转接卡上,插入到主板的x16插槽中。


        下图中可以看到这两块PCIE连接器转接卡的样子,其插在了服务器的最后方。


        可以看到散热片下面的信号中继芯片,以及右侧的对应的4个HDminiSAS连接器。


        Dell R930服务器在前部还提供了一个特殊的托架,这个托架中可以安置两块子板,每个子板上有一片SAS Expander。由于戴尔R930配备的SAS HBA/Raid卡最大只能支持8盘直连,所以当配置的SAS硬盘数量大于8块时,必须增加SASExpander。该Expander子板采用连接器的方式与背板相连,从而与硬盘信号对接,上游提供对应的HDminiSAS连接器,通过线缆连接到其PERC9 Raid卡上。该托架可放置两块Expander子板,这样就可以将所有SAS/SATA硬盘分两部分分别接入到其中一块Expander,提升SAS链路的并发度。同时,R930支持插两块PERC9 Raid卡,那就可以分别接一块Expander子卡,进一步提升存储系统性能了。 


最后,还有一种利用PCIE Switch将存储部分接入系统的方案,比如,在Dell PowerEdge FX2平台上,就使用了支持Partition功能的双PCIE Switch,具体可以参考冬瓜哥的另一篇文章:PCIE交换芯片及在戴尔PowerEdge FX2平台上的应用》



   声明:只要在本页面底部赞赏2元或以上者,冬瓜哥便将本文中的配图PPT原稿推送给你,每天晚上在公众号上统一对已打赏的朋友推送原稿。来吧,兄弟们!!


 
大话存储 更多文章 冬瓜哥6月4日在中国云计算大会上讲解OpenPower CAPI底层体系结构 聊聊FPGA/GPCPU/PCIE/Cache-Coherency/CAPI1.0 浅谈双活和多路径 “浅”谈容灾和双活数据中心(上) “浅”谈容灾和双活数据中心(下)
猜您喜欢 浅谈算法和数据结构: 十 平衡查找树之B树 谷歌的代码管理 打造无人机编队 Pacemaker 安装与使用 Android性能专项FPS测试实践(一)