一种数据传输的方法和装置与流程

文档序号:16544606发布日期:2019-01-08 20:46阅读:143来源:国知局
一种数据传输的方法和装置与流程

本发明涉及数据存储技术领域,特别涉及一种数据传输的技术领域。



背景技术:

随着网络技术的发展以及数字信息的指数化增长,网络存储技术变得越来越重要,其发展也日新月异。其中,光纤通道技术(英文全称:fiberchannel,简称:fc)是一种能够为存储设备、ip数据网、音频流等应用提供高速数据传输的骨干网络技术。光纤通道技术由美国工业标准协会提出,它能够为多种高层协议(英文全称:upperlevelprotocols,简称:ulp)提供高性能的传输通道。这些协议包括智能外设接口(英文全称:intelligentperipheralinterface,简称:ipi)命令集、小型计算机系统接口(英文全称:smallcomputersysteminterface,简称:scsi)命令集或高性能并行接口(英文全称:high-performanceparallelinterface,简称:hippi)数据帧、互联网协议(英文全称:internetprotocol,简称:ip)等。其中,小型计算机系统接口协议是一种用于计算机和智能设备之间系统级接口的独立处理器标准,是各类存储技术中的重要组成部分。

基于scsi的光纤通道协议(英文全称:fiberchannelprotocolforscsi,简称:fcp)是fc-4层提供的光纤通路到已存在的更上层协议scsi的映射标准,其中,fcp的写操作请求为fcp_write命令。图1所示的是fcp的写操作请求的流程。如图1所示,启动器(英文:initiator)发起写操作请求,通知目标器(英文:target)准备接收空间。其中,启动器和目标器均可以是服务器,目标器还可以是包括接入装置、存储控制器在内的存储系统。目标器接收到写操作请求后,进行接收存储空间准备,并通过完成准备报文(xfer_rdy报文)通知启动器,目标器已经准备好接收数据;启动器接收到xfer-rdy报文后才会通过fcp_data报文将数据发送给目标器。目标器将数据接收到准备好的存储空间中。

目前,对于写操作请求通常的做法是,目标器的接入装置接收到写操作请求后,需要将该写操作请求通过驱动模块转发给缓存模块,等待缓存模块完成存储空间分配后,再发送xfer-rdy报文给启动器,通知启动器目标器已经做好接收数据的准备,此时启动器再开始发送数据给目标器。这种做法由于写操作请求需要在目标器的接入装置、驱动模块以及缓存模块之间进行传递,层级交互较多,而且需要等待后端页面空间分配完成,造成启动器接收到xfer-rdy报文的时延较大,从而降低了整个数据传输过程中的效率。



技术实现要素:

本申请的实施例提供了一种在存储系统中进行数据传输的方法及实现该方法的装置,解决现有技术中存在的交互时延较长的问题。

本申请的实施例提供的具体技术方案如下:

第一方面,本申请提供了一种在存储系统中进行数据传输的方法,该方法包括:接入装置接收来自存储控制器预留的存储空间的页面信息;接收来自服务器的写操作请求,其中,该写操作请求用于为待写入存储介质的数据预留存储空间;当写操作请求符合发送策略时,发送完成准备报文给服务器,其中,该发送策略包括,写操作请求对应的待写入存储介质的数据大小不超过接入装置记录的存储控制器预留的存储空间的大小,该完成准备报文用于通知服务器,该存储系统已经准备好接收数据。通过这种做法,可以减少服务器接收到完成准备报文的时延,从而提升了整个数据传输过程的效率。

对于上述第一方面,一种可能的实现方式是,数据传输的方法还包括:当接入装置发送完成准备报文给服务器后,接入装置从该服务器接收待写入存储介质的数据,并将待写入存储介质的数据发送给存储控制器;当待写入存储介质的数据发送完成后,该接入装置发送完成消息给存储控制器,其中,该完成消息携带分配给待写入存储介质的数据的存储空间的页面信息。通过接入装置将待写入存储介质的数据以及携带需要使用的存储空间的页面消息的完成消息发送给存储控制器,使得存储控制器可以快速接收待写入存储介质的数据,从而提高了数据传输的效率。

对于上述第一方面,另一种可能的实现方式是,数据传输的方法还包括:在接入装置判断写操作请求符合发送策略之前,判断快写标识的值是否为有效,其中,该快写标识位于存储控制器预留的存储空间的页面信息中,当该存储控制器预留存储空间成功时,该快写标识的值被置为有效。通过判断快写标识的值是否为有效来确定存储控制器是否预留存储空间成功,有利于提高存储系统的稳定性。

