一种数据删除方法、装置、设备及计算机可读存储介质与流程

专利2022-06-29  46


本申请实施例涉及计算机技术领域,涉及但不限于一种数据删除方法、装置、设备及计算机可读存储介质。



背景技术:

随着闪存介质的普及,在全闪存存储中,压缩与重删成为全闪存存储中的一项关键技术,通过压缩与重删可以为客户节省存储空间,降低存储成本。其中数据重删,是通过安全散列算法1(sha1,securehashalgorithm1)等哈希(hash)算法计算预存储数据块的指纹,然后跟指纹库里面已有指纹进行对比,进而确定是否已有相同的数据块,如果有相同的数据块,则删除预存储数据块,从而达到删除重复数据的目的。但是,数据重删在计算指纹时,通常会采用sha1之类的强hash算法计算指纹,计算复杂度较高;另外,在识别重复指纹时,需要从指纹库中百亿甚至千亿级别的指纹数量查找是否存在重复指纹,导致中央处理器(cpu,centralprocessingunit)的消耗比较大,对存储的性能也有比较大的影响。



技术实现要素:

有鉴于此,本申请实施例提供一种数据删除方法、装置、设备及计算机可读存储介质。

本申请实施例的技术方案是这样实现的:

本申请实施例中提供一种数据删除方法,所述方法包括:

获取预存储的第一数据块;

若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,删除所述第一数据块;其中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块;

将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

本申请实施例提供一种数据删除装置,所述装置包括:

第一获取模块,用于获取预存储的第一数据块;

第一删除模块,用于若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,删除所述第一数据块;其中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块;

第一确定模块,用于将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

本申请实施例提供一种数据删除设备,所述设备至少包括:

处理器;以及

存储器,用于存储可在所述处理器上运行的计算机程序;

其中,所述计算机程序被处理器执行时实现所述的数据删除方法的步骤。

本申请实施例提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行所述的数据删除方法的步骤。

本申请实施例提供的一种数据删除方法、装置、设备及计算机可读存储介质,其中,通过将引用次数超过次数阈值的数据块加入到预设的数据模型库中,当获取到预存储的第一数据块时,若在预设的数据模型库中存在相同的第二数据块时,直接删除第一数据块,如此,针对出现频率高的一些数据块根据数据模型进行删除,不仅能够提高数据删除的效率,还能降低cpu消耗,进而提升存储性能。

附图说明

在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。

图1为本申请实施例提供的一种数据删除方法一种实现流程示意图;

图2为本申请实施例提供的建立预设的数据模型库的实现流程示意图;

图3为本申请实施例提供一种预设的数据模型库的示意图;

图4为本申请实施例提供的通过关键词进行预判断的流程示意图;

图5为本申请实施例提供另一种预设的数据模型库的示意图;

图6为本申请实施例提供的另一种数据删除方法的实现流程示意图;

图7为本申请实施例提供的一种数据删除装置的结构示意图;

图8为本申请实施例提供的另一种数据删除装置结构示意图;

图9为本申请实施例提供的数据删除设备的组成结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

如果申请文件中出现“第一\第二\第三”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

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

本申请实施例提供一种数据删除方法,所述方法应用于数据删除设备,本实施例提供的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本实施例提供的方法中各个步骤。在一些实施例中,该计算机程序可以被数据删除设备中的处理器执行。图1为本申请实施例提供的一种数据删除方法一种实现流程示意图,如图1所示,所述方法包括:

步骤s101,数据删除设备获取预存储的第一数据块。

本申请实施例中,所述预存储的第一数据块为外部设备发送写入请求时,在所述请求中携带的数据块。数据删除设备获取预存储的第一数据块可以通过以下方式实现,在接收到数据的写入请求时,将写请求中携带的数据划分成n个数据块(其中n为正整数),以获取预存储的第一数据块。

步骤s102,若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,数据删除设备删除所述第一数据块。

