一种写数据方法及存储设备的制作方法

文档序号:6511070阅读:121来源:国知局
一种写数据方法及存储设备的制作方法
【专利摘要】本发明公开了一种写数据方法及存储设备。本发明写数据方法应用于存储设备中,存储设备包括控制器和存储器,控制器包括处理器和缓存。本发明方法包括:控制器接收主机发送的至少一个写数据请求;为该写数据请求增加第一编号,第一编号为初始TP值;将增加第一编号后的写数据请求写入缓存;在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的写数据请求;从缓存中读取增加第一编号后的写数据请求,写入存储器。本发明能够提高数据的写入效率,且能够避免快照激活后写入缓存的写数据请求覆盖快照激活之前写入缓存的写数据请求。
【专利说明】一种写数据方法及存储设备
【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种写数据方法及存储设备。
【背景技术】
[0002]快照是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。快照的作用主要是能够进行在线数据备份与恢复。
[0003]现有技术中,在快照激活之前,需要先阻塞所有写入缓存中的写数据请求,并等待正在写入缓存的写数据请求写入完成,以使缓存处于一个稳定的状态,然后将缓存中所有已经写入的写数据请求标记为快照数据,将缓存中已做过标记的写数据请求复制到一个新的位置,然后将新的写数据请求写入到缓存内原本的写数据请求的写入位置,即快照激活后写入到缓存的写数据请求会覆盖快照激活之前写入缓存的写数据请求。
[0004]从上面的描述可以看出,现有技术在激活快照之前,需要对写数据请求进行阻塞,这将会造成了额外的处理时延,极大影响了数据的写入效率。

【发明内容】

