一种数据回收方法及装置与流程

文档序号:17600355发布日期:2019-05-07 20:11阅读:227来源:国知局
一种数据回收方法及装置与流程

本发明涉及数据存储领域,尤其涉及一种数据回收方法及装置。



背景技术:

固态硬盘(solidstatedisk,ssd)存储空间的数据回收是指,将数据存储单元中有效的数据存储到其他空间后,擦除该数据存储单元的数据。现有技术的方法是读取待数据存储单元的每个数据页,获取该页的物理地址,将该物理地址与地址映射表中对应的物理地址进行比较,以判断该数据页包含的数据是否有效,如果有效,则将该数据存储单元中的有效数据搬移到其他数据存储单元后,就可将该数据存储单元进行擦除操作,完成回收。

当回收的数据涉及页面较多时,存在许多读取无效数据的操作,这会造成整体的数据回收过程耗时较长。另外,对于一些固态硬盘,如动态随机存取存储器(dynamicrandomaccessmemory,dram),更会长时间占用有限的随机存取存储器(randomaccessmemory,ram)资源,极度影响输入/输出(input/output,i/o)性能,出现视频丢帧等现象。

事实上,回收数据只需要读取有效数据,但现有技术的方法需要对数据页一一读取并判断,回收成本较高。因此,亟待找到一种只读取有效数据的方法,降低回收成本。



技术实现要素:

针对该问题,本发明提出了一种数据回收方法,用于解决现有技术中需要对数据页一一读取,回收成本较高的问题。

本发明实施例提供一种数据回收方法,该方法包括:

存储设备读取数据回收单元的数据页列表;

所述存储设备根据所述数据页列表,确定与该数据页列表对应的数据回收单元中数据为有效数据的n个数据页;所述数据页列表记录了所述数据回收单元中每个数据页的数据是否为有效数据;n为大于或等于0的整数;

n大于0时,所述存储设备将所述n个数据页的数据进行备份,并擦除所述数据回收单元的所有数据。

可选的,所述存储设备读取数据回收单元的数据页列表,包括:

所述存储设备根据查询表,确定所述数据页列表;所述查询表记录了所述数据回收单元与所述数据页列表的映射关系,以及所述数据页列表的物理存储位置;

所述存储设备从所述物理存储位置读取所述数据页列表。

可选的,所述方法包括:

所述数据回收单元包括m个数据页;m为大于或等于n的整数;

所述数据页列表包括m个元素,针对所述m个元素中任一元素,该元素与所述m个数据页中的一个数据页唯一对应,该元素用于指示该元素唯一对应的数据页的数据有效或无效;

所述数据页列表创建时,针对所述m个数据页中任一数据页,所述存储设备将该数据页在所述数据页列表中对应元素的值取为第一预设值,所述第一预设值用于指示该数据页的数据为无效。

可选的,所述方法包括:

针对所述m个数据页中任一数据页,当该数据页在所述数据页列表创建后首次写入数据时,所述存储设备将该数据页对应的元素值取为第二预设值,所述第二预设值用于指示该数据页的数据为有效。

可选的,所述存储设备将该数据页对应的元素值取为第二预设值之后,所述方法还包括:

若该数据页存储的数据需要更新,所述存储设备将该数据页的更新数据存储至第一数据页;所述第一数据页为所述存储设备中任一数据页;

所述存储设备将所述数据页列表中所述第一数据页对应的元素值取为所述第二预设值;

所述存储设备将所述数据页列表中该数据页对应的元素值取为所述第一预设值。

可选的,所述存储设备擦除所述数据回收单元的所有数据之后,所述方法还包括:

所述存储设备重新创建所述数据页列表。

本发明实施例中,存储设备预先存储了记录数据回收单元中数据为有效数据的n个数据页的数据页列表,根据数据页列表只读取存储有效数据的数据页,不必浪费操作读取存储无效数据的数据页,降低了数据回收的成本。

本发明实施例进一步地提供一种存储介质,包括程序或指令,所述程序或指令被执行实现本发明实施例提供的一种数据回收方法及任一可选的方法。

