网络存储技术——以太网光纤通道技术

随着网络技术和存储技术的发展,数据中心的规模日益壮大。数据中心中存在着LAN、SAN和IPC三张网络,这些网络采用不同的接口技术和管理软件,这使得数据中心的管理变得非常复杂。

服务器必须具备多种类型的网络接口,以满足不同网络的服务需求,服务器与数据中心网络的连线也因此越来越多,这使得数据中心的能源消耗和制冷费随之增加,这些费用甚至超过了数据中心核心设备本身的价值。

这些问题的存在,使得数据中心网络的融合成为必然趋势。

##数据中心以太网DCB

  • 网络丢包对于存储业务影响很大。将FC业务搬移到以太网上,需要以太网不丢包。

  • 如何实现不丢包?

###DCB简介

  • DCB特别小组努力下,制定了IEEE 802.1Qbb、IEEE 802.1Qaz、IEEE 802.1Qau和DCBX协议。

  • 弥补了传统以太网的不足,经过增强的以太网也叫增强融合型以太网(CEE,Convergence Enhanced Ethernet)或数据中心以太网(DCE,Data Center Ethernet)

###IEEE 802.1Qbb

  • IEEE 802.1Qbb提出了一种新的流量控制机制——基于优先级的流控(PFC,Priority-based Flow Control)。

  • PFC提供的是链路层的流量控制机制,它和802.3x中定义的PAUSE功能非常相似,不同的是它根据数据的类型将数据流分为八种不同的优先级,它可以根据需要对不同优先级的数据流实现独立的流量控制。

  • 当网络中某一节点发生拥塞时,该节点可以要求数据源暂停发送相应优先级的数据,但不影响别的优先级数据的发送。

  • 该流量控制机制既保证了数据的无损传输,又不会因为一个数据源发送数据过快,而导致所有的数据源都暂停发送数据。

fcoe1.png

fcoe2.png

###IEEE802.1Qaz

  • EEE802.1Qaz协议提出了增强型传输(ETS,Enhanced Transmission Selection)的概念。主要目的是提高网络服务的公平性,前面介绍的PFC流量控制机制,其实在PFC之前已经有基于优先级的流量控制机制了,只不过当时该机制主要在网桥或路由器上实现,该机制虽然有效的区分了数据的优先级别,保证了以太网的不丢包功能,但在多种优先级数据争用链路的时候,它会让优先级高的数据先发送,之后才会发送低优先级的数据,这种机制通常会导致低优先级的数据出现“饿死”现象,这样是不公平的。

  • ETS根据数据的类型,将这些数据划分到不同的优先级组中,常见的划分方法是根据以前数据中心存在的三种网络来分组,即LAN、SAN和IPC,LAN中的数据只需要尽力传输的服务就够了,而SAN中的数据要求不丢包,IPC数据对延迟很敏感。划分好优先级组后,可以对不同的优先级组分配一定的带宽,这就可以防止低优先级的数据出现“饿死”的现象。

###IEEE802.1Qau

IEEE 802.1Qau协议是IEEE Std 802.1Q-2005的修订版本,目的是给LAN的虚拟桥接设备提供拥塞通知能力,从而支持对长期活跃在网络中的数据进行拥塞管理。拥塞通知(CN,Congestion Notification)为上层协议(例如FCoE协议,Fibre Channel over Ethernet)提供了端到端的拥塞管理机制。该机制将会帮助以太网成为一个真正的无损网络。

该协议中介绍了一种拥塞通知的算法——量化的拥塞通知协议(QCN,Quantized Congestion Norification protocol)。QCN的主要思路是在拥塞点(CP,Congestion Point)对数据进行采样,根据采样结果向数据源端发送拥塞通知,数据源端从拥塞通知中提取拥塞通知信息(CNM,Congestion Notification Message),来控制自己发送数据的速率,另外数据源端在没有收到拥塞通知时,会按照一定的机制提高数据发送的速率。通过拥塞通知和加速机制的配合,数据源就会逐渐找到一个数据发送速率的平衡点,这样既不会由于发送数据过快而导致链路拥塞,又有效的利用了链路带宽,不至于链路带宽的浪费。

###思考题

查询QCN协议,说明数据源端是如何控制发送速率的。即具体上,速率如何增加、如何减少?

##DCBX

DCBX协议制定的主要目的有三个:

一、让DCB设备“弄清”与它直接相连的另一个DCB设备的基本能力,“弄清”与之对等的DCB设备是否具备某一特征,比如是否支持优先级组(PG)或优先级流量控制(PFC)等。

二、检测DCB设备的配置是否正确,两个互连的DCB设备的某些配置可能不同。

三、配置与本DCB互连的另一个DCB,通过DCBX协议可以实现本DCB对与之互连的DCB进行某些参数的配置。

##FCoE协议

T11组织制定的FC-BB-5中包含了FC-BB-E,这个协议规定了如何将FC帧映射到以太网帧。

fcoe3.png

##ENode功能模型

fcoe4.png

##FCF功能模型

fcoe5.png

##FCoE帧格式

fcoe6.png

###思考题

假设SCSI Payload长度一样,为X,分别计算iSCSI和FCoE的封装效率。

网络存储技术——iSCSI协议

正如每一个技术的革命都有市场在背后做推手,iSCSI的兴起也是一样。虽然存储网络早已成为存储业界的重心,但网络存储的天平却一直在SAN和NAS间摇摆,直到2002年7月,在IETF的推动下,基于IP协议的网络存储技术iSCSI才得以浮出水面。大公司的参与和领导往往是新技术得到推广的必不可少的条件。iSCSI一出现,马上得到了IBM,Cisco和HP三大业界巨头的鼎力支持,成为下一次技术浪潮的宠儿。

##什么是iSCSI

  • iSCSI:将SCSI命令和块状数据封装到TCP/IP包中发送、接收。

  • iSCSI优点:

    • 将存储网扩展到Internet。
    • 显著降低总体拥有成本。
  • iSCSI缺点:

    • 效率低于FC
    • 如果不使用硬件加速TCP处理,性能低。

##iSCSI操作过程

  • iSCSI登录:建立TCP连接给iSCSI使用。启动器向目标器发登录请求,经过相互认证,协商各种参数。完成后就进入全功能阶段。

  • iSCSI全功能阶段:启动器向目标器发送SCSI命令,目标器予以回复。

  • 连接的一致性:如果iSCSI请求在一个TCP连接中传输,回复也应该在同一个TCP连接中。出现错误时,可以在另一个TCP连接中传输。

##iSCSI协议数据单元

  • SCSI命令封装到iSCSI请求数据包,SCSI回答和状态在iSCSI回复数据包。

  • iSCSI的每一个数据单元有一个数据头,后面是一个或多个数据段。

  • 数据头分为基本数据头(BHS)和可选择的数据头(AHS)。BHS是每一个iSCSI数据包必需的,固定48Bytes。

ISCSI.png

###iSCSI基本数据头

ISCSI2.png

##思考题

  • SCSI能否不通过iSCSI层直接通过TCP传输?

  • 如果规定只能通过一个TCP连接传输iSCSI,iSCSI协议如何简化?

  • 有FC交换机,有没有iSCSI交换机?

网络存储技术——iSCSI协议

正如每一个技术的革命都有市场在背后做推手,iSCSI的兴起也是一样。虽然存储网络早已成为存储业界的重心,但网络存储的天平却一直在SAN和NAS间摇摆,直到2002年7月,在IETF的推动下,基于IP协议的网络存储技术iSCSI才得以浮出水面。大公司的参与和领导往往是新技术得到推广的必不可少的条件。iSCSI一出现,马上得到了IBM,Cisco和HP三大业界巨头的鼎力支持,成为下一次技术浪潮的宠儿。 Continue reading “网络存储技术——iSCSI协议”

网络存储技术——光纤通道(续)

最近筹划开始移动通信系列的整理,不过先把这一系列整理完再说,废话不多说,继续光纤通道。

##存储区域网

  • 存储区域网:Storage Area Network(SAN)就是连接主机和存储设备的网络。SAN可以采用FC协议,也可以采用iSCSI协议。中高端SAN一般采用FC协议。
  • FC SAN:由主机总线适配器(Host Bus Adaptor:HBA)、FC交换机、光纤连接而成。

  • 单独的SAN的好处:灵活、可靠、可扩展。特别适合有大量数据不断增加、服务器和存储设备有大量数据读写、可靠性要求很高的应用环境。例如银行数据中心等。