[0005]本发明实施例提供了一种写数据方法及存储设备,能够提高数据的写入效率,且能够避免快照激活后写入缓存的写数据请求覆盖快照激活之前写入缓存的写数据请求。
[0006]本发明实施例第一方面提供了 一种写数据方法,所述写数据方法应用于存储设备中,所述存储设备包括控制器和存储器,所述控制器包括处理器和缓存,其特征在于,所述方法包括:所述控制器接收主机发送的至少一个第一写数据请求;
[0007]所述控制器为所述第一写数据请求增加第一编号,所述第一编号为初始时间点TP值;
[0008]所述控制器将增加第一编号后的第一写数据请求写入所述缓存;
[0009]所述控制器在激活快照时修改所述初始TP值,以用修改后的初始TP值标识后续的第一写数据请求;
[0010]所述控制器从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器。
[0011]结合本发明实施例的第一方面,在本发明实施例第一方面的第一种实施方式中,所述方法还包括:所述控制器接收第二写数据请求;
[0012]所述控制器为所述第二写数据请求增加第二编号,所述第二编号为修改后的初始TP值;
[0013]所述控制器将增加第二编号后的第二写数据请求写入所述缓存;
[0014]所述控制器激活快照时修改所述修改后的初始TP值,以用修改后的所述修改后的初始TP值标识后续的第二写数据请求;
[0015]所述控制器从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
[0016]结合本发明实施例第一方面的第一种实施方式,在本发明实施例的第一方面的第二种实施方式中,所述方法还包括:所述控制器判断所述第一编号是否小于所述第二编号;
[0017]当所述第一编号小于所述第二编号时,所述控制器从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器包括:从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器之后,再从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
[0018]结合本发明实施例的第一方面,在本发明实施例的第一方面的第三种实施方式中,所述第一写数据请求还包括逻辑块地址LBA和目标数据;
[0019]所述控制器将增加第一编号后的第一写数据请求写入所述缓存包括:
[0020]所述控制器将所述第一编号、LBA与目标数据的对应关系写入所述缓存。
[0021]结合本发明实施例的第一方面,在本发明实施例的第一方面的第四种实施方式中,所述方法还包括:所述控制器记录所述初始TP值。
[0022]结合本发明实施例的第一方面,在本发明实施例的第一方面的第五种实施方式中,所述第一写数据请求还包括存储对象的身份标识ID ;
[0023]所述方法还包括:
[0024]所述控制器根据所述存储对象的ID确定所述第一写数据请求对应的初始TP值。
[0025]本发明实施例的第二方面提供了一种存储设备,所述存储设备包括:接收单元,用于接收主机发送的至少一个第一写数据请求;
[0026]编号增加单元,用于为所述第一写数据请求增加第一编号,所述第一编号为初始时间点TP值;
[0027]第一写入单元,用于将增加第一编号后的第一写数据请求写入所述缓存;
[0028]修改单元,用于在激活快照时修改所述初始TP值,以用修改后的初始TP值标识后续的第一写数据请求;
[0029]第二写入单元,用于从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器。
[0030]结合本发明实施例的第二方面,在本发明实施例的第二方面的第一种实施方式中,所述接收单元还用于:接收第二写数据请求;
[0031]所述编号增加单元还用于:为所述第二写数据请求增加第二编号,所述第二编号为修改后的初始TP值;
[0032]所述第一写入单元还用于:将增加第二编号后的第二写数据请求写入所述缓存;
[0033]所述修改单元还用于:在激活快照时修改所述修改后的初始TP值,以用修改后的所述修改后的初始TP值标识后续的第二写数据请求;
[0034]所述第二写入单元还用于:从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
[0035]结合本发明实施例第二方面的第一种实施方式,在本发明实施例的第二方面的第二种实施方式中,所述存储设备还包括:
[0036]判断单元,用于判断所述第一编号是否小于所述第二编号;[0037]当所述判断单元的判断结果为所述第一编号小于所述第二编号时,所述第二写入单元从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器包括:
[0038]从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器之后,再从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
[0039]结合本发明实施例的第二方面,在本发明实施例的第二方面的第三种实施方式中,所述存储设备还包括:记录单元,用于记录所述初始TP值。
[0040]从以上技术方案可以看出,本发明实施例具有以下优点:
[0041]本发明实施例中,在接收主机发送的至少一个写数据请求后,为写数据请求增加第一编号,第一编号为初始时间点TP值;将增加第一编号后的写数据请求写入缓存;在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的写数据请求;从缓存中读取增加第一编号后的写数据请求,写入存储器。本发明实施例中,因为在写数据请求写入缓存之前就已经为每个写数据请求增加了初始TP值,且激活快照时会修改初始TP值,由于激活快照之后写入缓存的写数据请求都具有与激活快照之前写入缓存的写数据请求不同的TP值,因此不用对快照激活之后的写数据请求进行阻塞,提高了数据的写入效率。并且由于快照激活后写入缓存的写数据请求与快照激活之前写入缓存的写数据请求具有不同编号,因此快照激活之前写入缓存的写数据请求中携带的数据不会被快照激活之后的写数据请求携带的数据覆盖,那么快照激活之前写入缓存的写数据请求中携带的数据可以作为快照数据在缓存中保存下来。
【专利附图】