对于上述第一方面,另一种可能的实现方式是,存储控制器包括驱动模块和缓存模块,该存储控制器预留的存储空间包括驱动模块预留的接收空间,该接入装置接收来自存储控制器预留的存储空间的页面信息具体包括:接入装置接收来自驱动模块预留的接收空间的页面信息。通过使驱动模块预留接收空间并将接收空间的页面信息发送给接入装置,使得接入装置根据写操作请求所包含的信息判断是否直接回复完成准备报文,从而提供了数据传输的效率。

对于上述第一方面,另一种可能的实现方式是,数据传输的方法还包括:当接入装置发送完成消息给存储控制器之后,驱动模块将来自接入装置的写操作请求发送给缓存模块;缓存模块分配缓存空间,并给驱动模块发送完成准备报文,其中,该完成准备报文携带所述缓存空间的页面信息;驱动模块将待写入存储介质的数据发送给缓存模块。通过这种做法,可以使得缓存模块在接收装置将数据发送给驱动模块以后再分配缓存空间来接收该数据,从而提供了数据传输的效率。

对于上述第一方面,另一种可能的实现方式是,存储控制器包括驱动模块和缓存模块,该存储控制器预留的存储空间包括缓存模块预留的缓存空间,接入装置接收来自存储控制器预留的存储空间的页面信息具体包括:接入装置接收驱动模块发送的由缓存模块预留的缓存空间的页面信息。通过使缓存模块预留缓存空间并将缓存空间的页面信息发送给接入装置,使得接入装置根据写操作请求所包含的信息判断是否直接回复完成准备报文,从而提供了数据传输的效率。

对于上述第一方面,另一种可能的实现方式是,当接入装置发送完成消息给存储控制器之后,驱动模块将完成消息发送给缓存模块,其中,该完成消息携带接收数据所使用的缓存空间的页面信息。通过发送携带接收数据所使用的缓存空间的页面信息的完成消息给缓存模块,使得缓存模块可以直接接收待写入存储介质的数据,从而提高了数据传输的效率。

对于上述第一方面,另一种可能的实现方式是,存储控制器预留的存储空间的页面信息的形式包括全球物理地址gpa和散集条目sge。通过这种做法,可以更好地利用零散的内存空间,从而提高了存储系统的内存的利用率。

第二方面,本申请提供了一种接入装置,该接入装置用于在存储系统中进行数据传输,该接入装置包括:接收模块,用于接收来自存储控制器预留的存储空间的页面信息;接收来自服务器的写操作请求,其中,该写操作请求用于为待写入存储介质的数据预留存储空间;发送模块,用于当写操作请求符合发送策略时,发送完成准备报文给服务器,其中,发送策略包括,写操作请求对应的待写入存储介质的数据大小不超过接入装置所记录的存储控制器预留的存储空间的大小,该完成准备报文用于通知服务器,存储系统已经准备好接收数据。

对于上述第二方面,一种可能的实现方式是,接收模块还用于,当发送模块发送完成准备报文给服务器后,从该服务器接收待写入存储介质的数据;发送模块还用于,将待写入存储介质的数据发送给存储控制器;当待写入存储介质的数据发送完成后,发送完成消息给存储控制器,其中,该完成消息携带分配给待写入存储介质的数据的存储空间的页面信息。

对于上述第二方面,另一种可能的实现方式是,接入装置还包括判断模块,用于判断快写标识的值是否为有效,其中,快写标识位于存储控制器预留的存储空间的页面信息中,当存储控制器预留存储空间成功时,快写标识的值被置为有效。

对于上述第二方面,另一种可能的实现方式是,存储控制器包括驱动模块和缓存模块,该存储控制器预留的存储空间包括动模块预留的接收空间,接收模块接收来自存储控制器预留的存储空间的页面信息具体包括:接收模块接收来自驱动模块预留的接收空间的页面信息。

对于上述第二方面,另一种可能的实现方式是,存储控制器包括驱动模块和缓存模块,存储控制器预留的存储空间包括缓存模块预留的缓存空间,接收模块接收来自存储控制器预留的存储空间的页面信息具体包括:接收模块接收驱动模块发送的由缓存模块预留的缓存空间的页面信息。

对于上述第二方面,另一种可能的实现方式是,存储控制器预留的存储空间的页面信息的形式包括全球物理地址gpa和散集条目sge。