##SAN vs NAS

  • NAS:提供文件级服务。

  • SAN:提供存储块级服务。

  • FC速率vs NAS速率
    FC : 1G 2G 4G 8G 16G
    NAS: 100M 1000M 10G

  • FC效率高于NAS中的TCP/IP。

  • NAS比FC易于安装、管理和成本低。

##FC HBA卡软硬件模块划分

fchba.png

##FC交换机功能框图

fcswitch.png

##光纤通道路由选择

  • 当服务器到存储设备的路径不止一条,FC Switch就需要选择路径。FSPF(Fabric Shortest Path First)协议就是选择发起节点到目的节点代价最小的路径。

  • 如果多条路径具有相同代价,FC Switch就可以将数据平均分配到这几条路径上。

  • FSPF由四部分组成:
    Hello协议、网络拓扑结构数据库构造、路径选择算法、路由表更新

###Hello协议

用来建立相邻交换机之间的双向数据交换通道,发现交换机之间的链路故障,交换相邻交换机的一些参数。

###拓扑结构数据库构造

交换机之间通过LSR(Link State Records)信息的传播,每个交换机可以获得整个网络中所有的连接的状态信息。

###最短路径优先算法

  • 交换机根据拓扑结构数据库计算到其它交换机的最短路径。

  • 采用Dijikastra算法。

###路由表更新

交换机根据计算路径的结果,更新路由表,这是交换机的内部操作。

##存储分区

  • 一个存储区是SAN中能互相通信的一组设备。一个存储区中的设备只能和同一分区中的设备通信。一个设备可以属于多个存储区。

  • 存储分区的一个作用是安全性。

  • 软分区实现:通过域名服务器对查询节点隐藏非同一分区的其它节点的信息来实现。

  • 硬分区实现:通过在路由表中对不属于同一分区的禁止来实现。

网络存储技术——光纤通道

所谓通道,就是能传输物品的路径。在计算机技术中,要传输的是数据,但通道的概念仍然是一样:当把数据发送到通道的一端后,数据就被传输到通道的另一端。通道往往能实现很高的数据通信速度,数据通信时所涉及的协议也比较简单。通道一般用于一台计算机内部的数据交换,而两台计算机之间通信时,采用的是计算机网络。

####通道式数据交换与网络式数据交换的区别

  • 通道式数据交换:直通式(cut-through)数据交换。具有延时小、面向连接、短距离、可靠等特点。

  • 网络式数据交换:存储转发(store and forward)数据交换。具有延时大、无连接、长距离、不可靠(要丢包)等特点。

####光纤通道:延时小(cut-through) 、面向连接、长距离、可靠(不丢包)等特点。

###Cut-through和Store-and-Forward时延上的区别

一个节点A和另一个B之间有三个交换机,线路速率为1Gb/s,数据帧长度为1000Bytes。 Cut-through方式下,假设数据帧的头(4个Bytes)到了就可转发。 Store-and-Forward方式下,整个帧到了才转发。计算两种方式下的最小时延。

##光纤通道结构

  • 光纤通道网络结构分解为 通信节点、节点与连接接口、连接和交换结构。

  • 通信节点:服务器或存储设备。

  • 连接:光纤。

  • 交换结构:光纤通道交换机。

  • 节点与连接接口:主机总线适配器(Host Bus Adaptor : HBA)

##光纤通道端口类型

  • N端口:服务器或存储设备连接网络的端口。

  • L端口:NL口指服务器或存储设备与环连接的端口。FL口指光纤通道交换机与环连接的端口。

  • F端口:光纤通道交换机与服务器或存储设备连接的端口。

  • E端口:光纤通道交换机与其它光纤通道交换机连接的端口。

##光纤通道拓扑结构

  • 点到点直连

  • 环型结构:最多127个节点。适合于多个节点较少同时通信的场合。需要仲裁协议决定使用环通信的节点。

  • 交换结构:最大支持65000多个节点。

##光纤通道协议堆栈

  • FC-0定义了物理连接的特性。例如信号速度、电缆种类、通信距离等。
  • FC-1: 传输信号的编码和解码方式。
  • FC-2:帧协议/流控制
  • FC-3:保留扩展。
  • FC-4:定义上层协议到FC的映射方式。

###FC-0层

  • 完成光电转换,时钟恢复功能。为FC-1层提供传输基本二进制0或1信号的功能。

  • 包含光电转换器和串行解串器(SerDes)。

###FC-1层

  • 为FC-2提供传输字的功能。

  • 包含字节对齐电路、8b/10b编解码等。

