用于存储介质的协同数据迁移的制作方法

文档序号:20515298发布日期:2020-04-24 19:01阅读:123来源:国知局
用于存储介质的协同数据迁移的制作方法

相关申请

本申请特此要求享有于2017年6月14日提交的、标题为“cooperativedatamigration”的美国临时专利申请号us62/519,268的权益和优先权,并且该美国临时专利申请的全部内容特此通过引用并入。



背景技术:

固态存储驱动器(ssd)包括各种固态存储介质,诸如nand闪存或其他类似的存储介质,并且通常要求多种低级介质维护活动来补偿底层物理存储介质的限制。这些介质维护活动可以包括垃圾收集、损耗均衡(wearleveling)、数据老化避免或其他维护活动。维护活动通常必须与数据操作共存,所述数据操作诸如是由主机活动、用户应用程序、操作系统功能等启动的读取/写入/擦除数据操作。当前,ssd的介质维护活动由可能与由主机系统启动的数据操作冲突的低级驱动器电子设备或处理器元件处理。这可能导致效率低、过多的介质损耗和写入放大,因为介质维护活动可能涉及移动过多的数据或可能在不合时宜的时间期间发生。



技术实现要素:

提供了一种存储系统。所述存储系统包括工作负荷管理器,所述工作负荷管理器具有对用于存储驱动器的主机数据操作的可见性。所述工作负荷管理器被配置为确定包括用于所述存储驱动器的存储介质的主机数据操作和数据迁移操作的操作调度,并且指示存储介质管理器根据所述操作调度执行所述数据迁移操作和所述主机数据操作。所述存储系统还包括存储介质管理器,所述存储介质管理器被配置为根据所述操作调度从所述工作负荷管理器接收指令,并且响应地执行所述数据迁移操作和所述主机数据操作。

附图说明

参考以下附图可以更好地理解本公开内容的许多方面。虽然结合这些附图描述了若干实施方式,但是本公开内容不限于本文公开的实施方式。相反,目的是覆盖所有替代方案、改型和等同物。

图1例示了一个示例实施方式中的数据存储系统。

图2例示了一个示例实施方式中的数据存储流。

图3例示了一个示例实施方式中的操作数据存储系统的方法。

图4例示了一个示例实施方式中的操作数据存储系统的方法。

图5例示了一个示例实施方式中的存储控制器。

具体实施方式

固态存储驱动器(ssd)包括各种固态存储介质,诸如nand闪存或其他类似的存储介质,并且通常要求各种低级介质维护活动来支持数据存储和检索操作。这些介质维护活动可以包括数据迁移活动,所述数据迁移活动包括到不同的存储介质位置的数据移动。数据迁移活动包括垃圾收集、损耗均衡、数据老化避免或其他数据/介质维护活动。出于例示的目的,本文讨论了nand闪存存储介质。但是应理解,可以以类似的方式采用和管理其他形式的存储介质。闪存存储介质通常通过写入到多组逻辑块来管理,所述逻辑块有时被称为超级块,并且在本文中被称为分配单元(allocationunit,au)。分配单元指的是粒度单元(granularunit),在所述粒度单元处,介质管理实体分配物理介质以用于写入新数据和擦除无效数据。

由于各种各样的原因,分配单元内的数据可能需要被迁移到新分配单元。在数据迁移的第一实施例中,分配单元内的数据的大部分已经由主机系统重写或已经被修整/被擦除,并且已经变得无效。然后,剩余的有效数据被移动并且被压缩以将分配单元空出来,这些分配单元随后用于接收/存储新数据。此第一类型的数据迁移被称为垃圾收集。在数据迁移的第二实施例中,分配单元内的数据是不稳定的,并且数据被移动到更稳定的位置。此不稳定的数据可能是由于读取干扰活动引起的,诸如通过读取闪存的可以影响周围区域的稳定性的一些区域。当数据长时间存储在同一位置时,此不稳定的数据代替地可能是由于数据保留问题引起的。在数据迁移的第三实施例中,分配单元内的数据由于在比目标时间早的过去时间被写入而是冷的,但是驻留在具有低编程/擦除循环计数的存储区域中。然后,此冷数据可以被移动到具有高编程/擦除循环计数的块。数据迁移的此第三实施例被称为损耗均衡。

