数据处理方法、装置、设备及存储介质与流程

文档序号:21406965发布日期:2020-07-07 14:41阅读:182来源:国知局
数据处理方法、装置、设备及存储介质与流程

本发明涉及存储领域,尤其涉及一种数据处理方法、装置、设备及存储介质。



背景技术:

数据去重又称重复数据删除(datadeduplication),是一种应用在存储系统中的全局地识别和消除冗余数据的技术。为了让有限的存储资源可以存放更多的数据,大部分分布式存储系统均采用了数据去重。

相关技术中,数据去重往往是在数据写入时进行数据缩减,比如,通过对写入数据进行指纹计算、对比,决定是否向后端硬件存储设备发送数据写请求,由于每次写请求都需要指纹计算和对比,会造成上层业务的写时延放大。



技术实现要素:

有鉴于此,本发明实施例提供了一种数据处理方法、装置、系统及存储介质,旨在有效降低数据写入时上层业务的写时延。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据处理方法,包括:

获取写请求中的待写入数据;

确定所述待写入数据对应的元数据;

将所述待写入数据及所述待写入数据对应的元数据写入目标文件;

确定所述待写入数据及所述待写入数据对应的元数据写入所述目标文件,生成所述待写入数据被成功写入的响应信息;

对所述写请求中已写入所述目标文件的数据进行去重。

本发明实施例还提供了一种数据处理装置,包括:

获取模块,用于获取写请求中的待写入数据;

元数据确定模块,用于确定所述待写入数据对应的元数据;

写入模块,用于将所述待写入数据及所述待写入数据对应的元数据写入目标文件;

响应模块,用于确定所述待写入数据及所述待写入数据对应的元数据写入所述目标文件,生成所述待写入数据被成功写入的响应信息;

去重模块,用于对所述写请求中已写入所述目标文件的数据进行去重。

本发明实施例又提供了一种数据处理设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器,用于运行计算机程序时,执行本发明任一实施例所述方法的步骤。

本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本发明任一实施例所述方法的步骤。

本发明实施例提供的技术方案,确定待写入数据对应的元数据,将所述待写入数据及所述待写入数据对应的元数据写入目标文件;确定所述待写入数据及所述待写入数据对应的元数据写入所述目标文件,生成所述待写入数据被成功写入的响应信息,由于不需要对待写入数据进行指纹计算、比对后决定是否执行写操作,减少了写延时,可以快速响应写请求,并对所述写请求中已写入所述目标文件的数据进行去重,从而既可以减少数据写入时上层业务的写时延,又能够有效实现数据去重,提高存储空间利用率。

附图说明

图1为本发明实施例数据处理方法示意图;

图2为本发明应用实施例数据处理方法的流程示意图;

图3为本发明实施例数据处理装置的结构示意图;

图4为本发明应用实施例数据处理装置的结构示意图;

图5为本发明实施例数据处理设备的结构示意图。

具体实施方式

下面结合附图及实施例对本发明再作进一步详细的描述。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本发明实施例提供了一种数据处理方法,应用于数据处理设备,该数据处理设备可以为用于数据读写的客户端或者服务器,还可以为分布式存储系统中的数据读写处理节点,各数据读写处理节点可以将数据写入共享的存储池或者从存储池中读取数据。如图1所示,该方法包括:

步骤101,获取写请求中的待写入数据;

数据处理设备可以接收外部输入的写请求,从而获取写请求对应的待写入数据。

实际应用中,数据处理设备可以接收上层业务(比如,生成写请求的特定应用)下发的待写入数据,上层业务可以根据用户的输入生成写请求。写请求对应的待写入数据的数量可以为多个,数据处理设备可以依次获取写请求对应的各待写入数据。比如,可以针对写请求的目标数据根据预设的数量或者预设的切片大小划分为多个待写入数据,对各待写入数据依次进行写入操作。在一应用示例中,假定预设的数量为m,m为大于1的自然数,基于目标数据的大小和m确定待写入数据的切片大小,根据确定的切片大小,逐一切分出大小相同的m-1个数据块,切分后余下的为第m个数据块。其中,待写入数据的切片大小可以是4kb、8kb、12kb、16kb或其他粒度大小。在另一应用示例中,可以根据预设的切片大小将目标数据划分为多个待写入数据。

步骤102,确定所述待写入数据对应的元数据;