第三方面,本申请提供一种存储系统,该存储系统包括存储介质、存储控制器以及接入装置,其中,存储介质,用于存储待写入存储介质的数据;存储控制器,用于预留存储空间,并将预留的存储空间的页面信息发送给接入装置;接入装置,用于接收来自存储控制器预留的存储空间的页面信息以及接收来自服务器的写操作请求,其中,写操作请求用于为待写入存储介质的数据预留存储空间;当写操作请求符合发送策略时,发送完成准备报文给服务器,其中,发送策略包括,写操作请求对应的待写入存储介质的数据大小不超过接入装置记录的存储控制器预留的存储空间的大小,完成准备报文用于通知所述服务器,存储系统已经准备好接收数据。

对于上述第三方面,一种可能的实现方式是,接入装置还用于,当发送完成准备报文给服务器后,接收待写入存储介质的数据;将待写入存储介质的数据发送给存储控制器;当该待写入存储介质的数据发送完成后,发送完成消息给存储控制器,其中,该完成消息携带分配给待写入存储介质的数据的存储空间的页面信息;存储控制器还用于,接收接入装置发送的待写入存储介质的数据;接收接入装置发送的完成消息。

对于上述第三方面,另一种可能的实现方式是,存储控制器还用于,在发送给接入装置的存储控制器预留的存储空间的页面信息中加入快写标识,其中,当该存储控制器预留存储空间成功时,快写标识的值被置为有效;接入装置还用于,在判断写操作请求是否符合发送策略之前,判断快写标识的值是否为有效。

对于上述第三方面,另一种可能的实现方式是,存储系统包括驱动模块和缓存模块,存储控制器预留的存储空间包括驱动模块预留的接收空间,其中,驱动模块用于,预留接收空间;将该接收空间的页面信息发送给接入装置;接入装置还用于,接收来自驱动模块预留的接收空间的页面信息。

对于上述第三方面,另一种可能的实现方式是,驱动模块还用于,当接入装置发送完成消息给存储控制器之后,将来自接入模块的写操作请求发送给缓存模块;当驱动模块接收到缓存模块发送的完成准备报文后,将待写入存储介质的数据发送给缓存模块;缓存模块用于,接收驱动模块发送的写操作请求;分配缓存空间,并给驱动模块发送完成准备报文,其中,该完成准备报文携带缓存空间的页面信息;接收驱动模块发送的待写入存储介质的数据。

对于上述第三方面,另一种可能的实现方式是,存储系统包括驱动模块和缓存模块,存储控制器预留的存储空间包括缓存模块预留的缓存空间,其中,驱动模块用于,向缓存模块发送请求;当接收到缓存模块发送的缓存空间的页面信息后,将该缓存空间的页面信息发送给接入装置;缓存模块用于,当接收到驱动模块发送的请求后,预留缓存空间,并将该缓存空间的页面信息发送给驱动模块;接入装置还用于,接收来自驱动模块的缓存空间的页面信息。

对于上述第三方面,另一种可能的实现方式是,驱动模块还用于,当接入装置发送完成消息给存储控制器之后,将完成消息发送给缓存模块,其中,完成消息携带接收数据所使用的缓存空间的页面信息。

对于上述第三方面,另一种可能的实现方式是,存储控制器预留的存储空间的页面信息的形式包括全球物理地址gpa和散集条目sge。

第四方面,本申请提供一种接入装置,该接入装置包括处理器和存储器,该存储器存储程序代码,该处理器用于调用该存储器中的程序代码执行如本申请第一方面所提供的数据传输的方法。

附图说明

图1为现有技术中启动器向目标器发送数据的示意图。

图2为本申请的实施例中的一种存储系统的结构示意图。

图3为本申请的实施例中的另一种存储系统的结构示意图。

图4为本申请的一个实施例中的存储系统接收数据的流程示意图。

图5为本申请的另一个实施例中的存储系统接收数据的流程示意图。

图6为本申请的实施例中的接入装置的功能结构的示意图。

图7为本申请的实施例中的存储系统的结构的示意图。

图8为本申请的实施例中的接入装置的结构的示意图。

具体实施方式

在网络存储技术中,通常的做法是通过专用的网络交换技术连接数据中心里的所有服务器和存储系统,例如,利用fc技术连接节点,并在fc协议栈之上运行的scsi协议提供存储网络服务。在这种架构中,服务器作为启动器,用来给作为目标器的存储系统发送待存储的数据。其中,用于网络存储技术中的存储系统主要包括接入装置、存储控制器和存储介质等设备。接入装置的主要作用是对收到的报文进行解析,剥离出原始的数据后,将该数据上传到存储控制器。其中,接入装置通常为接口卡,也可以作为芯片集成在存储控制器上。存储控制器用于连接存储介质和服务器,其包括驱动模块和缓存模块。存储控制器上的驱动模块和缓存模块为软件模块,可以分别控制存储控制器的一部分内存。当数据被缓存模块对应的存储控制器的内存接收后,可以将该数据再发送给存储介质。存储介质通常为磁盘阵列,用来提供大量的存储空间。