本申请实施例中,当获取到预存储的第一数据块后,将所述第一数据块与预设的数据模型库中存储的数据块进行比对,判断是否有与第一数据块相同的第二数据块,若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,数据删除设备删除所述第一数据块。在其他实施例中,所述数据模型库中存储的数据块也可以叫数据模型。

本申请实施例中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块。需要说明的是,所述预设的模型数据库中的各个数据块为已存储在存储空间中的数据块。本申请实施例中,可以设置次数阈值,例如设置的次数阈值为100次,将引用次数超过100次的数据块作为数据模型加入数据模型库中。

在一些实施例中,所述预设的数据模型库中还包括全重复数据块,由于全重复数据块通常也是出现较多的数据块,因此将全重复数据块也作为数据模型加入数据模型库中从而得到预设的数据模型库。示例性地,全重复数据块包括:全0数据块、全1数据块等。

本申请实施例中,当将引用次数超过次数阈值的数据块和/或全重复数据块加入数据模型库中时,通常需要给各个数据块一个模型标识(id,identitydocument),每个模型id代表唯一的数据块,这里的模型id可以是编号,也可以是名称。示例性地,全0数据块对应模型id为0,全1数据块对应模型id为1,对数据模型库中的各个数据块进行标识,以使各个数据有对应的模型id。

本申请实施例中,判断预设的数据模型库中是否存在与所述第一数据块相同的第二数据块,可以通过以下方式实现:

方式一:通过将第一数据块与数据模型中的各个数据块进行字节比较,以判断在所述数据模型库中是否存在与所述第一数据块是否相同的第二数据块,当数据块中的各个字节都相同时即确定第一数据块与第二数据块相同。当然,这种方式效率较低,因此提出方式二。

方式二:通过获取第一数据块中的第一关键(key)值,判断所述数据模型库中是否存在与所述第一key值相同的目标数据块,当在所述数据模型库中存在与所述第一key值相同的目标数据块时,将所述目标数据块和所述第一数据块进行字节比对,以确定所述第一数据块与所述目标数据块是否各字节均相同。

本申请实施例中,当在预设的数据模型库中存在与所述第一数据块相同的第二数据块时,表征在存储空间中有与第一数据块相同的数据块,因此,直接删除所述第一数据块。

步骤s103,数据删除设备将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

本申请实施例中,当删除了第一数据块时,需要保存所述第一数据块的第一元数据,由于第一数据块与第二数据块是相同的,因此,将第二数据块的元数据确定为所述第二数据块的元数据。由于第二数据块的元数据包括第二数据块的模型id,因此,在将所述第二数据块的元数据确定为所述第一数据块的第一元数据时,第一数据块的第一元数据也就包括模型id。

承接上面的示例,第二数据块为全0数据,全0数据块对应模型id为0,而第一数据块也为全0数据,因此,将所述第二数据块的元数据确定为所述第一数据块的第一元数据,即将模型id为0记录入第一数据块的第一元数据中。

在一些实施例中,第二数据块的元数据还包括第二元数据的类型,所述类型表征在数据模型库中。当将所述第二数据块的元数据确定为所述第一数据块的第一元数据时,可以通过类型确定第一数据块是通过数据模型库比对进行地删除。本申请实施例中,将通过数据模型库进行的删除确定为第一类型,将通过指纹库进行的删除确定为第二类型,示例性地,第一类型用数字1表示,第二类型用数字2表示。当第一数据块的元数据有类型数字1时,表征是通过数据模型库进行的删除。

本申请实施例提供的数据删除方法,通过将引用次数超过次数阈值的数据块加入到预设的数据模型库中,当获取到预存储的第一数据块时,判断在预设的数据模型库中是否存在相同的第二数据块,当存在相同的第二数据块时,直接删除第一数据块,如此,针对出现频率高的一些数据块通过数据模型进行删除,能够提高数据删除的效率,不仅还能降低cpu消耗,还能提升存储性能。

