发明内容
本发明实施例提供了一种将数据导入iSCSI目标器的方法和iSCSI启动器,实现了对收集到的数据写入请求进行合组合和分割,提高了TCP链接中SCSI数据传输所占比例,并且充分利用了iSCSI目标器的写入数据缓存区,降低了写数据延迟,提高了数据写入效率。
在第一方面,本发明实施例提供了一种将数据导入iSCSI目标器的方法,应用于包括iSCSI启动器和iSCSI目标器的iSCSI系统中,所述iSCSI启动器执行以下步骤:
在预设时间内接收至少一个数据写入请求,所述至少一个数据写入请求中每个数据写入请求中都携带有目标数据以及所述目标数据要写入的磁盘位置;
将所述至少一个数据写入请求中携带的磁盘位置相邻的数据写入请求进行组合,得到组合数据写入请求;
根据TCP链接最大报文段长度和iSCSI目标器的可用缓存区大小,对所述组合数据写入请求进行分割处理;
将分割后的多个数据写入请求连续地发送至iSCSI目标器,用以所述iSCSI目标器将所述分割后的多个数据写入请求中携带的数据写入指定的磁盘位置。
在第二方面,本发明实施例提供了一种将数据导入iSCSI目标器的iSCSI启动器,应用于包括iSCSI启动器和iSCSI目标器的iSCSI系统中,所述iSCSI启动器包括:
接收单元,用于在预设时间内接收至少一个数据写入请求,所述至少一个数据写入请求中每个数据写入请求中都携带有目标数据以及所述目标数据要写入的磁盘位置;
组合单元,用于将所述至少一个数据写入请求中携带的磁盘位置相邻的数据写入请求进行组合,得到组合数据写入请求;
分割单元,用于根据TCP链接最大报文段长度和iSCSI目标器的可用缓存区大小,对所述组合数据写入请求进行分割处理;
发送单元,用于将分割后的多个数据写入请求连续地发送至iSCSI目标器,用以所述iSCSI目标器将所述分割后的多个数据写入请求中携带的数据写入指定的磁盘位置。
因此,通过应用本发明实施例提供的将数据导入iSCSI目标器的方法和iSCSI启动器,在预设时间内接收至少一个数据写入请求;将至少一个数据写入请求中携带的磁盘位置相邻的数据写入请求进行组合,得到组合数据写入请求;根据TCP链接最大报文段长度和iSCSI目标器的可用缓存区大小,对组合数据写入请求进行分割处理;将分割后的多个数据写入请求连续地发送至iSCSI目标器,用以iSCSI目标器将分割后的多个数据写入请求中携带的数据写入指定的磁盘位置。解决了现有技术中将数据导入iSCSI目标器的速率较低,进而导致了iSCSI存储网络性能不高的问题,实现了对收集到的数据写入请求进行合组合和分割,提高了TCP链接中SCSI数据传输所占比例,并且充分利用了iSCSI目标器的写入数据缓存区,降低了写数据延迟,提高了数据写入效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明技术方案的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
实施例一
下面以图1为例详细说明本发明实施例一提供的将数据导入iSCSI目标器的方法,图1为本发明实施例一提供的将数据导入iSCSI目标器的方法流程图,在本发明实施例中,执行下述步骤的实施主体可以为iSCSI initiator(启动器),但并不限制于此,下面以iSCSI启动器为实施主体详细说明。如图1所示,该实施例具体包括以下步骤:
步骤101,在预设时间内接收至少一个数据写入请求,所述至少一个数据写入请求中每个数据写入请求中都携带有目标数据以及所述目标数据要写入的磁盘位置。
在接收数据写入请求之前,iSCSI系统首先进行初始化登录,在初始化登录阶段,iSCSI启动器和iSCSI目标器进行协商,通过设置关键字立即数据ImmediateData=Yes,写过程模型参数InitialR2T=No,用以iSCSI启动器可以在发送写请求时携带要写的目标数据,并且允许非请求数据的发送。
在系统初始化完成后,iSCSI系统开启时间窗口计时器,启动后,开始接收数据写入请求,在计时器计时到预设时间长度后,结束计时。在这个预设时间内,iSCSI启动器可以接收到至少一个数据写入请求。
其中,每一个数据写入请求中都携带有要写入的目标数据,以及数据要写入的磁盘阵列位置。
步骤102,将所述至少一个数据写入请求中携带的磁盘位置相邻的数据写入请求进行组合,得到组合数据写入请求。
解析在预设时间内接收的数据写入请求,可以得到其中携带的磁盘阵列位置以及也写入的目标数据,将磁盘阵列位置相邻的数据写入请求可以组合成一个数据写入请求,即组合数据写入请求。
可选地,如果某个数据写入请求中携带的磁盘阵列位置与其他的任一数据写入请求携带的磁盘阵列位置都不相邻,则对该单独的数据写入请求不做任何处理。
步骤103,根据TCP链接最大报文段长度和iSCSI目标器的可用缓存区大小,对所述组合数据写入请求进行分割处理。
在执行步骤103之前,即在时间窗口计时器结束计时时,iSCSI启动器可以获取到当前TCP链接的最大报文段长度,在iSCSI系统初始化阶段,可以获取到iSCSI目标器的可用缓存区大小。
可以将组合后的组合数据写入请求进行分割,得到多个既可以完全填充TCP链接最大报文段长度的数据,又可以完全填充iSCSI目标器的可用缓存区的数据写入请求。
步骤104,将分割后的多个数据写入请求连续地发送至iSCSI目标器,用以所述iSCSI目标器将所述分割后的多个数据写入请求中携带的数据写入指定的磁盘位置。
通过组合分割得到多个可以完全填充TCP最大报文段长度的数据写入请求后,可以将分割后的多个数据写入请求使用Socket函数连续无间隔地提交至TCP/IP协议栈,使得所述TCP/IP协议栈将所述分割后的多个数据写入请求进行封装后发送至iSCSI目标器。
可选地,在将分割后的多个数据写入请求连续地发送至iSCSI目标器之后,还可接收iSCSI目标器接收到分割后的每个数据写入请求之后发送的响应消息,响应消息中携带有iSCSI目标器的可用缓存区大小;根据响应消息,更新iSCSI启动器所记录的iSCSI目标器的可用缓存区大小。
当向iSCSI目标器发送的数据写入请求可以完全填充其缓存区大小时,则暂时停止向iSCSI目标器发送数据写入请求,而是执行步骤101至步骤103,等待iSCSI目标器清空缓存区时,再继续向iSCSI目标器发送数据写入请求。
因此,通过应用本发明实施例提供的将数据导入iSCSI目标器的方法,在预设时间内接收至少一个数据写入请求;将至少一个数据写入请求中携带的磁盘位置相邻的数据写入请求进行组合,得到组合数据写入请求;根据TCP链接最大报文段长度和iSCSI目标器的可用缓存区大小,对组合数据写入请求进行分割处理;将分割后的多个数据写入请求连续地发送至iSCSI目标器,用以iSCSI目标器将分割后的多个数据写入请求中携带的数据写入指定的磁盘位置。解决了现有技术中将数据导入iSCSI目标器的速率较低,进而导致了iSCSI存储网络性能不高的问题,实现了对收集到的数据写入请求进行合组合和分割,提高了TCP链接中SCSI数据传输所占比例,并且充分利用了iSCSI目标器的写入数据缓存区,降低了写数据延迟,提高了数据写入效率。
下面给出采用本发明技术方案的一种将数据导入iSCSI目标器的一个示例。本发明实施例作为示例而不是限定,给出了图2所示的将数据导入iSCSI目标器的示意图,其中,iSCSI启动器在预设时间215内接收到了A、B、C三个数据写入请求,通过分析这三个写入请求,确定数据写入请求A和C要访问的磁盘阵列位置相邻,因此组合数据写入请求A和C,得到组合数据写入请求AC,按照获取到的TCP链接最大报文段长度,可以将数据写入请求B以及组合数据写入请求AC进行分割,得到数据写入请求B1、B2、B3、B4,A1、A2、C1、C2、C3、C4、C5。最后,可以将B1、B2、B3、B4,A1、A2、C1、C2、C3、C4、C5连续无间隔地发送至iSCSI目标器。由此,本发明实施例提供的iSCSI启动器通过对接收到的数据写入请求进行组合分割,可以提高TCP链接中SCSI数据传输所占比例,并且充分利用iSCSI目标器的写入数据缓存区,降低写数据延迟,提高数据写入效率。
实施例二
本发明实施例二还提供了一种将数据导入iSCSI目标器的iSCSI启动器,用以实现前述本发明实施例中的将数据导入iSCSI目标器的方法,如图3所示,iSCSI启动器应用于包括iSCSI启动器和iSCSI目标器的iSCSI系统中,主要包括以下功能单元:
接收单元301,用于在预设时间内接收至少一个数据写入请求,所述至少一个数据写入请求中每个数据写入请求中都携带有目标数据以及所述目标数据要写入的磁盘位置。
iSCSI系统在初始化完成后,开启时间窗口计时器,开始接收数据写入请求,在计时器计时到预设时间长度后,结束计时。在这个预设时间内,iSCSI启动器可以接收到至少一个数据写入请求。
组合单元302,用于将所述至少一个数据写入请求中携带的磁盘位置相邻的数据写入请求进行组合,得到组合数据写入请求。
解析在预设时间内接收的数据写入请求,可以得到其中携带的磁盘阵列位置以及也写入的目标数据,将磁盘阵列位置相邻的数据写入请求可以组合成一个数据写入请求,即组合数据写入请求。
分割单元303,用于根据TCP链接最大报文段长度和iSCSI目标器的可用缓存区大小,对所述组合数据写入请求进行分割处理。
可以将组合后的组合数据写入请求进行分割,得到多个既可以完全填充TCP链接最大报文段长度的数据,又可以完全填充iSCSI目标器的可用缓存区的数据写入请求。
发送单元304,用于将分割后的多个数据写入请求连续地发送至iSCSI目标器,用以所述iSCSI目标器将所述分割后的多个数据写入请求中携带的数据写入指定的磁盘位置。
发送单元304具体用于:将所述分割后的多个数据写入请求使用套接字Socket函数连续无间隔地提交至TCP/IP协议栈,使得所述TCP/IP协议栈将所述分割后的多个数据写入请求进行封装后发送至所述iSCSI目标器。
可选地,所述iSCSI启动器还包括:获取单元305,用于获取所述TCP链接最大报文段长度。
可选地,所述iSCSI启动器还包括更新单元306,其中,接收单元301,还用于接收所述iSCSI目标器接收到分割后的每个数据写入请求之后发送的响应消息,所述响应消息中携带有iSCSI目标器的可用缓存区大小;更新单元306,用于根据所述响应消息,更新所述iSCSI启动器所记录的所述iSCSI目标器的可用缓存区大小。
可选地,iSCSI启动器还包括:协商单元307,用于与所述iSCSI目标器进行协商,获取并记录所述iSCSI目标器的可用缓存区大小的初始值。
在接收数据写入请求之前,iSCSI系统首先进行初始化登录,在初始化登录阶段,iSCSI启动器和iSCSI目标器进行协商,通过设置关键字立即数据ImmediateData=Yes,写过程模型参数InitialR2T=No,用以iSCSI启动器可以在发送写请求时携带要写的目标数据,并且允许非请求数据的发送。
因此,通过应用本发明实施例提供的将数据导入iSCSI目标器的iSCSI启动器,解决了现有技术中将数据导入iSCSI目标器的速率较低,进而导致了iSCSI存储网络性能不高的问题,实现了对收集到的数据写入请求进行合组合和分割,提高了TCP链接中SCSI数据传输所占比例,并且充分利用了iSCSI目标器的写入数据缓存区,降低了写数据延迟,提高了数据写入效率。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。