掌桥专利:专业的专利平台
掌桥专利
首页

基于改变频率的分层数据存储和垃圾回收系统

文献发布时间:2023-06-19 10:35:20


基于改变频率的分层数据存储和垃圾回收系统

技术领域

本公开通常涉及信息处理系统,并且更具体地涉及基于其修改频率将数据存储在信息处理系统中以便提供改进的垃圾回收操作。

背景技术

随着信息的价值和使用持续增加,个人和企业寻求处理和存储信息的其他方式。用户可以使用的一个选项是信息处理系统。信息处理系统通常为商业、个人或其他目的处理、编译、存储和/或传送信息或数据,从而允许用户利用信息的价值。由于不同用户或应用程序之间的技术和信息处理需求和要求各不相同,因此信息处理系统也可能因处理信息的种类,信息处理的方式,处理、存储或传送信息量、以及可以处理、存储或传送信息的处理速度和效率而异。信息处理系统的变化允许信息处理系统是通用的,或为特定用户或特定用途配置的,特定用途例如金融交易处理、航空公司预订、企业数据存储或全球通信。另外,信息处理系统可以包括可以被配置为处理、存储和传送信息的各种硬件和软件组件,并且可以包括一个或多个计算机系统、数据存储系统和网络系统。

信息处理系统(例如,服务器设备)通常包括存储设备,存储设备执行垃圾回收(garbage collection)操作以释放存储设备上的存储空间以存储数据。例如,固态硬盘(SSD)存储设备通过将数据写入SSD存储设备中的NAND闪存设备中包括的数据存储元件(有时称为“页”)来操作,那些数据存储元件被分组为“块”。而那些块的组可以进一步分组为“超块(superblock)”。SSD存储设备不能重写数据存储元件中的现有数据(例如,如在硬盘(HDD)执行的重写操作中所做的那样),而是必须在将新数据写入那些数据存储元件之前,从特定块中的所有数据存储元件中擦除旧数据。这样,当首次接收数据时,将其写入第一数据存储元件,并且该数据的逻辑块地址(Logical Block Address,LBA)与LBA/PAA表中的第一数据存储元件的物理分配地址(Physical Allocation Address,PAA)相关联。随后,当接收到对该数据的修改时,将修改的数据写入不同的第二数据存储元件,该数据的LBA与LBA/PAA表中的第二数据存储元件的PAA相关联,并且第一数据存储元件被标记为“无效”数据存储元件(与包括当前/更新数据的“有效”数据存储元件相对)。这样,对存储在数据存储元件中的数据的每次修改都会导致无效的数据存储元件,并且传统的存储设备被配置为执行垃圾回收操作,以便“恢复”那些无效的数据存储元件,以便随后可以将数据写入其中。然而,传统的存储设备垃圾回收操作存在几个问题。

例如,传统存储设备可以跟踪包括在超块中的“有效”/“无效”数据存储元件的数量。如上讨论的,数据存储元件的块可以被分组为超块,并且上面讨论的数据写入操作将导致包括不同数量的“有效”和“无效”数据存储元件的不同超块。当执行垃圾回收操作时(例如,当可用于在存储设备中写入数据的“空闲”数据存储元件的数量低于阈值水平时),存储设备可以识别具有最低数量的“有效”数据存储元件的超块,并可以选择该超块用于垃圾回收操作。然后,存储设备可以移动该超块中的任何“有效”数据存储元件中的数据,以释放不同超块中的数据存储元件,这允许该超块中的每个块使其“无效”数据存储元件被擦除,并且“释放”用于存储新数据(如拥有本公开的本领域技术人员将理解的,而数据可写入SSD存储设备中的各个数据存储元件,仅可以擦除SSD存储设备中的整个数据块)。

这样,执行存储设备的垃圾回收操作所需的时间将取决于具有最低数量的“有效”数据存储元件的所识别的超块中的“有效”数据存储元件的数量。然而,已经发现,存储设备中的超块中的“有效”数据存储元件的分布可以变化很大,并且在一些情况下可以倾斜,使得具有最低数量的“有效”数据存储元件的超块仍然包括一定数量的“有效”数据存储元件,该数量大到足以将相对显著的延迟引入到垃圾回收操作中。例如,对于与每字线2-3ms的数据传输速度相关联的垃圾回收操作,垃圾回收操作可以在10ms到数百毫秒之间变化,以便将“有效”数据存储元件中的所有数据移动到所识别的超块中,并且垃圾回收操作可以扩展到边缘情况的秒级。

因此,期望提供一种没有上面所讨论的问题的改进的存储设备垃圾回收系统。

发明内容

根据一个实施例,信息处理系统(IHS)包括处理系统;以及存储器系统,其联接到处理系统并且包括指令,所述指令在由处理系统执行时,使得处理系统提供数据存储和垃圾回收引擎,该数据存储和垃圾回收引擎被配置为:从主机引擎接收第一修改数据,其提供对存储在由多个存储子系统中的一个提供的第一数据存储元件中存储的第一当前数据的修改,其中,第一数据存储元件在第一超块中分组,第一超块在与第一数据修改频率范围相关联;确定第一当前数据的第一修改频率;基于第一当前数据的第一修改频率,将第一修改数据写入由多个存储子系统中的一个提供的第二数据存储元件,其中,第二数据存储元件在第二超块中分组,第二超块与第一超块不同,并且与第二数据修改频率范围相关联,第二数据修改频率范围不同于第一数据修改频率范围。

附图说明

图1是示出信息处理系统(IHS)的实施例的示意图。

图2是示出包括本公开的基于修改频率的分层数据存储垃圾回收系统的服务器设备的实施例的示意图。

图3是示出了在本公开的基于修改频率的分层数据存储垃圾回收系统中使用的、基于修改频率的分层超块的实施例的示意图。

图4是示出用于执行基于数据修改频率的分层数据存储的方法的实施例的流程图。

图5A是示出存储设备中的超块中的有效数据存储元件的传统分布的实施例的图形视图。

图5B是示出存储设备中的超块的传统垃圾回收等待时间的实施例的图形视图。

图6是示出在图3的基于修改频率的分层超块中存储数据的实施例的示意图。