在一些实施例中,在步骤s101之前,所述方法还包括:步骤s100,建立预设的数据模型库,本申请实施例中,步骤s100,建立预设的数据模型库,可以通过以下步骤实现,图2为本申请实施例提供的建立预设的数据模型库的实现流程示意图,如图2所示,包括:

步骤s100a,数据删除设备确定指纹库中每一指纹的引用次数;其中,所述指纹库中的指纹与已存储的数据块一一对应。

本申请实施例中,所述指纹库中每一指纹是基于已存储的每一数据块通过hash算法计算得到的。数据删除设备可以对指纹库中的各个指纹设置一个引用计数的字段,所述引用计数的字段代表每条指纹的数据块被引用的次数。当数据块第一次被写入的时候,引用计数为1,后面再有重复的写入,不再重复写入数据,直接引用原数据,并将引用计数加1,从而得到各个数据块的引用次数。引用次数越大,表明写入的次数越多,也就是说该数据块是经常出现的数据块,因此,将引用次数较多的数据块作为数据模型加入到数据模型库中。本申请实施例中,数据删除设备可以获取指纹库中每一指纹的引用次数。

步骤s100b,数据删除设备将引用次数超过次数阈值的指纹确定为目标指纹。

本申请实施例中,当数据删除设备获取到指纹库中每一指纹的引用次数时,可以设定次数阈值挑选指纹库中的指纹,例如,次数阈值为200次,将引用次数超过200次的指纹确定为目标指纹。

步骤s100c,数据删除设备将所述目标指纹对应的数据块加入数据模型库,以得到预设的数据模型库。

承接上面的示例,将引用次数超过200次的指纹的目标指纹对应的数据块加入数据模型库中,从而得到预设的数据模型。在一些实施例中,还可以将全重复数据块全部加入预设的数据模型库中。图3为本申请实施例提供一种预设的数据模型库的示意图,如图3所示,所述预设的数据模型库中包括全重复数据块和引用次数超过次数阈值的数据块。其中,每个数据块的元数据包括:模型id和key值。

本申请实施例提供的方法,通过将引用次数超过次数阈值的数据块加入到预设的数据模型库中,以使当获取预存储的第一数据块时,通过预设的数据模型库进行判断,提高出现频率高的数据块的删除效率。

在一些实施例中,在步骤s101之后和步骤s102之前,所述方法还包括:对第一数据块通过关键值进行预判断。进一步地,对所述第一数据块通过关键词进行预判断可以通过图4中的步骤s401至步骤s403来实现。

步骤s401,数据删除设备获取所述第一数据块的第一关键值。

本申请实施例中,通常获取第一数据块的第一key值时,需要与获取数据模型库中各个数据块的第一key值时的方式相同。例如,如果数据模型库中各个数据块是根据hash算法确定的各个数据模型的key值,那么获取第一数据块的第一key值也需要使用hash算法来确定;如果数据模型库中各个数据块是根据各个数据块m个预设位置对应的m个字节来确定的key值,那么在确定第一数据块的第一key值是也需要提取所述第一数据块中m个预设位置对应的m个字节来确定的第一key值。需要说明的是,在数据模型库中各个数据块对应的key值都不相同。

示例性的,图5为本申请实施例提供另一种预设的数据模型库的示意图,如图5所示,数据模型库中有两个数据块,包括:数据块1和数据块2,其中,数据块1为ab12c34de,数据块2为ab57c89de,此时根据m个预设位置对应的m个字节来确定的key值,首先从前部、中部和后部,各抽取1个字节组成作为key值,如果抽取第1、5和9字节组成key值时,两个数据模型的key值相同,不可取,改成抽取第1、4和9字节。此时,数据块1的key值为:a2e,数据块2的key值为a7e。将得到的key值对应地存储在各个数据块的元数据中。即数据块1对应模型id为1001和key为a2e,数据块2对应模型id为1002和key为a7e。当接收到第一数据块时,也需要抽取第一数据块的第1、4和9字节组成key值。示例第一数据块为123456789。同样的抽取第一数据块的第1、4和9字节组成key值为149。再例如第一数据块为:ab1234cde,同样抽取第一数据块的第1、4和9字节组成key值为a2e,再例如第一数据块为:ab57c89de,同样抽取第一数据块的第1、4和9字节组成key值为a7e。