ssd可以自主地迁移数据,这不提供将新数据与数据迁移活动精细地交错的能力,或考虑已知的未来存储工作负荷的能力。当不期望时,这可以导致不正确的决策和/或性能的中断。如果在迁移数据的同时新数据继续到达以由存储介质存储,则数据迁移活动可以负面影响相关联的存储驱动器的性能,因为数据迁移活动消耗带宽资源。此外,如果正被迁移的数据将被重写,则发生原本可以避免的迁移。ssd可以尝试基于工作负荷启发法(heuristics)做出这些决策,但是工作负荷启发法不预测将来的工作负荷或其内已经部署了数据活动的特定用户应用程序或存储适当的位置(niche)。

另外,由于日志结构文件系统,许多系统具有多层垃圾收集。在这些情况下,常常ssd将在介质管理层处执行垃圾收集,同时在工作负荷管理层处执行附加的垃圾收集,从而导致效率低下和写入放大,因为可能移动过多的数据。本文的实施例有利地允许将各种垃圾收集功能叠并成增强型工作负荷管理层中的单个功能,从而导致减少的写入放大、增加的存储设备性能以及减少的介质损耗。

一些存储协议,诸如在嵌入式多介质卡(emmc)上使用的存储协议,提供了用于存储设备传达数据迁移的紧迫性的接口,以及完全禁用数据迁移的能力。然而,emmc特征可能仍然导致移动过多的数据,并且可能无法处理与主机数据操作的有效共存。例如,emmc设备可以允许在合时宜的时间发生垃圾收集,但是emmc设备不提供与本文所讨论的增强型工作负荷管理层相同的选择存储设备希望迁移哪些数据的灵活性、交错数据流的能力以及理解分配单元边界的能力。

因此,本文所讨论的增强型工作负荷管理层可以确定哪些数据迁移将导致介质被空出来和被擦除,并且相应地优化数据迁移。此外,本文所讨论的增强型元件将存储设备最适合的数据存储方面(诸如物理介质管理)与通信量(traffic)生成实体最擅长的数据存储方面(诸如工作负荷管理)分离。工作负荷指示数据流和相关联的特征。例如,工作负荷包括有顺序的写入操作、随机写入操作、混合读取/写入操作、以及它们的时间分布。本文所讨论的增强型工作负荷管理层可以使用由物理介质管理元件监视的数据保留统计和存储介质损耗的知识来应用过去的、现在的和将来的工作负荷的知识。该工作负荷管理层可以改善关于何时迁移数据(诸如何时新数据的突发结束)以及迁移什么数据(诸如推迟迁移将在不久的将来被重写的数据)的动作。提供了介质管理层,该介质管理层向工作负荷管理层指示物理介质信息,以允许工作负荷管理层基于工作负荷做出更好的数据迁移选择。在迁移数据的所有原因中,更依赖于工作负荷的一个原因是垃圾收集。因此,选择哪些数据进行垃圾收集由工作负荷管理层而不由低级物理介质实体最好地处理。然而,物理介质知识(诸如分配单元边界)由工作负荷管理层应用以写入数据和挑选具有最小数目的有效数据块要迁移的分配单元,从而使具有最少数目的数据块迁移的介质位置空出来。

图1现在被呈现为采用增强型存储工作负荷管理特征的第一示例系统。图1例示了一个示例实施方式中的数据存储系统100。在图1中,主机系统110通过驱动器接口150通信耦合到存储设备120。主机系统110包括工作负荷管理器111,该工作负荷管理器111还包括一个或多个跟踪表112。存储设备120包括存储处理器121、介质接口子系统122和存储介质123。应注意,工作负荷管理器111可以被包括在除了主机系统110之外的其他实体中。例如,与主机系统110分离的系统可以包括工作负荷管理器111,或工作负荷管理器111可能被组合到图1中的其他元件内。

在操作中,工作负荷管理器111跟踪并且处理低级存储驱动器数据管理任务(诸如垃圾收集)的至少一部分和其他数据迁移任务。工作负荷管理器111相对于主机系统110的存储操作具有对指向存储驱动器的数据操作的可见性,并且因此可以智能地将数据操作与数据迁移任务交错/调度,以确保存储设备120的增强操作。由于数据操作可以包括包含用户数据写入、读取和擦除的用户数据操作,因此工作负荷管理器111还可以相对于用户数据操作改善存储设备120的操作。具体地,垃圾收集任务(或其他数据迁移任务)可以被推迟直到用户数据操作已经减弱到阈值活动水平以下为止。此外,数据迁移任务可以考虑现在的或未决的数据操作,以减少写入放大。