图7A是示出利用本公开的基于修改频率的分层数据存储垃圾回收系统,有效数据存储元件在存储设备中的超块中的分布的实施例的图形视图。

图7B是示出利用本公开的基于修改频率的分层数据存储垃圾回收系统,存储设备中的超块的垃圾回收等待时间的实施例的图形视图。

图8是示出用于使用基于数据修改频率的分层数据存储来执行垃圾回收的方法的实施例的流程图。

具体实施例

出于本公开的目的,信息处理系统可以包括可用于运算、计算、确定、分类、处理、发送、接收、检索、发起、切换、存储、显示、通信、表明、检测、记录、复制、处理、或利用用于商业、科学、控制或其他目的任何形式的信息、情报或数据的任何工具或工具集合。例如,信息处理系统可以是个人计算机(例如,台式计算机或膝上型计算机)、平板计算机、移动设备(例如,个人数字助理(PDA)或智能电话)、服务器(例如,刀片式服务器或机箱式服务器)、网络存储设备、或任何其他合适的设备,并且可以在大小、形状、性能、功能和价格上变化。信息处理系统可以包括随机存取存储器(RAM)、一个或多个处理资源(例如,中央处理单元(CPU)或硬件或软件控制逻辑、ROM)、和/或其他类型的非易失性存储器。信息处理系统的附加组件可以包括一个或多个磁盘,用于与外部设备通信的一个或多个网络端口以及各种输入和输出(I/O)设备,例如键盘、鼠标、触摸屏和/或视频显示器。信息处理系统还可以包括可操作以在各种硬件组件之间发送通信的一个或多个总线。

在一个实施例中,图1的IHS 100包括处理器102,处理器102连接到总线104。总线104用作处理器102与IHS 100的其他组件之间的连接。输入设备106联接到处理器102,以向处理器102提供输入。输入设备的示例可包括键盘、触摸屏、指示设备(诸如鼠标、轨迹球和触控板之类)、和/或本领域中已知的各种其他输入设备。程序和数据存储在大容量存储设备108上,大容量存储设备108联接到处理器102。大容量存储设备的示例可以包括硬盘、光盘、磁光盘、固态存储设备、和/或本领域已知的各种其他大容量存储设备。IHS 100还包括显示器110,显示器110通过视频控制器112联接到处理器102。系统存储器114联接到处理器102,以向处理器提供快速存储,以便于处理器102执行计算机程序。系统存储器的示例可以包括随机存取存储器(RAM)设备,例如动态RAM(DRAM)、同步DRAM(SDRAM)、固态存储设备和/或本领域已知的各种其他存储设备。在一个实施例中,机箱116容纳IHS 100的一些或全部组件。应当理解,可以在上述组件和处理器102之间部署其他总线和中间电路,以便于组件和处理器102之间的互连。

现在参考图2,示出了服务器设备200的实施例,其可以利用本公开的基于修改频率的分层数据存储垃圾回收系统。例如,服务器设备200可以由上面参考图1讨论的IHS 100提供和/或可以包括IHS 100的一些或所有组件,并且在下面的示例中利用在其存储系统中的本公开的基于修改频率分层数据存储垃圾回收系统。然而,虽然作为服务器设备200示出和讨论,但是拥有本公开的本领域技术人员将认识到,下面讨论的服务器设备200的功能,特别是本公开的基于修改频率的分层数据存储垃圾回收系统的功能可以由其他设备提供,其他设备被配置为与下面讨论的服务器设备200中的存储系统类似地操作。在所示实施例中,服务器设备200包括服务器机箱202,服务器机箱202容纳服务器设备200的组件,下面仅示出其中的一些组件。

例如,服务器机箱202可以容纳主机处理系统(未示出,但其可以包括上面参考图1讨论的处理器102)和主机存储器系统(未示出,但其可以包括上面参考图1讨论的存储器114),其联接到主机处理系统,并且包括指令,当指令由主机处理系统执行时,使主机处理系统提供操作系统引擎204,操作系统引擎204被配置为执行下面讨论的操作系统引擎和/或服务器设备的功能。例如,操作系统引擎204可以操作以提供操作系统,该操作系统被配置为生成数据,并提供该数据以便存储在服务器设备200的存储系统中,接收数据,并提供该数据以便存储在服务器设备200的存储系统中,和/或提供用于以各种方式中的任何方式存储的数据,这对于拥有本公开的本领域技术人员而言是显而易见的。然而,虽然被描述为由操作系统引擎204提供,但是拥有本公开的本领域技术人员将认识到,操作系统引擎204可以由各种服务器/主机子系统和/或服务器/主机引擎替换,同时也同样保持在本公开的范围内。

服务器机箱202还可以容纳存储系统(其可以包括上面参考图1讨论的存储设备108),该存储系统联接到服务器/主机子系统和/或引擎。例如,在所示实施例中,存储系统由联接到操作系统引擎204的存储设备206提供(例如,经由存储设备206和处理系统之间的联接)。在下面的示例中,存储设备由固态硬盘(SSD)存储设备(诸如非易失性存储器快速(NVMe)SSD存储设备)提供,但是拥有本公开的本领域技术人员将认识到,其他存储技术可以从本公开的教导中受益,并且因此也将落入其范围内。在所示实施例中,存储设备206包括容纳存储设备206的组件的存储机箱207,其中仅一些在图2中示出。例如,在所示实施例中,存储机箱207容纳通信系统308,通信系统308可以由服务器/主机接口子系统和/或其他通信组件提供,其他通信组件被配置为联接到操作系统引擎204(和/或其他服务器/主机子系统和/或服务器/主机引擎)并与之接口,和/或执行其他主机接口功能,该功能对于拥有本公开的本领域技术人员显而易见。

