天天看点

存储极客 | 瓜哥图解存储协议

存储极客

这是一群存储偏执狂

为存储而生,跟存储死磕

各具独家秘笈

有观点,有碰撞,有干货

从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(转载)