本发明实施例进一步地提供一种计算机,包括程序或指令,所述程序或指令被执行实现本发明实施例提供的一种数据回收方法及任一可选的方法。

基于同样的发明构思,本发明实施例进一步地提供一种数据回收装置,该系装置包括:

处理单元,存储单元,所述存储单元用于存储获取程序和处理程序,所述处理单元用于执行获取程序和处理程序,

获取程序:用于读取数据回收单元的数据页列表;

处理程序:用于根据所述数据页列表,确定与该数据页列表对应的数据回收单元中数据为有效数据的n个数据页;所述数据页列表记录了所述数据回收单元中每个数据页的数据是否为有效数据;n为大于或等于0的整数;

以及用于,n大于0时,将所述n个数据页的数据进行备份,并擦除所述数据回收单元的所有数据。

可选的,所述获取程序,具体用于:

根据查询表,确定所述数据页列表;所述查询表记录了所述数据回收单元与所述数据页列表的映射关系,以及所述数据页列表的物理存储位置;

从所述物理存储位置读取所述数据页列表。

可选的,所述处理程序,具体用于:

所述数据回收单元包括m个数据页;m为大于或等于n的整数;

所述数据页列表包括m个元素,针对所述m个元素中任一元素,该元素与所述m个数据页中的一个数据页唯一对应,该元素用于指示该元素唯一对应的数据页的数据有效或无效;

所述数据页列表创建时,针对所述m个数据页中任一数据页,将该数据页在所述数据页列表中对应元素的值取为第一预设值,所述第一预设值用于指示该数据页的数据为无效。

可选的,所述处理程序,具体用于:

针对所述m个数据页中任一数据页,当该数据页在所述数据页列表创建后首次写入数据时,将该数据页对应的元素值取为第二预设值,所述第二预设值用于指示该数据页的数据为有效。

可选的,所述处理程序,还用于:

若该数据页存储的数据需要更新,将该数据页的更新数据存储至第一数据页;所述第一数据页为所述装置中任一数据页;

将所述数据页列表中所述第一数据页对应的元素值取为所述第二预设值;

将所述数据页列表中该数据页对应的元素值取为所述第一预设值。

可选的,所述处理程序,还用于:

重新创建所述数据页列表。

附图说明

图1为本发明实施例提供的一种数据回收方法对应的固态硬盘存储阵列的结构示意图;

图2为本发明实施例提供的一种数据回收方法对应的数据页列表的结构示意图;

图3为本发明实施例提供的一种数据回收方法的步骤流程图;

图4为本发明实施例提供的一种数据回收方法的步骤的详细流程图;

图5为本发明实施例提供的一种数据回收方法的具体实现方法的示意图;

图6为本发明实施例提供的一种数据回收装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合说明书附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

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

硬盘是计算机、服务器等存储设备的存储介质之一,固态硬盘是用固态电子存储阵列而制成的硬盘。其中存储阵列由大量的存储单元组成,每个存储单元能存放1位二值数据(0,1)。通常存储单元排列成行×列矩阵形式。它是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。

本发明实施例中固态硬盘的存储阵列的结构如图1所示。

该存储阵列从横向可分为l个横条带,编号从1到l;从纵向分可分为p个纵条带,编号从1到p。一个纵条带由k个子带组成,一个子带由l个数据块组成,编号从1到l。另外,每个数据块中都有多个数据页,本发明实施例中每个数据块的数据页个数设为s个,则一个横条带包含p·k·s个数据页,l、p、k、s均为大于0的整数。

每个数据页都有一个冗余区,用于保存该数据页的物理地址以及该物理地址对应的逻辑地址。计算机中还有一张地址映射表,用于存储每个数据页的物理地址及其映射的逻辑地址,对每个数据页访问时,只能通过操作该数据页的逻辑地址,间接到该数据页的物理地址访问该数据页。当原数据页的数据发生更新后,映射表中该数据页的逻辑地址将映射存储新数据的数据页的物理地址。此时,原数据页的物理地址丢失,不能再被访问,此时旧数据页存储的数据称为无效数据,新数据页存储的数据称为有效数据。一个数据页不会既存储有效数据,又存储无效数据。本发明实施例中,若一个数据页的逻辑地址,在地址映射表中对应的物理地址与该数据页记录的物理地址相同,则称为有效数据页,反之,则称为无效数据页。无效数据页中的数据不能被访问,且占用了存储空间,这无疑是一种存储资源的浪费。