步骤s402,若在所述数据模型库中存在与所述第一关键值相同的目标数据块,数据删除设备将所述目标数据块和所述第一数据块进行字节比对。

本申请实施例中,由于数据模型库中的各个数据块有对应的key值,当获取到第一数据块的第一key值时即可以判断所述数据模型中是否存在与所述第一key值相同的目标数据块。承接上面的示例,当第一数据块为123456789,所述第一key值为149。此时在数据模型库中并没有与149相同的目标数据块。当第一数据块为ab1234cde,所述第一key值为a2e,此时在数据模型中有a2e对应的目标数据块ab12c34de。本申请实施例中,当在所述数据模型库中存在与所述第一关键值相同的目标数据块时,将所述目标数据块和所述第一数据块进行字节比对。本申请实施例中,如果所述第一数据块与所述目标数据块各字节均相同,则执行步骤s403。如果所述第一数据块与所述目标数据块的各字节不相同,则通过指纹库进行判断是删除还是压缩。

步骤s403,若所述第一数据块与所述目标数据块各字节均相同,将所述目标数据块确定为与第一数据块相同的第二数据块。

本申请实施例中,数据删除设备当在所述数据模型库中存在与所述第一关键值相同的目标数据块时,可以将第一数据块与目标数据块进行字节比对,以确定所述第一数据块与所述目标数据块是否各个字节均相同。承接上面的示例,第一数据块为ab1234cde,目标数据块为ab12c34de,通过字节比对,第一数据块与目标数据块并不相同,因此,此时在数据模型库中并不存在与第一数据块相同的第二数据块。又例如:如果第一数据块为ab1234cde,目标数据块为ab1234cde。此时可以确定第一数据块与目标数据块相同,此时即可以确定目标数据块即为与所述第一数据块相同的第二数据块。

本申请实施例提供的方法,获取预存储的第一数据块时,通过获取预存储的第一数据块的第一key值,然后判断在数据模型库中是否有相同的第一key,当有相同的第一key值时,确定目标数据块,对目标数据块与第一数据块进行字节比对已确定第一数据块是否与目标数据块相同。通过引入key值,快速地排除一些不是预设的数据模型库的数据块,并且直接获取到可能匹配上的唯一一个目标数据块进行字节匹配,进而提升了数据块的比对效率,从而提高了对出现频率高的数据块的删除效率,不仅能够降低cpu消耗,还能提升存储的性能。

本申请实施例再提供一种数据删除方法,图6为本申请实施例提供的另一种数据删除方法的实现流程示意图,如图6所示,所述方法包括:

步骤s601,数据删除设备获取预存储的第一数据块。

步骤s602,数据删除设备获取所述第一数据块的第一关键值。

本申请实施例中,所述第一关键值为提取所述第一数据块中m个预设位置对应的m个字节确定的。

步骤s603,数据删除设备判断所述数据模型库中是否存在与所述第一关键值相同的目标数据块。

本申请实施例中,数据模型库中的各个数据块的关键值也是提取各个数据块中m个预设位置对应的m个字节确定的。

本申请实施例中,若在所述数据模型库中存在与所述第一关键值相同的目标数据块,也即表明在数据模型库中可能存在相同的第二数据块,此时进入步骤s604。若在所述数据模型库中不存在与所述第一关键值相同的目标数据块,即表明在数据模型中不存在相同的第二数据块,此时进入步骤s608。

步骤s604,数据删除设备将所述目标数据块和所述第一数据块进行字节比对,判断所述第一数据块与所述目标数据块是否各字节均相同。