存储器机箱207还可以容纳存储处理系统(未示出,但其可以包括上面参考图1讨论的处理器102)和存储存储设备系统(未示出,但其可以包括上面参考图1讨论的存储器114),其联接到存储处理系统,并且包括指令,当指令由存储处理系统执行时,使存储处理系统提供数据存储和垃圾回收引擎210,数据存储和垃圾回收引擎210被配置为执行下面讨论的数据存储和垃圾回收引擎和/或存储设备的功能。在具体示例中,数据存储和垃圾回收引擎210可以由SSD控制器(例如,NVMe SSD控制器)提供,该SSD控制器可以包括处理器、缓冲管理器、闪存控制器和/或各种各样的其他SSD控制器组件的任意组件,该任意组件对于拥有本公开的本领域技术人员而言是显而易见的。然而,类似地如上所述,但是拥有本公开的本领域技术人员将认识到,可以为其他存储技术提供其他数据存储和垃圾回收引擎,这同时也同样保持在本公开的范围内。

存储机箱207还可以容纳多个存储子系统212a、212b、并且直到212c。在下面的示例中,存储子系统212a-212c由NAND闪存设备提供(例如,在NVMe SSD存储设备中使用),但是拥有本公开的本领域技术人员将认识到,其他存储子系统技术将受益于本公开的教导,因此也将落入其范围内。例如,下面将存储设备206描述为NVMe SSD存储设备,其可以包括由16个NAND闪存设备提供的存储子系统212a-212c(尽管更多或更少的NAND闪存设备也将落入本公开的范围内)。此外,尽管图2中仅示出了单个存储设备206,但是拥有本公开的本领域技术人员将认识到,服务器设备可以(并且通常将)包括更多存储设备,以及那些存储设备中的任意设备可以与下面讨论的存储设备206类似地操作。此外,虽然已经示出了具有特定存储设备206的特定服务器设备200,但是拥有本公开的本领域技术人员将认识到,服务器设备(或根据本公开的教导,以类似于下面针对服务器设备200所描述的类似方式操作其他设备),和存储设备(或根据本公开的教导,以类似于下面针对存储设备206所描述的类似方式操作其他设备)可以包括用于提供传统服务器设备和/或存储设备功能、以及下面讨论的功能的各种组件和/或组件配置,这同时也在本公开的范围内。

现在参考图3,图3示出了在本公开的基于修改频率的分层数据存储垃圾回收系统中使用的、基于修改频率的分层超块的实施例的示意图。如上所述,超块可以用于垃圾回收操作。在一个示例中,NVMe SSD存储设备(例如,存储设备206)可以包括16个NAND闪存设备(例如,存储子系统212a-212c),其中那些NAND闪存设备中的每一个与8个逻辑单元号(Logical Unit Numbers,LUN)相关联。此外,与NAND闪存设备相关联的每个LUN可以包括1000-2000个块,并且每个块可以包括大约10,000个数据存储元件,数据存储元件提供用于在NAND闪存设备上存储数据的最小尺寸的物理数据存储单元。在一些实施例中,超块可以由与NVMe SSD存储设备中的NAND闪存设备相关联的每个LUN的一个块组成,在上面的示例中,其将针对每个超块提供(16个NAND闪存设备*8个LUN/NAND闪存设备*1块/LUN=)128个块。然而,由存储子系统212a、212b以及直到212c提供的数据存储元件可以以各种方式被分组为不同的超块,这对于拥有本公开的本领域技术人员而言是显而易见的。此外,虽然上面描述了具体示例,但是拥有本公开的本领域技术人员将认识到,可以以不同方式限定超块,以包括不同数量的块、数据存储元件、和/或其他特性,这同时也保持在本公开的范围内。

图3示出了多个超块302、304、306直至308的示例,其中超块302被示为包括多个数据存储元件302a-302p,超块304被示为包括多个数据存储元件304a-304p中,超块306被示为包括多个数据存储元件306a-306p,以及超块308被示为包括多个数据存储元件308a-308p。如在上面提供的具体示例中所讨论的,超块302、304、306直至308可以由来自与存储设备206的存储子系统212a-212c(例如,NAND闪存设备)相关联的每个LUN的块组成,因此,拥有本公开的本领域技术人员将认识到,超块302、304、306直至308将包括比数据存储元件302a-302p、304a-304p、306a-306p和308a-308p更多的数据存储元件(分别如图3所示)。

如下面进一步详细讨论的,本公开的基于修改频率的分层数据存储垃圾回收系统可以在基于修改频率的层中提供超块302、304、306直至308,每个层可以被配置为根据其修改频率存储数据。在下面的示例中,超块302提供最高修改频率范围超块,超块304提供相对高-中间修改频率范围超块,超块306提供相对低-中间修改频率范围超块,以及超块302提供最低修改频率范围超块。然而,虽然描述了基于修改频率的分层超块的一些具体示例,但是拥有本公开的本领域技术人员将认识到,可以在本公开中使用不同数量的超块、不同层级类别和/或基于修改频率的分层超块的其他特征,这同时也落入其范围内。这样,在一些实施例中,存储设备206中的数据存储和垃圾回收引擎210可以被编程、可以访问和/或以其他方式提供有关基于修改频率的分层超块的任何信息,并且在许多示例中,可以操作以生成那些超块、维护那些超块,和/或执行关于那些超块的各种其他功能中的任何功能,这同时保持在本公开的范围内。

现在参考图4,其示出了方法400的实施例,该方法用于执行基于数据修改频率的分层数据存储。如下所述,本公开的系统和方法提供了在数据存储元件中存储修改数据,该修改数据基于该数据的修改频率被分组在超块的基于数据修改频率的层中,如关于下面的方法500进一步详细讨论的,其在垃圾回收操作期间提供了优点。例如,存储设备可以操作以跟踪存储的n个数据存储元件的数据的修改频率,所述数据存储元件在超块中分组,并且当该存储设备接收任何“当前”数据的“修改”数据(其当前存储在数据存储元件中)时,它可以确定对该“当前”数据的修改频率。基于对“当前”数据的修改频率,存储设备可以将“修改”数据写入数据存储元件,该数据存储元件被分组在与包括存储“当前”的数据存储元件的超块不同的超块中。