因此,为了充分利用存储资源,需要将一定存储区中有效数据页存储的有效数据存储到其他存储区后,将该存储空间擦除,该过程称为数据回收。进行数据回收最小的存储单位称为数据回收单元,也就是说不能对数据回收单元中局部数据进行数据回收。需要说明的是,本发明实施例中,数据回收单元为横条带。

本发明实施例中,存储设备的ram中为每个横条带保存一个全局的记录有效数据页的表,称为数据页列表。数据页列表使用比特位来完整地记录一个横条带中所有数据页存储数据的有效性,如果该数据页的存储数据有效,则置1;否则,置为0。

如图2所示,为本发明实施例提供的一种数据回收方法对应的数据页列表的结构示意图。设数据页共有t+1个,每1位表示1个数据页的有效性。因此,每4个字节表示32个数据页的有效性。图中,第一行0~31表示每行数据页的序号;数据页0、数据页32、...、数据页t-31等,为每一行左边第一个数据页的编号。t位大于0的整数。每个数据页都对应一个有效位,有效位以二进制取为例,值为0或1,图中每个数据页的有效位的值仅作为举例。数据页列表在每记录完一定数据量的数据后,以该数据量为单位,存储到存储设备的单层单元闪存(single-levelcell,slc)中,举例来说,64兆字节(mbyte,mb)。特殊地,是数据页列表存储满后,即以数据页列表存储空间的大小为单位,存入slc。需要说明的是,当固态硬盘发生异常掉电时,导致数据页没有及时存入slc中时,可以在硬盘掉电重建阶段通过读取横条带中每个数据页冗余区记录的物理地址来进行重建表项,将该数据页的物理地址与地址映射表中该数据页的物理地址进行一致性比较,相同则为有效,不同则为无效,将比较过程提前到上电重建阶段,避免影响io读写性能,并且每次最多只需要恢复64mb数据所对应的有效性标志。

存储设备用一个表来管理数据页列表在闪存中物理位置,以及数据页列表与对应横条带的映射关系,称为查询表。对于上述横条带来说,一个横条带包含p·k·s个数据页,若每1位可以表示1个数据页,则一个横条带对应的数据页列表的大小为(p*k*s/(8*1024))千字节(kilobyte,kb)。

下面对本发明实施例提供的数据回收方法做详细描述。参考图3,为本发明实施例提供的数据回收方法的步骤流程图。

步骤301:存储设备读取数据回收单元的数据页列表。

步骤302:所述存储设备根据所述数据页列表,确定与该数据页列表对应的数据回收单元中数据为有效数据的n个数据页。

所述数据页列表记录了所述数据回收单元中每个数据页的数据是否为有效数据;n为大于或等于0的整数。

步骤303:n大于0时,所述存储设备将所述n个数据页的数据进行备份,并擦除所述数据回收单元的所有数据。

步骤301中,存储设备首先加载查询表,由根据查询表中记录的数据回收单元与数据页列表的关系,确定该数据回收单元的数据页列表,并从数据页列表的存储位置,读取该数据回收单元的数据页列表,将数据页列表加载到内存中。

步骤302之前,数据页列表中t个有效位的值都进行了预处理。t个有效位中,每个有效位都与数据回收单元中的一个数据页唯一对应。举例来说,有效位为二进制值,若数据页的有效位为1,则该数据页为有效数据页;若数据页的有效位为0,则该数据页为无效数据页。一个固态硬盘的存储阵列中,对于其中任意一个未存储数据时或擦除进行数据后的横条带,第一次上电后,这个横条带的数据页列表被创建。数据页列表创建时,对数据页列表中m个元素的值,都进行了预处理。对于每个数据页,所述存储设备将该数据页在所述数据页列表中对应元素的值设为第一预设值,所述第一预设值用于指示该数据页的数据为无效。针对所述m个数据页中任一数据页,当该数据页在所述数据页列表创建后首次写入数据时,所述存储设备将该数据页对应的元素值取为第二预设值,所述第二预设值用于指示该数据页的数据为有效。