工作负荷管理器111维护各种跟踪表112。表112可以包括跟踪在存储介质123的每个分配单元中存在多少有效主机块地址的一个或多个有效主机块地址表、以及到存储设备120的数据块地址转换表的一个或多个主机块地址。工作负荷管理器111可以跟踪存储设备120的数据迁移过程,并且启动与存储设备120的正常数据操作交错的数据迁移任务。工作负荷管理器111确定何时迁移数据以及何时执行数据存储操作,诸如读取/写入。工作负荷管理器111还确定迁移什么实际数据。

工作负荷管理器111可以向存储设备120指示指令130以及相关联的数据块,该存储设备120响应地指示数据块地址。通过为工作负荷管理器111提供标识符以稍后读取写入的数据,用于数据的写入操作的响应131可以传达数据被接收并且被写入到介质所按的顺序。此标识符可以包括递增的数据块地址。响应131还可以向工作负荷管理器111提供允许工作负荷管理器111跟踪有顺序的数据块的哪些范围对应于各个分配单元的指示。使用递增的标识符和与分配单元中的有顺序的数据块的范围有关的指示,工作负荷管理器111可以构造表112以保存数据块地址的范围,在地址范围内有多少主机数据块仍然有效,以及用于地址范围内的每个有效主机数据块的主机数据块地址。

此外,指令130可以包括对来自存储设备120的介质状态的请求。对介质状态的请求可以询问在存储介质123变满或超过满度阈值之前在存储介质123上剩余多少分配单元。这可以由工作负荷管理器111使用以理解垃圾收集或其他数据迁移活动的紧迫性。例如,当剩余的分配单元的数量超过阈值数量时,则垃圾收集优先于写入新数据(例如,数据写入操作)。因此,可以延迟垃圾收集以代替写入新数据。当低于阈值数量的分配单元的数量保持可用或为空时,垃圾收集的优先级可能高于写入新数据(例如,数据写入操作)。

对介质状态的请求还可以询问递增的值之中的估计的最终数据块地址。此最终数据块地址可以特定于存储介质容量,而且与多少分配单元被释放和物理缺陷有关。此最终数据块地址可以由工作负荷管理器111使用以以有效的方式将数据迁移与新数据的写入交错,同时仍然确保在存储介质123变满或超过满度阈值之前发生足够的数据迁移,以在存储介质123上空出来空间。指令130还可以指示分配单元可以由存储设备120擦除并且返回到空闲分配单元的可用池。

在另一个实施例中,可以采用虚拟驱动器/核心驱动器方案。在图1中,示出了虚拟驱动器101以及核心驱动器102。虚拟驱动器101包括主机系统110中的工作负荷管理器111的操作,并且处理用于存储设备120的数据操作和数据迁移操作。核心驱动器102包括存储设备120的响应于虚拟驱动器101的指令并且根据通过链路150接收的工作负荷管理器指令执行数据操作和数据迁移操作的元件。由于在这些实施例中主机系统110经由工作负荷管理器111具有对用户/主机数据操作和数据迁移/维护操作的可见性,因此可以为存储设备120实现增强的调度和操作。与常规存储驱动器相比,本文的增强型存储驱动器将数据迁移或数据维护任务中的一些卸载到主机系统120中的工作负荷管理器111。

返回到图1的元件,主机系统110可以包括数据管理系统、最终用户设备、因特网系统、分组网络、数据服务器、应用程序服务器或其他计算系统。主机系统110还包括用于通过链路150进行通信的各种电路和接口元件。在图1中,主机系统110包括工作负荷管理器111。工作负荷管理器111可以代替地被包括在图1的其他元件(诸如存储设备120)中。当被包括在主机系统110中时,工作负荷管理器111和主机系统110的部分包括虚拟驱动器101。工作负荷管理器111包括被配置为如本文针对工作负荷管理层所描述的那样操作的软件、电路、接口或处理元件。工作负荷管理器111可以包括存储在非暂时性计算机可读介质上的计算机可执行指令,当从非暂时性计算机可读介质读取时,所述计算机可执行指令由主机系统110执行。工作负荷管理器111还包括用于存储表112的数据存储元件,诸如非易失性存储设备。