当作为启动器的服务器向作为目标器的存储系统发送数据的写操作请求时,存储系统的接入装置接收该写操作请求。接入装置通过驱动模块将该写操作请求发送给缓存模块,缓存模块通过调用存储控制器内存进行缓存空间分配。当缓存空间分配完成后,通过驱动模块给接入装置发送xfer-rdy报文,表明缓存模块已经做好接收数据的准备。接口模块再将该xfer-rdy报文通过网络发送给服务器,通知服务器存储系统已经做好接收数据的准备。此时服务器再将数据发送给存储系统。采用这种做法,当接入装置接收到写操作请求后,需要将该请求在驱动模块和缓存模块间转发。而当缓存模块准备好接收空间后,也需要将xfer-rdy报文通过驱动模块转发给接口卡。由于写操作请求和xfer-rdy报文的层级交互较多,而且需要等待缓存模块准备缓存空间,因此服务器等待xfer-rdy报文的时延较长,从而降低了整个数据传输过程的效率。

基于减少服务器等待xfer-rdy报文的时延从而提高数据传输效率的目的,本申请的实施例提供一种快速回复写操作请求的方法以及实现该方法的装置。在本申请的实施例中,存储系统上的驱动模块或者缓存模块在其所对应的存储控制器的内存中预留一定的存储空间,并将该预留的存储空间的信息发送给接入装置,其中,为了将驱动模块在存储控制器内存上预留的存储空间和缓存模块在存储控制器内存上预留的存储空间区分开来,本申请的实施例将驱动模块在存储控制器内存上预留的存储空间称为接收空间,将缓存模块在存储控制器内存上预留的存储空间称为缓存空间。当接入装置接收到服务器发送的写操作请求时,通过识别待接收数据的大小等情况,并根据预设的策略判断是否由接入装置直接发送xfer-rdy报文给服务器,从而降低服务器等待xfer-rdy报文的时延,增加数据传输的效率。

下面对本申请的实施例的具体实施场景以及流程进行详细介绍。

图2是一个可以用来实施本申请的实施例的存储系统架构的示意图。如图2所示的一种高速的存储专用网络,通过专用的数据交换技术连接数据中心里的所有存储系统和服务器。该存储专用网络包括服务器201、服务器202以及服务器203等多个服务器(图示3台,实际的数量可能为一台或多台)、存储系统210以及连接服务器和存储系统210的网络204。当服务器201(以服务器201为例,下同)需要将数据存入存储系统210时,将报文根据预设的协议进行封装,并通过网络204发送到存储系统210。存储系统210包括接入装置205、存储控制器209以及存储介质208,且存储控制器209包括驱动模块206和缓存模块207,其作用在前文中已有介绍,在此不再赘述。

图3是另一个可以用来实施本申请的实施例的存储系统架构的示意图。如图3所示,存储系统310中可能包含多个存储控制器(图示为存储控制器309和319)。对于每一个存储控制器,既可以分别对应一个不同的接入装置,也可以采取图3所示的一个接入装置对应多个不同的存储控制器的做法。并且,存储介质308作为磁盘阵列,也可以为多个存储控制器同时提供大量的存储空间。

参阅图4所示,本申请的一个实施例的流程如下:

s401:当一个或多个服务器开始和存储系统210进行连接时,接入装置205接收该服务器发送的连接建立消息。接入装置205将该连接建立消息转发到存储控制器209,以建立服务器和存储系统210之间的连接。当存储控制器209收到连接建立消息并与服务器建立连接后,驱动模块206在存储控制器209的内存中预留接收空间,该接收空间将会被用来在之后的步骤中接收接入装置205上传的待写入存储介质的数据。当接收空间预留成功之后,驱动模块206将该接收空间的页面信息发送给接入装置205,该页面信息包括了接收空间的地址信息以及所使用的页面大小信息,使得接入装置205可以得到驱动模块206所预留的接收空间在内存中的地址。

