存储极客 | 瓜哥图解存储协议-阿里云开发者社区

开发者社区> 沉默术士> 正文

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

简介:
+关注继续查看

存储极客

这是一群存储偏执狂
为存储而生,跟存储死磕
各具独家秘笈
有观点,有碰撞,有干货
从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(转载)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
get请求和post请求的区别
它们的本质都是 TCP 连接,并无区别。下面的答案纯粹是为了应付面试官。真正导致产生区别的原因是 HTTP 的规定以及浏览器 / 服务器的限制,这才导致它们在应用过程中可能会有所不同。
3 0
Visual Studio如何导入码云项目?
Visual Studio如何导入码云项目?
7 0
SAP WebIDE:how to enable context API reference
SAP WebIDE:how to enable context API reference
3 0
大白话tcp三次握手、四次挥手
TCP是一个全双工协议,想要断开就必须单独拆除每一条信道,4次挥手的目的是终止数据传输,并回收资源
4 0
Java 的核心目的和并发编程
Java 的核心目的和并发编程
6 0
Java:程序不过是几行代码的集合
Java:程序不过是几行代码的集合
5 0
3988元起,「方舟编译器」加持,华为P30系列国内正式发布
3 月 26 日,华为在法国巴黎发布了今年的首款旗舰手机 P30 系列,其再次刷新 DxOMark 排行榜,以及「望远镜」、「夜视仪」一样的拍照能力让人印象深刻。对于很多人来说,唯一的问题就是多少钱可以买到了。
7 0
SysML 2019论文解读:视频分析系统的提升
SysML 2019 已于 3 月 31 日-4 月 2 日在斯坦福成功举办,本文将解读两篇在高效视频分析方面的研究。
4 0
关于 python 的缩进
python 对缩进是敏感的,而大多教程对缩进规则,往往就几句话带过,对于没有其他语言基础的初学者,十分不友好,本文就把python常见的缩进问题做了一些整理。
9 0
推荐,Java Emoji Converter(Emoji表情转换工具)
推荐,Java Emoji Converter(Emoji表情转换工具)
4 0
+关注
5518
文章
253
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载