目录
一、IO总线
二、SCSI
三、FC和iSCSI
四、FCIP、FCoE
五、DMA、RDMA、IB
六、ATA、SATA、SAS
七、PCI、PCIe
八、NVMe
九、NVEe over Fabric
十、NDMP
十一、NDM
一、IO总线
在计算机的世界中,各个部件(控制器、运算器、输入设备、输出设备、存储)都是通过总线的模式进行通信的,总线在功能上分为数据总线、地址总线、控制总线。词如其名,数据总线传数据,地址总线传地址,控制总线传控制信号。一般并行传输,所有位都用一根线来传,所有我们常常看到打开主机后会发现一排线,如下图:
除了这种比较直接的排线,也有不太“明显”的,也就是印刷在电路板的总线(印制导线)。
总线是总线上所有部件传输信息的桥梁,当然除了部件间,在一个部件里面,比如一颗CPU内部也是有总线这种技术的。
在计算机中不同设备的功能、速度差异巨大,总线也要相应的进行适应和分类。比如,CPU和内存进行的数据交互速度极快(时钟频率高、距离短),那么把打印驱动和他俩放一起显然会造成“三个人的悲剧”。在计算机中CPU和内存使用的总线叫系统总线,而控制器和外设使用的叫IO总线。两大类总线的时钟频率显然不同,一般采用芯片组技术来处理(北桥南桥)。
了解了总线后,接下来就可以进入正题了。
二、SCSI
(1)概述
SCSI(Small Computer System Interface,小型计算机系统接口)是一种为小型计算机研制的接口技术,用于主机与外部设备之间的连接。也就是说它是一种IO总线协议。
我们先从它的发展历史开始了解他:
1979年,美国的Shugart公司(Seagate希捷公司的前身)发布了SCSI协议标准,在1986年ANSI(美国国家标准协会)将这个协议定位标准,自此称为SCSI-1,他的内容包括硬盘、磁带和其它存储设备的物理接口、传输协议和标准指令集。
1992年ANSI发布了SCSI-2,提高了速度和总线带宽,支持多线程指令,增加了更多存储设备类型指令集。
1995年ANSI发布了SCSI-3,速度类型更丰富,也包括物理接口、传输协议和SCSI指令集分层。
几乎之后所有的存储相关协议都与SCSI有关,都会用到他的指令集,那么scsi是怎么规定IO总线通信的呢?
最开始SCSI的物理传输层介质是并行的由8根数据线和一些控制线组成,在每个发送时钟内传输8位数据。但是并行传输数据会自然的产生一个问题,也就是时间窗口问题。就像我们让8个人同时出发,各自走自己的路前往某个地方一样,尽管我们给8个人配了同样的车(传输线),但最后他们还是会前前后后到达,不会同时到达。在计算机的眼中,只有这8个人都到达了,才能算作传输完成,这个时间就叫做时间窗口。同时,由于电气方面的限制,早期的SCSI总线只能做到15-25米左右。现在SCSI已经发展到16和32位了。
SCSI总线可以是一根电缆,也可以是印制导线。
(2)SCSI控制器
目前一个SCSI总线可以连接16个设备,其中包含SCSI控制器。
SCSI控制器做的事就是在计算机和总线上的所有其他设备之间协调,他也叫做主机适配器(HBA),他可以是一张插卡,也可是一块芯片。
在SCSI总线中每个设备都得有编号才能进行通信,比如说16个设备,编码0-15。
内部通过带状电缆(也有印刷电路板),外部通过电缆连接(菊花链的形式,一般外部连接设备会有两个连接器,分别连接前后两个设备)。
SCSI由许多版本的标准,他们支持的连接器也不同:50、68、80针等。
(3)外部线缆
分为三层:
1)内层:保护性最好的层,传实际的数据
2)介质层:传控制命令的线路
3)外层:传奇偶校验信息,保证可靠性
(4)终结器
由于电气特性,如果SCSI总线保持开放状态,那么这些在总线上的电信号会反射,会干扰到其他设备的通信使用。所以SCSI总线会配有终结器,即,使用电阻电路闭合每一个端。终结器也分两类:
1)被动的、无源的:一般在标准的时钟速度下运行,且设备到控制器的距离一般小于一米
2)主动的、有源的:用于Fast SCSI系统,或设备到SCSI控制器的距离大于1米的系统
(5)SCSI的工作到底是什么
在SNIA的规定中,SCSI的作用就是接受上层的请求,将任务交付给下层的控制器,然后等控制器完成工作后再将信息反馈给上层,它起的作用是中间层。
SCSI的协议模型分为三层:应用层、传输层、互连层
应用层:SCSI定义了工作的主客方,发起的是initiate,接受的是target
传输层:定义一系列命令实现数据的传送
互连层:定义了在总线上各个设备的通信的协议
(6)SCSI寻址方式
OS用三元方式定义设备进行寻址:总线、ID、LUN(逻辑单元号)
总线代表设备位于哪一条总线上;ID代表SCSI设备的编号,一般有8或16个;由于诸如RAID控制器下有多块盘一样的情况,OS再加了一位地址叫LUN,也就是逻辑单元号。
注意同一总线上的不同ID具有不同优先级。
在同一条总线上多个SCSI设备组成SCSI域,同一时刻只允许一对设备进行通信。
三、FC和iSCSI
SCSI是目前所有存储协议的基础。
SCSI协议所能连接的设备数量有限,对传输距离
也有限制,网络科学家们想到了借助以太网和FC交换网络的优势来传输SCSI指令,这样也变远了。
SCSI网络是面向连接的,凡是面向连接的协议都会给系统造成开销。而尽最大努力交付的协议往往因为没有固定链路反而具有更好、更实用的可靠性,这类无连接网络包括FC和TCP/IP。
请注意区别此连接和我们计网课堂上学的TCP是一个面向连接的协议区别开来。TCP是运行在两端的协议,而不是交换网络上。
一开始,在存储和服务器界,大家都用FC交换网络,FC有着天生的优势。
(一)FC
Fibre Channel,是指网状通道,绝对不是指光纤通道,很多资料都把fibre(网状)和fiber(光纤)混淆了。
FC是一种串行传输协议,是一种高速的网络传输技术,速度一直在提升,目前笔者了解到的速度已经达到了32Gb。为了保证远距离传输,一般才会采用光纤介质,这也是人们常常弄错FC是指使用光纤线的协议的原因。
FC的链路层将数据封装成帧,同样也有拥塞控制的策略,这里就不详细赘述了。
(1)网络拓扑
FC有两种典型的拓扑:FC-AL和Fabric
FC-AL的所有设备首尾相接构成了一个环路,一个环路可以支持128个地址,实际有127个可用的节点地址。数据帧在环路中,是一跳一跳传输的,并且只能按照一个方向。在环路中,若某个设备坏了,可以通过旁路机制将自己pass掉,不影响其他设备工作。
Fabric的意思是网状构造,其实是一个网状交换矩阵,他的效率自然比环路高,矩阵中的所有点都可以同时进行点对点通信。带宽是所有端口带宽的和,而AL的总带宽是恒定的。每个FC设备都接入矩阵的一个点,这个矩阵一般被做成芯片集成到交换机上。
(2)寻址
类似于以太网鸭,FC网络中的每个设备也有一个物理地址WWNN(world wide node name),每个设备上的每个端口都有一个WWPN(world wide port name),字如其名,在世界范围上都是唯一的。WWNN被写入设备的ROM中,一般不可以改变。
WWPN地址长度64位,需要8B的空间,太浪费了。所以FC在WWPN上加一个映射层,这样每个接口就又有了一个Fabric ID,它有24位,高8位被定义为Domain区分符(用来区分许多FC交换机组成的庞大的网络中每个交换机本身),中8位是Area区分符(用来区分同一台交换机上的不同端口组),低8位是PORT区分符(用来区分同一个组中不同的ID)。
(二)iSCSI
以太网技术是使用最广泛,最成功的网络技术。既然SCSI寻址少、距离短,而FC的成本高,为何不用现成的以太网来解决?
答案当然是可以的,这也就是现在运用最广泛的IP SAN。他是一种在TCP/IP上进行块传输的协议。
注:此部分内容参考图书为《大话存储终极版》,作者张冬。
四、FCIP、FCoE
在早期,FC速度和稳定性比IP强太多了,但是成本高,扩展性比不上IP,所以以前一直是高端市场用FC,中低端用IP。技术一直在发展,两种技术也在融合。
一般协议融合有三种思路:调用(一种协议完全利用另外一种协议)、封装(一种协议将另外一种协议完整数据包打包封装成自己的包)、映射(一种协议对另外一种协议映射翻译)。
(1)FCIP
FCIP用的是隧道技术,即将FC协议封装在IP包里,这样就可以通过IP“走到更远的地方”。他和IPFC是一对双胞胎。
(2)FCoE
FC用了IP后效果并没有一开始预计的好,科学家们干脆直接O到以太网(Ethernet)上。
注:此部分内容参考图书为《大话存储终极版》,作者张冬。
五、DMA、RDMA、IB
(1)DMA
直接内存访问。就是一台主机或者一块主板上的设备直接对内存进行数据交换,不经过CPU,这样可以减少CPU的中断次数,提升性能。主机CPU不参加活动,不代表就没人管了,计算机中一般采用专用硬件来做这件事,例如啥啥控制器、啥啥网卡这类东西。
(2)RDMA
R代表remote,意思是远程,结合一下DMA,RDMA就是远程直接数据存取。它的范围更大了,跨了主机,一台主机的内存直接去访问另外一台主机的内存。
传统的不同主机间进行数据交互,例如IP SAN采用TCP/IP协议,这种标标准准的协议在传数据时要经过应用软件、OS等层,层层封装和拆封,会占有比较大的服务器资源。
那么RDMA到底该如何实现呢,我们解放了服务器的CPU,那就得再找个“管家”来做这件事才行,所以一般会用专用硬件,比如智能网卡,特别得交换机等。在技术界,我们看一家厂商得研发实力,有一个比较直接的点就是是否有专用硬件的设计能力。
(3)RDMA实现方式
既然RDMA采用专用硬件来实现,那么有哪些呢。
目前支持RDMA标准或者功能的协议有:IB、RoCE、iWARP。
1)InfiniBand
IB一开始就支持RDMA,需要有专用网卡和交换机设备
2)RDMA over Ethernet
可以说所有技术都逃不开以太网,RoCE可利用以太网来实现RDMA,需要专用网卡,也就是NIC要支持RoCE协议。
3)iWARP
RDMA over TCP,也是一种基于以太网来实现RDMA的技术。
此部分内容参考:
https://weibo.com/p/1001603936363903889917
六、ATA、IDE、SATA、SAS
前文讲到了SCSI协议,那么落实到硬盘接口,也有了相应的技术。
硬盘接口指令集分为SCSI和ATA两大类。
(1)IDE:并行ATA
(2)SATA:串行ATA
(3)SAS:串行SCSI
七、PCI、PCIe
在第一部分我们就提到了总线,图中与外围设备进行数据交换采用PCI总线。PCI是并行的、总线型的,为了顺应时代,提高速度,出现了PCIe,串行的、点对点的。
除了架构的区别外,他们长得也不一样。
参考文章:
https://zhuanlan.zhihu.com/p/26172972
https://baijiahao.baidu.com/s?id=1627723059692285447&wfr=spider&for=pc
八、NVMe
(1)
Non-VolatileMemoryExpress,非易失性存储器的传输规范。也就是说他是一个传输的协议,而ATA、SCSI等是接口协议,所以他们互相组合可以有多种不同的产品形态。
(2)
要理解这个技术有什么用,我们可以从他的诞生背景出发。
SSD的出现为存储介质性能带来了翻天覆地的变化,在这一块领域,技术的瓶颈不再是硬盘了,逐渐变成了计算机和接口之间的通信标准。
传统的SATA SSD和 SAS SSD都是单队列处理的,而NVMe可以在计算机和存储之间建立多个通路,目前已经达到了最多支持64K个队列,每个队列可达到64K条指令。
参考:
https://baijiahao.baidu.com/s?id=1637421199219751340&wfr=spider&for=pc
九、NVMe over Fabric
NVMe解决的是主机与接口之间的通信协议,那么更远的两台主机之间也想使用更高效的通信协议,于是便有了NVMe over Fabric。
这个F指的是网络结构,通常有FC、RDMA(IB、iWARP、RoCE)
十、NDMP
网络数据管理协议,这个协议是用来让网络附加存储设备(NAS)和备份设备之间传输数据的。这个协议省掉了在备份服务器上传输数据的过程,减轻了他的负担。
十一、NDM
无中断数据迁移,简单的来说,在存储层,把LUN1的数据迁移到LUN2中,上层业务无感知。