【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]图1为本发明实施例中写数据方法一个应用场景图;
[0044]图2为本发明实施例中写数据方法一个实施例示意图;
[0045]图3为本发明实施例中写数据方法另一实施例示意图;
[0046]图4为本发明实施例中存储设备一个实施例示意图;
[0047]图5为本发明实施例中存储设备另一实施例示意图;
[0048]图6为本发明实施例中存储设备另一实施例示意图。
【具体实施方式】
[0049]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050]本发明实施例提供了一种写数据方法、处理器及存储设备,能够提高数据的写入效率,且能够避免快照激活后写入缓存的写数据请求覆盖快照激活之前写入缓存的写数据请求。[0051]请参阅图1,图1是本发明实施例写数据方法一个应用场景图,本发明实施例的写数据方法应用于存储设备100,存储设备100通过连接设备110连接到主机120。
[0052]其中,主机120可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。在主机120内部,安装有操作系统以及其他应用程序。
[0053]连接设备110可以包括当前技术已知的存储设备和主机之间的任何接口,如光纤交换机,或者其他现有的交换机。
[0054]存储设备100可以包括当前技术已知的存储设备,如独立磁盘冗余阵列(Redundant Arrays of Independent Disks, RAID)、磁盘族(Just a Bunch Of Disks,JBOD)、直接存取存储器(Direct Access Storage Device, DASD)的一个或多个互连的磁盘驱动器,诸如磁带库、一个或多个存储单元的磁带存储设备。
[0055]存储设备100包含控制器101及存储器102。控制器101相当于存储设备100的处理器,安装有操作系统和其他软件程序。在控制器101内部,包含有缓存(cache) 1010,缓存1010是中央处理器(Central Processing Unit, CPU)和存储器102之间的缓冲存储器。存储器102可以为硬盘,缓存1010的体积比硬盘小,但速度比硬盘快。
[0056]控制器101接收主机120发送的至少一个第一写数据请求,为第一写数据请求增加第一编号,第一编号为初始时间点(Time Point, TP)值,将增加第一编号后的第一写数据请求写入缓存1010 ;在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的第一写数据请求;从缓存1010中读取增加第一编号后的第一写数据请求,写入存储器102。
[0057]下面介绍本发明实施例提供的写数据方法,请参阅图2,本发明实施例中写数据方法一个实施例包括:
[0058]201、接收主机发送的至少一个第一写数据请求;
[0059]控制器接收主机发送的至少一个第一写数据请求。
[0060]202、为第一写数据请求增加第一编号,第一编号为初始TP值;
[0061 ] 控制器为第一写数据请求增加第一编号,第一编号为初始TP值,初始TP值可以用任意正数表示,例如1、2等;也可以用任意字母表示,例如a、b等,此处不做具体限定。
[0062]203、将增加第一编号后的第一写数据请求写入缓存;
[0063]控制器为第一写数据请求增加第一编号后,将增加了第一编号的第一写数据请求写入缓存中。
[0064]204、在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的第一写数据请求;
[0065]控制器在需要激活快照时,修改初始TP值。例如初始TP值为1,在激活快照时,将初始TP值修改为2,然后用2标识激活快照之后写入缓存的写数据请求。
[0066]205、从缓存中读取增加第一编号后的第一写数据请求,写入存储器。
[0067]因缓存只是一个临时的数据存储区域,且缓存的存储空间有限,因此,控制器在将增加了第一编号后的第一写数据请求写入缓存后,还需要读取缓存中增加第一编号后的第一写数据请求,写入到存储器。
[0068]本实施例中,控制器在接收主机发送的至少一个写数据请求后,为写数据请求增加第一编号,第一编号为初始TP值;将增加第一编号后的写数据请求写入缓存;在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的写数据请求;从缓存中读取增加第一编号后的写数据请求,写入存储器。本实施例中,因为在写数据请求写入缓存之前,控制器就已经为每个写数据请求增加了初始TP值,且激活快照时会修改初始TP值,由于激活快照之后写入缓存的写数据请求都具有与激活快照之前写入缓存的写数据请求不同的TP值,因此不用对快照激活之后的写数据请求进行阻塞,提高了数据的写入效率。并且由于快照激活后写入缓存的写数据请求与快照激活之前写入缓存的写数据请求具有不同编号,因此快照激活之前写入缓存的写数据请求中携带的数据不会被快照激活之后的写数据请求携带的数据覆盖,那么快照激活之前写入缓存的写数据请求中携带的数据可以作为快照数据在缓存中保存下来。当主机需要读取快照数据时,可以直接从缓存中读取,读取速度快。
[0069]为了便于理解,下面以一具体实施例对本发明写数据方法进行描述,请参阅图3,本发明实施例中写数据方法另一实施例包括:
[0070]301、接收主机发送的至少一个第一写数据请求;
[0071]在创建存储对象时,控制器会为每个存储对象增加初始TP值,另外每个存储对象本身还具有一个身份标识(Identity, ID)。控制器记录每个存储对象的初始TP值,初始TP值可以用任意正数表示,例如1、2等;也可以用任意字母表示,例如a、b等。具体此处不做限定。每个存储对象的初始TP值可以相同,也可以不同,但是每个存储对象的ID是不同的。
[0072]存储对象表示的是逻辑存储空间,存储对象可以是一段逻辑磁盘空间,例如:逻辑单元号(Logical Unit Number, LUN),或者文件,或者目录,在此不作限定。
[0073]控制器接收主机发送的至少一个第一写数据请求,第一写数据请求中包含存储对象的ID,逻辑块地址(Logical Block Address, LBA)和目标数据。
[0074]302、为第一写数据请求增加第一编号,第一编号为初始TP值;
[0075]首先,控制器根据第一写数据请求中包含的存储对象的ID确定第一写数据请求对应的初始TP值。具体地,控制器根据第一写数据请求中包含的存储对象的ID确定第一写数据请求需要写入的存储对象,然后获取该存储对象的初始TP值。控制器将该存储对象的初始TP值作为第一编号,为第一写数据请求增加第一编号。
[0076]303、将增加第一编号后的第一写数据请求写入缓存;
[0077]控制器根据第一写数据请求中携带的存储对象的ID确定第一写数据请求在缓存中写入的存储对象,根据第一写数据请求中携带LBA确定该存储对象的地址,然后将第一写数据请求中的目标数据及对应的编号写入到缓存。
[0078]304、在激活快照时修改初始TP值;
[0079]当控制器为某一存储对象激活快照时,修改该存储对象的初始TP值,修改后的初始TP值用来标识激活快照之后写入该存储对象的写数据请求。
[0080]本实施例中,在激活快照之后,对存储对象进行快照的处理方式可以是写时复制(Copy On Write, COW),也可以是写重定向(Redirect On Write, ROW)。
[0081]305、接收第二写数据请求;
[0082]控制器在为某一存储对象激活快照后,会继续接收写数据请求,即第二写数据请求,同样第二写数据请求中包含存储对象的ID,LBA及目标数据。
[0083]306、为第二写数据请求增加第二编号,第二编号为修改后的初始TP值;
[0084]控制器根据第二写数据请求中携带的存储对象的ID确定第二写数据请求对应的TP值,第二写数据请求对应的TP值即为第二编号,为第二写数据请求增加第二编号。[0085]例如,某一存储对象的初始TP值为1,在为该存储对象激活快照之前,控制器为所有写入该存储对象的写数据请求增加的编号都为I。在为该存储对象激活快照时,控制器将该存储对象的初始TP值进行修改,例如可以将该存储对象初始TP值由I修改为2,控制器记录存储对象现在具有的TP值为2。在为该存储对象激活快照之后,控制器为需要写入该存储对象的写数据请求增加的编号为2,直至再次为该存储对象激活快照之前,控制器为需要写入该存储对象的写数据请求增加的编号都为2。
[0086]307、将增加第二编号后的第二写数据请求写入缓存;
[0087]控制器根据第二写数据请求中携带的存储对象的ID确定第二写数据请求在缓存中写入的存储对象,根据第二写数据请求中携带LBA确定该存储对象的地址,将第二写数据请求中的目标数据及对应编号写入缓存。
[0088]308、判断第一编号是否小于第二编号,如果小于,则执行步骤309,如果大于,则执行步骤310 ;
[0089]309、先将缓存中增加第一编号后的第一写数据请求写入存储器,再将缓存中增加第二编号后的第二写数据请求写入存储器;
[0090]310、先将缓存中增加第二编号后的第二写数据请求写入存储器,再将缓存中增加第一编号后的第一写数据请求写入存储器。
[0091]因缓存只是一个临时的数据存储区域,且缓存的存储空间有限,所以写入缓存的写数据请求最终还要写入存储器中以备份。
[0092]具体地,步骤308至310描述的是在某一存储对象的TP值设置的均是正整数,且TP值按照数值从小到大设置,因此可以先将编号小的写数据请求携带的目标数据写入存储器,再将编号大的写数据请求携带的目标数据写入存储器。
[0093]另外,需要说明的是,步骤308至310只是以存储对象的TP值为正整数举例说明,控制器会把写入缓存的写数据请求中的目标数据,按照这些目标数据写入缓存的先后顺序,写入到存储器,即先写入缓存的目标数据会先写入存储器,后写入缓存的目标数据会在先写入缓存的目标数据写入到存储器之后,再写入到存储器。在实际应用中,不管存储对象的TP值设置的正整数,还是字母,均可以按照上述先写入缓存的目标数据,先写入存储器这一写入原则写入存储器。
[0094]本实施例中,控制器为写入缓存内每个存储对象的写数据请求增加存储对象当前的TP值,在为该存储对象激活快照时,会修改该存储对象的TP值,然后按预定的顺序将缓存中的写数据请求写入到存储器。本实施例中,因为在写数据请求写入缓存之前,控制器就已经为每个写数据请求增加了初始TP值,且激活快照时会修改初始TP值,由于激活快照之后写入缓存的写数据请求都具有与激活快照之前写入缓存的写数据请求不同的TP值,因此不用对快照激活之后的写数据请求进行阻塞,提高了数据的写入效率。并且由于快照激活后写入缓存的写数据请求与快照激活之前写入缓存的写数据请求具有不同的编号,因此快照激活之前写入缓存的写数据请求中携带的数据不会被快照激活之后的写数据请求携带的数据覆盖,那么快照激活之前写入缓存的写数据请求中携带的数据可以作为快照数据在缓存中保存下来。当主机需要读取快照数据时,可以直接从缓存中读取,读取速度快。
[0095]下面对本发明实施例中的存储设备进行描述,请参阅图4,本发明实施例中的存储设备一个实施例包括:[0096]接收单元401,用于接收主机发送的至少一个第一写数据请求;
[0097]编号增加单元402,用于为第一写数据请求增加第一编号,第一编号为初始时间点TP值;
[0098]第一写入单元403,用于将增加第一编号后的第一写数据请求写入缓存;
[0099]修改单元404,用于在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的第一写数据请求;
[0100]第二写入单元405,用于从缓存中读取增加第一编号后的第一写数据请求,写入存储器。
[0101]为便于理解,下面以一个实际应用场景对本实施例中的控制器的各单元之间的交互方式进行描述:
[0102]接收单元401接收主机发送的至少一个第一写数据请求,编号增加单元402为接收单元401接收的第一写数据请求增加第一编号,第一编号为初始时间点(Time Point,TP)值,初始TP值可以用任意正数表示,例如1、2等;也可以用任意字母表示,例如a、b等,此处不做具体限定。
[0103]第一写入单元403在编号增加单元402为第一写数据请求增加第一编号后,将增加了第一编号的第一写数据请求写入缓存中。
[0104]修改单元404在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的第一写数据请求。例如初始TP值为1,在激活快照时,修改单元404将初始TP值修改为2,以用2标识激活快照之后写入缓存的写数据请求。
[0105]因缓存只是一个临时的数据存储区域,且缓存的存储空间有限,因此,在第一写入单元403将增加了第一编号后的第一写数据请求写入缓存后,第二写入单元405还需要读取缓存中增加第一编号后的第一写数据请求,写入存储器。
[0106]本实施例中,编号增加单元在接收单元接收主机发送的至少一个写数据请求后,为写数据请求增加第一编号,第一编号为初始时间点TP值;第一写入单元将增加第一编号后的写数据请求写入缓存;修改单元在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的写数据请求;第二写入单元从缓存中读取增加第一编号后的写数据请求,写入存储器。本实施例中,因为在写数据请求写入缓存之前,编号增加单元就已经为每个写数据请求增加了初始TP值,且激活快照时修改单元会修改初始TP值,由于激活快照之后写入缓存的写数据请求都具有与激活快照之前写入缓存的写数据请求不同的TP值,因此不用对快照激活之后的写数据请求进行阻塞,提高了数据的写入效率。并且由于快照激活后写入缓存的写数据请求与快照激活之前写入缓存的写数据请求具有不同的编号,因此快照激活之前写入缓存的写数据请求中携带的数据不会被快照激活之后的写数据请求携带的数据覆盖,那么快照激活之前写入缓存的写数据请求中携带的数据可以作为快照数据在缓存中保存下来。当主机需要读取快照数据时,可以直接从缓存中读取,读取速度快。
[0107]为了便于理解,下面以一具体实施例对本发明存储设备进行描述,请参阅图5,本发明实施例中存储设备另一实施例包括:
[0108]记录单元501,用于记录存储对象的初始TP值;
[0109]接收单元502,用于接收主机在快照激活前发送给存储对象的第一写数据请求及快照激活后发送给该存储对象的第二写数据请求;[0110]确定单元503,用于根据写数据请求中包含的存储对象的ID确定第一写数据请求对应的初始TP值及第二写数据请求对应的TP值;
[0111]编号增加单元504,用于为第一写数据请求增加第一编号,为第二写数据请求增加第二编号,第一编号为初始TP值,第二编号为修改后的初始TP值;
[0112]第一写入单元505,用于将增加第一编号后的第一写数据请求及增加第二编号后的第二写数据请求写入缓存;
[0113]修改单元506,用于在激活快照时修改初始TP值,以用修改后的初始TP值标识激活快照之后写入该存储对象的第二写数据请求;
[0114]判断单元507,用于判断第一编号是否小于第二编号;
[0115]第二写入单元508,用于当判断单元507的判断结果为第一编号小于第二编号时,从缓存中读取增加第一编号后的第一写数据请求,写入存储器之后,再从缓存中读取增加第二编号后的第二写数据请求,写入存储器。
[0116]为便于理解,下面以一个实际应用场景对本实施例中的存储设备的各单元之间的交互方式进行描述:
[0117]在创建存储对象时,记录单元501会为每个存储对象增加初始TP值并记录每个存储对象的初始TP值,另外每个存储对象还具有一个ID。初始TP值可以用任意正数表示,例如1、2等;也可以用任意字母表示,例如a、b等。具体此处不做限定。每个存储对象的初始TP值可以相同,也可以不同,但是每个存储对象的ID是不同的。
[0118]存储对象表示的是逻辑存储空间,存储对象可以是一段逻辑磁盘空间,例如:逻辑单元号(Logical Unit Number, LUN),或者文件,或者目录,在此不作限定。
[0119]接收单元502接收主机发送的至少一个第一写数据请求,第一写数据请求中包含存储对象的ID,逻辑块地址(Logical Block Address,LBA)和目标数据。
[0120]确定单元503根据第一写数据请求中包含的存储对象的ID确定第一写数据请求对应的初始TP值。具体地,确定单元503根据第一写数据请求中包含的存储对象的ID确定第一写数据请求需要写入的存储对象,然后获取该存储对象的初始TP值,将该存储对象的初始TP值作为第一写数据请求对应的初始TP值。
[0121]编号增加单元504将确定单元503确定的第一写数据请求对应的初始TP值作为第一编号,为第一写数据请求增加第一编号。第一写入单元505根据第一写数据请求中携带的存储对象的ID确定第一写数据请求在缓存中写入的存储对象,根据第一写数据请求中携带LBA确定该存储对象的地址,然后将第一写数据请求中的目标数据及对应编号写入缓存。
[0122]修改单元506在存储对象被激活快照时,修改该存储对象的初始TP值,修改后的初始TP值用来标识激活快照之后写入该存储对象的写数据请求,记录单元501记录存储对象当前的TP值。本实施例中,在激活快照之后,对存储对象进行快照的处理方式可以是写时复制(Copy On Write, COW),也可以是写重定向(Redirect On Write, ROW)。
[0123]接收单元502在存储对象被激活快照之后,继续接收主机发送的写数据请求,即第二写数据请求,同样第二写数据请求中包含存储对象的ID,LBA及目标数据。
[0124]确定单元503根据接收单元502接收的第二写数据请求中携带的存储对象的ID确定第二写数据请求对应的TP值,编号增加单元504将第二写数据请求对应的TP值作为第二编号,为第二写数据请求增加第二编号。
[0125]例如,某一存储对象的初始TP值为1,在为该存储对象激活快照之前,编号增加单元504为所有写入该存储对象的写数据请求增加的编号都为I。在为该存储对象激活快照时,修改单元506将该存储对象的初始TP值进行修改,例如可以将该存储对象初始TP值由I修改为2,记录单元401记录存储对象现在具有的TP值为2。在为该存储对象激活快照之后,编号增加单元504为需要写入该存储对象的写数据请求增加的编号为2,直至再次为该存储对象激活快照之前,编号增加单元504为需要写入该存储对象的写数据请求增加的编号都为2。
[0126]第一写入单元505根据第二写数据请求中携带的存储对象的ID确定第二写数据请求在缓存中写入的存储对象,根据第二写数据请求中携带LBA确定该存储对象的地址,将第二写数据请求中的目标数据及对应的编号写入缓存。
[0127]因缓存只是一个临时的数据存储区域,且缓存的存储空间有限,所以写入缓存的写数据请求最终还要写入到存储器中以备份。
[0128]具体地,例如可由判断单元507判断第一编号是否小于第二编号,若小于,则由第二写入单元508先将缓存中增加第一编号后的第一写数据请求写入存储器,再将缓存中增加第二编号后的第二写数据请求写入存储器;若大于,则第二写入单元508先将缓存中增加第二编号后的第二写数据请求写入存储器,再将缓存中增加第一编号后的第一写数据请求写入存储器。
[0129]为了便于说明,上面只是以某一存储对象的TP值设置的均是正整数,且TP值按照数值从小到大设置为例进行说明。在这种情况下,可以先将编号小的写数据请求携带的目标数据写入存储器,再将编号大的写数据请求携带的目标数据写入存储器。
[0130]需要说明的是,本实施例中,第二写入单元508将缓存中的写数据请求写入到存储器中的原则是:按照这些写数据请求中的目标数据写入到缓存的先后顺序,写入到存储器,即先写入缓存的目标数据会先写入存储器,后写入缓存的目标数据会在先写入缓存的目标数据写入到存储器之后,再写入到存储器。所以,在实际应用中,不管存储对象的TP值设置的正整数,还是字母,第二写入单元508均可以按照上述原则将缓存中的目标数据写入存储器。
[0131]本实施例中,编号增加单元为写到缓存内每个存储对象的写数据请求增加存储对象当前的TP值,在为该存储对象激活快照时,修改单元会修改该存储对象的TP值,然后第二写入单元按预定的顺序将缓存中的写数据请求写入到存储器。本实施例中,因为在写数据请求写入缓存之前,编号增加单元就已经为每个写数据请求增加了初始TP值,且激活快照时修改单元会修改初始TP值,由于激活快照之后写入缓存的写数据请求都具有与激活快照之前写入缓存的写数据请求不同的TP值,因此不用对快照激活之后的写数据请求进行阻塞,提高了数据的写入效率。并且由于快照激活后写入缓存的写数据请求与快照激活之前写入缓存的写数据请求具有不同的编号,因此快照激活之前写入缓存的写数据请求中携带的数据不会被快照激活之后的写数据请求携带的数据覆盖,那么快照激活之前写入缓存的写数据请求中携带的数据可以作为快照数据在缓存中保存下来。当主机需要读取快照数据时,可以直接从缓存中读取,读取速度快。
[0132]下面对本发明实施例中的存储设备600进行进一步说明,请参阅图6,存储设备600可以包括当前技术已知的存储设备,本发明具体实施例并不对存储设备600具体实现做限定。存储设备600包括:
[0133]处理器(processor)610,通信接 口(Communications Interface) 620,存储器(memory) 630,总线 640。
[0134]处理器610,通信接口 620,存储器630通过总线640完成相互间的通信。
[0135]通信接口 620,用于与网元通信。
[0136]处理器610,用于执行程序632。
[0137]具体地,程序632可以包括程序代码,所述程序代码包括计算机操作指令。
[0138]处理器610可能是一个中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0139]存储器630,用于存放程序632。存储器630可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0140]程序632具体可以包括:
[0141]接收单元401,用于接收主机发送的至少一个第一写数据请求。
[0142]编号增加单元402,用于为第一写数据请求增加第一编号,第一编号为初始时间点TP值。
[0143]第一写入单元403,用于将增加第一编号后的第一写数据请求写入缓存。
[0144]修改单元404,用于在激活快照时修改初始TP值,以用修改后的初始TP值标识后续的第一写数据请求。
[0145]第二写入单元405,用于从缓存中读取增加第一编号后的第一写数据请求,写入存储器。
[0146]程序632中各单元的具体实现可以参见图4所示实施例中的相应单元,在此不赘述。
[0147]另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0148]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0149]以上对本发明实施例所提供的一种写数据方法、处理器及存储设备进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在【具体实施方式】及应用范围上均会有改变之处,因此,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种写数据方法,所述写数据方法应用于存储设备中,所述存储设备包括控制器和存储器,所述控制器包括处理器和缓存,其特征在于,所述方法包括: 所述控制器接收主机发送的至少一个第一写数据请求; 所述控制器为所述第一写数据请求增加第一编号,所述第一编号为初始时间点TP值; 所述控制器将增加第一编号后的第一写数据请求写入所述缓存; 所述控制器在激活快照时修改所述初始TP值,以用修改后的初始TP值标识后续的第一写数据请求; 所述控制器从 所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器。
2.如权利要求1所述的方法,其特征在于,所述方法还包括: 所述控制器接收第二写数据请求; 所述控制器为所述第二写数据请求增加第二编号,所述第二编号为修改后的初始TP值; 所述控制器将增加第二编号后的第二写数据请求写入所述缓存; 所述控制器在激活快照时修改所述修改后的初始TP值,以用修改后的所述修改后的初始TP值标识后续的第二写数据请求; 所述控制器从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
3.如权利要求2所述的方法,其特征在于,还包括: 所述控制器判断所述第一编号是否小于所述第二编号; 当所述第一编号小于所述第二编号时,所述控制器从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器包括:所述控制器从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器之后,再从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
4.如权利要求1所述的方法,其特征在于,所述第一写数据请求还包括逻辑块地址LBA和目标数据; 所述控制器将增加第一编号后的第一写数据请求写入所述缓存包括: 所述控制器将所述第一编号、LBA与目标数据的对应关系写入所述缓存。
5.如权利要求1所述的方法,其特征在于,还包括:所述控制器记录所述初始TP值。
6.如权利要求1所述的方法,其特征在于,所述第一写数据请求还包括存储对象的身份标识ID ; 所述方法还包括: 所述控制器根据所述存储对象的ID确定所述第一写数据请求对应的初始TP值。
7.一种存储设备,其特征在于,包括: 接收单元,用于接收主机发送的至少一个第一写数据请求; 编号增加单元,用于为所述第一写数据请求增加第一编号,所述第一编号为初始时间点TP值; 第一写入单元,用于将增加第一编号后的第一写数据请求写入所述缓存; 修改单元,用于在激活快照时修改所述初始TP值,以用修改后的初始TP值标识后续的第一写数据请求; 第二写入单元,用于从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器。
8.如权利要求7所述的存储设备,其特征在于,所述接收单元还用于:接收第二写数据请求; 所述编号增加单元还用于:为所述第二写数据请求增加第二编号,所述第二编号为修改后的初始TP值; 所述第一写入单元还用于:将增加第二编号后的第二写数据请求写入所述缓存; 所述修改单元还用于:在激活快照时修改所述修改后的初始TP值,以用修改后的所述修改后的初始TP值标识后续的第二写数据请求; 所述第二写入单元还用于:从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
9.如权利要求8所述的存储设备,其特征在于,所述存储设备还包括: 判断单元,用于判断所述第一编号是否小于所述第二编号; 当所述判断单元的判断结果为所述第一编号小于所述第二编号时,所述第二写入单元从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器包括: 从所述缓存中读取所述增加第一编号后的第一写数据请求,写入所述存储器之后,再从所述缓存中读取所述增加第二编号后的第二写数据请求,写入所述存储器。
10.如权利要求7所述的存储设备,其特征在于,所述存储设备还包括: 记录单元,用于记录所述初始TP值。
【文档编号】G06F12/08GK103488431SQ201310410758
【公开日】2014年1月1日 申请日期:2013年9月10日 优先权日:2013年9月10日
【发明者】赵旺 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1