###FC-2层

  • 发送和接收帧、帧序列、帧交换。

  • FC的帧结构中,有OX_ID 、SEQ_ID和SEQ_CNT,分别标识一个帧交换、一个帧交换中的一个帧序列、一个帧序列中的一个帧的编号。

FC的帧结构和以太网/IP报的结构的主要区别是什么?

###FC-3层

提供公共服务给同一节点的多个上层

###FC-4映射层

  • 将高层协议的信息单元映射成帧序列;将帧序列映射成高层协议的信息单元。

  • 高层协议:

    • SCSI、IP等
    • SCSI的一个单独的命令被映射成FC的一个帧序列。组成一个SCSI交易的几个命令为映射成FC的一个帧交换。

##光纤通道流控制

  • 端到端流控

  • 缓存到缓存流控

##服务类型

  • 1类服务:面向连接的服务,提供专用的物理通道。不需缓存到缓存的流控制,只需端到端的流控制。

  • 2类服务:无连接服务。同时使用端到端和缓存到缓存的流控制。

  • 3类服务:只使用缓存到缓存的流控制。由上层协议实现出错重传。

##FC地址

  • 目的ID: 3Byte。域名+端口号+虚拟机号

  • 源ID: 3Byte。域名+端口号+虚拟机号

  • 不同交换机的域名不一样。

##FC登录

  • 端口登录:两个N端口之间的连接初始化过程。

  • 交换机登录:N端口和交换机F端口的连接初始化过程。

##FLOGI

FLOGI通常被发送它的N端口用于传送服务参数,也是N端口设备做Fabric Login的一种方法。在进行Fabric Login过程中所发送的FLOGI的目的地址是0xFFFFFE,源地址通常是0x000000。之所以源地址为空,是因为N端口设备总是首先假设存在Fabric并且希望Fabric能给自己分配一个未被用到的地址。如果发送FLOGI的N端口在发送FLOGI之前就希望自己被分配某个地址,那么它就应该将这个地址填在FLOGI中。在FLOGI帧中,包含了一些重要的参数。例如BBCredit。

##FC通用服务

包括目录服务、别名服务、时间服务等。

未完待续。内容比较多,分两部分进行。

网络存储技术——光纤通道

所谓通道,就是能传输物品的路径。在计算机技术中,要传输的是数据,但通道的概念仍然是一样:当把数据发送到通道的一端后,数据就被传输到通道的另一端。通道往往能实现很高的数据通信速度,数据通信时所涉及的协议也比较简单。通道一般用于一台计算机内部的数据交换,而两台计算机之间通信时,采用的是计算机网络。 Continue reading “网络存储技术——光纤通道”

RAID 10 和RAID 01 (RAID 1+0 和RAID 0+1)

关于RAID10和RAID01的问题,我其实很是纠结,因为网上现有的资料和我教科书上的说法是完全相反的,我也不知道该信谁。姑且按照公认的比较权威的维基百科的说法来吧。不过我考试的时候还是照着书上的来了,毕竟考试时书才是王道。

RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘脱机。因此,RAID 10远较RAID 01常用,零售主板绝大部份支持RAID 0/1/5/10,但不支持RAID 01。

raid10.png

raid01.png

上面的资料参考了维基百科,页面传送。下面的资料参考了存储人生的一篇文章,页面传送

##RAID 01 VS RAID 10

性能与可用空间始终是相同的。从数据存储的逻辑位置来看,在正常的情况下RAID01和RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,这两种情况下,在读的性能上面也将不同,RAID10的读性能将优于RAID01。

最主要的区别是容错性。RAID 01容错性要差一点,因为只有2组RAID 0来保护。RAID 10由于有多组RAID 0,虽然每个组只有2块盘,因此可以允许3块盘同时坏掉的情况。我们可以计算RAID 01与RAID 10允许坏2块盘与3块盘的情况,故障率RAID10是低于RAID01的。 raid10可以损坏任意一块磁盘,而整体的数据仍然是可用的.我们暂且说这个系统的冗余度为2.而raid01只允许损坏特定的一块磁盘.左边的raid0中有一块盘损坏,此时左边的raid0便没有作用了.所有的io会切到右边的raid0,而这个时候,只能允许左边剩余的盘损坏,如果右边任何一块盘损坏的话,则整体数据将不可用,所以这个系统冗余度就变成了1.

以下讨论disk failure 的 case

