SCSI/ISCSI协议

article/2025/9/23 1:59:18

SCSI即小型计算机接口(Small Computer System Interface),指的是一个庞大协议体系,到目前为止经历了SCSI-1/SCSI-2/SCSI-3变迁。 SCSI协议定义了一套不同设备(磁盘,磁带,处理器,光设备,网络设备等)利用该框架进行信息交互的模型和必要指令集。

SCSI协议本质上同传输介质无关,SCSI可以在多种介质上实现,甚至是虚拟介质。例如基于光纤的FCP链路协议,基于SAS的链路协议,基于虚拟IP链路的ISCSI协议。通俗点说SCSI协议就是一个存储设备与服务器之间接口传递的一个规范。 

存储中SCSI/ISCSI的使用场景: 

1、SCSI的逻辑拓扑

逻辑单元(LUN):LUN是SCSI目标器中所描述的名字空间资源,一个目标器可以包括多个LUN,而且每个LUN的属性可以有所区别,比如LUN#0可以是磁盘,LUN#1可以是其他设备。

启动器(Initiator):本质上,SCSI是一个C/S架构,其中客户端成为启动器,负责向SCSI目标器发送请求指令,一般主机系统都充当了启动器的角色。

目标器(Target):处理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的基本框架性处理流程,比如设备发现,名字空间扫描等。
  • Linux下的启动器架构:Linux将SCSI启动器分为三个逻辑层次,其中scsi_mod中间层复杂处理SCSI设备无关和适配器无关的流程处理,比如一些异常,名字空间维护等。HBA驱动提供SCSI指令的打包解包传输等链路实现细节,设备驱动实现特定的SCSI设备驱动,比如著名的sd(SCSI磁盘)驱动,st(SCSI磁带)驱动,sr(SCSI光盘设备)驱动等。
  • AIX下的启动器架构:AIX的结构也是分为三层,即:SCSI设备驱动,SCSI中间层,SCSI适配驱动。

SCSI目标层器模型

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协议和存储系统

SCSI协议是主机与存储磁盘通信的基本协议。DAS使用SCSI协议实现主机服务器与存储设备的互联。 

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

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

3、SCSI寻址 

为了对连接在SCSI总线上的设备寻址,SCSI协议引入了SCSI设备ID和逻辑单元号LUN(Logical Unit Number)。在SCSI总线上的每个设备都必须有一个唯一的设备ID,当然服务器中的主机总线适配器也拥有自己的设备ID,固定为7。每条总线,包括总线适配器,最多允许有8个或者16个设备ID。设备ID一方面用以寻址,另一个作用是标识该设备在总线使用上的优先级。此外,在同一条总线上连接的不同的设备的设备ID必须不同,否则就会引起寻址和优先级的冲突。

每一个存储设备可能包括若干个子设备,如虚拟磁盘、磁带驱动器等。 因此SCSI协议引入了逻辑单元号LUN ID,以便于对存储设备中的子设备进行寻址。

传统的SCSI控制器连接单条总线,相应的只具有一个总线号。企业级的一个服务器则可能配置了多个SCSI控制器,从而就可能有多条SCSI总线。在引入存储网络之后,每个FC HBA(Host Bus Adapter)或iSCSI(Internet SCSI)网卡也都各连接着一条总线,因此必须对每一条总线分配一个总线号,在他们之间依靠不同的总线号加以区分。我们可以使用一个三元描述标识一个SCSI目标:总线号/目标设备ID/逻辑单元号LUN ID

4、ISCSI协议

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

iSCSI (Internet SCSI)把SCSI命令和块状数据封装在TCP中在IP网络中传输。 iSCSI作为SCSI的传输层协议,基本出发点是利用成熟的IP网络技术来实现和延伸SAN。

4.1 ISCSI协议栈

iSCSI是互联网小型计算机系统接口(Internet Small Computer System Interface)的简称,是一种在TCP/IP上进行数据块传输的标准,可以理解为SCSI over IP。 iSCSI可构成基于IP的SAN,为用户提供高速、低价、长距离的存储解决方案。

iSCSI将SCSI命令封装到TCP/IP数据包中,使I/O数据块可通过IP网络传输。

iSCSI (Internet SCSI)把SCSI命令和块状数据封装在TCP中在IP网络中传输。iSCSI作为SCSI的传输层协议,基本出发点是利用成熟的IP网络技术来实现和延伸SAN。 iSCSI协议是SCSI远程过程调用模型到TCP/IP协议的映射。SCSI协议层负责生成CDB,并将其送到iSCSI协议层,然后由 iSCSI协议层进一步封装成PDU,经IP网络进行传送。

4.2 ISCSI系统模型

发起端(Initiator)

  • SCSI层负责生成CDB(命令描述符块),将CDB传给iSCSI。
  • iSCSI层负责生成iSCSI  PDU(协议数据单元),并通过IP网络将PDU发给target。

目标器(Target)

  • iSCSI层收到PDU,将CDB传给SCSI层。
  • SCSI层负责解释CDB的意义,必要时发送响应。

4.3 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。

 8b/10b编码是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去。


http://chatgpt.dhexx.cn/article/bnOuQRLS.shtml

相关文章

iSCSI协议简介

本文综合了几篇参考文献的内容,做了删减与重组,但严格来说,不算原创。 笔者笔记如下: iSCSI initiator和target的核心功能都在内核中,无须人工干预;而要人工干预的大约是这么几件事: 1. 建立…

【存储】SCSI、iSCSI协议详解及对比