这里,元数据为描述数据的数据(dataaboutdata)。在一些实施例中,所述元数据包括:指纹信息(fingerprint,fp)、逻辑块地址及第一物理块地址的对应关系。指纹信息是指根据待写入数据的内容算出的定长哈希值,用于唯一标识待写入数据。逻辑块地址(logicalblockaddresses,lba)是指待写入数据在目标文件中对应的数据块区域,该目标文件可以存储在非易失性存储介质上。第一物理块地址(physicalblockaddresses,pba)是指待写入数据分配的存储介质上的物理存储区域。

实际应用中,可以对获取的待写入数据,基于预设算法,比如信息-摘要算法5(message-digestalgorithm5,md5)、安全哈希算法(securehashalgorithm,sha1)生成指纹信息,并确定待写入数据的lba与第一pba的映射关系,得到包括指纹信息、lba及第一pba的对应关系的元数据。

步骤103,将所述待写入数据及所述待写入数据对应的元数据写入目标文件;

这里,数据处理设备可以将待写入数据及待写入数据对应的元数据写入目标文件,目标文件可以存储在数据处理设备本地侧或者与数据处理设备相连的分布式存储设备上,本发明实施例对此不做具体限定。

实际应用中,目标文件包括用于存储待写入数据的元数据的数据包包头,还包括用于存储待写入数据的数据包包体,待写入数据、待写入数据对应的元数据分别写入目标文件的数据包包头、数据包包体中。具体地,可以将待写入数据、待写入数据对应的元数据以日志的形式追加写至目标文件中,通过追加写可以提高数据写入的效率。

步骤104,确定所述待写入数据及所述待写入数据对应的元数据写入所述目标文件,生成所述待写入数据被成功写入的响应信息;

若待写入数据、待写入数据对应的元数据成功追加写至目标文件中,则可以向上层业务返回待写入数据写入成功的消息,即生成所述待写入数据被成功写入的响应信息,从而可以立即执行后续的写请求。

步骤105,对所述写请求中已写入所述目标文件的数据进行去重。

这里,可以在向上层业务返回待写入数据写入成功的消息后,对所述写请求中已写入所述目标文件的数据进行去重,即实现了数据写入的异步去重,不需要在写入操作之前进行数据去重,从而可以在不影响数据写入速度的前提下,通过数据去重,达到优良的写数据性能和存储空间利用率,从而可以有效减少上层业务的写延时。

在一实施例中,所述对所述写请求中已写入所述目标文件的数据进行去重,包括:

将所述写请求中已写入所述目标文件的数据对应的元数据存储至元数据服务器;

接收所述元数据服务器返回的第二物理块地址;

若所述返回的第二物理块地址不同于相应的数据的第一物理块地址,对所述相应的数据去重。

这里,所述元数据服务器存储所述目标文件中历史写入数据的元数据,所述元数据服务器基于所述写请求中已写入所述目标文件的数据的指纹信息是否重复的结果返回第二物理块地址。

在一应用示例中,元数据服务器维护历史写入数据的元数据,即元数据服务器存储有历史写入数据的指纹信息、lba和pba。对于分布式存储系统,元数据服务器可以存储分布式存储系统的历史写入数据的元数据。数据处理设备启动异步数据去重后,将写请求中已写入目标文件的数据的元数据(lba,fp,第一pba)发送至元数据服务器,元数据服务器接收到元数据(lba,fp,第一pba)后,会根据fp判断该元数据对应的数据是否需要数据去重,由于fp可以唯一标识数据,若对接收的元数据的fp进行指纹查找,查找到相同的fp,则认定该数据是重复数据,元数据服务器累加相应fp的引用计数。若没有查找到相同的fp,则表明该数据为首次写,将该数据的元数据(lba,fp,第一pba)持久化,以新建该数据的fp、lba与第一pba的对应关系。元数据服务器基于所述写请求中已写入所述目标文件的数据的指纹信息是否重复的结果返回第二物理块地址,具体地,若fp重复,则元数据服务器将首次写对应的第一pba作为第二pba返回给数据处理设备;若fp不重复,则元数据服务器将该fp作为首次写,并将对应的第一pba作为第二pba返回给数据处理设备。这样,数据处理设备可以根据接收的第二pba是否与第一pba相同来判断数据是否需要去重,若第二pba不同于与相应的第一pba,则表明该数据为重复数据,对该数据进行数据去重。