在本申请的实施例中,驱动模块206在内存中所预留的接收空间的页面信息可以采用全球物理地址(英文全称:globalphysicaladdress,简称gpa)或者散集条目(英文全称:scattergatherentry,简称sge)的方式。对于一个给定的数据块,可能会存储在内存中的一些离散的缓冲区中。在通常的做法中,当需要将数据从内存向磁盘进行迁移时,需要对每一个缓冲区进行数据传输,或者先将不同的缓冲区里的数据全部移动到一个缓冲区中,再进行传输。而通过对接收空间的页面信息采用gpa或者sge的形式进行生成,能够通过单一操作将内存中离散位置的数据收集起来,并将它们转移到适当位置,从而可以在保证效率的前提下,可以不需要驱动模块206分配连续的接收空间,从而使得驱动模块206在内存中预留接收空间时,可以更加灵活。

在本申请可能的一种实施方式中,为了防止驱动模块206预留接收空间失败而接入装置205没有得知的情况发生,在发送给接入装置205的页面信息中包含了快写标识,该快写标识用于判断驱动模块206是否成功地预留了接收空间。当该快写标识的值被置为有效时,说明驱动模块206预留接收空间成功。

s402:服务器201(以服务器201为例,下同)发送写操作请求给接入装置205。其中,写操作请求中携带的信息包括接入装置205待接收数据的大小以及启动器交换id(英文全称:originatorexchangeidentifier,简称ox_id),该启动器交换id是由服务器201产生的,作为该写操作请求的身份标识,之后服务器201发送该写操作请求对应的数据时,会在发送的数据中携带该启动器交换id。

s403:接入装置205接收到服务器201发送的写操作请求后,识别该写操作请求所对应的接入装置205待接收数据的大小,并根据预设的策略决定是否直接回复xfer-rdy报文给服务器201。当写操作请求所包含的信息满足预设的策略时,接入装置206直接回复xfer-rdy报文给服务器201,通知服务器201存储系统210已经做好接收数据的准备。当驱动模块206在步骤s401中向接入装置205发送的页面信息包含了快写标识时,还需要判断该快写标识的值为有效时,才表明驱动模块206预留接收空间成功,此时接入装置205才可以选择直接回复xfer-rdy报文给服务器201。同时,接入装置205根据写操作请求所携带的启动器交换id生成应答器交换id(英文全称:responderexchangeidentifier,简称:rx_id),并建立该应答器交换id与启动器交换id的对应关系。当接入装置205决定采用直接回复xfer-rdy报文给服务器201时,将会根据写操作请求所包含的待接收数据的大小分配接收空间,并建立io表项,将启动器交换id、应答器交换id以及用于接收数据的接收空间的页面信息放入所创建的io表项中,并建立启动器交换id、应答器交换id以及用于接收数据的接收空间的页面信息三者的对应关系。当接入装置206回复xfer-rdy报文时,该报文中携带相应的启动器交换id以及应答器交换id。

在本发明实施例中,接入装置205直接回复xfer-rdy报文给服务器201是指接入装置205在将写操作请求发送给存储控制器209,并接收存储控制器209发送的xfer-rdy报文之前,就回复xfer-rdy报文给服务器201的做法。

本申请的实施例可以采用多种预设策略或者预设策略的组合决定是否由接入装置205直接回复xfer-rdy报文给服务器201。在一种可能的实施方式中,第一种策略可以为,接入装置205根据驱动模块206所发送的页面信息,得到驱动模块206所预留的接收空间的大小,从而预设一个接收数据大小阈值,其中,该预设的接收数据大小阈值是小于驱动模块206所预留的接收空间大小的某个数值。当接收到服务器201发送的写操作请求时,根据该写操作请求中所包含的信息确定接入装置205待接收数据的大小,并与预设的接收数据大小阈值进行比较。当待接收数据的大小大于预设的接收数据大小阈值时,则采用现有技术中的写操作的流程。当待接收数据的大小不超过预设的接收数据大小阈值时,则认为这种情况符合策略的要求,可以采用本申请的实施例中的接入装置205直接回复xfer-rdy报文给服务器201的做法。第二种策略是,接入装置205根据驱动模块206预留的接收空间的剩余量确定一个预留空间大小阈值。当接入装置205接收到写操作请求时,判断此时驱动模块206预留的接收空间的剩余量是否在预留空间大小阈值之上。当此时驱动模块206预留的接收空间的剩余量超过预留空间大小阈值时,说明剩余的接收空间资源充足,可以认为符合策略,接入装置205可以直接回复xfer-rdy报文给服务器201;若此时驱动模块206预留的接收空间的剩余量在小于等于预留空间大小阈值时,说明驱动模块206预留的接收空间资源即将用尽,则不符合策略的要求,而应采用现有技术中的写操作流程。

