CN102243617A - 读/写处理方法、设备及系统 - Google Patents
读/写处理方法、设备及系统 Download PDFInfo
- Publication number
- CN102243617A CN102243617A CN2011101919791A CN201110191979A CN102243617A CN 102243617 A CN102243617 A CN 102243617A CN 2011101919791 A CN2011101919791 A CN 2011101919791A CN 201110191979 A CN201110191979 A CN 201110191979A CN 102243617 A CN102243617 A CN 102243617A
- Authority
- CN
- China
- Prior art keywords
- read
- scsi
- write
- packing
- write command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明实施例提供一种读/写处理方法、设备及系统,包括:在向目标设备发送SCSI读/写命令时,可以根据目标设备的解包能力,将至少两条SCSI读/写命令打包在一条SCSI打包读/写命令中发送给所述目标设备,从而使得本来需要分多次发送的SCSI读/写命令只需一次发送即可,减少了与目标设备的交互,从而减少对系统带宽的占用,并减轻发起设备和目标设备的处理负荷。
Description
技术领域
本发明涉及存储领域,尤其涉及一种读/写处理方法、设备及系统。
背景技术
随着网络存储和各种分布式应用的发展,对高速通信技术的需求越来越高。光纤通道(Fibre Channel,FC)是一种高速度、高可靠性、低延迟、高吞吐量的数据传输系统,极大地满足了这种高速通信需求。FC可以广泛应用于高性能存储、大规模数据库和数据仓库、存储备份与恢复、集群系统、网络存储系统、数字视频网络等领域。
FC将数据的传输和数据的内容分离,只关心数据的传输,从而为其传输多种类型的数据提供了便利。FC主要用于传输小型计算机系统接口(SmallComputer System Interface,SCSI)数据和因特网协议(Internet Protocol,IP)数据。FC作为载体传输数据的过程,就是将高层数据协议映射到FC物理层传输服务的过程。因此,FC在传输SCSI数据时,FC协议(Fibre Channel Protocol,FCP)就是SCSI数据、命令和状态信息在FC物理层的映射。FCP帧中的FCP-CDB域和ADDITIONAL FCP-CDB域用于存放SCSI命令。
SCSI是一组标准集,定义了大量设备通信所需的接口和协议,SCSI标准集中涉及的与FC之间进行交互的SCSI命令集基于SCSI架构模型5(SCSIArchitecture Model-5,SAM-5),该SCSI命令集中集成了SCSI定义的各种指令,用于实现有效的数据传输、差错控制以及设备管理等功能。
在基于SCSI的体系结构中,约定读写操作是由发起设备(Initiator,一般是产生数据的设备,如数据采集卡)发出读写命令,由目标设备(Target,一般是存储数据的设备,如硬盘)执行并回应执行结果。
在目标设备为虚拟存储设备时,基于SCSI的一次读写操作只能对目标设备的连续地址对应的一个空间进行访问。在SCSI读命令和写命令中,均只有一个逻辑块地址(Logical Block Address,LBA)域和一个传输长度(TransferLength),其中LBA域用于表示起始的逻辑块号,传输长度用于表示从起始逻辑块开始读或者写多少数据。
而在实际的读写操作中,不同的应用程序所访问的虚拟存储设备的空间通常是不同的,且即使是同一个应用,如文件系统,也存在大量的访问非连续地址对应的多个空间(非连续地址空间)的操作。现有的基于SCSI的读写操作,一旦发生需要对多个空间进行访问的情况,需要发送多条SCSI读/写命令,如需要对LBA=20的地址读/写1K字节并从LBA=80的地址读/写2K字节的话,需要发送2条SCSI读/写命令,当存在更多的分段读/写操作时,需要发送更多的读/写命令。每次的SCSI读/写命令均需要利用FC进行传输,非连续地址空间的读写操作越多,发起设备和目标设备之间的交互就越多,FC的传输量就越大,占用的FC存储区域网络(storage area network,SAN)的总线带宽就越大,导致FC SAN的总线带宽有效利用率降低。而且,发起设备需要发起多条SCSI读/写命令、接收多条SCSI读/写应答,目标设备需要接收多条SCSI读/写命令、发起多条SCSI读/写应答,耗费发起设备和目标设备的资源,影响发起设备和目标设备的处理能力。
发明内容
本发明实施例提供一种读/写处理方法、设备及系统,用于解决现有的基于SCSI的非连续地址空间的访问需要发送多条读/写命令,导致占用FC SAN的大量总线带宽,及影响发起设备和目标设备的处理能力的问题。
一种读/写处理方法,该方法包括:
将至少两条小型计算机系统接口SCSI读/写命令打包在一条SCSI打包读/写命令中,所述至少两条SCSI读/写命令的数量不大于目标设备解包能力,所述解包能力是指目标设备支持的一条SCSI打包读/写命令中包含的SCSI读/写命令的最大数量;
将所述SCSI打包读/写命令发送给所述目标设备。
一种读/写处理方法,该方法包括:
接收小型计算机系统接口SCSI打包读/写命令,所述SCSI打包读/写命令中包括至少两条SCSI读/写命令;
将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令。
一种第一读写处理设备,该设备包括:
第一打包模块,用于将至少两条小型计算机系统接口SCSI读/写命令打包在一条SCSI打包读/写命令中,所述至少两条SCSI读/写命令的数量不大于目标设备解包能力,所述解包能力是指目标设备支持的一条SCSI打包读/写命令中包含的SCSI读/写命令的最大数量;
第一发送模块,用于将所述SCSI打包读/写命令发送给所述目标设备。
一种第二读写处理设备,该设备包括:
第二接收模块,用于接收小型计算机系统接口SCSI打包读/写命令,所述SCSI打包读/写命令中包括至少两条SCSI读/写命令;
第二分解模块,用于将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令。
一种读写处理系统,该系统包括第一读写处理设备和第二读写处理设备。
根据本发明实施例提供的方案,在向目标设备发送SCSI读/写命令时,可以根据目标设备的解包能力,将至少两条SCSI读/写命令打包在一条SCSI打包读/写命令中发送给所述目标设备,从而使得本来需要分多次发送的SCSI读/写命令只需一次发送即可,减少了与目标设备的交互,从而减少对系统带宽的占用,并减轻发起设备和目标设备的处理负荷。
附图说明
图1为本发明实施例一提供的一种读/写处理方法的步骤流程图;
图2为本发明实施例二提供的发起设备与目标设备的交互示意图;
图3为本发明实施例二提供的一种确定目标设备解包能力的方法的步骤流程图;
图4为本发明实施例三提供的一种SCSI读/写命令打包方法的步骤流程图;
图5(a)、(b1)、(b2)为本发明实施例四提供的一种SCSI打包读/写命令解包及处理方法的步骤流程图;
图6为本发明实施例五提供一种SCSI打包读/写应答解包及处理方法的步骤流程图;
图7为本发明实施例六提供的一种第一读写处理设备的结构示意图;
图8为本发明实施例七提供的一种第二读写处理设备的结构示意图;
图9为本发明实施例八提供的一种读写处理系统的结构示意图。
具体实施方式
针对现有技术中一条SCSI读/写命令无法实现对目标设备非连续地址空间的访问,在发起设备需要对目标设备中的非连续地址空间进行访问时,需要利用多条SCSI读/写命令来实现,导致发起设备和目标设备之间的交互多,对系统带宽占用量大,并使得发起设备目标设备的处理负荷重的问题,本发明实施例可以根据目标设备的解包能力,将至少两条SCSI读/写命令打包在一条SCSI打包读/写命令中发送给所述目标设备。进一步的,目标设备在对SCSI打包读/写命令中的每一条SCSI读/写命令进行处理后,可以将每条SCSI读/写命令对应的SCSI读/写应答打包为SCSI打包读/写应答发送给所述发起设备,从而进一步减少对系统带宽的占用,减轻发起设备目标设备的处理负荷。同时,本发明实施例提供的方案依托于现有的SCSI标准体系,使得本发明方案实现简单。
本发明实施例提供的方案不仅适用于FC网络中的SCSI读/写命令的传输,也同样适用于其他进行SCSI读/写命令传输的网络,如串行连接SCSI(SerialAttached SCSI,SAS)网络。本发明各实施例提供的方案也可以扩展到对SCSI的其他读写相关的命令的打包,如Verity/Write and Verity/Write same/XRead等。
本发明各实施例中,发起设备(Initiator)是指产生数据的设备,如数据采集卡。目标设备(Target)是指存储数据的虚拟存储设备,如虚拟硬盘。目标设备可以理解为一个逻辑单元(Logic Unit,LU)。
本发明各实施例中,对SCSI读命令和SCSI写命令的打包操作是分别进行的,为了简便起见,利用SCSI读/写命令表示对SCSI读命令,或者,对SCSI写命令的操作。
下面结合说明书附图和各实施例对本发明技术方案进行说明。
实施例一、
本发明实施例一提供一种读/写处理方法,如图1所示为该方法的步骤流程图,包括:
步骤101、打包SCSI读/写命令。
在本步骤中,发起设备(中的应用程序)在需要对目标设备进行非连续地址空间的访问时,可以将至少两条SCSI读/写命令打包在一条SCSI打包读/写命令中,所述至少两条SCSI读/写命令的数量不大于目标设备解包能力,所述解包能力是指目标设备支持的一条SCSI打包读/写命令中包含的SCSI读/写命令的最大数量。
本发明各实施例中,子标识用于对每条SCSI读/写命令进行标识,并将已用于标识SCSI读/写命令的子标识确定为不可分配的子标识,将尚未被用于标识SCSI读/写命令的子标识确定为可分配的子标识。
本实施例中,可以通过以下方式确定本次用于打包的SCSI读/写命令数量:
在目标设备的解包能力对应的最大数量大于发起设备中可分配的子标识数量时,将可分配的子标识数量确定为本次用于打包的SCSI读/写命令的数量;否则,将目标设备的解包能力对应的最大数量确定为本次用于打包的SCSI读/写命令的数量。
通过以上方式,可以将尽可能多的SCSI读/写命令打包在一条SCSI打包读/写命令中,使得后续可以最大程度地减少对系统带宽的占用,减轻发起设备和目标设备的处理负荷。
在打包时,还可以利用一个第一数量标识表示本次打包的SCSI读/写命令的数量,以便于后续目标设备对SCSI打包读/写命令的合法性进行校验;以及,为本次打包的每条SCSI读/写命令分配一个子标识,用于标识每条SCSI读/写命令。
本次打包的SCSI读/写命令的数量可以是通过以下方式确定的:
确定非连续地址空间的读/写访问数量(SCSI读/写命令条数)是否大于确定出的本次用于打包的SCSI读/写命令的数量:
若大于,则将所述本次用于打包的SCSI读/写命令的数量,确定为本次打包的SCSI读/写命令的数量。否则,将所有非连续地址空间的读/写访问对应的SCSI读/写命令的数量,确定为本次打包的SCSI读/写命令的数量。
步骤102、将所述SCSI打包读/写命令发送给所述目标设备。
具体的,可以利用光纤通道协议FCP帧中用于自定义的操作码Operationcode承载所述SCSI打包读/写命令。所述操作码位于FCP帧中的FCP-CDB域和ADDITIONAL FCP-CDB域。
步骤101~步骤102的操作主体为发起设备。至此,通过将多条SCSI读/写命令打包在一条SCSI打包读/写命令中发送给所述目标设备,减少了对系统带宽的占用,并减轻了发起设备和目标设备的处理负荷。进一步的,所述方法还可以包括:
步骤103、接收SCSI打包读/写命令。
本步骤的执行主体可以为目标设备。在本步骤中,目标设备接收发起设备发送的SCSI打包读/写命令。
步骤104、将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令。
为了执行所述SCSI打包读/写命令,目标设备需要将接收到的SCSI打包读/写命令分解为独立的SCSI读/写命令,来对每一条独立的SCSI读/写命令进行应答。
步骤105、打包SCSI读/写应答。
在确定出针对每一条SCSI读/写命令产生的SCSI读/写应答之后,可以将产生的多条SCSI读/写应答打包为一条SCSI打包读/写应答。
具体的,可以确定所述SCSI打包读/写命令中,每条SCSI读/写命令对应的子标识,利用所述子标识来标识该SCSI读/写命令对应的SCSI读/写应答,用于后续发起设备识别接收到的SCSI读/写应答所对应的SCSI读/写命令。
SCSI打包读/写应答的格式可以与SCSI打包读/写命令的格式类似,可以包括一个第二数量标识,且由于SCSI打包读/写应答可以是对SCSI打包读/写命令中的每一条SCSI读/写命令对应的SCSI读/写应答的打包,因此,该第二数量标识与SCSI打包读/写命令中的第一数量标识对应的数量可以是一致的。
步骤106、将所述SCSI打包读/写命令发送给所述发起设备。
与步骤102类似的,本步骤中可以利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载所述SCSI打包读/写应答。
通过步骤103~步骤106,目标设备可以在对接收到的SCSI打包读/写命令分解为多条SCSI读/写命令并分别应答后,将多条SCSI读/写应答打包在一条SCSI打包读/写应答中发送给所述发起设备,进一步减少了对系统带宽的占用,并进一步减轻了发起设备和目标设备的处理负荷。
本实施例提供的方法还可以包括:
步骤107、接收SCSI打包读/写应答。
本步骤的执行主体可以为发起设备。在本步骤中,发起设备接收目标设备发送的SCSI打包读/写应答。
步骤108、将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答。
为了将所述SCSI打包读/写应答中包含的SCSI读/写应答分发给对应的发起SCSI读/写命令的应用程序,发起设备需要将接收到的SCSI打包读/写应答分解为独立的SCSI读/写应答。
步骤109、将SCSI读/写应答发送给对应的应用程序。
SCSI读/写应答对应的结果可能是正确的,也可能是错误的,在本步骤中,将SCSI读/写应答发送给对应的应用程序,应用程序可以根据接收到的SCSI读/写应答确定后续的处理步骤。
步骤107~步骤109的操作主体为发起设备,至此,完成了发起设备对目标设备的一次访问操作。
下面通过实施例二~实施例五对本发明实施例一的方案进行详细说明。
实施例二、
在实施例一中,目标设备的解包能力可以是在步骤1 01之前预先确定的。本发明实施例二提供一种确定目标设备的解包能力的方法,如图2所示,发起设备可以通过SCSI命令中标准的查询请求(Inquire request)命令来查询目标设备的解包能力,目标设备可以通过标准的查询应答(Inquire reply)命令来向发起设备返回自身的解包能力,具体的,目标设备可以通过查询应答命令中20字节(byte)的厂商自定义域(Vendor specific域)向发起设备返回自身的解包能力。Vendor specific域描述如表1所示。
表1
本发明各实施例能够顺利实现的前提为发起设备和目标设备已预先进行通信协商,具体的,在表1中,当目标设备是发起设备已协商好的设备时,为了标识该目标设备,可以定义该目标设备的Magic num为“SCSIIO”。
以Vendor specific域中的并发读参数为例(并发写参数类似),该并发读参数的域描述如表2所示:
表2
具体的,可以定义支持位(Support)为1时表示目标设备支持SCSI读命令的打包,Support为0时表示目标设备不支持SCSI读命令的打包。当Support为1时,最大值位(MAX IO)有效,且此时目标设备支持的一条SCSI打包读命令中包含的SCSI读命令的最大数量(解包能力)为MAX IO的数值加1。针对并发写参数,类似的,可以定义支持位(Support)为1时表示目标设备支持SCSI写命令的打包,Support为0时表示目标设备不支持SCSI写命令的打包。当Support为1时,最大值位(MAX IO)有效,且此时目标设备支持的一条SCSI打包写命令中包含的SCSI写命令的最大数量(解包能力)为MAXIO的数值加1。
具体的,确定目标设备的解包能力的步骤流程如图3所示,包括:
步骤201、发起设备接收目标设备返回的查询应答命令。
步骤202、发起设备设置自身不进行读/写命令的打包。
具体的,可以设置打包读标识符为FALSE,设置打包写标识符为FALSE。
步骤203、发起设备从查询应答命令中提取Vendor specific域的内容。
步骤204、发起设备判断Vendor specific域的前6个字节是否为“SCSIIO”,如果是,则继续执行步骤205,否则,结束本次流程。
若Vendor specific域的前6个字节为事先约定的“SCSIIO”,则可以确定该目标设备是所述发起设备已预先进行通信协商的设备。
步骤205、发起设备判断Vendor specific域中的版本号是否为支持本次操作的版本号,如果是,则继续执行步骤206,否则,结束本次流程。
步骤206、发起设备判断并发读/写参数是否支持打包的读/写(以Support为1表示支持为例),如果均不支持,则结束本次流程,否则,在并发读参数支持打包的读时,设置自身可以进行读命令的打包,和/或并发写参数支持打包的写时,设置自身可以进行写命令的打包。
具体的,可以在并发读参数支持打包的读时,设置打包读标识符为TRUE,并确定并发读参数中MAX IO的数值。可以在并发写参数支持打包的写时,设置打包写标识符为TRUE,并确定并发写参数中MAX IO的数值。
后续发起设备可以根据确定出的目标设备是否支持SCSI读命令或写命令的打包,及目标设备支持一次打包的SCSI读命令或写命令的最大数量(解包能力)来确定如何对SCSI读命令或写命令进行打包。
实施例三、
本发明实施例三提供一种SCSI读/写命令打包方法,该方法的步骤流程如图4所示,包括:
步骤301、确定需要对同一个目标设备进行访问的多条SCSI读/写命令。
步骤302、确定该目标设备是否支持SCSI读/写命令的打包。
如果该目标设备支持SCSI读/写命令的打包,则继续执行步骤303。否则,仍按照现有技术向目标设备发送SCSI读/写命令。
步骤303、确定本次用于打包的SCSI读/写命令的数量。
具体的,在目标设备的解包能力对应的最大数量大于可分配的子标识数量时,将可分配的子标识数量确定为本次用于打包的SCSI读/写命令的数量;否则,
将目标设备的解包能力对应的最大数量确定为本次用于打包的SCSI读/写命令的数量。
步骤304、打包SCSI读/写命令。
具体的,本步骤包括:确定非连续地址空间的读/写访问个数(SCSI读/写命令条数)是否大于确定出的本次用于打包的SCSI读/写命令的数量,若大于,则从所述非连续地址空间的读/写访问中确定出所述本次用于打包的SCSI读/写命令的数量的SCSI读/写命令,打包为一条SCSI打包读/写命令。否则,将所有非连续地址空间的读/写访问对应的SCSI读/写命令,打包为一条SCSI打包读/写命令。
由于现有的SCSI读/写命令中并没有现成的命令支持读/写打包,因此使用SCSI标准中自定义的Operation code来承载打包的SCSI读/写命令。在本实施例中可以约定使用0x20~0x24作为SCSI打包读命令(其中,可以包括read(6)/read(10)/read(12)/read(16)/read(32)格式的SCSI读命令)的Operationcode,0x26/0x27/0x29/0x2C/0x2D作为SCSI打包写命令(其中,可以包括write(6)/write(10)/write(12)/write(16)/write(32)格式的SCSI写命令)的Operation code。
以打包read(16)格式的SCSI读命令为例,read(16)格式的SCSI读命令是指该SCSI读命令中包括16个字节,其他格式含义类似,不再一一解释,打包后的SCSI打包读命令如表3所示:
表3
以打包write(16)格式的SCSI写命令为例,打包后的SCSI打包写命令如表4所示:
表4
实施例四、
本发明实施例四提供一种SCSI打包读/写命令解包及处理方法,该方法的步骤流程如图5(a)所示,包括:
步骤401、接收SCSI打包读/写命令。
步骤402、判断Operation code的合法性。
在确定Operation code为合法的Operation code时,继续执行步骤403,否则,结束本次流程,并可以给出错误提示消息。
步骤403、判断数量标识是否与SCSI打包读/写命令中包括的SCSI读/写命令数量一致。
在本步骤中,判断SCSI打包读/写命令中的数量标识(可以用NUM表示)是否与SCSI打包读/写命令中包括的SCSI读/写命令数量一致,若一致,则继续执行步骤404,否则,结束本次流程,并可以给出错误提示消息。
步骤404、从SCSI打包读/写命令提取每条SCSI读/写命令及其对应的子标识(可以用TAG表示)。
步骤405、准备读/写缓冲区。
确定读/写数据缓冲区准备失败的SCSI读/写命令,针对所述准备失败的SCSI读/写命令分别产生对应的SCSI读/写应答。
确定读/写数据缓冲区准备成功的SCSI读/写命令,并准备数据的发送或接收。
下面分别针对SCSI读命令和SCSI写命令进行说明。
如图5(b1)所示,针对读缓冲区准备成功的SCSI读命令,准备好数据的发送后,本实施例提供的方法具体还包括:
步骤4061、目标设备获得针对一条SCSI读命令的数据。
步骤4071、确定该SCSI读命令对应的SCSI读应答。
具体的,本步骤包括,将所述数据的第一个字节设置为该SCSI读命令的子标识。
步骤4081、判断所有的SCSI读命令是否均处理完毕。
在本步骤中,判断从接收到的SCSI打包读命令中提取出的每条SCSI读命令是否均处理完毕。若是,则继续执行步骤4091,否则,跳转执行步骤4061。
步骤4091、打包每条SCSI读命令对应的SCSI读应答。
本步骤打包的操作与实施例一中步骤101类似,在此不再赘述。且SCSI打包读应答与对应的SCSI打包读命令可以使用相同的Operation code承载。
步骤4101、将打包后的SCSI打包读应答发送给发起设备。
如图5(b2)所示,针对写缓冲区准备成功的SCSI写命令,准备好数据的接收后,本实施例提供的方法具体还包括:
步骤4062、目标设备接收针对一条SCSI写命令的数据。
步骤4072、确定该数据对应的数据标识。
与确定SCSI读命令对应的SCSI读应答类似的,SCSI写命令的数据的第一个字节可以设置为数据标识,在本步骤中,可以提取接收到的数据中携带的数据标识,用于后续判断该数据是否为对应的SCSI写命令的数据。
步骤4082、判断该数据标识的合法性。
在本步骤中,可以判断步骤4072中确定出的数据对应的数据标识与步骤4062中的SCSI写命令对应的子标识是否一致,若一致,则可以确定4072中确定出的数据标识为合法的标识,否则,确定该数据标识为不合法的标识。
若该数据标识为合法的标识,可以确定该数据为有效数据,继续执行步骤4092,否则,确定该数据为无效数据,并跳转执行步骤4062。
步骤4092、进行标准的写操作,并产生该SCSI写命令对应的SCSI写应答。
步骤4102、判断所有的SCSI写命令是否均处理完毕。
在本步骤中,判断从接收到的SCSI打包写命令中提取出的每条SCSI写命令是否均处理完毕。若是,则继续执行步骤4112,否则,跳转执行步骤4062。
步骤4112、打包每条SCSI写命令对应的SCSI写应答。
本步骤打包的操作与实施例一中步骤101类似,在此不再赘述。且SCSI打包写应答与对应的SCSI打包写命令可以使用相同的Operation code承载。
步骤4122、将打包后的SCSI打包写应答发送给发起设备。
实施例五、
本发明实施例五提供一种SCSI打包读/写应答解包及处理方法,该方法的步骤流程如图6所示,包括:
步骤501、接收打包的SCSI打包读/写应答。
本步骤具体包括,从用于承载SCSI打包读/写应答的Operation code中获取SCSI打包读/写应答。
步骤502、判断发送该SCSI打包读/写应答的目标设备是否支持打包操作。
在本步骤中,判断发送该SCSI打包读/写应答的目标设备是否支持进行SCSI读/写应答的打包操作,若支持,则继续执行步骤503,否则,结束本次流程并忽略接收到的SCSI打包读/写应答。
具体的,可以向该目标设备发送查询请求(Inquire request)命令,根据该目标设备返回的查询应答(Inquire reply)命令中并发读/写参数support的值来确定该目标设备是否支持打包(详细的过程可以参见实施例二),并可以将支持打包的目标设备确定为支持进行SCSI读/写应答的打包操作的目标设备,将不支持打包的目标设备确定为不支持进行SCSI读/写应答的打包操作的目标设备。
步骤503、判断数量标识是否与SCSI打包读/写应答中包括的SCSI读/写应答数量一致。
在本步骤中,判断SCSI打包读/写应答中的数量标识是否与SCSI打包读/写应答中包括的SCSI读/写应答数量一致,若一致,则继续执行步骤504,否则,结束本次流程,并可以给出错误提示消息。
步骤504、从SCSI打包读/写应答提取每条SCSI读/写应答及其对应的子标识。
步骤505、将所述每条SCSI读/写应答对应的子标识设置为可分配的子标识。
执行本步骤有利于后续其他SCSI读/写命令利用可分配的子标识进行标识及打包操作。
步骤506、将SCSI读/写应答发送给对应的应用程序。
与本发明实施例一~实施例五基于同一发明构思,提供以下的设备及系统。
实施例六、
本发明实施例六提供一种第一读写处理设备,该设备的结构示意图如图7所示,包括:
第一打包模块11用于将至少两条小型计算机系统接口SCSI读/写命令打包在一条SCSI打包读/写命令中,所述至少两条SCSI读/写命令的数量不大于目标设备解包能力,所述解包能力是指目标设备支持的一条SCSI打包读/写命令中包含的SCSI读/写命令的最大数量;第一发送模块12用于将所述SCSI打包读/写命令发送给所述目标设备。
该设备还包括:
第一接收模块13用于接收SCSI打包读/写应答,所述SCSI打包读/写应答中包括至少两条SCSI读/写应答;
第一分解模块14用于将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答。
第一发送模块12还用于向目标设备发送查询请求Inquire request命令。第一接收模块13还用于接收目标设备返回的查询应答Inquire reply命令。第一打包模块11还用于根据所述Inquire reply命令,确定返回该Inquire reply命令的目标设备的解包能力。
第一打包模块11具体用于在目标设备的解包能力对应的最大数量大于可分配的子标识数量时,将可分配的子标识数量确定为本次用于打包的SCSI读/写命令的数量,否则,将目标设备的解包能力对应的最大数量确定为本次用于打包的SCSI读/写命令的数量;以及,将确定数量的SCSI读/写命令打包在一条SCSI打包读/写命令中,并在打包后的SCSI打包读/写命令中利用第一数量标识表示本次打包的SCSI读/写命令的数量,以及为本次打包的每条SCSI读/写命令分配一个子标识。
第一发送模块12具体用于利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载所述SCSI打包读/写命令,并发送给所述目标设备。
第一接收模块13具体用于接收利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载的SCSI打包读/写应答。
第一分解模块14还用于确定发送所述SCSI打包读/写应答的目标设备支持SCSI读/写应答的打包。
第一分解模块14还用于确定所述SCSI打包读/写应答中的第二数量标识表示的数量与所述SCSI打包读/写应答中包括的SCSI读/写应答数量一致。
第一分解模块14还用于将所述至少两条SCSI读/写应答分别对应的子标识的状态设置为可分配状态。
本实施例中提供的第一读写处理设备可以视为本发明实施例一~实施例五中涉及的发起设备,并具有相应的功能,在此不再赘述。
实施例七、
本发明实施例七提供一种第二读写处理设备,该设备的结构示意图如图8所示,包括:
第二接收模块21用于接收小型计算机系统接口SCSI打包读/写命令,所述SCSI打包读/写命令中包括至少两条SCSI读/写命令;第二分解模块22用于将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令。
该设备还包括:
第二打包模块23用于将与所述至少两条SCSI读/写命令分别对应的SCSI读/写应答打包在一条SCSI打包读/写应答中;
第二发送模块24用于发送所述SCSI打包读/写应答。
第二接收模块21具体用于接收利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载的SCSI打包读/写命令。
第二分解模块22还用于确定所述Operation code合法。
第二分解模块22还用于确定所述SCSI打包读/写命令中的第一数量标识表示的数量与所述SCSI打包读/写命令中包括的SCSI读/写命令数量一致。
第二打包模块23具体用于确定读/写数据缓冲区中准备失败的SCSI读/写命令,针对所述准备失败的SCSI读/写命令分别产生对应的SCSI读/写应答,以及,确定读/写数据缓冲区中准备成功的SCSI读/写命令,针对所述准备成功的SCSI读/写命令分别产生对应的SCSI读/写应答;并将确定出的SCSI读/写应答打包在一条SCSI打包读/写应答中。
第二打包模块23具体用于基于所述SCSI打包读/写命令中,每条SCSI读/写命令对应的子标识来标识该SCSI读/写命令对应的SCSI读/写应答。
第二发送模块24具体用于利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载所述SCSI打包读/写应答并发送。
本实施例中提供的第二读写处理设备可以视为本发明实施例一~实施例五中涉及的目标设备,并具有相应的功能,在此不再赘述。
实施例八、
本发明实施例八提供一种读写处理系统,该系统的结构示意图如图9所示,包括第一读写处理设备31和第二读写处理设备32。
本实施例中涉及的第一读写处理设备31可以视为本发明实施例六提供的第一读写处理设备,并可以具有本发明实施例一~实施例五中涉及的发起设备的相应功能,本实施例中涉及的第二读写处理设备32可以视为本发明实施例七提供的第二读写处理设备,并可以具有本发明实施例一~实施例五中涉及的目标设备的相应功能,在此不再赘述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (22)
1.一种读/写处理方法,其特征在于,该方法包括:
将至少两条小型计算机系统接口SCSI读/写命令打包在一条SCSI打包读/写命令中,所述至少两条SCSI读/写命令的数量不大于目标设备解包能力,所述解包能力是指目标设备支持的一条SCSI打包读/写命令中包含的SCSI读/写命令的最大数量;
将所述SCSI打包读/写命令发送给所述目标设备。
2.如权利要求1所述的方法,其特征在于,将至少两条SCSI读/写命令打包在一条SCSI打包读/写命令中之前,所述方法还包括:
向目标设备发送查询请求Inquire request命令,并根据该目标设备返回的查询应答Inquire reply命令确定该目标设备的解包能力。
3.如权利要求1所述的方法,其特征在于,将至少两条SCSI读/写命令打包在一条SCSI打包读/写命令中,具体包括:
在目标设备的解包能力对应的最大数量大于可分配的子标识数量时,将可分配的子标识数量确定为本次用于打包的SCSI读/写命令的数量;否则
将目标设备的解包能力对应的最大数量确定为本次用于打包的SCSI读/写命令的数量;
将确定数量的SCSI读/写命令打包在一条SCSI打包读/写命令中,并在打包后的SCSI打包读/写命令中利用第一数量标识表示本次打包的SCSI读/写命令的数量,以及为本次打包的每条SCSI读/写命令分配一个子标识。
4.如权利要求1所述的方法,其特征在于,将所述SCSI打包读/写命令发送给所述目标设备,具体包括:
利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载所述SCSI打包读/写命令,并发送给所述目标设备。
5.如权利要求1~4任一所述的方法,其特征在于,将所述SCSI打包读/写命令发送给所述目标设备之后,所述方法还包括:
接收SCSI打包读/写应答,所述SCSI打包读/写应答中包括至少两条SCSI读/写应答;
将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答。
6.如权利要求5所述的方法,其特征在于,接收SCSI打包读/写应答,具体包括:
接收利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载的SCSI打包读/写应答。
7.如权利要求5所述的方法,其特征在于,接收SCSI打包读/写应答之后,将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答之前,所述方法还包括:
确定发送所述SCSI打包读/写应答的目标设备支持SCSI读/写应答的打包。
8.如权利要求7所述的方法,其特征在于,确定发送所述SCSI打包读/写应答的目标设备支持SCSI读/写应答的打包之后,将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答之前,所述方法还包括:
确定所述SCSI打包读/写应答中的第二数量标识表示的数量与所述SCSI打包读/写应答中包括的SCSI读/写应答数量一致。
9.如权利要求5所述的方法,其特征在于,所述SCSI打包读/写应答中包括的每条SCSI读/写应答分别对应一个子标识;
将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答之后,所述方法还包括:
将所述至少两条SCSI读/写应答分别对应的子标识的状态设置为可分配状态。
10.一种读/写处理方法,其特征在于,该方法包括:
接收小型计算机系统接口SCSI打包读/写命令,所述SCSI打包读/写命令中包括至少两条SCSI读/写命令;
将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令。
11.如权利要求10所述的方法,其特征在于,接收SCSI打包读/写命令,具体包括:
接收利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载的SCSI打包读/写命令。
12.如权利要求11所述的方法,其特征在于,接收SCSI打包读/写命令之后,将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令之前,所述方法还包括:
确定所述Operation code合法。
13.如权利要求12所述的方法,其特征在于,确定所述Operation code合法之后,将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令之前,所述方法还包括:
确定所述SCSI打包读/写命令中的第一数量标识表示的数量与所述SCSI打包读/写命令中包括的SCSI读/写命令数量一致。
14.如权利要求10~13任一所述的方法,其特征在于,将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令之后,该方法还包括:
将与所述至少两条SCSI读/写命令分别对应的SCSI读/写应答打包在一条SCSI打包读/写应答中并发送。
15.如权利要求14所述的方法,其特征在于,将与所述至少两条SCSI读/写命令分别对应的SCSI读/写应答打包在一条SCSI打包读/写应答中,具体包括:
确定读/写数据缓冲区中准备失败的SCSI读/写命令,针对所述准备失败的SCSI读/写命令分别产生对应的SCSI读/写应答;以及
确定读/写数据缓冲区中准备成功的SCSI读/写命令,针对所述准备成功的SCSI读/写命令分别产生对应的SCSI读/写应答;
将确定出的SCSI读/写应答打包在一条SCSI打包读/写应答中。
16.如权利要求14所述的方法,其特征在于,将与所述至少两条SCSI读/写命令分别对应的SCSI读/写应答打包在一条SCSI打包读/写应答中时,基于所述SCSI打包读/写命令中,每条SCSI读/写命令对应的子标识来标识该SCSI读/写命令对应的SCSI读/写应答。
17.如权利要求14所述的方法,其特征在于,将所述SCSI打包读/写应答发送,具体包括:
利用光纤通道协议FCP帧中用于自定义的操作码Operation code承载所述SCSI打包读/写应答并发送。
18.一种第一读写处理设备,其特征在于,该设备包括:
第一打包模块,用于将至少两条小型计算机系统接口SCSI读/写命令打包在一条SCSI打包读/写命令中,所述至少两条SCSI读/写命令的数量不大于目标设备解包能力,所述解包能力是指目标设备支持的一条SCSI打包读/写命令中包含的SCSI读/写命令的最大数量;
第一发送模块,用于将所述SCSI打包读/写命令发送给所述目标设备。
19.如权利要求18所述的设备,其特征在于,该设备还包括:
第一接收模块,用于接收SCSI打包读/写应答,所述SCSI打包读/写应答中包括至少两条SCSI读/写应答;
第一分解模块,用于将所述SCSI打包读/写应答分解为至少两条SCSI读/写应答。
20.一种第二读写处理设备,其特征在于,该设备包括:
第二接收模块,用于接收小型计算机系统接口SCSI打包读/写命令,所述SCSI打包读/写命令中包括至少两条SCSI读/写命令;
第二分解模块,用于将所述SCSI打包读/写命令分解为至少两条SCSI读/写命令。
21.如权利要求20所述的设备,其特征在于,该设备还包括:
第二打包模块,用于将与所述至少两条SCSI读/写命令分别对应的SCSI读/写应答打包在一条SCSI打包读/写应答中;
第二发送模块,用于发送所述SCSI打包读/写应答。
22.一种读写处理系统,其特征在于,该系统包括如权利要求18或19所述的第一读写处理设备和如权利要求20或21所述的第二读写处理设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110191979.1A CN102243617B (zh) | 2011-07-08 | 2011-07-08 | 读/写处理方法、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110191979.1A CN102243617B (zh) | 2011-07-08 | 2011-07-08 | 读/写处理方法、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102243617A true CN102243617A (zh) | 2011-11-16 |
CN102243617B CN102243617B (zh) | 2014-01-01 |
Family
ID=44961682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110191979.1A Expired - Fee Related CN102243617B (zh) | 2011-07-08 | 2011-07-08 | 读/写处理方法、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102243617B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103002035A (zh) * | 2012-12-06 | 2013-03-27 | 浪潮(北京)电子信息产业有限公司 | 支持多协议链路的数据同步方法及服务器 |
CN103716413A (zh) * | 2014-01-13 | 2014-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统中海量小文件io操作传输提速方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192967A1 (en) * | 2004-03-01 | 2005-09-01 | Cisco Technology, Inc. | Apparatus and method for performing fast fibre channel write operations over relatively high latency networks |
CN101183298A (zh) * | 2007-12-26 | 2008-05-21 | 杭州华三通信技术有限公司 | 一种scsi数据读写方法、系统和装置 |
CN101645058A (zh) * | 2009-09-04 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 命令处理方法、命令发送方法、装置及系统 |
WO2010074944A2 (en) * | 2008-12-22 | 2010-07-01 | Intel Corporation | Method and system for queuing transfers of multiple non-contiguous address ranges with a single command |
-
2011
- 2011-07-08 CN CN201110191979.1A patent/CN102243617B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192967A1 (en) * | 2004-03-01 | 2005-09-01 | Cisco Technology, Inc. | Apparatus and method for performing fast fibre channel write operations over relatively high latency networks |
CN101183298A (zh) * | 2007-12-26 | 2008-05-21 | 杭州华三通信技术有限公司 | 一种scsi数据读写方法、系统和装置 |
WO2010074944A2 (en) * | 2008-12-22 | 2010-07-01 | Intel Corporation | Method and system for queuing transfers of multiple non-contiguous address ranges with a single command |
CN101645058A (zh) * | 2009-09-04 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 命令处理方法、命令发送方法、装置及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103002035A (zh) * | 2012-12-06 | 2013-03-27 | 浪潮(北京)电子信息产业有限公司 | 支持多协议链路的数据同步方法及服务器 |
CN103716413A (zh) * | 2014-01-13 | 2014-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统中海量小文件io操作传输提速方法 |
CN103716413B (zh) * | 2014-01-13 | 2017-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统中海量小文件io操作传输提速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102243617B (zh) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102985889B (zh) | 用于使用多个控制器进行通信的方法、系统和设备 | |
CN101939731A (zh) | 在i/o处理系统内的控制单元中处理变长设备命令字 | |
CN102609378A (zh) | 一种消息式内存访问装置及其访问方法 | |
CN102388357B (zh) | 访问存储设备的方法及系统 | |
CN109597640B (zh) | 一种应用程序的账号管理方法、装置、设备和介质 | |
CN103473272A (zh) | 数据处理方法、装置及系统 | |
CN103595790A (zh) | 设备远程访问的方法、瘦客户端和虚拟机 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
CN114201268B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN101872334A (zh) | 一种复合型usb设备及其实现方法 | |
CN109446147B (zh) | 一种网络存储设备与pcie设备的数据交互方法 | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
CN109240800B (zh) | 一种基于Hypervisor多系统共享内存的管理方法 | |
CN115543894B (zh) | 存储系统、数据处理方法及装置、存储介质及电子设备 | |
CN101877666A (zh) | 基于零拷贝方式的多应用程序报文接收方法和装置 | |
CN102096411A (zh) | 一种标定车载控制器的参数的方法及上位机 | |
CN102243617B (zh) | 读/写处理方法、设备及系统 | |
CN102662879B (zh) | 基于Windows操作系统对多路外部设备的输入的处理方法及系统 | |
CN104216834A (zh) | 一种内存访问的方法、缓冲调度器和内存模块 | |
CN102112992A (zh) | 通信装置、通信方法及程序 | |
CN101788888A (zh) | 一种实现目标端驱动的方法及该目标端驱动 | |
US20180069603A1 (en) | Communicating via near field communications | |
CN101982813B (zh) | 用于列车乘客信息显示器的软件远程更新方法及更新系统 | |
CN105471930B (zh) | 一种读取分布式数据的方法、系统和设备 | |
CN116366391A (zh) | 一种基于数据列表结构体的modbus通讯方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 350002 19 Building, Citrus Industrial Park, 618 Jinshan Road, Cangshan District, Fuzhou, Fujian. Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: 350002 19 Building, Citrus Industrial Park, 618 Jinshan Road, Cangshan District, Fuzhou, Fujian. Patentee before: Fujian Star Network Ruijie Networks Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140101 Termination date: 20210708 |
|
CF01 | Termination of patent right due to non-payment of annual fee |