存储协议

SAN(Storage Aera Network):存储区域网络,一种通过网络方式连接存储设备和应用服务器的存储构架,这个网络专用于主机和存储设备之间的访问。当有数据的存取需求时,数据可以通过存储区域网络在服务器和后台存储设备之间高速传输。

IP SAN:通过百兆 / 千兆 / 万兆以太网络连接应用服务器和后端存储系统。将 SCSI 指令和数据块通过高速以太网传输,继承以太网的优点,实现建立一个开放、高性能、高可靠性,高可扩展的存储资源平台。

1. SCSI/ISCSI

1. SCSI

  • SCSI 即小型计算机接口(Small Computer System Interface),指的是一个庞大协议体系,到目前为止经历了 SCSI-1/SCSI-2/SCSI-3 变迁, 是主机与存储磁盘通信的基本协议。

  • SCSI 协议定义了一套不同设备(磁盘,磁带,处理器,光设备,网络设备等)利用该框架进行信息交互的模型和必要指令集

  • SCSI 协议本质上同传输介质无关,SCSI 可以在多种介质上实现,甚至是虚拟介质。例如基于光纤的 FCP 链路协议,基于 SAS 的链路协议,基于虚拟 IP 链路的 ISCSI 协议。

  • Linux 下的启动器架构:Linux 将 SCSI 启动器分为三个逻辑层次,其中 scsi_mod 中间层复杂处理 SCSI 设备无关和适配器无关的流程处理,比如一些异常,名字空间维护等。HBA 驱动提供 SCSI 指令的打包解包传输等链路实现细节,设备驱动实现特定的 SCSI 设备驱动,比如著名的 sd(SCSI 磁盘)驱动,st(SCSI 磁带)驱动,sr (SCSI 光盘设备) 驱动等。

  • 允许连接的设备数量少,连接设备距离有限

.1. 目标器模型

  • Target 一般依据 SCSI 体系结构,分为三个层次,分别是链路端口层(Port Layer),中间层( Middle Layer),目标设备层(Device Layer)。其中最重要的是中间层,在中间层中将以 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。

.2. SCSI 协议和存储系统

  • DAS 使用SCSI协议完成主机服务器与存储设备的互联

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409105422376.png

  • 控制器首先向总线处理器发出请求使用总线的信号。该请求被接受之后,控制器高速缓存就开始执行发送操作。在这个过程中,控制器占用了总线,总线上所连接的其它设备都不能使用总线。当然,由于总线具备中断功能,所以总线处理器可以随时中断这一传输过程并将总线控制权交给其它设备,以便执行更高优先级的操作。

  • SCSI 控制器相当于一个小型 CPU,有自己的命令集和缓存。SCSI 是一种特殊的总线结构,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动的适当分配,动态完成。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409105551702.png

2. ISCSI

  • iSCSI 协议最早由 IBM、CISCO、HP 发起,2004 年起作为正式的 IETF 标准,现有的 iSCSI 协议依据 SAM2 (SCSI Architecture Model-2)

  • iSCSI (Internet SCSI)把 SCSI 命令和块状数据封装在 TCP 中在 IP 网络中传输

  • iSCSI 作为 SCSI 的传输层协议,基本出发点是利用成熟的 IP 网络技术来实现和延伸 SAN

  • iSCSI 协议是 SCSI 远程过程调用模型到 TCP/IP 协议的映射。SCSI 协议层负责生成 CDB,并将其送到 iSCSI 协议层,然后由 iSCSI 协议层进一步封装成 PDU,经 IP 网络进行传送。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409105922927.png

.1. 启动器-目标器模型

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409105955585.png

  • iSCSI 的通信体系仍然继承了 SCSI 的部分特性,在 iSCSI 通信中,具有一个发起 I/O 请求的启动器设备(Initiator)和响应请求并执行实际 I/O 操作的目标器设备(Target)。在 Initiator 和 Target 建立连接后,Target 在操作中作为主设备控制整个工作过程。 (时间延迟高,传输速率慢)

  • iSCSI Initiator:iSCSI 启动器,可分为三种,即软件 Initiator 驱动程序、硬件的 TOE(TCPOffload Engine,TCP 卸载引擎)卡以及 iSCSI HBA 卡。就性能而言,软件 Initiator 驱动程序最差、TOE 卡居中、iSCSI HBA 卡最佳。

  • iSCSI Target:iSCSI 目标器 iSCSI Target,通常为 iSCSI 磁盘阵列、iSCSI 磁带库等。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409110328157.png