s404:当服务器201接收到xfer-rdy报文后,开始向接入装置205以报文的形式发送数据。其中,该数据中携带启动器交换id和应答器交换id。

s405:接入装置205接收到服务器201发送的报文后,对该报文进行解析,得到该数据报文中所携带的启动器交换id和应答器交换id,并在io表项中查找该启动器交换id和应答器交换id所对应的接收空间的页面信息,并根据该页面信息将接收到的数据发送到io表项所记录的驱动模块206预留的接收空间中。

接入装置205将数据发送给驱动模块206所预留的接收空间可以采用多种方式来实现。例如,可以采用直接内存存取(英文全称:directmemoryaccess,简称:dma)的形式上传数据。dma允许不同速度的硬件装置之间进行沟通,而不需要依赖于处理器的大量中断负载。采用这种做法,可以减少对处理器资源的消耗,提高系统的整理效率。

s406:当接入装置205接收全部写数据后,合并发送写操作请求以及完成消息给驱动模块206。其中,完成消息里包含驱动模块206用以接收数据所使用的接收空间的页面信息,用以进行驱动模块206所使用的存储控制器内存的接收空间的维护和释放。

s407:当驱动模块206接收接入装置205所发送的写操作请求以及完成消息后,将写操作请求发送给驱动模块缓存模块207。

s408:缓存模块207进行缓存空间分配。其中,所分配的存储空间可以采用散集列表(英文全称:scattergatherlist,简称:sgl)方式进行组织,其中,sgl是用sge所表示的页面信息的组合。当缓存空间分配成功后,给驱动模块206发送xfer-rdy报文,并携带所分配的缓存空间的页面信息。

s409:驱动模块206将接收到的数据发送至缓存模块207分配的缓存空间。当数据全部都发送完成后,驱动模块206根据步骤s406从完成消息所得到的接收数据所使用的页面信息,将接收数据所占用的接收空间进行资源释放,并将释放的接收空间的页面信息发送给接入装置205,从而使得这部分接收空间可以再度被使用,而接入装置205所统计的剩余接收空间大小的信息也将被刷新,并使得接入装置205接收到新的写操作请求时,根据刷新后的剩余接收空间大小信息判断是否满足预设的策略。

s410:驱动模块206将数据全部发送给缓存模块207后,将完成消息发送给缓存模块207。

s411:缓存模块207接收数据后,将所接收的数据发送给存储介质208,并下发响应报文(rsp报文)给驱动模块206。

s412:驱动模块206接收到缓存模块207所发送的响应报文后,发送响应报文给接入装置205。

s413:接入装置205接收到响应报文后,发送响应报文给服务器201,通知服务器201写操作请求已经完成。

参阅图5所示,本申请的另一个实施例的流程如下:

s501:当服务器201(以服务器201为例,下同)与存储系统210中的存储控制器209建立连接后,驱动模块206向缓存模块207发出请求,使得缓存模块207在其所对应的存储控制器的内存中申请一定规格的缓存空间,用以当接入装置205直接回复xfer-rdy报文后的数据的接收。其中,缓存模块207首次申请的缓存空间的大小为预设的值,在此之后缓存模块207再次申请缓存空间时,可以根据缓存空间的使用情况对其大小进行调整。

s502:缓存模块207申请缓存空间预留成功后,通知驱动模块206,并携带缓存空间的页面信息。其中,缓存空间的页面信息可以用gpa或者sge的形式生成。

在本申请一种可能的实现方式中,为了防止缓存模块预留缓存空间失败而接入装置205没有得知的情况发生,在发送给驱动模块206的页面信息中包含了快写标识,并在之后的操作中发送给接入装置205。该快写标识用于判断缓存模块207是否成功地预留缓存空间。当该快写标识的值被置为有效时,说明缓存模块207预留缓存空间成功。

s503:驱动模块206将缓存模块207预留的缓存空间的页面信息发送给接入装置205。当步骤s502中,缓存模块207向驱动206所发送的页面信息中携带快写标识时,驱动模块206向接收芯片205所发送的页面信息中也将携带快写标识。

s504:服务器201发送写操作请求给接入装置205,该写操作请求中携带启动器交换id。