本申请实施例中,若所述第一数据块与所述目标数据块各字节均相同,也即表明在数据模型库中存在相同的目标数据块,此时进入步骤s605。若所述第一数据块与所述目标数据块的字节不相同,即表明在数据模型库中不存在相同的第二数据块,此时进入步骤s607。

步骤s605,数据删除设备将所述目标数据块确定为与第一数据块相同的第二数据块。

步骤s606,数据删除设备删除所述第一数据块。

本申请实施例中,由于已经存在与第一数据块相同的第二数据块,为了节省存储空间,因此删除所述第一数据块。

步骤s607,数据删除设备将所述第二数据块的元数据确定为所述第一数据块的第一元数据。

本申请实施例中,删除第一数据块后,只需要记录第一数据块的元数据,并且将所述第二数据块的元数据确定为所述第一数据块的第一元数据,即,第一数据块的元数据与第二数据的元数据一样,当有读取所述第一数据块时,通过读取第二数据块替代。本申请实施例中,当执行完步骤s607时,流程结束。

步骤s608,数据删除设备判断在除所述数据模型库之外的存储空间中是否存在与所述第一数据块相同的第三数据块。

本申请实施例中,由于在数据模型库中不存在与第一数据块相同的第二数据块,此时只能通过指纹库来判断除所述数据模型库之外的存储空间中是否有与第一数据块相同的第三数据块。本申请实施例中,所述数据模型库之外的存储空间可以认为是磁盘或物理磁带的数据存储空间。在磁盘或物理磁带的数据存储空间中的每个数据块在指纹库中都有一一对应指纹。因此,步骤s608,数据删除设备判断是否存在与所述第一数据块相同的第三数据块在实现时,通常是确定第一数据块的第一指纹,判断指纹库中是否有与第一指纹相同的指纹,进而判断是否存在与所述第一数据块相同的第三数据块。

本申请实施例中,若在指纹库中存在与第一指纹相同的指纹,即存在与所述第一数据块相同的第三数据块,此时进入步骤s609,若在指纹库中不存在与第一指纹相同的指纹,即不存在与所述第一数据块相同的第三数据块,此时进入步骤s611。

步骤s609,数据删除设备删除所述第一数据块。

本申请实施例中,当有第三数据块时,删除所述第一数据块,以节省存储空间。

步骤s610,数据删除设备将所述第三数据块的元数据确定为所述第一数据块的第二元数据。

本申请实施例中所述第三数据的元数据包括所述第三数据块存储的位置,也就是说将所述第三数据块的元数据确定为所述第一数据块的第二元数据时,第一数据块的第一元数据包括存储的位置,当有读取请求时,直接通过存储的位置读取所述第三数据块。在执行完步骤s610后,流程结束。

步骤s611,数据删除设备将所述第一数据块进行压缩,得到压缩后的第一数据块。

本申请实施例中,由于在存储空间中没有与第一数据块相同的第三数据块,也就是说第一数据块为新的数据块,此时为了节省空间,将第一数据块进行压缩。

步骤s612,数据删除设备存储所述压缩后的第一数据块。

本申请实施例中,数据删除设备存储所述压缩后的第一数据块时,将所述压缩后的第一数据块存储在除所述数据模型库之外的存储空间中。示例性地,将所述第一数据块存入磁盘或物理磁带的数据存储空间。当执行完步骤s612后,流程结束。

本申请实施例提供的数据删除方法,当获取到预存储的第一数据块时,先进行key值判断,再进行字节比对,如果第一数据块不在数据模型库中时,才通过指纹库进行判断,根据指纹判断结果确定是进行重删还是进行压缩,不仅能够提高出现频率高的数据块的删除效率,还能降低cpu消耗,进而提升存储性能。

本申请实施例再提供一种数据删除方法,本申请实施例中,在上层业务写入时,先由模型数据删除装置进行处理,不符合预设数据模型的数据,由压缩与重删装置进行处理。

