专利名称:用于将数据高速缓存在固态存储设备上的装置、系统和方法
技术领域:
本发明涉及将数据高速缓存在固态存储设备上,并且具体涉及维护与高速缓冲存储器以及用于管理高速缓冲存储器且进行疏导操作的固态存储设备有关的元数据。
背景技术:
高速缓存设备为用于使数据更迅速地存取在系统中的存储设备。高速缓冲存储器可通过减少将所述数据用于高速缓冲存储器中的操作的输入/输出(I/o)时间来显著地提高系统性能。一般来讲,高速缓冲存储器在相比于高速缓存设备具有更大存储容量、但具有更慢I/o时间的另一个存储设备之前实施。可充分理解高速缓冲存储器的有益效果,并且已在范围从CPU中的高速缓冲存储器到存储区域网络(SAN)中的高速缓冲存储器的各种环 境和规模下有利地实施了高速缓冲存储器。高速缓冲存储器的性质也可根据环境变化;例如,在单个计算机(诸如桌上型电脑或膝上型电脑)中,高速缓冲存储器可在易失性存储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或其它中实施。目前,高速缓存疏导是无效的,因为其与其它存储器管理操作分离。
发明内容
固态存储设备可作为非易失性后备存储器的非易失性高速缓存设备来操作。固态存储设备可对采用由固态存储设备提供的逻辑空间的客户端透明。在一些实施方案中,固态存储设备可被配置为向客户端提供与后备存储器的物理大小相同的逻辑大小,使得固态存储设备向客户端提供与后备存储器具有相同大小的逻辑存储空间,而与固态存储设备的物理存储大小无关。作为另外一种选择或除此之外,固态存储设备可向客户端提供超出固态存储设备和后备存储器的物理存储容量的逻辑地址空间。固态存储设备可维护与在固态存储设备上进行的高速缓存操作和存储操作有关的元数据。存储元数据可包括但不限于与在固态存储设备上进行的顺序存储操作有关的元数据(例如所述设备上的客户端逻辑地址与存储单元之间的关联数据(associations)、存储日志元数据等)、与顺序存储操作有关的维护操作(例如存储恢复、无用单元收集、错误校正等)、存储介质的状态(例如耗损均衡性、可靠性、完整性等)等。存储元数据可包括将包括有效数据的存储单元与包括无效数据的存储单元进行区分的有效性指示符。存储单元可指固态存储设备上的任何可寻址存储位置。固态存储设备可将数据高速缓存在固态存储设备的存储单元中。高速缓存元数据可包括与存储在固态存储设备上的高速缓冲存储器有关的元数据、在固态存储设备上进行的高速缓存操作(例如存取模式等)、高速缓存管理(例如高速缓存清除和/或保留策略、高速缓存属性、高速缓存指令等)等。高速缓存元数据可包括识别可丢弃的数据的可丢弃性指示符。可丢弃数据可为已备份(例如存储)在后备存储器上的高速缓存数据。
由固态存储设备维护的元数据可包括高速缓存条目,这些高速缓存条目可表示高速缓存在所述设备上的数据(例如高速缓存在固态存储设备的存储单元中的数据)。高速缓存条目可在识别数据在固态存储设备上的存储位置时,将(存储客户端的)逻辑地址与一个或多个存储位置(例如存储单元)关联;高速缓存条目可提供客户端逻辑地址与固态存储设备存储位置(例如存储单元)之间的索引或映射。在一些实施方案中,高速缓存条目可具有可变大小,并因此可引用固态存储设备上的存储单元的一部分、单个存储单元和/或多个存储单元。例如,第一高速缓存条目可包括单个存储单元上的第一数据量(例如单个存储单元的一部分上的256字节),但第二高速缓存条目可包括多个存储单元上的不同的第二数据量(例如多个存储单元或虚拟存储单元上的4千字节)。高速缓存条目可通过逻辑地址来索引,该逻辑地址响应于客户端存储请求可能能够快速有效地访问高速缓存条目。高速缓存条目可用于存储(和/或引用)共享元数据,包括与固态存储设备的顺序存储操作以及高速缓冲存储器相关的元数据。例如,固态存储设备的疏导器(如下所述)可存取与高速缓冲存储器有关的元数据,以有效地进行存储恢复和/或维护操作。类似地,在固态存储设备上操作和/或结合固态存储设备操作的高速 缓存管理器(如下所述)可存取元数据,以有效地管理高速缓冲存储器(例如做出与高速缓存清除和/或保留等有关的高速缓存策略决策)。在一些实施方案中,固态存储设备可提供可使元数据的部分暴露于存储客户端的存储接口(或通常为“接口”)。通过使用所述接口,存储客户端可配置固态存储设备(例如,设置高速缓存属性、高速缓存指令,发出TRIM命令等)。另外,所述接口可通过其来暴露“稀疏”或“精简配置”逻辑地址空间,这无需冗余地址转换层便可使存储客户端与固态存储设备进行交互(例如在完整的64位地址空间内)。在一些实施方案中,备份引擎可被配置为将高速缓存在固态存储设备上的数据备份到后备存储器中。当存储在后备存储器上时,与所述数据关联(例如与高速缓存条目和/或相应存储单元关联)的元数据可被更新以表明所述数据可丢弃。备份引擎可按时间顺序(从最旧至最新)循环遍历固态存储设备的存储单元。遍历可通过由固态存储设备维护的共享元数据(例如存储单元的倒排索引和/或顺序指示符)来激活。备份引擎的操作可被存储元数据告知;例如,备份引擎可忽略元数据指示为无效的与高速缓存条目关联(和/或关联存储单元中)的数据(例如数据由于恢复操作、连续写入、修改等已被移动至不同的存储位置)。在一些实施方案中,备份引擎以较低优先级运行(例如作为后台进程或操作)。如果需要,备份引擎可被配置为以较高优先级运行。例如,元数据可指示固态存储设备的物理存储容量、目标占用率、最大占用率和/或当前占用率。在当前占用率超出阈值(例如超出目标占用率、最大占用率或某个其它阈值)时,后台引擎可被配置为以较高优先级运行。存储恢复和维护操作可类似地被元数据告知。例如,被配置为恢复固态存储设备的存储分区的疏导器进程可使用元数据来优先化(例如在当前占用率超出阈值时,提高优先级)。疏导器在进行其数据恢复操作时,可存取与高速缓冲存储器相关的元数据。例如,疏导器可根据元数据来选择用于恢复的存储分区,可使用元数据来选择待保留的存储分区中的存储单元(例如移动至不同的存储分区)等。因此,在一些实施方案中,一种用于将数据高速缓存在固态存储设备上的方法可包括维护与在固态存储设备上进行的高速缓存操作和固态存储设备的存储操作有关的元数据;存取所述元数据以管理固态存储设备的存储操作;并且存取所述元数据以管理存储在固态存储设备上的高速缓冲存储器。可将与高速缓存操作有关的元数据和与存储操作有关的元数据存储在共享数据结构中。所述元数据可包括识别已存储在后备存储器上的存储单元的可丢弃性指示符,并且所述指示符可用于选择用于恢复的存储分区。高速缓存清除元数据(例如冷、热、温等)可用于选择用于恢复的存储分区和/或确定是否应当保留经选择进行恢复的存储分区中的存储单元。所述元数据可与高速缓存条目的逻辑地址关联,因此当相应数据的存储位置在固态存储设备上发生变化时,该元数据仍可与高速缓存条目关联。与高速缓冲存储器有关的元数据(例如共享高速缓存元数据)可用于管理固态存储设备的顺序存储操作,诸如存储分区恢复、无用单元收集、错误管理、顺序存储(例如基于日志的存储操作)等。与顺序存储操作有关的元数据(例如共享存储元数据)可用于管理高速缓冲存储器。例如,高速缓存操作诸如备份、高速缓存清除、占用、高速缓存数据移动等可被共享的存储元数据告知。所述元数据可包括多个高速缓存条目,每个高速缓存条目均将逻辑地址与固态存储设备上包括高速缓存条目的数据的存储单元关联。可使用高速缓存条目来处理客户端存储请求。如果特定逻辑地址的高速缓存条目存在于所述元数据中,则相应的数据可在固态存储设备上可用;否则,该数据可能不可用(并且可能发生高速高速缓存缺失)。可迅速有效地处理客户端存储请求,因为高速缓存条目可通过逻辑地址(例如在B树数据结构中)来索引。所述元数据可用于确定固态存储设备的当前占用率。客户端条目可响应于高速缓存和/或存储操作来修改。当存储接近的逻辑地址时,可合并相应的高速缓存条目,这可减少必须搜索的条目的数量,从而找到特定逻辑地址。类似地,当删除逻辑地址时,可(或不可)分解相应的高速缓存条目。高速缓存条目可具有可变大小,并因此可包括单个逻辑地址、一系列逻辑地址、一组逻辑地址等。在本说明书中通篇对特征、优点或类似的术语的参考并未暗示可通过本发明来实现的所有特征和优点均应当包括或包括在本发明的任何单个实施方案中。相反,应当将涉及这些特征和优点的术语理解为意指,结合实施方案描述的具体特征、优点或特性包括在本发明的至少一些实施方案中。因此,在本说明书中通篇讨论的特征和优点及类似的术语可能(但未必)涉及相同的实施方案。此外,可以任何适当的方式将本发明的所述特征、优点和特性结合在一个或多个实施方案中。相关领域的技术人员将认识到,本发明可在无需具体实施方案的一个或多个具体特征或优点的情况下实施。在其它情况中,可在一些实施方案中看到可能不存在于本发明的所有实施方案中的其它特征和优点。本发明的这些特征和优点通过以下说明和所附权利要求将变得更加显而易见,或者可通过本发明的实施来了解,如下所述。
为了易于理解本发明的优点,将通过参考在附图中示出的具体实施方案对本发明进行以上简述的更具体说明。理解到这些图仅描述了本发明的典型实施方案并因此不被视、为对其范围进行限制,从而将通过采用附图对本发明进行其它特定和详细的描述和解释,其中图I为示出了包括被配置为高速缓存数据的固态存储设备的系统的示例性实施方案的示意性框图;图2为示出了包括提供逻辑存储空间的固态存储设备的系统的示例性实施方案的示意性框图,所述逻辑存储空间与由后备存储器提供的物理空间具有相同大小;图3为示出了高速缓存管理装置的一个实施方案的示意性框图;图4为示出了文件系统、用作高速缓冲存储器的固态存储设备和用作后备存储器的硬盘驱动器之间的写入期间的交互的示例性实施方案的示意性框图;图5为示出了文件系统、用作高速缓冲存储器的固态存储设备和用作后备存储器的硬盘驱动器之间的读取期间的交互的示例性实施方案的示意性框图;图6为示出了用于配置固态存储设备的方法的另一个实施方案的示意性流程图;图7为示出了用于处理固态存储设备上的读取内容的方法的示例性实施方案的示意性流程图;图8为示出了用于处理固态存储设备上的写入内容的方法的示例性实施方案的示意性流程图;图9A为示出了在固态存储设备的单元上操作的备份引擎的示例性实施方案的示意性框图;图9B为示出了在固态存储设备的单元上操作的备份引擎的示例性实施方案的示意性框图;图10为示出了用于疏导固态存储设备中的单元的方法的示例性实施方案的示意性流程图;图11为用于维护共享元数据的示例性数据结构的示意性框图;图12为用于将数据高速缓存在固态存储设备上的方法的一个实施方案的流程图;图13为用于将数据高速缓存在固态存储设备上的方法的另一个实施方案的流程图;图14为用于将数据高速缓存在固态存储设备上的方法的另一个实施方案的流程图;图15为用于将数据高速缓存在固态存储设备上的方法的另一个实施方案的流程图;并且图16为用于将数据高速缓存在固态存储设备上的方法的另一个实施方案的流程图。
具体实施例方式本说明书中描述的许多功能单元已被标记为模块,以便更具体地强调其实施独立性。例如,模块可作为包括定制VLSI电路或门阵列、现货半导体(诸如逻辑片、晶体管)或 其它分立元件的硬件电路来实施。模块也可在可编程硬件设备诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等中实施。
模块也可在软件中实施以通过各种类型的处理器来执行。可执行代码的识别模块可例如包括计算机指令的一个或多个物理块或逻辑块,其可例如以对象、程序或功能来组织。然而,识别模块的可执行文件无需物理地设置在一起,但可包括存储在不同位置中的不同指令,这些指令在逻辑地接合在一起时包括所述模块并且实现该模块的所述目的。实际上,可执行代码的模块可为单指令或多指令,并且甚至可分布在若干不同代码段上、不同程序之间和整个若干存储设备上。类似地,模块内的操作数据可在本文中得以识别和示出,并且可以任何适当的形式体现并组织在任何适当类型的数据结构内。所述操作数据可被收集成单个数据集,或者可分布在不同位置(包括不同的存储设备)上,并且可至少部分地仅作为电子信号存在于系统或网络上。如果模块或模块的部分在软件中实施,则软件部分存储在一个或多个计算机可读介质上。在本说明书中通篇对“一个实施方案”或类似的术语的参考意指,结合实施方案描述的特定特征、结构或特性包括在本发明的至少一个实施方案中。因此,在本说明书中通篇 出现的短语“在一个实施方案中”和类似的术语可能(但未必)均涉及相同的实施方案。所提及的计算机可读介质可采用能够将机器可读指令存储在数字处理装置上的任何形式。计算机可读介质可通过传输线、光盘、数字视频光盘、磁带、贝努里技术驱动、磁盘、穿孔卡、闪速存储器、集成电路或其它数字处理装置存储设备来体现。此外,可以任何适当的方式将本发明的所述特征、结构或特性结合在一个或多个实施方案中。在以下说明中,提供了许多具体细节,诸如编程、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的实例,以提供对本发明的实施方案的充分理解。然而,相关领域的技术人员将认识到,本发明可在无需所述具体细节中的一个或多个的情况下实施,或者可通过其它方法、部件、材料等来实施。在其它情况中,未详细示出或描述所熟知的结构、材料或操作,以避免模糊本发明的各方面。通常将本文中包括的示意性流程图作为逻辑流程图来阐述。因此,所描述的顺序和标记步骤表示所提出方法的一个实施方案。可以设想在功能、逻辑或效果上与所示方法的一个或多个步骤或其部分等效的其它步骤和方法。另外,提供了所采用的格式和符号以解释所述方法的逻辑步骤,但应理解这些格式和符号不旨在限制所述方法的范围。虽然各种箭头类型和线条类型可用于各流程图中,但应理解其不旨在限制相应方法的范围。实际上,一些箭头或其它连接符可用于仅指示所述方法的逻辑流程。例如,箭头可指示所述方法的列举步骤之间的未指定期限的等待或监测期。另外,进行特定方法的顺序可能会或可能不会严格符合所示出的相应步骤的顺序。如本文所用,元数据可指与固态存储设备的操作有关的任何数据。因此,元数据可指高速缓存元数据和/或存储元数据。在一些实施方案中,固态存储设备可被配置为维护包括高速缓存元数据和/或存储元数据的共享数据结构。所述数据结构可通过高速缓存管理器、疏导器和/或其它管理模块来存取,这些设备可使用元数据来有效地管理固态存储设备的高速缓存、存储和/或维护操作(例如疏导)。如本文所用,高速缓存元数据可指与存储在固态存储设备上的高速缓冲存储器和/或在固态存储设备上进行的高速缓存操作有关的任何数据。高速缓存元数据可包括但不限于识别已备份在后备存储器上的高速缓存条目存储单元的可丢弃性指示符、高速缓存清除元数据、高速缓存属性(例如PIN、BLACKLIST)、高速缓存指令(例如Flush)等。例如,高速缓存清除元数据可包括数据存取模式,诸如最近最少使用的模式、存取频率等。高速缓存清除元数据可用于做出关于特定高速缓存条目的高速缓存清除决策。例如,高速缓存清除元数据可用于识别“热”、“温”和/或冷等高速缓存条目。冷高速缓存条目可为用于清除的候选物,但可保留“热”条目。高速缓存清除元数据也可包括高速缓存属性,诸如PIN、BLACKLIST等,这些高速缓存属性可用于管理高速缓存操作(例如,PIN指令可防止数据从固态存储设备中清除)。类似地,高速缓存清除元数据可响应于高速缓存指令,诸如“FLUSH”指令,以从高速缓冲存储器中刷新或清除高速缓存条目。如本文所用,存储元数据可指与固态存储设备的固态存储介质和/或在固态存储设备上进行的存储操作有关的任何数据。存储元数据可包括但不限于识别固态存储设备上的有效和/或无效数据的有效性指示符、向存储单元查找提供有效逻辑地址的正向索引元数据、向逻辑地址查找提供有效存储单元的反向索引元数据、占用元数据(例如存储在固态存储设备上的数据、占用率阈值等)、存储介质状态(例如耗损均衡性、可靠性、出错率等)、顺序存储兀数据(例如存入等)等。 如本文所用,存储单元可指用于将数据存储在固态存储设备上的任何位置。因此,存储单元可包括固态存储元件的块、包括多个固态存储元件上的块或其部分的虚拟块、页面、包括多个固态存储元件的页面或其部分的虚拟页面、存储分区、虚拟存储分区、擦除块、虚拟擦除块等。存储单元可为存储分区的一部分。如本文所用,存储分区可指固态存储设备的可擦除分区。因此,存储分区可指固态存储元件的擦除块、包括多个固态存储元件上的存储分区或其部分的虚拟擦除块等。在一些实施方案中,高速缓冲存储器可包括多个“高速缓存条目”。高速缓存条目可包括逻辑地址(或一系列逻辑地址,所述一系列的逻辑地址可包括有序地址、无序地址、连续地址和不连续地址)和一个或多个存储单元,所述存储单元上对应于逻辑地址的数据存储在固态存储设备上。高速缓存条目的数据可存储在存储单元、单个存储单元和/或多个存储单元的一部分上。高速缓存条目可具有可变大小。如上所述,高速缓存条目可与客户端的逻辑地址关联。逻辑地址与相应高速缓存条目之间的关联数据可通过固态存储设备114 (例如在元数据117中)来维护。高速缓存条目的数据可存储在固态存储设备的存储单元(例如页面、虚拟页面、擦除块和/或擦除块)内。或者,高速缓存条目的数据可穿过存储边界(例如存储在多个页面、虚拟页面、擦除块和/或虚拟擦除块上)。由固态存储设备维护的元数据可包括多个高速缓存条目,每个高速缓存条目均将逻辑地址与固态存储设备上的相应存储单元关联。这些关联数据可在映像或索引(称为“正向映像”或“正向索引”)中得以维护。如本文所用,正向映像或正向索引(或通常为索弓I)可指能够将高速缓存条目的逻辑地址(例如来自客户端的逻辑块地址)与固态存储设备的存储单元关联的任何数据结构。在一些实施方案中,所述索引可包括树数据结构,诸如B树等。树数据结构可包括通过逻辑地址或一组逻辑地址(例如作为范围和/或长度)来索引的高速缓存条目。因此,所述索引可称为范围B树或(通常为B树)。以下结合图11描述了包括多个高速缓存条目的数据结构的实例。正向索引可用于确定对应于逻辑地址的数据是否存储在固态存储设备上。例如,如果与所述地址关联的节点位于所述索引中,则该地址的有效数据在固态存储设备上可用;否则,如果无节点存在于所述索引中,则对应于逻辑地址的数据不会存储在固态存储设备上。所述元数据还可包括倒排索引,该倒排索引可通过其物理地址来索引存储单元(与正向映像中通过逻辑地址进行的索引相反)。因此,倒排索引可快速有效地查找特定存储单元和/或提供穿过固态存储设备的物理地址空间的顺序遍历。在一些实施方案中,倒排索引可链接至与正向索引相同的节点(叶节点)(例如,倒排索引可反映正向索引,不同的是叶节点通过与逻辑地址相反的物理地址来索引)。或者,倒排索引可包括单独的数据结构,诸如树、映像、阵列、表、位映像等。在一些实施方案中,倒排索引可提供存储单元与存储单元的元数据之间的关联数据,诸如有效性指示符、可丢弃性指示符(例如,存储单元的数据是否已存储在后备存储器上)、存储单元耗损均衡性、出错率、存取模式等。如本文所用,高速缓存清除元数据可指用于做出高速缓存清除(或保留)决策的元数据。高速缓存清除元数据可与高速缓存条目关联,并因此可通过逻辑地址来索引,这与 固态存储设备上的特定存储位置相反。尽管数据的物理存储位置发生变化(例如由于顺序存储操作的原因),但这也可使高速缓存清除元数据得到维护。高速缓存清除元数据可识别“热”、“温”和/或“冷”高速缓存条目。如本文所用,“热”、“温”和/或“冷”数据可指相对于其它数据而言具有特定存取和/或使用模式、物理空间关系的数据(换句话讲,一组数据的“温度”可通过相对于高速缓冲存储器中使用的其它数据而言物理地位于介质上或逻辑地位于逻辑地址空间中的数据来确定或可受这些数据的密切影响)。例如,“热”或“温”数据可指最近已存取和/或已以特定频率存取的数据(如高速缓存清除元数据所指示)。另一方面,“冷”数据可指未以特定频率在特定时间阈值内存取的数据等(也如高速缓存清除元数据所指示)。本领域中已知的各种不同技术和/或数据存取模式可用于识别“热”、“温”和/或“冷”数据,其中的任何数据均可根据本公开的教导来实施。另外,高速缓存清除元数据可包括高速缓存属性和/或指令。高速缓存属性可告知高速缓存管理;例如,“PIN”高速缓存指令可防止特定高速缓存条目从固态存储设备中清除,并且“BLACKLIST”属性和/或“FLUSH”指令可防止数据保留在高速缓冲存储器中。在一些实施方案中,固态存储设备可按顺序存储数据。如本文所用,顺序存储可指其中数据存储在一个或多个追加点处的异地存储方案。因此,当修改(或鉴于某种其它原因而重新存储)存储在固态存储设备上的数据时,可将这些数据存储在固态存储设备的不同存储单元上(例如,与重新写入原来存储所述数据的相同存储单元上相反)。顺序存储器也可指用于通过固态存储设备来维护存储元数据(例如基于日志的存储)的机构。存储元数据可使在固态存储设备上进行的存储操作的顺序得以重构或重放。存储元数据可包括存储分区时间戳、顺序指示符、包标题、正向和/或倒排索引等。例如,当对应于第一逻辑地址的数据存储在固态存储设备上时,可维护存入数据。所述元数据可包括在上文公开的正向索引(例如B树)中索引数据。例如,可将对应于逻辑地址的高速缓存条目添加至以下索引中,该索引可被配置为引用固态存储设备上的存储单元,所述存储单元包括对应于逻辑地址的数据。如上所述,逻辑地址可包括地址和长度或范围,和/或可包括一组逻辑地址。当客户端(或其它实体)修改数据时,可将修改的数据按顺序(例如“异地”)存储在固态存储设备上。因此,包括与逻辑地址关联的有效数据的存储单元可能会改变。可更新高速缓存条目以反映新存储单元,而旧存储单元可能无效(例如在倒排索引或其它数据结构中)。存储操作的此顺序可采用正向映像、存储在固态存储设备上的顺序指示符和/或其它存储元数据(例如倒排索引等)进行重放。其它顺序存储操作可包括但不限于存储分区恢复、无用单元收集、错误管理、虚拟存储管理、顺序存储(例如基于日志的存储操作)等。如本文所用,顺序存储操作可指上述任何存储操作。图I示出了系统100的一个实施方案,系统100包括客户端110a-c、被配置为作为高速缓冲存储器来操作的固态存储设备114、通信总线116以及后备存储器118。系统100可为存储区域网络(“SAN”)、网络附加存储(“NAS”),或客户端IlOa-C和后备存储器118及固态存储设备114的其它配置。客户端IlOa-C为对存储在后备存储器110中的数据进行存取的计算设备。客户端IlOa-C可为个人计算机,诸如桌上型电脑、工作站、服务器或其它特定类型的计算设备。作为另外一种选择或除此之外,客户端IlOa-C可包括在计算设备,诸如操作系统(OS)、文件系统(FS)、网络服务器、数据库服务器等上操作的进程或服务。
固态存储设备114可被配置为向客户端I IOa-C和/或后备存储器118提供高速缓存服务。将固态存储设备114用作高速缓冲存储器可提供许多不同的有益效果。例如,客户端IlOa-C从固态存储设备114读取并写入固态存储设备114的存取时间可能小于客户端IlOa-C直接从后备存储器118读取数据/将数据写入后备存储器118的存取时间,固态存储设备114使客户端IlOa-C更迅速地存取数据。在一些实施方案中,固态存储设备114可向客户端IlOa-C提供逻辑接口,该逻辑接口可包括超出固态存储设备114的物理存储容量的逻辑地址空间。所述逻辑地址空间可对应于后备存储器118的物理存储容量,这可使客户端与固态存储设备114进行透明交互(例如,好似客户端在直接访问后备存储器118)。作为另外一种选择或除此之外,固态存储设备114可提供超出固态存储设备114和后备存储器118的物理存储容量的逻辑地址空间(例如“稀疏”或“精简”逻辑地址空间)。所述逻辑地址空间可包括64位地址空间、32位地址空间或客户端IlOa-C采用的另一种寻址方案。固态存储设备114可采用逻辑到物理索引以将客户端IlOa-C的逻辑地址映射到固态存储设备114上的存储单元,这可删除由客户端IlOa-C实施的冗余转换层,简化客户端IlOa-C对存储设备114和118的访问,和/或向客户端IlOa-C提供灵活的存储基础结构(例如“稀疏”或“精简配置”存储服务)。固态存储设备114可包括固态存储控制器115,其可被配置为维护与存储在固态存储设备114上的高速缓冲存储器有关(和/或与设备114上的高速缓存操作有关)的元数据117,以及与在固态存储设备114进行的存储操作有关的存储元数据、固态存储设备 114上的存I储单元的状态等。所述元数据可包括有效性映像和可丢弃性映像。有效性映像可识别固态存储设备114的存储单元,所述存储单元包括有效数据(与客户端IlOa-C的逻辑地址关联的最新数据)。因此,有效性映像可包括上述正向索引。无效性映像可来源于有效性映像(例如未位于有效性映像中的所有存储单元可被识别为包括无效数据)和/或可在单独的数据结构(诸如倒排索引等)中得以维护。可丢弃性映像可识别已存储在后备存储器118上的高速缓存条目存储单元。固态存储设备114和/或控制器115可包括高速缓存管理装置130,其可响应于客户端存储请求而使用元数据来识别高速缓存条目。在一些实施方案中,高速缓存管理装置130可采用装置驱动程序(例如Linux装置驱动程序)来实施。
虽然图I示出了一种固态存储设备114,但系统100的其它实施方案可包括用作客户端IlOa-C的高速缓冲存储器的多种固态存储设备114。在一些实施方案中,高速缓存管理装置130可在所述系统中的每个固态存储设备114上实施。在其它实施方案中,高速缓存管理装置130可分布在系统100中的整个固态存储设备114上。固态存储设备114用作后备存储器118的高速缓冲存储器。在一些实施方案中,固态存储设备114和后备存储器118通过通信总线116连接。通信总线116可为局部通信总线(例如计算机系统的通信总线)、分布式总线、局域网(“LAN”)、广域网(“WAN”)或其它类型的通信网络,或者可采用各种协议来实施。在一些实施方案中,固态存储设备114直接附接至后备存储器118。固态存储设备114和后备存储器118也可通过总线连接。固态存储设备114可被配置为用作基本上与后备存储器118同时查看数据存取请求的后备高速缓冲存储器。在其它实施方案中,固态存储设备114被配置为用作在后备存 储器118之前查看数据存取请求的搁置高速缓冲存储器。在一些实施方案中,如果固态存储设备114为搁置高速缓冲存储器,则固态存储设备114将数据存取请求传到后备存储器118,其前提是固态存储设备114上的试图存取为缺失。固态存储设备114也可作为回写高速缓冲存储器来实施。在一些实施方案中,当前高速缓存模式可用于由固态存储设备114维护的元数据中。高速缓存模式可通过客户端IlOa-C经由存储接口、改进的存储接口等进行改变。元数据还可指示高速缓存属性(诸如PIN、BLACKLIST等)和/或高速缓存指令(例如FLUSH)。高速缓存属性和/或指令可存储在由固态存储设备114维护的元数据中,以供高速缓存管理装置130和/或固态存储控制器115存取。后备存储器118可向客户端IlOa-C提供存储,客户端110a_c从后备存储器118读取数据并将数据写入后备存储器118。后备存储器118可包括一个或多个非易失性存储设备,诸如固态存储器、硬盘驱动器、磁带、一些其它非易失性数据存储介质或前述实例的组合。在一些实施方案中,后备存储器118或后备存储器118中的至少某些存储介质可具有低于固态存储设备114的访问和/或吞吐量性能。在一些实施方案中,系统100在计算设备内实施。例如,固态存储设备114可附接至计算设备(诸如桌上型电脑)的主板,并且用作后备存储器118 (即硬盘驱动器)的高速缓冲存储器。计算设备的CPU可使用固态存储设备114来读取和写入数据,并且利用固态存储设备114的较快读取/写入时间(与后备存储器118相比)。在一些实施方案中,系统100也包括附加固态存储设备114。例如,系统100可采用多层高速缓冲存储器,其具有以高速高速缓存层次结构组织的多个固态存储设备114。图2示出了系统200的一个实施方案,系统200示出了由固态存储设备114提供的逻辑和物理存储空间。系统200示出了作为系统200的部件的文件系统210。文件系统210为在物理计算设备上操作的逻辑实体。在一些实施方案中,文件系统210可在图I的客户端IlOa-C之一上实施。文件系统210存储和组织计算机文件以及系统200中的数据。在许多实施方案中,文件系统210将存储块组织到文件和目录中,并且追踪属于所述文件的块。虽然图2示出了文件系统210,但本公开不限于该方面且可结合本领域中已知的任何存储客户端使用,这些存储客户端包括但不限于数据库、服务器(例如网络服务器、存储服务器等)、应用程序、用户等。在一些实施方案中,后备存储器118提供了物理存储空间,其上的数据实际上通过文件系统210来存储。后备存储器118可提供的空间量可根据系统200而大不相同;台式计算机通常为500GB,而分布式存储系统(诸如存储区域网络(SAN))中可提供太字节(“TB”)或拍字节(“PB”)的后备存储器118。通常,后备存储器118由为块存储设备的存储设备构成;然而,其它类型的后备存储设备可用于后备存储器118中。固态存储设备114可具有预定物理存储容量。在一些实施方案中,固态存储设备114可逻辑和/或物理分区,使得固态存储设备114的物理空间的一部分专门用作后备存储器118的高速缓冲存储器,并且固态存储设备114的一部分被配置为作为存储器(例如后备存储器118的一部分,或其它存储服务)来操作。例如,可将固态存储设备114格式化,使得200GB的物理空间专门用作高速缓冲存储器,而剩余的120GB被视为后备存储器118的一部分。在一些实施方案中,固态存储设备114向文件系统210提供与后备存储器118的物理空间具有相同大小的高速缓存逻辑空间220,而与固态存储设备114的物理大小无关。例如,可将固态存储设备114格式化至与后备存储器118具有相同大小。在典型实施方案中,后备存储器118的物理存储容量(例如1PB)大于固态存储设备114的物理存储容量(例如 80GB)。在一些实施方案中,固态存储设备114可向文件系统210提供大于后备存储器118(以及固态存储设备114本身)的物理空间的逻辑地址空间220。用户可能能够将物理空间添加至后备存储器118,而无需改变高速缓存逻辑空间220的大小。固态存储设备114可采用正向映像来维护设备114和/或后备存储器118中的逻辑地址与“稀疏”或“精简配置”存储单元之间的关联数据,如上所述。在一些实施方案中,当固态存储设备114和/或后备存储器118的占用率超出阈值时,固态存储设备114可被配置为请求附加存储空间(例如附加后备存储器118)。固态存储设备114可提供接口,客户端(例如文件系统210)通过该接口可发出查询以确定固态存储设备114、后备存储器118的实际物理容量;剩余存储容量;当前占用率(例如当前存储在固态存储设备上的有效数据量)等。所述接口还可提供对客户端(例如文件系统210)的调用,以请求存储容量、保留存储容量等。在一些实施方案中,固态存储设备114可根据后备存储器118的改变的物理存储来对高速缓存逻辑空间220的大小进行动态调整。例如,如果将新存储设备添加至后备存储器118中,则固态存储设备114可动态增加向文件系统210提供的高速缓存逻辑空间220的大小。在一些实施方案中,固态存储设备114可对文件系统210透明。文件系统210可能仅可查看通过固态存储设备114向其提供的高速缓存逻辑空间220。在一些实施方案中,固态存储设备114用作后备存储器118的控制器。因此,文件系统210将数据存取事件(诸如读取和写入请求)指向通过固态存储设备114向其提供的高速缓存逻辑空间220。文件系统210可能未意识到,其处理的固态存储设备114不具有与高速缓存逻辑空间220 —样大的物理存储空间。在一些实施方案中,固态存储设备114在RAID配置中将数据分段到后备存储器118。在一些实施方案中,固态存储设备114在RAID配置中可配置有其它固态存储设备。因此,固态存储设备114可采用稀疏映射的64位地址空间。在一些实施方案中,当文件系统210请求数据(例如读取请求)并向所请求的数据提供地址(诸如逻辑块地址、或LBA)时,固态存储设备114(和/或控制器115)可在由固态存储设备114维护的元数据117( —种索引,诸如上述正向索引)中查找该地址,并且如果与逻辑地址关联的数据在固态存储设备114上可用,则在相应存储单元上启动读取。如果所述数据未位于指定地址和/或逻辑地址未位于索引中,则固态存储设备114可产生错误。该错误可被解释为高速高速缓存缺失,这可通过从后备存储器118读取所请求的数据并将该数据高速缓存在一个或多个存储单元中的固态存储设备114来处理。高速高速缓存缺失还可包括更新元数据以引用逻辑地址(例如将叶节点添加至索引中)等。在其中固态存储设备114提供大于固态存储设备114的物理空间的高速缓存逻辑空间220的实施方案中,高速缓存管理装置130管理固态存储设备114以确保固态存储设备114不超出其物理存储容量。以下描述了在固态存储设备114提供较大的逻辑空间220时用于管理固态存储设备114的物理存储容量的示例性方法。在此类实施方案中,固态存储设备114可对文件系统210和寻求访问后备存储器118的其它实体透明。管理固态存储设备114并寻找数据的复杂性可从文件系统210中隐 藏。因此,文件系统210可能无需在固态存储设备114中检查待读取或写入固态存储设备114而非写入后备存储器118的数据。相反,文件系统210仅将数据存取在高速缓存逻辑空间220中,高速缓存逻辑空间220由固态存储设备114提供并且使得固态存储设备114透明地确定处理数据的最有效方式。构成高速缓存逻辑空间220的物理存储布置(即固态存储设备114及其与后备存储器118的关系)可从文件系统210中隐藏。另外,通过使固态存储设备114对数据高速缓存进行管理,高速缓存管理装置130可采用由固态存储设备114维护的元数据117来做出关于高速缓存维护的智能选择,所述元数据通常不可用于文件系统 210。图3示出了包括疏导器310和高速缓存管理装置130的固态存储控制器115的示例性实施方案。固态存储控制器115可耦合(例如直接经由总线或其它通信管道)至固态存储介质320。固态存储介质320可经由局部通信总线、网络总线、网络接线等耦合至控制器115。在一些实施方案中,固态存储设备114和/或控制器115可通信地耦合至多个固态存储介质320。固态存储介质320可包括可成排设置的一个或多个固态存储元件(未示出)。固态存储控制器115可能能够并行存取所述排中的一个或多个和/或固态存储设备114可包括多个固态存储控制器115。在描述的实施方案中,高速缓存管理装置130包括高速缓存控制器312和备份引擎314。疏导器310和高速缓存管理装置130可访问元数据117,元数据117尤其可包括存储元数据316 (其可包括有效性映像)和存储元数据318 (其可包括可丢弃性映像)。疏导器310和/或高速缓存管理装置130可作为固件、软件、硬件或它们的某种组合来实施。如图3所示,疏导器310和高速缓存管理装置130可在固态存储控制器115上实施。然而,本公开不限于该方面。例如,在一些实施方案中,疏导器310和/或高速缓存管理装置130可采用单独的控制器、处理器、FPGA等来实施。作为另外一种选择或除此之外,固态存储控制器115、疏导器310和/或高速缓存管理装置130可作为在固态存储设备114上操作的一个或多个驱动器来实施。疏导器310移动存储在固态存储介质320上的数据以作为维护操作的一部分,这些维护操作诸如存储分区恢复(例如擦除块恢复)、数据刷新操作、数据错误校正、错误处理等。疏导器310可以对文件系统210和后备存储器118透明的方式移动固态存储介质320中的存储单元之间的数据。例如,疏导器310可对作为固态存储设备114来操作的固态存储设备中的数据进行无用单元收集操作,以便收回固态存储设备114上的存储空间。疏导器310也可对在固态存储设备114中严重碎片化的文件消除碎化。2007年12月6日提交的名称为“Apparatus,System,and Method for Storage Space Recovery in Solid-stateStorage”的美国专利申请号11/952,101 (David Flynn等)描述了示例性疏导操作,该专利据此全文以引用方式并入。类似地,疏导器310可移动数据以便保护该数据免受读取干扰和/或作为耗损均衡操作的一部分。本领域的技术人员将意识到鉴于数据维护和空间维护目的而可能需要移动存储设备内的数据的其它疏导操作。与疏导器的操作有关的元数据,诸如经选择进行恢复的存储分区、有效性映像、存储分区出错率、存储分区耗损均衡性、存取模式等可在元数据117中(例如在存储元数据316中)得以维护。元数据117 (例如存储元数据316)还可包括索引,所述索引包括由存储客户端提供的逻辑地址与固态存储介质320上的存储单元之间的关联数据,与所述逻辑地址有关的有效数据存储在固态存储介质320上。如上所述,所述索引可包括B树,其包括通过逻辑地址来索引的长度和/或范围编码节点。 高速缓存控制器312协调存储客户端(诸如客户端110a-C、文件系统210或其它)与关于固态存储设备114的后备存储器118之间的数据交换。在一些实施方案中,高速缓存控制器312负责维护指定何时和如何将数据从固态存储设备114中清除的清除策略。在一些实施方案中,清除策略尤其可基于高速缓存清除元数据,该元数据可包括数据存取模式(例如数据是否为“热”、“温”、“冷”等数据)。清除元数据可对应于上次存取时间(最近最少使用的时间)、存取频率、高速缓存条目大小与存取时间和/或存取频率的比率等。在一些实施方案中,高速缓存清除元数据可包括可用于做出清除决策的高速缓存属性和/或指令。例如,PIN高速缓存属性可使关联数据保留在高速缓冲存储器中,即使该数据为“冷”数据。高速缓存指令(例如FLUSH指令)可使指定高速缓存条目从固态存储设备114中刷新。高速缓存属性和/或指令可通过存储客户端(例如客户端llOa-c)经由接口来提供。例如,固态存储设备114可提供接口,客户端通过该接口可指定数据保留在高速缓冲存储器(例如PIN属性)中,从该高速缓冲存储器中删除(例如BLACKLIST或FLUSH)等。在一些实施方案中,高速缓存清除决策可基于存储元数据316。如上所述,存储元数据316可包括将高速缓存条目与固态存储设备114上的相应存储单元关联的正向映像,每个高速缓存条目均包括相应逻辑地址(或逻辑地址组或范围)。索引可用于维护存取模式元数据与相应逻辑地址之间的关联数据(例如,树索引中的计数可追踪某些节点、边或叶的访问频率,以及操作类型(读取、写入、剪裁))。甚至在基础数据被移动至固态存储设备上时,也可保留这些关联数据(例如,在存储分区恢复操作期间响应于修改,从第一存储单元移动至第二存储单元等)。因此,在做出清除决策时,高速缓存控制器312 (或其它实体)可存取存储元数据316以获得相关存取模式元数据。在一些实施方案中,高速缓存清除策略可基于空间和/或时间接近性。空间接近性假定逻辑地址为“热”地址,则空间上接近的逻辑地址也可能为“热”地址(即使尚未对其进行存取)。高速缓存条目之间的“空间局部性”可在存储元数据316中得以维护(例如使用索引或正向映像)。如上所述,存储元数据316的正向索引可将逻辑地址与固态存储设备114的物理存储单元关联。所述逻辑地址可任意地映射到存储单元,并由于异地写入和其它顺序存储操作,数据的物理位置可随时间改变。因此,一同采用存储单元寻址来确定逻辑接近性可能不可行。高速缓存控制器312 (或其它实体)可存取存储元数据316,以识别用于做出清除决策的空间接近性(例如在逻辑地址空间中空间上接近“热”数据的数据可能次优选地被清除,而空间上不接近“热”数据的数据可能更优选地被清除)。在一些实施方案中,固态存储控制器115配置有在用于支持高速缓存的固态存储设备114上可用的最大物理存储空间量。管理员(或其它实体)在配置固态存储设备114时可提供该信息。在其它实施方案中,高速缓存控制器312独自发现最大存储空间量(例如通过识别固态存储设备114的物理存储容量)。最大占用率(和由此获得的阈值)可随时间改变。例如,固态存储设备114的某些存储位置可变得不可靠和/或失效,这可减少设备114的物理存储容量。因此可降低最大占用率。在一些实施方案中,这些减少可对客户端透明(例如,固态存储设备114可继续进行操作和/或向客户端提供相同的逻辑地址空间)。或者,发出告知客户端(例如客户端llOa-c)存储容量减少的通知。类似地,固态存 储设备114的物理存储容量可能增加(例如,在添加附加固态存储介质时)。占用率阈值可根据附加存储容量来调整。使用最大占用率信息,高速缓存控制器312可获得指定最大数据量的最大占用率阈值,高速缓存管理装置130可将该最大数据量高速缓存在固态存储设备114中。在一些实施方案中,最大占用率阈值未采用所有可用物理容量,相反可保留固态存储设备114的物理容量的一部分,以进行维护操作,诸如对损坏或不可靠的存储单元进行的存储空间恢复和/或代替。在一些实施方案中,高速缓存控制器312 (或其它实体)可动态确定最大占用率阈值。最大占用率阈值可基于元数据117,诸如数据存取模式等。例如,如果固态存储设备114包括大量“热”数据(如果将这些数据清除,可能会引起后续高速高速缓存缺失),则可动态减小占用率阈值。反之,如果固态存储设备114包括可清除且具有较低的后续高速高速缓存缺失概率的大量“冷”数据,则可增加最大占用率阈值。作为另外一种选择或除此之外,固态存储设备114可被配置为追踪元数据117中的高速缓存性能,以启发式地确定理想阈值。例如,最近清除的高速缓存条目的较高高速高速缓存缺失率可表明需要附加高速高速缓存空间(或应当调整高速缓存清除策略)等。或者,如果高速高速缓存缺失率较低,则可减小阈值,并且可鉴于其它目的来采用固态存储设备的过量存储空间(例如作为另一个后备存储器的高速缓冲存储器、作为存储空间等)。最大占用率阈值可例如为由固态存储设备114提供的存储量与软件占用的存储量或固态存储设备114使用和存储在其上的其它数据之差。在其它实施方案中,最大占用率阈值可为可用于固态存储设备114中的存储量的某个百分比。在一些实施方案中,根据性能标准诸如服务质量(QOS)属性等,通过固态存储设备114来确定最大占用率阈值。可根据要求、工作优先级或管理控制来动态修改最大占用率阈值。其它标准也可用于调整、调谐或以其它方式改变最大占用率阈值。在一些实施方案中,固态存储设备114可提供可设置占用率阈值的接口。作为另外一种选择或除此之外,所述接口可允许客户端设置可确定最大占用率阈值的一个或多个高速缓存属性和/或指令(例如QOS、PIN、BLACKLIST等)。在一些实施方案中,高速缓存控制器312查询元数据117以确定固态存储设备114上可用的剩余物理存储容量,从而确保固态存储设备114未超出最大占用率阈值。高速缓存控制器312 (或其它模块)可在每次将数据插入固态存储设备114之前使用元数据117来确定剩余物理容量。在其它实施方案中,高速缓存控制器312可根据固态存储设备114中保留的物理存储容量以不同频率进行该确定。例如,如果固态存储设备114可使其物理存储容量中超过一半的容量可用,则高速缓存控制器312在每次插入之前可能不会查询剩余物理存储容量;高速缓存控制器312相反可在进行确定之前等待直到已进行一定数量的高速缓存插入。随着固态存储设备114日益变满,确定剩余物理存储容量的查询的频率可增加至高速缓存控制器312在每次插入固态存储设备114之前查询的点。在一些实施方案中,一旦固态存储设备114达到如通过最大占用率阈值限定的最大占用率,则高速缓存控制器312防止对固态存储设备114进行任何高速缓存插入,直到附加存储容量可用。高速缓存控制器312可允许对固态存储设备114中的数据进行读取,甚至在固态存储设备114达到最大占用率时。固态存储设备114由此可确保固态存储设备114 未过满,并且为存储在固态存储设备114内的数据提供保护。在一些实施方案中,高速缓存控制器312也限定了限定固态存储设备114上使用的物理存储容量的目标占用率阈值。在一些实施方案中,一旦固态存储设备114已达到目标占用率阈值,则高速缓存控制器312可采取动作来提高将数据从固态存储设备114中清除的速率。在一些实施方案中,一旦达到目标占用率阈值,则高速缓存管理装置130仅开始将数据从固态存储设备114中清除。在其它实施方案中,当达到目标占用率阈值时,高速缓存控制器312可提高备份引擎314的优先级(例如,配置备份引擎314以作为前台进程来操作,或以其它方式增加分配给备份引擎314的优先级和/或相对带宽)。在此类实施方案中,备份引擎314作为后台进程来操作(例如,通过向备份引擎314提供较低优先级或较低带宽分配),直到达到目标占用率阈值。当前物理存储容量、阈值等可在元数据117中得以维护,以供高速缓存控制器312和/或疏导器310存取。如上所述,元数据117可包括存储元数据316,存储元数据316可包括有效性映像。如本文所用,映像可指将唯一键的集合与各个值关联的任何关联数据结构。在映像中查找唯一键可返回关联值。有效性映像可将固态存储设备114的存储单元与有效性指示符关联,所述有效性指示符指定与该单元关联的数据为有效或无效数据。有效性指示符可为有效性映像中的位,其中一种状态表示有效数据而另一种状态表示无效数据。有效性映像316可为位映像、表、列表或本领域中已知的其它数据结构。例如,有效性映像可为适于管理极大且可能群体稀疏的域(诸如地址空间)的数据结构,其包括仅有效或无效存储单元(和/或存储单元组或范围)的表示。例如,有效性映像可包括包括有效数据的各存储单元的条目的稀疏数组。无效性可来源于有效性映像(如果位置不位于有效性映像中,则位置为无效)或反之亦然。固态存储设备114的单元或存储单元可指固态存储介质320上的可寻址的物理存储单元。在一些实施方案中,元数据117可维护逻辑块地址(LBA)与存储单元具有一比一的比例;即一个LBA可与一个存储单元或单元关联。作为另外一种选择或除此之外,LBA(或索引节点)可与存储单元的长度或范围关联。在一些实施方案中,存储单元为通过固态存储介质320中的物理块地址(“PBA”)寻址的物理块,固态存储介质320可包括闪速存储器或其它非易失性存储介质。在另一个实施方案中,存储单元可指硬盘驱动器上的柱面磁头扇区(“CHS”)位置。存储单元的性质可根据固态存储设备114使用的特定存储介质而变化。固态存储设备114可同时支持多种类型的存储单元。在有效性映像316中标记为有效且与固态存储设备114的存储单元关联的数据可保留在固态存储设备114上,而与无效单元关联的数据(经标记和/或推断)可从固态存储设备114中删除。无效存储单元可为存储分区收回过程(例如无用单元收集)中用于删除的候选物。待恢复的存储分区中的有效数据可通过将有效数据写入固态存储设备114的其它存储分区而保留在固态存储设备114上。高速缓存元数据316可包括可丢弃性映像,其可包括位映像、表、列表或本领域中已知的其它数据结构。可丢弃性映像可将固态存储设备114的存储单元与可丢弃性指示符关联,所述可丢弃性指示符指定与该单元关联的数据是否可丢弃或不可丢弃。如果与所述单元关联的数据已存储在后备存储器118中,则其为可丢弃数据。如果与所述单元关联的数据未存储在后备存储器118中,则其通常不可丢弃。
在图3的实例中,存储元数据316和高速缓存元数据318在相同的数据结构(元数据117)中实施。例如,有效性映像和可丢弃性映像可在单个映像中实施,其中一位表示有效性并且二位表示可丢弃性。然而,在一些实施方案中,存储和高速缓存元数据316和318可作为单独的数据结构来实施。在此类实施方案中,一个数据结构的单次读取可确定特定存储单元的有效性状态和可丢弃性状态。例如,有效性指示符可为组合映像的一列,并且可丢弃性指示符可为组合映像的另一列。高速缓存管理装置130可包括备份引擎314,备份引擎314可被配置为使用元数据117来识别高速缓存条目以备份在后备存储器118上。备份引擎314可使在存储元数据316中标记为有效并且在高速缓存元数据318中标记为不可丢弃的存储单元存储在后备存储器118上。后备存储器118存储所述数据,使得可将其从后备存储器118中正确地检索出来。例如,备份引擎314可使用元数据117来识别标记为有效和不可丢弃的存储单元。与所述单元关联的数据可包括LBA和对应于该LBA的数据(如存储在固态存储介质320上)。备份引擎314可读取所述数据并且使该数据存储在后备存储器118上。因此,对于LBA而言,指向后备存储器118的未来读取请求正确地接收与该LBA关联的数据。在确定所述数据已成功存储在后备存储器118上之后,备份引擎314可将存储单元标记为可丢弃。在一些实施方案中,备份弓丨擎314作为固态存储设备114上的后台进程来操作。因此,备份引擎314可以低优先级运行并且仅消耗固态存储设备114上的备用周期和带宽。在一些实施方案中,高速缓存控制器312可提高备份引擎314的优先级或以其它方式将备份引擎314移动到前台中。在一些实施方案中,当固态存储设备114达到目标占用率阈值时,高速缓存控制器312提高备份引擎314的优先级。当固态存储设备114接近最大占用阈值时,高速缓存控制器312还可提高高速缓存控制器312的优先级。在一些实施方案中,一旦固态存储设备114达到最大占用阈值,则高速缓存控制器312向备份引擎314提供最高优先级,其前提是固态存储设备114中不存在标记为可丢弃的单元,或者在固态存储设备114中标记为可丢弃的单元不充足。在一些实施方案中,备份引擎314从固态存储设备114中与最早的数据关联的单元开始并且通过固态存储设备114中的单元按时间顺序进行备份操作,如结合图9更详细地讨论。如上所述,备份引擎314可能不会备份与在元数据117中标记为无效的存储单元关联的数据,而与相应的可丢弃性指示符的状态无关。一旦与存储单元关联的数据存储在后备存储器118中,则备份引擎314更新元数据117以将可丢弃性指示符从不可丢弃改变为可丢弃。在改变可丢弃性指示符之前,备份引擎314可等待后备存储器118来确认所述数据已成功存储在后备存储器118中。在一些实施方案中,备份引擎314可向疏导器310指示固态存储设备114的特定存储区已被备份且可丢弃。在相关实施方案中,备份引擎314可向疏导器310指示该存储区的寿命,从而能够使疏导器310收回该存储区,而无需任何进一步的数据移动。 元数据117可包括指示符(例如日志)以追踪固态存储设备114的存储单元中的数据的存储时间。所述元数据可包括将数据写入特定存储单元和/或从特定存储单元读取数据时的指示符。2007年12月6日提交的名称为“Apparatus, System, and Method forManaging Data Using a Data Pipeline” 的美国专利申请 No. 11/952,091 (David Flynn等人)描述了一种将数据连续地存储在固态存储设备内的方法,该专利据此以引用方式并入。在该设备中,将数据存储在存储单元中的顺序可在大多数情况下来源于存储设备中数据的顺序,从而与那些存储单元关联的数据的存储时间也是如此。在其中固态存储设备114连续地存储数据的实施方案中(如上述申请所述),高速缓存控制器312可根据将所述单元存储在固态存储设备114中的顺序和/或与存储单元的存储分区关联的顺序指示符来获得关于数据的存储时间的信息。在此实施方案中,高速缓存管理装置130可获得或估算数据的存储时间,而不会在内存和计算上产生维护单独的日志以追踪写入时间的关联费用。在一些实施方案中,元数据117可用于追踪固态存储设备114的特定单元中的数据的读取次数。元数据117也可包括发出那些读取时的指示符。该元数据117可通过固态存储控制器115、疏导器310或固态存储设备114的其它进程来维护。高速缓存控制器312可存取元数据117以追踪特定存储单元的上次读取的发出时间(确定最近最少使用的存储单元)。作为另外一种选择或除此之外,高速缓存控制器312可使用元数据117来追踪存储单元的存取模式,并且考虑存取频率或时限以确定特定单元是否包含热或冷数据。图4示出了存储客户端(例如文件系统210)、用作高速缓存设备的固态存储设备114和用作后备存储器118的硬盘驱动器之间的交互的示例性实施方案。所述系统上的其它变型以及其它介质也可在替代实施方案中实施。当文件系统210使数据存储在永久性存储器中(例如作为文件)时,其通常会确定待使用的一个或多个适当的LBA。文件系统210可从不具有与其关联的数据的可用LBA的池中选择LBA。例如,当文件系统210写入数据D时,文件系统选择LBA,诸如数据D的LBAO0文件系统将数据D写入用作固态存储设备114的固态存储设备。在一些实施方案中,如上所述,文件系统210与由固态存储设备114提供的逻辑空间进行交互,并且未意识到存在固态存储设备114。所述固态存储设备具有被初始化和备用的存储单元402。固态存储设备114可存储将LBA与固态存储设备114上的存储单元关联的元数据。存储单元402在固态存储设备114上可寻址;在一些实施方案中,存储单元402的地址为物理块地址(“PBA”)。在特定实施方案中,LBA与PBA在固态存储设备114中存在一对一映射。在元数据117中,存储单元402可与有效性指示符(由“有效”列表示)和可丢弃性指示符(由“丢弃”列表示)关联。在一些实施方案中,所述元数据可为“稀疏”元数据,其仅包括存在有效数据的条目。因此,有效性指示符可通过其包括在元数据117中来推断(例如如果LBA和/或存储单元位于该元数据中,则存储单元包括有效数据;否则,存储单元包括无效数据)。在一些实施方案中,存储单元402可通过将存储单元402的物理地址(例如PBA)用作键(例如在上述倒排索引中)来映射到有效性指示符和可丢弃性指示符。当固态存储设备114从文件系统210接收写入请求时,固态存储设备114选择将存储该请求中引用的数据的初始化单元(诸如存储单元402)。所述请求可包括所述数据,可包括所述数据的一部分和/或可基本上不含所述数据。如上所述,可根据顺序写入机构来选择存储单元402。例如,元数据117可维护引用“下一个”可用存储单元的一个或多个追加点(未示出)。因为数据被写入固态存储设备114,所以追加点可按顺序递增至固态存储设备114的下一个存储单元。该顺序写入尤其可提供耗损均衡有益效果并且可降低写入放大率。固态存储设备114将存储请求的数据(例如逻辑地址LBA 0和数据D)存储在选定的存储单元402中,并因此更新元数据117。更新元数据117可包括更新索引410以将LBA 0与存储单元402的引用(例如物理地址)关联。所述更新可包括将叶节点添加至B树或其它正向映像数据结构。所述条目可通过LBA(LBA 0)来索引,以能够快速有效地将LBA与存储单元关联。更新元数据117还可包括设置存储单元402的有效性和可丢弃性指示符。在图4中,这些操作以“SSD事件的添加行”列表示,该列显示了逻辑地址LBA 0,其与数据“D” (在正向和/或倒排索引中)关联,并且将存储单元402的有效性指示符设置为“I”(例如有效)且将可丢弃性指示符设置为“0” (不可丢弃)。可丢弃性指示符被设置为“0” (不可丢弃),因为数据D尚未被备份到后备存储器(例如硬盘驱动器)中,并且在未将数据D备份到硬盘驱动器的情况下将其从固态存储设备114中删除会导致数据丢失和/或损坏。如图4所示,客户端(例如文件系统210)可修改数据D。更新的数据可由D’表示。所述更新可包括文件系统210 (或某个其它实体)修改数据D (或进行对数据D进行修改的另一个操作)。文件系统210可发出存储请求,以将修改的数据D’存储在LBA O。在一些实施方案中,文件系统210意识到存在固态存储设备114 (非透明性高速缓冲存储器);在其它实施方案中,文件系统210未意识到固态存储设备114,并且更新请求通过固态存储设备114透明地处理。响应于存储请求,固态存储设备114可将修改的数据D’按顺序写入固态存储介质。如上所述,顺序存储可包括将修改的数据D’ “异地”存储在固态存储设备的不同存储单元。顺序写入尤其可提供耗损均衡有益效果,并且可降低写入放大率(例如,将修改的数据D’存储在相同存储单元402上可能需要擦除存储单元402的存储分区并且连同该存储分区上的其它有效数据一起写入D’ )。存储修改的数据D’可包括固态存储设备114选择“下一个”存储单元(存储单元404)以存储修改的数据D’。可根据上述顺序存储机构进行选择(例如可为一个或多个追加点上的“下一个”存储单元)。可更新与存储分区402有关的元数据117,以表明该数据不再有效,并且可丢弃(或处于无关状态)。可更新将逻辑地址与存储单元关联的元数据117,以将LBAO与选定的存储分区404关联。另外,可更新与选定的存储单元404有关的元数据,以表明存储单元404包括有效的不可丢弃数据。图4示出了更新I的数据D’被写入存储单元404,并且如前所述,有效性指示符被更改以表明单元404中的数据D’为有效和不可丢弃数据。疏导器310可在某个点查看单元402的有效性指示符,设法将其设置为无效,并且对单元402进行无用单元收集操作(GC I)。无用单元收集操作可使存储单元402回到初始化状态,此时单元402可再次用于存储数据。图4还示出了对单元404中的数据D’进行备份操作(BU I)的固态存储设备114。在一些实施方案中,备份引擎314进行所述备份。备份引擎314使数据D’以逻辑地址LBA0和数据值D’存储在硬盘驱动器中。备份引擎314可将通过数据D’来寻址LBA 0的写入请求发送至硬盘驱动器。在一些实施方案中,备份引擎314等待以下确认,在将丢弃性指示符从不可丢弃改变为可丢弃(设置为“I”)之前,硬盘驱动器已将D’成功保存在LBA O。硬盘驱动器可在LBA与数据D’的物理地址(例如LBA 0与特定CHS)之间进行其自身的内部关联。
在一些实施方案中,以对文件系统透明的方式进行备份操作;即,文件系统未意识到数据D’现位于固态存储设备114和硬盘驱动器中。类似地,可对文件系统进行透明的疏导操作,诸如GC I。图4示出了由文件系统210 (或其它实体)针对LBA 0生成的附加更新2,该更新将数据改变为D”。如同单元402,作为响应,固态存储设备114将单元404在元数据117中标记为无效。因为单元404被识别为无效,所以可丢弃性指示符可能会或可能不会改变;并且与可丢弃性指示符的状态无关,因为疏导器310将对单元404进行无用单元收集(在GC
2示出),并且单元404连同有效性映像和可丢弃性映像中的条目将被初始化使得单元404可再次用于存储新数据。更新2也使LBA 0和数据D”按顺序写入新单元406,这如上所述将有效性指示符设置为有效。因为数据D”未被移动至硬盘驱动器且未以其它方式存在于硬盘驱动器中,所以将可丢弃性指示符设置为不可丢弃。更新2还可包括修改元数据117的索引410,以将LBA 0与存储单元406关联。一旦备份引擎314将数据D”刷新至硬盘驱动器(如同所示)(BU2),则将可丢弃性指示符改变为可丢弃。文件系统也可向用作固态存储设备114的固态存储设备发出TRM命令。TRM命令使文件系统向固态存储设备(诸如固态存储设备114)告知不再使用的数据存储单元(逻辑块地址)。这确保了固态存储设备114知道在使用的存储单元和未使用的存储单元,并且确保了固态存储设备未保留文件系统知道不再需要和/或为无效的数据。目前将TRIM命令说明作为由技术委员会T13引导的AT嵌入式(“ATA”)接口标准的一部分而标准化。如图4所示,在一些实施方案中,文件系统确定删除与LBA 0(诸如文本文件)关联的数据D”并将LBA 0添加至可用池。文件系统(或其它实体)可将包括TRIM命令的存储请求发送至固态存储设备114。固态存储设备114接收TRIM命令,并且在一些实施方案中,通过无效SSD事件进行响应,该无效SSD事件将保存数据的受影响单元(诸如单元406)标记为无效。然后,固态存储设备114可在稍后的时间执行无用单元收集操作GC 3,从而恢复单元406以备将来使用。TRM还可包括更新元数据117的索引410以删除LBA 0的条目(例如将表示LBA 0的叶节点从B树中删除)。在一些实施方案中,用作固态存储设备114的固态存储设备可能不支持TRIM。在一些实施方案中,固态存储设备114和后备存储器118均可支持TRIM。在此类实施方案中,固态存储设备114可执行TRM命令,然后将TRM命令传至后备存储器118,如图4所示。在其它实施方案中,固态存储设备114和后备存储器118之一可支持TRIM,而另一个则不支持。在此类实施方案中,固态存储设备114和后备存储器118可被配置来使得其忽略TRM命令。在其它实施方案中,支持TRIM的设备可执行TRIM命令并从另一个中隐藏TRIM命令。在相关实施方案中,固态存储设备114可维护后备存储器118中的LBA已被剪裁的指示符,并且利用该信息来正确响应于客户端文件系统,即使HDD不支持TRIM。因此,例如,即使剪裁的LBA的数据仍然存在于硬盘驱动器上,试图将数据以剪裁的LBA存取在硬盘驱动器上的操作也会受固态存储设备114阻碍。固态存储设备114也可重写或以其它方式处理与HDD上的LBA有关的数据,以确保所述数据不可恢复。固态存储设备114可从文件系统和HDD的角度透明地进行这些操作。
图5示出了处理读取存取请求的系统的一个实例。如图5所示,文件系统可能已分配LBA I来保存数据A并且已存储该数据。图5示出了数据A与硬盘驱动器中的LBA I关联,但不存在于固态存储设备114中。文件系统210发出LBA I处的数据读取。在一些实施方案中,固态存储设备114接收读取请求,并且确定与LBA I关联的数据A未存储在固态存储设备114中(这被解释为缺失,如图5所示)。在一些实施方案中,固态存储设备114通过试图在与LBA I关联的单元上读取数据来确定数据A不存在于固态存储设备114中。固态存储设备114可例如试图使用元数据117 (具体地讲,索引410)来存取LBA I。如果LBAI在索引410中无条目,则固态存储设备114可产生可被解释为高速高速缓存缺失的错误。因为元数据117可通过LBA(在B树数据结构中)来索引,所以可迅速有效地进行该确定。响应于高速高速缓存缺失,固态存储设备114将读取请求重新指向存取LBA I处的数据A的硬盘驱动器。从硬盘驱动器中检索数据A并且使数据A返回到文件系统210。固态存储设备114的高速缓存控制器312也执行注入SSD事件(注入I),以将数据A连同逻辑地址LBA I 一起存储在选定的存储单元502中。固态存储设备114可更新元数据117,以将索引410中的LBA I与存储单元502关联。如图5所示,响应于读取2,固态存储设备114从单元502中检索数据A,因为读取2为高速高速缓存命中。固态存储设备114使数据A返回到文件系统210以作为对读取请求2的响应。固态存储设备114可迅速有效地确定对应于LBA I的数据在固态存储设备114上可用,并且使用元数据117(索引410)来识别包括所述数据的存储单元502。当数据A存储在单元502中以作为注入I操作的一部分时,固态存储设备114将有效性指示符设置为有效并且还将可丢弃性指示符设置为可丢弃,以反映数据A已正确地存储在硬盘驱动器中的LBAl中并与该LBA I关联。因此,可将数据A从固态存储设备114中删除,而不会造成数据损坏。例如,在固态存储设备114上操作的高速缓存管理装置可应用清除策略并确定应当清除数据A (例如根据存取模式、疏导考虑因素等)。因为可丢弃性指示符在元数据117中被设置为“1”,所以可进行清除,而无需在清除之前在单元502上备份。图5还示出了发出更新I的文件系统210,更新I将与LBA I关联的数据从A改变为A’。如前所述,固态存储设备114使用无效性映像将单元502标记为无效,并且疏导器310进行无用单元收集操作GC I以初始化单元502使得其可供将来使用。另外,固态存储设备114将LBA I和数据A’存储在新单元504中,并且将无效性指示符设置为有效且将可丢弃性指示符设置为不可丢弃。可更新元数据117的索引410,以将LBA I与存储单元504关联,如上所述。固态存储设备114在备份操作BU I期间将数据A’存储至硬盘驱动器并且将可丢弃性指示符设置为可丢弃。图5还示出了在清除SSD事件(清除I)中从固态存储设备114中清除的数据A’。在一些实施方案中,清除I操作对文件系统透明。固态存储设备114可清除数据A’,其前提是高速缓存控制器312确定该数据已变冷;例如,文件系统210在预定时段可能未读取数据A’。在一些实施方案中,高速缓存控制器312通过将有效性指示符设置为无效来清除数据A’。所述清除还可包括删除索引410中LBA I与存储单元504之间的关联。所述删除可表明LBA I的数据A’不再存储在固态存储设备114上。然后,固态存储设备114可对单元504进行无用单元收集,以将单元504设置回初始化状态。在其它实施方案中,固态存储设备114直接对单元504进行无用单元收集以作为清除进程的一部分,而非将单元504置于在清除I处示出的中间状态。在其它实施方案 中,即使数据A’被标记为有效,疏导器310也会清除数据A’以作为疏导操作的一部分,如以下更详细地讨论。图6示出了用于配置存储设备以作为固态存储设备114来操作用于后备存储器118中的方法600的一些实施方案。在一些实施方案中,方法600的步骤可与特定机器部件,诸如固态存储设备、固态存储介质、通信接口、处理器、存储器等相关。被配置为使机器实施方法600的机器可读指令可存储在非瞬时性机器可读存储介质上,诸如非易失性存储器、磁盘、光学介质等。在一些实施方案中,客户端IlOa-C通过文件服务器210与固态存储设备114通信。然而,本公开不限于该方面,并且客户端IlOa-C可直接地和/或通过其它进程或实体(诸如数据库服务器、网络服务器、存储协议等)与固态存储设备114通信。方法600从用户使固态存储设备114可用于系统100中602和使后备存储器118可用于系统100中604开始。在一些实施方案中,在步骤606,固态存储设备可被配置为提供与后备存储器118具有相同物理存储容量的逻辑地址空间。如果后备存储器118具有比固态存储设备114的物理存储容量大的物理存储容量,则固态存储设备114可被配置为支持稀疏编址,使得固态存储设备114可提供大于固态存储设备114上的物理可用空间的逻辑地址空间。例如,固态存储设备114可通过FUSI0N_SPARSEFS_SUPP0RT标志集来构建。在一些实施方案中,步骤606的配置可包括固态存储设备,该固态存储设备提供超出固态存储设备114和后备存储器118的物理存储容量的逻辑地址空间。在步骤608,通过使固态存储设备114和后备存储器118存在于所述系统中,固态存储设备114可被配置用作后备存储器118的高速缓冲存储器。方法600也可包括设置最大占用率阈值610,最大占用率阈值限定了可用作高速缓冲存储器的固态存储设备114上的最大物理空间量。外部实体(例如管理员)可将最大占用率阈值提供给固态存储设备114,或者高速缓存管理装置130可确定其本身的适当阈值。在步骤612,可如上所述来设置固态存储设备114的目标占用率阈值(例如通过实体和/或固态存储设备114),然后方法600结束。在一些实施方案中,高速缓存管理装置130试图将固态存储设备114中的占用率保持在目标占用率阈值以下。高速缓存管理装置130可通过在固态存储设备114超出目标占用率阈值时开始高速缓存清除做到这点。图7示出了用于将数据高速缓存在固态存储设备上的方法700的示例性实施方案。如上所述,方法700的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。方法700从固态存储设备114接收包括数据地址(诸如LBA)的读取请求702开始。在步骤704,方法700确定与所述地址关联的数据在固态存储设备114上是否可用。可使用由固态存储设备维护的元数据117来进行该确定;具体地讲,使用包括逻辑地址与关联存储单元之间的关联数据的索引来进行。如果所述地址存在于所述索引中,则方法700可确定所述数据可用,并且该流程可继续至步骤706 ;否则,该流程可继续至步骤710。 在步骤706,所请求的数据可存取在一个或多个存储单元上。所述存储单元可在上述索引中识别。在步骤708,可更新与存储操作有关的元数据,以反映数据存取。所述元数据可用于识别存取模式,诸如“热”和/或“冷”逻辑地址,确定存取时间等。在一些实施方 案中,存储元数据可存取在疏导器310中以进行存储分区恢复操作和/或可存取在高速缓存管理装置130中以管理高速缓存操作(例如确定清除策略)。然后可结束该流程。在步骤710,方法700将读取请求重新指向后备存储器118中的地址。高速缓存控制器312读取数据并使该数据返回到生成读取请求的实体712。高速缓存控制器312也将所述数据插入固态存储设备114中714并将该数据与指定地址(在索引或其它元数据中)关联。在一些实施方案中,按顺序和/或根据结合图8描述的写入方法写入所述数据。在一些实施方案中,如果固态存储设备114中不存在未使用的存储单元,则高速缓存控制器312不会将所述数据插入固态存储设备114中。高速缓存控制器312也可更新元数据(索引),使得未来读取请求可从固态存储设备114中检索所述数据,直到所述数据从固态存储设备114中删除。另外,高速缓存控制器312更新元数据117,以表明包括所述数据的存储单元有效且可丢弃。步骤716还可包括高速缓存控制器312更新存入元数据,以指示将所述数据插入固态存储设备114中的时间,然后方法700结束。在其它实施方案中,固态存储设备114可按顺序存储数据,并且数据的存储时间由其在固态存储设备114内的位置获得。图8示出了用于将数据高速缓存在固态存储设备上的方法800的示例性实施方案。如上所述,方法800的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。高速缓存管理装置130可将固态存储设备114配置为回写式高速缓冲存储器,其中数据首先被客户端写入固态存储设备114,然后被移动至后备存储器118。方法800从高速缓存管理装置130接收写入请求802开始。写入请求可引用待存储在永久性存储器中的数据。所述请求可包括所述数据和/或可基本上不含所述数据。写入请求可与逻辑地址(例如LBA)关联。高速缓存控制器312确定是否存在在固态存储设备114上可用的空间804。高速缓存控制器312进行该检查,以确保固态存储设备114不超出其最大容量阈值。在一些实施方案中,高速缓存控制器312在将数据写入固态存储设备114之前进行确定804。在其它实施方案中,如上所述,确定804的频率不同。所述确定可包括存取由固态存储设备114维护的元数据。所述元数据可包括将逻辑块地址与存储单元关联的索引。被有效数据占用的存储单元可能不可用于存储,而未被有效数据占用的存储单元可能可用。所述元数据还可包括可将固态存储设备114的存储单元与相应有效性/可丢弃性指示符关联的倒排索引。无效和/或可丢弃的存储单元可被视为可用于存储。如果存在可用于固态存储设备114的空间,则高速缓存控制器312将所述数据写入固态存储设备114的单元并将该单元标记为不可丢弃806。步骤806的写入可包括顺序存储操作,如上所述。顺序写入可包括选择存储单元来存储所述数据(例如使用追加点或其它顺序指示符),在选定的存储单元上写入所述数据,更新固态存储设备114的元数据以将写入请求的逻辑地址与选定的存储单元关联等。然后,备份引擎314可将所述数据备份到后备存储器118中使得所述数据存储在后备存储器118中808。将存储単元备份可包括更新固态存储设备的元数据,以表明这些存储单元可丢弃。备份引擎314可以选定的优先级操作,因此可等待直到有利时机后才使所述数据备份到后备存储器118中808。在步骤808之后,可结束方法800。如果固态存储设备114上的数据不存在空间,则高速缓存管理装置130暂停写入请求810,直到高速缓存管理装置130可为固态存储设备114中的数据留出空间。在其它实施方案中,一旦在固态存储设备114中产生足够的空间,则高速缓存管理装置130可使所述数据写入后备存储器118,并且进行致使所述数据插入固态存储设备114的读取操作。在暂停写入请求810之后,高速缓存管理装置130可确定在固态存储设备114中是否存在标记为可丢弃和/或无效(使用元数据117)的存储单元812。所述检查还可包括评估有效/可丢弃元数据的“无关”状态。在一些实施方案中,可保留不可丢弃存储单元,即使这些单元被标记为无效(例如可保留以进行快照、备份等)。如果存在可丢弃存储单元,则在ー些实施方案中,高速缓存管理装置130查找可丢弃单元并将其从固态存储设备114中清除820,并且返回以确定空间在固态存储设备114上是否可用804。高速缓存控制器312可例如将可丢弃的所有単元标记为无效。在另ー个实施方案中,疏导器310可疏导固态存储设备114,而无需将数据保存在标记为可丢弃的単元中。如果在清除之后,固态存储设备114上存在空间,则将所述数据存储在固态存储设备114中。如果固态存储设备114中不存在可丢弃存储单元,则高速缓存管理装置130可在高速缓冲存储器中查找在可丢弃性映像中标记为不可丢弃的存储单元814并且将所述单元备份到后备存储器118中816。在一些实施方案中,高速缓存管理装置130通过提高备份引擎314的优先级来做到这点。一旦所述数据被移动至后备存储器118,则高速缓存管理装置130更新元数据117以将所述单元标记为可丢弃818,并且查找可丢弃单元并将其从固态存储设备114中清除820。高速缓存管理装置130返回并再次确定空间在固态存储设备114上是否可用804以写入所述数据。图9a示出了对固态存储设备114的存储单元914至926进行备份操作的备份引擎314的示例性实施方案。图9a示出了各自具有关联的有效性指示符930a-g和可丢弃性指示符940a-g的存储单元914至单元926。有效性指示符930a_g和可丢弃性指示符940a-g通过数据结构(诸如包括高速缓存条目与存储单元的关联数据的映像)与相应单元914-926关联。图9a示出了处于初始状态的単元,并且图9b示出了在备份引擎314穿过单元914-926时的单元。、
在一些实施方案中,按顺序写入单元914至926中的数据;在此实施方案中,单元914至926在固态存储设备114上具有递增的物理地址。例如,单元914可具有物理地址“0”,単元916可具有物理地址“I”等。如果按顺序写入数据,则该数据被写入最低可用物理地址处。当文件系统开始将数据“A”写入固态存储设备114时,其通过物理地址O将数据“A”写入単元914,然后通过物理地址I将下ー个数据“B”写入単元916等。在此类实施方案中,固态存储设备114上数据的物理组织可被用作指示最早数据和最新数据的日志。例如,也许可以认为写入単元914的数据早于写入単元920的数据。在其它实施方案中,日志为完全地指定固态存储设备114中的数据相对于固态存储设备114中的其它数据的存储时间(即通过使用时间戳)的数据结构,或以上两种情況。在ー些实施方案中,固态存储设备114上数据的物理组织结合日志使用,以确定固态存储设备114中的单元的寿命。如图9b所示,在一些实施方案中,备份引擎314通过将数据刷新至后备存储器118来开始将数据备份在固态存储设备114中。在一些实施方案中,备份引擎314从固态存储 设备114中的最早数据开始并且按时间顺序穿过固态存储设备114中的存储单元914-926,直到其达到最当前的存储单元。在一些实施方案中,备份引擎314通过以下步骤做到这点按顺序穿过固态存储设备114中的存储单元914-926,将ー个单元中的数据备份到后备存储器118中,然后使物理地址递增以移动至下ー个单元。在其它实施方案中,备份引擎314通过引用由固态存储设备114维护的元数据(例如倒排索引和/或日志数据结构)按时间顺序穿过单元914-926。例如,备份引擎314可从倒排索引或日志中的単元条目开始,将数据备份,移动至下ー个条目,并且继续如此直到读取整个日志,此时备份引擎314可返回到结构的开始。在一些实施方案中,备份引擎314首先使用元数据(例如倒排索引或日志)来确定特定单元914-926的数据是否有效或无效,所述元数据可包括有效性指示符930a-g,如上所述。如果有效性指示符930a-g被设置为无效,则备份引擎314可选择不将所述数据备份在单元914-926中。例如,如图9b所示,备份引擎314可从单元914,即固态存储设备114中的最早単元开始,查看有效性指示符930a,并且看到该有效性指示符被设置为无效。因为有效性指示符930a被设置为无效,所以备份引擎314移动至下一个单元916,而无需备份与单元914关联的数据A。因为可丢弃性指示符940a在単元914被视为无效时未开始发挥作用,所以可丢弃性指示符940a可表示为“无夫”;即,当无效性指示符指示所述数据为无效时,该可丢弃性指示符的状态与备份引擎314无关。在图9b中,备份引擎314然后将有数据B的单元916存储在后备存储器118中。有效性指示符指示数据B仍然有效。在一些实施方案中,在确定数据B为有效之后,备份引擎314然后查看可丢弃性指示符940b以确定数据B是否已备份到后备存储器118中。如果可丢弃性指示符940b被设置为可丢弃,则备份引擎314移动至下一个单元918,而无需将数据B存储在后备存储器118中,因为数据B已存储在后备存储器118中。如果可丢弃性指示符940b被设置为不可丢弃,则备份引擎314可将数据B存储在后备存储器118中。在一些实施方案中,备份引擎314针对数据B启动指向后备存储器118的写入请求。在一些实施方案中,如前所述,所述数据包括该数据和与该数据关联的LBA。在此类实施方案中,备份引擎314可从单元916中的数据中提取LBA并且请求将数据写入后备存储器118中的该LBA。图9a示出了単元916中的数据B最初为不可丢弃。当数据B被写入后备存储器118时,备份引擎314更新元数据以将可丢弃性指示符940b改变为可丢弃(图9b中的“I”),如图9b所示。在一些实施方案中,备份引擎314等待后备存储器118确认,在改变可丢弃性指示符之前,数据B已成功备份。在一些实施方案中,如果备份引擎314在某个时段内未接收到确认,则备份引擎314进行重试以将所述数据保存至后备存储器118。当数据B成功备份到后备存储器118中并且可丢弃性指示符940b被设置为可丢弃时,备份引擎314移动至固态存储设备114中的下ー个单元,诸如单元918。如上所述,备份引擎314可确定单元918中的数据C为无效,并因此继续移动,而无需将数据C备份。然后,备份引擎314可将数据D备份在単元920中并且将可丢弃性指示符940d改变为可丢弃。在某些情况下,备份引擎314可能会遇到有标记为有效和可丢弃的数据C的単元,诸如单元924。如果可丢弃性指示符940f被设置为可丢弃(表明数据C已备份),则备份引擎314可移动至下ー个单元,而无需将数据C备份。在一些实施方案中,备份引擎314继续扫描固态存储设备114中的单元914-926。在其它实施方案中,备份引擎314完成对固态存储设备114中的单元914-926的循环遍历并且在开始第二次迭代之前等待一段时间。在一些实施方案中,备份引擎314用作固态存储设备114上的后台进程并且在备用周期(是否CPU周期、总线周期或其它)可用时操作。也可向备份引擎314提供设定时间表;例如,管理员可配置固态存储设备114,使得备份引擎314在某个时间(例如在流量低的夜间)进行备份操作。在一些实施方案中,备份引擎314将搜寻有效性和可丢弃性指示符以确定需采取动作的情况,并且将资源可用时待执行的备份活动和命令排队。例如,备份引擎314可查看图9的逻辑,但实际上未执行任何命令;相反,备份引擎314可确定特定単元可能需要的动作,将那些动作添加至列表,并且移动至下ー个单元。这样,备份引擎314可在其抓取固态存储设备114上的単元和关联映像时编译动作列表。另ー个进程可从上述列表中异步拉出动作和/或命令并且将其执行。备份引擎314可根据与所述存储単元关联的元数据117使备份操作优先化。例如,元数据117可指示包括不可丢弃数据的存储单元具有高耗损均衡性和/或高出错率。根据元数据117,备份引擎314可提高所识别存储单元的备份的优先级。提高所述优先级可包括在队列前面插入备份操作,跳过不可丢弃存储单元的其它备份等。在一些实施方案中,如上所述,高速缓存控制器312可提高备份引擎314的操作的优先级。例如,高速缓存控制器312可向备份引擎314提供最高优先级,其前提是固态存储设备114已满并且固态存储设备114中不存在标记为可丢弃的単元914-926(或単元914-926不够)。在一些实施方案中,当固态存储设备114开始填充并且固态存储设备114上的可用存储空间减少吋,高速缓存控制器312可逐步提高备份引擎314的优先级。在一些实施方案中,可在有利时机调用备份引擎314,以补充时间备份进程。备份引擎314可被配置为按时间顺序穿过固态存储设备114中将可用的単元,以在有利时机从 顺序中调用。例如,当数据被读取且备份资源可用时,固态存储设备114可调用备份引擎314以将该数据备份在一个或多个单元中。读取可通过存取所述数据的客户端来启动。读取可通过疏导器310来启动,同时进行无用单元收集,擦除数据,从损坏或失效的块中恢复数据,或进行其它疏导操作。读取可通过重复数据删除进程来启动。读取也可通过RAID重建或渐进RAID操作来启动,如2007年12月6日提交的名称为“Apparatus, System, and Method forReliable, High Performance Storage of Data with Progressive RAID” 的美国专利申请No. 11/952,115 (David Flynn等)中所描述,该申请据此全文以引用方式并入。备份引擎314可结合其它进程来运行以減少系统开销。本领域的技术人员将认识到有可能用于启动备份的其它进程。备份引擎314也可通过疏导器310来调用。在一些实施方案中,疏导器310调用备份引擎314以释放存储分区(例如固态存储设备114的擦除块)。例如,疏导器310可存取元数据117以确定特定存储分区包含大量不可丢弃数据并且这些数据为冷数据。疏导器310可调用备份引擎314来备份特定擦除块的单元,然后疏导该擦除块,以将新的可丢弃单 元视为好似它们无效,从而释放固态存储设备114上的空间。图10示出了使用与高速缓存操作有关的元数据来进行疏导的疏导器310的方法1000的示例性实施方案。如上所述,方法800的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。疏导器310可进行所述操作以执行图10中列出的决策,或者可调用其它程序或进程来卸载这些操作中的ー些或全部。方法1000从疏导器310访问存储分区以进行疏导操作1002开始。在一些实施方案中,疏导操作可为无用单元收集操作。在其它实施方案中,疏导操作可为数据移动(由于读取或写入干扰)、消除碎化、刷新或其它数据疏导操作。在一些实施方案中,在访问存储分区以进行疏导操作时,疏导器310使用元数据(例如有效性指示符)来确定固态存储设备114的哪些存储单元包含有效数据1004。在存储分区恢复操作中,被识别为在有效性映像中包含无效数据的那些存储单元中的数据未移动至新擦除块。因此,当初始化擦除块(例如写入所有页面的时间为Is)时,将无效数据擦除。然后,疏导器310存取元数据117以识别包含有效数据的存储单元是否包含可丢弃数据1006(例如使用可丢弃性映像)。在一些实施方案中,将被疏导器310确定为不可丢弃的那些单元移动至新存储分区1010以作为疏导操作的一部分,然后方法1000结束。疏导器310最初可将有效和不可丢弃数据移动至缓冲区,以准备将所述数据移动至新存储分区。在一些实施方案中,疏导器310也可调用备份引擎314以将所述数据备份在这些单元中,使得所述单元可丢弃。在一些实施方案中,疏导器310可调用备份引擎314并且暂停疏导操作直到备份引擎314将所述数据移动至后备存储器118。然后,疏导器310可在完成备份操作之后恢复操作,并且将新的可丢弃单元视为可丢弃数据。如果疏导器310确定特定単元可丢弃1006,则疏导器310可进行关干与可丢弃单元关联的数据是否可清除(例如为冷数据)的确定1008。可通过高速缓存管理装置130尤其使用与在固态存储设备114上进行的存储操作有关的元数据(诸如存取模式、频率等)来进行该确定。如果疏导器310确定所述数据可清除1008,则疏导器310不会将该数据移动至新擦除块1012,然后方法1000结束。如果疏导器310确定所述数据不为冷数据1008,则疏导器310将该数据移动至新擦除块1010,然后方法1010结束。在一些实施方案中,疏导器310可假定已备份并由此将可丢弃性指示符设置为可丢弃的所有単元均为冷单元。在此类实施方案中,在疏导操作期间未移动将可丢弃性指示符设置为可丢弃的所有単元。此实施方案可使疏导器310积极地收回固态存储设备114中的空间,并且在固态存储设备114处于或接近最大容量时可特别有用。另外,在其中备份引擎314按时间顺序进行备份操作的实施方案中,可以合理地假设到,至少从写入角度来看,被标记为可丢弃的単元包含冷数据,因为较早的数据比较新的数据更可能被标记为可丢弃。在其它实施方案中,疏导器310可使用元数据117来进行关于各存储单元是否可清除(按照高速缓存管理装置130的高速缓存策略等)的确定。在一些实施方案中,疏导器310进行关于各存储单元的可清除性确定并且类似地处理ー组连续的単元。例如,与逻辑地址范围(例如索引或B树中的特定节点)关联的一组存储単元可作为ー组来清除(或保留)。疏导器310可执行确定可清除性所需的指令,可咨询另一个实体(诸如高速缓存控制器312)关于哪些单元包含冷数据。
在一些实施方案中,高速缓存控制器312可存取与存储操作有关的元数据,以确定包含冷数据的存储单元和包含温数据的存储单元。在一些实施方案中,元数据117包括读取日志(或时间戳)以追踪存储单元(或逻辑地址)上的读取以及存储单元中的写入,并且在确定所述单元中的数据是否为冷数据中也考虑了这些读取。高速缓存控制器312可将位于日志开端的任何数据视为冷数据,并且一旦该数据被备份到后备存储器118中,则可将其清除。在一些实施方案中,高速缓存控制器312未将数据视为冷数据,直到达到目标占用率阈值。因此,虽然固态存储设备114的已使用存储低于目标占用率阈值,但高速缓存控制器312可选择不从固态存储设备114中清除任何数据。在此类实施方案中,备份引擎314仍然可对数据进行备份操作;然而,高速缓存控制器312可指示疏导器310以将使可丢弃性指示符设置为可丢弃的数据视为非冷数据,直到达到目标占用率阈值。一旦达到目标占用率阈值,则高速缓存控制器312可指示疏导器310来处理将可丢弃性指示符设置为可丢弃的数据。在一些实施方案中,高速缓存控制器312可具有用于确定数据是否为冷数据的多个标准。例如,高速缓存控制器312可将早于某个时段(例如4小吋)的任何数据视为冷数据和用于清除的候选物,而与固态存储设备114的占用率无关。一旦达到目标占用率阈值,则高速缓存控制器312也可具有用于将数据指定为冷数据的新规则,如上所述。在一些实施方案中,高速缓存控制器312根据參数来动态修改关于将哪些数据视为冷数据的规则。例如,高速缓存控制器312可以知道存在高写入工作量的时间,并且通过増加被视为冷数据的数据量(由此清除)来准备固态存储设备114,从而释放固态存储设备114上的空间。高速缓存控制器312可在每天结束时排空固态存储设备114,使得每天均以空的固态存储设备114开始。在一些实施方案中,高速缓存控制器312可指示备份引擎314将存储単元的数据备份到后备存储器118中(只有当该单元的数据为冷数据时)。高速缓存控制器312可采用与如上所述的那些类似的方法来确定冷数据。在此实施方案中,疏导器310可假定将可丢弃性指示符设置为可丢弃的所有単元均为冷单元。在一些实施方案中,来自不止一个存储単元的数据将成为逻辑数据单元的一部分。这些逻辑-存储单元关联数据可在元数据117中(例如在正向和/或倒排索引中)得以维护。例如,特定文件可能过大而不能存储在单个存储单元中;因此,该文件可存储在多个存储单元中,其中固态存储设备114中的存储单元各自对应于唯一的存储单元LBA。如果高速缓存控制器312可访问描述环境信息(诸如映像)的元数据,其中该环境信息指定LBA中的数据如何相关(由此指定各单元中的数据如何相关),则备份引擎314和高速缓存控制器312可以逻辑级来操作,以能够进行更有效的操作。例如,备份引擎314可备份特定单元的数据,确定固态存储设备114中是否存在将作为同一逻辑数据单元的一部分的内容保存的附加存储单元,并且同样备份那些存储单元。类似地,如果疏导器310确定特定存储单元包含有效、可丢弃和冷的数据,则疏导器310可使用环境信息来确定包含关联数据的其它单元。在一些实施方案中,疏导器310确保包含关联数据的存储单元也已备份并且将无效性指示符设置为无效。如果所述存储单元尚未备份,则疏导器310可调用备份引擎314将所述数据备份在关联单元中。
在一些实施方案中,固态存储设备114可能未访问使高速缓存管理装置130明确地确定固态存储设备114的各存储单元中的数据之间存在关联的环境信息。在一些实施方案中,高速缓存控制器312根据元数据117 (例如存储元数据316,诸如顺序存储日志)做出关于哪些单元构成一体的智能推測。例如,高速缓存控制器312可假定连续写入的ー组存储单元构成逻辑数据単元,诸如文件。类似地,高速缓存控制器312可假定一起持续读取的一组单元构成逻辑数据単元。然后,高速缓存控制器312可指示备份引擎314和疏导器310将该组单元视为逻辑数据单元,如上所述。在相关实施方案中,通常一起存取的多个文件和数据集可逻辑关联并且通过固态存储设备114作为ー组来操作。在一些实施方案中,一旦高速缓存控制器312确定ー组单元保存了构成逻辑数据単元的数据,则高速缓存控制器对备份引擎314进行管理,以确保所述单元一起备份。这些単元无需连续存储在固态存储设备114中。当以流提供数据时,多个硬盘驱动器和后备存储器118中的其它介质可更有效地读取该数据;因此,高速缓存控制器312可使固态存储设备114将所述数据从构成逻辑数据单元的単元中流向硬盘驱动器。类似地,高速缓存控制器312响应于高速高速缓存缺失可从后备存储器118中以流来接收数据。图11为包括共享元数据的示例性数据结构的示意性框图。索引1104可包括树(或其它数据结构),其包括多个高速缓存条目(例如节点1108、1114、1116等)。索引1104中的每个高速缓存条目均可将逻辑地址(或者逻辑地址范围或组)与固态存储设备(例如存储单元)上的一个或多个存储位置关联。存储单元可通过地址1117(例如,如条目1114中所述)或某个其它标识符来识别。索引1104中的高速缓存条目可具有可变长度,使得单个条目(例如条目1114)可引用ー组逻辑地址、逻辑地址范围等。这些逻辑地址可为连续的(例如072-083)。其它条目(诸如1118)可包括一组不连续的逻辑地址(例如逻辑地址454-477和535-598)。因此,索引1104可用于表示大小可变的高速缓存条目(例如,与固态存储设备114上包括任意ー组或一系列逻辑地址的数据的ー个或多个存储単元相对应的闻速缓存条目)。如图11所示,高速缓存条目可通过逻辑地址(使用边,诸如边1110)来索引,这可能能够实现快速有效的查找。包括逻辑地址“182”的高速缓存条目的示例性捜索可按如下进行。可在根高速缓存条目处启动搜索,该根高速缓存条目在图11的实例中为高速缓存条目1108。在单个逻辑地址(或地址范围)包括在特定高速缓存条目诸如根高速缓存条目1108中的情况下,如果搜索的逻辑地址(“182”)低于高速缓存条目1108的逻辑地址,则捜索可沿着定向边1110向下继续进行至高速缓存条目1108的左边。如果搜索的逻辑地址(“182”)与当前高速缓存条目1108(例如位于高速缓存条目1108的范围内)匹配,则成功终止搜索,同时识别当前高速缓存条目1108。如果搜索的逻辑地址1106大于当前节点1108的范围,则搜索沿着定向边1112向下继续进行至当前高速缓存条目1108的右边。如果高速缓存条目包括两个逻辑地址或地址范围(例如,如条目1118所示的不连续的一組)并且搜索的逻辑地址(“82”)介于列出的虚拟地址之间,则搜索沿着中心定向边(未示出)向下继续进行至具有介于当前节点1108的两个逻辑地址之间的逻辑地址的条目。搜索沿着索引1104向下继续进行,直到识别高速缓存条目或达到叶高速缓存条目,然后搜索失败。在图11的实例中,捜索成功终止于匹配的高速缓存条目1116处(例如,高速缓存条目1116包括搜索的逻辑地址“182”)。虽然在图11的实例中,索引1104采用由逻辑地址索引的B树数据结构来实施,但在其它实施方案中,索引1104可采用内容可寻址存储器(“CAM”)、ニ叉树、散列表或本领 域中已知的其它数据结构来实施。索引1104中的每个高速缓存条目均可将ー个或多个逻辑地址与固态存储设备114的相应存储单元关联。例如,条目1114可将逻辑地址范围072-083与存储单元95-106关联。本领域的技术人员将认识到,所述存储単元的物理地址可存储在索引1104中或可为固态存储介质的ー个或多个存储结构中的偏移。如上所述,条目1114的存储单元可由于对基础数据的修改(例如由于修改、恢复操作等)而改变。高速缓存条目还可包括和/或引用元数据1119,元数据1119可包括高速缓存清除元数据(例如高速缓存条目存取模式)、高速缓存条目存储时间、大小、高速缓存属性、高速缓存指令、存储元数据(例如存储单元1117的地址)等。因为元数据1119与通过逻辑地址(例如地址1115)来索引的高速缓存条目关联,所以元数据1119可与高速缓存条目1114关联,而与对基础数据的存储位置的改变(例如对存储単元地址1117的改变)无关。索引1104可用于有效地确定固态存储设备114是否包括客户端存储请求中引用的数据和/或识别该数据在设备114上的位置。例如,固态存储设备114可接收特定逻辑地址的存储请求1102。所述请求可指向后备存储器,或者可指向固态存储设备114。请求1102可指定逻辑地址和长度(例如从逻辑地址074开始,请求3个数据単元)。或者,请求1102可包括ー组逻辑地址、逻辑地址范围(连续或不连续的)等。固态存储设备114可采用搜索操作来确定与所请求的逻辑地址相对应的高速缓存条目是否可用于索引1104中,如上所述。如果包括所请求的逻辑地址的高速缓存条目存在于索引1104中,则固态存储设备114包括所请求的数据(高速高速缓存命中);否则,发生高速高速缓存缺失。在图11所示的实例中,对应于存储请求1102的高速缓存条目存在于索引1104(高速缓存条目1114)中,因此发生高速高速缓存命中。为了处理所述请求,可从高速缓存条目114中识别的存储单元1117读取数据并且将该数据返回到始发者或所述请求。如果发生高速高速缓存缺失(例如,所述请求引用不存在于索引1104中的逻辑地址),则固态存储设备114可从后备存储器118读取数据,将该数据存储在固态存储设备114上的ー个或多个存储単元中,并且在索引1104中创建新高速缓存条目。新高速缓存条目可根据其逻辑地址来索引,并且可引用包括所述数据的存储单元。如果高速高速缓存缺失引用与已存在于索引1104中的高速缓存条目接近的逻辑地址(例如引用地址084-088),则可进行合并操作。在合并操作中,现有高速缓存条目可与一个或多个其它高速缓存条目“合井”。例如,逻辑地址084-088的新高速缓存条目可与条目1114合井。所述合并可包括修改高速缓存条目的逻辑地址1115以包括新地址(例如072-088)和/或可修改存储单元1117以包括存储写入数据的存储单元。当发生部分高速高速缓存缺失时,可进行类似的操作。当索引1104包括所请求的数据的一部分而非全部时,可能发生部分高速高速缓存缺失。例如,存储请求1102可请求地址078-088。在这种情况下,条目1114可引用所请求的数据的一部分,而非所述数据的全部。为了处理所述请求,固态存储単元可读取在固态存储设备上可用的数据(例如直至逻辑地址083),并且通过后备存储器118存取剩余(例如缺失)的数据。从后备存储器读取的数据可存储在固态存储设备114上并且作为单独的高速缓存条目包括在索引1104中和 /或包括在高速缓存条目1114内。虽然示出了索引1104中的高速缓存条目包括对存储単元地址(例如地址1117)的引用,但本公开不限于该方面。在其它实施方案中,所述高速缓存条目包括对存储単元的引用或与其的间接连接。例如,所述高速缓存条目可包括存储单元标识符(或对倒排索引1122的引用)。图11的元数据还可包括反向映像1122,反向映像1122可识别包括与所述高速缓存条目的逻辑地址关联的数据的存储单元。反向映像1122可将存储単元与元数据,诸如有效性指示符1130、可丢弃性指示符1132和/或其它元数据1136关联(如下所述)。在一些实施方案中,存储单元地址1126和/或长度1128可明确地包括在反向映像1122中。或者,存储单元地址1126和/或数据长度1128可通过反向映像1122中条目(例如1120)的位置来推断,因此可能无需地址1126和/或数据长度1128。在一些实施方案中,反向映像1122可任选地包括对逻辑地址1134的引用。逻辑地址引用1134可使存取反向映像1122的实体迅速地存取与关联于存储单元的逻辑实体有关的元数据(例如索引1104中的特定高速缓存条目)。元数据1136可包括但不限干与在存储单元上进行的顺序存储操作有关的元数据。例如,元数据1136可包括可指示存储单元的存储顺序(例如以及存储单元的“寿命”等)的顺序指示符(例如时间戳)。所述元数据还可包括与存储介质有关的元数据,诸如耗损均衡性、可靠性、出错率、干扰状态等。如上所述,存储元数据可用于有效地实施高速缓存管理操作,诸如高速缓存清除决策、高速缓存数据移动(例如,如果“热”高速缓存条目的数据存储在可靠性较低的存储单元中)等。反向映像1122可根据固态存储设备114的存储分区(例如擦除块)来组织。在该实例中,对应于高速缓存条目1118的条目1120位于擦除块η 1138中。擦除块η 1138在擦除块η-11140之后,而在擦除块η+11142之前(未示出擦除块η_1和η+1的内容)。擦除块可包括预定数量的存储单元。擦除块可指固态存储设备114中在存储恢复操作中一起擦除的区域。有效性和/或可丢弃性元数据1130和1132可通过高速缓存管理备份进程和疏导器(例如存储恢复和维护)来共享。备份进程可采用反向映像1122以按时间顺序(从最旧至最新)循环遍历存储単元。备份进程可将有效和不可丢弃(如元数据1130和1132所指示)的存储单元备份到后备存储器中。备份进程可使用元数据1136来使备份优先化;例如,备份引擎可提高存储在不可靠、具有高耗损量等的存储单元上的数据的备份优先级,如元数据1136所指示。类似地,疏导器可使用元数据1130、1132和/或1136来进行顺序存储操作。例如,当恢复存储分区时,可能需要疏导器来将有效数据保留(例如重写)至下一个存储分区。然而,如果可丢弃性指示符1132指示所述数据可丢弃,则疏导器可选择恢复该数据,这可使得疏导器更有效地操作(例如降低写入放大率)。作为另外一种选择或除此之外,疏导器可使用逻辑地址1134的关联数据来存取高速缓存元数据(例如元数据1119),从而识别应当在存储分区恢复操作期间保留在固态存储设备上的存储单元(根据元数据1119,保留可丢弃数据,如果其为“热”数据)。疏导器可使用高速缓存元数据(例如元数据1119)以用于其它目的,包括但不限于进行数据刷新操作、进行数据移动(例如,将“热”数据从不可靠的存储单元移动至另一个存储単元)等。 通常,反向映像1122通过存储分区(例如擦除块)或擦除区域来设置,以便遍历与擦除块(例如擦除块η 1138)关联的映像的一部分,从而有效地做出存储恢复和/或刷新决策。将索引设置在可迅速搜索以识别物理地址1126与虚拟地址1106的正向映像1104中并且将索引设置在可迅速捜索以识别擦除块1138中的有效数据和有效数据量的反向映像1122中是有利的,因为可优化反向映像1122以进行捜索和存储恢复操作。本领域的技术人员将通过索引1104和反向映像1122认识到索引的其它有益效果。图12为用于将数据高速缓存在固态存储设备上的方法的一个实施方案的流程图。如上所述,方法1200的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。在步骤1210,可初始化固态存储设备以供使用。所述初始化可包括向固态存储设备(例如固态存储设备114),诸如通信接ロ(例如总线、网络等)分配资源,分配易失性存储器,访问固态存储介质等。所述初始化还可包括初始化共享元数据数据结构,诸如以上结合图11描述的数据结构,识别后备存储器设备(例如后备存储器118)和/或向一个或多个客户端(例如客户端llOa-c)提供存储接ロ。在步骤1220,固态存储设备可处理来自ー个或多个客户端的存储请求。所述存储请求可指向后备存储器(当固态存储设备被配置为透明地高速缓存数据时)和/或可指向固态存储设备本身。在步骤1230,固态存储设备可维护与所述存储请求有关的共享元数据(例如元数据117)。所述共享元数据可包括与在固态存储设备上进行的存储操作和/或固态存储介质有关的存储元数据(例如元数据316)。因此,所述存储元数据可包括逻辑地址与固态存储単元之间的关联数据、有效性映像、存储收回元数据(例如耗损均衡性、可靠性、追加点等)
坐寸ο在步骤1230维护的共享元数据还可包括与存储在固态存储设备上的高速缓冲存储器有关(例如与在固态存储设备上进行的高速缓存操作有夫)的高速缓存元数据。所述高速缓存元数据可将逻辑地址共享到存储元数据的存储单元索引。因此,所述共享元数据可包括具有多个高速缓存条目的索引(例如索引1104),每个高速缓存条目均将逻辑地址与固态存储设备的一个或多个存储単元关联。所述高速缓存元数据还可包括高速缓存清除元数据,诸如数据存取模式、高速缓存属性、高速缓存指令等(例如存储在图11的元数据1119中)。在步骤1230维护的元数据可包括索引(例如图11的索引1104)和/或倒排索引(例如图11的倒排索引1122)。在步骤1240,方法1200可存取共享元数据以对固态存储设备进行存储操作。顺序存储操作可包括但不限于进行顺序(例如异地)存储操作,维护逻辑-存储单元关联数据,维护存储单元有效性指示符,选择用于恢复的存储分区(例如无用单元收集),确定固态存储设备的当前占用率,在存储分区恢复操作期间选择要保留的存储单元等。在步骤1260,方法1200可存取共享元数据以管理存储在固态存储设备上的高速缓冲存储器。管理高速缓冲存储器可包括但不限干将存储分区备份到后备存储器中,维护高速缓存清除元数据,选择用于清除的高速缓存条目等。图13为用于将数据高速缓存在固态存储设备上的方法1300的流程图。如上所述,方法1200的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。在步骤1310、1320和1330,方法1300可被初始化,处理存储请求并且维护共享元数据,如上所述。在步骤1340,方法1300可存取共享元数据以管理固态存储设备的顺序存储操作。在步骤1342,方法1300可使用高速缓存元数据以选择用于恢复的存储分区。步骤1342可包括存取高速缓存元数据,该高速缓存元数据识别已存储在后备存储器上的存储单元(例如可丢弃存储单元)。存储分区的选择可基于待保留在存储设备(例如重写至另ー个存储位置)上的存储分区中的有效数据阈值。可使用可丢弃性指示符来确定有效数据量;如果存储单元为有效且可丢弃,则可在恢复操作期间将该存储单元擦除,而不会丢失和/或损坏数据。步骤1342还可包括存取高速缓存元数据,以确定存储单元是否与应当保留在固态存储设备上的高速缓存条目关联(例如根据清除策略或其它元数据)。例如,如果高速缓存条目为“热”条目(如果删除,可能会导致高速高速缓存缺失),则可在恢复操作期间保留该存储単元,即使其被识别为可丢弃。在步骤1344,方法1300可对选定的存储分区进行恢复操作。该恢复操作可存取高速缓存元数据(在共享元数据中)以进行恢复操作。该恢复操作可包括识别所述存储分区上的不可丢弃存储单元(使用高速缓存元数据),并且使识别的存储单元存储在另ー个存储分区上和/或使这些不可丢弃存储单元存储在后备存储器上。所述操作还可包括存取元数据,以识别与应当保留在固态存储设备上的高速缓存条目关联的存储单元(例如根据与这些高速缓存条目关联的高速缓存清除元数据)。识别的存储单元可存储在固态存储设备的另ー个存储分区上。在步骤1346,方法1300可进行数据疏导操作以刷新和/或管理存储单元(数据疏导操作也可包括存储恢复操作,如上结合步骤1342和1344所述)。该疏导操作可存取与高速缓存操作有关的共享元数据。例如,该疏导操作可识别与“热”高速缓存条目或具有特定高速缓存属性(诸如“PIN”属性)的高速缓存条目关联的存储单元(例如使用高速缓存清、除元数据)、不可丢弃的存储单元等。该疏导操作也可參考存储元数据,以根据存储分区耗损均衡性、可靠性(例如出错率)、读取干扰、寿命等来确定存储单元是否应当被移动至另一个存储分区。在步骤1360,方法1300可存取共享元数据以管理存储在固态存储设备上的高速缓冲存储器。在步骤1362,方法1300可选择存储单元以存储在后备存储器上。所述选择可基于写入存储单元的时间顺序(从最旧至最新),这可通过使用与在固态存储设备上进行的存储操作的顺序有关的存储元数据来确定。在一些实施方案中,所述选择可基于高速缓存清除元数据(例如存取模式,诸如存取频率等)。根据使用情况,可能不选择具有高修改率的高速缓冲存储器来进行备份,以便优化带宽的使用和进行备份的潜在成本。步骤1362的选择可包括存取有效性指示符;可能不会备份标记为无效的数据,而与其存储时间和/或可 丢弃性指示符无关。在一些实施方案中,步骤1362可包括使备份操作优先化。所述优先化可基于存储元数据,诸如存储分区耗损均衡性、可靠性、占用率等。例如,可将存储在不可靠(或高耗损)的存储分区(如存储元数据所指示)上的存储单元备份在存储在更可靠(或低耗损)的存储分区上的存储单元之前。在步骤1364,方法1300可尤其根据存储元数据来使存储分区的备份操作优先化。所述存储元数据可用于确定固态存储设备的当前占用率。备份操作的优先级可根据当前占用率来确定。当占用率较低(与占用率阈值相比)时,备份可被配置为在后台中进行。当占用率较高时,可提高备份操作的优先级(例如移动至前台中)。在步骤1366,方法1300可使用共享元数据(例如存储元数据)来识别用于清除的高速缓存条目。如上所述,高速缓存条目可与可包括存取模式、高速缓存属性、高速缓存指令等的高速缓存清除元数据关联。该元数据可与高速缓存条目数据有夫。然而,由于顺序存储操作(例如异地写入等)的性质,可能会丢失存储单元与高速缓存元数据之间的关联数据(例如当物理存储位置改变时)。然而,存储元数据可维护逻辑-存储单元关联数据(图11的高速缓存条目),这可保留高速缓存条目与其关联高速缓存清除元数据之间的关联数据,而与基础顺序存储操作(例如对高速缓存数据的物理地址的改变)无关。在另ー个实施方案中,存储元数据可维护逻辑-存储分区关联数据(图11的高速缓存条目),这可保留高速缓存条目与其关联高速缓存清除元数据之间的关联数据,而与基础顺序存储操作(例如对高速缓存数据的物理地址的改变)无关。步骤1366的识别可存取其它类型的存储元数据。例如,与存储在更可靠的存储分区上的类似条目相比,存储在高损耗和/或不可靠的存储分区上的高速缓存条目可优选地被清除等。在步骤1368,方法1300可使用共享元数据(例如存储元数据)来进行高速缓存维护操作。高速缓存维护操作可包括识别“热”高速缓存条目,并且使用存储元数据使“热”高速缓存条目移动至固态存储设备的另ー个存储分区。所述移动可鉴于耗损均衡目的来进行,以防止过度读取干扰等。可根据维护相关存储统计数据(例如读取计数、存储时间等)的存储元数据来进行选择,所述存储统计数据在存储单元、存储分区、虚拟存储分区或其它粒度级别处维护。
步骤1368的高速缓存维护操作还可包括移动具有一定寿命和/或未备份(例如为不可丢弃)的存储单元。不可丢弃的存储单元未存储在后备存储器上,因此如果丢失,可导致数据丢失和/或损坏。这些存储单元可从不可靠和/或高损耗存储分区中移动,以防止这种丢失。类似地,不可丢弃存储单元可从“热”存储条目的近侧移动,以防止读取干扰或其它条件引起的错误。图14为用于将数据高速缓存在固态存储设备上的方法1400的流程图。如上所述,方法1400的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。在步骤1410、1420和1430,方法1400可被初始化,处理存储请求并且维护共享元数据,如上所述。所述共享元数据可包括多个高速缓存条目,每个高速缓存条目均将逻辑地 址与包括高速缓存条目的数据的ー个或多个存储単元关联。在一些实施方案中,所述元数据可包括正向索引,诸如图11中示出的B树数据结构。在步骤1440,方法1400可接收特定逻辑地址处的数据请求。在步骤1450,方法1400可确定对应于特定逻辑地址的数据是否存储在固态存储设备上。在一些实施方案中,步骤1450可包括捜索共享元数据的正向索引。如果包括特定逻辑地址的高速缓存条目存在于所述正向索引中,则方法1400可确定数据可用,并且流程可在步骤1460处继续进行;否则,流程可在步骤1470处继续进行。在步骤1460,可处理存储请求。处理存储请求可包括存取在步骤1450处识别的高速缓存条目,以确定包括所请求的数据的ー个或多个存储単元。可读取这些存储単元,并且所得数据可返回到请求程序中。在步骤1470,可能发生高速高速缓存缺失。高速高速缓存缺失可通过将对应于特定逻辑地址的数据存取在另ー个数据存储器(诸如后备存储器118)中来处理。在步骤1472,所述数据可按顺序存储在固态存储设备上。在步骤1474,可更新元数据以表明该数据在固态存储设备上可用,并且在步骤1476,可向请求程序提供所述数据。步骤1474可包括将新高速缓存条目添加至元数据。新高速缓存条目可将特定逻辑地址与包括从后备存储器中读取的数据的存储单元关联。在一些实施方案中,步骤1474可包括更新现有高速缓存条目。特定逻辑地址可接近所述元数据中的逻辑地址。因此,并非添加単独的新高速缓存条目,而是可更新现有高速缓存条目,以包括特定逻辑地址并且引用包括从后备存储器中读取的数据的存储单元。如果特定逻辑地址介于两个或更多个现有高速缓存条目之间(例如填补高速缓存条目之间的间隙),则步骤1474的更新可包括合并这些高速缓存条目,以包括新的范围(例如原始高速缓存条目的逻辑地址和该特定逻辑地址),并且引用原始存储单元和包括从后备存储器中读取的数据的存储单元。在一些实施方案中,高速缓存条目可包括所请求的数据的一部分,而非所述数据的全部。在这种情况下,在步骤1470和1472,方法1400仅可读取和存储数据的缺失部分。在步骤1474,可添加新高速缓存条目以将特定逻辑地址与包括从后备存储器中读取的数据的存储单元关联。或者,步骤1474可包括更新现有高速缓存条目,如上所述。图15为用于将数据高速缓存在固态存储设备上的方法1500的一个实施方案的流程图。如上所述,方法1500的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。在步骤1510、1520和1530,方法1500可被初始化,处理存储请求并且维护共享元数据,如上所述。在步骤1540,方法1500可接收存储请求,以删除存储在固态存储设备上的数据。所述请求可通过逻辑地址来引用数据。在步骤1550,方法1500可确定对应于逻辑地址的数据是否存储在固态存储设备上,如上结合图14所述。在步骤1560,该方法可将所述数据从固态存储设备中删除。删除所述数据可包括从元数据中删除与逻辑地址关联的高速缓存条目和/或使该高速缓存条目的存储单元无效。如果所述高速缓存条目包括待保留在固态存储设备上的数据,则可将其更新以将该高速缓存条目与删除的逻辑地址和/或无效的存储单元取消关联。所述取消关联可包括分解高速缓存条目,如上所述。步骤1560可响应于TRM命令进行(例如通过方法1500经由存 储接ロ发出)等。在步骤1570,可将存储请求传至后备存储器,以使后备存储器删除数据。图16为用于将数据高速缓存在固态存储设备上的方法1600的一个实施方案的流程图。如上所述,方法1600的步骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。在步骤1610、1620和1630,方法1600可被初始化,处理存储请求并且维护共享元
数据,如上所述。在步骤1630处维护的元数据可包括将逻辑地址与固态存储设备的存储单元关联的正向索引。所述元数据还可包括有效性和/或可丢弃性元数据。在步骤1640,可使用共享元数据117(例如存储元数据316)来计算固态存储设备的最大占用率。存储元数据316可包括与固态存储介质有关的元数据,诸如出错率、可靠性、耗损均衡性等。存储元数据316可包括不再可用(由于不可接受的出错率或其它条件)的存储分区或存储单元的指示符。可通过从原始最大占用率(例如物理存储容量或其系数)中减去不可用存储分区来计算固态存储设备的最大占用率。随着存储单元由于损耗或其它错误条件而变得不可用,高速缓存数据可用的物理存储空间可类似地随时间改变。尽管由于不可用存储分区和/或存储单元的原因,可用物理存储容量減少,但固态存储设备可继续作为高速缓冲存储器来操作(提供相同大小或类似大小的逻辑地址空间)。可用物理存储容量的这种減少可继续存在,直到固态存储设备对高速缓存数据不再具有可用物理容量并且输入/输出速率类似于直接存取后备存储器的那些速率。在步骤1650,可使用共享元数据117来计算固态存储设备的当前占用率。在ー些实施方案中,当前占用率可被计算为包括固态存储设备上的所有有效数据。有效数据可通过遍历正向索引(例如图11的索引1104)来识别。或者,更积极的计算可包括仅计算有效的不可丢弃存储单元。在这种情况下,方法1600可假定可丢弃存储单元可从固态存储设备中删除,而不会造成数据丢失,并因此可被视为可用存储空间。在步骤1660,方法1600可向请求程序诸如备份引擎、疏导器、高速缓存管理器等提供最大占用率和/或当前占用率。在一些实施方案中,方法1600可提供超出后备存储器的地址空间的逻辑地址空间。在步骤1670,方法1600可处理与在后备存储器的逻辑地址范围之外的逻辑地址关联的存储请求。固态存储设备可处理将数据存储在固态存储设备上的请求。然而,所述数据可能未被备份到后备存储器中(因为其地址在后备存储器的逻辑地址的范围之外)。因此,与所述逻辑地址关联的高速缓存条目的存储单元可被标记为不可丢弃,并且可保持不可丢弃直到附加逻辑或物理后备存储容量可用吋。在一些实施方案中,步骤1670可包括请求附加后备存储器和/或发出已超出逻辑存储空间的通知。在本说明书中通篇对“一些实施方案”或“一个实施方案”的參考意指,结合实施方案描述的特定特征、结构或特性包括在本发明的至少ー个实施方案中。因此,在整个本说明书的各个地方中出现的短语“在一个实施方案中”或“在一些实施方案中”未必均涉及相同的实施方案。此外,ー个"实施方案"可为ー种系统、设备、制品、方法和/或进程。
短语“连接至”、“网络连接”和“与...通信”、“通信地耦合至”是指两个或更多个实体之间的任何形式的交互,包括机械、电气、磁性和电磁交互。两个部件可彼此连接,即使它们彼此并未进行直接物理接触并且即使这两个部件之间可能存在中间设备。可与本文所公开的实施方案一起使用的ー些基础结构已经可用,这些基础结构诸如通用处理器、程序设计工具和技术、非瞬时性计算机和/或机器可读存储介质以及通信网络和接ロ。计算设备诸如IED和/或监控设备可包括处理器,诸如微处理器、微控制器、逻辑电路等。处理器可包括专用处理设备,诸如ASIC、PAL、PLA、PLD、FPGA或其它处理设备。计算设备也可包括计算机可读存储介质,诸如非易失性存储器、静态RAM、动态RAM、ROM、CD-ROM、磁盘、磁带、磁存储器、光存储器、闪速存储器或其它非瞬时性机器可读存储介质。上述说明提供了许多具体细节,以充分理解本文所述的实施方案。然而,本领域的技术人员将认识到,可省略所述具体细节中的ー个或多个,或者可采用其它方法、部件或材料。在一些情况下,未详细示出或描述操作。虽然已示出和描述了本公开的具体实施方案和应用,但应当理解本公开不限于本文所公开的精确配置和部件。在不脱离本公开的精神和范围的情况下,可在本公开的方法和系统的布置、操作和细节中进行对本领域的技术人员显而易见的各种修改、改变和变型。
权利要求
1.一种用于将数据高速缓存在固态存储设备上的方法,所述方法包括 维护与在固态存储设备上进行的高速缓存操作和所述固态存储设备的存储操作有关的元数据; 存取所述元数据以管理所述固态存储设备的存储操作;并且 存取所述元数据以管理存储在所述固态存储设备上的高速缓冲存储器。
2.根据权利要求I所述的方法,其中与高速缓存操作有关的所述元数据和与存储操作有关的所述元数据存储在共享数据结构中。
3.根据权利要求I所述的方法,其中所述元数据包括识别所述固态存储设备的已存储在后备存储器上的存储单元的可丢弃性指示符,所述方法还包括 使用所述可丢弃性指示符来选择用于恢复的存储分区。
4.根据权利要求3所述的方法,所述方法还包括 使用所述元数据来识别所述选定的存储分区中的不可丢弃存储单元;并且 使所述不可丢弃存储单元的数据存储在所述固态存储介质的不同存储分区上。
5.根据权利要求I所述的方法,其中所述元数据包括高速缓存元数据,所述方法还包括使用所述高速缓存元数据来选择用于恢复的存储分区。
6.根据权利要求I所述的方法,其中所述元数据包括高速缓存元数据,所述方法还包括 识别所述高速缓存元数据指示应当保留在所述固态存储设备上的高速缓存条目的可丢弃存储单元; 使所述识别的可丢弃存储单元存储在所述固态存储介质的不同存储分区上。
7.根据权利要求I所述的方法,所述方法还包括 在所述元数据中存取高速缓存;并且 使用所述高速缓存属性来选择用于恢复的存储分区。
8.根据权利要求I所述的方法,还包括 接收包括与第一高速缓存条目关联的逻辑地址的存储请求,所述第一高速缓存条目弓I用所述固态存储设备的第一存储分区中的存储单元; 将所述存储请求的数据存储在所述固态存储设备的第二存储分区的存储单元中;并且更新所述元数据,以将所述高速缓存条目与所述第二存储分区中的所述存储单元关联,指示所述第一存储分区中的所述存储単元为无效,并且指示所述第二存储分区中的所述存储单元为不可丢弃。
9.根据权利要求I所述的方法,还包括 将数据存储在所述固态存储设备的第一存储单元上,所述数据对应于与所述元数据中的第二高速缓存条目的逻辑地址接近的第一逻辑地址;并且 修改所述第二高速缓存条目,以包括所述第一逻辑地址并且引用所述第一存储单元。
10.根据权利要求I所述的方法,其中所述固态存储设备可通信地耦合至后备存储器,所述方法还包括 提供包括所述后备存储器的容量的逻辑地址空间; 使用所述元数据来确定所述固态存储设备的当前占用率;并且 当所述当前占用率超出所述目标占用率阈值时,提高被配置为使不可丢弃存储单元存储在所述后备存储器上的备份引擎的优先级。
11.根据权利要求I所述的方法,还包括 提供超出后备存储器的逻辑地址空间的逻辑地址空间; 识别与在所述后备存储器的所述逻辑地址空间的范围之外的逻辑地址关联的存储请求;并且 维护与所述逻辑地址关联的高速缓存条目的存储单元的不可丢弃指示符。
12.根据权利要求I所述的方法,所述方法还包括 接收存储请求,所述存储请求引用与所述元数据中的第一高速缓存条目关联的第一逻辑地址和与所述元数据中的高速缓存条目不关联的第二逻辑地址;并且 通过将存储在所述固态存储设备上并对应于所述第一高速缓存条目的数据与从后备存储器中读取的数据结合来处理所述请求。
13.根据权利要求12所述的方法,还包括将高速缓存条目添加至与所述固态存储设备的存储单元关联的所述元数据,所述存储単元包括从所述后备存储器中读取的所述数据。
14.根据权利要求12所述的方法,还包括修改所述元数据,以包括包括所述第二逻辑地址的高速缓存条目并且引用包括从所述后备存储器中读取的所述数据的存储单元。
15.根据权利要求12所述的方法,其中所述存储请求的数据是不连续的。
16.一种用于将数据高速缓存在包括多个存储分区的固态存储设备上的方法,所述方法包括 将高速缓存数据按顺序存储在固态存储设备上; 维护与按顺序存储在所述固态存储设备上的所述高速缓存数据有关的高速缓存元数据;并且 存取所述高速缓存元数据以管理所述固态存储设备的顺序存储操作。
17.根据权利要求16所述的方法,其中所述高速缓存元数据与逻辑地址关联并且被索弓丨,而与所述固态存储设备上包括逻辑地址的数据的存储单元的地址无关。
18.根据权利要求16所述的方法,其中所述顺序存储操作包括根据所述存储分区是否包括已存储在后备存储器上的存储单元来选择用于恢复的存储分区,如所述高速缓存元数据所指示的。
19.根据权利要求16所述的方法,其中所述高速缓存元数据包括识别待保留在所述固态存储设备上的高速缓存条目的高速缓存元数据,所述方法还包括 使用所述元数据以在经选择用于恢复的存储分区中识别与待保留在所述固态存储设备上的高速缓存条目关联的可丢弃存储单元;并且 使所述识别的可丢弃存储单元存储在所述固态存储介质的不同存储分区上。
20.一种用于将数据高速缓存在固态存储设备上的方法,包括 在固态存储设备上进行的ー个或多个顺序存储操作中,将数据按顺序存储在所述固态存储设备上; 维护与所述顺序存储操作有关的存储元数据,所述存储元数据包括将存储元数据与所述固态存储设备的存储单元关联的倒排索引;并且 存取所述存储元数据以管理存储在所述固态存储设备的所述存储単元上的高速缓冲存储器。
21.根据权利要求20所述的方法,其中管理所述高速缓冲存储器包括根据所述存储元数据来选择用于清除的高速缓存条目,所述存储元数据指示包括所述高速缓存条目的数据的存储单元具有高耗损量、所述存储単元具有低耗损量和所述存储单元为不可靠中的一种。
22.根据权利要求20所述的方法,其中管理所述高速缓冲存储器包括根据所述存储元数据使存储在所述固态存储设备的第一存储单元上的高速缓存条目的数据存储在所述固态存储设备的第二存储单元上,所述存储元数据指示所述存储分区具有高耗损量、所述存储分区具有低耗损量和所述存储分区为不可靠中的ー种。
23.根据权利要求20所述的方法,其中所述高速缓存管理器根据所述存储元数据使存储在固态存储设备上的存储单元存储在后备存储器上,所述存储元数据指示所述存储分区具有高耗损量、所述存储分区具有低耗损量和所述存储分区为不可靠中的ー种。
24.一种用于将数据高速缓存在固态存储设备上的方法,包括 维护包括多个高速缓存条目的元数据,每个所述高速缓存条目均与逻辑地址关联并且引用固态存储设备上的可变数量的存储单元,所述存储単元包括所述高速缓存条目的数据,其中所述高速缓存条目通过逻辑地址在所述元数据中索引; 接收客户端存储请求,所述客户端存储请求包括逻辑地址;并且 使用所述高速缓存条目和所述逻辑地址来确定与所述客户端存储请求有关的数据是否存储在所述固态存储设备上。
25.根据权利要求24所述的方法,其中确定包括使用一组客户端逻辑地址中的ー个或多个将所述组客户端逻辑地址与选定的可变大小的高速缓存条目比较。
26.根据权利要求24所述的方法,其中响应于与所述客户端存储请求有关的数据未存储在所述固态存储设备上,所述方法还包括 将对应于所述客户端存储请求的数据存储在所述固态存储设备的ー个或多个存储单元中;并且 创建索引到所述客户端逻辑地址的新高速缓存条目,以表示所述可变大小的高速缓存条目。
27.根据权利要求24所述的方法,其中响应于与所述客户端存储请求有关的数据未存储在所述固态存储设备上,所述方法还包括 将对应于所述客户端存储请求的数据存储在所述固态存储设备的存储单元上;并且 修改高速缓存条目以引用所述客户端存储请求的所述逻辑地址和所述存储単元。
28.根据权利要求27所述的方法,其中修改所述高速缓存条目还包括 将所述高速缓存条目与所述元数据中的第二高速缓存条目合并,通过将所述高速缓存条目与所述第二高速缓存条目的所述逻辑地址和所述第二高速缓存条目的存储单元关联,所述第二高速缓存条目与在逻辑地址空间内接近所述客户端存储请求的所述逻辑地址的逻辑地址关联。
29.根据权利要求24所述的方法,其中所述客户端存储请求包括删除存储在所述固态存储设备上的数据,所述方法还包括删除与所述客户端存储请求中引用的所述数据关联的高速缓存条目并且将与所述高速缓存条目关联的存储单元标记为无效。
30.根据权利要求29所述的方法,其中所述客户端存储请求包括删除存储在所述固态存储设备上的数据,所述方法还包括将高速缓存条目分解成ー个或多个高速缓存条目,所述ー个或多个高速缓存条目省略对包括所述客户端存储请求中引用的数据的存储单元的引用。
31.根据权利要求24所述的方法,其中所述存储请求引用第一逻辑地址和非连续的第ニ逻辑地址处的数据,所述方法还包括 识别第一高速缓存条目,所述第一高速缓存条目引用包括对应于所述第一逻辑地址的数据的存储单元; 识别第二高速缓存条目,所述第二高速缓存条目引用包括对应于所述第二逻辑地址的数据的存储单元;并且 响应于所述客户端存储请求,提供通过所述第一高速缓存条目和所述第二高速缓存条目引用的所述存储単元的数据。
32.根据权利要求24所述的方法,还包括 访问包括所述固态存储设备的存储分区与客户端逻辑地址之间的关联数据的倒排索引;并且 使用所述倒排索引来提供所述固态存储设备的可用存储容量的指示。
33.一种计算机程序产品,其包括存储在非瞬时性机器可读介质上的指令,所述配置的指令使机器执行ー种用于将数据高速缓存在固态存储设备上的方法,所述方法包括 维护与在固态存储设备上进行的高速缓存操作和所述固态存储设备的存储操作有关的共享元数据; 存取所述元数据以管理所述固态存储设备的存储操作,所述存储操作包括使用与所述高速缓存操作有关的所述元数据来选择所述固态存储设备的用于恢复的存储分区;并且 存取所述元数据以管理存储在所述固态存储设备上的高速缓冲存储器,其中管理所述高速缓冲存储器包括使用与所述固态存储设备的顺序存储操作有关的所述元数据来选择所述固态存储设备的存储单元以备份到后备存储器中。
全文摘要
本发明公开了一种用于将数据用固态存储设备来高速缓存的装置、系统和方法。该固态存储设备维护与在固态存储设备上进行的高速缓存操作以及固态存储设备的存储操作有关的元数据。所述元数据指示高速缓冲存储器中的有效数据以及关于非易失性高速缓冲存储器中已存储在后备存储器中的数据的信息。备份引擎通过非易失性高速缓存设备中的单元来运行并且将有效数据备份到后备存储器中。在疏导操作期间,疏导器确定数据是否有效和数据是否可丢弃。可在疏导操作期间删除有效且可丢弃的数据。该疏导器也可确定数据是否为冷数据,以确定是否可从高速缓存设备中删除数据。该高速缓存设备可向客户端提供与后备存储器具有相同大小的逻辑空间。该高速缓存设备可对客户端透明。
文档编号G06F9/06GK102696010SQ201080050301
公开日2012年9月26日 申请日期2010年9月8日 优先权日2009年9月8日
发明者乔纳森·希尔达, 乔舒亚·奥纳, 凯文·B·维戈尔, 大卫·弗林, 大卫·阿特基森, 约翰·斯特拉瑟, 迈克尔·戴普 申请人:弗森-艾奥公司