------------------------------------重要说明------------------------------------

以下部分内容来网络,部分自华为存储官方教材

具体教材内容请移步华为存储官网进行教材下载

    网络引用内容无法找到原创,如有侵权请通知

------------------------------------重要说明------------------------------------


① SCSI

SCSI直译为小型计算机系统接口(Small Computer System Interface)是一种连接主机和外围设备的接口,支持包括磁盘驱动器、磁带机、光驱、扫描仪在内的多种设备。它由SCSI 控制器进行数据操作, SCSI 控制器相当于一块小型CPU,有自己的命令集和缓存。 SCSI是一种特殊的总线结构,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动的适当分配,动态完成。

图片.png

a.  SCSI-3架构

图片.png 

SCSI命令层协议:各类型设备通用的主要命令。

SCSI 命令协议:这一层协议包括了通用于所有设备以及某一指定类型的设备专用的初级命令。这一层也称为应用层。

传输层协议:设备间互联和信息共享的标准规则。

传输层协议:这是一套设备间互连和信息共享的标准规则。

物理成互连:接口细节,比如电信号传输方法和数据传输模式

物理层互连:这一层详细定义了如电信号传输方法和数据传输模式之类的接口细节。这一层又常简称为物理层或者互连层。

b.  SCSI协议模型

主机到存储磁盘间的通信由启动器发起,由目标器接收和处理。


图片.png

c.  并行SCSI技术

图片.png

在SCSI总线体系结构中,任何连接到总线的设备间都可以互相进行通信。为实现这一点,从一个设备发出的信号从该设备发出后,最终会在多点总线(多分支总线)上结束。从多点总线上,信号应该被传输到目标设备上。在这个通信流程中,有一些物理的和逻辑的问题需要处理。

d.  SCSI技术原理

SCSI是一个能够让设备在没有CPU和SCSI适配卡的情况下能够互相通信的协议。

传输协议类型:异步方式,同步方式

总线复用进行命令、数据和状态信息传递

图片.png

SCSI是一个智能传输协议,这是其一个特别的优点。如果多个设备是连接在同一组总线上的(并行通信通道),这些设备可以进行相互的通信。也就是说,两个连在同一组总线上的设备间,可以互相通信,而且不需要CPU或者特别的适配卡协助。

通信传输方式有两种,异步方式和同步方式。

在异步传输方式中,两组数据传输之间没有固定的时间间隔。协议采用发送额外的信息或者命令的方式来发起通信。比如,在发送内容数据前,发起方先发送一些状态信息,则接收方就知道马上要发送内容数据了。这些额外的状态信息或者命令的发送时间可以不是固定的,因此内容数据之间的传输间隔也可以不是固定的。这是异步传输方式的重要特点。

在同步传输方式中,需要一个定时器,数据包会按照定时器设定的时间间隔进行传输。实际上,需要通信的两个设备之间将先通过异步方式来确定对端的设备是否已经准备好接收数据了。在初始连接之后,通信双方会采用最高效的传输方式进行实际内容数据的传输,这种方式就是同步传输方式。在同步传输方式中,发起方发送数据的时间间隔是固定的,而接收方知道这个时间间隔,就能快速的接收和处理数据。

在多个设备共享同一条物理链路时,通常采用时间多路复用技术,也就是物理电缆通过按时间片顺序分配该电缆的使用者来实现共享。在SCSI通信中,前一个时间片在链路上传输的是内容数据,后面一个时间片则可能传输的是地址或者状态信息。也就是说,在SCSI链路中,数据、地址、状态、命令等是共享同一条链路的。

多路复用技术的采用使得在SCSI传输中使用的总线数目大大减少。在一条典型的SCSI传输链路上,大约只有20根连接线。如果没有多路复用技术,连接线的数据至少要翻倍。在总线上传输数据时,数据的发起端(设备B)将数据以电信号的方式发送出来,数据从设备B与总线的接入点发送到总线上。下面我们看看如果数据的目标设备是设备D,总线是如何传输数据的。

电信号进入总线后,将会沿着总线的电缆朝各个方向进行传输,并且在每个交叉口,再沿着各个分叉的方向进行传输。因此,当承载着数据的电信号从设备B传输到设备B与总线的交叉点后,信号将分成两份,分别向总线的两个相反的方向进行传输。当信号到达设备A或设备C与总线的交叉点时,信号再次会分成两份,分别沿着总线方向和设备方向进行传输。当信号到达设备D与总线的交叉点时,也会以同样的方式进行传输。