在一实施例中,所述对所述相应的数据去重,包括:

将所述相应的数据的第一物理块地址标识为无效地址。

实际应用中,可以设置与目标文件对应的第一位图(bitmap),该第一位图存储于非易失性存储介质,用于持久化标识所述目标文件的物理存储区域是否有效。物理存储区域各地址位通过二进制的位图来标识是否有效,比如,置0表示无效,置1表示有效。若元数据服务器返回的数据的第二pba不同于相应的第一pba,则表明该数据为重复数据,需要进行数据去重。这里,可以基于所述目标文件中所述相应的数据的无效地址更新第一位图,比如,将第一位图中重复数据的物理存储区域置0,表明相应的数据为垃圾数据,仅保留首次写入的数据的物理存储区域有效。

在一实施例中,所述方法还包括:

基于无效地址释放所述相应的数据的存储空间。

这里,可以在第一位图中将重复数据的物理存储区域标识为无效地址后,由数据处理设备中的gc(garbagecollection,垃圾回收)释放无效地址的数据的存储空间。

在一实施例中,所述方法还包括:

若所述返回的第二物理块地址不同于相应的数据的第一物理块地址,将内存中缓存的相应数据的元数据中的第一物理块地址替换为所述返回的第二物理块地址。

实际应用中,数据处理设备的内存中缓存各待写入数据的元数据,这样,在进行数据读取时,可以根据缓存的元数据,快速读取相应的数据。如果数据为重复数据,则数据的第一pba为无效地址,将缓存中的重复数据的第一pba替换为元数据服务器返回的第二pba,可以完成缓存的元数据的更新。

在一实施例中,所述方法还包括:

基于所述目标文件中所述相应的数据的无效地址更新第二位图;其中,所述第二位图位于内存中,用于缓存标识所述目标文件的物理存储区域是否有效。

实际应用中,数据处理设备的内存中缓存第二位图,第二位图用于缓存标识所述目标文件的物理存储区域是否有效。这样,在进行数据读取时,可以根据缓存的第二位图,快速目标文件的物理存储区域是否有效。如果数据为重复数据,则数据的第一pba为无效地址,更新缓存的第二位图,可以利用缓存信息快速确定目标文件的物理存储区域是否有效。

图2示出了一应用实施例数据处理方法的流程示意图。如图2所示,本应用实施例数据处理方法包括:

步骤201,接收写请求,执行写操作并返回写成功的响应;

数据处理设备接收上层业务下发的写请求,获取待写入数据,确定待写入数据的对应的元数据,以日志的形式将所述待写入数据及所述待写入数据对应的元数据追加写到目标文件,当此次追加写完成后,向上层业务返回写请求成功的响应。

步骤202,发起异步去重;

数据处理设备在向上层业务返回写请求成功的响应后,将新写入数据的元数据(lba,fp,第一pba)提交至元数据服务器持久化。

步骤203,插入指纹;

元数据服务器接收到元数据(lba,fp,第一pba)后,会根据fp判断此次接收的元数据对应的数据是否需要数据去重,通过查找元数据服务器存储的fp表,该fp表记录了历史写入数据的fp及相应fp的引用次数,若查找到相同的fp,则认为是重复数据,累加fp的引用次数,否则认为是首次写,将相应数据的元数据持久化至元数据服务器。若元数据服务器成功持久化相应的元数据,则将元数据中的第一pba作为第二pba返回给数据处理设备,否则,将元数据服务器侧查找到相同fp对应的pba作为第二pba返回给数据处理设备。

步骤204,置入头部队列;

数据处理设备根据元数据服务器返回的第二pba是否与相应的第一pba相同来判断相应的数据是否为重复数据,根据各数据是否为重复数据的结果,更新缓存中目标文件的头部队列,这里,缓存的头部队列包括数据的fp表,若数据为重复数据,则将相应的fp表中的引用次数加1,否则,将相应的fp加入fp表。

步骤205,更新内存缓存的地址映射关系;

如果数据为重复数据,内存中缓存的相应数据的逻辑地址与物理地址的映射关系需要更新,可以根据元数据服务器返回的第二pba更新缓存中的逻辑地址与物理地址的映射关系。

步骤206,更新位图;

这里,数据处理设备根据数据是否为重复数据的结果,更新非易失性存储介质中存储的第一位图和内存中缓存的目标文件的第二位图,其中,第一位图用于持久化标识所述目标文件的物理存储区域是否有效,第二位图用于缓存标识所述目标文件的物理存储区域是否有效。