s505:接入装置205接收到服务器201发送的写操作请求后,识别该写操作请求所对应的接入装置205待接收数据的大小,并根据预设的策略决定是否直接回复xfer-rdy报文给服务器201。当写操作请求所包含的信息满足预设的策略时,接入装置206直接回复xfer-rdy报文给服务器201,通知服务器201存储系统210已经做好接收数据的准备。当驱动模块206在步骤s503中向接入装置205发送的页面信息包含了快写标识时,还需要判断该快写标识的值为有效时,才表明缓存模块207预留缓存空间成功,此时接入装置205才可以选择直接回复xfer-rdy报文给服务器201。同时,接入装置205根据写操作请求所携带的启动器交换id生成应答器交换id(英文全称:responderexchangeidentifier,简称:rx_id),并建立该应答器交换id与启动器交换id的对应关系。当接入装置205决定采用直接回复xfer-rdy报文给服务器201时,将会根据写操作请求所包含的待接收数据的大小分配缓存空间,并建立io表项,将启动器交换id、应答器交换id以及用于接收数据的缓存空间的页面信息放入所创建的io表项中,并建立启动器交换id、应答器交换id以及用于接收数据的缓存空间的页面信息三者的对应关系。当接入装置206回复xfer-rdy报文时,该报文中携带相应的启动器交换id以及应答器交换id。

本申请的实施例可以采用多种预设策略或者预设策略的组合决定是否由接入装置205直接回复xfer-rdy报文给服务器201。在一种可能的实施方式中,第一种策略可以为,接入装置205根据驱动模块206所发送的页面信息,得到缓存模块206所预留的缓存空间的大小,从而预设一个接收数据大小阈值,其中,该预设的接收数据大小阈值是小于缓存模块206所预留的缓存空间大小的某个数值。当接收到服务器201发送的写操作请求时,根据该写操作请求中所包含的信息确定接入装置205待接收数据的大小,并与预设的接收数据大小阈值进行比较。当待接收数据的大小大于预设的接收数据大小阈值时,则采用现有技术中的写操作的流程。当待接收的数据的大小不超过预设的接收数据大小阈值时,则认为这种情况符合策略的要求,可以采用本申请的实施例中的接入装置205直接回复xfer-rdy报文给服务器201的做法。第二种策略是,接入装置205根据缓存模块206预留的缓存空间的剩余量确定一个预留空间大小阈值。当接入装置205接收到写操作请求时,判断此时驱动模块206预留的接收空间的剩余量是否在预留空间大小阈值之上。当此时缓存模块206预留的缓存空间的剩余量超过预留空间大小阈值时,说明剩余的缓存空间资源充足,可以认为符合策略,接入装置205可以直接回复xfer-rdy报文给服务器201;若此时缓存模块206预留的缓存空间的剩余量在小于等于预留空间大小阈值时,说明缓存模块206预留的缓存空间资源即将用尽,则不符合策略的要求,而应采用现有技术中的写操作流程。

s506:接入装置205将写操作请求发送给驱动模块206。其中,当接入装置采用直接回复xfer-rdy报文的做法时,将会在发送给驱动模块206的写操作请求中附带相关信息,告知驱动模块206将执行本申请的实施例所提供的方法。

在一种可能的实施方式中,由于即将进行的数据传输将会消耗缓存模块207所预留的缓存空间,因此当驱动模块206接收到接入装置205所发送的写操作请求后,可以重复执行本实施例的步骤s501、s502和s503,即驱动模块206向缓存模块207发出请求,使得缓存模块207在存储控制器209的内存中申请缓存空间,新分配的缓存空间用于补充剩余的缓存空间资源。其中,缓存模块207申请缓存空间时,可以根据上次的使用情况调整所申请的缓存空间的大小。该处理使得接收数据和获取缓存空间可以并行操作,以消除写操作中分配页面的时间。

s507:服务器201收到xfer-rdy报文后,开始向接入装置205以报文的形式发送数据。其中,该数据中携带启动器交换id和应答器交换id。

s508:接入装置205收到数据报文后,对该报文进行解析,得到该数据报文中所携带的启动器交换id和应答器交换id,并在io表项中查找该启动器交换id和应答器交换id所对应的缓存空间的页面信息,并将接收到的数据发送到io表项所记录的缓存模块207所预留的缓存空间中。其中,接入装置205向缓存模块207发送数据可以采用dma的方式进行。

s509:当接入装置205接收完全部数据后,发送完成消息给驱动模块206,其中,完成消息携带接收数据所使用的缓存空间的页面信息。

s510:驱动模块206将所使用的缓存空间的页面信息发送给缓存模块207。当缓存空间的页面信息在步骤s502中以sge的形式生成时,驱动模块206将sge形式的页面信息组合为sgl形式发给缓存模块207。