在此实施例中,处理器121包括存储控制器,并且可以包括从一个或多个存储系统检索并且执行存储控制软件的微处理器和处理电路。处理器121可以在单个处理设备内实现,但是也可以分布于在执行程序指令时和在执行本文所讨论的操作方面协同的多个处理设备、子系统或专用电路上。处理器121的实施例包括通用中央处理单元、专用处理器和逻辑设备、以及任何其他类型的处理设备、其组合或变体。在一些实施例中,处理器121可以是具有软件的现场可编程门阵列(fpga)、具有存储器缓冲器的软件、被设计为被包括在具有介质接口122的单个模块中的专用集成电路(asic)、用来创建asic的一组硬件描述语言(hdl)命令(诸如verilog或systemverilog)、相对于存储介质123的单独模块或许多其他可能的配置中的任何一个。

处理器121还可以包括用于通过链路150与主机系统110进行通信的主机接口电路。主机接口电路包括用于通过链路150进行通信的一个或多个通信接口或网络接口。主机接口电路可以包括收发器电路、缓冲电路、协议转换电路、接口转换电路和其他相关电路。链路150可以包括外围部件高速互连(peripheralcomponentinterconnectexpress,pcie)链路、串行at附件(serialatattachment,sata)链路、nvmexpress(nvme)或非易失性内存主机控制器接口规范(nvmhcis)链路、通用串行总线(usb)链路、hypertransport(ht)链路、infiniband链路、光纤信道(fibrechannel)链路、通用闪存接口(cfi)链路、以太网链路、光学链路或无线链路。

当采用nand闪存介质时,介质接口122可以包括一个或多个开放式nand闪存接口(onfi)电路(同步的或异步的)或“切换(toggle)”命令协议接口电路。对于其他介质类型,可以采用其他接口类型和组成。存储介质123包括一个或多个固态存储介质,诸如nand闪存介质、以及其他介质类型、包括其组合。存储介质的其他实施例包括nor闪存、3dxpoint存储装置、磁性随机存取存储器(mram)、相变存储器(pcm)、电阻式随机存取存储器(reram)、忆阻器存储器、光盘、磁性存储设备、混合磁盘驱动器或任何其他合适的存储介质。

现在转到增强型存储设备管理的另一个实施例,呈现了图2。图2例示了一个示例实施方式(即,系统200)中的数据存储流。系统200包括各种存储控制元件(即,工作负荷管理层220和介质管理层230)的分层视图。包括主机系统210以例示可以发起(originate)数据操作(诸如数据存储设备260的读取/写入/擦除操作)的示例系统。包括存储介质240以例示在其上写入数据以供稍后检索的存储设备260的示例物理介质。提供接口250-252以与系统200的各种元件中的每个互连。

如图2中所指出的,工作负荷管理层220和介质管理层230可以被包括在存储系统的类似元件或不同元件中。例如,工作负荷管理层220可能驻留在主机系统210的元件中或驻留在主机系统210外部的其他元件和存储设备260中。在其他实施例中,工作负荷管理层220和介质管理层230二者被包括在存储设备260的控制系统元件中。

主机系统210包括操作系统(os)211和应用程序212-213。操作系统(os)211和应用程序212-213可以发起数据存储操作,诸如指向存储设备260的各种读取、写入、修整、擦除或各种文件系统操作。存储设备260可以类似于上文针对图1的存储设备120所讨论的存储设备,但是为了清楚起见,在图2中仅示出了存储介质240。这些数据存储操作可以在用户应用程序(诸如应用程序212-213)中发起,或可以由于文件系统操作、高速缓存操作、页面交换操作或os211的其他操作而发起。主机210的其他元件可以发起这些数据存储操作,诸如固件、bios、维护元件、数据加密系统、数据冗余系统等。这些数据存储操作可以通过接口250传送,在工作负荷管理层220被包含在存储驱动器中的实施例中,接口250可以包括存储接口/链路,或当工作负荷管理层220被包含在主机系统210中时,接口250可以包括各种编程接口、在存储接口上承载的逻辑接口或应用程序编程接口(api)。