2. SAS(Serial Attached SCSI)

  • SAS 采用点对点连接的设计使得通信的两个设备间建立了专用链路进行通信,而在并行 SCSI 中采用的多点总线设计则是多个设备共享同一条总线。使用点对点连接,通信速度也快得多,因为通信的两个设备之间不需要在通信前检测是否被允许使用连接链路。每个设备连接到指定的数据通路上提高了带宽。兼容SATA和SAS硬盘。
  • 串行接口结构简单,支持热插拔,传输速度快,执行效率高。一般情况下,较大的并行电缆会带来电子干扰,SAS 的电缆结构可以解决这个问题。SAS 的电缆结构节省了空间,从而提高了使用 SAS 硬盘服务器的散热、通风能力。
  • SAS 采用全双工(双向)通信模式,而不是单向通信。传统的并行 SCSI 只可以在一个方向上进行通信,当设备接收到并行 SCSI 的一个数据包后,如果该设备要响应该数据包,就需要在上一个链路断开后,再重新建立一个新的 SCSI 通信链路。而 SAS,则可以进行双向通信。每个 SAS 电缆有 4 根电缆,2 根输入 2 根输出。SAS 可以同时进行数据的读写,全双工的数据操作提高数据的吞吐效率。
  • SAS 结构采用扩展器(expander)进行接口扩展,具有非常好的扩展能力,最多可以连接 16384 个磁盘设备。SAS Expander 配备了一个地址的路由表跟踪,记录了所有 SAS 驱动器的地址。
  • SAS Expander:SAS 域中的互联设备,类似于以太网交换机,通过 Expander 的级联可以大大增加终端设备的连接数,从而节约 HBA 花费。每个 Expander 最多可以连接 128 个终端设备或者 128 个 Expander。1 个 SAS 域由以下几个部分组成:SAS Expander、终端设备、连接设备(即 SAS 连接线缆)。
  • 终端设备包括启动器(通常为 SAS HBA 卡)和目标器(SAS/SATA 硬盘,也可以是处于目标模式的 HBA 卡)。

1. 协议层次

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409110835987.png

SAS 标准将 SAS 架构分为 6 层,从低到高依次是物理层、phy 层、链路层、端口层、传输层和应用层,每层负责一定的功能。

  • 物理层:对于线缆、接头、收发器等硬件进行了定义;

  • PHY 层:包括了最低级的协议,比如编码方案和供电 / 复位序列等等;

  • 链路层:描述的是如何控制 phy 层连接管理,以及原语、CRC 校验和加解扰、速率匹配处理

  • 端口层:描述的是链路层和传输层的接口,包括如何请求、中断、如何选择建立连接

  • 传输层:定义了如何将所传输的命令、状态、数据封装在 SAS 帧中,以及如何分解 SAS 帧;

  • 应用层:描述了如何在不同类型的应用下使用 SAS 的细节。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409111459668.png

3. FC/FCOE

1. FC 协议

  • FC 是一种高性能的串行连接标准。其接口传输速率为 4Gbps 、8Gbps、16Gbps 或更高速率。传输介质可以选择铜缆或光纤,传输距离远,支持多种互联拓扑结构

  • Fibre Channel 的定义:也就是 “网状通道” 的意思,简称 FC。Fiber 和 Fibre 只有一字之差,所以产生很多误解。FC 只代表 Fibre Channel,而不是 Fiber Channel,后者被翻译为 “光纤通道”。像 TCP/IP 一样,FC 协议集同样具备 TCP/IP 和以太网中的很多概念,例如:FC 交换机、FC 路由器、SPF 算法等。完全可以将 FC 协议理解为 SAN 中的 TCP/IP,因为他们都遵循 OSI 模型。

  • FC 协议其实并不能翻译成光纤协议,FC 的链路介质可以是光纤、双绞线或同轴电缆,只是 FC 协议普遍采用光纤作为传输线缆而不是铜缆,因此很多人把 FC 称为光纤通道协议。

  • FC 协议优点:高带宽、高可靠性、高稳定性、低延迟、抵抗电磁干扰,等优点,能够提供非常稳定可靠的光纤连接,容易构建大型的数据传输和通信网络,目前支持 1x、2x、4x 和 8x 的带宽连接速率,随着技术的不断发展该带宽还在不断进行扩展,以满足更高带宽数据传输的技术性能要求。