图7为本申请实施例提供的一种数据删除设备的结构示意图,如图7所示,其中,模型数据删除装置710包括的模块有:数据模型库711、预处理模块712、模型识别模块713,压缩与重删装置720包括的模块为:压缩与重删模块721。以下结合图7对数据模型库711、预处理模块712、模型识别模块713与压缩与重删模块721之间的数据交互进行说明。

对于上层业务写入的数据,经过预处理模块712处理,快速识别出不在数据模型库711中的数据块,将不在数据模型库711中的数据块采用压缩与重删模块721进行处理。

通过预处理之后,将在数据模型库711中的数据块交给模型识别模块713,模型识别模块713将在的数据块跟数据模型库711中预设的数据模型进行字节对比。

本申请实施例中,如果数据块与数据模型库711中的预设数据模型所有字节都相同,则跟预设的数据模型是相同数据,采用模型数据删除。如果数据块与数据模型库711中的预设数据模型字节对比不通过,则采用压缩与重删模块721进行压缩与重删处理。

本申请实施例中,如果采用模型数据删除,只写元数据,通过元数据的类型和模型id进行标识,类型字段指示数据块采用的是模型数据删除还是压缩与重删,模型id字段表示这块数据跟哪个预设数据模型相同。如果采用压缩与重删,则元数据中的物理地址字段指示这块数据在物理介质上的真正存储位置。

数据模型库是本申请实施例最关键的一个部分,选择哪些数据模型放入到数据模型库里面,直接关系到模型数据删除时命中的概率,本申请实施例中,选择下面两类数据模型作为预设数据模型,继续参见图4,在数据模型库中包括:

全重复数据块,例如:全0数据块、全1数据块、……,覆盖所有的全重复数据块;

客户环境出现次数高的数据块,从压缩与重删模块中,找出引用次数最高的若干个数据块,作为预设数据块。其中,客户环境出现次数高的数据块,需要从客户的现有数据中查找出现次数最高的数据块,纳入到数据模型库中,从而达到提升模型数据删除命中概率的目的。在压缩与重删模块的指纹库中,每一条指纹都代表一个唯一的数据块,在指纹库设置一个引用计数的字段,所述引用字段代表每条指纹的数据块被引用的次数:数据第一次被写入的时候,引用计数为1,后面再有重复的写入,不再重复写入数据,直接引用原数据,并将引用计数加1。

本申请实施例中,通过查找指纹库,找出引用计数超过阈值的数据块,把这些数据块纳入到数据模型库中。

数据模型库里面会有若干预设的数据模型,逐个进行字节对比是一种效率非常低下的手段,因此通过预处理步骤,快速地排除一些不是预设数据模型的数据块,并且直接获取到可能匹配上的唯一一个数据模型,进行字节匹配。

预处理采用基于key对比的方式进行,首先为每个预设的模型(数据模型库中的各个数据块)都生成一个唯一的key,上层应用写入的数据块(第一数据块)时也采用相同的方法生成一个key值,查找数据模型库的数据模型是否有相同的key,如果有,则获取该key对应的数据模型,进入下一步的模型识别进行字节对比处理。

生成key的实现方式有很多种,在本申请实施例中采用一种简单高效的方案:从数据块的前部、中部和后部,至少抽取1个字节,作为key。

下面以一个例子说明如何进行预处理:

在数据模型库中,有2个预设的数据模型:

数据模型1:ab12c34de;

数据模型2:ab57c89de;

首先从各个数据模型的前部、中部和后部,各抽取1个字节作为key,如果抽取第1、5和9字节,则2个数据模型的key相同,不可取,改成抽取第1、4和9字节。抽取第1、4和9字节作为key后,则模型库里面的数据模型为:

上层应用写下数据块,同样抽取该数据块的第1、4和9字节作为key,假如上层应用写下来3块数据,如下所示:

数据1的key为149,在模型库中不存在这个key,因此数据1不符合模型删除;

数据2的key为a2e,跟数据模型1001的key相同,进入下一步模型识别做字节对比;

数据3的key为a7e,跟数据模型1002的key相同,也进入下一步模型识别做字节对比;