举例来说,数据页列表创建时,对于二进制有效位,所述存储设备将每个数据页的有效位设为0,0用于指示该数据页的数据为无效。针对每个数据页,当该数据页在所述数据页列表创建后首次写入数据时,所述存储设备将该数据页对应的元素值取为1,1用于指示该数据页的数据为有效。

存储设备将该数据页对应的元素值取为第二预设值之后,该元素的值仍有可能再被取为第一预设值,一种可能的实现方式为:

当该数据页存储的数据需要更新时,具体地,存储设备将该数据页的更新数据存储至第一数据页;所述第一数据页为所述存储设备中任一数据页;存储设备将该数据页的逻辑地址在地址映射表中映射的物理地址更新为第一数据页的物理地址;存储设备将该数据页在数据页列表中元素的对应值更新为第一预设值;存储设备将第一数据页在数据页列表中元素的对应值更新为第一预设值。

举例来说,该数据页名称为数据页1,物理地址为padr1,逻辑地址为ladr1,存储的数据是文本文档1。当文本文档1被修改、发生更新时,更新后的文件称为文本文档2。存储设备将文本文档2存储到数据页2,并将ladr1在地址映射表中映射的物理地址更新为文本文档2的物理地址padr2。之后,存储设备把数据页1在数据页列表中的值修改为0,把数据页2在数据页2对应的数据页列表中的值修改为1。

步骤302中,数据页列表记录了当前每个数据页存储的数据有效或无效。根据预设条件,如有效位为1代表有效,有效位为0代表无效,将数据回收单元中在数据页列表中记录的n个有效数据页筛选出来。

如果,该数据回收单元无有效数据页,即n为0时,直接将该数据回收单元所有的数据擦除。

该步骤中,存储设备直接快速地确定有效数据页,极大地缩短了垃圾回收的时间,可及时地释放ram资源供io使用,提高固态硬盘的垃圾回收效率和读写性能。

步骤303中,n大于0时,所述存储设备将所述n个数据页的数据进行备份,并擦除所述数据回收单元的所有数据。

一种可行的实现方式为,所述存储设备直接读取所述n个数据页的数据后,存储到存储设备的其它位置后,擦除所述数据回收单元的所有数据,这样不至于有效数据丢失。

可选的,所述存储设备擦除所述数据回收单元的所有数据之后,还包括:所述存储设备重新创建所述数据页列表。重新创建指,将数据页列表的数据擦除后,将每个元素的值取为第一预设值。

本发明实施例中,存储设备为每个横条带在ram中保存一个全局的数据页列表,用于记录该横条带中每个数据页的有效性。当一个数据页列表存储满后,存储设备在闪存中单独划分一部分区域来保存该数据页列表,在将数据页列表存入闪存时,即使存储设备掉电,也不会影响数据页列表的记录以及io性能。另外,存储设备提供了查询表来保存数据页列表在闪存中的物理存储位置。存储设备根据数据页列表来快速高效地确定有效数据页的数量及物理位置。

本发明实施例中,存储设备预先存储了记录数据回收单元中数据为有效数据的n个数据页的数据页列表,根据数据页列表只读取存储有效数据的数据页,不必浪费操作读取存储无效数据的数据页,降低了数据回收的成本。

如图4所示,为本发明实施例提供的数据处理方法的步骤的详细流程图。

具体步骤为:

步骤401:存储设备确定数据回收单元。

步骤402:存储设备确定数据回收单元对应的数据页列表。

步骤403:存储设备判断数据回收单元对应的数据页列表是否在ram中。

若是,则执行步骤406;若否,则执行步骤404。

步骤404:存储设备根据查询表确定数据页列表的物理存储位置。

步骤405:存储设备加载数据页列表。

步骤406:存储设备根据数据页列表,确定数据回收单元的有效数据页。

步骤407:存储设备读取数据回收单元中的有效数据页。

步骤408:存储设备备份有效数据页的数据。

