常用存储协议 华为存储HCIA.docx
《常用存储协议 华为存储HCIA.docx》由会员分享,可在线阅读,更多相关《常用存储协议 华为存储HCIA.docx(34页珍藏版)》请在冰点文库上搜索。
常用存储协议华为存储HCIA
SCSI/ISCSI协议:
存储中的SCSI和iSCSI:
SAN(StorageAeraNetwork):
存储区域网络,一种通过网络方式连接存储设备和应用服务器的存储构架,这个网络专用于主机和存储设备之间的访问。
当有数据的存取需求时,数据可以通过存储区域网络在服务器和后台存储设备之间高速传输
IPSAN:
通过百兆/千兆/万兆以太网络连接应用服务器和后端存储系统。
将SCSI指令和数据块通过高速以太网传输,继承以太网的优点,实现建立一个开放、高性能、高可靠性,高可扩展的存储资源平台
SCSI的历史:
SCSI-1:
1983-1985推出
支持异步和同步
支持7个8bit设备
最大速度5MBps
50pin数据线6m距离
已经淘汰
SCSI-2:
1988-1994推出
兼容SCSI-1
支持16bit宽带
最大速度16MBps
还在使用
SCSI-3:
1993年成为标准
兼容SCSI-2/SCSI-1
真正成为了一个体系结构
支持FCP/IEEE1394等多种介质
什么是SCSI:
SCSI即小型计算机接口(SmallComputerSystemInterface),指的是一个庞大协议体系,到目前为止经历了SCSI-1/SCSI-2/SCSI-3变迁
SCSI协议定义了一套不同设备(磁盘,磁带,处理器,光设备,网络设备等)利用该框架进行信息交互的模型和必要指令集
SCSI协议本质上同传输介质无关,SCSI可以在多种介质上实现,甚至是虚拟介质。
例如基于光纤的FCP链路协议,基于SAS的链路协议,基于虚拟IP链路的ISCSI协议
SCSI逻辑拓扑:
逻辑单元(LUN):
LUN是SCSI目标器中所描述的名字空间资源,一个目标器可以包括多个LUN,而且每个LUN的属性可以有所区别,比如LUN#0可以是磁盘,LUN#1可以是其他设备
目标器(Target):
处理SCSI指令的服务端称为目标器,它接收来自主机的指令并解析处理,比如磁盘阵列的角色就是目标器
启动器(Initiator):
本质上,SCSI是一个C/S架构,其中客户端成为启动器,连接存储中的目标器,负责向SCSI目标器发送请求指令,一般主机系统都充当了启动器的角色
SCSI的Initiator与Target共同构成了一个典型的C/S模型,每个指令都是“请求/应答”这样的模型来实现
Initiator主要任务:
发出SCSI请求
Target主要任务:
回答SCSI请求,通过LUN提供业务,并通过任务管理器提供任务管理功能
SCSI启动器模型:
主机的SCSI系统一般工作中“启动器”模式下面,由于SCSI的体系结构来说,分为了“架构层(中间层)”,“设备层”,“传输层”,故此一般的操作系统,都将SCSI分为三个层次,包括Windows,Linux,AIX,Solaris,BSD
Windows下的启动器架构:
Windows将SCSI启动器分为三个逻辑层次,其中ScsiPort负责实现SCSI的基本框架性处理流程,比如设备发现,名字空间扫描等。
若需要了解Windows驱动的详细细节可以参考DDK的文档或者WDM相关资料
Linux下的启动器架构:
Linux将SCSI启动器分为三个逻辑层次,其中scsi_mod中间层复杂处理SCSI设备无关和适配器无关的流程处理,比如一些异常,名字空间维护等。
HBA驱动提供SCSI指令的打包解包传输等链路实现细节,设备驱动实现特定的SCSI设备驱动,比如著名的sd(SCSI磁盘)驱动,st(SCSI磁带)驱动,sr(SCSI光盘设备)驱动等
Solaris下的启动器架构:
Solaris的结构和Linux/Windows很类似
AIX下的启动器架构:
AIX的结构也是分为三层,即:
SCSI设备驱动,SCSI中间层,SCSI适配驱动
目标器模型:
Target一般依据SCSI体系结构,分为三个层次,分别是链路端口层(PortLayer),中间层(MiddleLayer),目标设备层(DeviceLayer)。
其中最重要的是中间层,在中间层中将以SAM/SPC为规范,对LUN命名空间,链路端口,目标设备,任务,任务集,会话等进行管理维护。
端口层的驱动都以注册的形式动态载入,设备层的驱动也是动态载入
目标器中PORT模型:
PORT驱动将动态载入,PORT主要完成的任务是对链路上携带的SCSI指令的解包和封包,比如将指令打包为FPC或者ISCSI或者SAS等,或者将指令从FCP/ISCSI/SAS中解开。
iSCSI/FCP/SAS等硬件的目标器模式驱动都属于PORT范畴,PORT需要提供的方法函数可能包括,传输报文(xmit_response),准备好接受数据(xfer_data),管理指令处理完毕回调(mgmt_task_done),任务处理结束(cmd_done),端口控制(复位等control)等
目标器中间层:
中间层维护了“LUN空间”,“任务集”,“任务(命令)”等模型,对于LUN空间维护有两种截然不同的实现方法,一种是所有的PORT都看见的是一个全局的LUN,并外一种是为每个PORT维护一个LUN空间,其中第一种方法实现较为简单,这里的讨论以第一种展开
目标器中的Device模型:
本质上Device是一个SCSI指令“分析器”,通过处理INQUIRY告诉Initiator当前LUN是什么设备,通过READ/WRITE处理IO
SCSI协议和存储系统:
SCSI协议是主机与存储磁盘通信的基本协议
DAS使用SCSI协议实现主机服务器与存储设备的互联
控制器首先向总线处理器发出请求使用总线的信号。
该请求被接受之后,控制器高速缓存就开始执行发送操作。
在这个过程中,控制器占用了总线,总线上所连接的其它设备都不能使用总线。
当然,由于总线具备中断功能,所以总线处理器可以随时中断这一传输过程并将总线控制权交给其它设备,以便执行更高优先级的操作。
SCSI控制器相当于一个小型CPU,有自己的命令集和缓存。
SCSI是一种特殊的总线结构,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动的适当分配,动态完成
SCSI协议寻址:
总线号:
区分不同的SCSI总线
设备ID:
区分SCSI总线上不同的设备
逻辑单元号:
区分SCSI设备中的子设备
为了对连接在SCSI总线上的设备寻址,SCSI协议引入了SCSI设备ID和逻辑单元号LUN(LogicalUnitNumber)。
在SCSI总线上的每个设备都必须有一个唯一的设备ID,当然服务器中的主机总线适配器也拥有自己的设备ID,固定为7。
每条总线,包括总线适配器,最多允许有8个或者16个设备ID。
设备ID一方面用以寻址,另一个作用是标识该设备在总线使用上的优先级。
此外,在同一条总线上连接的不同的设备的设备ID必须不同,否则就会引起寻址和优先级的冲突
每一个存储设备可能包括若干个子设备,如虚拟磁盘、磁带驱动器等。
因此SCSI协议引入了逻辑单元号LUNID,以便于对存储设备中的子设备进行寻址
传统的SCSI控制器连接单条总线,相应的只具有一个总线号。
企业级的一个服务器则可能配置了多个SCSI控制器,从而就可能有多条SCSI总线。
在引入存储网络之后,每个FCHBA(HostBusAdapter)或iSCSI(InternetSCSI)网卡也都各连接着一条总线,因此必须对每一条总线分配一个总线号,在他们之间依靠不同的总线号加以区分。
我们可以使用一个三元描述标识一个SCSI目标:
总线号/目标设备ID/逻辑单元号LUNID
iSCSI的诞生:
iSCSI协议最早由IBM、CISCO、HP发起,2004年起作为正式的IETF标准,现有的iSCSI协议依据SAM2(SCSIArchitectureModel-2)
iSCSI(InternetSCSI)把SCSI命令和块状数据封装在TCP中在IP网络中传输
iSCSI作为SCSI的传输层协议,基本出发点是利用成熟的IP网络技术来实现和延伸SAN
什么是iSCSI?
:
iSCSI是互联网小型计算机系统接口(InternetSmallComputerSystemInterface)的简称,是一种在TCP/IP上进行数据块传输的标准,可以理解为SCSIoverIP
iSCSI可构成基于IP的SAN,为用户提供高速、低价、长距离的存储解决方案
iSCSI将SCSI命令封装到TCP/IP数据包中,使I/O数据块可通过IP网络传输
iSCSI(InternetSCSI)把SCSI命令和块状数据封装在TC。
P中在IP网络中传输。
iSCSI作为SCSI的传输层协议,基本出发点是利用成熟的IP网络技术来实现和延伸SAN
iSCSI协议是SCSI远程过程调用模型到TCP/IP协议的映射。
SCSI协议层负责生成CDB,并将其送到iSCSI协议层,然后由iSCSI协议层进一步封装成PDU,经IP网络进行传送
iSCSI启动器-目标器模型:
发起端(Initiator)
SCSI层负责生成CDB(命令描述符块),将CDB传给iSCSI
iSCSI层负责生成iSCSIPDU(协议数据单元),并通过IP网络将PDU发给target
目标器(Target)
iSCSI层收到PDU,将CDB传给SCSI层
SCSI层负责解释CDB的意义,必要时发送响应
iSCSI的通信体系仍然继承了SCSI的部分特性,在iSCSI通信中,具有一个发起I/O请求的启动器设备(Initiator)和响应请求并执行实际I/O操作的目标器设备(Target)。
在Initiator和Target建立连接后,Target在操作中作为主设备控制整个工作过程
iSCSIInitiator:
iSCSI启动器,可分为三种,即软件Initiator驱动程序、硬件的TOE(TCPOffloadEngine,TCP卸载引擎)卡以及iSCSIHBA卡。
就性能而言,软件Initiator驱动程序最差、TOE卡居中、iSCSIHBA卡最佳
iSCSITarget:
iSCSI目标器iSCSITarget,通常为iSCSI磁盘阵列、iSCSI磁带库等
iSCSI协议为Initiator和Target定义了一套命名和寻址方法。
所有的iSCSI节点都是通过其iSCSI名称被标识的。
这种命名方式使得iSCSI名称不会与主机名混淆
iSCSI使用iSCSIName来唯一鉴别启动设备和目标设备。
地址会随着启动设备和目标设备的移动而改变,但是名字始终是不变的。
建立连接时,启动设备发出一个请求,目标设备接收到请求后,确认启动设备发起的请求中所携带的iSCSIName是否与目标设备绑定的iSCSIName一致,如果一致,便建立通信连接。
每个iSCSI节点只允许有一个iSCSIName,一个iSCSIName可以被用来建立一个启动设备到多个目标设备的连接,多个iSCSIName可以被用来建立一个目标设备到多个启动设备的连接
iSCSI体系结构:
iSCSI节点将SCSI指令和数据封装成iSCSI包,然后该数据封装被传送给TCP/IP层,再由TCP/IP协议将iSCSI包封装成IP协议数据以适合在网络中传输
在支持iSCSI的系统中,用户在一台SCSI存储设备上发出存数据或取数据的命令,操作系统对该请求进行处理,并将该请求转换成一条或者多条SCSI指令,然后再传给目标SCSI控制卡。
iSCSI节点将指令和数据封装(Encapsulation)起来,形成一个iSCSI包,然后该数据封装被传送给TCP/IP层,再由TCP/IP协议将iSCSI包封装成IP协议数据以适合在网络中传输。
也可以对封装的SCSI命令进行加密处理,然后在不安全的网络上传送
数据包可以在局域网或Internet上传送。
在接收存储控制器上,数据报重新被组合,然后存储控制器读取iSCSI包中的SCSI控制命令和数据发送到相应的磁盘驱动器上,磁盘驱动器再执行初始计算机或应用所需求的功能。
如果发送的是数据请求,那么将数据从磁盘驱动器中取出进行封装后发送给发出请求的计算机,而这整个过程对于用户来说都是透明的。
尽管SCSI命令的执行和数据准备可以通过使用标准TCP/IP和现成的网络控制卡的软件来完成,但是在利用软件完成封装和解封装的情况下,在主机处理器上实现这些功能需要很多的CPU运算周期来处理数据和SCSI命令。
如果将这些事务交给专门的设备处理,则可以将对系统性能的影响减少到最小程度,因此,发展在iSCSI标准下并执行SCSI命令和完成数据准备的专用iSCSI适配器是有必要的。
iSCSI适配器结合了NIC和HBA的功能。
这种适配器以块方式取得数据,利用TCP/IP处理引擎在适配卡上完成数据分化和处理,然后通过IP网络送出IP数据包。
这些功能的完成使用户可以在不降低服务器性能的基础上创建一个基于IP的SAN
iSCSI和SCSI、TCP和IP的关系:
PDU:
协议数据单元
TCP/IP:
传输控制协议/因特网互联协议
8b/10b编码是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去
SAS协议:
存储中的SAS:
在企业级存储系统中,SAS(SerialAttachedSCSI)接口已经取代并行连接SCSI和SATA接口
SAS采用点对点架构,性能可高达300MB/s、600MB/s、或更高
SAS采用点对点连接的设计使得通信的两个设备间建立了专用链路进行通信,而在并行SCSI中采用的多点总线设计则是多个设备共享同一条总线。
使用点对点连接,通信速度也快得多,因为通信的两个设备之间不需要在通信前检测是否被允许使用连接链路。
每个设备连接到指定的数据通路上提高了带宽
串行接口结构简单,支持热插拔,传输速度快,执行效率高。
一般情况下,较大的并行电缆会带来电子干扰,SAS的电缆结构可以解决这个问题。
SAS的电缆结构节省了空间,从而提高了使用SAS硬盘服务器的散热、通风能力
为什么要发展SAS?
1、并行总线已经发展到顶峰,到达带宽的极限;
2、FibreChannel、InfiniBand、Ethernet等串行总线对于存储应用来说都存在缺点:
a)FC:
价格昂贵,适用于复杂组网、远距离的场景
b)InfiniBand:
组网复杂,价格昂贵贵
c)iSCSI:
时延高、传输速率慢
串行连接SCSI:
SAS
什么是SAS?
:
SAS:
SerialAttachedSCSI,是SCSI总线协议的串行标准,即串行连接SCSI
SAS采用串行技术以获得更高的传输速率和更好的扩充性,并兼容SATA硬盘
SAS目前的传输速率高达3Gbps、6Gbps、12Gbps或更高,支持全双工模式
SAS的优点:
更低的成本:
SAS的背板可以兼容SAS和SATA两类硬盘,使用不同类型的硬盘时部需要再重新进行投资
不需要为SCSI和SATA标准分别设计不同的产品,同时也减少了设计时布线的复杂度和PCB的层数,因此降低了成本
系统集成商也不需要为给客户配置不同硬盘而采购不同的背板和线缆
可连接更多的设备:
SAS技术引入了SAS扩展器,使SAS系统可以连接更多的设备,其中每个扩展器允许连接多个端口,每个端口可以连接SAS设备、主机或其他SAS扩展器
高可靠性:
器件可靠性同SCSI硬盘、FC盘,比SATA好
保留了经过验证的SCSI命令集
高性能:
端口单向速率高
与SATA兼容:
SATA硬盘可以直接装入SAS环境里。
可以在同一个系统里使用SATA或SAS盘,符合现在日益流行的分级存储战略
SAS协议层次结构:
SAS标准将SAS架构分为6层,从低到高依次是物理层、phy层、链路层、端口层、传输层和应用层,每层负责一定的功能:
物理层:
对于线缆、接头、收发器等硬件进行了定义
PHY层:
包括了最低级的协议,比如编码方案和供电/复位序列等等
链路层:
描述的是如何控制phy层连接管理,以及原语、CRC校验和加解扰、速率匹配处理
端口层:
描述的是链路层和传输层的接口,包括如何请求、中断、如何选择建立连接
传输层:
定义了如何将所传输的命令、状态、数据封装在SAS帧中,以及如何分解SAS帧
应用层:
描述了如何在不同类型的应用下使用SAS的细节
SAS特点:
SAS的串行通信方式允许多个数据通路全速与各个设备通信
SAS支持多个窄端口捆绑形成宽端口
SAS结构采用扩展器(expander)进行接口扩展,具有非常好的扩展能力
SAS采用全双工模式
SAS相对SCSI而言,最重要的提升在于:
因为采用串行通信方式,可以提供更高的吞吐量,并为将来更高的性能成为可能
四个窄端口可以绑定成一个宽端口(WideLink),提供更高的吞吐量
SAS采用全双工(双向)通信模式,而不是单向通信。
传统的并行SCSI只可以在一个方向上进行通信,当设备接收到并行SCSI的一个数据包后,如果该设备要响应该数据包,就需要在上一个链路断开后,再重新建立一个新的SCSI通信链路。
而SAS,则可以进行双向通信。
每个SAS电缆有4根电缆,2根输入2根输出。
SAS可以同时进行数据的读写,全双工的数据操作提高数据的吞吐效率
SAS的可扩展性:
SAS结构采用扩展器(expander)进行接口扩展,具有非常好的扩展能力,1个SAS域最多可以连接16384个磁盘设备
SASExpander:
SAS域中的互联设备,类似于以太网交换机,通过Expander的级联可以大大增加终端设备的连接数,从而节约HBA花费。
每个Expander最多可以连接128个终端设备或者128个Expander。
1个SAS域由以下几个部分组成:
SASExpander、终端设备、连接设备(即SAS连接线缆)
SASExpander配备了一个地址的路由表跟踪,记录了所有SAS驱动器的地址
终端设备包括启动器(通常为SASHBA卡)和目标器(SAS/SATA硬盘,也可以是处于目标模式的HBA卡)
SAS域中不能形成环路,以保证其发现终端设备流程的正常进行
实际使用中,因为带宽的原因,扩展器连接的终端设备比128个少很多
SAS连线的原则:
SAS线缆一般有四个通道,每个通道现在常用的是12Gb/s
SAS设备以环路(也称为链)的形式连接在一起
线缆的带宽为4X12Gb/s,限制了环路中的硬盘数
当前一个环路中的最大硬盘数的最佳实践是168块盘,也就是说最多7个24个硬盘槽位的硬盘框组成一个环路
SAS线缆接口在SAS线缆单通道为6Gb/s时称为MiniSAS线缆,现在单通道速度提升到12Gb/s了,其相应的SAS线缆称为高密度MiniSAS线缆
SAS与其他传输技术的比较:
FC/FCOE协议:
存储中的FC:
Fabric是一个由智能光纤通道交换机构成并具有良好系统设计的高智能网络,这一网络可以提供企业级的性能,扩展能力,可管理能力,可靠性和可用性能力
什么是FC?
FC是光纤通道(FiberChannel)的简称,用于服务器共享存储设备的连接,存储控制器和驱动器之间的内部连接
FC是一种高性能的串行连接标准。
其接口传输速率为4Gbps、8Gbps、16Gbps或更高速率。
传输介质可以选择铜缆或光纤,传输距离远,支持多种互联拓扑结构
FibreChannel的定义:
也就是“网状通道”的意思,简称FC。
Fiber和Fibre只有一字之差,所以产生很多误解。
FC只代表FibreChannel,而不是FiberChannel,后者被翻译为“光纤通道”。
像TCP/IP一样,FC协议集同样具备TCP/IP和以太网中的很多概念,例如:
FC交换机、FC路由器、SPF算法等。
完全可以将FC协议理解为SAN中的TCP/IP,因为他们都遵循OSI模型
FC协议其实并不能翻译成光纤协议,FC的链路介质可以是光纤、双绞线或同轴电缆,只是FC协议普遍采用光纤作为传输线缆而不是铜缆,因此很多人把FC称为光纤通道协议。
FC协议优点:
高带宽、高可靠性、高稳定性、低延迟、抵抗电磁干扰等优点,能够提供非常稳定可靠的光纤连接,容易构建大型的数据传输和通信网络,目前支持1x、2x、4x和8x的带宽连接速率,随着技术的不断发展该带宽还在不断进行扩展,以满足更高带宽数据传输的技术性能要求
FC协议的演进趋势:
FC开发于1988年,在那个时候,光纤通道主要用于简化连接,增加数据传输距离,而不是增加数据传输的速度。
后来,它被用于提高硬盘协议的传输带宽,侧重于数据的快速、高效、可靠传输。
到上世纪90年代末,FCSAN开始得到大规模的广泛应用
前景分析:
从调研机构的分析走势来看,16GFC已经成为必然趋势,且随着PCIe3.0的到来以及虚拟机密度的增加,需要更高的I/O吞吐量,32GFC也将势如破竹,前途无量。
标准更新和商用规律:
FC标准每隔36~48年个月进行一次更新,在新标准出来后,12~24个月实现商用,主流厂商会在2年内陆续推出产品。
每代标准生命周期6年左右,但是从8G、16G来看,生命周期明显在缩短,更新换代周期明显加快
FC协议结构:
光纤通道的主要部分实际上是FC-2。
其中从FC-0到FC-2被称为FC-PH,也就是“物理层”。
光纤通道主要通过FC-2来进行传输,因此,光纤通道也常被成为“二层协议”或者“类以太网协议”。
光纤通道的数据单元叫做帧。
即使光纤通道本身为五层,但是大部分光纤通道是指第二层协议。
一个光纤通道帧最大2148字节,而且光纤通道帧的头部与以太网数据包不同。
光线通道只使用一个帧格式,在多个层上完成各种任务。
帧的功能决定其格式。
光纤通道帧起始于帧开始(SOF)标志,随后是帧头部,稍后我们将讨论帧头。
然后是数据,或光纤通道内容,最后是帧结束(EOF)标志。
这样封装的目的是让光纤通道可以在需要时被其他类似于TCP这样的协议所承载。
光纤通道和SCSI之间的关系:
光纤通道不是SCSI的替代品。
光纤通道将使用帧传输SCSI的指令和状态信息。
SCSI是位于光纤通道协议栈FC4的上层协议,SCSI是FC协议的子集。
当传输大量的数据时,将有大量的帧需要被发送。
当一组帧作为一批被发送时,我们称之为一个交换
FC拓扑结构:
光纤通道协议从1988年开发出来后,已经使用了很长一段时间,是一个比较成熟的技术。
目前,SAN有几种方法来实现物理组件之间的连接
点对点:
两个设备直接连接到对方。
这是最简单的一种拓扑,连接能力有限
仲裁环:
所有设备连接在一个类似于令牌环的环路上。
在这个环路中添加或者移除一个设备会导致环路上所有活动中断。
环路上一个设备的故障将导致整个环路不能进行工作。
通过添加光纤通道集线器的方法,能够将众多设备连接到一起,形成一个逻辑上的环路,并且能够旁路故障节点,使得环上节点的故障不会影响整个环路的通信。
仲裁环曾经用于小型的SAN环境中,但是现在已经不再使用。
而最主要的原因是