本发明涉及数据处理技术领域,特别是涉及一种云存储系统中的任务处理方法及装置。
背景技术:
云存储是在云计算(cloudcomputing)概念上延伸和发展出来的一个新的概念,是一种新兴的网络存储技术,是指通过集群应用、网络技术或分布式文件系统等功能,将网络中各种不同类型的大量存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。
云存储系统中,经常会出现多任务并发的现象。也就是说,云存储系统可能同时接收到多个任务。
现有技术中,针对并发任务,存在以下两种主要的处理方式:多任务互斥处理方式和多任务同时处理方式。多任务互斥处理方式是指云存储系统依次处理每个任务,因此该处理方式的处理效率较低。
多任务同时处理方式是指通过并行的方式,对该多个任务同时进行处理。但在并发任务中可能存在两个以上的任务需要操作相同的数据的情况,通过上述多任务同时处理方式处理该并发任务时,其中一个任务需要操作的数据可能被另一个任务删除或更改,因此将导致处理结果的不准确。例如并发任务中对相同数据进行处理的任务包括读任务和删除任务,在处理读任务时,待读取的数据可能已经被删除任务删除,这会导致读任务失败;而当待读取的数据被其他任务更改时,这会导致读取的数据不准确。因此,采用多任务同时处理方式时如何保证每个任务的成功率和准确率成为一个亟待解决的问题。
技术实现要素:
本发明实施例的目的在于提供一种云存储系统中的任务处理方法及装置,以提高云存储系统处理并发任务的成功率和准确率。具体技术方案如下:
第一方面,本发明提供了一种云存储系统中的任务处理方法,应用于对并 发任务进行处理的服务器,所述方法包括:
当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息;
针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据;
基于每个任务快照,对每个任务进行处理。
进一步地,所述基于每个任务快照,对每个任务进行处理之前,所述方法还包括:
针对每个块,判断是否存在至少两个任务操作该块,如果是,将所述块确定为目标块,其中,所述至少两个任务包括至少一个写任务或删除任务,且所述至少两个任务非全部为删除任务;
所述基于每个任务快照,对每个任务进行处理,包括:
基于所述至少两个任务的任务快照,对所述目标块进行处理。
进一步地,当所述至少两个任务中包括至少一个删除任务时,所述基于所述至少两个任务的任务快照,对所述目标块进行处理之前,所述方法还包括:
根据所述至少两个任务的任务快照,获取所述目标块对应的块备份数据;
所述基于所述至少两个任务的任务快照,对所述目标块进行处理包括:
删除所述目标块,并根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理。
进一步地,当所述至少两个任务中的其他任务为写任务时,所述根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理包括:
将所述写任务中对应的数据写入所述目标块的块备份数据中;
当所述写任务完成时,将写入到所述块备份数据中的数据保存到磁盘的一个空块中。
进一步地,当所述至少两个任务中的其他任务包括读任务时,所述根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理包括:
针对每个读任务,根据所述读任务请求的数据,在所述块备份数据中读取相应的数据。
进一步地,所述根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理之前,所述方法还包括:
根据所述至少两个任务中的其他任务的数量,确定所述块备份数据的引用次数;
所述根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理后,所述方法还包括:
针对每个其他任务,将所述块备份数据的引用次数减1,并判断减1后所述引用次数是否为0,如果是,则删除所述块备份数据。
进一步地,当所述至少两个任务包括至少一个写任务且不包括删除任务时,所述基于所述至少两个任务的任务快照,对所述目标块进行处理之前,所述方法包括:
针对该写任务,判断当前是否存在其他的写任务,如果否,则进行基于所述至少两个任务的任务快照对所述目标块进行处理的步骤。
进一步地,当所述至少两个任务中除写任务的其他任务为读任务时,所述基于所述至少两个任务的任务快照,对所述目标块进行处理包括:
基于所述读任务对应的任务快照,根据所述读任务请求的数据,在所述磁盘中的对应块中读取相应的数据。
进一步地,所述判断当前是否存在其他的写任务包括:
针对所述写任务,根据当前保存的所述目标块对应的操作状态,判断当前所述目标块的操作状态是否为写状态;
若是,则确定当前存在其他的写任务,否则,确定当前不存在其他的写任务。
进一步地,当确定当前不存在其他的写任务时,所述方法还包括:
将所述目标块对应的操作状态修改为写状态;
在所述写任务完成时,清除所述目标块对应的操作状态。
第二方面,本发明提供了一种云存储系统中的任务处理装置,应用于对并发任务进行处理的服务器,所述装置包括:
第一确定模块,用于当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息;
第一获取模块,用于针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据;
处理模块,用于基于每个任务快照,对每个任务进行处理。
进一步地,所述装置还包括:
第一判断模块,用于在基于每个任务快照,对每个任务进行处理之前,针对每个块,判断是否存在至少两个任务操作该块,如果是,将所述块确定为目标块,其中,所述至少两个任务包括至少一个写任务或删除任务,且所述至少两个任务非全部为删除任务;
所述处理模块,具体用于基于所述至少两个任务的任务快照,对所述目标块进行处理。
进一步地,当所述至少两个任务中包括至少一个删除任务时,所述装置还包括:
第二获取模块,用于根据所述至少两个任务的任务快照,获取所述目标块对应的块备份数据;
所述处理模块包括:
删除子模块,用于删除所述目标块;
处理子模块,用于根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理。
进一步地,当所述至少两个任务中的其他任务为写任务时,所述处理子模块,具体用于:
将所述写任务中对应的数据写入所述目标块的块备份数据中;
当所述写任务完成时,将写入到所述块备份数据中的数据保存到磁盘的一个空块中。
进一步地,当所述至少两个任务中的其他任务包括读任务时,所述处理子模块,具体用于:
针对每个读任务,根据所述读任务请求的数据,在所述块备份数据中读取相应的数据。
进一步地,所述装置还包括:
第二确定模块,用于根据所述至少两个任务中的其他任务的数量,确定所述块备份数据的引用次数;
删除模块,用于针对每个其他任务,将所述块备份数据的引用次数减1,并判断减1后所述引用次数是否为0,如果是,则删除所述块备份数据。
进一步地,当所述至少两个任务包括至少一个写任务且不包括删除任务时,所述装置还包括:
第二判断模块,用于针对该写任务,判断当前是否存在其他的写任务,如果否,则触发所述处理模块。
进一步地,当所述至少两个任务中除写任务的其他任务为读任务时,所述处理模块,具体用于:
基于所述读任务对应的任务快照,根据所述读任务请求的数据,在所述磁盘中的对应块中读取相应的数据。
进一步地,所述第二判断模块,具体用于:
针对所述写任务,根据当前保存的所述目标块对应的操作状态,判断当前所述目标块的操作状态是否为写状态;
若是,则确定当前存在其他的写任务,否则,确定当前不存在其他的写任务。
进一步地,所述装置还包括:
执行模块,用于当所述第二判断模块判断结果为否时,将所述目标块对应 的操作状态修改为写状态;
清除模块,用于在所述写任务完成时,清除所述目标块对应的操作状态。
本发明实施例提供了一种云存储系统中的任务处理方法及装置,所述方法包括:当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息;针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据;基于每个任务快照,对每个任务进行处理。本实施例中,当同时接收到两个以上的任务时,为了避免其中一个任务处理结果影响其他任务,可以针对每个任务获取其任务快照,并基于每个任务快照对每个任务进行处理,保证了每个任务都能够完成,并且每个任务操作的数据为该任务操作的磁盘中的块的真实数据,从而提高了云存储系统处理并发任务的成功率和准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种云存储系统中的任务处理方法的流程图;
图2为本发明实施例提供的一种云存储系统中的任务处理方法的另一流程图;
图3为本发明实施例提供的一种云存储系统中的任务处理方法的另一流程图;
图4为本发明实施例提供的一种云存储系统中的任务处理方法的另一流程图;
图5为本发明实施例提供的一种云存储系统中的任务处理装置的结构示意图;
图6为本发明实施例提供的一种云存储系统中的任务处理装置的另一结构示意图。
具体实施方式
为了在处理并发任务时,保证每个任务的准确率和成功率,本发明实施例提供了一种云存储系统中的任务处理方法及装置。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
如图1所示,为本发明实施例提供的一种云存储系统中的任务处理过程,该过程包括以下步骤:
s101,当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息。
本发明实施例提供的云存储系统中的任务处理方法,应用于对并发任务进行处理的服务器。在云存储系统中,用于存储数据的最小的逻辑存储单元称为块。当服务器同时接收到两个以上的任务时,针对每个任务,服务器可以确定该任务进行处理的块都有哪些。服务器针对每个任务,确定每个任务进行处理的块属于现有技术,在本发明实施例中对该过程不进行赘述。
在本实施例中,当服务器同时接收到两个以上的任务时,可以首先确定每个任务处理操作的磁盘中的块的标识信息。例如,针对某一个任务,可以确定该任务操作的磁盘中的块的标识信息为1、2、5;针对另一个任务,可以确定该任务操作的磁盘中的块的标识信息为1、3、4。
s102,针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据。
在本实施例中,当确定每个任务操作的磁盘中的块的标识信息后,为了保证每个任务都能准确的执行,服务器可以针对每个任务,获取该任务的任务快照。
具体地,服务器可以保存每个任务操作的磁盘中的各个块的元数据得到该 任务的任务快照。上述元数据例如可以是各个块中保存的数据的属性信息。其中,根据各个块中的数据获取各个任务的任务快照属于现有技术,在本发明实施例中对该过程不进行赘述。
需要说明的是,针对任一个任务,服务器可以获取该任务对应的一个任务快照。并且,由于一个任务可以操作磁盘中的一个或多个块,因此,一个任务的任务快照中可以包括该任务操作的一个或多个块的元数据。另外,由于多个任务可能操作同一个块,因此,这些任务的任务快照中可以均包括该块的元数据。
例如,针对某一个任务,当该任务操作的磁盘中的块的标识信息为1、2、5时,该任务的任务快照中可以包括标识信息为1、2、5这三个块的元数据;当另一个任务操作的磁盘中的块的标识信息为1、3、4时,该任务的任务快照中可以包括标识信息为1、3、4这三个块的元数据。
s103,基于每个任务快照,对每个任务进行处理。
当获取到每个任务的任务快照后,服务器可以基于每个任务快照,对每个任务进行处理。
具体地,服务器针对每个任务创建该任务的任务快照时,可以关联对应各个块中的真实数据,在基于每个任务快照对每个任务进行处理时,可以基于该任务快照关联的各个块的真实数据对每个任务进行处理。由于任务快照中保存的数据的是各个块中数据未被更改或删除时的元数据,因此,基于任务快照处理任务时,能够保证任务处理结果的准确率。
本实施例提供的一种云存储系统中的任务处理方法,当同时接收到两个以上的任务时,为了避免其中一个任务处理结果影响其他任务,可以针对每个任务获取其任务快照,并基于每个任务快照对每个任务进行处理,保证了每个任务都能够完成,并且每个任务操作的数据为该任务操作的磁盘中的块的真实数据,从而提高了云存储系统处理并发任务的成功率和准确率。
图2为本发明实施例提供的一种云存储系统中的任务处理过程,可以包括以下步骤:
s201,当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息。
s202,针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据。
s203,针对每个块,判断是否存在至少两个任务操作该块,如果是,将所述块确定为目标块,其中,所述至少两个任务包括至少一个写任务或删除任务,且所述至少两个任务非全部为删除任务。
当获取每个任务的任务快照后,服务器可以针对每个块,判断是否存在至少两个任务操作该块,如果是,将该块确定为目标块,以对该目标块进行处理,以保证即使其中一个任务将该目标块中保存的数据更改或删除,仍不影响其他任务处理的成功率和准确率。其中,上述至少两个任务包括至少一个写任务或删除任务,且该至少两个任务非全部为删除任务。
可以理解,当操作同一个块的至少两个任务全部为删除任务时,任意一个任务的处理结果不会影响其他任务的处理结果。
而当操作同一个块的至少两个任务中包括至少一个写任务或删除任务时,可以表明当处理该写任务或删除任务时,该块中保存的数据将被更改或删除。当处理完写任务或删除任务后,再处理其他的任务时,由于该块中的数据已经被更改或删除,将会导致其他任务的处理结果不准确或任务处理失败。因此,可以将该块确定为目标块,以对该目标块进行处理,保证其他任务处理的成功率和准确率。
s204,基于所述至少两个任务的任务快照,对所述目标块进行处理。
当确定目标块后,服务器可以基于同时操作该目标块的至少两个任务的任务快照对该目标块进行处理。
例如,当至少两个任务中包括一个读任务和一个写任务时,服务器可以首先创建各任务的任务快照,各任务快照中均包括目标块的元数据,当处理完写任务后,目标块中保存的数据已经被更改;处理读任务时,服务器可以基于该读任务的任务快照中保存的元数据从目标块中读取相应的数据。由于该读任务的任务快照中保存的元数据不包含新写入的数据内容,因此,基于该任务快照 处理读任务时,读取的数据中不会包含新写入的数据,从而保证读任务处理的结果为与该读任务发起时刻目标块中保存的数据对应的结果。
本实施例中,当存在至少两个任务操作同一个目标块,且该至少两个任务包括至少一个写任务或删除任务时,表明该写任务或删除任务可能将目标块中的数据更改或删除,为了保证其他任务能够获取到该目标块的真实数据,通过获取各任务的任务快照,并基于各任务快照对每个任务进行处理,保证了每个任务都能够完成,并且该任务操作的数据为该目标块的真实数据,从而提高了云存储系统处理并发任务的成功率和准确率。
图3为本发明实施例提供的一种云存储系统中的任务处理过程,可以包括以下步骤:
s301,当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息。
s302,针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据。
s303,针对每个块,判断是否存在至少两个任务操作该块,如果是,将所述块确定为目标块,其中,所述至少两个任务包括至少一个写任务或删除任务,且所述至少两个任务非全部为删除任务。
s304,当所述至少两个任务中包括至少一个删除任务时,根据所述至少两个任务的任务快照,获取所述目标块对应的块备份数据。
在本实施例中,当操作目标块的至少两个任务中包括至少一个删除任务时,处理该至少一个删除任务会将目标块中的数据删除。当处理完删除任务后,基于创建的任务快照处理其他任务时,由于任务快照中保存的是目标块中的元数据,而目标块中的数据已被删除,因此,可能导致其他任务处理失败。
因此,在本实施例中,当操作目标块的至少两个任务中包括至少一个删除任务时,服务器获取到各任务的任务快照后,可以进一步根据各任务快照,获取该目标块对应的块备份数据。具体地,服务器可以根据各任务快照,获取目标块中的全部数据,将获取的该全部数据作为块备份数据。
s305,删除所述目标块,并根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理。
当获取到目标块的块备份数据后,服务器可以处理该删除任务以及其他任务。具体地,可以首先根据删除任务删除该目标块,并根据至少两个任务中的其他任务,对该目标块的块备份数据进行处理。
在一种实现方式中,当上述至少两个任务中的其他任务为写任务时,根据该写任务,对目标块的块备份数据进行处理可以按以下步骤执行:将该写任务中对应的数据写入该目标块的块备份数据中,然后当该写任务完成时,将写入到块备份数据中的数据保存到磁盘的一个空块中。
在另一种实现方式中,当上述至少两个任务中的其他任务包括读任务时,根据该读任务,对目标块的块备份数据进行处理可以按以下步骤执行:针对每个读任务,根据该读任务请求的数据,在目标块的块备份数据中读取相应的数据。
当操作目标块的至少两个任务中包括至少一个删除任务时,通过获取目标块的块备份数据,可以保证当删除任务将目标块删除时,服务器还可以基于目标块的块备份数据处理其他任务。
在本实施例中,当操作目标块的至少两个任务中包括至少一个删除任务时,服务器可以获取该目标块的块备份数据,以基于目标块的块备份数据,处理至少两个任务中除删除任务之外的其他任务。随着任务数量的增加,在服务器中获取的块备份数据将会越来越多,这会占用系统较大的内存。因此,可以根据每个任务处理的进度,将可以删除的块备份数据删除。
具体地,当创建目标块的块备份数据后,服务器可以根据接收到的至少两个任务中的其他任务的数量,确定目标块的块备份数据的引用次数。然后,针对每个其他任务,当对每个其他任务进行处理后,将块备份数据的引用次数减1,并判断减1后的引用次数是否为0,如果是,则删除块备份数据。
例如,当对某一个目标块进行处理的任务为10个且有1个删除任务时,其他任务的数量即为9,这种情况下,服务器获取目标块的块备份数据后,可以设置该块备份数据的引用计数为9,也就是说,将会有9个其他任务需要基于该块备份数据进行处理。然后,针对每个其他任务,当处理完该任务后,将目标 块的块备份数据的引用计数减1。当其他任务均处理完后,目标块的块备份数据的引用计数应该变为0。因此,当检测到目标块的块备份数据的当前引用计数为0时,表明需要基于该目标块的备份数据进行处理的任务已全部处理完成,服务器即可以删除该目标块的块备份数据。
本实施例中,在获取目标块的块备份数据时,可以根据接收到的至少两个任务中的其他任务的数量,确定目标块的块备份数据的引用次数,然后,针对每个其他任务,将块备份数据的引用次数减1,并判断减1后的引用次数是否为0,如果是,则删除块备份数据,能够在基于目标块的块备份数据处理完其他任务后,及时删除目标块的块备份数据,释放系统内存。
在云存储系统中,允许多个读任务或删除任务同时操作同一个块,而不允许两个以上的写任务同时操作同一个块。
图4为本发明实施例提供的一种云存储系统中的任务处理方法,可以包括:
s401,当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息。
s402,针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据。
s403,针对每个块,判断是否存在至少两个任务操作该块,如果是,将所述块确定为目标块,其中,所述至少两个任务包括至少一个写任务或删除任务,且所述至少两个任务非全部为删除任务。
s404,针对该写任务,判断当前是否存在其他的写任务。
在本实施例中,当操作目标块的至少两个任务包括至少一个写任务且不包括删除任务时,服务器获取到每个任务的任务快照后,可以针对该写任务,判断当前是否存在其他的写任务。
由于针对同一个块不能同时有两个写任务对其操作,因此,当操作目标块的至少两个任务包括写任务时,服务器可以首先针对该写任务,判断当前是否存在其他的写任务,以确定是否可以处理该写任务。
具体地,在确定当前目标块的操作状态时,服务器可以针对该写任务,根据当前保存的目标块对应的操作状态,判断当前目标块的操作状态是否为写状态,若当前目标块的操作状态是写状态,则确定当前存在其他的写任务,若当前目标块的操作状态不是写状态,确定当前不存在其他的写任务。
当确定当前存在其他的写任务时,服务器可以对同时操作目标块的至少两个任务中包括的写任务不做处理。
可选地,当确定当前不存在其他的写任务时,服务器可以将目标块对应的操作状态修改为写状态,并且,在该写任务完成时,可以清除目标块对应的操作状态。
s405,若当前不存在其他的写任务,则基于所述至少两个任务的任务快照对所述目标块进行处理。
当服务器确定当前不存在其他的写任务时,表明可以对上述至少两个任务中的写任务进行处理,并且,也可以对其他的任务进行处理。具体地,服务器可以基于该至少两个任务的任务快照对目标块进行处理。
例如,当上述至少两个任务中除写任务的其他任务为读任务时,服务器可以基于该读任务的任务快照,根据该读任务请求的数据,在磁盘中的对应块中读取相应的数据。
本实施例提供的方法,当操作目标块的至少两个任务中包括至少一个写任务且不包括删除任务时,服务器可以首先判断是否存在其他的写任务,进而能够确定上述至少两个任务中包括的写任务是否可以处理。
具体地,在服务器中可以包括任务模块和块管理模块,任务模块用于接收任务,确定该任务操作的磁盘中的块的标识信息,并将任务类型以及确定的各个块的标识信息发送给块管理模块。块管理模块用于管理磁盘中的所有块,以及确定任务模块发送的任务是否可以处理。当接收到任务模块发送的任务类型以及该任务操作的磁盘中的块的标识信息后,块管理模块可以根据该任务类型,以及对应块的当前操作状态,确定该任务是否可以处理,并将确定的结果发送给任务模块。任务模块根据接收到的结果,对该任务进行处理或不处理。
为了保证每个任务能够顺利执行,任务模块确定了目标块后,将针对每个 目标块的任务发送到块管理模块。块管理模块针对每个目标块,判断每个任务是否能够处理,如果可以处理,则根据对该目标块中进行处理的任务的类型,分别建立对应的操作链表,并在该操作链表中依次记录每个任务的标识信息(id)。
例如,当块管理模块接收到的任务为读任务时,块管理模块可以确定该读任务可以处理。并且,块管理模块可以将该读任务的id记录到该读任务对应操作的目标块的读操作链表中。当该读任务完成后,块管理模块可以将该读任务的id从目标块的读操作链表中清除。当目标块的读操作链表为空时可以清除该目标块的读状态。
当块管理模块接收到的任务为删除任务时,块管理模块可以确定该删除任务可以处理。并且,块管理模块可以将删除任务的id记录到该删除任务对应操作的目标块的删除操作链表中。当该删除任务完成后,块管理模块可以将该删除任务的id从目标块的删除操作链表中清除。当目标块的删除操作链表为空时可以清除该目标块的删除状态。
当块管理模块接收到的任务类型为写任务时,块管理模块可以根据该写任务操作的目标块的操作状态,确定该任务是否可以处理。当该写任务对应的目标块的操作状态不是写状态时,块管理模块可以确定该写任务可以处理。当块管理模块确定该写任务可以处理时,块管理模块可以记录该写任务的id,并更改该写任务对应的目标块的操作状态。并且,当任务模块将该写任务处理完成后,块管理模块可以清除该写任务的id以及对应目标块的操作状态。
例如,当任务模块接收到写任务时,可以首先确定该写任务操作的磁盘中的块的标识信息,如该写任务操作的磁盘中的块的标识信息可以为1、3,并将任务类型以及确定的各个块的标识信息发送给块管理模块。块管理模块接收到任务模块发送的任务类型以及该任务操作的磁盘中的块的标识信息后,可以根据标识信息为1、3的块的操作状态,确定该写任务是否可以处理。如,当标识信息为1、3的块的操作状态均不是写状态时,表明针对这两个块当前不存在其他的写任务,块管理模块可以确定该写任务可以处理;而当标识信息为1的块的操作状态是写状态时,表明针对这个块,当前存在其他的写任务,块管理模块可以确定该写任务不处理。
当块管理模块确定该写任务可以处理时,可以将标识信息为1、3的块的操作状态更改为写状态。并且,当任务模块处理完该写任务后,块管理模块可以清除标识信息为1、3的块的操作状态。
图5为本发明实施例提供的一种云存储系统中的任务处理装置,应用于对并发任务进行处理的服务器,可以包括:
第一确定模块510,用于当同时接收到两个以上的任务时,确定每个任务操作的磁盘中的块的标识信息;
第一获取模块520,用于针对每个任务,获取该任务的任务快照,其中,所述任务快照包括该任务操作的磁盘中的每个块的元数据;
处理模块530,用于基于每个任务快照,对每个任务进行处理。
本方案中,当同时接收到两个以上的任务时,为了避免其中一个任务处理结果影响其他任务,可以针对每个任务获取其任务快照,并基于每个任务快照对每个任务进行处理,保证了每个任务都能够完成,并且每个任务操作的数据为该任务操作的磁盘中的块的真实数据,从而提高了云存储系统处理并发任务的成功率和准确率。
进一步地,如图6所示,所述装置还包括:
第一判断模块540,用于在基于每个任务快照,对每个任务进行处理之前,针对每个块,判断是否存在至少两个任务操作该块,如果是,将所述块确定为目标块,其中,所述至少两个任务包括至少一个写任务或删除任务,且所述至少两个任务非全部为删除任务;
所述处理模块530,具体用于基于所述至少两个任务的任务快照,对所述目标块进行处理。
本方案中,当存在至少两个任务操作同一个目标块,且该至少两个任务包括至少一个写任务或删除任务时,表明该写任务或删除任务可能将目标块中的数据更改或删除,为了保证其他任务能够获取到该目标块的真实数据,通过获 取各任务的任务快照,并基于各任务快照对每个任务进行处理,保证了每个任务都能够完成,并且该任务操作的数据为该目标块的真实数据,从而提高了云存储系统处理并发任务的成功率和准确率。
进一步地,当所述至少两个任务中包括至少一个删除任务时,所述装置还包括:
第二获取模块(图中未示出),用于根据所述至少两个任务的任务快照,获取所述目标块对应的块备份数据;
所述处理模块530包括:
删除子模块(图中未示出),用于删除所述目标块;
处理子模块(图中未示出),用于根据所述至少两个任务中的其他任务,对所述目标块的块备份数据进行处理。
进一步地,当所述至少两个任务中的其他任务为写任务时,所述处理子模块,具体用于:
将所述写任务中对应的数据写入所述目标块的块备份数据中;
当所述写任务完成时,将写入到所述块备份数据中的数据保存到磁盘的一个空块中。
进一步地,当所述至少两个任务中的其他任务包括读任务时,所述处理子模块,具体用于:
针对每个读任务,根据所述读任务请求的数据,在所述块备份数据中读取相应的数据。
进一步地,所述装置还包括:
第二确定模块(图中未示出),用于根据所述至少两个任务中的其他任务的数量,确定所述块备份数据的引用次数;
删除模块(图中未示出),用于针对每个其他任务,将所述块备份数据的引用次数减1,并判断减1后所述引用次数是否为0,如果是,则删除所述块备 份数据。
本方案中,当操作目标块的至少两个任务中包括至少一个删除任务时,通过获取目标块的块备份数据,可以保证当删除任务将目标块删除时,服务器还可以基于目标块的块备份数据处理其他任务。
另外,在本方案中,在获取目标块的块备份数据时,可以根据接收到的至少两个任务中的其他任务的数量,确定目标块的块备份数据的引用次数,然后,针对每个其他任务,将块备份数据的引用次数减1,并判断减1后的引用次数是否为0,如果是,则删除块备份数据,能够在基于目标块的块备份数据处理其他任务后,及时删除目标块的块备份数据,释放系统内存。
进一步地,当所述至少两个任务包括至少一个写任务且不包括删除任务时,所述装置还包括:
第二判断模块(图中未示出),用于针对该写任务,判断当前是否存在其他的写任务,如果否,则触发所述处理模块530。
进一步地,当所述至少两个任务中除写任务的其他任务为读任务时,所述处理模块530,具体用于:
基于所述读任务对应的任务快照,根据所述读任务请求的数据,在所述磁盘中的对应块中读取相应的数据。
进一步地,所述第二判断模块,具体用于:
针对所述写任务,根据当前保存的所述目标块对应的操作状态,判断当前所述目标块的操作状态是否为写状态;
若是,则确定当前存在其他的写任务,否则,确定当前不存在其他的写任务。
进一步地,所述装置还包括:
执行模块(图中未示出),用于当所述第二判断模块判断结果为否时,将所述目标块对应的操作状态修改为写状态;
清除模块(图中未示出),用于在所述写任务完成时,清除所述目标块对 应的操作状态。
本方案中,当操作目标块的至少两个任务中包括至少一个写任务且不包括删除任务时,服务器可以首先判断是否存在其他的写任务,进而能够确定上述至少两个任务中包括的写任务是否可以处理。
对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。