经过预处理后,从数据模型库里面找出可能匹配的唯一数据模型,然后进行字节的对比,如果字节对比完全一致,则直接进行模型删除,只写元数据,在元数据中只记录这个数据块的模型id。如果字节对比不相同,则交给压缩与重删模块进行正常的压缩与重删处理。

本申请实施例中,将出现频率高的数据块纳入数据模型库,为数据模型库中每个数据模型生成一个唯一的key,上层应用写入的数据,采用相同的方法计算出key,查找模型库里面是否有相同的key存在,如果有,则获取该key对应的数据模型进行字节对比,当字节对比完全相同,则匹配上该数据模型,然后进行模型数据删除,只写入元数据。与现有的数据重删方法相比,模型数据删除的方法计算更加简单,消耗的cpu更低,通过针对出现频率高的一些数据块进行模型数据删除可以降低cpu消耗,提升存储整体性能。

基于前述的实施例,本申请实施例提供一种数据删除装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu,centralprocessingunit)、微处理器(mpu,microprocessorunit)、数字信号处理器(dsp,digitalsignalprocessing)或现场可编程门阵列(fpga,fieldprogrammablegatearray)等。

本申请实施例再提供一种数据删除装置,图8为本申请实施例提供的另一种数据删除装置结构示意图,如图8所示,所述数据删除装置800包括:

第一获取模块801,用于获取预存储的第一数据块;

第一删除模块802,用于若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,删除所述第一数据块;其中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块;

第一确定模块803,用于将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

在一些实施例中,所述数据删除装置800还包括:

第二确定模块,用于确定指纹库中每一指纹的引用次数;其中,所述指纹库中的指纹与已存储的数据块一一对应;

第三确定模块,用于将引用次数超过次数阈值的指纹确定为目标指纹;

加入模块,用于将所述目标指纹对应的数据块加入数据模型库,以得到预设的数据模型库。

在一些实施例中,所述数据删除装置800还包括:

第二获取模块,用于获取所述第一数据块的第一关键值;

比对模块,若在所述数据模型库中存在与所述第一关键值相同的目标数据块,将所述目标数据块和所述第一数据块进行字节比对;

第四确定模块,用于若所述第一数据块与所述目标数据块各字节均相同,将所述目标数据块确定为与第一数据块相同的第二数据块。

在一些实施例中,第二获取模块包括:

第一提取单元,用于提取所述第一数据块中m个预设位置对应的m个字节,其中m为正整数;

第一确定单元,用于根据所述m个字节,确定所述第一数据块的第一关键值。

在一些实施例中,所述数据删除装置800,还包括:

第一判断模块,用于若所述数据模型库中不存在与所述第一关键值相同的目标数据块,或若在所述模型数据库中没有与所述第一数据块相同的第二数据块时,判断是否存在与所述第一数据块相同的第三数据块;

第二删除模块,用于若存在与所述第一数据块相同的第三数据块,删除所述第一数据块;

第五确定模块,用于将所述第三数据块的元数据确定为所述第一数据块的第二元数据,其中,所述第三数据的元数据包括所述第三数据块存储的位置。

在一些实施例中,所述第一判断模块包括:

第二确定单元,用于确定所述第一数据块的第一指纹;

第三确定单元,用于若所述指纹库中存在与所述第一指纹相同的指纹,确定存在与所述第一数据块相同的第三数据块。

在一些实施例中,所述数据删除装置还包括:

压缩模块,用于若所述指纹库中不存在与所述第一数据块相同的所述第三数据块,将所述第一数据块进行压缩,得到压缩后的第一数据块;

存储模块,用于存储所述压缩后的第一数据块。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

本申请实施例提供的数据删除装置,通过将引用次数超过次数阈值的数据块加入到预设的数据模型库中,通过第一获取模块获取到预存储的第一数据块时,若在预设的数据模型库中存在相同的第二数据块,通过第一删除模块直接删除第一数据块,如此,数据删除装置针对出现频率高的一些数据块根据数据模型进行删除,不仅能够提高数据删除的效率,还能降低cpu消耗,进而提升存储性能。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据删除方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

