存储设备的信息恢复方法、装置、电子设备及存储介质与流程

文档序号:30619489发布日期:2022-07-02 02:04阅读:118来源:国知局
存储设备的信息恢复方法、装置、电子设备及存储介质与流程

1.本公开涉及存储技术领域,具体涉及一种存储设备的信息恢复方法、装置、电子设备及存储介质。


背景技术:

2.数据中心大量使用固态硬盘(solid state disk,ssd)实现数据存储。通常,为了避免不同服务方的数据之间相互影响,例如在服务a写入数据时不影响服务b读取数据的性能,ssd会将不同服务的数据以多流(multi-stream)方式写入不同的超级块(super block,spb),因此,不同spb内的数据的写入先后关系存在不确定的情况,而ssd的垃圾回收(garbage collection,gc)过程中的数据拷贝操作会进一步加重这种不确定性。
3.ssd使用存储在易失性存储介质中的地址映射表(l2p表)维护主机端写入的逻辑地址到ssd端的物理地址之间的映射关系。在没有通知ssd就意外断电的情况下,存储在易失性存储介质中的l2p表会丢失。此时,需要从ssd存储的数据本身恢复l2p表。但是,由于不同spb内的数据的写入先后关系存在不确定的情况,在同一逻辑地址被多次写入从而先后映射到不同物理地址时,要恢复最后的逻辑地址到物理地址映射关系的难度很大。另外,ssd的ddr(double data rate,双倍速率同步动态随机存储器)内存有限,因此希望能够在消耗较少的ddr内存空间的情况下恢复l2p表。


技术实现要素:

4.为了解决相关技术中的问题,本公开实施例提供一种存储设备的信息恢复方法、装置、电子设备及存储介质。
5.第一方面,本公开实施例中提供了一种存储设备的信息恢复方法,包括:获取存储设备中存储的数据的顺序信息,所述顺序信息表示所述数据写入所述存储设备的顺序;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,其中,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息。
6.根据本公开的实施例,其中:所述数据包括第一类型数据和第二类型数据,所述第一类型数据包括从所述存储设备外部写入所述存储设备的数据,所述第二类型数据包括通过拷贝所述第一类型数据而写入所述存储设备的数据;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的
先后顺序分为多个数据组;所述恢复信息包括所述数据的逻辑地址到物理地址的映射关系。
7.根据本公开的实施例,其中:所述存储设备中存储一个或多个第一类型超级块,所述第一类型超级块包括一个或多个第一类型写缓冲组,所述第一类型写缓冲组包括一个或多个第一类型数据;所述存储设备存储一个或多个第二类型超级块,所述第二类型超级块包括一个或多个第二类型写缓冲组,所述第二类型写缓冲组包括一个或多个第二类型数据;来自不同服务的数据存储在不同的超级块中。
8.根据本公开的实施例,其中:所述第一类型数据的顺序信息包括第一顺序信息,所述第一类型数据的第一顺序信息包括随所述第一类型数据写入所述存储设备而递增的序号;所述第二类型数据的顺序信息包括第一顺序信息和第二顺序信息,所述第二类型数据的第一顺序信息包括所述第二类型数据对应的第一类型数据的第一顺序信息,所述第二类型数据的第二顺序信息包括在写入所述第二类型数据所属的第二类型超级块中的第一个第二类型数据时,所述存储设备中最近一次写入的第一类型数据的第一顺序信息。
9.根据本公开的实施例,其中,所述根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:将所述第二类型数据的第二顺序信息作为分界值;根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组。
10.根据本公开的实施例,其中,所述根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组,包括:按照分界值从小到大的顺序,针对每个分界值,将尚未分组的第一类型数据中第一顺序信息小于等于所述分界值的第一类型数据和尚未分组的第二类型数据中第二顺序信息小于所述分界值的第二类型数据分为一组;将第一类型数据中顺序信息大于最大分界值的第一类型数据和第二类型数据中第二顺序信息等于最大分界值的第二类型数据分为一组。
11.根据本公开的实施例,其中,所述基于每个数据组中数据的元数据生成恢复信息,包括:针对每个数据组,按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息。
12.根据本公开的实施例,其中,所述按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息包括,针对所述数据组:分别读取每个服务最先写入所述存储设备的第一类型写缓冲组的第一类型数据的元数据,其中,针对每个服务,所述第一类型写缓冲组按照写入所述存储设备的先后顺序排序;读取所述第二类型超级块中最先写入所述存储设备的第二类型写缓冲组中的第
二类型数据的元数据,其中,所述第二类型写缓冲组按照写入所述存储设备的先后顺序排序;按照第一顺序信息从小到大的顺序,对读取的元数据进行处理,以基于所述元数据生成恢复信息,其中,在任一写缓冲组中的元数据处理完毕之后,读取并处理相应的下一个写缓冲组的元数据。
13.根据本公开的实施例,所述方法还包括:获取所述第二类型超级块中指定第二类型数据的元数据,所述第二类型超级块中指定第二类型数据的元数据用于确定所述第二类型超级块中第二类型数据的第二顺序信息;获取所述第一类型超级块中最先写入的第一类型数据的元数据,所述第一类型超级块中最先写入的第一类型数据的元数据用于确定所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息,所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息用于针对每个服务,对所述第一类型超级块排序,进而对所述第一类型写缓冲组排序。
14.第二方面,本公开实施例中提供了一种存储设备的信息恢复装置,包括:第一获取模块,被配置为获取存储设备中存储的数据的顺序信息,所述顺序信息表示所述数据写入所述存储设备的顺序;分组模块,被配置为根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;生成模块,被配置为按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,其中,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息。
15.根据本公开的实施例,其中:所述数据包括第一类型数据和第二类型数据,所述第一类型数据包括从所述存储设备外部写入所述存储设备的数据,所述第二类型数据包括通过拷贝所述第一类型数据而写入所述存储设备的数据;根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;所述恢复信息包括所述数据的逻辑地址到物理地址的映射关系。
16.根据本公开的实施例,其中:所述存储设备中存储一个或多个第一类型超级块,所述第一类型超级块包括一个或多个第一类型写缓冲组,所述第一类型写缓冲组包括一个或多个第一类型数据;所述存储设备存储一个或多个第二类型超级块,所述第二类型超级块包括一个或多个第二类型写缓冲组,所述第二类型写缓冲组包括一个或多个第二类型数据;来自不同服务的数据存储在不同的超级块中。
17.根据本公开的实施例,其中:所述第一类型数据的顺序信息包括第一顺序信息,所述第一类型数据的第一顺序
信息包括随所述第一类型数据写入所述存储设备而递增的序号;所述第二类型数据的顺序信息包括第一顺序信息和第二顺序信息,所述第二类型数据的第一顺序信息包括所述第二类型数据对应的第一类型数据的第一顺序信息,所述第二类型数据的第二顺序信息包括在写入所述第二类型数据所属的第二类型超级块中的第一个第二类型数据时,所述存储设备中最近一次写入的第一类型数据的第一顺序信息。
18.根据本公开的实施例,其中,所述根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:将所述第二类型数据的第二顺序信息作为分界值;根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组。
19.根据本公开的实施例,其中,所述根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组,包括:按照分界值从小到大的顺序,针对每个分界值,将尚未分组的第一类型数据中第一顺序信息小于等于所述分界值的第一类型数据和尚未分组的第二类型数据中第二顺序信息小于所述分界值的第二类型数据分为一组;将第一类型数据中顺序信息大于最大分界值的第一类型数据和第二类型数据中第二顺序信息等于最大分界值的第二类型数据分为一组。
20.根据本公开的实施例,其中,所述基于每个数据组中数据的元数据生成恢复信息,包括:针对每个数据组,按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息。
21.根据本公开的实施例,其中,所述按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息包括,针对所述数据组:分别读取每个服务最先写入所述存储设备的第一类型写缓冲组的第一类型数据的元数据,其中,针对每个服务,所述第一类型写缓冲组按照写入所述存储设备的先后顺序排序;读取所述第二类型超级块中最先写入所述存储设备的第二类型写缓冲组中的第二类型数据的元数据,其中,所述第二类型写缓冲组按照写入所述存储设备的先后顺序排序;按照第一顺序信息从小到大的顺序,对读取的元数据进行处理,以基于所述元数据生成恢复信息,其中,在任一写缓冲组中的元数据处理完毕之后,读取并处理相应的下一个写缓冲组的元数据。
22.根据本公开的实施例,所述装置还包括:第二获取模块,被配置为获取所述第二类型超级块中指定第二类型数据的元数据,所述第二类型超级块中指定第二类型数据的元数据用于确定所述第二类型超级块中第二类型数据的第二顺序信息;第三获取模块,被配置为获取所述第一类型超级块中最先写入的第一类型数据的
元数据,所述第一类型超级块中最先写入的第一类型数据的元数据用于确定所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息,所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息用于针对每个服务,对所述第一类型超级块排序,进而对所述第一类型写缓冲组排序。
23.第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面任一项所述的方法。
24.第四方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面所述的方法。
25.根据本公开实施例提供的技术方案,将存储设备中的数据根据数据的顺序信息,按照写入所述存储设备的先后顺序分为多个数据组,依次对每个数据组进行处理,基于每个数据组中数据的元数据生成恢复信息,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,可以减少元数据对ddr内存的占用,并且减少重复读取元数据的次数,提高存储设备的信息恢复效率。
26.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
27.结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。以下是对附图的说明。
28.图1a示出了根据本公开实施例的存储设备的示意图。
29.图1b示出根据本公开的实施例的存储设备的信息恢复方法的流程图。
30.图2示出了根据数据的顺序信息对存储设备中存储的设备分组的示意图。
31.图3示出根据本公开的实施例的存储设备的信息恢复装置的结构框图。
32.图4示出根据本公开的实施例的电子设备的结构框图。
具体实施方式
33.下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
34.在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
35.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
36.在本公开中,如涉及对用户信息或用户数据的获取操作或向他人展示用户信息或用户数据的操作,则所述操作均为经用户授权、确认,或由用户主动选择的操作。
37.如上所述,数据中心大量使用ssd实现数据存储。通常,为了避免不同服务方的数据之间相互影响,例如在服务a写入数据时不影响服务b读取数据的性能,ssd会将不同服务
的数据以多流方式写入不同的超级块spb,因此,不同spb内的数据的写入先后关系存在不确定的情况。
38.ssd使用存储在易失性存储介质中的l2p表维护主机端的逻辑地址到ssd端的物理地址之间的映射关系。在没有通知ssd就意外断电的情况下,存储在易失性存储介质中的l2p表会丢失。此时,需要从ssd存储的数据本身恢复l2p表。但是,由于不同spb内的数据的写入先后关系存在不确定的情况,在同一逻辑地址被多次写入从而先后映射到不同物理地址时,要恢复最后的逻辑地址到物理地址映射关系的难度很大。另外,ssd的ddr内存有限,因此希望能够在消耗较少的ddr内存空间的情况下恢复l2p表。
39.ssd中存储的数据通常以4k字节为一个数据单元(data unit,du),每个数据单元具有相应的元数据,在元数据中记录有该du的逻辑块地址(logical block address,lba)和物理块地址(physical block address,pba)。通过读取元数据,可以恢复l2p表,即每个du的lba到pba的映射。由于同一lba可能被相同或不同的服务先后多次写入,并且可能在gc过程中被再次写入,因此,每次写入该lba的数据的元数据中记录了该lba到不同pba的映射,但l2p表中保留的是该lba被最后一次写入时的lba到pba的映射。相应地,在恢复l2p表时,需要在该lba到pba的多个映射中确定出最后的lba到pba的映射,将其记录到恢复的l2p表中。
40.一种可能的l2p表恢复方式是冒泡法。例如,针对每个lba,遍历ssd中存储的所有数据的元数据,将最后写入的数据的元数据中记录的lba到pba映射记录到恢复的l2p表中。但是,这种方式需要多次遍历ssd中存储的数据的元数据,而且由于ddr内存有限,当ssd中存储的数据量大时,ddr无法存储所有数据的元数据,从而使冒泡过程变得更加困难和复杂。
41.本公开的实施例提供了一种存储设备的信息恢复方法,包括:获取存储设备中存储的数据的顺序信息,所述顺序信息表示所述数据写入所述存储设备的顺序;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,其中,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息。
42.根据本公开的实施例,将存储设备中的数据根据数据的顺序信息,按照写入所述存储设备的先后顺序分为多个数据组,依次对每个数据组进行处理,基于每个数据组中数据的元数据生成恢复信息,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,可以减少元数据对ddr内存的占用,并且减少重复读取元数据的次数,提高存储设备的信息恢复效率。
43.图1a示出了根据本公开实施例的存储设备的示意图。
44.如图1a所示,存储设备可以包括用于存储数据和元数据的存储芯片、用于读写存储芯片的控制器,以及控制器的内存,控制器执行根据本公开实施例的方法,具体地,控制器从存储芯片中将元数据读入内存,基于内存中的元数据生成恢复信息。
45.根据本公开的实施例,存储设备可以是ssd,控制器可以是ssd控制器,存储芯片可以是nand闪存芯片,被恢复的信息可以是恢复的l2p表,也可以是可以从元数据得到的任何其他信息。
46.图1b示出根据本公开的实施例的存储设备的信息恢复方法的流程图。如图1b所示,所述存储设备的信息恢复方法包括以下步骤s101
ꢀ‑ꢀ
s103:在步骤s101中,获取存储设备中存储的数据的顺序信息,所述顺序信息表示所述数据写入所述存储设备的顺序;在步骤s102中,根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;在步骤s103中,按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,其中,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息。
47.根据本公开的实施例,根据存储设备中存储的数据的顺序信息,将存储设备中的数据按照写入所述存储设备的先后顺序分为多个数据组,依次对每个数据组进行处理,基于每个数据组中数据的元数据生成恢复信息,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,可以减少元数据对ddr内存的占用,并且减少重复读取元数据的次数,提高存储设备的信息恢复效率。
48.根据本公开的实施例,所述数据包括第一类型数据和第二类型数据,所述第一类型数据包括从所述存储设备外部写入所述存储设备的数据,所述第二类型数据包括通过拷贝所述第一类型数据而写入所述存储设备的数据;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;所述恢复信息包括所述数据的逻辑地址到物理地址的映射关系。
49.例如,当存储设备是ssd时,第一类型数据可以是从主机写入ssd的数据,第二类型数据可以是ssd执行gc时通过拷贝第一类型数据而写入ssd的数据。
50.根据本公开的实施例,所述存储设备中存储一个或多个第一类型超级块,所述第一类型超级块包括一个或多个第一类型写缓冲组,所述第一类型写缓冲组包括一个或多个第一类型数据;所述存储设备存储一个或多个第二类型超级块,所述第二类型超级块包括一个或多个第二类型写缓冲组,所述第二类型写缓冲组包括一个或多个第二类型数据;来自不同服务的数据存储在不同的超级块中。
51.例如,在ssd中,可以以超级块spb的形式存储数据。在ssd中,不同芯片(die)上的相同的块可以被统一管理,称为一个spb。每个spb可以包括一个或多个写缓冲组(wbg),每个wbg包括该spb中各个块上的相同页。每个页中包括一个或多个4k的数据单元du,即,每个wbg包括一个或多个du。
52.在ssd中,第一类型超级块可以称为host spb,用于存储从主机写入的数据。不同服务通过各自的流(stream)向host spb写入数据,每个流具有stream id,不同的流写入host spb的数据(即,不同服务写入的数据)存储在不同的host spb中。host spb中的wbg是第一类型写缓冲组,称为host wbg。host wbg中的du是第一类型数据,称为host du。
53.在ssd中,第二类型超级块可以称为gc spb,用于存储在gc过程中从host spb拷贝写入的数据。不同的流写入host spb的数据(即,不同服务写入的数据)可以拷贝到不同的gc spb中。gc spb中的wbg是第二类型写缓冲组,称为gc wbg。gc wbg中的du是第二类型数
据,称为gc du。在进行gc时,一个gc spb只用于拷贝一个服务写入的数据。这样,可以保证gc spb与host spb一样,每个spb仅存储一个服务写入的数据,从而避免不同服务的数据之间相互干扰,影响彼此的读写性能。另外,在进行gc时,某一个时刻只对一个gc spb进行写入,以避免多个gc同时写入造成的写入顺序混乱。
54.根据本公开的实施例,所述第一类型数据的顺序信息包括第一顺序信息,所述第一类型数据的第一顺序信息包括随所述第一类型数据写入所述存储设备而递增的序号;所述第二类型数据的顺序信息包括第一顺序信息和第二顺序信息,所述第二类型数据的第一顺序信息包括所述第二类型数据对应的第一类型数据的第一顺序信息,所述第二类型数据的第二顺序信息包括在写入所述第二类型数据所属的第二类型超级块中的第一个第二类型数据时,所述存储设备中最近一次写入的第一类型数据的第一顺序信息。
55.例如,第一类型数据host du的第一顺序信息可以是一个随host du写入而递增的计数值,记为wc,每写入一个host du,wc递增1。host du的第一顺序信息可以记录在该host du对应的元数据中。第二类型数据gc du的第一顺序信息可以是其拷贝的相应第一类型数据host du的第一顺序信息。例如,假设某个host du的第一顺序信息是16,则拷贝该host du得到的gc du的第一顺序信息也是16。第二类型数据gc du的第二顺序信息是在写入所述第二类型数据gc du所属的第二类型超级块gc spb中的第一个第二类型数据时,ssd中最近一次写入的第一类型数据host du的第一顺序信息。例如,假设在写入某个第二类型超级块gc spb中的第一个gc du时,ssd中最近一次写入的第一类型数据host du的第一顺序信息(即,当前的wc值)是20,则该第二类型超级块gc spb中的第二类型数据gc du的第二顺序信息都是20。第二类型数据host du的第一顺序信息和第二顺序信息记录在第二类型数据host du的元数据中。
56.根据本公开的实施例,host du的元数据可以包括该host du的以下信息:lba、pba、wc、spb类型(如果spb是host spb则值为0)、stream id(写入该host du的流的stream id)。gc du的元数据可以包括该gc du的以下信息:lba、pba、该gc du对应的host du的wc、spb类型(如果spb是host spb则值为0)、stream id(写入该host du的流的stream id),其中,每个gc spb的前8个gc du的元数据中还会分别记录该gc spb中的gc du的第二顺序信息的一部分。例如,假设gc spb的gc du的第二顺序信息共64比特,则前8个gc du的元数据中分别记录该第二顺序信息的8比特。由于每个gc spb中的gc du的第二顺序信息是相同的,所以在每个gc spb的前8个gc du的元数据中记录该第二顺序信息即可。在元数据具有足够的数据位时,也可以在单个gc du的元数据中记录该第二顺序信息,或者可以在每个gc du的元数据中都记录该第二顺序信息。
57.根据本公开的实施例,所述根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:将所述第二类型数据的第二顺序信息作为分界值;根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组。
58.图2示出了根据数据的顺序信息对存储设备中存储的设备分组的示意图。
59.为了说明的方便,图2中将每个spb示为包括7个du,但是可以理解,实际的spb可以包括更多或更少的du。
60.作为示例,图2示出了两个流host stream 0和host stream 1写入的host spb,其
中,用host spb中第一个写入的host du的wc给host spb编号,则流host stream 0写入的是host spb 0、host spb 14、host spb 28,流host stream 1写入的是host spb 2、host spb 16、host spb 30。假设图2中示出的两个gc spb中的第一个gc du在写入时,最近一次写入的host du的wc分别是20和36,则这两个gc spb中的gc du的第二顺序信息分别是20和36。用gc spb中的gc du的第二顺序信息给gc spb编号,则图2中示出的两个gc spb是gc spb 20、gc spb36。将第二类型数据gc du的第二顺序信息20、36作为分界值对数据分组。
61.根据本公开的实施例,所述根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组,包括:按照分界值从小到大的顺序,针对每个分界值,将尚未分组的第一类型数据中第一顺序信息小于等于所述分界值的第一类型数据和尚未分组的第二类型数据中第二顺序信息小于所述分界值的第二类型数据分为一组;将第一类型数据中顺序信息大于最大分界值的第一类型数据和第二类型数据中第二顺序信息等于最大分界值的第二类型数据分为一组。
62.如图2所示,基于分界值20和36得到了第一组数据和第二组数据,图中以粗实线示出了数据组的划分。具体地,对于最小分界值20,将host du中wc小于等于20的host du分为第一组,包括wc为0~20的host du。由于没有小于最小分界值20的gc du,因此第一组中只有host du,第一组中的host du的写入时间都早于gc spb 20的写入时间。
63.然后,对于分界值36,将未分组的host du中wc小于等于36的host du和未分组的gc spb中第二顺序信息小于36的gc du分为第二组,包括wc为21~36的host du和gc spb 20中的所有gc du,这些du的写入时间都早于gc spb 36的写入时间。
64.对于比分界值36更大的分界值,依照与上述类似的方式,得到其余数据组。
65.对于最大分界值,将wc大于最大分界值的host du和第二顺序信息等于最大分界值的gc du分为一组,这组数据的写入时间都不早于最大分界值对应得的gc spb的写入时间。
66.可以看出,在根据分界值对存储设备中的数据分组之后,得到了多个具有先后写入关系的数据组。按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息,可以避免元数据的重复读取,减少对ddr空间的占用,并且提高存储设备的信息恢复速度。
67.根据本公开的实施例,所述基于每个数据组中数据的元数据生成恢复信息,包括:针对每个数据组,按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息。其中,当第一类型数据的第一顺序信息与第二类型数据的第一顺序信息相同时,先基于第一类型数据的元数据生成恢复信息,再基于第二类型数据的元数据生成恢复信息。
68.例如,针对第一组数据,按照第一顺序信息wc从小到大的顺序,依次基于相应数据的元数据生成恢复信息,例如l2p表中的地址映射。例如,基于wc为0的host du的元数据,得到地址映射lba0