s511:缓存模块207接收到数据后,将该数据发送给存储介质208,并释放接收该数据所使用的缓存空间。这部分空间可以被缓存模块207重新申请为缓存空间,从而再次被用来接收数据。同时,缓存模块207发送响应报文给驱动模块206。

s512:驱动模块206接收到缓存模块207所发送的相应报文后,发送响应报文给接入装置205。

s513:接入装置205接收到响应报文后,发送响应报文给服务器201,通知服务器201写操作请求已经完成。

需要指出的是,上述s501至s513的编号仅用来指代,并不意味着在本申请的实施例中,上述步骤需要按照特定顺序来执行。例如,在执行完步骤s511时,可以重新执行步骤s506,从而使得回收的缓存空间可以再次被用于接收数据。

基于上述技术方案,参阅图6所示,本申请的实施例提供一种接入装置600,该接入装置600用于在存储系统中进行数据传输,该接入装置600用于包括接收模块610、发送模块620以及判断模块630,其中:

接收模块610,用于接收来自存储控制器的预留的接收空间的信息,其中,存储控制器包括驱动模块和缓存模块;接收模块610还用于接收来自服务器的写操作请求,其中,该写操作请求用于给为待写入存储介质的数据预留存储空间;

发送模块620,用于当写操作请求符合发送策略时,发送完成准备报文给服务器,其中,发送策略包括,该写操作请求对应的待写入存储介质的数据大小不超过该接入装置600所记录的存储控制器预留的存储空间的大小,该完成准备报文用于通知服务器,存储系统已经准备好接收数据;

判断模块630,用于判断快写标识的值是否为有效,其中,快写标识位于存储控制器预留的存储空间的页面信息中,当存储控制器预留存储空间成功时,该快写标识的值被置为有效。

本申请的实施例所提供的接入装置600,其功能的实现可以参考如图4和图5所示的处理写操作请求的方法。

基于上述技术方案,参阅图7所示,本申请的实施例提供了一种存储系统700,该存储系统700包括:

接入装置710,用于接收来自存储控制器720预留的存储空间的页面信息以及接收来自服务器发送的写操作请求,其中,写操作请求用于为待写入存储介质的数据预留存储空间;当写操作请求符合发送策略时,发送完成准备报文给服务器,其中,发送策略包括,写操作请求对应的待写入存储介质的数据大小不超过接入装置710记录的存储控制器720预留的存储空间的大小,完成准备报文用于通知所述服务器,存储系统700已经准备好接收数据。

存储控制器720,包括驱动模块721和缓存模块722,用于在内存中预留存储空间,并将存储空间的页面信息发送给接入装置710。

存储介质730,主要由磁盘阵列组成,用来提供大容量的空间,以存储待写入存储介质的数据。

本申请的实施例所提供的存储系统700,其功能的实现可以参考如图3和图4所示的处理写操作请求的方法。

图8为依据本申请的实施例的接入装置800的结构示意图。本实施例中的接入装置800可以是上述各实施例中的存储系统的其中一种具体实现方式。

如图8所示,接入装置800包括处理器801,处理器801与存储器805连接。处理器801可以为现场可编程门阵列(英文全称:fieldprogrammablegatearray,缩写:fpga),或数字信号处理器(英文全称:digitalsignalprocessor,缩写:dsp)等计算逻辑或以上任意计算逻辑的组合。处理器701也可以为单核处理器或多核处理器。

存储器805可以是ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器或者本领域熟知的任何其它形式的存储介质,存储器可以用于存储程序指令,该程序指令被处理器801执行时,处理器801执行上述实施例中的所述的方法。

连接线809用于在通信装置的各部件之间传递信息,连接线809可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。连接809还连接有网络接口704。

网络接口804使用例如但不限于电缆或电绞线一类的连接装置,来实现与其他设备或网络811之间的通信,网络接口804还可以通过无线的形式与网络811互连。

本申请实施例的一些特征可以由处理器801执行存储器805中的程序指令或者软件代码来完成/支持。存储器805上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图6所示的接收模块、判断模块和发送模块。

在本申请的一个实施例中,当存储器805加载程序指令后,处理器801执行存储器中的上述功能/逻辑模块相关的事务。

此外,图8仅仅是一个接入装置800的例子,接入装置800可能包含相比于图8展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图8中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。例如,存储器和处理器可以在一个模块中实现,存储器中的指令可以是预先写入存储器的,也可以是后续处理器在执行的过程中加载的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1