步骤409:存储设备擦除该数据回收单元的所有数据,并重新创建该数据回收单元的数据页列表。

如图5所示,为本发明实施例提供的数据回收方法对应的具体实现方法的示意图。图5表示了一个包含t个数据页的横条带b中的所有数据页有效状态,位为1的表示该数据页有效,图中共有5个有效数据页,有效数据页比较分散,表现出很强的随机性。以镁光存储三级单元(triple-levelcell,tlc)为例,读一个数据的时间为80微秒us,一个数据页大小为16kb,假设t=147456,硬盘读速率为500mb/s,在不考虑有写io的情况下,遍历读所有数据页的时间为4.608秒。

现有技术的做法为,依次遍历读取每个数据页的物理地址,将该物理地址与该数据页在地址映射表中对应的物理地址进行比较,如果相同,则表示数据页有效;若不同,则表示数据已被更新,该数据页无效。横条带b只存在5个有效的数据页,但该方法耗费了t-5个无效数据页的读取时间。

具体步骤为:

步骤(1):根据查询表,确定横条带b所对应的数据页列表x;

步骤(2):根据查询表,确定数据页列表x对应的物理位置a1;

步骤(3):从a1中读取数据页列表x到ram中;

步骤(4):查询数据页列表x知数据页33、数据页98、数据页t-59、数据页t-60和数据页t-38对应的bit位为1,总共5个有效数据页;

步骤(5):直接读取这5个数据页的数据到内存中;

步骤(6):将5个数据页的数据存储到其他存储区,擦除横条带b进行回收,并重新创建数据页列表x。

相比传统的方法,本申请的方法不需要遍历读所有的数据页,只需要读5个数据页,节省了读t-5个数据页的时间。

本发明实施例进一步地提供一种存储介质,包括程序或指令,所述程序或指令被执行实现本发明实施例提供的一种数据回收方法及任一可选的方法。

本发明实施例进一步地提供一种计算机,包括程序或指令,所述程序或指令被执行实现本发明实施例提供的一种数据回收方法及任一可选的方法。

如图6所示,为本发明实施例提供的一种数据回收装置的结构示意图。

一种数据回收装置,包括:

处理单元601,存储单元602,所述存储单元602用于存储获取程序和处理程序,所述处理单元601用于执行获取程序和处理程序,

获取程序:用于读取数据回收单元的数据页列表;

处理程序:用于根据所述数据页列表,确定与该数据页列表对应的数据回收单元中数据为有效数据的n个数据页;所述数据页列表记录了所述数据回收单元中每个数据页的数据是否为有效数据;n为大于或等于0的整数;

以及用于,n大于0时,将所述n个数据页的数据进行备份,并擦除所述数据回收单元的所有数据。

可选的,所述获取程序,具体用于:

根据查询表,确定所述数据页列表;所述查询表记录了所述数据回收单元与所述数据页列表的映射关系,以及所述数据页列表的物理存储位置;

从所述物理存储位置读取所述数据页列表。

可选的,所述处理程序,具体用于:

所述数据回收单元包括m个数据页;m为大于或等于n的整数;

所述数据页列表包括m个元素,针对所述m个元素中任一元素,该元素与所述m个数据页中的一个数据页唯一对应,该元素用于指示该元素唯一对应的数据页的数据有效或无效;

所述数据页列表创建时,针对所述m个数据页中任一数据页,将该数据页在所述数据页列表中对应元素的值取为第一预设值,所述第一预设值用于指示该数据页的数据为无效。

可选的,所述处理程序,具体用于:

针对所述m个数据页中任一数据页,当该数据页在所述数据页列表创建后首次写入数据时,将该数据页对应的元素值取为第二预设值,所述第二预设值用于指示该数据页的数据为有效。

可选的,所述处理程序,还用于:

若该数据页存储的数据需要更新,将该数据页的更新数据存储至第一数据页;所述第一数据页为所述装置中任一数据页;

将所述数据页列表中所述第一数据页对应的元素值取为所述第二预设值;

将所述数据页列表中该数据页对应的元素值取为所述第一预设值。

可选的,所述处理程序,还用于:

重新创建所述数据页列表。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

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