数据存储方法及装置的制造方法
【专利摘要】本发明实施例提供一种数据存储方法及装置,该方法包括:目标端接收发起端发送的第一SCSI写命令和待写入数据;目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;若目标端判断待写入数据的长度小于或者等于所述目标端的可用内存,则目标端将待写入数据存储至对应内存中;其中,目标端的内存被多个发起端所共享。上述过程中,多个发起端可以共享内存,目标端无需为每个发起端预留内存。从而提高内存利用率。
【专利说明】
数据存储方法及装置
技术领域
[0001 ]本发明实施例涉及数据存储技术,尤其涉及一种数据存储方法及装置。
【背景技术】
[0002]互联网小型计算机系统接口(InternetSmall Computer System Interface,简称iSCSI)技术,是一种在互联网协议(Internet Protocol,简称IP)网络上运行小型计算机系统接口(Small Computer System Interface,简称SCSI)协议的存储技术。发起端和目标端可以利用iSCSI来交换SCSI命令,使目标端模拟发起端的本地储存装置。因此iSCSI技术具有易于安装、成本低廉、不受地理限制、良好的互操作性、治理方便等优势。
[0003]目前,发起端在目标端中进行数据存储的过程为:在发起端与目标端建立连接的过程中,发起端与目标端进行协商,以使目标端向发起端预留内存,发起端将待写入的数据直接可写入预留内存中。
[0004]然而,一个目标端可能对应多个发起端,若目标端为每个发起端都预留对应的内存,当前目标端的内存很难满足,实际上并不是所有的发起端都同时要在同一个目标端中存储数据,因此,现有技术将造成内存利用率低的问题。
【发明内容】
[0005]本发明实施例提供一种数据存储方法及装置,从而提高内存利用率。
[0006]第一方面,本发明实施例提供一种数据存储方法,包括:
[0007]目标端接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据;
[0008]目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;
[0009]若目标端判断待写入数据的长度小于或者等于目标端的可用内存,则目标端将待写入数据存储至对应内存中;
[0010]其中,目标端的内存被多个发起端所共享。
[0011]考虑到目标端的总并发数相对固定,并不是所有的发起端都同时要在同一个目标端中存储数据,所以,目标端可以不向发起端预留内存,而是目标端在数据写入过程中直接确定可用内存,当待写入数据的长度小于或者等于目标端的可用内存,则可以将待写入数据存储至对应内存中,上述过程中,多个发起端可以共享内存,目标端无需为每个发起端预留内存。从而提尚内存利用率。
[0012]可选地,目标端接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据之前,还包括:
[0013]在目标端与发起端建立连接过程中,目标端接收发起端发送的协商请求消息,协商请求消息用于发起端请求是否可以发送第一 SCSI写命令和待写入数据;
[0014]目标端判断可用内存是否大于预设阈值,若目标端确定可用内存大于所述预设阈值,则目标端向发起端发送第一协商响应消息,第一协商响应消息用于确定发起端可以发送第一 SCSI写命令和待写入数据;
[0015]则执行目标端接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据步骤。
[0016]—方面,上述协商过程是在目标端与发起端建立连接过程中进行,而不是在数据写入过程中进行,从而提高数据写入效率,另一方面,当目标端确定可用内存是否大于预设阈值时,则目标端接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据;判断待写入数据的长度是否小于或者等于目标端的可用内存;若目标端判断待写入数据的长度小于或者等于目标端的可用内存,则目标端将待写入数据存储至对应内存中。因此,发起端无需向目标端发送缓存请求消息,目标端也无需向发起端发送缓存响应,从而降低了传输时延和协议开销。
[0017]可选地,还包括:若目标端确定所述可用内存小于或者等于所述预设阈值,则所述目标端向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据;
[0018]目标端接收发起端发送的第二小型计算机系统接口SCSI写命令;目标端根据所述第二 SCSI写命令向所述发起端分配内存;
[0019]目标端向发起端发送响应消息,所述响应消息用于指示所述目标端已向所述发起端分配内存;
[0020]目标端接收所述待写入数据,并将所述待写入数据存储至对应内存中。
[0021 ]通过该方法提高数据存储策略的灵活性。
[0022]可选地,还包括:若目标端判断所述待写入数据的长度大于所述目标端的可用内存,则所述目标端丢弃所述待写入数据,等待释放的内存;
[0023]目标端判断所述待写入数据的长度是否小于或者等于所述目标端经过内存释放后的可用内存;
[0024]若目标端判断所述待写入数据的长度小于或者等于所述内存释放后的可用内存,则所述目标端向所述发起端发送重发请求消息,所述重发请求消息用于指示所述发起端重新发送所述待写入数据。从而提高数据存储策略的灵活性。
[0025]下面将介绍发明实施例提供的发起端所执行的数据存储方法,其中该部分与上述方法对应,对应内容技术效果相同,在此不再赘述。
[0026]第二方面,本发明实施例提供一种数据存储方法,包括:
[0027]发起端向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据,以使目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;并且确定是否将待写入数据存储至对应内存中;
[0028]其中,目标端的内存被多个发起端所共享。
[0029]可选地,发起端向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据之前,还包括:
[0030]在目标端与发起端建立连接过程中,发起端向目标端发送协商请求消息,协商请求消息用于发起端请求是否可以发送第一 SCSI写命令和待写入数据,以使目标端判断可用内存是否大于预设阈值;
[0031]若可用内存大于所述预设阈值,则发起端接收目标端发送的第一协商响应消息,第一协商响应消息用于确定发起端可以发送第一 SCSI写命令和待写入数据。
[0032]可选地,还包括:若可用内存小于或者等于预设阈值,则发起端接收所述目标端发送的第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一SCSI写命令和所述待写入数据;
[0033]发起端向所述目标端发送第二小型计算机系统接口SCSI写命令,以使所述目标端根据所述第二 SCSI写命令向所述发起端分配内存;
[0034]发起端接收所述目标端发送的响应消息,所述响应消息用于指示所述目标端已向所述发起端分配内存;
[0035]发起端向所述目标端发送所述待写入数据,以使所述目标端将所述待写入数据存储至对应内存中。
[0036]可选地,还包括:若所述待写入数据的长度小于或者等于内存释放后的可用内存,则所述发起端接收所述目标端发送的重发请求消息;
[0037]所述发起端确定重发所述待写入数据的次数,若所述次数大于第一预设值,则执行所述发起端向所述目标端发送第二小型计算机系统接口 SCSI写命令步骤;
[0038]否则,则执行所述发起端向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据步骤。
[0039]下面将介绍发明实施例提供一种数据存储装置,其中装置部分与上述目标端方法对应,对应内容技术效果相同,在此不再赘述。
[0040]第三方面,本发明实施例提供一种数据存储装置,包括:接收模块、判断模块和存储丰吴块;
[0041]所述接收模块,用于接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据;
[0042]所述判断模块,用于判断所述待写入数据的长度是否小于或者等于所述装置的可用内存;
[0043]若所述判断模块判断所述待写入数据的长度小于或者等于所述装置的可用内存,则所述存储模块将所述待写入数据存储至对应内存中;
[0044]其中,所述装置的内存被多个发起端所共享。
[0045]下面将介绍发明实施例提供一种数据存储装置,其中装置部分与上述发起端方法对应,对应内容技术效果相同,在此不再赘述。
[0046]第四方面,本发明实施例提供一种数据存储装置,包括:
[0047]发送模块,用于向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中;
[0048]其中,所述目标端的内存被多个数据存储装置所共享。
[0049]下面将介绍发明实施例提供一种数据存储装置,其中装置部分与上述目标端方法对应,对应内容技术效果相同,在此不再赘述。
[0050]第五方面,本发明实施例提供一种数据存储装置,包括:接收器、处理器和存储器;
[0051]所述接收器,用于接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据;
[0052]所述处理器,用于判断所述待写入数据的长度是否小于或者等于所述装置的可用内存;
[0053]若所述处理器判断所述待写入数据的长度小于或者等于所述装置的可用内存,则所述存储器将所述待写入数据存储至对应内存中;
[0054]其中,所述装置的内存被多个发起端所共享。
[0055]下面将介绍发明实施例提供一种数据存储装置,其中装置部分与上述发起端方法对应,对应内容技术效果相同,在此不再赘述。
[0056]第六方面,本发明实施例提供一种数据存储装置,包括:
[0057]发送器,用于向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中;
[0058]其中,所述目标端的内存被多个数据存储装置所共享。
[0059]本发明实施例提供一种数据存储方法及装置,考虑到目标端的总并发数相对固定,并不是所有的发起端都同时要在同一个目标端中存储数据,所以,目标端可以不向发起端预留内存,而是目标端在数据写入过程中直接确定可用内存,当待写入数据的长度小于或者等于目标端的可用内存,则可以将待写入数据存储至对应内存中,上述过程中,多个发起端可以共享内存,目标端无需为每个发起端预留内存。从而提高内存利用率。
【附图说明】
[0060]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0061]图1为本发明一实施例提供基于iSCSI协议的数据存储系统的示意图;
[0062]图2为本发明一实施例提供的数据存储方法的交互流程图;
[0063]图3为本发明另一实施例提供提供的数据存储方法的交互流程图;
[0064]图4为本发明再一实施例提供提供的数据存储方法的交互流程图;
[0065]图5为本发明又一实施例提供提供的数据存储方法的交互流程图;
[0066]图6为本发明一实施例提供的一种数据存储装置的结构示意图;
[0067]图7为本发明另一实施例提供的一种数据存储装置的结构示意图;
[0068]图8为本发明再一实施例提供的一种数据存储装置的结构示意图;
[0069]图9为本发明又一实施例提供的一种数据存储装置的结构示意图。
【具体实施方式】
[0070]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0071 ]现有技术中在发起端与目标端建立连接的过程中,发起端与目标端进行协商,以使目标端向发起端预留内存,发起端将待写入的数据直接可写入预留内存中,比如:若目标端与128个发起端存在连接关系,若目标端为每一个发起端预留内存的大小为16MB,则目标端总共要预留2GB的内存,这种情况下,目标端很难满足2GB的内存需求,实际上并不是所有的发起端都同时要在同一个目标端中存储数据,因此,现有技术将造成内存利用率低的问题。为了解决现有技术中内存利用率低的问题,本发明实施例提供一种数据存储方法、发起端和目标端,具体地,图1为本发明一实施例提供基于iSCSI协议的数据存储系统的示意图,如图1所示,该数据存储系统包括:多个发起端11、至少一个目标端12,发起端11和目标端12之间可以通过交换机13连接,目标端12中的数据还可以通过远程连接网络备份至备份端14上,其中,基于iSCSI协议的数据存储系统中,各个端之间的数据传输都基于传输控制协议/因特网互联协议(Transmiss1n Control Pro toco I/Internet Protocol,简称TCP/IP)进行的,比如:发起端向目标端发送的SCSI写命令和待写入数据被封装至TCP/IP数据包中,以实现SCSI写命令和待写入数据的传输,同样地,目标端向发起端发送的数据可以封装至TCP/IP数据包中。本发明实施例提供一种数据存储方法,应用于如下场景:发起端11预将数据存储至目标端12中。
[0072]实施例一
[0073]图2为本发明一实施例提供的数据存储方法的交互流程图,如图2所示,该方法包括如下流程:
[0074]步骤S201:目标端接收发起端发送的第一SCSI写命令和待写入数据;
[0075]步骤S202:目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;
[0076]步骤S203:若目标端判断待写入数据的长度小于或者等于目标端的可用内存,则目标端将待写入数据存储至对应内存中。
[0077]具体地,所述目标端的内存被多个发起端所共享。目标端接收到发起端发起的待写入数据后,目标端解析待写入数据的包头,并获取所述报头中关于所述待写入数据的长度字段,目标端确定当前可用内存,并判断待写入数据的长度是否小于或者等于目标端的可用内存;若是,则目标端将待写入数据存储至对应内存中。
[0078]本发明实施例中,考虑到目标端的总并发数相对固定,并不是所有的发起端都同时要在同一个目标端中存储数据,所以,目标端可以不向发起端预留内存,而是目标端在数据写入过程中直接确定可用内存,当待写入数据的长度小于或者等于目标端的可用内存,则可以将待写入数据存储至对应内存中,上述过程中,多个发起端可以共享内存,目标端无需为每个发起端预留内存。从而提尚内存利用率。
[0079]实施例二
[0080]基于实施例一的基础,进一步地,在目标端接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据之前还包括:发起端和目标端之间的协商过程。
[0081]图3为本发明另一实施例提供提供的数据存储方法的交互流程图,如图3所示,该方法包括如下流程:
[0082]步骤S301:在目标端与发起端建立连接过程中,目标端接收发起端发送的协商请求消息;
[0083]其中,协商请求消息用于发起端请求是否可以发送第一SCSI写命令和所述待写入数据,即发起端向目标端发送协商请求消息的目的是请求其是否可以执行步骤S303至步骤S305;
[0084]步骤S302:目标端判断可用内存是否大于预设阈值,若目标端确定可用内存大于所述预设阈值,则目标端向发起端发送第一协商响应消息;
[0085]其中,该预设阈值是根据实际情况而设置的,所述第一协商响应消息用于确定所述发起端可以发送所述第一SCSI写命令和所述待写入数据;即目标端向发起端发送第一协商响应消息的目的是确定发起端可以执行步骤S303至步骤S305;
[0086]步骤S303:目标端接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据;
[0087]步骤S304:目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;
[0088]步骤S305:若目标端判断待写入数据的长度小于或者等于目标端的可用内存,则目标端将待写入数据存储至对应内存中。
[0089]其中,步骤S303至步骤S305与步骤S201至步骤S203相同,在此不再赘述。
[0090]本发明实施例中,一方面,上述协商过程是在目标端与发起端建立连接过程中进行,而不是在数据写入过程中进行,从而提高数据写入效率,另一方面,当目标端确定可用内存是否大于预设阈值时,则目标端可以执行步骤S303至步骤S305,因此,发起端无需向目标端发送缓存请求消息,目标端也无需向发起端发送缓存响应,从而降低了传输时延和协议开销。
[0091 ] 实施例三
[0092]基于实施例一的基础,进一步地,在目标端接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据之前还包括:发起端和目标端之间的协商过程,其中实施例三与实施例二为两种并列方案,具体如下:
[0093]图4为本发明再一实施例提供提供的数据存储方法的交互流程图,如图4所示,该方法包括如下流程:
[0094]步骤S401:在目标端与发起端建立连接过程中,目标端接收发起端发送的协商请求消息;
[0095]其中,协商请求消息用于发起端请求是否可以发送第一SCSI写命令和所述待写入数据,即发起端向目标端发送协商请求消息的目的是请求其是否可以执行步骤S201至步骤S203;
[0096]步骤S402:若目标端确定可用内存小于或者等于所述预设阈值,则目标端向发起端发送第二协商响应消息;
[0097]其中,若所述目标端确定所述可用内存小于或者等于所述预设阈值,则所述目标端向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据;
[0098]步骤S403:目标端接收发起端发送的第二SCSI写命令;
[0099]步骤S404:目标端根据第二SCSI写命令向发起端分配内存;
[0100]步骤S405:目标端向发起端发送响应消息;
[0101]其中,响应消息用于指示目标端已向发起端分配内存;
[0102]步骤S406:目标端接收待写入数据,并将待写入数据存储至对应内存中。
[0103]本发明实施例中,一方面,上述协商过程是在目标端与发起端建立连接过程中进行,而不是在数据写入过程中进行,从而提高数据写入效率,另一方面,当目标端确定可用内存小于或者等于预设阈值时,则发起端可以执行步骤S403至步骤S406,从而提高数据存储策略的灵活性。
[0104]实施例四
[0105]基于实施例一至实施例三的基础,进一步地,下面将接收若目标端判断所述待写入数据的长度大于目标端的可用内存的情况,具体如下:
[0106]图5为本发明又一实施例提供提供的数据存储方法的交互流程图,如图5所示,该方法包括如下流程:
[0107]步骤S501:目标端接收发起端发送的第一SCSI写命令和待写入数据;
[0108]步骤S502:目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;
[0109]其中,步骤S501与步骤S201相同,在此不再赘述,步骤S502与步骤S202相同,在此不再赘述。
[0110]步骤S503:若目标端判断待写入数据的长度大于目标端的可用内存,则目标端丢弃待写入数据,等待释放的内存;
[0111]步骤S504:目标端判断待写入数据的长度是否小于或者等于目标端经过内存释放后的可用内存;
[0112]步骤S505:若目标端判断待写入数据的长度小于或者等于内存释放后的可用内存,则目标端向发起端发送重发请求消息;
[0113]所述重发请求消息用于指示所述发起端重新发送所述待写入数据。
[0114]步骤S506:发起端确定重发待写入数据的次数,若次数大于第一预设值,则执行发起端向目标端发送第二小型计算机系统接口 SCSI写命令步骤;
[0115]步骤S507:否则,则继续执行目标端接收发起端发送的第一SCSI写命令和待写入数据步骤。
[0116]结合步骤S503至步骤S507进行说明,若目标端判断待写入数据的长度大于目标端的可用内存,则表示目标端当前的可用内存不够用,则目标端丢弃待写入数据,等待释放的内存;目标端继续判断待写入数据的长度是否小于或者等于目标端经过内存释放后的可用内存;若目标端判断待写入数据的长度小于或者等于内存释放后的可用内存,则目标端向发起端发送重发请求消息;发起端确定重发待写入数据的次数,若次数大于第一预设值,即重发次数太多,因此发起端采用每次发送数据前,先获知目标端的内存使用情况,即发起端向目标端发送第二小型计算机系统接口 SCSI写命令,目标端向发起端发送响应消息;目标端接收待写入数据,并将待写入数据存储至对应内存中。当次数小于或者等于第一预设值时,则继续执行步骤S501,直到数据存储成功为止。
[0117]本发明实施例中,若目标端判断所述待写入数据的长度大于目标端的可用内存,则目标端接收发起端发送的第一SCSI写命令和待写入数据;目标端判断待写入数据的长度是否小于或者等于目标端的可用内存;若目标端判断待写入数据的长度大于目标端的可用内存,则目标端丢弃待写入数据,等待释放的内存;若目标端判断待写入数据的长度小于或者等于内存释放后的可用内存,则目标端向发起端发送重发请求消息;发起端确定重发待写入数据的次数,若次数大于第一预设值,则执行发起端向目标端发送第二小型计算机系统接口 SCSI写命令步骤;否则,则继续执行目标端接收发起端发送的第一SCSI写命令和待写入数据步骤,从而提高数据存储策略的灵活性。
[0118]实施例五
[0119]图6为本发明一实施例提供的一种数据存储装置的结构示意图,该装置为目标端,如图6所示,该装置包括:接收模块61、判断模块62和存储模块63;
[0120]所述接收模块61,用于接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据;
[0121]所述判断模块62,用于判断所述待写入数据的长度是否小于或者等于所述装置的可用内存;
[0122]若所述判断模块62判断所述待写入数据的长度小于或者等于所述装置的可用内存,则所述存储模块63将所述待写入数据存储至对应内存中;
[0123]其中,所述装置的内存被多个发起端所共享。
[0124]可选地,所述装置还包括:发送模块64;在所述装置与所述发起端建立连接过程中,所述接收模块61,还用于接收所述发起端发送的协商请求消息,所述协商请求消息用于所述发起端请求是否可以发送所述第一 SCSI写命令和所述待写入数据;
[0125]所述判断模块62,还用于判断所述可用内存是否大于预设阈值,若所述判断模块62确定所述可用内存大于所述预设阈值,则所述发送模块64向所述发起端发送第一协商响应消息,所述第一协商响应消息用于确定所述发起端可以发送所述第一SCSI写命令和所述待写入数据。
[0126]可选地,还包括:分配模块65.若所述判断模块62确定所述可用内存小于或者等于所述预设阈值,则所述发送模块64向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据;
[0127]所述接收模块61,还用于接收所述发起端发送的第二小型计算机系统接口SCSI写命令;
[0128]所述分配模块65,用于根据所述第二SCSI写命令向所述发起端分配内存;
[0129]所述发送模块64,用于向所述发起端发送响应消息,所述响应消息用于指示所述装置已向所述发起端分配内存;
[0130]所述接收模块61,用于接收所述待写入数据,并将所述待写入数据存储至对应内存中。
[0131]可选地,还包括:丢弃模块66;若所述判断模块62判断所述待写入数据的长度大于所述装置的可用内存,则所述丢弃模块66,用于丢弃所述待写入数据,等待释放的内存;
[0132]所述判断模块62,还用于判断所述待写入数据的长度是否小于或者等于所述装置经过内存释放后的可用内存;
[0133]若所述判断模块62判断所述待写入数据的长度小于或者等于所述内存释放后的可用内存,则所述发送模块64向所述发起端发送重发请求消息,所述重发请求消息用于指示所述发起端重新发送所述待写入数据。
[0134]本发明实施例所提供的数据存储装置,该部分与上述目标端所执行的数据存储方法对应,对应内容技术效果相同,在此不再赘述。
[0135]实施例六
[0136]图7为本发明另一实施例提供的一种数据存储装置的结构示意图,该装置为发起端,如图7所示,该装置包括:发送模块71,用于向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中;其中,所述目标端的内存被多个数据存储装置所共享。
[0137]可选地,还包括:接收模块72;在所述目标端与所述装置建立连接过程中,所述发送模块71,还用于向所述目标端发送协商请求消息,所述协商请求消息用于所述装置请求是否可以发送所述第一SCSI写命令和所述待写入数据,以使所述目标端判断所述可用内存是否大于预设阈值;
[0138]若所述可用内存大于所述预设阈值,则所述接收模块72,用于接收所述目标端发送的第一协商响应消息,所述第一协商响应消息用于确定所述装置可以发送所述第一SCSI写命令和所述待写入数据。
[0139]可选地,还包括:若所述可用内存小于或者等于所述预设阈值,则所述接收模块72,还用于接收所述目标端发送的第二协商响应消息,所述第二协商响应消息用于确定所述装置不可以发送所述第一 SCSI写命令和所述待写入数据;
[0140]所述发送模块71,还用于向所述目标端发送第二小型计算机系统接口SCSI写命令,以使所述目标端根据所述第二SCSI写命令向所述装置分配内存;
[0141 ]所述接收模块72,还用于接收所述目标端发送的响应消息,所述响应消息用于指示所述目标端已向所述装置分配内存;
[0142]所述发送模块71,还用于向所述目标端发送所述待写入数据,以使所述目标端将所述待写入数据存储至对应内存中。
[0143]可选地,还包括:确定模块73;若所述待写入数据的长度小于或者等于内存释放后的可用内存,则所述接收模块72,还用于接收所述目标端发送的重发请求消息;
[0144]所述确定模块73,用于确定重发所述待写入数据的次数,若所述次数大于第一预设值,则所述发送模块71向所述目标端发送第二小型计算机系统接口 SCSI写命令;
[0145]否则,则所述发送模块71向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据。
[0146]本发明实施例所提供的数据存储装置,该部分与上述发起端所执行的数据存储方法对应,对应内容技术效果相同,在此不再赘述。
[0147]实施例七
[0148]图8为本发明再一实施例提供的一种数据存储装置的结构示意图,该装置为目标端,如图8所示,该装置包括:接收器81、处理器82和存储器83;
[0149]所述接收器81,用于接收发起端发送的第一小型计算机系统接口SCSI写命令和待写入数据;
[0150]所述处理器82,用于判断所述待写入数据的长度是否小于或者等于所述装置的可用内存;
[0151]若所述处理器82判断所述待写入数据的长度小于或者等于所述装置的可用内存,则所述存储器83将所述待写入数据存储至对应内存中;
[0152 ]其中,所述装置的内存被多个发起端所共享。
[0153]可选地,还包括:发送器84;在所述装置与所述发起端建立连接过程中,所述接收器81,还用于接收所述发起端发送的协商请求消息,所述协商请求消息用于所述发起端请求是否可以发送所述第一 SCSI写命令和所述待写入数据;
[0154]所述处理器82,还用于判断所述可用内存是否大于预设阈值,若所述处理器82确定所述可用内存大于所述预设阈值,则所述发送器84向所述发起端发送第一协商响应消息,所述第一协商响应消息用于确定所述发起端可以发送所述第一 SCSI写命令和所述待写入数据。
[0155]可选地,若所述处理器82确定所述可用内存小于或者等于所述预设阈值,则所述发送器84向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据;
[0156]所述接收器81,还用于接收所述发起端发送的第二小型计算机系统接口SCSI写命令;
[0157]所述处理器82,还用于根据所述第二SCSI写命令向所述发起端分配内存;
[0158]所述发送器84,用于向所述发起端发送响应消息,所述响应消息用于指示所述装置已向所述发起端分配内存;
[0159]所述接收器81,用于接收所述待写入数据,并将所述待写入数据存储至对应内存中。
[0160]可选地,若所述处理器82判断所述待写入数据的长度大于所述装置的可用内存,则所述处理器82丢弃所述待写入数据,等待释放的内存;
[0161]所述处理器82,还用于判断所述待写入数据的长度是否小于或者等于所述装置经过内存释放后的可用内存;
[0162]若所述处理器82判断所述待写入数据的长度小于或者等于所述内存释放后的可用内存,则所述发送器84向所述发起端发送重发请求消息,所述重发请求消息用于指示所述发起端重新发送所述待写入数据。
[0163]本发明实施例所提供的数据存储装置,该部分与上述目标端所执行的数据存储方法对应,对应内容技术效果相同,在此不再赘述。
[0164]实施例八
[0165]图9为本发明又一实施例提供的一种数据存储装置的结构示意图,该装置为发起端,如图9所示,该装置包括:发送器91,用于向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中;
[0166]其中,所述目标端的内存被多个数据存储装置所共享。
[0167]可选地,还包括接收器92;在所述目标端与所述装置建立连接过程中,所述发送器91,还用于向所述目标端发送协商请求消息,所述协商请求消息用于所述装置请求是否可以发送所述第一SCSI写命令和所述待写入数据,以使所述目标端判断所述可用内存是否大于预设阈值;
[0168]若所述可用内存大于所述预设阈值,则所述接收器92,用于接收所述目标端发送的第一协商响应消息,所述第一协商响应消息用于确定所述装置可以发送所述第一 SCSI写命令和所述待写入数据。
[0169]可选地,还包括:若所述可用内存小于或者等于所述预设阈值,则所述接收器92,还用于接收所述目标端发送的第二协商响应消息,所述第二协商响应消息用于确定所述装置不可以发送所述第一 SCSI写命令和所述待写入数据;
[0170]所述发送器91,还用于向所述目标端发送第二小型计算机系统接口SCSI写命令,以使所述目标端根据所述第二 SCSI写命令向所述装置分配内存;
[0171]所述接收器92,还用于接收所述目标端发送的响应消息,所述响应消息用于指示所述目标端已向所述装置分配内存;
[0172]所述发送器91,还用于向所述目标端发送所述待写入数据,以使所述目标端将所述待写入数据存储至对应内存中。
[0173]可选地,还包括:处理器93,若所述待写入数据的长度小于或者等于内存释放后的可用内存,则所述接收器92,还用于接收所述目标端发送的重发请求消息;
[0174]所述处理器93,还用于确定重发所述待写入数据的次数,若所述次数大于第一预设值,则所述发送器91向所述目标端发送第二小型计算机系统接口 SCSI写命令;
[0175]否则,则所述发送器91向目标端发送第一小型计算机系统接口SCSI写命令和待写入数据。
[0176]本发明实施例所提供的数据存储装置,该部分与上述发起端所执行的数据存储方法对应,对应内容技术效果相同,在此不再赘述。
[0177]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0178]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【主权项】
1.一种数据存储方法,其特征在于,包括: 目标端接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据; 所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;若所述目标端判断所述待写入数据的长度小于或者等于所述目标端的可用内存,则所述目标端将所述待写入数据存储至对应内存中; 其中,所述目标端的内存被多个发起端所共享。2.根据权利要求1所述的方法,其特征在于,所述目标端接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据之前,还包括: 在所述目标端与所述发起端建立连接过程中,所述目标端接收所述发起端发送的协商请求消息,所述协商请求消息用于所述发起端请求是否可以发送所述第一 SCSI写命令和所述待写入数据; 所述目标端判断所述可用内存是否大于预设阈值,若所述目标端确定所述可用内存大于所述预设阈值,则所述目标端向所述发起端发送第一协商响应消息,所述第一协商响应消息用于确定所述发起端可以发送所述第一 SCSI写命令和所述待写入数据; 则执行所述目标端接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据步骤。3.根据权利要求2所述的方法,其特征在于,还包括: 若所述目标端确定所述可用内存小于或者等于所述预设阈值,则所述目标端向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据; 所述目标端接收所述发起端发送的第二小型计算机系统接口 SCSI写命令; 所述目标端根据所述第二 SCSI写命令向所述发起端分配内存; 所述目标端向所述发起端发送响应消息,所述响应消息用于指示所述目标端已向所述发起端分配内存; 所述目标端接收所述待写入数据,并将所述待写入数据存储至对应内存中。4.根据权利要求2或3所述的方法,其特征在于,还包括: 若所述目标端判断所述待写入数据的长度大于所述目标端的可用内存,则所述目标端丢弃所述待写入数据,等待释放的内存; 所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端经过内存释放后的可用内存; 若所述目标端判断所述待写入数据的长度小于或者等于所述内存释放后的可用内存,则所述目标端向所述发起端发送重发请求消息,所述重发请求消息用于指示所述发起端重新发送所述待写入数据。5.一种数据存储方法,其特征在于,包括: 发起端向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中; 其中,所述目标端的内存被多个发起端所共享。6.根据权利要求5所述的方法,其特征在于,所述发起端向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据之前,还包括: 在所述目标端与所述发起端建立连接过程中,所述发起端向所述目标端发送协商请求消息,所述协商请求消息用于所述发起端请求是否可以发送所述第一 SCSI写命令和所述待写入数据,以使所述目标端判断所述可用内存是否大于预设阈值; 若所述可用内存大于所述预设阈值,则所述发起端接收所述目标端发送的第一协商响应消息,所述第一协商响应消息用于确定所述发起端可以发送所述第一SCSI写命令和所述待写入数据。7.根据权利要求6所述的方法,其特征在于,还包括: 若所述可用内存小于或者等于所述预设阈值,则所述发起端接收所述目标端发送的第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一SCSI写命令和所述待写入数据; 所述发起端向所述目标端发送第二小型计算机系统接口 SCSI写命令,以使所述目标端根据所述第二 SCSI写命令向所述发起端分配内存; 所述发起端接收所述目标端发送的响应消息,所述响应消息用于指示所述目标端已向所述发起端分配内存; 所述发起端向所述目标端发送所述待写入数据,以使所述目标端将所述待写入数据存储至对应内存中。8.根据权利要求6或7所述的方法,其特征在于,还包括: 若所述待写入数据的长度小于或者等于内存释放后的可用内存,则所述发起端接收所述目标端发送的重发请求消息; 所述发起端确定重发所述待写入数据的次数,若所述次数大于第一预设值,则执行所述发起端向所述目标端发送第二小型计算机系统接口 SCSI写命令步骤; 否则,则执行所述发起端向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据步骤。9.一种数据存储装置,其特征在于,包括:接收模块、判断模块和存储模块; 所述接收模块,用于接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据; 所述判断模块,用于判断所述待写入数据的长度是否小于或者等于所述装置的可用内存; 若所述判断模块判断所述待写入数据的长度小于或者等于所述装置的可用内存,则所述存储模块将所述待写入数据存储至对应内存中; 其中,所述装置的内存被多个发起端所共享。10.根据权利要求9所述的装置,其特征在于,还包括:发送模块; 在所述装置与所述发起端建立连接过程中,所述接收模块,还用于接收所述发起端发送的协商请求消息,所述协商请求消息用于所述发起端请求是否可以发送所述第一 SCSI写命令和所述待写入数据; 所述判断模块,还用于判断所述可用内存是否大于预设阈值,若所述判断模块确定所述可用内存大于所述预设阈值,则所述发送模块向所述发起端发送第一协商响应消息,所述第一协商响应消息用于确定所述发起端可以发送所述第一 SCSI写命令和所述待写入数据。11.根据权利要求10所述的装置,其特征在于,还包括:分配模块; 若所述判断模块确定所述可用内存小于或者等于所述预设阈值,则所述发送模块向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据; 所述接收模块,还用于接收所述发起端发送的第二小型计算机系统接口 SCSI写命令; 所述分配模块,用于根据所述第二 SCSI写命令向所述发起端分配内存; 所述发送模块,用于向所述发起端发送响应消息,所述响应消息用于指示所述装置已向所述发起端分配内存; 所述接收模块,用于接收所述待写入数据,并将所述待写入数据存储至对应内存中。12.根据权利要求10或11所述的装置,其特征在于,还包括:丢弃模块; 若所述判断模块判断所述待写入数据的长度大于所述装置的可用内存,则所述丢弃模块,用于丢弃所述待写入数据,等待释放的内存; 所述判断模块,还用于判断所述待写入数据的长度是否小于或者等于所述装置经过内存释放后的可用内存; 若所述判断模块判断所述待写入数据的长度小于或者等于所述内存释放后的可用内存,则所述发送模块向所述发起端发送重发请求消息,所述重发请求消息用于指示所述发起端重新发送所述待写入数据。13.一种数据存储装置,其特征在于,包括: 发送模块,用于向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中; 其中,所述目标端的内存被多个数据存储装置所共享。14.根据权利要求13所述的装置,其特征在于,还包括:接收模块; 在所述目标端与所述装置建立连接过程中,所述发送模块,还用于向所述目标端发送协商请求消息,所述协商请求消息用于所述装置请求是否可以发送所述第一 SCSI写命令和所述待写入数据,以使所述目标端判断所述可用内存是否大于预设阈值; 若所述可用内存大于所述预设阈值,则所述接收模块,用于接收所述目标端发送的第一协商响应消息,所述第一协商响应消息用于确定所述装置可以发送所述第一SCSI写命令和所述待写入数据。15.根据权利要求14所述的装置,其特征在于,还包括: 若所述可用内存小于或者等于所述预设阈值,则所述接收模块,还用于接收所述目标端发送的第二协商响应消息,所述第二协商响应消息用于确定所述装置不可以发送所述第一 SCSI写命令和所述待写入数据; 所述发送模块,还用于向所述目标端发送第二小型计算机系统接口SCSI写命令,以使所述目标端根据所述第二 SCSI写命令向所述装置分配内存; 所述接收模块,还用于接收所述目标端发送的响应消息,所述响应消息用于指示所述目标端已向所述装置分配内存; 所述发送模块,还用于向所述目标端发送所述待写入数据,以使所述目标端将所述待写入数据存储至对应内存中。16.根据权利要求14或15所述的装置,其特征在于,还包括:确定模块; 若所述待写入数据的长度小于或者等于内存释放后的可用内存,则所述接收模块,还用于接收所述目标端发送的重发请求消息; 所述确定模块,用于确定重发所述待写入数据的次数,若所述次数大于第一预设值,则所述发送模块向所述目标端发送第二小型计算机系统接口 SCSI写命令; 否则,则所述发送模块向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据。17.一种数据存储装置,其特征在于,包括:接收器、处理器和存储器; 所述接收器,用于接收发起端发送的第一小型计算机系统接口 SCSI写命令和待写入数据; 所述处理器,用于判断所述待写入数据的长度是否小于或者等于所述装置的可用内存; 若所述处理器判断所述待写入数据的长度小于或者等于所述装置的可用内存,则所述存储器将所述待写入数据存储至对应内存中; 其中,所述装置的内存被多个发起端所共享。18.根据权利要求17所述的装置,其特征在于,还包括:发送器; 在所述装置与所述发起端建立连接过程中,所述接收器,还用于接收所述发起端发送的协商请求消息,所述协商请求消息用于所述发起端请求是否可以发送所述第一 SCSI写命令和所述待写入数据; 所述处理器,还用于判断所述可用内存是否大于预设阈值,若所述处理器确定所述可用内存大于所述预设阈值,则所述发送器向所述发起端发送第一协商响应消息,所述第一协商响应消息用于确定所述发起端可以发送所述第一 SCSI写命令和所述待写入数据。19.根据权利要求18所述的装置,其特征在于, 若所述处理器确定所述可用内存小于或者等于所述预设阈值,则所述发送器向所述发起端发送第二协商响应消息,所述第二协商响应消息用于确定所述发起端不可以发送所述第一 SCSI写命令和所述待写入数据; 所述接收器,还用于接收所述发起端发送的第二小型计算机系统接口 SCSI写命令; 所述处理器,还用于根据所述第二SCSI写命令向所述发起端分配内存; 所述发送器,用于向所述发起端发送响应消息,所述响应消息用于指示所述装置已向所述发起端分配内存; 所述接收器,用于接收所述待写入数据,并将所述待写入数据存储至对应内存中。20.根据权利要求18或19所述的装置,其特征在于, 若所述处理器判断所述待写入数据的长度大于所述装置的可用内存,则所述处理器丢弃所述待写入数据,等待释放的内存; 所述处理器,还用于判断所述待写入数据的长度是否小于或者等于所述装置经过内存释放后的可用内存; 若所述处理器判断所述待写入数据的长度小于或者等于所述内存释放后的可用内存,则所述发送器向所述发起端发送重发请求消息,所述重发请求消息用于指示所述发起端重新发送所述待写入数据。21.一种数据存储装置,其特征在于,包括: 发送器,用于向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据,以使所述目标端判断所述待写入数据的长度是否小于或者等于所述目标端的可用内存;并且确定是否将所述待写入数据存储至对应内存中; 其中,所述目标端的内存被多个数据存储装置所共享。22.根据权利要求21所述的装置,其特征在于,还包括:接收器; 在所述目标端与所述装置建立连接过程中,所述发送器,还用于向所述目标端发送协商请求消息,所述协商请求消息用于所述装置请求是否可以发送所述第一 SCSI写命令和所述待写入数据,以使所述目标端判断所述可用内存是否大于预设阈值; 若所述可用内存大于所述预设阈值,则所述接收器,用于接收所述目标端发送的第一协商响应消息,所述第一协商响应消息用于确定所述装置可以发送所述第一 SCSI写命令和所述待写入数据。23.根据权利要求22所述的装置,其特征在于,还包括: 若所述可用内存小于或者等于所述预设阈值,则所述接收器,还用于接收所述目标端发送的第二协商响应消息,所述第二协商响应消息用于确定所述装置不可以发送所述第一SCSI写命令和所述待写入数据; 所述发送器,还用于向所述目标端发送第二小型计算机系统接口 SCSI写命令,以使所述目标端根据所述第二 SCSI写命令向所述装置分配内存; 所述接收器,还用于接收所述目标端发送的响应消息,所述响应消息用于指示所述目标端已向所述装置分配内存; 所述发送器,还用于向所述目标端发送所述待写入数据,以使所述目标端将所述待写入数据存储至对应内存中。24.根据权利要求22或23所述的装置,其特征在于,还包括:处理器; 若所述待写入数据的长度小于或者等于内存释放后的可用内存,则所述接收器,还用于接收所述目标端发送的重发请求消息; 所述处理器,还用于确定重发所述待写入数据的次数,若所述次数大于第一预设值,则所述发送器向所述目标端发送第二小型计算机系统接口 SCSI写命令; 否则,则所述发送器向目标端发送第一小型计算机系统接口 SCSI写命令和待写入数据。
【文档编号】G06F12/02GK106095694SQ201610424095
【公开日】2016年11月9日
【申请日】2016年6月15日 公开号201610424095.9, CN 106095694 A, CN 106095694A, CN 201610424095, CN-A-106095694, CN106095694 A, CN106095694A, CN201610424095, CN201610424095.9
【发明人】李耀华, 王云龙
【申请人】华为技术有限公司