例如,不同的超块可以与不同的修改频率范围相关联,并且如果第一数据的修改频率高于其第一数据存储元件在其中被分组的第一超块的第一修改频率范围,则可以将该第一数据的修改的第一数据写入第二数据存储元件,该第二数据存储元件被分组在与高于第一修改频率范围的第二修改频率范围相关联的第二超块中。类似地,如果第一数据的修改频率低于其第一数据存储元件在其中被分组的第一超块的第一修改频率范围,则可以将针对该第一数据的修改的第一数据写入被分组在与第二修改频率范围相关联的第二超块中,该第二修改频率范围低于第一修改频率范围。这样,数据被存储在数据存储元件中,这些数据存储元件被分组在具有不同修改频率范围的超块中,从而产生基于修改频率的超块层,其由存储相对频繁修改的数据的分组数据存储元件组成,并且基于修改频率的超块的层由分组数据存储元件组成,这些存储元件存储相对不频繁修改的数据。如下所述,在这种基于频率修改的超块层中的存储数据提供了有效数据存储元件在超块中的分布,其中最少数量的有效数据存储元件的变化不像传统垃圾回收系统那样大,因此减少了在边缘情况下执行垃圾回收操作所需的时间。

首先参照图5A和5B,其提供了示出存储设备中的超块中的有效数据存储元件的传统分布500的实施例的图形视图,以及用于存储设备中的超块的传统垃圾回收等待时间502。如上所述,传统数据存储和垃圾回收操作提供了在超块中分组的数据存储元件中的数据的存储和修改,而不考虑该数据的修改频率。例如,可以将数据写入第一数据存储元件,该第一数据存储元件被分组在第一超块中,使得其成为“当前”数据,并且当该“当前”数据将被“修改”数据修改时,“修改”数据通常被写入第一超块中的第二数据存储元件,使得它成为“当前”数据,而第一数据存储元件中的先前“当前”数据成为“旧”数据,并且第一数据存储元件被标记为“无效”数据存储元件(与存储新修改的/“当前”数据的“有效”的第二数据存储元件相比)。如拥有本公开的本领域技术人员将理解的,在每次“当前”数据被修改时,可以重复该过程,并且可以对存储在存储设备中的各种不同数据执行该过程,并且经由LBA/PAA表跟踪“当前”数据的位置,其将“当前”数据的LBA与用于存储数据的数据存储元件的PAA联系起来。

这样,可以以各种传统方式在不同超块中分组的数据存储元件中存储和修改数据,这些传统方式倾向于产生图5A所示的超块中的“有效”数据存储元件的传统分布500。如拥有本公开的本领域技术人员所理解的,超块中的“有效”数据存储元件的传统分布500在X轴上绘制每个超块的有效数据存储元件的分布与在Y轴上的超块的数量的关系,并且示出了超块中的有效数据存储元件的数量可以基本上遵循钟形曲线。如上所述,存储设备可以跟踪在每个超块中分组的有效数据存储元件的数量,这允许当执行垃圾回收操作时,选择具有最低数量的有效数据存储元件的超块(即,相对于存储设备中使用的其他超块)。这样,参考超块中的“有效”数据存储元件的传统分布500,选择用于垃圾回收操作的超块通常将包括在点500a处的钟形曲线的下部中识别的有效数据存储元件的数量。然而,如上所述,在边缘情况下,具有最低数量的有效数据存储元件(即,相对于存储设备中使用的其他超块)的超块中的有效数据存储元件的数量可能偏斜得更高(例如,如在点500b处的钟形曲线的较高部分中所识别的那样),这可以大大增加执行垃圾回收操作所需的时间(其包括将那些有效数据存储元件中的每一个中的数据写入不同超块中的数据存储元件)。

例如,图5B中所示的用于超块的传统垃圾回收等待时间502示出了在99%的垃圾回收情况下,具有最低数量的有效数据存储元件的超块中的有效数据存储元件的数量将如何处于导致与垃圾回收操作相关联的等待时间的水平(其量级为微秒(μs))。此外,图5B中所示的用于超块的传统垃圾回收等待时间502示出了在99%-99.99%的垃圾回收情况下,具有最低数量的有效数据存储元件的超块中的有效数据存储元件的数量将处于导致与垃圾回收操作相关联的等待时间的水平上,该水平在微秒(μs)到毫秒(ms)之间的量级上。最后,图5B中所示的用于超块的传统垃圾回收等待时间502示出了在99.99%-99.999%的垃圾回收情况下,具有最低数量的有效数据存储元件的超块中的有效数据存储元件的数量将处于导致与垃圾回收操作相关联的等待时间的水平上(该水平在毫秒(ms)到秒(s)之间的量级)。这样,边缘情况(例如,0.001%的垃圾回收情况)可能导致垃圾回收操作占用几秒的水平。如下所述,使用本公开中描述的基于修改频率的超块层可以将这些边缘情况减少回到毫秒(ms)或更低的量级。

方法400开始于框402,其中存储设备跟踪由一个或多个存储子系统提供并且在一个或多个超块中分组的一个或多个数据存储元件中的数据的修改频率。在一个实施例中,在框402处,该数据存储和垃圾回收引擎210可以操作,以跟踪存储在由存储子系统212a-212c提供并且在超块中分组的数据存储元件中存储的数据的修改频率(例如,超块302中的数据存储元件302a-p,超块304中的数据存储元件304a-p,超块306中的数据存储元件306a-p,以及直至超块308中的数据存储元件308a-p)。例如,在一些实施例中,操作系统引擎204可以生成“新”数据(例如,不是已经存储在存储设备206上的数据的修改的数据),并且将该“新”数据发送到存储设备206。然后,数据存储和垃圾回收引擎210可以经由通信子系统208接收该“新”数据,并提供该“新”数据以存储在数据存储元件中,该数据存储元件由存储子系统212a-212c中的一个提供并且在超块302、304、306直到308中的一个中分组。

在一些实施例中,可以以常规方式执行将“新”数据存储在数据存储元件中,该数据存储元件由存储子系统212a-212c中的一个提供并且在超块302、304、306直至308中的一个中分组。例如,当数据存储和垃圾回收引擎210接收“新”数据(例如,与数据存储和垃圾回收引擎210维护的LBA和LBA/PAA表无关)时,它可以操作以在任何一个数据存储元件提供该数据,该数据存储元件根据传统技术由存储子系统212a-212c中的一个提供,并且在超块302、304、306直至308中的一个中分组。然而,在其他实施例中,可以基于该数据的已知修改频率,该数据的估计修改频率,该数据的预计修改频率,和/或关于该数据的修改频率的其他假设,来执行将“新”数据存储在数据存储元件中,该数据存储元件由存储子系统212a-212c中的一个提供,并且在超块302、304、306直至308中的一个中分组。

