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

本文涉及的产品
简介:

存储极客

这是一群存储偏执狂
为存储而生,跟存储死磕
各具独家秘笈
有观点,有碰撞,有干货
从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(转载)
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
27天前
|
存储 NoSQL API
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)(一)
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)
27 0
|
27天前
|
存储 NoSQL 安全
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)(二)
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)
18 0
|
27天前
|
存储 NoSQL Redis
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)(三)
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)
28 0
|
5月前
|
存储 人工智能 编译器
【C进阶】深度剖析数据在内存中的存储
【C进阶】深度剖析数据在内存中的存储
31 0
|
8月前
|
存储 小程序 编译器
【数据的存储】(深度剖析)
带你深度剖析数据在内存中的存储
|
9月前
|
存储 编译器 C++
深度剖析数据在内存中的存储(下)(适合初学者)
深度剖析数据在内存中的存储(下)(适合初学者)
61 0
深度剖析数据在内存中的存储(下)(适合初学者)
|
11月前
|
存储
数据的存储知识点总结
数据的存储知识点总结
|
存储 机器学习/深度学习 编译器
【C进阶】第十篇——数据在内存中的存储
【C进阶】第十篇——数据在内存中的存储
【C进阶】第十篇——数据在内存中的存储
|
存储 编译器 C语言