作 者: NGDCN 原文链接:【存储】SCSI、iSCSI协议详解及对比 - NGDCN 版 权: 本文由 NGDCN 于2022-11-11原创发布在 NGDCN,未经许可,禁止转载。 SCSI SCSI是小型计算机系统接口(Small Compu…

ISCSI详解(二)——ISCSI基础知识

今天继续给大家介绍Linux运维相关知识,本文主要内容是ISCSI基础知识。 一、ISCSI简介 ISCSI,即Internel Small Computer System Interface,互联网小型计算机接口,就是在互联网上运行SCSI协议的一种技术。 ISCSI把原本用于用于计…

ISCSI介绍

ISCSI Internet Small Computer System Interface ISCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的新型存储技术,该技术是将存储行业广泛应用的SCSI接口技术与IP网络技术相结合,…

iSCSI详解及 iSCSI服务端配置、客户端(Linux、Windows配置)

一、简介: iSCSI,Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。iscsi通过TCP/IP协议,实现远程存储单元的…

交换机的Access口与Trunk口

基本概念 Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口; Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口; 处理流程 Acess端口收报文:…

交换机中access和trunk详解

首先需要说明的是,vlan的标准802.1q中采用的是untagged,tagged这两个术语来制定vlan规范,并没有access,trunk。然而大多数实际的交换机设备在配置时,却都采用access,trunk。 以下简称802.1q中数据包中的vlan标识部分为vid标签。 …

什么是trunk端口?

什么是iis7服务器监控工具Trunk端口 基本概念 Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口; 处理流程 trunk端口收报文: 收到一个报文,判断是否有VLAN信息,如果没有则打上端口的PVID,并进行交换转发;如果有判断…

链路聚合Eth-Trunk

链路聚合简介 以太网链路聚合Eth-Trunk简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。 目的&…

超详细讲解access和trunk的区别,从此不再迷糊

我在网上阅读了好几篇关于这个主题的博文,发现很多都是有错误理解的,特此发表一下关于本人的理解,本文只简单概述access和trunk的区别并且hybrid不做探讨。 一、接收区别 access收到的帧通常是不带vlanTag的,收到无tag的帧会打上…

Eth-Trunk技术原理与配置

目录 前言Eth-Trunk概念手工负载分担模式LACP模式LACP模式活动链路的选取LACP模式的抢占机制 Eth-Trunk接口负载分担模式配置手工负载分担模式配置LACP模式 前言 随着网络中部署的业务量不断增长,对于全双工点对点链路,单条物理链路的带宽已不能满足正常…

TRUNK通信过程

一、拓扑结构 拓扑说明,PC1、PC3连接到VLAN10接口下,PC2、PC4连接到VLAN20接口下,两台交换机用trunk链路连接,允许VLAN10 20 通过 以上述拓扑为例,说明PC1到PC3的通信过程 二、通信过程 PC1 ping PC3 PC1发起一个与…

trunk与access的区别

首先声明我没研究过交换机底层实现,以下结论都是我的个人理解。不保证正确,但是有助于理解trunk和access。以下言论可能你在哪里都没有看到过。 先说观点:我认为trunk与access并没有本质的区别。 access收到带vlan的帧和自己所属vlan比较&a…

TRUNK详解

TRUNK 详解 TRUNK作为一个重要的指标,常常在二层交换机的性能参数中被提到,许多的二层交换机产品在介绍其性能时,都会提到能够支持TRUNK功能,从而可以为互连的交换机之间提供更好的传输性能。一下就是TRUNK的介绍 一、什么是TRUN…

链路聚合(eth-trunk)

文章目录 1.链路聚合概述①概念:②链路聚合两种模式:当两台交换机之间使用链路聚合技术进行互连时,各个成员端口需要满足以下哪些条件? 2.二层链路聚合配置修改负载均衡的方式:(可选)注意:e-tru…

Trunk和Access分析

一、配置界面: 如果有页面可以添加trunk口和access口,如常规的HCI产品上,交换机通常可以增加新的trunk和access, 新建的时候,配置参数就不一样: 1、trunk:两个配置参数 (1)、vlan范…

实验: 配置trunk

配置trunk 实验: 配置trunk1、实验拓扑结构图如下:2、给每台主机配置IP地址3.配置SW14.配置SW25.配置trunk端口(两个交换机都要配置)6.流量控制7.修改nativeVLAN为VLAN 90 实验: 配置trunk 实验目标: 1.学会配置trunk,实现端到端VLAN通信 2.配置trunk流量控制 3.修…

Access、Trunk、Hybrid模式详解

文章目录 华为交换机转发VLAN数据时的行为详解前言参考阅读一、交换机的行为1.1 接收数据1.2 转发数据 二、工作模式横向对比2.1 接入模式2.2 中继模式2.3 混杂模式 三、实验详解3.1 几种模式的配置3.2 DHCP分配地址时对于native vlan的处理方式至此,理论实验完成&a…

Trunk概念

一、为什么需要trunk? 1、当一条链路,需要承载多VLAN信息的时候,需要使用trunk来实现。 2、trunk两端的交换机需要采用相同的干道协议。 3、一般见于交换机之间或交换机与路由器、服务器之间。 4、划分多个vlan之后,解决不同交换机…

access与trunk详细解析+区别

目录 一、Access 二、Trunk 三、区别: 四、额外说明: 一、Access Access只能属于一个vlan,一般用来连接计算机的端口Access接受和转发的数据包必是无VID的数据包Access端口发送出去的数据包无VID,可被PC接受或access口接受。…