工作负荷管理层220包括具有存储设备260的过去的、现在的和将来的工作负荷的知识的软件或电路层。在一些实施例中,工作负荷管理层220可以接收这些数据存储操作,并且然后工作负荷管理层220处理数据存储操作的执行。在其他实施例中,工作负荷管理层220具有对数据存储操作的可见性,诸如通过检查主机系统210或存储设备260的数据存储操作队列中含有的操作。在另一些实施例中,工作负荷管理层220可以被提供有指示来自主机系统210或存储设备260的现在的和即将到来的/将来的数据存储操作的消息收发(messaging)。不管工作负荷管理层220如何获得对数据存储操作的可见性,工作负荷管理层220都被配置为监视过去的、现在的和即将到来的数据存储操作。

工作负荷管理层220还管理存储介质240的数据迁移活动。数据迁移活动包括垃圾收集、损耗均衡、数据老化避免或存储介质240的其他数据/介质维护活动。工作负荷管理层220交错存储介质240的数据迁移活动和数据存储操作。工作负荷管理层220通过接口251向介质管理层230指示这些数据操作和数据迁移操作的执行。在工作负荷管理层220未被包含在存储驱动器260中的实施例中,接口251可以包括存储接口/链路,或当工作负荷管理层220被包含在存储驱动器260中时,接口251可以包括各种编程接口、在存储接口上承载的逻辑接口或应用程序编程接口(api)。

介质管理层230处理低级物理访问并且与存储介质240接口连接。介质管理层230包括具有需要如何将数据写入到非易失性存储介质的知识的软件或电路层,确保存储介质均匀地损耗,处理存储介质缺陷并且为存储在存储介质上的数据提供误差校正能力。在操作中,介质管理层230可以向工作负荷管理层220提供介质状态信息,以使得工作负荷管理层220可以确定需要迁移什么数据以及何时需要发生数据迁移。此外,介质管理层230响应于由工作负荷管理层220传送的存储操作来向工作负荷管理层220提供数据块信息。

介质管理层230可以包括控制和接口元件,诸如onfi接口、切换式接口或其他非易失性存储介质接口。存储介质240可以包括物理存储元件,诸如nand闪存阵列或其他存储元件。因此,接口252包括到各个存储介质元件(诸如nand闪存芯片、晶片、管芯或其他存储介质)的一个或多个接口。

呈现了图3以进一步详述图2的元件的示例操作。图3包括配置300,该配置300突出了通过接口251进行通信的工作负荷管理层220和介质管理层230。为了清楚起见,从图3省略了图2的其他元件。

在本文的讨论中采用了各种术语。可以通过写入到多组逻辑块来管理存储介质240,所述逻辑块有时被称为超级块,并且在本文中被称为分配单元(au)。分配单元指的是粒度单元,在该粒度单元处,介质管理层230分配存储介质240以用于写入新数据和擦除无效数据。从主机系统210的角度来看,主机块(hb)指的是粒度数据块,诸如数据扇区。主机块地址(hba)指的是扇区编号,并且指示特定的hb。数据块(db)包含任意数量的hb,并且因此指的是一组hb。每个db将具有一个对应的数据块地址(dba),该数据块地址包括递增的编号,该编号按将db写入存储介质240的顺序来标识db。无效数据包括如下hb,所述hb驻留在db中,但是不再有效,因为同一hba的新副本已经被写入到具有更高dba的db。

在操作中,工作负荷管理层220将主机块(hb)打包成数据块(db),并且将它们发送到介质管理层230以写入到物理介质。在图3中,多个hb311-313由工作负荷管理层220分组到db310中,并且通过接口251传送到介质管理层230。介质管理层230用数据块地址(dba)320来响应,该数据块地址320传达db310被接收并且被写入到物理介质所按的顺序。dba包括编号/指示符,所述编号/指示符响应于接收到用于存储的每个db而顺序地递增。dba320包括用于工作负荷管理层220检索/读取与db310相关联的数据的标识符。介质管理层230还向工作负荷管理层220提供允许工作负荷管理层220理解有顺序的db的哪些范围对应于各个分配单元的指示。