####Case 1. 任何一个硬盘损坏

RAID 0+1 : 另一个 stripe 可继续工作, 但本身成为 SPOF.
RAID 1+0 : 两个 segments 均可继续运作, 所以无 SPOF 的 concern. (胜)

####Case 2. 每个 stripe/segment 各损坏一个硬盘

RAID 0+1 : 每个 stripes 都无法继续运作.
RAID 1+0 : 每个 segments 均可继续运作, 所以无 SPOF 的 concern. (胜)

####Case 3. 同一个 stripe/segment 损坏两个硬盘

RAID 0+1 : 另一个 stripe 可继续运作, 但本身成为 SPOF.
RAID 1+0 : 若损坏的两个,属于同一mirror set, 则无法继续运作(败);若属于不同 mirror set, 则两个 segments 均可继续运作, 所以无 SPOF 的 concern. (胜)

综合以上分析, RAID 1+0 不是在所有的情況下, 它的 reliability 都优于 RAID 0+1, 但是在大部分的情況, RAID 1+0 的 reliability 是优于 RAID 0+1 的. 所以 RAID 0+1 适用于对 performance 的需求高于 reliability 的环境;RAID 1+0 则相反。

另外在 recovery 的情況, RAID 0+1 要重新 mirror 整个 stripe; 而 RAID 1+0 只要重新 mirror 一个硬盘即可。

网络存储技术——SCSI

今天网络存储已考完试,我在纠结要不要把这一系列写完。想了想还是慢慢写下去,不能虎头蛇尾。那么我们接着看SCSI。

SCSI产生于1981年,目前T10负责SCSI(small computer system interface)的标准化。协议集包括SAM(SCSI Architecture Model)和SCSI命令集(SPC-3、SBC、SSC-3等)。

ULTRA320:16位数据总线宽度、最多16个设备、最大总线长度为12米,速率为320MB/s。

##SCSI系统与设备

  • SCSI发起端:生成和发送SCSI命令和任务管理请求的SCSI端口。

  • SCSI目标端:接受和处理SCSI命令和任务管理请求的SCSI端口。目标端又可分为任务管理单元和逻辑单元。

  • 尽管多个SCSI设备挂在同一总线上,同一时刻在SCSI总线上只允许两个设备间的数据交换。

##SCSI分层通信协议结构

  • 分为SCSI应用层(SCSI Application Layer : SAL),SCSI传输协议层和SCSI互联层。

  • SBC、SSC、SPC和SPI的部分属于传输层。数据的传递大概分为三个阶段:命令的执行、数据的传递和命令的确认。

  • SPI的一部分和SCSI-3光纤通道协议(FCP)属于互联层,完成SCSI设备间发起端和目标端的选择和连接等功能。

###SPC基本命令

SCSI基础命令集SPC定义的是所有SCSI目标器设备支持的命令。

###SBC基本命令

SCSI块设备命令集是基础命令集的延伸,以方便对SCSI块设备的操作。块设备的共同属性是数据都是按逻辑块进行组织。每个逻辑块都有一个逻辑块长度,块长度一般都是长于字节的且可能是512字节的倍数。其中最重要的命令是READ命令和WRITE命令

###READ命令

READ命令是SCSI客户端用来向SCSI目标端块设备请求读取一个或者一组连续逻辑块中所存储的数据。SCSI目标服务器块设备在接收到READ命令后,会将指定的逻辑块中所存储的数据发送给SCSI客户端的data-in缓冲区中。LBA指定了读命令读取数据的逻辑块位置。第七和八字节指定了需要传送的数据的连续的逻辑块数目,当为0时表示没有数据要传送。

###WRITE命令

SCSI客户端发送WRITE命令请求向SCSI目标端指定的逻辑块写入数据。SCSI目标端接收命令后,将接收SCSI客户端传送的数据,并存储到指定的逻辑块中。LBA指定了写命令数据存放取的逻辑块位置。第七和八字节指定了需要传送的数据的连续的逻辑块数目,当为0时表示没有数据要写入。

##串行SCSI

  • 串行SCSI的优点:连线简单、传输速率高、地址空间大、多点并行传送。

  • 采用SAS交换机实现多点连接,而不是采用总线结构。

  • SAS: 目前广泛使用6Gb/s,将来会到12Gb/s。

  • 通过Finisar Bus Doctor的抓包理解SAS协议。