.1. 协议结构

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409111907224.png

  • 光纤通道的主要部分实际上是 FC-2。其中从 FC-0 到 FC-2 被称为 FC-PH,也就是 “物理层”。光纤通道主要通过 FC-2 来进行传输,因此,光纤通道也常被成为 “二层协议” 或者 “类以太网协议”。

  • 光纤通道的数据单元叫做帧。即使光纤通道本身为五层,但是大部分光纤通道是指第二层协议。一个光纤通道帧最大 2148 字节,而且光纤通道帧的头部与以太网数据包不同。光线通道只使用一个帧格式,在多个层上完成各种任务。

  • 帧的功能决定其格式。光纤通道帧起始于帧开始(SOF)标志,随后是帧头部,稍后我们将讨论帧头。然后是数据,或光纤通道内容,最后是帧结束(EOF)标志。这样封装的目的是让光纤通道可以在需要时被其他类似于 TCP 这样的协议所承载。

  • 光纤通道和 SCSI 之间的关系:光纤通道不是 SCSI 的替代品。光纤通道将使用帧传输 SCSI 的指令和状态信息。SCSI 是位于光纤通道协议栈 FC4 的上层协议,SCSI 是 FC 协议的子集。

  • 当传输大量的数据时,将有大量的帧需要被发送。当一组帧作为一批被发送时,我们称之为一个交换。

  • FC 光纤交换机划分 ZONE 功能与以太网交换机划分 VLAN 功能相似,都是为了实现特定组设备之间的相互通信避免广播包的泛洪。

  • Zone 特性可以让同一个 VSAN 中的成员进行访问控制,在 VSAN 内进一步划分区域,在 Zone 内根据不同的目的添加不同的 N_Port 成员。使不同 Zone 内的 N_Port 成员之间相互隔离。

  • RSCN (Registered State Change Notification): 交换机具备的一项功能,负责在架构本身或其内部状态发生改变时,通知注册的节点。

.2. FCOS

  • FCoE(Fibre Channel over Ethernet)可以提供标准的光纤通道原有服务,如发现、全局名称命名、分区等,而且这些服务都可以照标准原有的运作,保有 FC 原有的低延迟性、高性能。

  • 从 FC 协议的角度来看,FCoE 就是把 FC 承载在一种新型的链路上,即以太网二层链路。需要注意的是,这个以太网必须是增强型无损以太网,才能满足 FC 协议对链路层的传输要求。

  • FCoE 的特点:

    • 协议标准组织:2008 年提交美国国家标准委员会(ANSI)T11 委员会进行审批,需要与 IEEE 密切配合。
    • 协议目标:FCoE 希望利用以太网的拓展性,同时保留光纤通道在高可靠性和高效率方面的优势。
    • 其他挑战:FC 与以太网相结合,需要克服防止丢包、路径冗余和故障切换、帧分段与重组、无阻塞传输等方面的问题。
    • FC 固有的兼容性差、不支持远距离传输两大问题,FCoE 同样无法解决 备注:VoIP = Voice over IP。一种在以太网上传输音频和视频数字技术的方法

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409112506730.png