使用由介质管理层230提供的信息,诸如对应于各个分配单元的有顺序的db的dba和范围,工作负荷管理层220可以构造一个或多个跟踪表。这些表包含数据结构,所述数据结构指示dba的范围、指示在所述范围内有多少hb仍然有效、以及指示在所述范围内的每个有效hb的hba。有效性表221在图3中被示出为仅这些行的示例数据结构。转换表222可以由工作负荷管理层220维护,工作负荷管理层220包括一个或多个“hba到dba转换”数据结构。还可以由工作负荷管理层220建立操作调度223以跟踪数据迁移任务和数据存储任务。操作调度223可以包括队列或有序列表,该队列或有序列表指示用于由介质管理层230执行的数据迁移任务和数据存储任务之间的排序。至少利用操作调度223,工作负荷管理层220可以跟踪数据迁移过程和启动与存储驱动器的正常数据操作交错的数据迁移任务。工作负荷管理层220可以向介质管理层230指示指令以及dba,它们指示一个或多个dba,所述dba可以各自对应于递增的编号/指示符。

介质管理层230的接口251或接口元件提供了一个接口,在该接口处,介质管理层230可以将各种信息321传达到工作负荷管理层220。此信息321可以包括满度指示符,该满度指示符指示在存储介质240变满之前有多少分配单元保持可用(诸如未使用或空闲)。此满度指示符可以由工作负荷管理层220使用以理解垃圾收集或其他数据迁移活动的紧迫性。例如,当许多分配单元保持可用时,垃圾收集可能是不必要的,或可以被延迟直到满度指示符达到满度阈值水平为止。当只有几个分配单元保持可用时,垃圾收集或其他数据迁移活动的优先级可以比新数据的写入高。

由介质管理层230提供的此信息321还可以包括估计的最终dba。如果没有释放分配单元并且没有遇到增长的缺陷,则介质管理层230可以估计可以支持的最高db数目。此估计的最终dba可以由工作负荷管理层220使用以将数据迁移与新数据的写入交错,同时基于估计的最终dba仍然确保在存储介质变满之前发生足够的数据迁移(诸如垃圾收集)以将介质空间空出来。因此,当响应于写入操作由工作负荷管理层220接收dba时,工作负荷管理层220可以估计在存储介质满了或超过满度阈值之前可以写入多少db。

介质管理层230的接口251或接口元件还可以提供一个接口,在该接口处,分配单元可以被擦除并且被返回到分配单元的可用池。因此,工作负荷管理层220可以向介质管理层230指示擦除分配单元或将分配单元返回到分配单元的可用池。此方案允许工作负荷管理层220基于工作负荷(例如数据存储操作)完全控制何时迁移数据以及迁移什么数据。例如,工作负荷管理层220可以选择在工作负荷管理层220没有接收到从主机系统210读取数据或写入新数据的命令的时间期间迁移数据。如果工作负荷管理层220具有新数据从主机系统210写入将使分配单元无效而无需迁移的知识,则工作负荷管理层220可以选择根本不迁移数据。工作负荷管理层220可以以满足工作负荷对读取和写入的延迟(latency)和吞吐量的需求的方式来将从主机系统210读取和写入新数据与迁移交错。

因此,工作负荷管理层220可以基于由主机系统210启动的过去的、现在的和将来的存储操作工作负荷来关于迁移什么数据以及何时迁移数据进行智能选择。然而,工作负荷管理层220仍然依赖于介质管理层230以基于物理介质的特性来理解必须移动数据的各种原因。因此,可以定义介质管理层230和工作负荷管理层220之间的另外的接口连接,在接口连接处,介质管理层230可以异步通知工作负荷管理层220(或由工作负荷管理层220询问)关于出于损耗均衡的目的或由于数据保留或读取干扰问题而应移动的dba的范围。虽然介质管理层230告知工作负荷管理层220出于数据迁移目的需要移动什么数据,但是介质管理层230仍然允许工作负荷管理层220控制出于数据迁移目的何时移动数据,或甚至如果基于来自主机系统210的未决的或预期的存储操作将在不久的将来重写这样的数据,则延迟或省略出于数据迁移目的数据移动。

为了进一步例示工作负荷管理层220的操作,呈现了图4。图4例示了一个示例实施方式中的操作数据存储系统的方法400。图4的操作可以应用于图1-图3的元件,但是在此实施例中将在工作负荷管理层220的上下文中讨论所述操作。