pba0,基于wc为1的host du的元数据,得到地址映射lba1

pba1,基于wc为2的host du的元数据,得到地址映射lba100

pba50
……
以此类推。当进行到wc为6的host du的元数据时,得到地址映射lba0

pba53,使用该地址映射更新(即,替换)之前得到
的地址映射lba0

pba0。当进行到wc为19的host du的元数据时,得到地址映射lba0

pba10,使用该地址映射更新之前得到的地址映射lba0

pba53。在第一组数据处理完之后,得到地址映射关系如下表所示,其中,发生过更新的地址映射是lba0的地址映射:然后,针对第二组数据,按照第一顺序信息wc从小到大的顺序,依次基于相应数据的元数据生成恢复信息。例如,基于wc为0的gc du的元数据,得到地址映射lba0

pba201,基于wc为1的gc du的元数据,得到地址映射lba1

pba200,基于wc为3的gc du的元数据,得到地址映射lba2

pba202
……
基于wc为21的host du的元数据,得到地址映射lba0

pba60
……
以此类推。在第二组数据处理完之后,得到地址映射关系如下表所示,其中,发生过更新的地址映射是lba0~lba3、lba5、lba6、lba14的地址映射:以上述方式,按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息,可以恢复整个l2p表。
69.或者,所述基于每个数据组中数据的元数据生成恢复信息,包括:针对每个数据组,基于所述数据的元数据生成恢复信息,其中,在当前生成的恢复信息与之前生成的恢复信息冲突时,根据恢复信息对应的数据的写入先后顺序,保留对应于后写入的数据的恢复信息。以此方式,在生成恢复信息时可以不考虑对应数据的先后顺序,而是在生成的恢复信息有冲突时,例如同一个lba对应于不同的pba时,根据恢复信息对应的数据的写入先后顺序判断保留哪个恢复信息。例如,当两个数据的wc不同时,wc数值大的数据是后写入的数据。当host du和gc du的wc相同时,gc du是后写入的数据。
70.根据本公开的实施例,在对数据进行分组之前,获取所述第二类型超级块中指定第二类型数据的元数据,所述第二类型超级块中指定第二类型数据的元数据用于确定所述第二类型超级块中第二类型数据的第二顺序信息;获取所述第一类型超级块中最先写入的第一类型数据的元数据,所述第一类型超级块中最先写入的第一类型数据的元数据用于确定所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息,所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息用于针对每个服务,对所述第一类型超级块排序,进而对所述第一类型写缓冲组排序。
71.如上所述,第二类型超级块gc spb中前8个gc du的元数据用于存储该gc spb中的gc du的第二顺序信息,因此,通过读取第二类型超级块gc spb中前8个gc du的元数据,可以确定该gc spb中的gc du的第二顺序信息,例如确定图2所示的gc spb 20中的gc du的第二顺序信息为20,gc spb 36的gc du的第二顺序信息为36。对该第二顺序信息排序,用于确定对数据分组的分界值。
72.获取第一类型超级块host spb中最先写入的第一类型数据host du的元数据,以确定该host spb对应的服务的流(例如图2所示的host stream 0和host stream 1)以及该host spb中最先写入的host du的第一顺序信息wc,例如图2所示,在host stream 0写入的host spb中,host spb 0中最先写入的host du的第一顺序信息wc为0,host spb 14中最先写入的host du的第一顺序信息wc为14,host spb 28中最先写入的host du的第一顺序信息wc为28;在host stream 1写入的host spb中,host spb 2中最先写入的host du的第一顺序信息wc为2,host spb 16中最先写入的host du的第一顺序信息wc为16,host spb 30中最先写入的host du的第一顺序信息wc为30。
73.由于每个服务(即,每个流)是写完一个host spb之后再写下一个host spb,因此,可以使用host spb中最先写入的host du的第一顺序信息对host spb按照写入的先后顺序排序。例如对于流host stream 0,host spb按照写入的先后顺序排序为host spb 0、host spb 14、host spb 28,对于流host stream 1,host spb按照写入的先后顺序排序为host spb 2、host spb 16、host spb 30。在每个host spb中,第一类型写缓冲组host wbg是按照写入的先后顺序排序的,每个host wbg中的host du是按照写入的先后顺序排序的,因此,在对host spb排序后,也相应地对第一类型写缓冲组host wbg和第一类型数据host du进行了排序。
74.另一方面,可以根据gc spb中的gc du的第一顺序信息wc对gc du排序。在对每个组中的host du和gc du按照写入的先后顺序排序之后,可以根据数据写入的先后顺序,依次基于数据的元数据生成恢复信息。
75.根据本公开的实施例,所述按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息包括,针对所述数据组:分别读取每个服务最先写入所述存储设备的第一类型写缓冲组的第一类型数据的元数据,其中,针对每个服务,所述第一类型写缓冲组按照写入所述存储设备的先后顺序排序;读取所述第二类型超级块中最先写入所述存储设备的第二类型写缓冲组中的第二类型数据的元数据,其中,所述第二类型写缓冲组按照写入所述存储设备的先后顺序排序;按照第一顺序信息从小到大的顺序,对读取的元数据进行处理,以基于所述元数据生成恢复信息,其中,在任一写缓冲组中的元数据处理完毕之后,读取并处理相应的下一个写缓冲组的元数据。
76.例如,对于每个数据组,在针对每个服务对host wbg排序之后,可以先读取每个服务的最先写入存储设备的host wbg中的host du的元数据。
77.例如,在图2中,针对第一组,可以分别读取host spb 0中最先写入存储设备的host wbg中的host du的元数据和host spb 2中最先写入存储设备的host wbg中的host du的元数据。然后,对于读取的元数据,按照第一顺序信息从小到大的顺序生成恢复信息。在任一wbg中的元数据处理完毕之后,读取并处理相应的下一个wbg的元数据。例如,在host spb 0中最先写入存储设备的host wbg中的host du的元数据处理完毕之后,读取host spb 0中下一个写入存储设备的host wbg中的host du的元数据。在host spb 2中最先写入存储设备的host wbg中的host du的元数据处理完毕之后,读取host spb 2中下一个写入存储设备的host wbg中的host du的元数据。然后,基于读取的元数据(包括新读取的元数据和先前读取且未处理完毕的元数据)按照第一顺序信息从小到大的顺序生成恢复信息,以此
类推。
78.针对第二组,可以分别读取host spb 14中最先写入存储设备的host wbg中的host du的元数据、host spb 16中最先写入存储设备的host wbg中的host du的元数据、gc spb 20中最先写入存储设备的gc wbg中的gc du的元数据。然后,对于读取的元数据,按照第一顺序信息从小到大的顺序生成恢复信息。在任一wbg中的元数据处理完毕之后,读取并处理相应的下一个wbg的元数据。例如,在host spb 14中最先写入存储设备的host wbg中的host du的元数据处理完毕之后,读取host spb 14中下一个写入存储设备的host wbg中的host du的元数据。在host spb 16中最先写入存储设备的host wbg中的host du的元数据处理完毕之后,读取host spb 16中下一个写入存储设备的host wbg中的host du的元数据。在gc spb 20中最先写入存储设备的gc wbg中的gc du的元数据处理完毕之后,读取gc spb 20中下一个写入存储设备的gc wbg中的gc du的元数据。然后,基于读取的元数据(包括新读取的元数据和先前读取且未处理完毕的元数据)按照第一顺序信息从小到大的顺序生成恢复信息。其中,当第一类型数据的第一顺序信息与第二类型数据的第一顺序信息相同时,先基于第一类型数据的元数据生成恢复信息,再基于第二类型数据的元数据生成恢复信息,以此类推。
79.通过以wbg为粒度读取元数据,可以减少信息恢复对ddr的使用量,从而在ddr容量有限的情况下实现信息恢复。
80.图3示出根据本公开的实施例的存储设备的信息恢复装置的结构框图。其中,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,所述电子设备例如可以是图1a所示的控制器。
81.如图3所示,所述存储设备的信息恢复装置300包括第一获取模块310、分组模块320、生成模块330。
82.第一获取模块310被配置为获取存储设备中存储的数据的顺序信息,所述顺序信息表示所述数据写入所述存储设备的顺序;分组模块320被配置为根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;生成模块330被配置为按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,其中,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息。
83.根据本公开的实施例,其中:所述数据包括第一类型数据和第二类型数据,所述第一类型数据包括从所述存储设备外部写入所述存储设备的数据,所述第二类型数据包括通过拷贝所述第一类型数据而写入所述存储设备的数据;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;所述恢复信息包括所述数据的逻辑地址到物理地址的映射关系。
84.根据本公开的实施例,其中:
所述存储设备中存储一个或多个第一类型超级块,所述第一类型超级块包括一个或多个第一类型写缓冲组,所述第一类型写缓冲组包括一个或多个第一类型数据;所述存储设备存储一个或多个第二类型超级块,所述第二类型超级块包括一个或多个第二类型写缓冲组,所述第二类型写缓冲组包括一个或多个第二类型数据;来自不同服务的数据存储在不同的超级块中。
85.根据本公开的实施例,其中:所述第一类型数据的顺序信息包括第一顺序信息,所述第一类型数据的第一顺序信息包括随所述第一类型数据写入所述存储设备而递增的序号;所述第二类型数据的顺序信息包括第一顺序信息和第二顺序信息,所述第二类型数据的第一顺序信息包括所述第二类型数据对应的第一类型数据的第一顺序信息,所述第二类型数据的第二顺序信息包括在写入所述第二类型数据所属的第二类型超级块中的第一个第二类型数据时,所述存储设备中最近一次写入的第一类型数据的第一顺序信息。
86.根据本公开的实施例,其中,所述根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:将所述第二类型数据的第二顺序信息作为分界值;根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组。
87.根据本公开的实施例,其中,所述根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组,包括:按照分界值从小到大的顺序,针对每个分界值,将尚未分组的第一类型数据中第一顺序信息小于等于所述分界值的第一类型数据和尚未分组的第二类型数据中第二顺序信息小于所述分界值的第二类型数据分为一组;将第一类型数据中顺序信息大于最大分界值的第一类型数据和第二类型数据中第二顺序信息等于最大分界值的第二类型数据分为一组。
88.根据本公开的实施例,其中,所述基于每个数据组中数据的元数据生成恢复信息,包括:针对每个数据组,按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息。
89.根据本公开的实施例,其中,所述按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息包括,针对所述数据组:分别读取每个服务最先写入所述存储设备的第一类型写缓冲组的第一类型数据的元数据,其中,针对每个服务,所述第一类型写缓冲组按照写入所述存储设备的先后顺序排序;读取所述第二类型超级块中最先写入所述存储设备的第二类型写缓冲组中的第二类型数据的元数据,其中,所述第二类型写缓冲组按照写入所述存储设备的先后顺序排序;按照第一顺序信息从小到大的顺序,对读取的元数据进行处理,以基于所述元数
据生成恢复信息,其中,在任一写缓冲组中的元数据处理完毕之后,读取并处理相应的下一个写缓冲组的元数据。
90.根据本公开的实施例,所述装置300还包括:第二获取模块340,被配置为获取所述第二类型超级块中指定第二类型数据的元数据,所述第二类型超级块中指定第二类型数据的元数据用于确定所述第二类型超级块中第二类型数据的第二顺序信息;第三获取模块350,被配置为获取所述第一类型超级块中最先写入的第一类型数据的元数据,所述第一类型超级块中最先写入的第一类型数据的元数据用于确定所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息,所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息用于针对每个服务,对所述第一类型超级块排序,进而对所述第一类型写缓冲组排序。
91.本公开还公开了一种电子设备,图4示出根据本公开的实施例的电子设备的结构框图。
92.如图4所示,所述电子设备包括存储器和处理器,其中,存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现根据本公开的实施例的方法。根据本公开的实施例,处理器可以实现为图1a所示的控制器,存储器可以实现为用于存储控制器运行的指令的存储器件,其可以集成在控制器中,或者可以是与控制器通信的单独的存储器件。
93.本公开实施例提供了一种存储设备的信息恢复方法,包括:获取存储设备中存储的数据的顺序信息,所述顺序信息表示所述数据写入所述存储设备的顺序;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;按照从最先写入所述存储设备的数据组到最后写入所述存储设备的数据组的顺序,依次基于每个数据组中数据的元数据生成恢复信息,其中,使用基于后写入所述存储设备的数据的元数据生成的恢复信息,更新基于先写入所述存储设备的数据的元数据生成的恢复信息。
94.根据本公开的实施例,其中:所述数据包括第一类型数据和第二类型数据,所述第一类型数据包括从所述存储设备外部写入所述存储设备的数据,所述第二类型数据包括通过拷贝所述第一类型数据而写入所述存储设备的数据;根据所述数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组;所述恢复信息包括所述数据的逻辑地址到物理地址的映射关系。
95.根据本公开的实施例,其中:所述存储设备中存储一个或多个第一类型超级块,所述第一类型超级块包括一个或多个第一类型写缓冲组,所述第一类型写缓冲组包括一个或多个第一类型数据;
所述存储设备存储一个或多个第二类型超级块,所述第二类型超级块包括一个或多个第二类型写缓冲组,所述第二类型写缓冲组包括一个或多个第二类型数据;来自不同服务的数据存储在不同的超级块中。
96.根据本公开的实施例,其中:所述第一类型数据的顺序信息包括第一顺序信息,所述第一类型数据的第一顺序信息包括随所述第一类型数据写入所述存储设备而递增的序号;所述第二类型数据的顺序信息包括第一顺序信息和第二顺序信息,所述第二类型数据的第一顺序信息包括所述第二类型数据对应的第一类型数据的第一顺序信息,所述第二类型数据的第二顺序信息包括在写入所述第二类型数据所属的第二类型超级块中的第一个第二类型数据时,所述存储设备中最近一次写入的第一类型数据的第一顺序信息。
97.根据本公开的实施例,其中,所述根据所述第二类型数据的顺序信息,将所述数据按照写入所述存储设备的先后顺序分为多个数据组,包括:将所述第二类型数据的第二顺序信息作为分界值;根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组。
98.根据本公开的实施例,其中,所述根据所述第一类型数据的第一顺序信息和所述第二类型数据的第一顺序信息,以及所述分界值,对所述数据进行分组,得到所述多个数据组,包括:按照分界值从小到大的顺序,针对每个分界值,将尚未分组的第一类型数据中第一顺序信息小于等于所述分界值的第一类型数据和尚未分组的第二类型数据中第二顺序信息小于所述分界值的第二类型数据分为一组;将第一类型数据中顺序信息大于最大分界值的第一类型数据和第二类型数据中第二顺序信息等于最大分界值的第二类型数据分为一组。
99.根据本公开的实施例,其中,所述基于每个数据组中数据的元数据生成恢复信息,包括:针对每个数据组,按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息。
100.根据本公开的实施例,其中,所述按照从所述数据组中第一顺序信息最小的数据到第一顺序信息最大的数据的顺序,基于所述数据的元数据生成恢复信息包括,针对所述数据组:分别读取每个服务最先写入所述存储设备的第一类型写缓冲组的第一类型数据的元数据,其中,针对每个服务,所述第一类型写缓冲组按照写入所述存储设备的先后顺序排序;读取所述第二类型超级块中最先写入所述存储设备的第二类型写缓冲组中的第二类型数据的元数据,其中,所述第二类型写缓冲组按照写入所述存储设备的先后顺序排序;按照第一顺序信息从小到大的顺序,对读取的元数据进行处理,以基于所述元数据生成恢复信息,其中,在任一写缓冲组中的元数据处理完毕之后,读取并处理相应的下一个写缓冲组的元数据。
101.根据本公开的实施例,所述方法还包括:获取所述第二类型超级块中指定第二类型数据的元数据,所述第二类型超级块中指定第二类型数据的元数据用于确定所述第二类型超级块中第二类型数据的第二顺序信息;获取所述第一类型超级块中最先写入的第一类型数据的元数据,所述第一类型超级块中最先写入的第一类型数据的元数据用于确定所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息,所述第一类型超级块对应的服务和所述第一类型超级块中最先写入的第一类型数据的第一顺序信息用于针对每个服务,对所述第一类型超级块排序,进而对所述第一类型写缓冲组排序。
102.根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。
103.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
104.描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
105.作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
106.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1