4. PCle

  • PCI Express(又称 PCIe)是一种高性能、高带宽串行通讯互连标准,最早由英特尔提出,后由外设组件互连特别兴趣组(PCI-SIG)制定,以取代基于总线的通信架构,如:PCI、PCI Extended (PCI-X) 以及加速图形端口(AGP)。
  • 双通道,高带宽,传输速率快:实现类似全双工传输模式(RX 和 TX 分开);传输速率高,第一代 PCIe X1 的带宽是 2.5 千兆位 / 秒(Gbps),第二代则达到 5.0Gbps,而最近发布的 PCIe3.0 标准则能支持 8.0Gbps 的速率;对更大的带宽,则可以通过扩展链路数目来实现,而带宽则是其 N 条通路的 N 陪。
  • 兼容性:在软件层保持与 PCI 兼容,版本升级,向下兼容 PCI 软件。
  • 易用性:支持热插拔,PCIe 总线接口插槽中包括 “热插拔检测信号”,可以像 USB 进行热拔插和热交换。
  • 具有错误处理和先进的错误报告功能:得益于 PCI Express 总线是分层结构,其软件层具有错误处理和提供错误报告能力,详细后续介绍。
  • 每个物理连接还有多个虚拟通道:在每个物理通道中支持多个虚拟通道(理论上允许 8 个虚拟通道进行独立的通讯控制),从而支持每个虚拟通道的 Qos,达到非常高的流量质量控制。