相应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述实施例中提供的数据删除方法中的步骤。

本申请实施例提供一种数据删除设备,图9为本申请实施例提供的数据删除设备的组成结构示意图,如图9所示,所述数据删除设备900包括:一个处理器901、至少一个通信总线902、用户接口903、至少一个外部通信接口904和存储器905。其中,通信总线902配置为实现这些组件之间的连接通信。其中,用户接口903可以包括显示屏,外部通信接口904可以包括标准的有线接口和无线接口。其中,所述处理器901配置为执行存储器中存储的数据删除方法的程序,以实现以上述实施例提供的数据删除方法中的步骤

以上数据删除设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请数据删除设备和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台ac执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

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


技术特征:

1.一种数据删除方法,其特征在于,包括:

获取预存储的第一数据块;

若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,删除所述第一数据块;其中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块;

将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

确定指纹库中每一指纹的引用次数;其中,所述指纹库中的指纹与已存储的数据块一一对应;

将引用次数超过次数阈值的指纹确定为目标指纹;

将所述目标指纹对应的数据块加入数据模型库,以得到预设的数据模型库。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

获取所述第一数据块的第一关键值;

若在所述数据模型库中存在与所述第一关键值相同的目标数据块,将所述目标数据块和所述第一数据块进行字节比对;

若所述第一数据块与所述目标数据块各字节均相同,将所述目标数据块确定为与第一数据块相同的第二数据块。

4.根据权利要求3所述的方法,其特征在于,所述获取第一数据块的第一关键值包括:

提取所述第一数据块中m个预设位置对应的m个字节,其中m为正整数;

根据所述m个字节,确定所述第一数据块的第一关键值。

5.根据权利要求3所述的方法,其特征在于,所述方法还包括:

若所述数据模型库中不存在与所述第一关键值相同的目标数据块;或若在所述模型数据库中没有与所述第一数据块相同的第二数据块,判断在除所述数据模型库之外的存储空间中是否存在与所述第一数据块相同的第三数据块;

若存在与所述第一数据块相同的第三数据块;删除所述第一数据块;

将所述第三数据块的元数据确定为所述第一数据块的第二元数据,其中,所述第三数据的元数据包括所述第三数据块存储的位置。

6.根据权利要求5所述的方法,其特征在于,所述判断在是否存在与所述第一数据块相同的第三数据块,包括:

确定所述第一数据块的第一指纹;

若所述指纹库中存在与所述第一指纹相同的指纹,确定存在与所述第一数据块相同的第三数据块。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

若所述指纹库中不存在与所述第一数据块相同的所述第三数据块,将所述第一数据块进行压缩,得到压缩后的第一数据块;

存储所述压缩后的第一数据块。

8.一种数据删除装置,其特征在于,所述装置包括:

第一获取模块,用于获取预存储的第一数据块;

第一删除模块,用于若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,删除所述第一数据块;其中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块;

第一确定模块,用于将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

9.一种数据删除设备,其特征在于,所述设备至少包括:

处理器;以及

存储器,用于存储可在所述处理器上运行的计算机程序;

其中,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的数据删除方法的步骤。

10.一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述权利要求1至7任一项所述的数据删除方法的步骤。

技术总结
本申请实施例提供一种数据删除方法、装置、设备及计算机可读存储介质,其中,所述方法包括:获取预存储的第一数据块;若在预设的数据模型库中存在与所述第一数据块相同的第二数据块,删除所述第一数据块;其中,所述预设的数据模型库中至少包括引用次数超过次数阈值的数据块;将所述第二数据块的元数据确定为所述第一数据块的第一元数据,其中,所述第二数据块的元数据包括第二数据块的标识。

技术研发人员:张国军
受保护的技术使用者:深信服科技股份有限公司
技术研发日:2020.01.13
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-30252.html

最新回复(0)