例如,操作系统引擎204(或在操作系统上运行的应用程序)可以向数据存储和垃圾回收引擎210提供“新”数据(例如,与由数据存储和垃圾回收引擎210维护的表LBA和LBA/PAA无关的数据)以及对该数据的已知或预期的修改频率,这可以允许数据存储和垃圾回收引擎210在由任何数据存储元件中提供该数据,该数据存储元件根据已知或预期的修改频率(例如,类似于下面针对“修改”数据所讨论的)由存储子系统212a-212c中的一个提供,并且在超块302、304、306直至308中的一个中分组。在其他示例中,数据存储和垃圾回收引擎210可以被配置为分析“新”数据(例如,与数据存储和垃圾回收引擎210维护的LBA和LBA/PAA表无关),以确定该数据的已知或预期修改频率(例如,基于数据类型,基于发送该数据的操作系统或应用程序等),这可允许数据存储和垃圾回收引擎210在任何数据存储元件中提供的数据,该数据存储元件根据该修改频率(例如,类似于如下面针对“修改”数据所讨论的)由存储子系统212a-212c中的一个提供,并且在超块302、304、306直至308中的一个中分组。然而,虽然已经描述了基于已知的、估计的、预计的和/或假定的修改频率存储“新”数据的一些具体示例,但是拥有本公开的本领域技术人员将认识到,多种用于确定该数据将经历的修改频率以及基于该修改频率存储该数据的技术也将落入本公开的范围内。

这样,在一些实施例中并且响应于接收“新”数据(并且继续上面提供的具体示例),数据存储和垃圾回收引擎210可以确定“新”数据与相对高的修改频率关联,并且作为响应,将“新”数据存储在超块302中的数据存储元件302a-p的一个中;可以确定“新”数据与相对高-中间的修改频率相关联,并且作为响应,将该“新”数据存储在超块304中的数据存储元件304a-p中的一个中;可以确定“新”数据与相对较低-中间的修改频率相关联,并且作为响应,将该“新”数据存储在超块306中的数据存储元件306a-p的一个中;或者,可以确定“新”数据与相对较低的修改频率相关联,并且作为响应,将“新”数据存储在超块308中的数据存储元件308a-p的一个中。在下面的示例中,一旦“新”数据存储在由存储子系统提供并且在超块中分组的数据存储元件中,它可以被认为是“当前”数据。此外,数据存储和垃圾回收引擎210可以维护LBA/PAA表,该LBA/PAA表将各个LBA(与存储在存储子系统212a-212c上的相应数据相关联)映射到PAA,PAA识别其中当前存储数据的数据存储元件。此外,本公开的数据存储和垃圾回收系统还可以为与LBA相关联的任何数据提供修改频率跟踪。下面提供了存储“新”数据之后的这样的第一个LBA/PAA表的示例:

如拥有本公开的本领域技术人员将理解的,第一LBA/PAA表示出了如何将与“X

这样,在框402处并且在存储任何数量的“新”数据之后(例如,随机地,或者基于针对如上所述的“新”数据确定的修改频率),使得其成为“当前”数据,数据存储和垃圾回收引擎210可以操作,以跟踪该“当前”数据的修改频率。例如,在一些实施例中,操作系统引擎204可以生成“修改”数据(例如,为已经存储在存储设备206上的修改数据的数据),并将该“修改”数据发送到存储设备206。然后,数据存储和垃圾回收引擎210可以经由通信子系统208接收该“修改”数据,并为数据存储元件中的存储设备提供“修改”数据,其由存储子系统212a-212c中的一个提供并且在超块302、304、306直至308中的一个中分组。即如下所述,跟踪存储在由存储子系统212a-212c提供的数据存储元件中的数据的修改频率允许基于该修改频率将数据移动到与不同超块相关联的数据存储元件中,但是拥有本公开的本领域技术人员将理解的,必须进行对该数据的一个或多个修改,以确定具有某种置信水平的修改频率,该修正频率证明数据移动到在不同超块中分组的数据存储元件。

这样,在一些实施例中,数据存储和垃圾回收引擎210可以接收“修改”数据,将“修改”数据写入超块中的数据存储元件(例如,包括数据存储元件的相同超块,该数据存储元件存储“修改”数据正在修改的“当前”数据,尽管写入不同的超块也将落入本公开的范围内),使得“当前数据”成为“旧”数据并且“修改”数据成为“当前”数据,将存储“旧”数据的数据存储元件标记为“无效”数据存储元件,并更新“当前”数据的修改频率跟踪。如拥有本公开的本领域技术人员将理解的,针对修改任何数据可以执行上面讨论的数据修改操作,并且可以执行任何次数。下面提供了几个数据修改操作后的第二LBA/PAA表的示例:

如拥有本公开的本领域技术人员将理解的,第二LBA/PAA表示出了如何将与“X

然后,方法400进行到框404,其中存储设备接收第一修改数据,该第一修改数据提供对存储在第一存储元件中的第一当前数据的修改,该第一存储元件在第一超块中分组。在一个实施例中,在框404并且类似于如上所述,操作系统引擎204可以生成“修改”数据(例如,数据是已经存储在存储设备206上的数据的修改),并且将该“修改”数据发送到存储设备206。然后,数据存储和垃圾回收引擎210可以经由通信子系统208接收该“修改”数据。在一些实施例中,数据存储和垃圾回收引擎210可以通过以下方式来识别“修改”数据:通过确定“修改”数据识别LBA,LBA包含在上面讨论的LBA/PAA表中(并且因此提供对当前存储在存储子系统212a-212c中并由该LBA识别的“当前”数据的修改)。但是,用于识别“修改”数据的其他技术也将落入本公开的范围内。