.1. 协议结构

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409112852757.png

  • PCI Express 总线架构中的物理层主要决定总线的物理特征。在未来的发展中,可以通过速度提升或更改编解码方式来进一步提升 PCI Express 总线性能,而这些变更都只会作用于物理层,不会影响其它结构,为升级带来了便利。

  • 数据链路层(Data Link Layer)

    • 数据链路层的重要作用就是要保证 PCI Express 总线传输的数据包的正确性和可靠性。它会检查数据包封装是否完整正确,并将序列号和冗余校验代码(CRC)添加到数据中进行检测和纠错,并采用 ack/nack 握手协议进行检测纠错
  • 事务层(Transaction Layer)

    • 处理层的主要作用有两个,一是接受来自软件层送来的读、写请求,或者本身创建一个请求封装包传到数据链路层,这种数据包称为 “处理层数据包”(TransactionLayerPacket,TLP 另一个作用是接受从链路层传来的响应数据包 (DataLink Layer Packet,DLLP),并将其与相关的软件请求相关联,传送至软件层处理

5. IB协议

  • IPoIB 即 IP over IB,作为 Linux 内核与 IB 驱动的适配层负责构建、销毁 IP 报头,发送和接收 IP 报文

  • IB 前端网络用于与客户交流进行数据交互的网络,基于 IPoIB 协议传输数据

  • IB 后端网络用于存储设备内部各节点间数据交互的网络, RPC 模块利用 RDMA 完成节点间数据同步

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409113209317.png

.1. 协议结构

  • 物理层:定义了三种速率的连接,分别为 1X、4X 和 12X,其信号单倍传输速率分别为 2.5、10 和 30Gb/s。也就是说,IBA 允许多路连接直到获得 30Gbps 的连接速度。由于采用了全双工串行通信方式,单速的双向连接只需要 4 根电缆,在采用 12 速方式时,也只需 48 根电缆线,这是非常具有吸引力的。

  • 链路层:链路层提供了局部子系统中的信息包设计、点到点连接操作以及包交换等功能。在包通信一级,指定了两种特殊的包类型,既数据传输和网络管理包。网络管理包提供了设备枚举的操作控制、子网指示、容错等功能;数据传输包则用来传送实际的数据信息。每个包的最大长度为 4KB,在每个特定的设备子网内,每个数据包的方向和交换通过本地的 16 位标识地址的子网管理器完成。

  • 网络层:提供了信息包从一个子结构到另外一个子结构的路由机制。源和目的节点的每个路由包有一个全局路由头(GRH)和一个 128 位 Ipv6 地址。网络层也嵌入了一个标准的全局 64 位标识,这个标识在所有的子网中都是惟一的。通过这些标识值之间错综复杂的交换,允许数据跨越多个子网传输。

  • 传输层:传输层主要负责信息包的按序分发、分割、通道多路技术以及传输服务等。传输层也负责处理数据包分段的发送、接收和重组。

6. CIFS/NFS

1. CIFS

  • 1996 年,微软提出将 SMB 改称为 CIFS (Common Internet File System),并加入了许多新的功能。现在 CIFS 指 SMB 的统称,具体各个版本分别为 SMB1,SMB2,SMB3.0。SMB 是一种客户端 / 服务器,请求 / 响应模式
  • SMB(Server Message Block)最初是 IBM 的贝瑞・费根鲍姆(Barry Feigenbaum)研制的,其目的是将 DOS 操作系统中的本地文件接口 “中断 13” 改造为网络文件系统。SMB 协议主要用于在计算机间共享文件、打印机、串口等。
  • SMB 从 1988 年至今不断完善,历经多个版本,从 SMB 发展到 SMB2(2007)SMB3(2012)。
  • CIFS(Common Internet File System)是由微软开发用于连接 Windows 客户机和服务器的文件共享协议
  • CIFS 是微软开发和使用的 SMB(Server Message Block)公开后形成的标准。SMB 主要用于网络上的计算机共享文件、打印机和串行端口等资源
  • 经过 UNIX 服务器厂商重新开发后,SMB 可以用于连接 UNIX 服务器和 Windows 客户端,执行打印和文件共享等任务
  • CIFS 共享的单位是目录,所共享的目录可被多个客户端访问。
  • 以集群方式对外提供共享服务,节点间可相互监控服务状态。
  • 可根据业务和节点状态实现负载均衡,数据访问在集群内均匀分布。

.1. 工作原理

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409113734403.png

  • 认证方式:NTLM,Kerberos 等

  • 网络通信可以 over TCP 或其他方式如:rdma 等

  • 网络文件操作经处理后转交给实际文件系统

  • NTLM 安全性支持提供者服务。NTLM 的意思即 NT LanManger,是 NT 下提供的认证方法之一,使用了 64 位的加密手段。

  • Kerberos 网络认证。Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。

.2. 应用案例-文件共享服务

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409114123954.png

  • DNS:domain name service,用于实现域名和 IP 的映射.

  • AD: active directory, AD 域,提供目录服务.

  • CIFS 协议主要用于文件共享,这里介绍两个典型的应用场景:

  • 文件共享服务场景

  • 文件共享服务是最典型的应用场景,其主要应用于企业文件服务器,媒资等等,为用户提供文件共享服务。

2. NFS

  • NFS(Network File System)是当前主流异构平台共享协议之一,主要应用在 Linux、UNIX 环境中。NFS 可用于不同类型计算机、操作系统、网络架构和传输协议的环境,提供网络文件远程访问和共享服务
  • NFS SERVER 采用集群部署形式
  • NFS SERVER 部署在各个存储服务器上,是分布式、全对称集群架构
  • 在 Linux/UNIX/AIX/HP-UX/Mac OS X 等类 UNIX 系统中提供网络文件系统存储服务。允许用户像问本地文件一样访问其他系统上的文件。提供对无盘工作站的支持以降低网络开销。
  • 简化应用程序对远程文件的访问使得不需要因访问这些文件而调用特殊的过程。

.1. 工作原理

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409113826567.png

  • RPC(Remote Procedure Call)— 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。

  • RPC 采用客户机 / 服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

.1. 应用案例–云计算共享存储

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20220409114015781.png

7. FTP/HTTP

1. FTP

  • FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为 “文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
  • 在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和 “上传”(Upload)。“下载” 文件就是从远程主机拷贝文件至自己的计算机上;“上传” 文件就是将文件从自己的计算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
  • FTP 有两种文件传输模式:
    • 二进制模式,用于传输程序文件(比如后缀名为.app、.bin 和.btm 的文件)。
    • ASCII 码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat 和.cfg 的文件)。

2. HTTP

  • HTTP 协议定义 Web 客户端如何从 Web 服务器请求 Web 页面,以及服务器如何把 Web 页面传送给客户端的协议。

  • HTTP 采用短连接方式进行报文传输,每次传输结束后连接就中断

  • 区别于 CIFS 及 NFS 协议,通过 WebDav 扩展协议及挂载 ostorvfs 文件系统,能够实现 HTTP 共享创建,资源文件的上传、下载、修改、锁定等功能。

  • HTTPS 是 HTTP 协议的安全版本,基于 SSL/TLS 安全加密。SSL (Secure Sockets Layer 安全套接层), 及其继任者传输层安全 (Transport Layer Security,TLS) 是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

Resource

0%