存储接口类型
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的通信模型
SCSI采用分层结构,类似于TCP/IP七层模型,SCSI分为三层结构:
SCSI应用层:SCSI协议采用C/S架构;SCSI客户端(可以是应用程序、文件系统、操作系统等)位于主机,发起I/O请求;SCSI服务器位于目标设备(例如存储阵列)中,对客户端的I/O请求做出响应;SCSI请求和回应通过下层协议传输
SCSI传输层:包含发起方和目标方通信的服务和协议;SCSI设备之间通过一系列的命令实现数据块的传送(分为命令的执行、数据的传送、命令的确认三个阶段)
SCSI物理层(互联层):完成SCISI设备对总线的连接,完成发送方和目标方的选择等功能
SCSI总线逻辑架构图(并行)
SCSI ID与LUN的概念
我们知道SCSI总线上可挂载的SCSI设备(指的存储设备)数量是有限的,一般为8个或者16个,可以用target ID(SCSI ID)来描述这些设备;设备只要加入系统,就会有一个代号,我们在区分设备的时候,只需要说其代号即可
而实际上我们需要用来表示的对象,是远远超过该数字的,于是我们引入了LUN的概念,也就是说LUN的作用就是扩充了Target ID;每个Target下都可以有多个LUN Device,我们通常简称为LUN.
每个Target上最多有32个LUN,一个LUN对应一个逻辑设备(一个逻辑设备可能是一个分区,也有可能是一个独立的磁盘.)
主机适配器
是安装在计算机主板上的硬件设备,提供一个SCSI总线的接口,以便SCSI设备可以与计算机进行数据传输
主机适配器也被分配一个唯一的SCSI ID,一般为SCSI ID 7
作用
负责处理SCSI设备的请求和命令,并将其转为计算机能够理解的格式
负责管理SCSI设备的地址空间,以便计算机能够正确地识别和访问每个设备
注意
一台计算机可以有多个主机适配器,主机适配器可以控制一个或多个SCSI总线,一条SCSI总线可以连接多个目标设备
终结器
终结报文的传输(限制广播报文的传输)
SCSI通信过程
Initialor和主机适配器之间的关系
主机适配器是连接SCSI设备和计算机的接口,是硬件设备
Initialor是通过主机适配器提供的接口控制SCSI总线上的设备,实现数据在设备之间的传输和管理,是进行数据传送的控制器
Initialor通过SCSI总线与Target设备相连接(对于iSCSI来说Initialor不和Target直连)
工作流程(Initialor和Target构成了一个典型的C/S架构)
发起方Initialor(发起数据访问的设备)
Initialor可以是PC/服务器上的某个应用程序(也可以是文件系统、操作系统等)
Initialor通过发起SCSI请求来获取存储资源
每个Initialor也有相应的Initialor ID进行标识,并且是唯一的(Initialor不属于SCSI设备)
SDS
此处的SDS不知道指的是软件定义存储还是SCSI设备描述符(SCSI Device Descriptor)
目前暂定为软件定义存储,帮助发起方和目标方交互
目标方Target(等待数据访问的设备--存储)
回复SCSI请求并通过LUN提供业务
注意事项:LUN是对目标器的扩展,启动器没有LUN来扩展
SCSI读写流程
此图片来自:存储协议篇(一) - 墨天轮
完整的SCSI请求
一个完整的SCSI请求由CDB、数据、命令属性信息构成
其中CDB描述了该SCSI命令的具体细节(包括操作类型、数据处理方式等)
CDB命令描述块
CDB定义了与发起方请求相关的,会被目标设备执行的操作指令
CDB的结构(最大16个字节)
CDB包含了1个字节的操作码
后接5个或更多字节的特定指令参数
结尾1个字节的控制字段
因此CDB的长度会根据不同的指令参数而改变
响应——状态码
当目标器完成设备命令处理后,会返回状态响应给启动器,用于指示命令的完成状态(不会回复CDB)
SCSI通过Status code状态码和Status qualifier状态限定符来告知命令的处理结果
Status code状态码
状态码状态描述00hGOOD命令正常完成,未发生错误02hCHECK CONDITION命令处理返回Sense Data,需要根据Sense信息确定后续执行的动作04hCONDITION MET仅限于为其指定的命令使用08hBUSY设备处于忙碌状态,暂时无法处理新的命令28hTASK SET FULL设备task set资源不足40hTASK ABORTED命令被终止
Status qualifier配合状态码提供更多的返回该状态的原因
SCSI寻址
寻找目标方
FC基础概念
FC协议是一个区别于MAC协议的一个二层协议
FC是一种高性能的串行连接标准,最开始为一种传输协议,由于其性能较高,逐渐发展到前端作为主机接口,并逐渐发展为点对点、交换机等组网
FC协议结构
**FC-4:高层协议映射 **
将SCSI、IP、ATM等协议封装到FC网络中进行传输----封装IP、ATM的功能已经不使用了
**FC-3:通用服务(压缩解压缩、加密解密等功能) **
本层包括条带(通过多条通道传输数据), 多点传送(将一个信息发送到多个目标)和查寻组(为一个节点映射多个端口)等先进功能。
**FC-2:数据分发 **
本层定义了在网络内发送数据的基本规则
如何将数据切分为小帧;
一次可以发送多少数据(流控制);
帧应当发送到什么地方。它同时包括根据应用定义服务等级。
**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尺寸x1x2x4x8x16PCIE1.0250MB/s500MB/s1GB/s2GB/s4GB/sPCIE2.0500MB/s1GB/s2GB/s4GB/s8GB/sPCIE3.01GB/s2GB/s4GB/s8GB/s16GB/sPCIE4.02GB/s4GB/s8GB/s16GB/s32GB/s
特点PCIE可以提高系统吞吐量、可扩展性和灵活性
支持热插拔(PCIE总线接口插槽包括“热插拔检测信号”)
节省IO,减少板级空间,降低干扰
PCIE协议
- 数据链路层(Data Link Layer)
数据链路层的重要作用就是要保证PCI Express总线传输的数据包的正确性和可靠性。
事务层(Transaction Layer)主要作用有两个:
一是接受来自软件层送来的读、写请求,或者本身创建一个请求封装包传到数据链路层,这种数据包称为“处理层数据包”(TransactionLayer Packet,TLP)
另一个作用是接受从链路层传来的响应数据包(DataLink Layer Packet,DLL P),并将其与相关的软件请求相关联,传送至软件层(应用层)处理
版权归原作者 静下心来敲木鱼 所有, 如有侵权,请联系我们删除。