本文主要是介绍存储接口协议——SCSI、FC、SAS、PCIE等协议基本讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
存储接口类型
SCSI接口协议
基本概念
SCSI总线逻辑架构图(并行)
具体的工作原理
SCSI寻址
FC协议讲解
FC基础概念
FC协议结构
FC通信
FC交换网络工作流程:(以封装SCSI协议为例)
FC拓扑结构
FC协议的端口类型
FC适配器(FC HBA卡)
SAS接口协议(串行SCSI)
基本概念
SAS协议层次结构
SCSI、SAS、SATA之间的关系
PCIE接口协议
基本概念
PCIE协议
存储接口类型
SCSI接口、FC接口、SAS接口
这三个都是用于承载SCSI上层协议的
对于SCSI接口来说,有人可能蒙掉了,SCSI不是上层协议的名字么,为何底层物理接口也叫SCSI?
因为SCSI这个标准最早的时候把上层协议一直到底层传输协议、物理层、网络层全给定义了
SATA接口
仅用于承载ATA协议
其前身IDE接口,也承载ATA协议
为低端应用而设计的机械底盘,不适用于大数据吞吐量和多线程传输
PCIE标准接口
承载PCIE传输协议,NVMe over PCIE;也有SCSI over PCIE但是没有普及
U.2接口
其中包含SAS、SATA和PCIE x4三套接口,充分利用空间,将三套金手指信号做到接口上,各干各的;意味着通过此接口可以插入一块SAS或SATA或PCIE盘
U.2实质上是一种combo组合接口。
m.2
接口广泛用于平板电脑里的固态存储介质
其底层可承载PCIE传输协议,然后可以实现SCSI over PCIE,NVMe over PCIE
其也可以直接跑SATA信号,相当于新型的SATA接口。
emmc接口
没有连接器,直接从flash颗粒管脚以贴片的方式与emmc控制器的管脚相连
承载onfi/toogle协议;属于并行总线
ufs接口
没有连接器,直接从flash颗粒管脚以贴片的方式与ufs控制器的管脚相连,属于串行总线
接口类型 主要优势 主要劣势 应用领域 SCSI 性能较高 价格较高 企业级存储 FC 高性能;高可靠性 价格较高 高端存储 SATA 价格低,容量高 性能、可靠性较低 中低端存储 SAS 高性能,高可靠性 价格较高 中高端存储 其中SCSI、FC、PCIE不仅可以作为接口协议,还可以作为存储的传输协议
SCSI接口协议
基本概念
SCSI小型计算机系统接口,通过此接口所搭建的链路中跑的报文信息都叫做SCSI协议
- SCSI协议是主机与存储磁盘通信的基本协议
- DAS就是使用SCSI协议实现主机服务器与存储设备的互联
- SCSI线缆一般只有10m到20m左右,不利于长距离传输
SCSI总线逻辑架构图(并行)
SCSI阵列、LUN:
我们知道SCSI总线上可挂载的设备数量是有限的,一般为8个或者16个,可以用target ID(SCSI ID)来描述这些设备;设备只要加入系统,就会有一个代号,我们在区分设备的时候,只需要说其代号即可
而实际上我们需要用来表示的对象,是远远超过该数字的,于是我们引入了LUN的概念,也就是说LUN的作用就是扩充了Target ID;每个Target下都可以有多个LUN Device,我们通常简称为LUN.
每个Target上最多有32个LUN,一个LUN对应一个逻辑设备(一个逻辑设备可能是一个分区,也有可能是一个独立的磁盘.)
主机适配器:
类似一个管理员,管理总线上的数据传输
终结器:
终结报文的传输(限制广播报文的传输)
具体的工作原理
工作流程
发起方Intialor(发起数据访问的设备---服务器)发起SCSI请求
通过SDS(软件定义存储—即帮助发起方找到目标方)发送给目标方Target
目标方Target(等待数据访问的设备--存储)回复SCSI请求并通过LUN提供业务
注意事项:LUN是对目标器的扩展,启动器没有LUN来扩展
完整的SCSI请求
一个完整的SCSI请求由CDB、数据、命令属性信息构成
其中CDB描述了该SCSI命令的具体细节(包括操作类型、数据处理方式等)
SCSI寻址
FC协议讲解
FC基础概念
FC是一种高性能的串行连接标准,最开始为一种传输协议,由于其性能较高,逐渐发展到前端作为主机接口,并逐渐发展为点对点、交换机等组网
FC协议结构
FC-4:高层协议映射
将SCSI、IP、ATM等协议封装到FC网络中进行传输----封装IP、ATM的功能已经不使用了
FC-3:通用服务(压缩解压缩、加密解密等功能)
本层包括条带(通过多条通道传输数据), 多点传送(将一个信息发送到多个目标)和查寻组(为一个节点映射多个端口)等先进功能。
FC-2:数据分发
本层定义了在网络内发送数据的基本规则
1) 如何将数据切分为小帧;
2) 一次可以发送多少数据(流控制);
3) 帧应当发送到什么地方。它同时包括根据应用定义服务等级。
FC-1:字节编码
进行编码或解码信号
本层记录8b/10b传输编码用于平衡传输位流
编码还可以作为数据传输和接受错误检测机制(2bit是校验码)
8G FC使用 8/10bit字节编码,16G FC使用64/66bit 字节编码
FC-0:物理界面
连接物理介质的界面,定义编码和解码标准等
常用连接线为铜缆和光缆
FC通信
FC通信主要依靠WWN和FCID号来实现,具体如下:
当有一个WWN登录到交换机的某一个端口时,交换机会为其分配一个FCID地址
同时交换机也将会创建FCID和登录WWN地址之间的关联并维护他们之间的关系
WWN号:类似于以太网中的MAC地址的作用(64bit)
硬件的全球唯一标示(由WWNN和WWPN组成)
WWNN-----节点号 FC网络中每个设备自身都有一个WWNN
WWPN----- 端口号 FC网络中每个设备的端口都有一个WWP
FCID:类似于以太网中的IP地址(24bit)
由于WWN号用来寻址太长,会影响到路由的性能,索引采用另外一种方式(FCID)来进行寻址(当时这个FCID需要与WWN关联--通过Flogin表关联且本地有效)
FCID是由FC交换机分配给终端的
- Domain ID:用来表示交换机本身的地址(最大256个地址,除去被保留的地址,只有239个地址可用)。所以一个SAN网络最多连接239个交换机
- Area ID: 用于表示不同端口组
- Port ID: 用于表示同一端口组中不同的端口(或者是仲裁环的物理地址)
FC交换网络工作流程:(以封装SCSI协议为例)
1、光纤网络搭建完成后,分配各自FC交换机的Domain ID:
由于Domain ID最多只有239个地址,所以网络中最多只可以有239台FC交换机
(如果FC交换机划分了VSAN----可以将一台交换机看作多台交换机,那这个VSAN也占用一个Domain ID)
NPV模式——扩展FC SAN的规模
NPV交换机可以扩展FC SAN的规模,且不需要占用Doamin ID的资源(一般部署在网络边缘处,位于N节点---服务器 和交换机之间)
可以解决在中大型网络中Domain ID不够用,影响网络的部署性和扩展性的问题
2、生成FSPF路由表使整个FC网络光纤交换机之间可以查询路由并通信
FC交换机拥有Domain ID后,会维护一张FSPF(光纤最短路径优先)路由表
路由表维护Domian ID、Domain ID的Cost、出接口三种信息
FSPF--类似于路由表,只有在进行数据转发需要用到
Cost计算方法:2Gbps 500,4Gbps 1000 以此类推
3、终端使用HBA卡接入光纤交换机获取FCID
服务器或者存储通过HBA卡接入光纤交换机,通过自己的WWN向光纤交换机申请FCID
此时光纤交换机会将自己的Domain ID加上Area ID和Port ID分配给服务器或者存储
并在光纤交换机上产生一张本地有效的Flogin表,此表记录每个端口接入终端的信息(VSAN、FCID、WWN之间的映射关系)
Flogin表:关联自身分配的FCID和WWN 本地有效
Flogin协议的FCID为0xFFFFFE(预留地址)
4.服务器与磁盘阵列之间通信,执行三次Plogin(动态口令)操作建立联系
- 第一次
让终端在各个光纤交换机上注册,这时每个光纤交换机都是一个FCNS服务器(FC名称服务器),并产生一个 FCNS数据表,并同步给整个FC网络的光纤交换机
FCNS数据表里包含端口所属VSAN,FCID是什么,端口是什么类型 ,PWWN,什么网络类型,功能类型,应用哪种QoS等信息
PLogin协议的FCID为0xFFFFFC(预留地址)。
FCNS数据表中功能类型一般分为两类:
一类是发起者(Initiator),一般为服务器、一类是目标(target),一般为磁盘阵列
FCNS数据表(统计目标器和启动器),全局同步
- 第二次
再次发送Plogin给光纤交换机,请求查看一下FC网络中有那些类型为target的可用磁盘阵列
- 第三次
发送Plogin给target建立链接(以下是服务器和存储建立连接,存储和服务器建立连接的过程类似)
5.服务器与磁盘阵列建立连接成功,执行PRLI操作,建立SCSI进行交互连接
传输过程同上,三次操作;只是报文类型由Plogin变为PRLI
6.开始传输SCSI数据块
传输过程同上,只是类型变为SCSI块数据
FC拓扑结构
点对点
两台设备直接连接到对方(最简单的一种拓扑)
仲裁环
所有设备连接到一个类似于令牌环的环路上(在这个换路上添加/移除一个设备会导致环路上所有活动中断;通过光纤通道集线器的方法能将众多设备连接到一起,形成一个逻辑上的环路,这种环路可以避免环路节点上的故障不会影响整个换路上的通信-多用于小型SAN环境中,现在已不再使用)
交换网络
构建现代FC SAN的方式;使用FC交换机连接主机和存储设备
FC协议的端口类型
设备(节点)端口:
N_Port:Fabric网络架构中,FC终端设备通过此接口直连连接FC交换机
L_Port:仲裁环上(私有环)的FC终端交换机的端口类型(Loop),连接FCAL集线器
NL_Port:仲裁环上(开放环)的FC终端交换机的端口类型,连接FCAL集线器
交换机端口:
E_Port:扩展端口(用于连接交换机到交换机的端口),需要在此端口承载控制信息(路由协议等)
F_Port:Fabric网络架构中,FC交换机通过此接口连接N端口的FC终端设备
FL_Port:Fabric Loop端口,连接FCAL集线器设备
G_Port:普通(Generic)端口,可以转换为E或F端口。
U_Port:通用(Universal)端口,用于描述自动端口检测的术语。
FC适配器(FC HBA卡)
是插在主机侧的
FC总线适配器,支持连接FC网络的应用,实现高带宽高性能存储组网方案
SAS接口协议(串行SCSI)
基本概念
SAS的基本概念
SAS是Serial Attached SCSI的缩写,即串行连接SCSI(SAS是SCSI总线协议的串行标准)
SAS的特点
1、SAS串行通信方式允许将多个数据通路全速与各个设备通信
2、SAS通过串行技术获得了更高的传输速率和更好的扩充性(SAS的背板可以兼容SATA和SAS两种硬盘)
3、SAS支持将多个窄端口捆绑形成宽端口(1根窄端口的速率是12GB,一般是4个窄通道连接在一起)
4、SAS结构采用扩展器(Expander)进行接口扩展,并兼容SATA硬盘
- 一个核心Expander连接外接分支的Expander(最多支持128个Expander)
- 1个外接分支Expander可以连接128个磁盘设备
- 所以1个SAS域理论上最多可以连接16384个磁盘设备
- 但是由于传输带宽的限制,目前最佳的实践是168块盘(7个分支扩展器分别连接24个硬盘,也就是7个24位硬盘槽)
5、SAS采用全双工模式
SAS协议层次结构
物理层:对于线缆、接头、收发器等硬件进行了定义;
PHY层: 包括了最低级的协议,比如编码方案和供电/复位序列等等;
链路层:描述的是如何控制phy层连接管理,以及CRC校验和速率匹配处理等;
端口层:描述的是链路层和传输层的接口,包括如何请求、中断、如何选择建立连接;
传输层:定义了如何将所传输的命令、状态、数据封装在SAS帧中,以及如何分解SAS帧;
应用层:描述了如何在不同类型的应用下使用SAS的细节。
SCSI、SAS、SATA之间的关系
在物理层:
- SAS接口和SATA接口完全兼容,SATA硬盘可以直接使用在SAS的环境中
- 从接口标准上而言,SATA是SAS的一个子标准,因此SAS控制器可以直接操控SATA硬盘,但是SAS却不能直接使用在SATA的环境中,因为SATA控制器并不能对SAS硬盘进行控制
在协议层,SAS由3种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。
- 串行SCSI协议(SSP)用于传输SCSI命令;
- SATA通道协议(STP)用于SAS和SATA之间数据的传输。
- SCSI管理协议(SMP)用于对连接设备的维护和管理;
因此在这3种协议的配合下,SAS可以和SATA以及部分SCSI设备无缝结合
PCIE接口协议
基本概念
PCIE一种高速串行计算机扩展总线标准,有两种存在形式(一个是PCIE接口,一个是PCIE通道)
PCIE接口:(4种尺寸)
PCIE通道:传输从存储接口过来的数据
除了PCIE接口可以通过通过PCIE通道传输,M.2接口、USB4.0、雷电3/4接口也是通过PCIE通道传输的
不同PCIE版本和不同PCIE接口尺寸对应的带宽
PCIE版本\PCIE尺寸 x1 x2 x4 x8 x16 PCIE1.0 250MB/s 500MB/s 1GB/s 2GB/s 4GB/s PCIE2.0 500MB/s 1GB/s 2GB/s 4GB/s 8GB/s PCIE3.0 1GB/s 2GB/s 4GB/s 8GB/s 16GB/s PCIE4.0 2GB/s 4GB/s 8GB/s 16GB/s 32GB/s 特点
PCIE可以提高系统吞吐量、可扩展性和灵活性
支持热插拔(PCIE总线接口插槽包括“热插拔检测信号”)
节省IO,减少板级空间,降低干扰
PCIE协议
- 数据链路层(Data Link Layer)
数据链路层的重要作用就是要保证PCI Express总线传输的数据包的正确性和可靠性。
- 事务层(Transaction Layer)主要作用有两个:
一是接受来自软件层送来的读、写请求,或者本身创建一个请求封装包传到数据链路层,这种数据包称为“处理层数据包”(TransactionLayer Packet,TLP)
另一个作用是接受从链路层传来的响应数据包(DataLink Layer Packet,DLL P),并将其与相关的软件请求相关联,传送至软件层(应用层)处理
这篇关于存储接口协议——SCSI、FC、SAS、PCIE等协议基本讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!