然后,方法400进行到框406,其中存储设备确定第一当前数据的修改频率。在一个实施例中,在框406处,数据存储和垃圾回收引擎210可以操作,以确定将由“修改”数据待修改的“当前”数据的修改频率,所述“修改”数据在框404处接收。例如,数据存储和垃圾回收引擎210可以识别将由在框404处接收的“修改”数据待修改的“当前”数据(例如,经由由“修改”数据识别的LBA,或使用其他如上所述的技术),然后识别对“当前”数据执行的随时间的一次或多次修改的次数,以便确定该“当前”数据的修改频率。在一些实施例中,可以随时间跟踪存储在存储子系统212a-212c上的对“当前”数据的修改的数量,以便允许确定对该当前数据的修改频率。例如,下面的数据修改频率表示出了如何随时间跟踪数据修改的一个示例:

如拥有本公开的本领域技术人员将理解的,上述数据修改频率表示出了如何在多个时间段(例如,在上述示例中为6个时间段,其还可以是六小时内的六个1小时时间段,或者对于拥有本公开的本领域技术人员而言显而易见的任何其他时间段)内跟踪对与LBA相关联的数据的修改。这样,在框406,数据存储和垃圾回收引擎210可以使用数据修改频率表来确定将由在框404处接收的“修改”数据修改的“当前”数据的修改频率。

在一些示例中,数据存储和垃圾回收引擎210可以在对进行修改频率之前需要一些最小数量的数据点(例如,在上面的数据修改频率表中的六个时间段中的至少三个时间段中的修改条目),以将“修改”数据写入数据存储元件,该数据存储元件在与存储正被修改的“当前”数据的数据存储元件不同的超块中分组。然而,如拥有本公开的本领域技术人员将认识到,可以快速地进行修改频率(例如,“当前”数据在其首次写入存储设备206之后的前5分钟内被修改100次),这同时仍然在本公开的范围内。此外,如拥有本公开的本领域技术人员将理解的,数据存储和垃圾回收引擎210可被配置为根据针对在框404处接收的“修改”数据来修改的“当前”数据确定的修改频率而进行不同操作。例如,如下所述,修改的频率可以落在与第二超块相关联的修改频率范围内,并且因此尽管在许多情况下可以证明数据从在第一超块中分组的数据存储元件到在第二超块中分组的数据存储元件移动是合理的,但是在下面未详细讨论的一些情况下,“当前”数据的修改频率可落在与超块相关联的修改频率范围内,其包括当前存储“当前”数据的数据存储元件,因此修改“当前”数据的“修改”数据可以写入在同一超块中分组的数据存储元件。

然后,方法400进行到框408,其中存储设备基于第一当前数据的修改频率,将第一修改数据写入第二数据存储元件,该第二数据存储元件在第二超块中分组。在一个实施例中,在框408,数据存储和垃圾回收引擎210可以操作,以将“修改”数据写入数据存储元件,该数据存储元件基于在框406确定的修改频率在超块中分组。例如,“当前”数据可以存储在数据存储元件306a-p中,该数据存储元件306a-p在与低-中间修改频率范围相关联的超块306中分组,并且在框406,数据存储和垃圾回收引擎210可以确定该“当前”数据的修改频率落在与超块302相关联的最高修改频率范围内。这样,在框408,数据存储和垃圾回收引擎210可以将“修改”数据写入到超块302的该数据存储元件中,使得“当前”数据成为“旧”数据并且“修改”数据成为“当前”数据,将存储“旧”数据的数据存储元件标记为“无效”数据存储元件,并更新跟踪“当前”数据的修改频率。

在另一示例中,“当前”数据可以存储在数据存储元件304a-p中,该数据存储元件304a-p在与高-中间修改频率范围相关联的超块304中分组,并且在框406处,数据存储和垃圾回收引擎210可以确定该“当前”数据的修改频率落在与超块308相关联的最低修改频率范围内。这样,在框408,数据存储和垃圾回收引擎210可以将“修改”数据写入超块308中的数据存储元件,使得“当前”数据成为“旧”数据以及“修改”数据成为“当前”数据,将存储“旧”数据的数据存储元件标记为“无效”数据存储元件,并更新跟踪“当前”数据的修改频率。这样,如拥有本公开的本领域技术人员将认识到,可以基于“修改”数据正在修改的“当前”数据的修改频率,将任何“修改”数据写入与修改频率范围分层超块分组的特定数据存储元件,这将导致高修改频率范围的一个或多个超块存储具有高修改频率的数据,中间修改频率范围的一个或多个超块存储具有中间修改频率的数据,以及低修改频率范围的一个或多个超块存储具有修改频率的数据。

然后,方法400可以进行到可选框410,其中存储设备识别第二当前数据,该第二当前数据在第三超块中分组并且具有低于第三超块的修改频率范围的修改频率。在一个实施例中,在可选框410,数据存储和垃圾回收引擎210可以被配置为周期性地或连续地监控存储在在超块中分组的数据存储元件中的数据的修改频率,以便确定修改频率是否低于该超块的修改频率范围。如拥有本公开的本领域技术人员将理解的,本方法的框404-408提供了在对该数据进行修改时,基于该数据的修改频率,将数据移动到存储器频率范围分层超块,因此不经常(或根本不)修改的数据可以保留在数据存储元件中,该数据存储元件在与修改频率范围相关联的超块中分组,该修改频率范围对该数据来说太高。

这样,在可选框410处,数据存储和垃圾回收引擎210可以被配置为识别与LBA相关联的任何“当前”数据的修改频率(例如,如使用上面讨论的LBA/PAA表和数据修改频率表跟踪的那样),将修改频率与包括存储该“当前”数据的数据存储元件的超块相关联的修改频率范围进行比较,并确定该“当前”数据的修改频率是否低于包括存储该“当前”数据的数据存储元件的超块的修改频率范围。然而,虽然已经描述了具体技术,但是拥有本公开的本领域技术人员将认识到,用于确定数据修改频率证明将该数据移动到在不同超块中分组的不同数据存储元件为合理的其他技术也将保持在本公开的范围内。