在图4中,工作负荷管理层220接收(401)关于存储介质240的描述性信息。此描述性信息可以与需要存储介质240执行的数据迁移任务或活动有关。在此实施例中,工作负荷管理层220经由接口251从介质管理层230接收此信息。此信息指示出于损耗均衡的目的或由于数据保留或读取干扰问题以及其他数据迁移过程而应移动的dba的范围。此外,此信息可以包括针对已经修整的存储介质240上的数据的垃圾收集信息。可以向工作负荷管理层220提供另外的信息321,以使得工作负荷管理层220可以维持需要存储介质240执行的数据迁移任务的状态。至少利用此信息,工作负荷管理层220确定(402)存储介质240的数据迁移操作。如上文所提及的,这些数据迁移操作可以包括将数据从存储介质240的一部分移动到另一部分、从一个分配单元移动到另一个分配单元、或根据其他迁移分区移动。

除了从介质管理层230接收的数据迁移信息之外,工作负荷管理层220还接收(403)主机数据操作的指示。可以通过接口250从主机系统210接收主机数据操作的这些指示。主机系统210可以传送这些指示,或工作负荷管理层220可以代替地检查或询问与主机系统210相关联的数据操作队列。在又一个实施例中,工作负荷管理层220被包含在数据存储设备中,并且通过存储接口从主机系统210接收的任何存储操作都由工作负荷管理层220监视。这些存储操作可以包括写入操作、读取操作、擦除/修整操作、文件系统操作、或由主机系统210发出的其他各种数据操作。用于存储的相关联的数据可以伴随写入操作。

一旦工作负荷管理层220具有对存储介质240的数据迁移信息和主机数据操作的指示的可见性,则工作负荷管理层220确定(404)存储驱动器260的用于数据迁移操作和主机数据操作的操作调度223。此操作调度223包括数据迁移操作和主机数据操作之间的时间上的(timewise)任务组织,所述数据迁移操作和主机数据操作由工作负荷管理层220指示以用于控制介质管理层230。因此,指示(405)存储介质管理器(介质管理层230)根据操作调度执行数据迁移操作和主机数据操作。

图5例示了存储控制器500。存储控制器500可以采用各种配置中的任何一种,并且可以形成本文所讨论的用于图1的工作负荷管理器111、处理器121或介质接口的元件。此外,存储控制器500可以形成本文所讨论的用于工作负荷管理层220、介质管理层230和接口250-252的元件。在此,为被实现为asic或现场可编程门阵列(fpga)的存储控制器提供一个示例配置。然而,在其他实施例中,存储控制器500可以被内置到存储设备、存储驱动器、存储系统或存储阵列中,或被并入到主机系统中。

在此实施例中,存储控制器500包括主机接口510、处理电路520、存储接口530和内部存储系统540。主机接口510包括被配置为从外部主机系统接收数据和命令并且向主机系统发送数据的电路。存储接口530包括被配置为向存储介质发送数据和命令并且从存储介质接收数据的电路。

处理电路520包括被配置为执行如上文所描述的存储控制器的任务的电子电路。处理电路520可以包括微处理器和检索并且执行软件560的其他电路。在一些实施例中,处理电路520可以被嵌入存储系统中。处理电路520的实施例包括通用中央处理单元、专用处理器和逻辑设备,以及任何其他类型的处理设备、其组合或变体。处理电路520可以在单个处理设备内实现,但是也可以分布于在执行程序指令方面协同的多个处理设备或子系统上。

内部存储系统540可以包括能够存储可由处理电路520执行的软件560的任何非暂时性计算机可读存储介质。内部存储系统540还可以包括各种数据结构550,所述各种数据结构包括一个或多个数据库、表、列表或其他数据结构。存储系统540可以包括以任何方法或技术实现的用于存储信息——诸如计算机可读指令、数据结构、程序模块或其他数据——的易失性和非易失性、可移除和不可移除的介质。

存储系统540可以被实现为单个存储设备,但是也可以在位于同一地点或相对于彼此分布的多个存储设备或子系统上实现。存储系统540可以包括能够与处理电路520通信的附加元件,诸如控制器。存储介质的实施例包括随机存取存储器、只读存储器、磁性存储装置、光学存储装置、闪存、虚拟存储器和非虚拟存储器,或可以被用来存储期望的信息并可以由指令执行系统访问的任何其他介质、以及其任何组合或变体。