步骤207,更新逻辑地址和物理地址映射;

这里,数据处理设备可以基于缓存中更新后的地址映射关系更新逻辑地址管理模块中维护的逻辑地址和物理地址的映射关系。

步骤208,基于无效地址释放所述相应的数据的存储空间;

这里,gc可以基于第二位图释放无效地址的存储空间。

步骤209,置目标文件映射表。

实际应用中,数据处理设备可以对不同的目标文件进行写入操作,由于写入操作与数据去重是异步的,可能存在目标文件的写入操作已完成,但数据去重尚未完成的情形,基于此,数据处理设备缓存不同目标文件及相应数据去重状态的映射表,如果当前的目标文件已经数据去重结束,则在映射表中将相应目标文件标识为去重完成,相应目标文件的异步去重过程结束。

为了实现本发明实施例的方法,本发明实施例还提供一种数据处理装置,该数据处理装置与上述数据处理方法对应,上述数据处理方法实施例中的各步骤也完全适用于本数据处理装置实施例。

如图3所示,该装置包括:获取模块301、元数据确定模块302、写入模块303、响应模块304及去重模块305。其中,

获取模块301,用于获取写请求中的待写入数据;

元数据确定模块302,用于确定所述待写入数据对应的元数据;

写入模块303,用于将所述待写入数据及所述待写入数据对应的元数据写入目标文件;

响应模块304,用于确定所述待写入数据及所述待写入数据对应的元数据写入所述目标文件,生成所述待写入数据被成功写入的响应信息;

去重模块305,用于对所述写请求中已写入所述目标文件的数据进行去重。

在一实施例中,所述元数据包括:指纹信息、逻辑块地址及第一物理块地址的对应关系,去重模块305具体用于:

将所述写请求中已写入所述目标文件的数据对应的元数据存储至元数据服务器;

接收所述元数据服务器返回的第二物理块地址;

若所述返回的第二物理块地址不同于相应的数据的第一物理块地址,对所述相应的数据去重;

其中,所述元数据服务器存储所述目标文件中历史写入数据的元数据,所述元数据服务器基于所述写请求中已写入所述目标文件的数据的指纹信息是否重复的结果返回第二物理块地址。

在一实施例中,去重模块305具体用于:

将所述相应的数据的第一物理块地址标识为无效地址。

在一实施例中,所述装置还包括:空间释放模块306,用于基于无效地址释放所述相应的数据的存储空间。

在一实施例中,所述装置还包括:缓存更新模块307,用于若所述返回的第二物理块地址不同于相应的数据的第一物理块地址,将内存中缓存的相应数据的元数据中的第一物理块地址替换为所述返回的第二物理块地址。

在一实施例中,去重模块305具体用于:

基于所述目标文件中所述相应的数据的无效地址更新第一位图;其中,所述第一位图存储于非易失性存储介质,用于持久化标识所述目标文件的物理存储区域是否有效。

在一实施例中,缓存更新模块307还用于:

基于所述目标文件中所述相应的数据的无效地址更新第二位图;其中,所述第二位图位于内存中,用于缓存标识所述目标文件的物理存储区域是否有效。

实际应用时,获取模块301、元数据确定模块302、写入模块303、响应模块304、去重模块305、空间释放模块306及缓存更新模块307,可以由数据处理装置中的处理器来实现。当然,处理器需要运行存储器中的计算机程序来实现它的功能。

需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图4示出了一应用实施例数据处理装置的结构示意图,如图4所示,在本应用实施例中,上层业务可以经分布式存储挂载点访问后端存储设备,其中,上层业务可以部署在客户端,后端存储设备可以为分布式存储系统的数据读写节点,分布式存储挂载点可以为连接客户端与分布式存储系统的节点的网络设备。数据处理装置设置于数据读写节点上。

如图4所示,该数据处理装置包括:段文件处理模块401、去重逻辑模块402、指纹索引模块403及gc回收模块404,其中,段文件处理模块401具有前述获取模块301、元数据确定模块302、写入模块303及响应模块304的功能,去重逻辑模块402和指纹索引模块403相当于前述的去重模块305,gc回收模块404相当于前述的空间释放模块306。

该数据处理装置的具体处理流程如下:

1、段文件处理模块401接收上层业务下发的写请求,获取待写入数据,确定待写入数据的对应的元数据,以日志的形式将所述待写入数据及所述待写入数据对应的元数据追加写到段文件,当此次追加写完成后,向上层业务返回写请求成功的响应。

2、去重逻辑模块402确定段文件处理模块401向上层业务返回写请求成功的响应后,启动异步的数据去重流程。

这里,去重逻辑模块402可以在段文件处理模块401返回多个写请求成功的响应后,基于批量的写请求启动异步的数据去重流程。

3、指纹索引模块403将新写入数据的元数据(lba,fp,第一pba)提交至元数据服务器持久化,并接收元数据服务器返回的相应的第二pba,并根据返回的第二pba更新段信息表和地址映射表。

这里,段信息表用于段文件的相应物理存储区域是否有效,地址映射表用于维护段文件的逻辑地址和实际的物理地址的映射关系。元数据服务器接收到元数据(lba,fp,第一pba)后,会根据fp判断此次接收的元数据对应的数据是否需要数据去重,通过查找元数据服务器存储的fp表,该fp表记录了历史写入数据的fp及相应fp的引用次数,若查找到相同的fp,则认为是重复数据,累加fp的引用次数,否则认为是首次写,将相应数据的元数据持久化至元数据服务器。若元数据服务器成功持久化相应的元数据,则将元数据中的第一pba作为第二pba返回给指纹索引模块403,否则,将元数据服务器侧查找到相同fp对应的pba作为第二pba返回给指纹索引模块403。

指纹索引模块403根据第二pba是否与相应的第一pba相同的结果来更新段信息表和地址映射表,若第二pba不同于第一pba,则表明发生数据去重,将相应数据的第一pba在段信息表置0,并将地址映射表中相应的第一pba替换为第二pba;若第二pba与第一pba相同,则表明相应数据为首次写,将相应数据的第一pba在段信息表置1,并将相应数据的lba与第一pba的映射关系插入地址映射表。

4、gc回收模块404基于段文件的段信息表释放段文件中无效地址的存储空间。

基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供一种数据处理设备。图5仅仅示出了该数据处理设备的示例性结构而非全部结构,根据需要可以实施图5示出的部分结构或全部结构。

如图5所示,本发明实施例提供的数据处理设备500包括:至少一个处理器501、存储器502、用户接口503和至少一个网络接口504。数据处理设备500中的各个组件通过总线系统505耦合在一起。可以理解,总线系统505用于实现这些组件之间的连接通信。总线系统505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统505。

其中,用户接口503可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

本发明实施例中的存储器502用于存储各种类型的数据以支持数据处理设备的操作。这些数据的示例包括:用于在数据处理设备上操作的任何计算机程序。

本发明实施例揭示的数据处理方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,数据处理方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器501可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成本发明实施例提供的数据处理方法的步骤。

在示例性实施例中,数据处理设备可以被一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、fpga、通用处理器、控制器、微控制器(mcu,microcontrollerunit)、微处理器(microprocessor)、或者其他电子元件实现,用于执行前述方法。

可以理解,存储器502可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)、可擦除可编程只读存储器(eprom,erasableprogrammableread-onlymemory)、电可擦除可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory)、磁性随机存取存储器(fram,ferromagneticrandomaccessmemory)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(cd-rom,compactdiscread-onlymemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,randomaccessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,staticrandomaccessmemory)、同步静态随机存取存储器(ssram,synchronousstaticrandomaccessmemory)、动态随机存取存储器(dram,dynamicrandomaccessmemory)、同步动态随机存取存储器(sdram,synchronousdynamicrandomaccessmemory)、双倍数据速率同步动态随机存取存储器(ddrsdram,doubledataratesynchronousdynamicrandomaccessmemory)、增强型同步动态随机存取存储器(esdram,enhancedsynchronousdynamicrandomaccessmemory)、同步连接动态随机存取存储器(sldram,synclinkdynamicrandomaccessmemory)、直接内存总线随机存取存储器(drram,directrambusrandomaccessmemory)。本发明实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体可以是计算机可读存储介质,例如包括存储计算机程序的存储器502,上述计算机程序可由数据处理设备的处理器501执行,以完成本发明实施例方法所述的步骤。计算机可读存储介质可以是rom、prom、eprom、eeprom、flashmemory、磁表面存储器、光盘、或cd-rom等存储器。

需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

另外,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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