然后,方法400可以进行到可选框412,其中存储设备将第二当前数据写入具有比第三超块更低的修改频率范围的第四超块。在一个实施例中,在可选框412处并且响应于确定“当前”数据的修改频率低于包括存储该“当前”数据的数据存储元件的超块的修改频率范围,数据存储和垃圾回收引擎210可以将“当前”数据写入不同超块中的数据存储元件。例如,参考图3,数据存储和垃圾回收引擎210可以确定存储于在超块306中分组的数据存储元件中的“当前”数据包括低于超块306的低-中间修改频率的修改频率范围,并且作为响应,可以将“当前”数据写入超块308中的数据存储元件,使得在超块306中分组的数据存储元件中的“当前”数据成为“旧”数据,在超块308中分组的数据存储元件中的“当前”数据成为“当前”数据,并将存储“旧”数据的数据存储元件标记为“无效”数据存储元件。

然后,方法400可以返回到框402以重复方法400。这样,数据存储和垃圾回收引擎210可以执行方法400任何次数,以使数据在分组到超块302、304、306直至308中的数据存储元件之间移动,使得高修改频率范围的一个或多个超块存储具有高修改频率的数据,中间修改频率范围的一个或多个超块存储具有中间修改频率的数据,以及低修改频率范围的一个或多个超块存储具有低修改频率的数据。例如,图6示出了在方法400的任意次数迭代之后的、基于修改频率的分层超块300,并且示出了“有效”数据存储元件,其存储与“无效”数据存储元件不同的“当前”数据,“无效”数据存储元件经由“无效”数据存储元件的阴影(shading)存储“旧”数据。

如在图6中所示的示例中可以看到,在方法400的若干次迭代之后,与最高修改频率范围相关联的超块302包括存储“旧”数据的“无效”数据存储元件302a-302c、302e-302j、302l-302o和302p,以及存储“当前”数据的“有效”数据存储元件302d和302k;与高-中间修改频率范围相关联的超块304包括存储“旧”数据的“无效”数据存储元件304a,304d-304g,304i,304l-304o和304p,以及存储“当前”数据的“有效”数据存储元件304b,304c,304h,304j和304k;与低-中间修改频率范围相关联的超块306包括存储“旧”数据的“无效”数据存储元件306d,306e,306g,306h,306m,306n和306p,以及存储“当前”数据的“有效”数据存储元件306a-306c,306f,306i-306l和306o;以及与最低修改频率范围相关联的超块308包括存储“旧”数据的“无效”数据存储元件308d,308i和308o,以及存储“当前”数据的“有效”数据存储元件308a-308c,308e-308h,308j-308n,和308p。这样,与最高修改频率范围相关联的超块302将被提供有超块302、304、306直至308的最少“有效”数据存储元件。

首先参考图7A和7B,其根据本公开的教导,示出了有效数据存储元件在存储设备中的超块中的分布700的实施例的图形视图,以及用于根据本公开的教导提供的存储设备中的超块的垃圾回收等待时间710。如拥有本公开的本领域技术人员将理解的,在修改频率范围分层超块中分组的数据存储元件中存储和修改的数据将产生在图7A所示的超块中的“有效”数据存储元件的分布700。类似地,如上所述,超块中的“有效”数据存储元件的分布700描绘了每个超块的有效数据存储元件在X轴上的分布与超块在Y轴上的数量,并且示出了每个超块中的有效数据存储元件如何基本上遵循与不同修改频率范围层相关联的每个超块偏移的钟形曲线,其中与最高修改频率范围相关联的超块的分布702,与高-中间修改频率范围相关联的超块的分布704,与低-中间修改频率范围相关联的超块的分布706,以及与最低修改频率范围相关联的超块的分布708。如拥有本公开的本领域技术人员将理解的,具有最少“有效”数据存储元件的超块将倾向是与最高修改频率范围相关联的超块(因为其数据经常被修改)。并且,与最高修改频率范围相关联的超块的分布702示出了该超块中的“有效”数据存储元件的数量将如何在相对小的范围内变化。

如下所述,存储设备可以在执行垃圾回收操作时,选择与最高修改频率范围相关联的超块,从而具有最低数量的有效数据存储元件(即,相对于存储设备中使用的其他超块)。这样,参考具有将被选择用于垃圾回收操作的最高修改频率范围的超块中的“有效”数据存储元件的分布702,该超块将通常包括在钟形曲线的点702a处的较低部分中识别的一定数量的有效数据存储元件。此外,类似于上面所讨论的,在边缘情况下,该超块中的有效数据存储元件的数量可以偏斜得更高(例如,如在钟形曲线的点702b处的较高部分中所识别的),这可以增加执行垃圾回收操作所需的时间(包括将那些有效数据存储元件中的每一个中的数据写入不同超块中的数据存储元件)。

然而,根据本公开的教导提供并且在图7B中示出的用于超块的垃圾回收等待时间710示出了在99%的垃圾回收情况下,具有最高修改频率范围的超块中的有效数据存储元件的数量如何处于导致与垃圾回收操作相关联的等待时间的水平,该等待时间为微秒(μs)的量级。此外,根据本公开的教导提供并且在图7B中示出的用于超块的垃圾回收等待时间710示出了在99%-99.99%的垃圾回收情况下,具有最高修改频率范围的超块中的有效数据存储元件的数量如何处于导致与垃圾回收操作相关联的等待时间的水平,该等待时间为微秒(μs)到毫秒(ms)之间的量级。最后,根据本公开的教导提供并且在图7B中示出的用于超块的传统垃圾回收等待时间710示出了在99%-99.999%的垃圾回收情况下,具有最高修改频率范围的超块中的有效数据存储元件的数量如何处于导致与垃圾回收操作相关联的等待时间的水平,该等待时间基本上不超过毫秒(ms)的量级。这样,边缘情况(例如,0.001%的垃圾回收情况)将导致垃圾回收操作(采用毫秒级),而不是如传统垃圾回收系统中发生的秒级。