软件560可以程序指令实现,并且除了其他功能之外,所述软件当总体由存储控制器500执行或具体由处理电路520执行时,能够引导存储控制器500或处理电路520以如本文针对存储控制器所述描述的那样操作。软件560可以包括附加的进程、程序或部件,诸如操作系统软件、数据库软件或应用软件。软件560还可以包括固件或可由处理电路520的元件执行的某种其他形式的机器可读处理指令。

在至少一个实施方式中,程序指令可以包括协同数据迁移控制器570。协同数据迁移控制器570被配置为实现工作负荷管理层和介质管理层之间的协同存储介质管理。在此实施例中,工作负荷管理层至少部分地由数据存储控制装置571和数据迁移控制装置572表示。协同数据迁移控制器570包括数据存储控制装置571、数据迁移控制装置572、介质状态测量装置573和操作调度器574。此外,包括各种数据结构以支持数据存储控制装置571、数据迁移控制装置572、介质状态测量装置573和操作调度器574的操作。这些数据结构包括跟踪表551和操作调度552。跟踪表551和操作调度552可以被存储在非易失性存储装置中,并且在协同数据迁移控制器570的操作期间被移动到高速缓存或ram。

数据存储控制装置571包括用于处理由主机系统针对存储驱动器发出的数据存储操作的跟踪的指令。这些数据存储操作可以包括过去的、现在的、未决的或将来的数据存储操作。数据存储操作可以包括写入、读取、擦除、修整或其他数据存储操作以及相关联的数据。数据存储控制装置571可以跟踪在跟踪表551的一部分中的数据存储操作的寻址、数据大小和其他属性。数据迁移控制装置572包括用于处理执行数据迁移任务的指令,所述执行数据迁移任务可以包括垃圾收集任务、损耗均衡任务、数据老化避免或用于存储介质的其他维护活动。介质状态测量装置573包括用于处理与数据迁移任务有关的跟踪信息的指令,所述跟踪信息是诸如介质满度状态、垃圾收集状态和未决的垃圾收集任务、修整操作以及与这样的任务相关联的介质寻址。介质状态测量装置573可以从介质控制器接收数据迁移信息,或当介质状态测量装置573被包括在介质接口元件中时可以在内部获得此信息。操作调度器574包括用于确定数据存储操作和数据迁移操作之间的调度的指令。操作调度器574可以优化数据存储操作和数据迁移操作之间的调度,以减少数据迁移操作对数据存储操作的性能、延迟或吞吐量的影响。此外,当物理存储介质在满度阈值以下或数据老化度量下降到某些分配单元的目标水平以下时,操作调度器574可以延迟或省略某些数据迁移任务。因此,操作调度器574可以为存储介质提供数据存储操作和数据迁移的增强执行。如本文所讨论的,操作调度器574可以使用操作调度552来维护队列或任务列表。

通常,当软件560被加载到处理电路520中并且被执行时,该软件可以将处理电路520整体地从通用计算系统转变为如本文针对存储控制器所描述的那样操作以及进行其他操作的定制化的专用计算系统。内部存储系统540上的编码软件560可以转变内部存储系统540的物理结构。该物理结构的具体转变可以取决于此说明书的不同实施方式中的各种因素。这样的因素的实施例可以包括但不限于用来实现内部存储系统540的存储介质的技术以及计算机存储介质是否被表征为主存储或辅助存储。

例如,如果计算机存储介质被实现为基于半导体的存储器,则当在半导体存储器中对程序进行编码时,软件560可以转变半导体存储器的物理状态。例如,软件560可以转变构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。对于磁性或光学介质而言,也可以发生类似的转变。在不脱离本说明书的范围的情况下,物理介质的其他转变是可能的,提供前述实施例仅是为了便于此讨论。

所包括的描述和附图描绘了教导本领域技术人员如何作出和使用最佳模式的具体实施方式。出于教导发明原理的目的,简化或省略了一些常规方面。本领域技术人员将明了落在本发明范围内的根据这些实施方案的变型。本领域技术人员还将明了,可以各种方式将上文所描述的特征进行组合以形成多个实施方案。因此,本发明不限于如上文所描述的具体实施方案,而是仅受权利要求以及其等同物限制。

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