一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

离线去重方法、装置、电子设备、存储介质及程序产品与流程

2022-06-25 08:15:13 来源:中国专利 TAG:


1.本技术涉及计算机存储领域,尤其涉及一种离线去重方法、装置、电子设备、存储介质及程序产品。


背景技术:

2.数据去重是一种用于消除重复数据或冗余数据以提高存储利用率的技术。传统的数据去重操作是在单机或分布式环境中由主机端的中央处理器(central processing unit,简称cpu)来完成的,这种实现方式增加了系统设计的复杂性,而且对主机端cpu造成了较大的计算压力。为了解决上述问题,提出一种在存储设备内部进行数据去重操作的设想。
3.目前,在存储设备内部进行数据去重操作的方法是在线去重,即当数据写入存储设备的同时进行数据去重操作。而由于数据去重操作本身的复杂性,上述在线去重的方式会对存储设备的io性能造成巨大的影响,从而很难保证上层应用的服务质量。


技术实现要素:

4.本技术提供一种离线去重方法、装置、电子设备、存储介质及程序产品,用以实现存储设备内部的数据去重。
5.第一方面,本技术提供一种离线去重方法,包括:获取数据搬移过程中当前扫描区域内有效数据块的数据指纹,并发送至指纹管理单元;指纹管理单元记录有各数据指纹的有效物理块地址;根据指纹管理单元返回的有效数据块对应的有效物理块地址,将有效物理块地址与有效数据块的当前物理块地址进行对比;若地址一致,则将有效数据块搬移至第一物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第一物理块地址,以及将地址映射表中与有效物理块地址相同的物理块地址替换为第一物理块地址;地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系;否则,将地址映射表中与有效数据块地址相同的物理块地址替换为第一物理块地址;否则,将地址映射表中有效数据块的逻辑块地址映射到有效物理块地址;对当前扫描区域中的数据块进行擦除。
6.第二方面,本技术提供一种离线去重装置,包括:获取模块,用于获取数据搬移过程中当前扫描区域内有效数据块的数据指纹,并发送至指纹管理单元;指纹管理单元记录有各数据指纹的有效物理块地址;处理模块,用于根据指纹管理单元返回的有效数据块对应的有效物理块地址,将有效物理块地址与有效数据块的当前物理块地址进行对比;处理模块,还用于若地址一致,则将有效数据块搬移至第一物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第一物理块地址,以及将地址映射表中与有效物理块地址相同的物理块地址替换为第一物理块地址;地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系;否则,将地址映射表中有效数据块的逻辑块地址映射到有效物理块地址。擦除模块,用于对当前扫描区域中的数据块进行擦除。
7.第三方面,本技术提供一种电子设备,包括:处理器,以及与处理器通信连接的存
储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,以实现如第一方面的方法。
8.第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面的方法。
9.第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面的方法。
10.本技术提供的离线去重方法、装置、电子设备、存储介质及程序产品,通过数据搬移过程中当前扫描区域内有效数据块的数据指纹,获取该数据指纹在指纹管理单元中记录的有效物理块地址;将该有效物理块地址与有效数据块的当前物理块地址进行对比;若一致,则对该有效数据块搬移至第一物理块地址,同步更新指纹管理单元和地址映射表;其中,地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系;否则不对该有效数据块进行搬移,而将地址映射表中该有效数据块的逻辑块地址映射到该有效物理块地址;当完成对当前扫描区域内有效数据块的搬移后,对当前扫描区域进行擦除。上述方案在后台数据搬移的过程中进行对数据的离线去重,避免在前台写入数据时即进行对数据的在线去重,从而减少对前台读写性能的影响,提高上层应用的服务质量。
附图说明
11.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
12.图1为本技术实施例提供的一种离线去重方法的应用场景;
13.图2为本技术实施例提供的一种离线去重方法的流程图;
14.图3为本技术实施例提供的一种地址映射表的示意图;
15.图4为本技术实施例提供的另一种地址映射表的示意图;
16.图5为本技术实施例提供的又一种地址映射表的示意图;
17.图6为本技术实施例提供的另一种离线去重方法的流程图;
18.图7为本技术实施例提供的再一种地址映射表的示意图;
19.图8为本技术实施例提供的又一种离线去重方法的流程图;
20.图9为本技术实施例提供的一种离线去重装置的结构示意图;
21.图10为本技术实施例提供的一种电子设备的结构示意图。
22.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
23.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与本技术的一些方面相一致的装置和方法的例子。
24.首先对本技术实施例的名词进行解释:
25.物理块地址(physics block address,简称pba):在存储设备里以块为单位存储信息,为正确地存放或取得信息,每一个块对应一个唯一的地址,用以标识存储位置,是一种绝对地址。
26.逻辑块地址(logical block address,简称lba):是一种相对地址,是描述计算机存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。逻辑块地址经过寻址方式的计算或变换可得到存储器设备的实际有效地址(即物理块地址)。
27.数据去重是一种用于消除重复数据或冗余数据以提高存储利用率的技术,是一种减少数据写入或存储量的常用手段。对于相同数据的多次写入,经过数据去重后,只需写入一份完整的数据。
28.传统的数据去重操作是在单机或分布式环境中由主机端的cpu来完成的,此外还需要维护额外的数据映射层,用于记录重复数据在存储空间中的地址映射信息。这种实现方式增加了系统设计的复杂性,而且对主机端cpu造成了较大的计算压力。通过在存储设备内部进行数据去重操作,则可以有效地解决上述传统方式中存在的问题。
29.当前对于在存储设备内部进行数据去重操作的设想主要是在线去重,即当数据写入存储设备时即进行数据去重操作。由于数据去重操作本身的复杂性,这种在线去重的方式会对存储设备的io性能造成巨大的影响,从而很难保证上层应用的服务质量。
30.基于此,本技术提供一种离线去重方法、装置、电子设备、存储介质及程序产品,用以实现存储设备中的数据离线去重,即设备在执行后台数据搬移时进行数据的去重处理,尽可能地减少去重操作对前台读写的性能影响。
31.本技术实施例提供的离线去重方法可以适用于图1所示的应用场景,该方法的执行主体可以为离线去重装置,也可以为集成了离线去重装置的存储设备,具体的可以为固态硬盘(solid state disk或solid state drive,简称ssd),图1以集成了离线去重装置的固态硬盘为例进行实施例的说明。
32.如图1所示,当用户进行文档编辑、图片处理等前台操作后,要保存的数据可以被写入主机内的sdd上。sdd是用固态电子存储芯片阵列制成的硬盘,如图1所示,包括存储芯片、缓存芯片、主控芯片等。
33.与机械硬盘(mechanical hard disk drive,简称hdd)存储的数据可以被覆盖的特性不同,向ssd写入数据时,主控将其写入空白的存储区域内,当向该存储区域再次写入数据时,需要先进行擦除操作才能写入。然而,读写以页为单位,擦除以块(多个页组成)为单位。其中,页的大小一般为4kb或8kb,块一般有128至256页。
34.假设写入数据的最小单位为4kb,擦除数据的最小单位为1024kb。由于写入单位与擦除单位的不匹配,目前还不能实现单独对一个4kb的存储区域先擦除再写入的操作。一个示例中,前台操作对一个已写入的文档数据进行备份从而再次写入ssd时,主控会将备份的数据写入新的存储区域,此时,备份的文档数据变成了重复数据或冗余数据。另一个示例中,前台操作删除一个文档时,ssd上存储该文档数据的存储区域可能不会被立即擦除。因此,容易理解的,1024kb的存储区域内可能既有不需要擦除的数据,也有需要擦除的数据。
35.随着前台操作不断向ssd写入数据,ssd的剩余存储空间会越来越小。为了提高存储空间利用率,同时不影响io性能,选择在ssd空闲状态下后台进行数据搬移和去重操作,例如在后台进行垃圾回收或者磨损均衡的操作中进行数据的去重处理,是一种离线去重。
36.下面以具体地实施例对技术方案以及技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
37.实施例一
38.图2为本技术实施例提供的一种离线去重方法的流程图,该方法的执行主体可以为离线去重装置。该装置可以通过计算机程序实现,例如,应用软件等;或者,该装置也可以实现为存储有相关计算机程序的介质,例如,u盘、云盘等;再或者,该装置还可以通过集成或安装有相关计算机程序的实体装置实现,例如,芯片等。下面以集成了离线去重装置的存储设备为执行主体为例(下面简称存储设备)进行说明。
39.如图2所示,包括以下步骤:
40.s100、获取数据搬移过程中当前扫描区域内有效数据块的数据指纹,并发送至指纹管理单元;指纹管理单元记录有各数据指纹的有效物理块地址;
41.s200、根据指纹管理单元返回的有效数据块对应的有效物理块地址,将有效物理块地址与有效数据块的当前物理块地址进行对比;
42.s300、若地址一致,则将有效数据块搬移至第一物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第一物理块地址,以及将地址映射表中与有效物理块地址相同的物理块地址替换为第一物理块地址;地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系;否则,将地址映射表中有效数据块的逻辑块地址映射到有效物理块地址;
43.s400、当前扫描区域内有效数据块搬移完成后,对当前扫描区域中的数据块进行擦除。
44.具体的,在步骤s100中,存储设备在后台数据搬移的过程中进行数据的离线去重,比如在后台进行垃圾回收或者磨损均衡的操作中。相较于在前台进行对数据的在线去重,减少了对存储设备的io性能的影响,保证了上层应用的服务质量。
45.一种可行的实施方式,该离线去重操作的触发执行可以为自启动执行,这样更便于设备管理。具体的,比如可以为前台读写操作压力较小而存储设备的剩余存储空间低于预设值时自启动去重操作;也可以为自前台读写压力较小时预设时间后自启动去重操作;也可以用户预设的固定时间自启动去重操作,比如每天的某个时间点或每周的某一天或每月的某一天等前台读写压力较小的时间。
46.另一种可行的实施方式,该离线去重操作的触发执行也可以为接收到前台的去重指令后启动去重操作,这样更具灵活性。具体的,比如基于用户的操作指令启动去重操作,比如发现存储设备存储空间不足或接收到存储设备发送的空间不足预警时用户主动下发去重指令。
47.其中,后台在进行离线去重操作时,前台可以同时进行读写操作,相较于直接在前台写入数据时即进行在线去重,大大降低了对存储设备io性能的影响。后台在进行离线去重操作时,前台也可以不进行读写操作,此时数据去重不影响前台的读写性能。在实际应用过程中,在对存储设备的io性能和上层应用服务质量要求不高时,或者存储设备的io性能配置很高时,可以选择前台读写与后台去重并行,有利于提高存储空间释放速度和利用率。
48.进一步地,在步骤s100中,当前扫描区域为存储设备上即将进行数据搬移的物理空间区域。物理空间区域上存储有数据块,该数据块对应有物理块地址pba。示例性的,按照
pba对数据块进行顺序处理,对于有效数据块,获取该有效数据块的数据指纹并发送至指纹管理单元。需要说明的是,相对于有效数据块的概念,无效数据块可以指前台操作更改或删除的文档或图片等数据。其中所涉及的识别有效数据块和无效数据块的技术可参考相关技术,在此不作具体介绍。
49.进一步地,在步骤s200中,数据指纹用于标识数据块,内容相同的数据块的数据指纹相同。指纹管理单元用于记录数据指纹及对应的有效物理块地址,当该有效数据块的数据指纹记录于指纹管理单元时,指纹管理单元则返回所记录的对应的有效物理块地址。其中,当有效数据块的数据指纹存储于指纹管理单元时,说明该数据块可能为重复的数据块,也就是说扫描到存储在不同物理块地址但内容相同的数据块,需要进行去重;也可能不是重复的数据块,也就是说扫描的数据块的物理块地址即为指纹管理单元所记录的物理块地址,不需要去重。因此,需要进一步比较指纹管理单元返回的有效物理块地址和有效数据块的当前物理块地址。
50.进一步地,在步骤s300中,当有效物理块地址与当前物理块地址一致时,说明该数据块是原始的数据块而不是重复的数据块,进行数据搬移时不去重。具体的,将该数据块写入新的物理块地址(即第一物理块地址),同时更新指纹管理单元内该数据指纹对应的有效物理块地址为第一物理块地址,以及更新地址映射表。当有效物理块地址与当前物理块地址不一致时,说明该数据块是重复的数据块,进行数据搬移时去重。具体的,不将该数据块写入新的物理块地址,只更新地址映射表。
51.下面对地址映射表的更新过程进行举例说明。
52.示例性的,图3为本技术实施例提供的一种地址映射表的示意图。地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系。如图3所示,每个lba对应一个pba,其中,lba为0x13的数据块与lba为0x11的数据块的内容相同,指纹管理单元记录lba为0x11的数据块的数据指纹及对应的有效物理块地址为0x21。因此,当扫描到lba为0x13的数据块时,将其对应的pba更新为0x21,不需要为lba为0x13的数据块分配新的物理块地址,节省存储空间。
53.进一步地,地址映射表还包括逻辑块地址对应的上一个去重逻辑块地址和下一个去重逻辑块地址;其中,上一个去重逻辑块地址为与当前的逻辑块地址指向相同物理块地址的上一个逻辑块地址;下一个去重逻辑块地址为与当前的逻辑块地址指向相同物理块地址的下一个逻辑块地址。
54.如图3所示,每个lba还对应上一个去重lba和下一个去重lba,用于串联映射到同一个pba的多个lba。对于lba为0x11的数据块,其对应的pba为0x21;对于lba为0x13的数据块,其对应的pba也为0x21。此时,对于0x11的lba,其下一个去重lba为0x13(无上一个去重lba,用无效值0xffffffff表示),对于0x13的lba,其上一个去重lba为0x11(无下一个去重lba)。
55.一个示例中,在图3的基础上,图4为本技术实施例提供的另一种地址映射表的示意图,显示了当lba为0x15的数据块与lba为0x11的数据块内容相同时,地址映射表的更新情况。具体的,不将lba为0x15的数据块写入新的物理块地址,而将0x15的lba对应的pba更新为0x21。这样处理,不需要划分新的物理块存储区域重复存储内容相同的lba为0x15的数据块,实现了数据去重,有利于节约存储空间。同时,对于0x13的lba,其下一个去重lba为
0x15;对于0x15的lba,其上一个去重lba为0x13(无下一个去重lba,用无效值0xffffffff表示)。
56.进一步地,步骤s300中,将地址映射表中与有效物理块地址相同的物理块地址替换为第一物理块地址,具体包括:根据地址映射表中上一个去重逻辑块地址和下一个去重逻辑块地址,确定指向有效物理块地址的所有逻辑块地址;将所有逻辑块地址对应的物理块地址均替换为第一物理块地址。
57.一个示例中,在图4的基础上,图5为本技术实施例提供的又一种地址映射表的示意图,显示了当pba为0x21的数据块搬移至新的物理块地址0x30(即第一物理块地址)时,地址映射表的更新情况。比如,当进行第n次扫描时(n为大于等于2的整数),再次扫描到pba为0x21、lba为0x11的有效数据块时,当前pba等于指纹管理单元返回的pba,即均为0x21,则将对pba为0x21处存储的数据块写入新的pba,即0x30,进行数据搬移。此时根据地址映射表中上一个去重lba和下一个去重lba的映射关系,可得知0x21的pba对应由三处lba,即0x11、0x13和0x15。此时,将三处pba信息均由0x21更新为0x30。
58.本实施例通过在数据搬移的过程中进行扫描和数据搬移,筛除扫描区域内的无效数据块,以及对于内容重复的有效数据块,仅实质的写入一次,通过地址映射表中多个lba对应到一个pba来进行数据索引,实现数据的离线去重,尽可能地减少了去重操作对前台读写的性能影响,提高了对上层应用的服务质量。同时,将有效数据块集中存储在新的存储区域,对于完成了数据搬移的存储区域进行擦除后可重新写入数据,节约了存储空间,提高了存储空间利用率。
59.可选的,图6为本技术实施例提供的另一种离线去重方法的流程图,本实施例提供的离线去重方法还包括:
60.s210、接收指纹管理单元返回的无效物理块地址;其中,无效物理块地址是当指纹管理单元中没有记录有效数据块的数据指纹时返回的;
61.s220、将有效数据块搬移至第二物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第二物理块地址,以及将地址映射表中有效数据块的逻辑块地址映射到第二物理块地址。
62.具体的,当指纹管理单元没有记录该数据指纹时,说明该有效数据块是第一次被扫描。将该数据块写入新的物理块地址(即第二物理块地址),同时指纹管理单元记录该数据指纹及对应的第二物理块地址,用于后续扫描数据块的指纹对比。以及,将地址映射表中该有效数据块的逻辑块地址映射到第二物理块地址,用于前台通过lba访问对应的pba存储的数据块。
63.进一步地,步骤s100中,获取数据搬移过程中当前扫描区域内有效数据块的数据指纹,包括:确定当前扫描区域内的有效数据块,向指纹计算单元发送有效数据块;接收指纹计算单元返回的有效数据块的数据指纹。
64.示例性的,存储设备内部配置有用于根据数据块计算数据指纹的指纹计算单元。向指纹计算单元发送定长的数据块,例如一个硬盘扇区的大小4kb,计算得到相应的指纹后,指纹计算单元返回数据指纹。其中,指纹计算单元可以是通用的cpu,也可以是专用的fpga或asic等硬件设备。设置专用的指纹计算单元对数据指纹的计算进行加速处理,有利于提高数据离线去重的效率。
65.可选的,在步骤s100中,一种可行的确定当前扫描区域的方式中,根据扫描单位,将物理存储区域划分为多个待扫描区域。其中,扫描单位可以为存储设备的擦除最小单位,比如1024kb。将存储设备的物理存储区域划分为多个1024kb的待扫描区域。接着,按照物理块地址的顺序依次将待扫描区域作为当前扫描区域进行扫描和数据搬移,搬移完成后,对当前扫描区域进行数据擦除,用于写入新的数据。
66.另一种可行的确定当前扫描区域的方式中,根据扫描单位将物理存储区域划分为多个待扫描区域后,统计多个待扫描区域内有效数据块的占比,并按照占比由低至高的顺序,依次将每个待扫描区域作为当前扫描区域。具体的,对多个1024kb的待扫描区域内有效数据块的占比进行统计,按照占比由低至高的顺序依次将待扫描区域作为当前扫描区域进行扫描和数据搬移。由于待扫描区域内的有效数据块较少,数据搬移过程耗时短,进而可迅速释放该扫描区域的存储空间,提高数据离线去重速度。
67.进一步地,一个示例中,当前台有写入操作时,按正常写流程写入数据块(即将数据块写入新的pba上),并更新相应的地址映射表。具体的,在图5的基础上,图7为本技术实施例提供的再一种地址映射表的示意图,显示了当前台对一个原先符合去重条件的数据块进行更新后,地址映射表的现实情况。如图7所示,lba为0x13的数据块进行更新,为新写入的数据块分配新的pba为0x31。此时0x13的lba无对应的上一个去重lba和下一个去重lba,而0x11的lba对应的下一个去重lba更新为0x15,而0x15的lba对应的上一个去重lba更新为0x11。
68.下面结合存储设备的结构,以一个具体的实施例对离线去重方法进行示例性说明。
69.图8为本技术实施例提供的又一种离线去重方法的流程图。可选的,存储设备内部的存储控制器包含用于基于数据块获取数据指纹的指纹计算单元和用于记录数据指纹的指纹管理单元。指纹计算单元和指纹管理单元由驱动进行管理和调度。计算数据指纹时,由存储设备的驱动向指纹计算单元发送定长的数据块,例如一个硬盘扇区的大小4kb,指纹计算单元计算得到相应的指纹后,将指纹返回给设备的驱动。指纹计算单元可以是通用的cpu,也可以是专用的fpga或asic等硬件设备。指纹管理单元中,存储配对的指纹和pba,在指纹查找的过程中,找到匹配的指纹即可得到对应的pba。存储设备的驱动负责维护lba和pba的映射表,且该映射表支持多个lba到一个pba的映射。
70.存储设备内部数据的去重操作为离线去重,发生在存储设备后台进行数据搬移之时。在存储设备的后台操作中,按照如下步骤进行数据的去重操作:
71.(1)设备驱动对即将进行数据搬移的物理空间区域进行顺序扫描;
72.(2)对于扫描区域内的每一个有效数据块,驱动将其发送至数据指纹计算单元,由数据指纹计算单元返回对应的数据指纹;
73.(3)驱动将得到的数据指纹发送至指纹管理单元,指纹管理单元查找是否已经存在该数据指纹;若存在,则向驱动返回对应的pba;若不存在,则向驱动返回无效的pba;
74.(4)驱动对指纹管理单元的返回值进行如下判断:
75.(4.1)若返回的pba有效,即数据指纹已经存在于指纹管理单元中,则驱动判断数据块原先的pba是否等于返回的pba。
76.若相等,则将数据块写入存储介质中新的pba,并用新的pba对地址映射表中所有
指向原先pba的映射关系进行更新;若不相等,则驱动根据返回的pba和该数据块的lba更新地址映射表,而数据块将不会被重新写入存储介质;
77.(4.2)若返回的pba无效,即数据指纹不存在于指纹管理单元中,则驱动首先将数据块写入存储介质,然后向指纹管理单元重新发送指纹以及对应数据块所占用的新的pba,由指纹管理单元对该指纹以及pba进行存储;然后驱动根据数据块的lba和pba更新地址映射表;
78.(5)直到数据搬移区域扫描结束,擦除扫描区域,释放存储空间。
79.本实施例通过数据搬移过程中当前扫描区域内有效数据块的数据指纹,获取该数据指纹在指纹管理单元中记录的有效物理块地址;将该有效物理块地址与有效数据块的当前物理块地址进行对比;若一致,则对该有效数据块搬移至第一物理块地址,同步更新指纹管理单元和地址映射表;否则不对该有效数据块进行搬移,而将地址映射表中该有效数据块的逻辑块地址映射到该有效物理块地址;当完成对当前扫描区域内有效数据块的搬移后,对当前扫描区域进行擦除。上述方案在后台数据搬移的过程中进行对数据的离线去重,避免在前台写入数据时即进行对数据的在线去重,从而减少对前台读写性能的影响,提高上层应用的服务质量。
80.实施例二
81.图9为本技术实施例提供的一种离线去重装置的结构示意图,该装置包括:
82.获取模块10,用于获取数据搬移过程中当前扫描区域内有效数据块的数据指纹,并发送至指纹管理单元;指纹管理单元记录有各数据指纹的有效物理块地址;
83.处理模块20,用于根据指纹管理单元返回的有效数据块对应的有效物理块地址,将有效物理块地址与有效数据块的当前物理块地址进行对比;
84.处理模块20,还用于若地址一致,则将有效数据块搬移至第一物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第一物理块地址,以及将地址映射表中与有效物理块地址相同的物理块地址替换为第一物理块地址;地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系;否则,将地址映射表中有效数据块的逻辑块地址映射到有效物理块地址。
85.擦除模块30,用于对当前扫描区域中的数据块进行擦除。
86.具体的,存储设备在后台数据搬移的过程中进行数据的离线去重,比如在后台进行垃圾回收或者磨损均衡的操作中。相较于在前台进行对数据的在线去重,减少了对存储设备的io性能的影响,保证了上层应用的服务质量。
87.一种可行的实施方式,该离线去重操作的触发执行可以为自启动执行,这样更便于设备管理。具体的,比如可以为前台读写压力较小而存储设备的剩余存储空间低于预设值时自启动去重操作;也可以为自前台读写压力较少时预设时间后自启动去重操作;也可以用户预设的固定时间自启动去重操作,比如每天的某个时间点或每周的某一天或每月的某一天等前台读写压力较小的时间。另一种可行的实施方式,该离线去重操作的触发执行也可以为接收到前台的去重指令后启动去重操作,这样更具灵活性。具体的,比如基于用户的操作指令启动去重操作,比如发现存储设备存储空间不足或接收到存储设备发送的空间不足预警时用户主动下发去重指令。
88.其中,后台在进行离线去重操作时,前台可以同时进行读写操作,相较于直接在前
台写入数据时即进行在线去重,大大降低了对存储设备io性能的影响。后台在进行离线去重操作时,前台也可以不进行读写操作,此时数据去重不影响前台的读写性能。在实际应用过程中,在对存储设备的io性能和上层应用服务质量要求不高时,或者存储设备的io性能配置很高时,可以选择前台读写与后台去重并行,有利于提高存储空间释放速度和利用率。
89.进一步地,当前扫描区域为存储设备上即将进行数据搬移的物理空间区域。物理空间区域上存储有数据块,该数据块对应有物理块地址pba。示例性的,按照pba对数据块进行顺序处理,对于有效数据块,获取该有效数据块的数据指纹并发送至指纹管理单元。需要说明的是,相对于有效数据块的概念,无效数据块可以指前台操作删除的文档或图片等数据。其中所涉及的识别有效数据块和无效数据块的技术可参考相关技术,在此不作具体介绍。
90.进一步地,数据指纹用于标识数据块,内容相同的数据块的数据指纹相同。指纹管理单元用于记录数据指纹及对应的有效物理块地址,当该有效数据块的数据指纹记录于指纹管理单元时,指纹管理单元则返回所记录的对应的有效物理块地址。其中,当有效数据块的数据指纹存储于指纹管理单元时,说明该数据块可能为重复的数据块,也就是说扫描到存储在不同物理块地址但内容相同的数据块,需要进行去重;也可能不是重复的数据块,也就是说扫描的数据块的物理块地址即为指纹管理单元所记录的物理块地址,不需要去重。因此,需要进一步比较指纹管理单元返回的有效物理块地址和有效数据块的当前物理块地址。
91.进一步地,当有效物理块地址与当前物理块地址一致时,说明该数据块是原始的数据块而不是重复的数据块,进行数据搬移时不去重。具体的,将该数据块写入新的物理块地址(即第一物理块地址),同时更新指纹管理单元内该数据指纹对应的有效物理块地址为第一物理块地址,以及更新地址映射表。当有效物理块地址与当前物理块地址不一致时,说明该数据块是重复的数据块,进行数据搬移时去重。具体的,不将该数据块写入新的物理块地址,只更新地址映射表。
92.下面对地址映射表的更新过程进行举例说明。
93.示例性的,图3为本技术实施例提供的一种地址映射表的示意图。地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系。如图3所示,每个lba对应一个pba,其中,lba为0x13的数据块与lba为0x11的数据块的内容相同,指纹管理单元记录lba为0x11的数据块的数据指纹及对应的有效物理块地址为0x21。因此,当扫描到lba为0x13的数据块时,将其对应的pba更新为0x21,不需要为lba为0x13的数据块分配新的物理块地址,节省存储空间。
94.进一步地,地址映射表还包括逻辑块地址对应的上一个去重逻辑块地址和下一个去重逻辑块地址;其中,上一个去重逻辑块地址为与当前的逻辑块地址指向相同物理块地址的上一个逻辑块地址;下一个去重逻辑块地址为与当前的逻辑块地址指向相同物理块地址的下一个逻辑块地址。
95.如图3所示,每个lba还对应上一个去重lba和下一个去重lba,用于串联映射到同一个pba的多个lba。对于lba为0x11的数据块,其对应的pba为0x21;对于lba为0x13的数据块,其对应的pba也为0x21。此时,对于0x11的lba,其下一个去重lba为0x13(无上一个去重lba,用无效值0xffffffff表示),对于0x13的lba,其上一个去重lba为0x11(无下一个去重
lba)。
96.一个示例中,在图3的基础上,图4为本技术实施例提供的另一种地址映射表的示意图,显示了当lba为0x15的数据块与lba为0x11的数据块内容相同时,地址映射表的更新情况。具体的,不将lba为0x15的数据块写入新的物理块地址,而将0x15的lba对应的pba更新为0x21。这样处理,不需要划分新的物理块存储区域重复存储内容相同的lba为0x15的数据块,实现了数据去重,有利于节约存储空间。同时,对于0x13的lba,其下一个去重lba为0x15;对于0x15的lba,其上一个去重lba为0x13(无下一个去重lba,用无效值0xffffffff表示)。
97.可选的,处理模块20,具体用于根据地址映射表中上一个去重逻辑块地址和下一个去重逻辑块地址,确定指向有效物理块地址的所有逻辑块地址;处理模块20,具体还用于将所有逻辑块地址对应的物理块地址均替换为第一物理块地址。
98.一个示例中,在图4的基础上,图5为本技术实施例提供的又一种地址映射表的示意图,显示了当pba为0x21的数据块搬移至新的物理块地址0x30(即第一物理块地址)时,地址映射表的更新情况。比如,当进行第n次扫描时(n为大于等于2的整数),再次扫描到pba为0x21、lba为0x11的有效数据块时,当前pba等于指纹管理单元返回的pba,即均为0x21,则将对pba为0x21处存储的数据块写入新的pba,即0x30,进行数据搬移。此时根据地址映射表中上一个去重lba和下一个去重lba的映射关系,可得知0x21的pba对应由三处lba,即0x11、0x13和0x15。此时,将三处pba信息均由0x21更新为0x30。
99.本实施例通过在数据搬移的过程中进行扫描和数据搬移,筛除扫描区域内的无效数据块,以及对于内容重复的有效数据块,仅实质的写入一次,通过地址映射表中多个lba对应到一个pba来进行数据索引,实现数据的离线去重,尽可能地减少了去重操作对前台读写的性能影响,提高了对上层应用的服务质量。同时,将有效数据块集中存储在新的存储区域,对于完成了数据搬移的存储区域进行擦除后可重新写入数据,节约了存储空间,提高了存储空间利用率。
100.进一步地,处理模块20,还用于接收指纹管理单元返回的无效物理块地址;其中,无效物理块地址是当指纹管理单元中没有记录有效数据块的数据指纹时返回的;处理模块20,还用于将有效数据块搬移至第二物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第二物理块地址,以及将地址映射表中有效数据块的逻辑块地址映射到第二物理块地址。
101.具体的,当指纹管理单元没有记录该数据指纹时,说明该有效数据块是第一次被扫描。将该数据块写入新的物理块地址(即第二物理块地址),同时指纹管理单元记录该数据指纹及对应的第二物理块地址,用于后续扫描数据块的指纹对比。以及,将地址映射表中该有效数据块的逻辑块地址映射到第二物理块地址,用于前台通过lba访问对应的pba存储的数据块。
102.可选的,获取模块10,具体用于确定当前扫描区域内的有效数据块,向指纹计算单元发送有效数据块;获取模块10,具体还用于接收指纹计算单元返回的有效数据块的数据指纹。
103.示例性的,存储设备内部配置有用于根据数据块计算数据指纹的指纹计算单元。向指纹计算单元发送定长的数据块,例如一个硬盘扇区的大小4kb,计算得到相应的指纹
后,指纹计算单元返回数据指纹。其中,指纹计算单元可以是通用的cpu,也可以是专用的fpga或asic等硬件设备。设置专用的指纹计算单元对数据指纹的计算进行加速处理,有利于提高数据去重的效率。
104.可选的,一种可行的确定当前扫描区域的方式中,根据扫描单位,将物理存储区域划分为多个待扫描区域。其中,扫描单位可以为存储设备的擦除最小单位,比如1024kb。将存储设备的物理存储区域划分为多个1024kb的待扫描区域。接着,按照物理块地址的顺序依次将待扫描区域作为当前扫描区域进行扫描和数据搬移,搬移完成后,对当前扫描区域进行数据擦除,用于写入新的数据。
105.另一种可行的确定当前扫描区域的方式中,根据扫描单位将物理存储区域划分为多个待扫描区域后,统计多个待扫描区域内有效数据块的占比,并按照占比由低至高的顺序,依次将每个待扫描区域作为当前扫描区域。具体的,对多个1024kb的待扫描区域内有效数据块的占比进行统计,按照占比由低至高的顺序依次将待扫描区域作为当前扫描区域进行扫描和数据搬移。由于待扫描区域内的有效数据块较少,数据搬移过程耗时短,进而可迅速释放该扫描区域的存储空间,提高数据离线去重速度。
106.一个示例中,当前台有写入操作时,按正常写流程写入数据块(即将数据块写入新的pba上),并更新相应的地址映射表。在图5的基础上,图7为本技术实施例提供的再一种地址映射表的示意图,显示了当前台对一个原先符合去重条件的数据块进行更新后,地址映射表的现实情况。具体的,lba为0x13的数据块进行更新,为新写入的数据块分配新的pba为0x31。此时0x13的lba无对应的上一个去重lba和下一个去重lba,而0x11的lba对应的下一个去重lba更新为0x15,而0x15的lba对应的上一个去重lba更新为0x11。
107.示例性的,图8为本技术实施例提供的又一种离线去重方法的流程图。可选的,存储设备内部的存储控制器包含用于基于数据块获取数据指纹的指纹计算单元和用于记录数据指纹的指纹管理单元。指纹计算单元和指纹管理单元由驱动进行管理和调度。计算数据指纹时,由存储设备的驱动向指纹计算单元发送定长的数据块,例如一个硬盘扇区的大小4kb,指纹计算单元计算得到相应的指纹后,将指纹返回给设备的驱动。指纹计算单元可以是通用的cpu,也可以是专用的fpga或asic等硬件设备。指纹管理单元中,存储配对的指纹和pba,在指纹查找的过程中,找到匹配的指纹即可得到对应的pba。存储设备的驱动负责维护lba和pba的映射表,且该映射表支持多个lba到一个pba的映射。
108.存储设备内部数据的去重操作为离线去重,发生在存储设备后台进行数据搬移之时。在存储设备的后台操作中,按照如下步骤进行数据的去重操作:
109.(1)设备驱动对即将进行数据搬移的物理空间区域进行顺序扫描;
110.(2)对于扫描区域内的每一个有效数据块,驱动将其发送至数据指纹计算单元,由数据指纹计算单元返回对应的数据指纹;
111.(3)驱动将得到的数据指纹发送至指纹管理单元,指纹管理单元查找是否已经存在该数据指纹;若存在,则向驱动返回对应的pba;若不存在,则向驱动返回无效的pba;
112.(4)驱动对指纹管理单元的返回值进行如下判断:
113.(4.1)若返回的pba有效,即数据指纹已经存在于指纹管理单元中,则驱动判断数据块原先的pba是否等于返回的pba。
114.若相等,则将数据块写入存储介质中新的pba,并用新的pba对地址映射表中所有
指向原先pba的映射关系进行更新;若不相等,则驱动根据返回的pba和该数据块的lba更新地址映射表,而数据块将不会被重新写入存储介质;
115.(4.2)若返回的pba无效,即数据指纹不存在于指纹管理单元中,则驱动首先将数据块写入存储介质,然后向指纹管理单元重新发送指纹以及对应数据块所占用的新的pba,由指纹管理单元对该指纹以及pba进行存储;然后驱动根据数据块的lba和pba更新地址映射表;
116.(5)直到数据搬移区域扫描结束,擦除扫描区域,释放存储空间。
117.本实施例获取模块10,用于获取数据搬移过程中当前扫描区域内有效数据块的数据指纹,并发送至指纹管理单元;指纹管理单元记录有各数据指纹的有效物理块地址;处理模块20,用于根据指纹管理单元返回的有效数据块对应的有效物理块地址,将有效物理块地址与有效数据块的当前物理块地址进行对比;处理模块20,还用于若地址一致,则将有效数据块搬移至第一物理块地址,并在指纹管理单元中记录有效数据块的数据指纹和第一物理块地址,以及将地址映射表中与有效物理块地址相同的物理块地址替换为第一物理块地址;地址映射表包括各数据块的逻辑块地址与物理块地址的映射关系;否则,将地址映射表中有效数据块的逻辑块地址映射到有效物理块地址。擦除模块30,用于对当前扫描区域中的数据块进行擦除。上述方案在后台数据搬移的过程中进行对数据的离线去重,避免在前台写入数据时即进行对数据的在线去重,从而减少对前台读写性能的影响,提高上层应用的服务质量。
118.实施例三
119.图10为本技术实施例提供的一种电子设备的结构示意图,如图10所示,电子设备包括:
120.处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(communication interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器292中的逻辑指令,以执行上述实施例的方法。
121.此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
122.存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本技术实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
123.存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
124.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现实施例一提供的方法。
125.本技术实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述实施例一提供的方法。
126.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其
它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
127.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献