混合储存集合块跟踪的制作方法
【专利摘要】提供用于操作混合储存集合的方法和设备。在一个实施例中,这样的方法包括将混合储存集合中的物理储存的第一层作为混合储存集合中的物理储存的第二层的缓存。物理储存的第一层包括多个被分配块。该方法还包括更新被分配块的元数据以响应与至少一个被分配块相关联的事件。元数据包括块使用信息,每块被分配块跟踪两个以上可能的使用状态。该方法可以进一步包括处理所述元数据,用以确定被分配块的缓存特性。
【专利说明】混合储存集合块跟踪
[0001]相关申请的交叉引用
[0002]本申请要求美国专利申请号N0.13/413,877,申请日为2012年3月7日的优先权,这里通过引用将该公开全部内容结合于此。
【技术领域】
[0003]本申请的多个实施例通常与运行数据存储系统的领域的相关。更具体地,本申请的多个实施例涉及在混合储存集合中分配存储空间的方法与系统。
【背景技术】
[0004]计算机和计算系统的普及导致了对电子数据的可靠及高效存储的需求不断增长。存储服务器是提供与数据的组织与存储相关的存储服务的专用计算机。由存储服务器管理的数据通常被储存于可写入的持久性存储介质,例如非易失性存储器和磁盘。存储服务器可以被配置为根据信息传递的客户端/服务器模型操作,使许多客户端或应用访问该系统提供的数据。存储服务器可以使用在文件级下运用随机和流媒体访问模式提供数据的存储架构,如附网存储(NAS)环境下,或在块级别下如在存储区域网络(SAN)下。
[0005]用于存储服务器的各种类型的非易失性存储介质可具有不同的延迟。访问时间(或延迟)是从存储介质中获取数据所需的时间。在很多情况下,数据被储存于具有相对高延迟的硬盘驱动器(HDD)中。在HDD中,磁盘访问时间包括磁盘启动时间、寻道时间、旋转延迟时间和数据传输时间。在其他情况下,数据被储存于固态硬盘(SSD)中。SSD相较HDD通常具有较低的延迟,因为SSD不存在操作HDD时固有的机械延迟。HDD通常在读取顺序存储在物理介质中的大块数据时具有较好的性能。但是,在随机访问时,HDD的表现也不佳,因为该装置的机械组件需要频繁地移动到介质上的不同物理位置。
[0006]SSD使用固态存储器,如非易失性闪速存储器以储存数据。由于没有移动部件,SSD通常在随机和频繁的访问中提供更好的性能,因为它们具有较低的延迟。然而,SSD通常比HDD更加昂贵,并且有时因为磨损或别的退化原因使其具有较短的运行寿命。这些额外的前期和更换成本对具有使用数千个存储装置的存储服务器的数据中心可以很大。
[0007]混合储存集合结合了 HDD和SSD的优点。存储“集合”是物理存储的逻辑集合体,即存储池的逻辑容器,它结合了一种或多个物理大容量存储设备或其零件成为单个逻辑存储对象,其包含或提供储存给一个或多个处于更高级别抽象的逻辑数据集(例如卷)。在一些混合储存集合中,SSD作为混合储存集合的一部分并提供高性能,而相对廉价的HDD构成存储阵列的剩余部分。在某些情况下,具有各种延迟的存储设备的其他组合也可被用于替代HDD和SSD或与HDD和SSD结合。这些其他存储设备包括非易失性随机存取存储器(NVRAM),磁带驱动器,光盘,及微机电(MEMS)存储设备。由于低延迟(即SSD)存储空间在混合储存集合中是有限的,与低延迟储存设备相关联的好处通过运用其存储访问最频繁的(即,“热的”)数据得到了最大化。剩下的数据被存储在较高延迟的设备中。因为数据和数据的用量随着时间改变,所以确定哪些数据是热的并且应被存储在低延迟的设备中就是一个持续的过程。将数据在高延迟和低延迟的设备中移动是一个多步骤地过程,需要更新指针和其他标识数据位置的信息。
[0008]更低的延迟存储通常被用作高延迟存储的缓存。在一些情况下,最频繁访问的数据副本存储在缓存中。当执行数据存取时,将会先检查更高速的缓存以确认所需要的数据是否存于其中,如果是的,那么数据将从缓存中被访问。在这样的模式下,缓存通过减少高延迟设备必须被访问的次数来减少了总的数据访问次数。在一些情况下,缓存空间被用于存储被频繁写入的数据(即,写缓存)。备选地,或额外地,缓存空间被用于存储被频繁读取的数据(即,读缓存)。对于读缓存和写缓存的管理与运作方法往往是不同的。
[0009]由于存储数据的数量、存储数据的种类、数据被访问频次以及其他的原因,对存储系统的需求往往会随着时间改变。存储系统的性能也通常会在这些变化的条件下发生变化。在混合储存集合的情况下,改变低延迟层的配置和/或分配通常对满足系统变化的需求是有帮助的。这允许低延迟层的有限的资源被动态分配,以满足存储系统变化的需求。例如,一个特定大小的读缓存,对于满足存储系统的需求来说曾经是足够大,而现在由于对系统的不断改变的需求,它可能不再足够大了。目前,虽然混合储存集合可以跟踪一个特定的块是否已被分配,但是它们不能跟踪充分的信息以使这些种类的分配决策最有效。
【发明内容】
[0010]混合储存集合的性能可通过动态分配可用的存储空间来提高。存储集合的低延迟层中可被存取的存储空间可被重新分配以满足系统变化的需求。跟踪有关低延迟层的块如何被使用的历史信息,对未来的关于如何使用低延迟层的可用空间的决策制定有所帮助。因此,跟踪混合储存集合中的详细的块使用信息将在此介绍。在一个例子中,这样的方法包括操作混合储存集合中的物理储存的第一层作为所述混合储存集合中的物理储存的第二层的缓存。物理储存的所述第一层包括多个被分配块。这样的方法包括更新所述被分配块的元数据以响应与至少一个所述被分配块相关联的事件。所述元数据包括块使用信息,所述块使用信息每块被分配块跟踪两个以上可能的使用状态,例如,跟踪每块不仅仅是“空闲”或“占用”状态信息。例如,该系统可以跟踪关于所述块如何被使用的信息,例如每个块被用于作为读缓存,写缓存或是被用于其他用途。所述方法也包括处理所述元数据以确定所述被分配块的缓存特性。
[0011]在另一个例子中,一个存储服务器系统包括处理器和存储器。存储器与处理器耦接,并包括一个存储管理器。所述存储管理器指示处理器操作一个混合储存集合,该集合包括物理存储介质的第一层和物理储存介质的第二层。物理存储介质的所述第一层具有相比所述物理存储介质的所述第二层的延迟较小的延迟。所述存储管理器指示处理器分配物理储存的所述第一层的多个块。所述被分配块的第一部分被作为物理储存的所述第二层的读缓存,所述被分配块的第二部分被作为物理储存的所述第二层的写缓存。所述存储管理器还指示处理器更新所述被分配块的元数据以响应与至少一个所述被分配块相关联的事件。其中所述元数据包括块使用信息,块使用信息每块被分配块跟踪两个以上可能的使用状态。所述存储管理器还指示处理器处理元数据以确定所述被分配块的缓存特性并基于所述缓存特性改变所述被分配块的分配。
[0012]在混合储存集合中,读缓存与写缓存常用来优化相关联的存储系统的性能。一部分存储集合的低延迟层中可用的数据存储块通常被用于作为缓存。这些被分配块可被用为读缓存、写缓存或者是结合起来。由于对存储系统的要求一直在变化,系统的性能可通过改变如何分配低延迟层的块而获得提升。在一个实例中,改变系统的使用是这样的,如果至少一个缓存的尺寸得到增大,可以整个系统的性能得到改善。与此同时,至少一个缓存的当前使用情况可以是,它的大小减小但是对存储系统的性能没有显著影响。这些类型的确定需要执行一个与构成这些缓存相关的块的使用情况相关的核算活动。这个核算涉及跟踪块的使用情况以及处理使用信息来确定块的使用特性。
[0013]低延迟设备中的可用存储空间可以被分配用于读缓存、写缓存或读缓存和写缓存的结合。此外,在用于存储多个卷的混合储存集合中,这些块可以被分配到不同的卷上。随着时间的推移,存储系统的使用模式和使用特性是这样的,例如低延迟层的块的不同的分配可能更适合并/或提供更好的系统性能。然而,目前混合储存集合并不跟踪低延迟层中正在使用的块的使用情况。目前混合储存集合跟踪低延迟层中的块是否被分配使用(即数据块是被分配还是未被分配)。在一些情况下,对于未分配的块的额外信息被追踪,以随着时间的推移平衡块的使用情况或者实现被选中块的回收算法。有关未被分配块的信息可被追踪以实施一个先进先出(FIFO)的使用模式,实施一个最近最少使用(LRU)算法,或实施其他的回收算法。然而,关于被分配块如何被使用的额外信息是不被跟踪的。这些不被跟踪的信息的例子如块被正在使用于的缓存类型以及块被访问的频次。没有这个信息,很难做出与如何改变块的分配以提高系统性能有关的策略性的决定。
[0014]这里介绍的技术通过跟踪每块低延迟层中的被分配块两个以上可能的使用状态解决了这些以及其他的一些问题。例如,与块相关的元数据被更新以指示这些块是如何被使用的。所述元数据包括指示每个块被用作读缓存、写缓存或其他用途的信息。元数据还包括其他类型的信息比如块被分配至哪个卷以及块被访问的频率。很多其他类型的使用信息也被包括在元数据中,并且这些提供于此的例子不是作为限制的。所述元数据可以被处理,以确定块分配将被如何改变。在一些实施例中,改变分配可以包括改变读缓存或写缓存的大小。在其他例子中,在混合储存集合的多个卷之间的块的分配可以被修改。
[0015]这些技术提供了对块如何被使用的更具体的分析的能力,并使得混合储存集合中的缓存随着操作环境和系统改变需要被动态分配。动态分配减轻了硬划分不易被改变的刚性。
[0016]本发明的实施例还包括其他的方法、具有各种组件的系统和非临时性计算机可读存储介质,它存储的指令在被一个或多个处理器执行的情况下,指示所述一个或多个处理器执行所述方法、方法的变形或其他在如本文所述的操作。虽然有多个实施例被公开,其它实施例通过下面的详细介绍,对于本领域的技术人员还是明显的,这些都将在示意性实施例中得到展现和说明。将被理解到的是,本发明可以在各个方面进行修改,且都没有脱离本发明的精神和范围。因此,附图和具体实施例都应被视为在本质上是具有示例性的而不是限制性的。
【专利附图】
【附图说明】
[0017]本发明的【具体实施方式】将使用附图进行描述和解释:
[0018]图1所示是本发明的一些实施例可以使用的操作环境。
[0019]图2所示是本发明的一些实施例可以使用的存储服务器系统。
[0020]图3A所示是混合储存集合中读取缓存的一个示例。
[0021]图3B所示是混合储存集合中写入缓存的一个示例。
[0022]图4所示是根据本发明的一个实施例的操作混合储存集合的一种方法的示例。
[0023]图5所示是对混合储存集合中存储块的分配。
[0024]图6所示是对具有多个卷的混合储存集合中存储块的分配。
[0025]附图不一定是按比例绘制的。比如,附图中的某些元件尺寸可以扩大或缩小以帮助对本发明实施例的理解。类似地,为了讨论本发明的一些实施例,一些部件和/或操作可以被分成不同的块或组合成一个单独的块。此外,虽然本发明可以修改为各种修改和替换的形式,具体的实施例将通过附图中例子的形式显示并在下面进行详细描述。但是这意图不是限制本发明于所述的具体实施例内。与此相反,本发明意在覆盖由所附权利要求限定的所有修改、等价物和替换,这些都在由所附的权利要求所限定的本发明的范围之内。
具体实施例
[0026]一些数据存储系统,诸如混合储存集合,包括由不同类型的具有不同延迟时间的储存设备组成的持久性存储空间。具有低延迟的设备通常提供更好的性能,但是通常具有成本和/或其他缺点。实现只有一部分采用低延迟设备的存储系统通常可以改善一些系统性能,而且是在不产生全部低延迟设备的高费用或是与整个系统全部采用低延迟存储设备相关的其它限制。系统性能的改善可以通过选择性地缓存那些访问最频繁的数据(即,热数据)储存于低延迟设备中。这种配置使得发生在更快的低延迟设备中的系统的读写操作数量最大化。在很多情况下,存储系统中的可用存储空间是在块级别被分配的。如在本文中所使用的,一“块”数据是一组长度已知的起始于一个特定地址值的连续的数据。在一些实施例中,每个块是4字节的长度。然而,这些块也可以是其它大小的。
[0027]低延迟存储设备的已被分配块通常可以用作存储系统的读缓存或是写缓存。如本文中所使用的,一个“读缓存”通常是指在存储系统的低延迟层中的至少一个数据块,它包含一个存储于存储系统中一个更高延迟的层中的“读的已缓存”数据的更高性能的副本。“写缓存”通常指位于较低延迟层的用于写入性能的至少一个数据块。写缓存块可以不具有包含存储在所述较高延迟层的对应的数据副本。此外,所述较低延迟层的块可用于其它目的。例如,较低延迟层的块可以用于存储元数据,用于对不包括在已分配存储空间中的特殊读缓存(如,未分配的读缓存),或用于其它目的。
[0028]图1所示是一操作环境100,其中一些在此介绍的技术实施例中也可以使用。操作环境100包括存储服务器系统130,客户端180A和180B,以及网络190。
[0029]存储服务器系统130包括存储服务器140,HDD 150A, HDD 150B, SSD 160A,和SSD160B。存储服务器系统130也可以包括其它设备或其它不同种类的存储部件,它们被用于管理、包含或提供访问数据或数据存储资源。存储服务器140是一个包括一个实现了一个或多个文件系统的存储操作系统的计算装置。存储服务器140也可以是一个服务器级的计算机,它提供与可写的、持久性存储介质的信息组织相关的存储服务给,可写的、持久性存储介质如 HDD 150A,HDD 150B,SSD 160A,和 SSD 160B。HDD 150A 和 HDD 150B 是硬盘驱动器,而SSD 160A和SSD 160B是固态驱动器(SSD)。
[0030]一个典型的存储服务器系统可以包括比图1所示更多的HDD和/或SSD。应当被理解的是,存储服务器系统130也可以通过使用了其它种类的持久性存储设备来替代或与HDD和SSD结合被实现。这些其它类型的持久性存储设备可以包括,例如,快闪存储器,NVRAM, MEM存储设备或它们的组合。存储服务器系统130还可以包括其它设备,包括一个用于访问和管理所述持久性存储设备的存储控制器。存储服务器系统130被示出为一个单块系统,但是可以包括分布在不同的地理位置的系统和设备。存储服务器系统130还可以包括额外的存储服务器,使用与存储服务器140相同或不同的存储操作系统进行操作。
[0031]存储服务器140管理存储在HDD 150A, HDD 150B, SSD 160A,和SSD 160B内的数据。存储服务器140也可以使客户端例如客户端180A和客户端180B访问储存在这些设备中的数据。根据本文所述的技术,存储服务器140还可以更新与被分配块SSD 160A和SSD160B相关联的元数据,所述元数据包括这些块如何被使用的信息。存储服务器140处理元数据以确定所述块的缓存特性。本说明书的教导可用于各种存储服务器架构,包括但不限于网络附加储存(NAS),存储区域网络(SAN)或直接连接到一个客户端或主机电脑的磁盘组件。所述术语“存储服务器”因此应包括这些广泛的安排方式。
[0032]图2所示是存储服务器系统200,其中在这里介绍的一些技术有关的实施例也可以使用。存储服务器系统200包括存储器220,处理器240,网络接口 292和混合储存集合280。混合储存集合280包括HDD阵列250,HDD控制器254,SSD阵列260,SSD控制器264和RAID模块270。HDD阵列250和SSD阵列260是持久性存储介质的异构层。HDD阵列250包括相对便宜同时较高延迟的磁存储介质,它使用磁盘和可机械移动到磁盘不同位置的读/写磁头。HDD 150A和HDD 150B是组成HDD阵列250的设备的例子。SSD阵列260包括相对昂贵同时较低延迟的电子存储介质340,它用非易失性的闪存器件阵列构成。SSD 160A和SSD 160B是组成SD阵列260的设备的例子。混合储存集合280也可包括其它种类不同延迟的存储介质。此处所描述的实施例不限于HDD/SSD的配置,也不限于只有两层持久性存储介质的实现。混合储存集合可能包括三层或更多层的存储层。在这些实现中,每一层都可通过层级的方式被操作为另一层的缓存。
[0033]混合储存集合280是HDD阵列250和SSD阵列260存储中的逻辑集合。在这个例子中,混合储存集合280是RAID组的集合,它可能包括一个或多个卷。RAID模块270将一个特定卷内的HDD和SSD组织为一个或多个奇偶校验组(例如,RAID组),并管理HDD和SSD内数据的位置。在至少一个实施例中,数据以逻辑容器,例如卷、目录和文件的形式被混合储存集合280储存。一个“卷”是一组与例如磁盘的大容量存储设备相关的存储数据的集合,它从(即,包含在)一个集合中获取其储存,并被作为一个独立的管理单元进行管理,例如一个完整的文件系统。每个卷可以以一个或多个文件、目录、子目录、逻辑单元(LUN)或其它类型的逻辑容器的形式包含数据。
[0034]RAID模块270根据一个或多个RAID实现来配置RAID组,以给一个或多个HDD或SSD的故障事件提供保护。RAID实现通过写入数据“条(stripe)”增强了数据存储的可靠性和完整性,该数据“条”穿过RAID组中的给定数量的HDD和/或SSD,该RAID组包括冗余信息(如奇偶校验)。HDD控制器254和SSD控制器264对分布在在各自阵列上的多个物理设备的数据采取低级别管理。RAID模块270采用HDD控制器254和SSD控制器264以响应HDD阵列250和SSD阵列260中的数据访问的请求。
[0035]存储器220包括由处理器240可寻址的、用以存储执行此处所述的技术的软件程序和数据结构的存储位置。处理器240包括电路,被配置用来执行所述软件程序和操做数据结构。存储管理器224就是这类软件程序的一个例子。存储管理器224指示处理器240在其它事项外,实现一个或多个文件系统。处理器240同时与网络接口 292相互连接。网络接口 292允许例如客户端180A和客户端180B这样的设备或系统从混合储存集合280中读取或写入数据。
[0036]在一个实施例中,存储管理器224实现提高混合储存集合280的读写性能的数据放置和数据布局算法。SSD阵列260中的数据块被分配用于存储数据。这些块可被用作读缓存、写缓存或用于其它目的。一般地,目标是用SSD阵列260中的块存储混合储存集合280中访问最频繁的数据。在一些情况下,经常被随机访问的数据块也可能被缓存于SSD阵列260中。在此解释的上下文中,涉及到一块数据时,术语“随机”访问,涉及这块数据是否与存储在与在存储介质中的该块数据在同一个物理环境中其它块中的数据一同被连同访问。具体地说,随机访问块是一种不与存储于与在存储介质中的该块数据在同一物理环境下的块中的数据连同访问的块。虽然访问的随机性通常对固态存储介质的性能几乎或没有影响,但是它对于基于磁盘的存储介质的性能影响很显著,因为机械驱动部件需要移动到磁盘的不同的物理位置。通过重新安置被随机访问的数据块至较低的延迟层,会带来显著的性能提升,即使所述块没有被访问得足够频繁可以衡量其为热数据。因此,访问的频率和访问的性质(即,访问是否是随机的)可以被一起考虑用于确定哪些数据应被置于较低的延迟层。
[0037]存储管理器224可以被配置为随着时间的推移修改SSD阵列260的块如何被分配和被使用以提高系统性能。例如,存储管理器224可以改变实施在SSD阵列260中的缓存大小,以提升系统性能或者更好地利用一些块。存储管理器224可以在没有系统管理员手动配置系统进行硬性分配的情况下动态修改这些分配。在一些情况下,硬性或固定分配可以不被使用,并且这些块在被使用时被进行分配。
[0038]图3A所示是一个混合储存集合中的读缓存的例子,例如混合储存集合280。读缓存是存储在较高延迟层中的数据块被创建在一个较低延迟层中的拷贝,并经常被读取的(即,该数据块是热度数据块)。在其它情况下,高延迟层中的块可以被读缓存,因为它常被随机读取。通过将被随机读取的数据块重新安置到一个较低延迟层,即使该块可能没有被读取得足够频繁可以达到热数据的程度,对于性能还是有很显著的提升。因此,访问的频率和访问的性质(即,访问是否是随机的)可以被一起考虑用于确定哪些数据应被置于较低的延迟层。
[0039]关于储存于混合储存集合中的文件的数据块的位置可以以缓冲器树的形式布置。缓冲器树是包含关于一文件的元数据的分层数据结构,所述元数据包括用于定位构成文件的数据块的位置的指针。这些数据块通常不储存在连续的物理位置上并且可能分布在存储阵列的不同的物理位或区域。随着时间的推移,一些数据块可能被移动到其它位置而文件的其它数据块则不被移动。因此,缓冲器树作为一个查找表来定位文件的所有块。
[0040]一个缓冲器树包括一个索引节点和一级或更多级的间接块,间接块包含引用较低级别的间接块和/或存储数据的直接块的指针。一个索引节点也可以存储关于文件的元数据,比如文件的所有者、文件的访问权限、文件大小、文件类型,除了直接块和间接块的指针。该索引节点通常存储与一个单独的索引节点文件中。索引节点是找寻所有组成文件的相关数据块的起始点。确定块的实际物理位置,可能需要通过索引节点和一级或多级的间接块。
[0041]图3A示出了两个缓冲器树,一个与索引节点322A相关联,另一个与索引节点322B相关联。索引节点322A指向或引用一级间接块324A和324B。每个间接块都指向存储数据的数据块的实际物理存储位置。在某些情况下,多层次的间接块都被使用。间接块可以指向另一个间接块,其中后者间接块指向数据的物理存储位置。间接块的额外层也是可能的。
[0042]图3A所示的数据块的填充图案表示数据块的内容。例如,数据块363和数据块383包含相同的数据。在之前的时间点,数据块363被确定为是热数据并且在SSD阵列370中创建数据块363的拷贝(即数据块383)。在间接块324B中与数据块363相关的元数据被更新,使读取数据块363的请求被指向数据块383。HDD阵列350在读该块时被绕过。相比从数据块363中读取数据,数据可以从数据块383中更快地被读取,因此存储系统的性能得到改善。通常有更多的数据将被包括在读缓存中。出于阐释的目的,只有一个块被示于图3A中。在该例子中,没有与索引节点322B相关联的数据块被缓存。
[0043]图3B所示的是混合储存结合中的写缓存的一个例子,例如混合储存集合280。在图3B中,数据块393是一个写缓存。数据块393的数据在先前被认定为相对于其它块来说具有高写入频率(即热数据),并且是写入SSD阵列370而不是HDD阵列360。当数据块393被写入SSD阵列370时,间接块324B被改变以指示数据块的新的物理位置。每一个后续的向数据块393的写入都被更快地完成因为所述块位于一个较低延迟的SSD阵列370。在这个写缓存的例子中,数据块393中缓存的数据的副本不保留在HDD阵列360中。也就是说,在图3B所示的写缓存的例子中,不存在与图3A中的数据块363相类似的数据块。该结构是优选的写入高速缓存,因为HDD阵列360中的数据块393的副本在数据块393被写入时同时被写入。这将消除或显著减少将数据块393存储在SSD阵列370中的性能上的好处。通常会有更多的数据块被包括在写缓存中。出于解释的目的,只有一个块被示于图3B。该例子中没有一个数据块与索引节点322B相关联被缓存。
[0044]图4示出根据本发明的一个实施例的操作混合储存集合的方法400。方法400在此相对于图2的存储系统200进行描述,但是方法400可以用于许多其它系统。方法400包括处理器240,其将混合储存集合280的物理储存的第一层操作为混合储存集合280的物理储存的第二层的缓存(步骤410)。在这个例子中,物理储存的第一层是SSD阵列260,物理储存的第二层是HDD阵列250。该物理储存的第一层包括多个已被分配使用的数据存储块。方法400包括处理器240更新这些被分配块的元数据以响应与至少一个所述被分配块相关联的事件(步骤420)。所述元数据包括块使用信息,每块被分配块跟踪两个以上可能的使用状态。方法400还包括处理元数据以确定所述被分配块的缓存特性(步骤430)。
[0045]步骤430中所确定的缓存特性可包括指示块被用作读缓存块或写缓存块的信息。所述缓存特性还可以包括指示块的读取频率、写入频率和/或块的温度信息。块的温度是块是否比预设的阀值读取更频繁的分类指示。例如,一块在指定期间的读取次数多于一特定次数的就可以被指定为一个“热”块,而在指定期间读取次数少于一特定次数的就可被指定为“冷”。块温度超过两个等级的分类也是可能的。缓存特性还包括块的分配信息。缓存特性还可以包括其它类型的关于指示被分配块在系统中如何被使用的信息。
[0046]在方法400的变型中,处理器240还可以基于所描述的至少一个缓存特性改变SSD阵列260中的被分配块的分配。例如,处理器240可以基于缓存特性增加或减少SSD阵列260中的读缓存或写缓存的大小。在多个卷存储于存储系统200的情况下,元数据可能基于每卷被分析,以确定分配到多个卷中的一个特定卷的被分配块的至少一个缓存特性。为响应该分析,多个卷中的被分配块的分配可以被改变。这可以包括改变读缓存和/或写缓存的相对于彼此的大小。换言之,卷与卷间缓存的大小可以基于分析而得到平衡。
[0047]图5示出了混合储存集合280中的存储块的分配。如前所述,混合储存集合280包括HDD阵列250和SSD阵列260。SSD阵列260的较低延迟存储设备被操作为HDD阵列250的较高延迟存储设备的缓存,以提升存储系统200的响应速度和性能。SSD阵列260中的一些存储空间也可以被用于其它目的,如存储元数据,缓冲器树,和/或存储包括系统管理数据在内的其它类型的数据。
[0048]SSD阵列260包括被分配块580和未被分配块570。被分配块580和未被分配块570不是物理上不同或是物理上分离的。它们的区别仅在于它们在混合储存集合280中是如何分类并且使用的。被分配块580已被分配用于存储数据,未被分配块570还未被分配使用。未被分配块570通常不能够被RAID模块270和/或SSD阵列260使用。在一些情况下,SSD阵列260中的所有块都将被分配并且未被分配块570将不包含任何块。在其它情况下,未被分配块570中的块可能会被保留以适应未来的系统增长或适应系统用量的高峰时期。处理器240连同存储管理器224,管理被分配块580和未被分配块570的分配和使用。
[0049]在图5的例子中,SSD阵列260的被分配块580包括元数据581存储以及读缓存582和写缓存586。被分配块580中的可用空间也可以被用于其它目的。被分配块580也可被用于存储多个读缓存和/或多个写缓存。元数据581包括在每个块的基础上描述被分配块580的用量的块使用信息。应当被理解的是,元数据581也可被存储于其它位置,包括HDD 阵列 250。
[0050]图5的HDD阵列250包括数据块591,数据块592,数据块593和数据块594。具有更多的数据块都是常见的,但是出于说明的目的,只有一小数目的块被包括进来。虽然每个数据块都被示出为单个的块,组成各个块的数据可能分布于HDD的各个部分。读缓存582和写缓存586每个包含数据块。读缓存582和写缓存586不是物理设备或结构。这些说明了 SSD阵列260中的块的分配和之间的逻辑关系。具体来说,这些说明了处理器240和存储管理器224出于缓存的目的,是如何使用SSD阵列260中的被分配块580的。
[0051]在图5中,读缓存582的块583是HDD阵列250的块591的读缓存。一般地,块583被描述为一个读缓存块,块591被描述为一个被读取的被缓存块。块583包含了块591数据的副本。当存储系统200收到读取块591的请求时,该请求通过读取块583得到满足。块584和块593具有类似的读缓存关系。块584是块593的读缓存,它包含块593的数据副本。写缓存586的块587和块588是写缓存块。在某个时间点,块587和块588被存储于HDD阵列250,但是是被写缓存并将数据迁移至写缓存586。通常情况下,写缓存块,如块587和块588,在HDD阵列250中不具有相应的副本。
[0052]在一个先前的时间点,用于存储数据块583、584、587和588的存储块被分配使用。这些存储块先前被包含于未被分配块570中,并投入使用,从而在逻辑上成为被分配块580的一部分。如所示的,该被分配块可以被用作读缓存,写缓存,或存储元数据。所述被分配块还可被用于其它用途例如存储系统管理数据或管理数据。现有技术的系统跟踪组成SSD阵列260的块的两种可能的使用状态。这两种可能的使用状态即被分配或未被分配。
[0053]在图5中,处理器240和存储管理器224跟踪被分配块的块使用信息。块使用信息包括具有比现用技术系统中的两个状态更详细的信息。所述块使用信息包含于元数据581中。块使用数据可以指出缓存块的种类(即读缓存或写缓存),块读取/写入的频率,块的温度,块的总的读和/或写得次数,块的所有者,块被分配至哪个卷,或其它的使用信息。
[0054]在一个例子中,元数据581包括SSD阵列260中的每个被分配块的时间和温度图(TT图)。TT图可以是包括块类型、温度、池ID和引用计数的条目。块类型和温度已在上文描述。池ID和引用计数进一步描述了块的使用情况。池指的是SSD阵列260的块的逻辑分区。池可以被创建用于特定的用途,如写缓存、读缓存、特定的容量、特定的文件、其它特定用途或者是这些的组合。池可以作为特定卷的读缓存被使用。池也可以被分配用于存储元文件。池ID是一个池的标识。
[0055]在另一个例子中,元数据581可以包括一个计数器地图,包括与TT图的各种元素相关的统计数据。这些统计数据可以包括,例如与特定类型的块的特征相关的数据,引用这些块的数目,这些块的温度或是其它相关信息。元数据581还可以包括一个所有者图。一个所有者图包括有关被分配块的所有权信息。
[0056]组成元数据581的不同域随着被分配块被使用而被更新。在一个例子中,元数据被更新以响应与其中一被分配块相关的事件。一个事件可以包括写入块、读取块、释放块或块读取频率的变化。当一个块不再被经常使用用于存储数据且仍未被未分配处理时,这个块可以被释放。一个事件也可以包括其它与块的交互或在块上进行的操作。元数据581被处理用于确定被分配块580中任何独立块或组合块的使用或缓存特性。处理的结果可以被用于创建一个关于读缓存582和/或写缓存586是如何被使用的具体核算。
[0057]处理器240和存储管理器224可以使用上述的核算来改变被分配块580的分配。在一个例子中,元数据581的处理可能指示所有或者大部分的被分配块被大量使用。在这种情况下,未被分配块570的额外的块的分配可以提高系统性能。这些额外的块可以用于提高读缓存582、写缓存586或两者的大小。
[0058]在另一个例子中,元数据581可以一种方式处理,通过这种方式,读缓存582和写缓存586的使用信息和缓存特性可以被分别辨识。读缓存582和写缓存586的集体使用信息可以通过分别对组成各个缓存的各自块的块使用信息聚合起来得到。处理所述聚合的块的使用信息可以指示在其它缓存的大小不改变的情况下,其中一个缓存的大小需要被更改以保持或提高系统的性能。所述缓存的大小是通过分配额外的块给缓存利用得以实现。
[0059]在另一个例子中,分别处理聚合块使用信息可能指示一个缓存被大量使用,而另一个不是。在这种情况下,读缓存582或写缓存586中的块可能将一个块解除分配,并重新分配至另一个缓存。这在当其中的一个缓存未被充分利用而另一个缓存被过度使用时,可能是适当的。缓存的大小也将基于其相对大小、它们的使用频率或基于其它因素被调节。元数据581,其中包括各个块的使用信息,使得各种类型的块的使用信息的核算和/或分析变得可能实现,从而更好地理解被分配块是被如何地使用。它也可以被用来分配决策以优化使用或提升SSD阵列260的使用或性能。
[0060]图6所示是配置了存储了多个卷的混合储存集合280中存储块的分配。在本例中,卷691、卷692和卷693被存储于混合存储集合280中。所有与卷691相关联的数据都存储于HDD阵列250中,卷692和卷693都是使用SSD阵列260中的块的读缓存和写缓存。所述的读取和写入的操作如之前的例子一样。在本例中,元数据存储于HDD阵列250而不是图5所示的SSD阵列260。在本例中,元数据681还包括指示哪个卷(即拥有)各个被分配块的信息。在一些情况下,指示被分配块指向特定卷的信息以所有者图的形式存储于元数据681中。所有者图是元数据681的里面的文件,其包括被分配块的所有者信息。
[0061]如前面的例子所述,很多不同类型的分配决策可以基于通过处理元数据581或元数据681获得的缓存特性得到。在图6所示的情况下,元数据681中的信息指示了使用块的是哪个卷的信息,它可以包括如前面的例子所述的块的其它缓存特性。这些缓存特性可以与卷的使用信息结合使用以做出分配决策。在一些情况下,元数据681还可以包括未被卷所有或使用的块的块使用信息。
[0062]在一个实例中,读缓存582中被卷692使用的所有块的块使用信息都被相对于被卷693使用的读缓存582中的所有块的块使用信息而进行共同分析。该分析可能表明,相比与卷692相关联的读缓存,与卷692相关联的读缓存被更频繁地使用。通过分配更多的读缓存块至卷693可以提升性能。因为与卷692相关联的读缓存块没有被用得这么频繁,其中的一些块可以由卷693进行重新分配以供使用。
[0063]在其它实例中,附加块可以从写缓存586或未被分配块570分配至读缓存582。在另一个例子中,读缓存582和/或写缓存586相对低的用量可以调整分配其中一个或两个缓存中的块以供卷691使用,即使当前不被缓存。这些类型的块的分配可以基于元数据681跟踪的块使用信息的许多不同的排列进行动态决定。基于块使用信息的许多不同的性能增强策略是可能的。
[0064]本发明的实施例包括各种步骤和操作,这些已经在上文进行描述。各种步骤与操作可以由硬件组件或者可以在机器可执行指令中呈现,其可用于利用指令编程以执行这些步骤的一个或多个的通用或专用处理器。或者,所述步骤可以通过硬件、软件和/或固件的组合来执行。
[0065]本发明的实施例可以被提供作为一个计算机程序产品,它包括一个机器可读介质,其上存储有可用于对计算机或其它电子设备进行编程以实现本文所述的一些或全部操作的非临时性指令。所述机器可读介质可包括但不限于光盘,光盘只读存储器(CD-ROM),磁光盘,软盘,只读存储器,随机存取存储器(RAM),可擦可编程只读存储器(EPROM),电可擦除可编程只读存储器(EEPROM),磁卡或光卡,闪存或其它类型的适合存储电子指令的机器可读介质。此外,本发明的实施例还可以下载为计算机程序产品,其中所述程序可通过一个通信链路以体现为载波或其它传播介质的数据信号的方式从远程计算机传送到请求的计算机。
[0066]如“在某些实施例中”,“根据一些实施例”,“如该实施例所示”,“在其它实施例中”,“在一些例子中”以及一些相似的短语,其指的一般是下文所述的特定的特征、结构或特性被包括在本发明的至少一个实施例中,并且可以包括在一个以上的本发明的实施例中。此外,这样的短语不一定指的是相同的实施例或使不同的实施例。
[0067]虽然本发明的一个或多个实施例的详细描述已经在上文给出,各种替换、修改和等价,在不脱离本发明的精神的前提下,对于本领域的技术人员是显而易见的。例如,虽然上文所描述的实施例涉及具体的特征,本发明的范围也包括具有不同特征组合的实施例以及不具有任何所描述的特征的实施例。因此,本发明的范围旨在涵盖在权利要求书范围内的所有这样的替换,修改和变式,以及所有的等价变换。因此,上文的描述不应被视为限制本发明的范围,范围应由权利要求书限定。
【权利要求】
1.一种方法,包括: 操作混合储存集合中的物理储存的第一层作为所述混合储存集合中的物理储存的第二层的缓存,物理储存所述的第一层包括多个被分配块; 更新所述被分配块的元数据以响应与至少一个所述被分配块相关联的事件,其中所述元数据包括块使用信息,所述元数据每块被分配块跟踪两个以上可能的使用状态;以及处理所述元数据以确定所述被分配块的缓存特性。
2.根据权利要求1所述的方法,进一步包括根据所述缓存特性改变所述被分配块的分配。
3.根据权利要求1所述的方法,其中物理储存的所述第一层的持久性存储介质包括一种固态储存装置,物理储存的所述第二层的持久性存储介质包括一种基于磁盘的储存装置。
4.根据权利要求1所述的方法,其中所述多个被分配块包括作为物理储存的所述第二层的读缓存的块和作为物理储存的所述第二层的写缓存的块。
5.根据权利要求4所述的方法,进一步包括根据所述缓存特性改变所述被分配块的分配,其中改变所述分配包括改变所述读缓存的大小或改变所述写缓存的大小。
6.根据权利要求4所述的方法,进一步包括根据所述缓存特性改变所述被分配块的分配,其中改变所述分配包括基于所述读缓存大小与写缓存大小间的关系改变所述读缓存或基于所述读缓存的大小与写缓存大小间的关系改变所述写缓存的大小。
7.根据权利要求4所述的方法,进一步包括根据所述缓存特性改变所述被分配块的分配,其中: 所述元数据包括一个所述读缓存的访问频率和所述写缓存的访问频率;以及改变所述分配包括基于至少一个所述访问频率改变所述读缓存的大小或基于至少一个所述访问频率改变所述写缓存的大小。
8.根据权利要求1所述的方法,其中所述混合储存集合包括多个跨越物理储存的所述第一层和所述第二层的卷。
9.根据权利要求8所述的方法,其中: 所述被分配块的子集与所述多个卷的一个卷相关联; 处理所述元数据包括确定所述被分配块的所述子集的卷使用信息;以及 改变所述分配包括根据所述卷使用信息改变所述被分配块的所述子集的大小。
10.根据权利要求1所述的方法,其中所述元数据包括所述被分配块的一块的访问频率。
11.根据权利要求10所述的方法,其中所述事件包括分配所述块、读取所述块、写入所述块、释放所述块或改变所述块的访问频率中的至少一件。
12.—种储存服务器系统,包括: 处理器;以及 与所述处理器耦合的存储器,包括一个存储管理器,其指示所述处理器: 操作一个混合储存集合,所述混合储存集合包括物理存储介质的第一层和物理储存介质的第二层,物理存储介质的所述第一层具有一个延迟,该延迟比物理存储介质的所述第二层的延迟小; 分配物理储存的所述第一层的多个块,其中所述被分配块的第一部分被作为物理储存的所述第二层的读缓存,所述被分配块的第二部分被作为物理储存的所述第二层的写缓存; 更新所述被分配块的元数据以响应与至少一个所述被分配块相关联的事件,其中所述元数据包括块使用信息,所述使用信息每块被分配块跟踪两个以上可能的使用状态; 处理所述元数据以确定所述被分配块的缓存特性;以及 基于所述缓存特性改变所述被分配块的分配。
13.根据权利要求12所述的储存服务器系统,其中物理存储介质的所述第一层包括固态储存装置,物理储存的所述第二层包括基于磁盘的储存装置。
14.根据权利要求12所述的储存服务器系统,其中改变所述分配包括改变所述读缓存的大小或改变所述写缓存的大小。
15.根据权利要求12所述的储存服务器系统,其中改变所述分配包括基于所述读缓存大小与写缓存大小间的关系改变所述读缓存的大小或基于所述读缓存大小与写缓存大小间的关系改变所述写缓存的大小。
16.根据权利要求12所述的储存服务器系统,其中: 所述元数据包括所述读缓存的访问频率和所述写缓存的访问频率;以及改变所述分配包括基于至少一个所述访问频率改变所述读缓存的大小或基于至少一个所述访问频率改变所述写缓存的大小。
17.根据权利要求12所述的储存服务器系统,其中所述混合储存集合包括多个跨越物理储存的所述第一层和所述第二层的卷。
18.根据权利要求17所述的储存服务器系统,其中: 所述被分配块的子集与所述多个卷的一个卷相关联; 处理所述元数据包括确定所述被分配块的所述子集的卷使用信息;以及 改变所述分配包括根据所述卷使用信息改变所述子集的大小。
19.根据权利要求12所述的储存服务器系统,其中所述元数据包括所述被分配块的一块的访问频率。
20.根据权利要求19所述的储存服务器系统,其中所述事件包括分配所述块、读取所述块、写入所述块、释放所述块或改变所述块的访问频率中的至少一个。
21.一种非临时性计算机可读介质,包括非临时性指令,当由一个或多个处理器执行时,其指示所述一个或多个处理器: 分配固态存储阵列的多个块作为基于磁盘的存储阵列的缓存,所述多个被分配块的第一部分被分配为所述基于磁盘的存储阵列的读缓存,所述多个被分配块的第二部分被分配为所述基于磁盘的存储阵列的写缓存; 更新所述被分配块的元数据以响应与至少一个所述被分配块相关联的事件,其中所述元数据包括块使用信息,所述块使用信息每块被分配块跟踪两个以上可能的使用状态;处理所述元数据以确定所述被分配块的缓存特性;以及基于所述缓存特性改变所述被分配块的分配。
22.根据权利要求21所述的非临时性计算机可读介质,其中改变所述分配包括改变所述读缓存的大小或改变所述写缓存的大小。
23.根据权利要求21所述的非临时性计算机可读介质,其中改变所述分配包括基于所述读缓存大小与所述写缓存大小间的关系改变所述读缓存的大小或基于所述读缓存大小与所述写缓存大小间的关系改变所述写缓存的大小。
24.根据权利要求21所述的非临时性计算机可读介质,其中: 所述元数据包括所述读缓存的访问频率和所述写缓存的访问频率;以及改变所述分配包括基于至少一个所述访问频率改变所述读缓存的大小或基于至少一个所述访问频率改变所述写缓存的大小。
25.根据权利要求21所述的非临时性计算机可读介质,其中: 多个卷储存于混合储存集合,所述混合储存集合包括所述基于磁盘的存储阵列和所述固态存储阵列; 处理所述元数据包括基于被用于储存多个卷中的一个卷的所述被分配块的一个子集确定卷使用信息; 改变所述分配包括根据所述卷使用信息改变所述被分配块的所述子集的大小。
26.根据权利要求21所述的非临时性计算机可读介质,其中所述元数据包括所述被分配块的一块的访问频率。
27.根据权利要求26所述的非临时性计算机可读介质,其中所述事件包括分配所述块、读取所述块、写入所述块、释放所述块或改变所述块的访问频率中的至少一件。
28.—种方法,包括: 将混合储存集合的物理储存的第一层作为所述混合储存集合的物理储存的第二层的缓存,物理储存的所述第一层包括多个块; 更新描述一个或多个所述块的使用状态的元数据以响应所述一个或多个块的使用;基于处理描述所述一个或多个块的所述使用状态的所述元数据确定所述一个或多个块的缓存特性; 基于所述缓存特性改变所述多个块的分配。
29.根据权利要求28所述的方法,其中物理储存的所述第一层的第一部分被作为物理储存的所述第二层的读缓存,物理储存的所述第一层的第二部分被作为物理储存的所述第二层的写缓存。
30.根据权利要求29所述的方法,其中改变所述分配包括改变所述读缓存的大小或改变所述写缓存的大小。
【文档编号】G06F13/14GK104285214SQ201380023476
【公开日】2015年1月14日 申请日期:2013年3月6日 优先权日:2012年3月7日
【发明者】克尔恩·常, 拉杰什·桑达拉姆, 道格拉斯·P·杜塞特, 拉维坎特·德罗纳拉朱 申请人:网络装置公司