图片.png

信号继续按照总线的分叉的两个方向传输,并在下一个交叉点向两个分叉的方向进行传输。


图片.png

其中一份信号将像我们希望的那样向设备D传输。第二份则继续向前传输到达总线的尽头。

设备D,就像设备A和设备C那样接收到了信号。在传输的信号里,包含了数据包的目标设备是哪个设备的信息。因此,当设备A和设备C接收到这个数据包后,将会发现这个数据包不是传输给它们的,因此会将数据包丢弃。而设备D则发现这个数据包是传输给自己的,因此会接收并处理这个数据包。

图片.png

因此设备D将得到需要的数据包,但是仍然会有一份数据继续传输并到达总线的尽头。在总线的尽头,可能的处理方法有:吸收、反射或者篡改。无论怎样,我们肯定不希望数据再被反射回去,因为这样会与在总线上传输的新的数据包产生冲突和干扰。

为了避免信号被反射回总线,因此我们需要在总线的尽头安装一个终结器以吸收信号。终结器的原理很简单,它像一个插头一样安装在总线的尽头,吸收接收到的信号以防止反射。因此,每一个SCSI总线系统都需要终结器这个装置,否则就不能正常得进行信号传输。

注意:我们也将注意到也会有一份信号传输到总线的另一端,这一端是SCSI适配卡。传输到这一端的信号同样也需要被吸收终结,防止信号被反射回去。

e.  并行SCSI规范


图片.png

最初, SCSI总线可以连接的设备最大数目是8(包括SCSI适配卡),后来这一数据增加到16。

因为偏斜和干扰等物理问题, SCSI总线的带宽最大只能达到320MB/s。可以使用不同的技术如单终端( Single Ended, SE)、低电平差(LVD)、高电平差(HVD)等技术方法来提高SCSI总线支持的传输长度,但是最终最大长度仍不能超过25m。

因为采用的技术不同,一定不能将采用不同技术的设备混用。比如同一条总线上,不能同时既连接采用单终端的SCSI设备,又连接高电平差的设备。

每种技术都有一个图标,如图所示。有一种混用是允许的:即单终端的设备和低电平差的设备可以一起工作,因为他们使用的是想用它的电平信号,不会导致设备的损坏。但是,单终端设备的技术的指标要比低电平设备的指标要低,因此当这两种技术的设备连接到同一条总线时,将会使用最低的指标进行工作。这就意味着低电平设备不能工作在最佳状态。

f.  SCSI总线通信


图片.png

总线通信的一个问题是要保证连接到总线上的多个设备不会同时发送信息,因为如果多个设备同时发送信息就会产生线路拥塞。发生线路拥塞时,多个设备发送的信息之间会互相冲突、干扰,最终导致所有的并发发送都不成功,而发送端必须重新进行发送,这就导致数据的发送效率变低。

因此, SCSI总线系统必须要找到一种方法来保证同一时刻在整条总线上只有一个设备在发送信息。在图中,我们用汽车来表示发送信息的设备。同一时间只有一个设备在发送信息,就相当于同一时刻只有一辆汽车可以通过图中的单行道。

为了解决这个问题,开发者们设计出了一种带优先级的等候机制。在这个机制中,总线上的每个SCSI设备都有不同的优先级,这个优先级就是设备的SCSI ID。该机制采用SCSI ID来决定每个设备在检测到总线忙时需要等待多久再尝试发送数据。

因此, 所以当一个设备需要发送数据时,它必须要检测总线是否在忙,即是否有另外一个设备正在发送数据。当设备检测到总线在忙(例如因为其它设备正在发送数据),它就需要等待一定的时间再尝试发送。这个等待的时间长短是由其SCSI ID决定的。因此,设备的优先级越高,则它等待的时间久越少,因而在其等待时间结束后,能够成功发送数据的概率就越大。通常来说,总线上的设备中,速度快的设备(如硬盘)比速度慢的设备(如磁带库)拥有更高的优先级。

除了标记设备的优先级外, SCSI ID 同时也唯一标识着总线上的设备,即标识着数据的发送方和接收方。

g.  SCSI ID(详见多路径原理)
h.  SCSI 协议寻址


图片.png

为了对连接在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。