现在参考图5,其示出了用于使用基于数据修改频率的分层数据存储来执行垃圾回收的方法500的实施例。如下所述,本公开的系统和方法使用修改频率分层超块来提供执行垃圾回收操作,所述修改频率分层超块减少了有效数据存储元件的数量,有效数据存储元件可以包括在执行垃圾回收操作时的超块中,从而减少或消除垃圾回收操作等待时间超过所需水平的边缘情况的数量。例如,存储设备可以确定应该执行垃圾回收操作,并且作为响应,可以识别具有最低数量的有效数据存储元件的超块(例如,与最高修改频率范围相关联的修改频率分层超块)。然后,存储设备可以将在所识别的超块中分组的有效数据存储元件中的数据写入被分组为一个或多个不同超块的数据存储元件,然后可以擦除在所识别的超块中分组的数据存储元件。如上所述,数据存储在具有最高修改频率范围的超块中分组的数据存储元件中,这允许即使在边缘情况下,也要在无过多延迟时间的情况下执行对该超块进行垃圾回收操作(并且特别是将在该超块中分组的有效数据存储元件写入其他超块中分组的数据存储元件),因为相对于传统的垃圾回收系统,在该超块中分组的可能有效数据存储元件的数量减少。

方法500开始于框502,其中存储设备确定应该执行垃圾回收操作。在一个实施例中,在框502处,数据存储和垃圾回收引擎210可以确定应该执行垃圾回收操作。例如,数据存储和垃圾回收引擎210可以监控“自由”数据存储元件的数量(例如,存储子系统212a-212c中的数据存储元件,而不向其写入任何数据),并且响应于确定“自由”数据存储元件的数量低于特定阈值,可以确定应该开始垃圾回收操作(例如,以释放存储子系统212a-212c中的更多数据存储元件)。然而,尽管已经描述了用于确定应该开始垃圾回收操作的特定技术,但是拥有本公开的本领域技术人员将认识到,用于确定垃圾回收操作应该开始的各种技术(例如,在预定的时间表上,响应于用户的指令等)也将落入本公开的范围内。

然后,方法500进行到框504,其中存储设备识别具有最低数量的有效数据存储元件的超块。在一个实施例中,在框504处,数据存储和垃圾回收引擎210可以识别与最高修改频率范围相关联的超块302,如上所述,其被配置为向超块302提供最低数量的有效数据存储元件(即,因为数据存储元件302a-302p中提供的数据被频繁修改,以致大多数数据存储元件将是“无效”数据存储元件)。然而,尽管数据存储和垃圾回收引擎210被讨论为选择与最高修改频率范围相关联的超块302,以识别具有最低数量的“有效”数据存储元件的超块,在其他实施例中,数据存储和垃圾回收引擎210可以跟踪超块302、304、306直至308中的“有效”和“无效”的数据存储元件的实际数量,并且在框504处,可以确定那些超块中的哪一个超块包括最低数量的“有效”数据存储元件(例如,在除了超块302以外的超块(例如,超块304)当前具有最低数量的“有效”数据存储元件的情况下)。

然后,方法500进行到框506,其中存储设备将在所识别的超块中分组的有效数据存储元件中的数据写入在至少一个不同的超块中分组的数据存储元件中。在一个实施例中,超块302可以被识别为具有最低数量的“有效”数据存储元件,并且在框506处,数据存储和垃圾回收引擎210可以操作,以将超块302中的“有效”数据存储元件中的数据写入到在其他超块中分组的数据存储元件(例如,超块304、306直至308中的任何一个)。例如,参考图6,数据存储和垃圾回收引擎210可以操作,以将超块302中的数据存储元件302d中的“当前”数据写入超块304、306直至308中的一个中分组的数据存储元件,使得在超块302中分组的数据存储元件302d中的“当前”数据成为“旧”数据,并且写入超块304、306直至308中的一个中分组的数据存储元件的“当前”数据成为“当前”数据,并将数据存储元件302d标记为“无效”数据存储元件。类似地,数据存储和垃圾回收引擎210可以操作,以将超块302中的数据存储元件302k中的“当前”数据写入超块304、306直至308中的一个中分组的数据存储元件,使得在超块302中分组的数据存储元件302k中的“当前”数据成为“旧”数据,并且写入超块304、306直至308中的一个中分组的数据存储元件的“当前”数据成为“当前”数据,并将数据存储元件302k标记为“无效”数据存储元件。拥有本公开的本领域技术人员将理解的,可以在框506处,利用在超块302中分组的任何“有效”数据存储元件中的数据,来执行类似的操作。

然后,方法500进行到框508,其中存储设备擦除所识别的超块中的数据存储元件。在一个实施例中,在框508,数据存储和垃圾回收引擎210可以操作,以擦除包括在超块302中分组的数据存储元件302a-302p的每个块,以便为了写入数据而释放那些数据存储元件302a-302p中的每一个。此外,拥有本公开的本领域技术人员将认识到,根据方法500,附加超块可以对其执行类似的垃圾回收操作(例如,存储设备可以对两个或多个超块执行垃圾回收操作(例如,超块302和304)),这同样保持在本公开的范围内。

因此,已经描述了系统和方法,其提供在数据存储元件中存储数据,所述数据存储元件在基于该数据修改频率的超块层中的基于数据修改频率层分组,通过确保垃圾回收选择的超块将不具有导致不期望的垃圾回收延迟的一定数量的有效数据存储元件,为在进行垃圾回收操作期间提供了优势。例如,存储设备可以操作,以跟踪在超块中分组的数据存储元件中的数据的修改频率,并且当该存储设备接收当前存储在数据存储元件中的任何当前数据的修改数据时,它可以确定该数据的修改频率。这样,频繁修改的数据(例如,“热”数据)可以被写入具有相对高的数据修改频率范围的超块,而不频繁修改的数据(例如,“冷”数据)可以被写入具有相对低数据修改频率范围的超块。将数据存储在这种基于频率修改的超块层中提供有效数据存储元件在超块中的分布,其具有最低数量的有效数据存储元件,其变化不像传统垃圾回收系统那样大,因此减少了在边缘情况下执行垃圾回收操作所需的时间量。

尽管已经示出和描述了示例性实施例,但是在前述公开内容中预期了广泛的修改、改变和替换,并且在一些情况下,可以采用实施例的一些特征而无需相应地使用其他特征。因此,所附权利要求以与本文公开的实施例的范围一致的方式广泛地解释是合适的。

相关技术
  • 基于改变频率的分层数据存储和垃圾回收系统
  • 基于分层治理的HDFS分布式与集中式混合数据存储系统的方法
技术分类

06120112607789