用于存储装置组的分配策略的制作方法

文档序号:6376762阅读:187来源:国知局
专利名称:用于存储装置组的分配策略的制作方法
用于存储装置组的分配策略
背景技术
在计算领域内,许多情景牵涉到存储装置组,存储装置组包括被配置成为了各种进程存储数据集的一组存储装置。存储装置的存储容量在计算机系统上可以显现为一组逻辑卷,存储装置的互操作比起独立地操作存储装置,可以允许有更多的变化;例如,全部存储容量可以被显现为单个逻辑卷,而不管哪个存储装置包含特定的数据集,或者可以生成带有与存储装置的任意关系的一组逻辑卷,用于某特定逻辑卷的容量在物理上是位于所述存储装置上的。存储装置的互操作还可以提供附加特征,诸如自动的存储冗余,其可以在存储装置组的存储装置变为不可访问的情形下提供数据恢复和可用性;通过自动的“校验和(checksum) ”计算进行的检错和/或纠错,这可以使得能从数据破坏中恢复,或重构丢失的数据;以及通过多个存储装置对数据集的并行访问,这比起通过单个存储装置的访问,可以提供更大的吞吐量给存储装置组。
在这些情景的某些情景中,对存储装置组的访问可以被提供为一组空间(space)(分别代表例如逻辑卷、存储日志、或便于存储装置组的维护的元数据集),对于该组空间,在存储装置上已物理地分配一组盘区(extent)。例如,每个存储装置的容量可以被分摊到具有一致的或可变的大小的盘区,并且当被请求用于空间的容量时,可以在一个或多个存储装置上物理地分配一个或多个盘区,每个盘区可被绑定到用于所述空间的逻辑地址范围。对逻辑地址范围内的位置的访问可以通过引用已被物理地分配用于该空间并被绑定到包括所述访问的位置的逻辑地址范围的盘区而被满足。

发明内容
本概要被提供来以简化的形式介绍概念的选择,这些概念还将在下面的详细说明中进行描述。本概要既不打算确认所要求保护的主题的关键因素或必要特征,也不打算被使用来限制所要求保护的主题的范围。在牵涉到存储装置组的计算情景下,对于容量的分配的请求(例如,对于各个空间的盘区的分配)可以通过选择一个或多个存储装置和物理地分配一个或多个区域而满足。然而,存储装置的具体选择可以在各实现之间变化。例如,存储控制器可以任意地选择用于分配的存储装置;可以简单地在具有最大可用容量的存储装置上分配适当大小的区域;可以利用最佳适配技术;或可以选择在存储装置组的所有存储装置上分配相等大小。这些策略可以呈现各自的优点;例如,最佳适配技术可以减少数据碎片,而跨所有存储装置来分布可以提高对于以分布式分配存储的数据集的访问速率。在更复杂的存储情景下,数据集可以是按照某个约束的存储装置。例如,用于包括有价值的或高需求的数据的第一数据集的存储,可以被请求带有跨存储装置的最大分布(例如,在几个存储装置上镜像数据以提供改进的冗余性;或自动计算和存储对于数据集的“校验和”,其使得能检错和/或纠错)。用于第二数据集的存储可以被带有连续数据块的约束来请求,以便例如通过使用存储装置的预读(read-ahead)和突发访问特征而改进对于数据集的顺序访问。相反,用于第三数据集的存储可以不规定任何约束,并且其可被存储在存储装置组的任何位置中。存储装置组还可以提供附加特征,诸如延迟的容量分配(例如,对于给空间预配(provision)容量的请求可能不能立即分配所有的盘区来满足该空间的容量要求,但可以简单地记录已预配的大小并基于刚好及时(just-in-time)的原则把盘区绑定到该空间)和精简(thin)预配(例如,可以用超过存储装置组的物理容量的预配容量来创建空间,以及在存储装置组的可用容量接近耗尽时,存储装置组可以向管理员建议提供附加的存储装置来扩展存储装置组的物理容量)。然而,鉴于这些特征,相对简单的分配策略可能在这些请求看来低效地分配了存储装置组的容量,以后可能必须重新组织存储装置组,以便满足新数据集的约束。作为第一个例子,某些存储策略可以导致各个存储装置的存储容量的不均匀分配;例如,比起其它存储装置,存储装置组的更大比例可能在某个特定的存储装置上分配,由此以更大的速率消耗它的容量,并且在存储装置组接近容量时,导致该存储装置的容量更早耗尽。如果随后的写请求指定数据集要在存储装置组的存储装置上被最大地分配,则这种较早的耗尽可能造成问题。在这种情形下,存储装置组可能有很多的存储容量来满足请求,但可能不得不重新安置来自耗尽的存储装置的某些数据,以便满足分布约束。作为第二个例子,如果存储装置给出不同的可用容量(例如,由于不同的物理容量或其它不均匀的容量分配),则跨存储装 置进行的均匀的容量分配可能先于具有较大可用容量的存储装置而耗尽具有较少可用容量的存储装置。作为第三个例子,可能想要利用精简预配来使得空间扩大到预配的容量,但当存储装置组的容量耗尽时,附加的容量变为对于所有的过度预配的(overprovisioned)空间都不可用。然而,某些空间可以具有比其它空间更高的优先级,并且可能不希望允许过度预配的、但优先级较低的空间消耗容量到耗尽点,由此造成对于过度预配的、且优先级较高的空间的容量的不可用性。如果存储装置组不提供任何用于避免这种结果的特征,则唯一可行的任选项可能是减小或避免存储装置组的精简预配,以便保证容量在需要时是可用的。这里给出的是用于配置存储装置组来满足分配容量的请求的技术,其可以减小或避免这些问题中的某些。按照这些技术,当接收到对于分配容量的请求时,存储装置组可以查验存储装置,以便识别具有充足的可用容量的存储装置子组,即,具有高于可用容量最小阈值的可用容量的存储装置,并且可以首先在这个宽裕的(spacious)存储装置子组的存储装置上分配容量。如果这个分配是不足以满足分配请求的,例如,如果分配请求规定了在四个存储装置上分配容量,但只有两个存储装置具有充足的存储容量,则存储装置组可以接着识别具有小于可用容量最小阈值、但仍具有可用容量的存储装置的子组(即,还没有耗尽的那些存储装置),并且可以在这些存储装置上分配容量。这个技术可以提供相对简单的技术来选择存储装置以分配容量,而同时还保存其可用容量正变为很有限的存储装置上的容量。作为第二个例子,在所选择的存储装置子组的存储装置中间,可以利用各种策略来跨所述子组的存储装置而分布容量的分配(例如,盘区的分配),诸如在存储装置上分布分配的循环分配策略;使得具有最大可用容量的存储装置的分配最大化的容量利用分配策略;以及访问率分配,它把分配分布到呈现不太频繁的访问的存储装置,这可以更均匀地分布访问负荷和提高存储装置组的吞吐量。可以通过这些技术来利用的附加特征牵涉到容量预留(reservation)。对于特定的空间,可以在存储装置上预留规定量的容量;虽然容量没有分配给该空间,但各个存储装置可以为该空间留出一些可用容量,并由此可以保留该预留的容量而不给其它容量请求。例如,如果存储装置包括1000个盘区(例如,对于具有ITB容量的存储装置是IGB的盘区),则空间可以通过导致在存储装置上100个盘区的预留的容量预留而被创建。因此,存储装置指示仅仅900个盘区的容量可用于其它容量请求,且尽管没有特定的盘区被分配给具有该容量预留的空间,但即便可用容量被耗尽,100个盘区仍保持为对于该空间是可用的。容量预留的使用可以使得甚至在容量耗尽的情形下也能够预留容量给空间;例如,即使另一个过度预配的且优先级低的空间(不具有容量预留)耗尽了存储装置组的可用容量(和不再可以请求容量的分配),容量仍旧可以对于为其已创建容量预留的、过度预配的和高优先级的空间保持为可用,尽管这样的容量还没有以盘区的形式被分配。而且,这些变例可被组合来给出甚至更有技巧(acbpt)的分配策略。例如,在确定特定存储装置的可用容量是充足的还是有限的同时(例如,存储装置的可用容量是高于还是低于可用容量最小阈值),这些技术的实施例可以在这个决定中包括存储装置的容量预留。例如,具有1000个盘区的可用容量的存储装置可包括当前正在使用的500个盘区,因此,鉴于250个盘区的可用容量最小阈值,它可被看作为宽裕的,但如果它包括总共400个 盘区的容量预留,则它可以被看作为有限的容量。这里给出的技术的这些和其它变例可被包括在以灵活的和有效的方式利用存储装置的容量的分配策略中。为了完成上述的和相关的目的,以下的说明和附图阐述了某些说明性方面和实现。这些仅仅指示了其中一个或多个方面可被利用的各种方式中的几种。当结合附图考虑时,本公开内容的其它方面、优点和新颖的特征将从以下的详细说明变得明显。


图I是表征存储装置组的各个存储装置的容量分配的示范性情景的例图。图2是表征在存储装置组的存储装置上容量的低效分配的示范性情景的例图。图3是表征在存储装置组的存储装置上容量的耗尽的示范性情景的例图。图4是表征按照这里给出的技术的、在存储装置组的存储装置上容量的有效分配的示范性情景的例图。图5是表征按照这里给出的技术的、在具有用于某些过度预配的空间的容量预留的存储装置组的存储装置上容量的耗尽的示范性情景的例图。图6是例示按照这里给出的技术的、在存储装置组上分配容量给空间的第一示范性方法的流程图。图7是例示按照这里给出的技术的、在存储装置组上分配容量给空间的第二示范性方法的流程图。图8是包括被配置来体现这里阐述的预配中的一个或多个的处理器可执行指令的示范性计算机可读介质的例图。图9是表征存储装置组的存储装置上容量的某些替换分配的示范性情景的例图,其替换地利用这里给出的分配策略的变例。图10例示其中可以实施这里阐述的预配中的一个或多个的示范性计算环境。
具体实施方式
现在参照附图描述所要求保护的主题,其中同样的参考标号被使用来在各处指同样的单元。在以下的描述中,为了说明起见,阐述了许多具体的细节,以便提供对于所要求保护的主题的透彻的理解。然而,明显的是,所要求保护的主题可以不用这些具体的细节而被实践。在其它实例中,结构和装置以框图的形式被显示,以便易于描述所要求保护的主题。A.引言
在计算领域内,许多情景牵涉到包括一组存储装置的存储装置组,这样的存储装置诸如是硬盘驱动机、固态存储装置、磁带备份档案库存储器、和易失性或非易失性存储器电路。存储装置可以是同种或异种的类型;可以呈现类似的或变化的特性,诸如容量、易失性;可以通过硬件或软件(例如,被插入在廉价磁盘冗余阵列(RAID)控制器中的一组硬盘驱动机,或与各种各样存储装置交互的软件进程)紧密地或松散地聚集;以及可以存在于相同的位置、在局部区域(例如,一组附接到网络的存储(NAS)装置)、和/或在广域(例如,通过互联网访问的、在地理上分布开的存储装置组)中。
存储装置组可被配置成为了在一个或多个装置上执行的各种进程来满足对于分配存储容量的请求。在许多这样的情景下,存储装置组显现一个或多个逻辑卷,每个逻辑卷可以以特定的方式被格式化(例如,按照文件系统被格式化的文件存储库或按照数据库存储系统被格式化的数据库)。在早先的存储装置组中,每个逻辑卷限于一个特定的存储装置;然而,在当代的存储装置组中,两个或更多存储装置可以作为用于单个逻辑卷的容量池而互操作。例如,两个或更多存储装置可以把某些或所有的物理容量汇聚(pool)成单个逻辑卷。因此,存储装置组可以展现一组逻辑卷,其具有与存储装置组的存储装置的物理容量的任意关系;例如,逻辑卷可以无缝地聚集来自几个存储装置的容量,而且可以把在特定的逻辑位置处表示的数据存储在参与所述池的存储装置的被分配容量内的任何物理位置。存储装置组可以以各种方式满足对于分配容量的请求。在早先的存储装置组中,对于创建逻辑卷的请求是通过在存储装置上分配物理容量块(例如,在分区内的大的、连续的空间块)而被满足的。然而,当代的存储装置组可以提供很大量的容量(例如,全部拍字节(petabytes)的存储),以及可以被分配到很大数量的逻辑卷中(例如,用于很大数量虚拟机的操作环境的各逻辑卷)。而且,这样的请求可以在不同的时间被发起,它们可以牵涉到对于扩充、减小或重新安置容量的请求。为了支持这种类型的动态环境,可能希望配置存储装置组来以更灵活的方式分配容量。作为一个这样的例子,存储装置组可被组织为一组空间,代表各种数据存储区域(例如,逻辑卷;校验和区域;存储日志,其中可以记录到另一个空间的改变;或维护区域,其存储关于其它空间的元数据),以及被组织为一组盘区,包括可以与空间相关联的小的物理分配。存储装置可以通过分配一个或多个盘区和将每个盘区绑定到空间的逻辑地址范围而满足对于创建用于空间的容量的请求。对于访问空间内的某个位置的请求然后通过识别被绑定到包括该位置的逻辑地址范围的盘区和在对应的偏移处访问该盘区而被满足。应当意识到,虽然本公开内容在空间和盘区分配模型的上下文中给出概念,但本技术可应用于使用许多组织模型的存储装置。另外,存储装置组可以提供提高存储装置组的性能和/或可靠性的许多特征。作为第一个例子,存储装置组可被配置成以冗余方式把一个或多个数据集存储在相同的或不同的存储装置上;例如,在RAID I阵列中,逻辑卷被在几个存储装置上等同地复制。这种复制可以提高逻辑卷的可靠性;例如,如果存储装置变为有讹误的、不可访问的、或不可用的,则没有数据被丢失,且数据在其它存储装置上仍然是可访问的。另外,复制可以通过组合多个存储装置的输入/输出容量而提高被复制的数据集的访问速率。作为第二个例子,存储装置组可被配置成计算和存储对于所存储的数据集的校验和。例如,在RAID 4阵列中,某存储容量没有被分配给用户数据,而是来存储用于在阵列其它部分中的用户数据的校验和;例如,对于被写入四个顺序的逻辑地址的每组四个字,存储装置组可以自动计算校验和,并把校验和存储在校验和区域中。这个校验和可被使用来验证数据的完整性;识别四字组中错误的位置(例如,非故意地改变的比特,或从物理介质不正确地读出的比特),以及任选地纠正错误;和/或重构变为不可访问的或失去的数据(例如,所述四个字可跨四个存储装置被分布,以及可以把校验和写入到第五存储装置,以及如果任何存储装置变为有讹误的、未能响应或被去除,则被存储在存储装置上的数据可以通过使用被存储在存储装置组的其它存储装置上的对应字及校验和而被重构)。 存储装置组的附加变例牵涉到容量的预配的去耦(例如,创建具有预配的大小的空间)和容量的分配,即,用于特定用途的物理媒体的部分的选择、预留和初始化。作为例子,在存储被组织为绑定到空间的盘区的上下文中,不是在空间创建后即分配整个容量用于空间一一这可能需要一段时间(特别是对于牵涉到很大数量盘区的大的空间),而是存储装置组可以延迟将盘区绑定到所述空间。存储装置组可以初始地创建具有预配的容量但只有几个绑定的盘区或没有绑定的盘区的空间。在接收到对于访问空间的位置的请求后,存储装置组可以确定是否有任何盘区绑定到包括该位置的逻辑地址范围,如果没有的话,则可以立即在存储装置上分配盘区,并且把该盘区绑定到包括该位置的逻辑地址范围。这个刚好及时的分配因此可以加速空间的创建和大小调节。而且,在这样的情景下,存储装置组可以被“精简预配”,即,通过创建合起来具有比存储装置组的可用容量大的预配容量的空间来进行。在空间被访问时,存储装置组可以从存储装置的可用容量分配盘区给该空间;以及在可用容量接近耗尽时,存储装置组可以向管理员建议把一个或多个存储装置加到存储装置组,以便提供附加容量来满足该过度预配的空间。这样的技术在以下场合可以是有利的,例如,在大的存储装置组包括用数据递增地填充和/或保持部分未用的很大数量的空间的场合,诸如具有拍字节容量、存储用于很大数量虚拟机的逻辑卷的存储阵列;在这样的情景下,不是对于整个预配的容量来获取和分配容量装置(其保持部分未用),和/或初始地创建具有很少的预配容量的空间以及重复地扩充该空间和分配盘区以便提供附加容量,而是管理员可以简单地过度预配空间、可以监视存储装置组的可用容量、以及添加存储装置,以便避免容量耗尽。图I给出表征存储装置104的存储装置组102的示范性情景100的例图,每个存储装置具有被识别为一组物理地址的可用容量。在这个示范性情景100中,存储装置104的容量可以以一组盘区106被分配,在这里被例示为消耗0x0100个字的固定地址块。各个盘区106被分配给空间108,其可以代表例如逻辑卷、校验和区域、存储日志、或用以存储用于存储装置104的元数据的维护区域。请求可以被接收来创建有特定的预配容量110的空间108,以及存储装置组102可以存储代表空间108的信息(例如,在配置区域中)。存储装置组102在接收请求后分配容量的方式方面可以是多样化的。例如,存储装置组102可以立即分配盘区106,以满足空间108的全部的预配的容量(例如,在本示范性情景下,盘区106被全部分配用于空间1,2和5的预配的容量110)。替换地,存储装置组102可以分配少于全部的盘区106,但可以等待分配其余的盘区106,直至当分配给空间108的盘区106被完全利用时接收到写请求为止,且随后可以分配一个或多个盘区106给空间108,以满足写请求。例如,对于空间3和4,空间108的预配的容量110超过被分配给空间108的盘区106的数量,但存储装置组102随后可以在刚好及时的基础上分配附加盘区106。而且,在一些情景下,一个或多个空间108可被过度预配,使得空间108的预配的容量110超过在存储装置104上物理地可用的盘区106的数量。这个超额预配可能仅仅在以下时间才造成问题,即存储装置组102的可用容量耗尽,使得具有比分配的容量更多的预配容量110的过度预配的空间108请求附加盘区106,但存储装置104没有容量剩余来分配附加的盘区106。然而,存储装置组102的管理员可以通过监视存储装置组102的可用容量而避免这种困境,以及当可用容量接近耗尽时,通过添加存储装置104而扩充存储装置组102的可用容量。以这种方式,用于各个逻辑卷的空间108的过度预配可以使得存储装置组102的管理员能够创建具有不受存储装置组102的当前物理容量限制的最大逻辑容量的空间108,以及补充存储装置组102的可用容量,以满足存储装置组102的使用。
因此,在这些和其它情景下,存储装置组102可被配置成响应于各种请求来分配容量(例如,组织存储装置104的物理容量,以便提供用于空间108的逻辑容量或逻辑卷的其它表现形式(manifestation))。因此,在许多情景下,所分配的容量的物理位置可能是不重要的;例如,在RAID 4阵列的存储装置104上,数据集的物理位置可被任意分配在任何存储装置104上的任何地方。然而,在某些这样的情景下,选择物理位置来满足对于分配容量的请求的方式可以具有实际的后果。作为第一个例子,在一些RAID方案中,各个数据集被跨存储装置104分布,每个容量请求是通过在每个存储装置104上分配所请求的容量的一部分而得到满足的。作为第二个例子,在牵涉到高度动态的数据的情景中(例如,频繁地创建、删除和/或调整数据集的大小),数据集的压紧(compaction)可以随着存储装置组102接近耗尽而恶化;例如,遍及存储装置组102,可用容量可以被物理分段为小的部分。因此,即使存储装置组102的总的可用容量对于规定大数据块的容量请求是足够的,存储装置组102也可能无法定位连续的空闲容量块来满足请求,并且可能不得不以分段的方式分配容量和/或重新安排其它数据以便压紧所使用的容量,和聚集可用容量以便满足容量分配请求。正如在图I的示范性情景100中进一步例示的,某些空间108可以规定约束112,该约束影响盘区106的布置以满足对于分配空间108的容量的请求。例如,对于第一空间108的约束112可以规定空间108按照RAID I方案进行配置,其中数据集自动在两个或更多存储装置104上被镜像;以及为其分配的盘区106要跨越两个存储装置104。因此,盘区1008的池114可以跨第一存储装置104和第二存储装置104分配(以及可以在每个存储装置104的相同物理位置处被有利地选择),由此使得能并行访问空间108的盘区106。作为第二个例子,第二空间108可包括约束112,其规定盘区106的连续块的分配,例如用于主要以流动的方式被访问的数据集。作为第三个例子,第五空间108可以按照RAID 4方案被格式化,并因此可包括约束112 :被分配用于这个空间108的容量的盘区106要被跨四个存储装置104分布(例如,包括用于用户数据的三个区域与校验和区域),以及存储装置组102可以分配跨越全部四个存储装置104的盘区106的池114。以这种方式,存储装置组102可以提供用于对各个空间108分配具体类型的容量和特征的任选项,以及可以以满足空间108的约束112的方式在存储装置104上分配盘区106。鉴于这些考虑,可以意识到,虽然许多情景可以令人满意地利用任意策略来响应于请求去分配容量,但某些分配策略比起其它分配策略可以更有效地分配存储。作为第一个示范性分配策略,所请求的容量可以在具有最大量的可用容量的存储装置104上被分配。这个例子可以鉴于存储装置104的改变的可用容量而把连续的存储请求分布在该存储装置104上,因此减少在其它存储装置104还包含很大容量时在一个存储装置104上的容量耗尽。然而,这种分配策略通过在一个存储装置104上分配容量而满足每个容量请求,并可能因此而与汇集的存储或RAID阵列的某些特征不兼容。作为第二个示范性分配策略,每个存储请求可以通过跨所有可用的存储装置104来相等地分配所请求的容量而被满足。如果这种技术被使用来满足对于具有相同容量的一组存储装置104的所有容量请求,则这个策略可以以近似均匀的方式消耗所有存储装置104的容量。然而,这个分配策略可能与具有变化的可用容量的存储装置104的存储装置组102不兼容,所述存储装置组诸如是表征具有不同物理容量的存储装置104的存储装置组102,或是在某些分配请求是通过使用不同的分配策略(例如,分配来自一个存储装置的容量块)而被满足的场合;在这些情景下,跨 所有存储装置104的容量分配的均匀分布会先于具有较大可用容量的那些存储装置而耗尽具有较少可用容量的那些存储装置。可能由规定关于所选择的存储装置104的一个或多个约束的容量请求引起另外的复杂情况。例如,第一容量请求可以规定容量要跨特定数量的存储装置104被分布和/或镜像,以便提高吞吐量或可靠性;第二容量请求可以规定容量要被分配为一个存储装置104的连续块(例如,为了促进来自一个存储装置104的容量的数据集有效流动,特别是利用存储装置104的预读和突发特征);以及第三容量请求可以规定无约束,并因此可以从任何存储装置104的可用容量进行分配。因此,分配策略可被设计成以导致具有更大多样性的可用容量的方式选择容量,以便提供满足带有可变约束的随后的容量请求的能力。例如,分配策略可被设计成压紧所分配的容量和聚集可用容量(例如,使用分配的最佳适配选择),和/或跨所有的存储装置104来分布可用容量,使得容量在所有的存储装置104上可用,以便满足规定多个存储装置104的约束的随后的请求。鉴于这些考虑,可以意识到,用于选择具体的存储装置104和物理位置来满足容量请求的分配策略的设计可以很大地影响存储装置组102的性能。相反,可以意识到,较差设计的分配策略可能以限制约束112的方式选择分配,所述约束是可能通过响应于随后的容量请求由存储装置104的剩余可用容量被满足的。也就是,即使存储装置组102的可用容量足以满足容量请求的大小,也可能很难分配满足所述请求的约束112的容量。存储装置组102因此可能必须重新安置某些数据,以便安排可用容量来满足所述请求的约束112,这可能延迟请求的完成(可能在延长的时间段内阻塞请求进程或线程)。事实上,在某些情景下,尽管物理容量的可用量足够,也可能不能满足请求,因为其它进程可能正在活动地利用存储装置组102的其它数据集,和/或可能不能重新安置其它数据集而不(临时或甚至永久地)违反与其相关联的约束112。因此,由于较差设计的分配策略而导致的问题可能对于存储装置组102具有重大的影响。图2给出描绘低效分配策略的结果的示范性情景200的例图。在这个示范性情景200中,可以提供四个存储装置104 (初始为空)的存储装置组102。在第一时间点202,响应于用于第一空间108的第一容量请求,可以分配两个盘区106。而且,盘区106可以在同一个存储装置104上被一起分配,例如,按照由请求和/或空间108规定的、指示连续盘区106的分配的约束112。在第二时间点204,第二请求可以请求用于第二空间108的四个盘区106的分配,以及存储装置组102可以通过在每个存储装置104上分配一个盘区106而分布分配。这个分布可以由对于第二空间108所规定的约束112指示,或按照存储装置104的分配策略进行(例如,严格的循环分配策略,其寻求最大化每个数据集跨几个存储装置104的分布)。虽然由这种分布带来的提高的性能和/或可靠性可以是有利的,但分布也可能会限制可用容量用于将来的请求。例如,在第三时间点206,存储装置组102可能接收对于分配两个盘区106给第三空间108的请求(且可以不规定约束114),但是分配策略可以通过在第一和第二存储装置104上分配盘区106而满足请求。这个分配可能耗尽第三存储装置104的容量,即使存储装置组102的物理容量只利用了 50%。如果随后的对于容量的请求规定了约束114,其指示跨所有的四个存储装置104分布,则存储装置组102在不把一个或多个盘区106从第一存储装置104重新安置到另一个存储装置104的情况下不能满足这个请求。另外,第一存储装置104的过载增加了接收到对于访问第一存储装置104的竞争 请求的概率,这导致第一存储装置104的延迟的响应和性能,而同时其它存储装置104仍保持为空闲的。作为再一个例子,第一存储装置104的增加的使用可以缩短所述第一存储装置104的寿命,而同时其它存储装置104仍保持为空闲的。因此,这些和其它问题可以是从低效的分配策略的设计引发的。在存储装置组102内可以引发的另一个问题牵涉到在包括已被过度预配的空间108的存储装置组102中可用容量的耗尽。具体地,各种各样的空间108 (每个具有特定的用途)可以被过度预配,且为了避免容量耗尽而被管理员监视。然而,在许多这样的情景下,容量仍保持为对于所有的过度预配的空间108是可用的,直至达到容量耗尽为止,在这一点,容量变为对于所有的过度预配的空间108是不可用的。这个结果可能是不希望的,例如,如果空间108具有不同的优先级,那么过度预配的、较高优先级的空间108可能在过度预配的、较低优先级的空间108消耗所有的剩余可用容量之后被拒绝给予容量。然而,从较低优先级空间108重新分配容量到较高优先级空间108-如果这样的容量还在使用一可能是不希望的,由此导致数据丢失。图3给出表征可用容量耗尽的后果的示范性情景300。在这个示范性情景300中,包括一组存储装置104的存储装置组102被配置成分配盘区106给各个空间108,每个空间具有预配的容量110和已使用的容量304 (BP,已被分配给空间108的盘区106的总容量)。各个空间108可以具有优先级302,诸如包括有价值的用户数据的高优先级空间;包括显现用于计算机系统的操作环境的逻辑卷的中等优先级空间;以及作为用于工作数据的高速缓存或暂存盘(scratch disk)被分配的低优先级空间。在这个示范性情景300下,存储装置组102被精简预配,使得空间108被预配60个盘区106的总的逻辑容量,但是被具有40个盘区的总的物理容量的存储装置组102所存储。例如,由低优先级空间108利用的容量可以波动(例如,高速缓存和工作空间可以随使用而扩张或收缩),以及过度预配这个空间108可以使得能将可用容量用于这样的临时使用,由此避免在存储装置104上容量可用时对于低优先级空间108的容量的人为限制。另外,存储装置组102可以使得能进行用于空间108的盘区106的延迟分配,以使得高-和中等-优先级空间108可能不使盘区106被分配用于该空间108的完全预配的容量110,但可以以后在空间108被填充以数据时被分配。正如在图3的示范性情景300中进一步例示的,存储装置组102的可用容量可以随时间被消耗,并最终耗尽。例如,在第一时间点306,存储装置组10可以仅仅部分地被利用,每个空间108仅仅分配五个盘区106,由此对于附加的请求给出充足的可用容量。在第二时间点306,容量可以被更大量地利用,具体地,低优先级空间108可以快速消耗存储装置组102的可用容量(而同时把使用限制在预配的容量110内)。在第三时间点310,存储装置组102的容量可能缩小,以及存储装置组102可以给存储装置组102的管理员314生成报警312,以指示可用容量的即将来临的耗尽。然而,管理员314可能不提供存储装置104,或以其它方式解决该即将来临的耗尽,以及在第四时间点316,存储装置组102的可用容量可能被耗尽。然而,作为这个配置的结果,这个状况同样地适用于所有的空间108;例如,不管优先级302如何,附加容量变为对于所有空间108是不可用的。管理员314可能没有察觉到这个结果,特别是对于高优先级空间108而言,高优先级空间108是在存储装置组102具有充足的可用容量时用预配的容量110被创建的。事实上,管理员314可能甚至都 没有察觉到第一空间108为过度预配的;例如,空间108是在存储装置组102具有充足的可用容量时用相对小的预配的容量110被创建的。相反,第一空间108的可用容量的耗尽由存储装置组102用以延迟用于任何空间108的盘区106的分配的配置引发,以及因此,由低优先级第三空间108对于可用容量的消耗导致盘区106的不可用性和用于第一和第二空间108的容量的耗尽。避免这个结果可能牵涉到选择地或通常地减小或完全避免存储装置组102的过度预配的使用(例如,减小低优先级空间108的预配的容量110),或禁用延迟的容量分配(由此导致对于空间108的分配或调节的降低的性能,诸如拖延的响应时间,和/或在不存在空间108的容量的即将来临的使用下用于空间108的盘区106的分配)。然而,这些特征通常是有利的,无能力利用这样的特征可能会减损存储装置组102的能力。B.给出的技术
这里给出的是用于存储装置组102的分配策略,其可以减少或避免低效的分配策略的问题中的某些问题,包括在图2-3的示范性情景中所描绘的那些问题。按照这些技术,容量可以鉴于存储装置104的具体属性而在存储装置组102的各个存储装置104上被分配。例如,当为了满足用于空间108的容量请求而选择在存储装置组102内的某个位置来分配容量时,这些技术的实施例可以查验存储装置104,以识别具有宽裕的容量的那些存储装置,并且可以选择这些存储装置104作为存储装置组102的宽裕的存储装置子组。具体地,实施例可以定义可用容量最小阈值(例如,余留可用于分配的最小数量的盘区106),以及可以为这个子组选择至少具有这个最小数量的可用盘区106的存储装置104。用于空间108的容量可以首先以各种方式(例如,使得跨存储装置的被分配容量的分布最大化的循环分配策略;在具有最大可用容量的宽裕的存储装置子组的存储装置上分配容量的容量利用分配策略;或按照访问对于每个这样的存储装置104的被分配的盘区106的频率在存储装置104上分配容量的访问速率策略)在宽裕的存储装置子组的存储装置104上被分配。然而,在一些情形下,这种分配对于满足容量请求可能是不适当的;例如,容量请求可以规定最小分布,诸如容量要被跨其分配的存储装置104的最小数量、类型、或位置,以及最小分布可能超过组成宽裕的存储装置子组的存储装置104的数量。因此,这些技术的实施例可以接着识别有限的存储装置子组,包括可用容量对于其是有限的存储装置组102的存储装置104 (例如,可用容量还没有耗尽,但低于可用容量最小阈值)。实施例因此可以通过在有限的存储装置子组的存储装置104上分配盘区106给空间108 (再次地,利用任何的或几个分配策略,诸如循环、容量利用和访问速率)而满足容量请求的剩余部分。以这种方式,这些技术的实施例可以通过以下方式来从存储装置组102的存储装置104满足对于空间108的容量请求,即使用相对较简单的评估而同时还保留有限的存储装置104的容量,以及还使用可以有利地在所选择的子组内分布分配的容量的各种分配策略。图4给出表征按照这里给出的技术的、在存储装置组102内的容量分配的示范性情景400的例图。在这个示范性情景400中,一组存储装置104例如通过把位于在存储装置104上的物理地址范围处的盘区106映射到空间108的逻辑地址范围来分配容量给各个空间108。在第一时间点402,可以接收第一容量请求来分配三个盘区108给第四空间108。然而,存储装置104可能已经分配盘区106给其它空间104,以及可能因此呈现不等量的可用容量。所以,存储装置组102可以通过使用这里给出的分配策略而满足容量请求。具体地,存储装置组102可以首先识别宽裕的存储装置子组404,其包括至少具有由可用容量最 小阈值(在这个示范性情景400中被规定为至少两个可用盘区106)规定的多个可用盘区106的该存储装置组102的存储装置104。这样,存储装置组102可以定义宽裕的存储装置子组,包括满足可用容量最小阈值的存储装置104 (例如,第二、第三和第四存储装置104),以及可以通过使用任何适当的分配技术(例如,跨子组的所有存储装置104来最大地分配盘区的循环分配策略)而在这个子组的存储装置104上分配盘区106,由此满足第一容量请求。正如在图4的示范性情景400中进一步例示的,在第二时间点406,可以接收请求在三个存储装置104上分配盘区108的第二容量请求。存储装置组102可以再次识别宽裕的存储装置子组(现在只包括第三和第四存储装置104),以及可以在每个存储装置104上分配盘区106。然而,这个分配不完全满足容量请求,因此,实施例可以接着选择有限的存储装置子组408,包括具有小于可用容量最小阈值但具有大于零的可用盘区106的存储装置104 (即,第一和第二存储装置104)。存储装置组102因此可以在这个子组的存储装置104之一上分配第三盘区106 (通过使用任何适当的分配策略),并因此可能耗尽第一存储装置104的容量,但满足了第二容量请求。在第三时间点406,可以接收相对于在三个存储装置104上分配盘区106的请求的第三容量请求。存储装置组102可以再次识别宽裕的存储装置子组(再次只包括第三和第四存储装置104),以及可以在每个存储装置104上分配盘区106。为了遵循容量请求的约束而在不同的存储装置104上分配第三盘区104,实施例可以接着选择有限的存储装置子组408,包括具有小于可用容量最小阈值但具有大于零的可用盘区106的存储装置104(现在只包括第二存储装置104),且在第二存储装置104上分配第三盘区106。以这种方式,存储装置组102可以按照这里给出的技术有效地满足容量请求。这里给出的附加技术涉及到在图3的示范性情景300中描绘的情景,牵涉到在没有被完全分配的空间108(包括管理员314过度预配的那些空间,但也包括对于其分配被简单地延迟的那些空间)上可用容量的耗尽的影响。在这些情景中,在存储装置组102的可用容量耗尽的事件下,提供用以预留用于空间108的容量的机制可以是有利的。也就是,通过不把容量分配给不在使用中的空间108,在可用容量耗尽的情形中存储装置组102仍然可以持有某些预留出的容量来给空间108。而且,这样的容量可以例如遵循与空间108相关联的约束而在存储装置组102的几个存储装置104上被预留。因此,可被包括在这里给出的技术的实施例中的附加特征是预留给一个或多个空间108的容量预留,其中容量预留可以通过在存储装置组102的各个存储装置104上预留某个容量预留部分而实现。各个存储装置104因此可以按照未分配的容量减去在存储装置104上为各个空间10预留的容量预留部分来报告可用容量。在空间108请求容量时,容量预留可以减少,由此导致用于空间108的容量预留的减小,而不是存储装置104的可用容量的减小。替换地,用于空间108的容量预留可以被维持为多至空间104的剩余的预配容量的最大值(例如,持有超过空间108的预配容量110的预留出容量可能是不利的)。这个变例导致存储装置104的可用容量的减小,但不是用于空间108的容量预留的减小。这些技术可以允许用于空间108的容量的延迟分配,而没有用于空间108的容量耗尽的风险,由此使得装置能够在存储装置组102的可用容量耗尽的事件下,继续使用(和扩充)空间108。图5给出表征使用容量预留来避免与延迟的容量分配相关联的问题中的某些问 题的示范性情景500的例图。在这个示范性情景500中,一组存储装置104提供容量给具有优先级302和预配的容量110的各个空间108 (以盘区106的形式)。然而,与图3的示范性情景300相比,在这个示范性情景500中,空间108中的两个空间还包括以规定数量的盘区106的形式的容量预留504。具体地,具有高优先级302的第一空间108包括用于第一空间108的、对于全部预配容量110的10个盘区106的足够的容量预留504 ;而具有中等优先级302的第二空间108包括6个盘区106的容量预留504,它对于只存储30个盘区的总的预配容量110的一部分是足够的。这些容量预留504还没有被分配给空间108,或绑定到空间108 (由于空间108 —开始不是空的,以及这样的盘区106如果绑定到空间108,则一开始可以保持为未使用的),以及容量预留504可能不对应于在每个存储装置104上的特定盘区106或物理地址范围,但可以简单地包括被按预留持有的、存储装置104的物理容量的一部分。因此,在第一时间点502,存储装置组102包括40个盘区106,并且完全是空的;然而,存储装置组102报告仅仅24个盘区106是可用的,因为用于16个盘区106的足够容量被按预留持有,作为用于头两个空间108的容量预留504 (在每个存储装置104上被例示为带条区域,指示在存储装置104上被按预留持有的容量预留部分506)。正如在图5的示范性情景500中进一步例示的,在第二时间点508,某些盘区106可以在存储装置104上被分配用于每个空间108。例如,对于第三空间108,已分配8个盘区106,以及对于第二空间108,已分配3个盘区,而6个盘区仍旧由存储装置组102按预留持有来用于第二空间108。因此,存储装置组102的可用容量被减少11个盘区106。然而,对于第一空间108,已分配8个盘区106 ;然而,因为宁可不减少可用容量,所以存储装置组102减少用于空间108的容量预留504,以使得容量预留504不超过第一空间108的剩余的预配容量110。在第三时间点510,第二空间108和第三空间108的分配的容量的连续扩充导致存储装置组102的可用容量的耗尽。然而,某容量仍保持对于第一空间108(足以满足它的预配的容量110的剩余部分)和对于第二空间108 (例如,6个盘区106,其可能足以满足被存储在第二空间108中的数据卷,直至可以添加附加容量为止)是可用的。因此,在第四时间点512,第一和第二空间108能够通过消耗每个空间108的容量预留504而请求和接收附加的分配的容量。以这种方式,与图3的示范性情景300相比,即使在存储装置组102的可用容量耗尽后,容量预留504仍可以使得某些空间108能够继续请求和接收容量的分配。在这些技术的实施例中实施分配策略和容量预留的能力可以是特别有利的。例如,关于特定的存储装置104是否具有充足的可用容量(以及因此可被包括在宽裕的存储装置子组404中)和特定的存储装置104是否具有有限的但非零的可用容量(以及因此可被包括在有限的存储装置子组408中)的决定可包括考虑对于每个存储装置104的容量预留部分506。也就是,可用于分配的盘区106的数量可以排除被预留作为用于空间108的容量预留504的容量,即使这样的容量预留还没有被分配给任何空间108。事实上,在存储装置104的未分配的区域间,把区域特征化为可用盘区106或特征化为容量预留可能是未确定的;即,预留的容量由在所有的可用容量被分配后剩余的、未分配的区域确定。这些技术的这个组合可以进一步易于按照这里给出的技术为各个空间108分配存储装置组102的容量。C.示范性实施例 图6给出这些技术的第一实施例的例图,其被例示为在包括至少两个存储装置104的存储装置组102上分配容量给空间108的示范性方法600。示范性方法600例如可以被实施为被存储在装置的存储器部件(例如,存储器电路、硬盘驱动机的盘片、固态存储器部件、或者磁盘或光盘)上的一组指令,当该组指令被装置的处理器执行时,使得装置执行这里给出的技术。示范性方法600从602开始,且牵涉到在处理器上执行604指令。具体地,指令被配置成在接收到对于在存储装置104中间分配容量给空间108的请求后,识别606出包括具有高于可用容量最小阈值的可用容量的存储装置104的宽裕的存储装置子组404 ;以及在宽裕的存储装置子组404的存储装置104上分配608容量给空间108。指令还被配置成,如果610宽裕的存储装置子组404不满足所述请求,则在剩余的存储装置104中间识别612出包括具有低于可用容量最小阈值的可用容量的存储装置104的有限的存储装置子组408 (即,具有非零的可用容量、但具有比由可用容量最小阈值定义的更少的可用容量的那些装置);以及跨有限的存储装置子组408的存储装置104分配614容量给空间108。以这种方式,示范性方法600按照这里给出的技术实现在存储装置组102上用于各个空间108的容量分配,因此在616结束。图7给出这些技术的第二实施例的例图,其被例示为在包括至少两个存储装置104的存储装置组102上分配容量给空间108的示范性方法700。示范性方法700例如可以被实施为被存储在装置的存储器部件(例如,存储器电路、硬盘驱动机的盘片、固态存储器部件、或磁盘和光盘)上的一组指令,当该组指令被发送到具有处理器的装置时,使得装置执行这里给出的技术。示范性方法700从702开始,且牵涉到发送704指令到装置。具体地,指令被配置成在接收706到创建具有预配的容量110和容量预留504的空间108的请求后,创建708空间108,以及对于各个存储装置104,预留710用于空间108的容量预留部分506。指令还被配置成,在接收712到分配容量给空间108的请求后,在存储装置104间识别714出包括具有高于可用容量最小阈值的可用容量的存储装置104的宽裕的存储装置子组404 ;以及对于宽裕的存储装置子组404的各个存储装置104,在宽裕的存储装置子组404的存储装置104上分配716至少一个盘区106给空间108。指令还被配置成,如果718宽裕的存储装置子组404不满足所述请求,则在剩余的存储装置104间识别720出包括具有低于可用容量最小阈值的可用容量的存储装置104的有限的存储装置子组408 ;以及跨包括有限的存储装置子组408的存储装置104来分配722容量给空间108。另外(虽然在图7的示范性方法700中未描绘出),指令还可以被配置成在存储装置104上分配容量(不管是宽裕的还是有限的可用容量)后,调节用于空间108的容量预留504的容量预留部分。以这种方式,示范性方法700可以按照这里给出的技术为了空间108而实现存储装置组102的容量分配,因此在724结束。再一个实施例牵涉到包括被配置成应用这里给出的技术的处理器可执行指令的计算机可读介质。这样的计算机可读媒体可包括牵涉到有形装置的计算机可读存储媒体,诸如存储器半导体(例如,利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、和/或同步动态随机存取存储器(SDRAM)技术的半导体)、硬盘驱动机的盘片、闪速存储器装置、或磁盘或光盘(诸如,CD-R、DVD-R、或软盘),其编码计算机可读指令集,所述计算机可读指令集当由装置的处理器执行时,使得装置实施这里给出的技术。这样的计算机可读媒体还可以包括(作为与计算机可读存储媒体不同的一类技术)各种类型的通信媒体,诸 如可以通过各种物理现象传播的信号(例如,电磁信号、声波信号、或光信号)、以及在各种有线情景(例如,经由以太网或光缆)和/或无线情景(例如,诸如WiFi那样的无线局域网(WLAN)、诸如蓝牙那样的个域网(PAN)、或蜂窝或无线电网络)中的信号,以及它编码计算机可读指令集,所述计算机可读指令集当由装置的处理器执行时,使得装置实施这里给出的技术。可以以这些方式被设计的示范性计算机可读介质被例示于图8,其中实现800包括计算机可读介质802 (例如,⑶-R、DVD-R、硬盘驱动机的盘片),在其上编码计算机可读数据804。这个计算机可读数据804进而又包括计算机指令集806,所述计算机指令集当由装置810的处理器812执行时,使得装置810按照这里阐述的原理进行操作。在一个这样的实施例中,处理器可执行指令806可被配置成执行按照这里给出的技术来分配存储装置组102的存储装置104的容量的方法,所述方法包括图6的第一方法600和图7的第二方法700。这个计算机可读介质的某些实施例可包括非瞬时的计算机可读存储介质(例如,硬盘驱动机、光盘、或闪速存储器装置),它被配置成存储以这种方式配置的处理器可执行指令。许多这样的计算机可读媒体可以由本领域技术人员设计,它们被配置成按照这里给出的技术操作。D.变例
这里讨论的技术在许多方面可以被设计成具有变例,某些变例可以相对于这些和其它技术的其它变例而给出附加优点和/或减少缺点。而且,某些变例可以以组合的方式被实施,某些组合可以通过协同合作而表征附加的优点和/或减少缺点。变例可以被合并到各种实施例(例如,图6-7的示范性方法600,700)中,以便在这样的实施例上给予单独的和/或协同的优点。Dl.情景
可以在这些技术的实施例之间变化的第一方面涉及到其中可以利用这样的技术的情景。作为这个第一方面的第一变例,这些技术可与许多类型的存储装置104 —起使用,这样的存储装置包括硬盘驱动机、固态存储装置、非易失性存储器电路、基于磁带的存储装置、以及磁盘与光盘。这样的存储装置104还可以直接连接到实施这些技术的装置810 (诸如计算机);可以是通过有线或无线局域网(例如,802. 11 WiFi网络或ad-hoc连接,或红外连接)可访问的;和/或可以是通过有线或无线广域网(例如,蜂窝网或互联网)可访问的。作为这个第一方面的第二变例,存储装置组102可以松散地聚集存储装置104 (例如,独立地操作但被告知共享存储装置组的其它存储装置104并可以与共享存储装置组的其它存储装置104通信的存储装置104)或可以通过紧密的互操作(例如,管理作为存储系统的部件的几个存储装置106的廉价磁盘冗余阵列(RAID)控制器)来操作存储装置104。作为这个第一方面的第三变例,存储装置104可以存储许多类型的数据集,包括存储各种类型的二进制对象的二进制存储系统;存储文件的文件系统;存储媒体对象的媒体库;存储许多类型的对象的对象系统;存储记录的数据库;和存储电子邮件消息的电子邮件系统。作为这个第一方面的第四变例,部分的或所有的这些技术可以在计算环境内在一个或多个部件内被实施,诸如被存储在可以访问存储装置104的计算机或装置的易失性或非易失性存储装置中的软件指令集(例如,操作系统进程或硬件驱动程序);可以由被配置成与存储装置104相接口的存储系统(例如,RAID控制器)实现;或在存储装置组102的各个存储装置104中实现。作为这个第一方面的第五变例,存储装置104可被组织成以各种方式分配容量。虽然这里给出的例子牵涉到被配置成分配盘区106给空间108的存储装置104,但可以意识至IJ,这里给出的技术可以适应于与其它的分配方案一起使用,诸如,代表逻辑卷的分区的分 配,以及用来在一个或多个存储装置104上生成跨越多个基本分区的动态分区的、两个或更多分区的池114的形成。本领域技术人员可以设计其中可以利用这里给出的技术的许多情景。D2.分配策略
可以在技术的实施例间变化的第二方面涉及到被利用来响应于容量请求而选择具体的存储装置104和容量分配的位置(诸如盘区106)的分配策略。作为这个第二方面的第一变例,在选择存储装置子组的存储装置104 (例如,宽裕的存储装置子组404或有限的存储装置子组408)后,这些技术的实施例可以对于容量的分配而在存储装置子组的存储装置104之间任意选择,以便满足容量请求。替换地,实施例可被配置成应用分配策略来选择在这样的存储装置104上要在哪里进行盘区106的分配。图9给出表征可以作为这个第一变例的基础的各种分配策略的示范性情景900的例图。在这个示范性情景900中,包括四个存储装置104的存储装置组102被配置成将存储作为一组盘区106分配给各个空间108。接收对于分配三个盘区106的请求,没有规定关于要在何处分配盘区106的约束。因此,在选择包括至少具有可用容量最小阈值(在这里被定义为至少具有用于两个盘区106的可用容量)的存储装置104的宽裕的存储装置子组404后,存储装置组102可以利用任何分配策略来选择盘区106的位置。在图3的示范性情景900中,例示了三个这样的分配策略。在第一分配策略902中,盘区106按照循环分配策略被分配,例如,其中盘区106被跨存储装置子组的存储装置104来顺序地分布(例如,识别存储装置子组的存储装置104的序列,以及在序列的下一个存储装置104上分配每个盘区106,直至已被分配且与空间108相关联的全部容量的盘区满足所述请求为止)。而且,循环分配序列可以从跟随在上一个存储装置104后面的存储装置106开始,在上一个存储装置104上的盘区106是在前一请求中被分配的;例如,对于跟随在第一请求后面的第二请求,循环分配策略可能牵涉到识别在其上容量被分配给第一请求的上一个存储装置104,识别按照存储装置次序跟随在该上一个存储装置后面的下一个存储装置104 ;按照存储装置次序以及从下一个存储装置104开始在存储装置104上分配容量。以这种方式,并且正如在图9上由第一分配策略902例示的,这个分配策略导致在宽裕的存储装置子组404的存储装置104上盘区106的均匀分布。图9还例示了第二分配策略904,其中容量的分配是根据宽裕的存储装置子组404的存储装置104的容量使用来进行选择的。按照这个分配策略,可以通过识别按可用容量降序地排序存储装置104的序列且按照该序列在存储装置104上分配容量,而在存储装置子组的存储装置104上分配容量。因此,盘区106不是被均匀地分配,而是被分配成平衡存储装置子组的存储装置104上的可用容量。图9还例示第三分配策略906,其中容量的分配是根据存储装置104的访问速率而被选择的。这个分配策略聚焦于存储装置104的输入/输出工作负荷,并尝试以这样的方式分配容量,即使得把工作负荷分布在存储装置104上,由此提高存储装置组102的性能。为此,存储装置组102可以根据访问速率升序地排序存储装置104,以及可以通过在展 现最低I/O范围的存储装置104上分配盘区106而满足容量请求。这样的度量可包括许多类型的测量(例如,待决的读/写请求的队列深度的量度;入站和/或出站数据速率;打开文件句柄或待决或执行的数据库查询的数量;和/或访问在存储装置104上被分配的盘区106的用户、装置、或进程的数量),以及其可以基于ad hoc或根据历史测量而被测量(例如,存储装置组102可被配置成追踪存储装置104的访问速率作为访问速率历史,和按照访问速率历史来拣选存储装置)。例如,在图9的示范性情景900中,三个存储装置104被包括在宽裕的存储装置组404中;然而,具有最小数量的分配的盘区106和最大可用容量的存储装置104展现比其它存储装置104显著更高的I/O度量908(例如,可能是由于包括在第三存储装置104上被分配的单个盘区106的数据的性质或大众性(popularity))。因此,容量请求可以通过在第二和第四存储装置104上分配盘区106而被满足。虽然这样的存储装置104的可用容量现在是更有限的,但把在宿有(host)这些盘区106时牵涉到的添加的I/O工作负荷分配到这些存储装置104,而不是分配到已经宿有包括大量使用的数据集的盘区106的存储装置104可以是有利的。许多这样的分配策略,包括它们的组合,可以在这里给出的技术中被利用。作为这个第二方面的第二变例,这些技术的实施例可以使请求能够规定对于容量的分配的存储装置分布约束。例如,约束可以从存储装置分布约束集中进行选择,所述存储装置分布约束集包括在其上要分布分配的容量的最小和/或最大数量的不同存储装置104 ;最小和/或最大数量的不同存储装置类型(例如,存储装置104的同种或异种的混合);和存储装置104的最小和/或最大数量的不同位置(例如,位于相同的或不同的机架、建筑物、设施、或地理区域的存储装置104)。这样的约束可以鉴于存储装置组102的各种因素进行选择。例如,可能希望选择具有类似属性和位于相同的一般区域的同种的存储装置104,以便分配对于多半要被大量使用的数据集能够有高吞吐量的容量。相反,对于在整个地理区域内被大量使用的数据集,可能希望跨宽广的地理区域分布该数据集,因此在位于不同地理区域的几个存储装置104上分配容量给该数据集的镜像版本(以使得任何消费的(consume)装置或进程可以在地理上最靠近的存储装置104上访问数据集的镜像版本)。这些技术的实施例因此可以通过容量请求来接受存储装置分布约束的规定,以及在选择满足容量请求的存储装置104时利用这样的约束。本领域技术人员可以按照这里给出的技术设计许多这样的分配策略。D3.延迟的分配和容量预留
可以在这些技术的实施例间变化的第三方面涉及到容量的延迟分配。例如,在接收到对于创建空间108的请求后,存储装置组102可以立即在一个或多个存储装置104上分配空间108的全部预配的容量110。然而,这个分配可能需要一段时间,特别是如果预配的容量110较大且必须选择和定位较大数量的盘区106时,并且这样的立即分配会显著地延迟对于创建空间的请求的完成。另外,如果空间108的容量在此后不被立即使用,则这个分配可能是低效的,因为已被分配给空间108的盘区106可能保持为空,然而可能不可用于对其它空间108的分配或甚至不可用于去缓和存储装置组102的可用容量的耗尽。而且,在精简预配情景下,对于空间108的预配的容量在空间108被创建时可能不可用于分配。鉴于这些或其它考虑,把存储装置组102配置成在创建空间后不分配用于空间108的全部预配的容量110,而是延迟该分配直至物理容量要被利用,可以是有利的。例如,存储装置组102 可以一开始分配小数量的盘区106给空间108,以便提供开始的物理容量(或可以设法不这样做),且可以等待分配附加的物理容量,直至出现对于该物理容量的需求。这个第三方面的第一变例牵涉到实现容量的延迟分配的方式。作为第一个例子,存储装置组102可以监视被分配给空间108的可用的物理容量,以及当该可用的物理容量接近耗尽时(而同时,预配的容量110还保持),存储装置组102可以自动分配一个或多个新的盘区106,并把这样的盘区106与空间108相关联,由此避免空间108的物理容量的耗尽。这个变例因此可以不透明地操控用于空间108的容量的分配,并且可能甚至不会指示少于全部的容量已被分配给空间108。作为第二个例子,存储装置组102可以向管理员314或进程揭示物理容量的不完全分配,以及可以接受和满足来自管理员和/或进程的扩充分配给空间108的物理容量的请求。作为第三个例子,各个盘区106可以被绑定到空间的逻辑地址范围。对于访问数据的请求可以规定在空间中的位置,以及存储装置组102可以确定与空间108相关联的任何盘区106是否被绑定到包括所述请求的位置的地址范围。如果不是的话,存储装置组102可以把未绑定的盘区106绑定到空间108的逻辑地址空间,其中该逻辑地址范围包括访问的位置,以便提供用于访问的物理容量。未绑定的盘区106可以在存储装置104上被新分配给空间108,以便满足请求。替换地,未绑定的盘区106可能在访问之前已被分配给空间108,但可能还没有绑定到用于空间108的逻辑地址范围。例如,当空间108被创建时,可能很难预测首先要被使用的、在空间108内的位置。因此,许多盘区106可被分配给空间108,并且与空间108相关联,但它们可能不绑定到任何逻辑地址范围,直至接收到规定在空间108内的逻辑位置的第一访问请求为止。以这样的方式,即使只有一部分预配的容量110被物理地分配,以及即使不能预测要被使用的、在空间108内的位置,未绑定的盘区106的分配也可以容易地提供用于空间108的任何部分的可用物理容量。按照这里给出的技术,盘区106的分配可以通过这里给出的分配策略而实现。作为这个第三方面的第二变例(且正如在图5的示范性情景500中例示的),存储装置组102可以允许使用用于各个空间108的容量预留504,以便在存储装置组102的可用容量耗尽的事件下提供用于空间108的物理容量。例如,当容量预留504被请求用于空间108时,存储装置组102可以对于各个存储装置104计算容量预留大小,包括在存储装置104上空间108的剩余的预配的容量110和用于空间108的容量预留504的容量预留部分506的这二者的较小者。(这个比较使得容量预留504能够扩展多至空间108的剩余的预配的容量110,而不超过空间108的剩余的预配的容量110。)存储装置104因此可以把可用容量减小容量预留大小。容量预留可以通过对于创建空间108的请求而被规定,或可以在空间108被创建之后被添加,以及可以在创建后通过调节在各个存储装置104上的预留的容量部分506而被调节到可变的容量预留大小。作为这个第二方面的第三变例,对于具有容量预留504的空间108,在存储装置组102具有可用的物理容量时,存储装置组102可能以各种方式消耗用于空间108的容量预留504。例如,对于扩充用于空间108的物理容量的请求可以通过维持容量预留504和减小存储装置组102的可用容量(例如,从可用容量的通用池中满足这样的容量分配);通过维持存储装置组102的可用容量和减小空间108的容量预留504(例如,从用于空间108的容量预留504中满足这样的容量分配);或它们的组合(例如,请求可以规定空间108的剩余的预配容量110的50%的容量预留504,以及容量分配可以通过减小存储装置组102的可用容量和用于空间108的容量预留504而被满足)而实现。替换地或附加地,存储装置组102可能 (或可能不)把容量预留504的大小限制到用于空间108的剩余的预配的容量110。例如,如果用于空间108的剩余的预配的容量110以其它方式(otherwise)超过容量预留504的容量的大小的话,存储装置组102可以总是从空间108的容量预留504(代替从存储装置组102的可用容量)满足容量请求。替换地,对于特定地高优先级空间108,在接收到对于扩充空间108的请求而同时存储装置组102的可用容量被耗尽的情形下,存储装置组102可以允许容量预留504超过空间108的剩余的预配容量110。作为这个第三方面的第四变例,存储装置组102可以在达到耗尽存储装置104的可用容量后,或者在接近耗尽时(例如,在减小存储装置102的可用容量到低于可用容量最小阈值后),采取各种行动。例如,存储装置组102可以把当前的或即将来临的耗尽通知管理员314或其它用户;可以建议添加一个或多个存储装置104以便扩充存储装置组102的容量;或在某些情景下可以自动订购附加存储。存储装置组102还可以识别为了提供容量来缓和耗尽而可被减小的一个或多个空间108,以及例如可以建议把完全分配的空间108切换到过度预配的空间108。例如,空间108可以被绑定到未在使用中的盘区106 (例如,仅仅部分被填充的、用于完全分配的空间108的盘区106,或是被绑定到空间108、但自那时起还没有被使用的盘区106),以及可以建议释放这样的盘区106或重新分配给具有较高优先级302的空间108。本领域技术人员可以按照这里给出的技术来设计在存储装置组102的延迟分配和精简预配方面的许多变例。D4.附加特征
在这些技术的实施例间可以变化的第四方面涉及到可以由这样的实施例提供的附加特征。作为这个第四方面的第一变例,可用容量最小阈值可以以各种方式一一例如按照基于存储装置组102或被存储在其中的数据的特性的启发一一进行选择;可以被规定为绝对数(例如,剩余的盘区的总数)或相对数(例如,剩余可用的总的物理容量的至少10%);以及可以对于所有的存储装置104被规定为一个值,或可以对于每个存储装置104被具体地选择。另外,可用容量最小阈值可以随时间过去而调节,例如,按照存储装置组102的存储装置104的可用容量。
作为这个第四方面的第二变例,如果存储装置104暂时是不可用的,例如,如果存储装置104是通过网络连接可访问,而该网络连接被暂时断开连接,和如果存储装置104以出故障且正在进行替换,则容量的分配可能遇到困难。虽然不可用性的暂时性质可以排除从表示(representation)中去除存储装置104,但分配技术不得不响应性地被调节。例如,指令可以简单地从被选择用于容量的分配的任何存储装置子组中排除存储装置104。替换地,虽然存储装置104是不可用的,但如果存储装置组102在多个存储装置104上冗余地存储数据,则它仍然可以被选择用于容量分配。作为第一个例子,如果对于包括镜像的容量池114请求分配,则不可用的存储装置104可被包括在所述池中,以及一旦不可用的存储装置104被重新连接,则冗余的数据就可以简单地被复制到其上。作为第二个例子,如果存储装置组102以校验和的形式提供冗余性,则在不可用的存储装置104上的数据可以通过使用在其它存储装置104上的数据而被重构。然而,这个数据可能不仅包括在不可用的存储装置104上存在的数据,而且包括在存储装置104变为不可用后被请求写入到该存储装置104的数据。也就是,存储装置组102可以选择不可用的存储装置104用于分配,以及甚至可以就像在不可用的存储装置104上存储新数据一样操作,但是可能简单地相应地更新存储装置组102的其它信息(例如,更新被存储在校验和区域中的校验和,以便指示当重新连接时要被存储在存储装置104上的数据)。数据可以类似地通过使用在其它存储装置104上的 对应数据而从不可用的存储装置被“读取”。当不可用的存储装置104变为可用时(在存储装置104重新连接时,或用新的但是空的存储装置104进行替换时),数据的重构或重新同步因此产生,保证了这个存储装置104不仅仅包含在断开连接时被存储在该存储装置104上的数据而且也包含在断开连接后被请求写入到该存储装置104的数据。以这种方式,即使不可用的存储装置104也可以被包括在这里给出的分配策略中。本领域技术人员可以设计与这里给出的技术可兼容的许多附加特征。E.计算环境
图10和以下的讨论提供实施这里阐述的一项或多项措施的实施例的适当计算环境的简洁的一般性描述。图10的操作环境仅仅是适当的操作环境的一个例子,不打算对于操作环境的使用范围或功能性提出任何限制。示例性计算装置包括,但不限于,个人计算机、月艮务器计算机、手持或膝上型装置、移动装置(诸如,移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费者电子装置、小型计算机、大型计算机、包括任何的上述系统或装置的分布式计算环境等等。虽然不被要求,但实施例是在由一个或多个计算装置执行的“计算机可读指令”的一般上下文中被描述的。计算机可读指令可以经由计算机可读媒体(下面讨论的)来分发。计算机可读指令可以被实施为诸如功能、对象、应用编程接口(API)、数据结构等等那样的程序模块,所述程序模块执行特定的任务或实施特定的抽象数据类型。典型地,计算机可读指令的功能性可以如在各种环境中希望的那样被组合或分布。图10例示包括被配置成实施这里提供的一个或多个实施例的计算装置1002的系统1000的例子。在一个配置中,计算装置1002包括至少一个处理单元1006和存储器1008。取决于计算装置的确切配置和类型,存储器1008可以是易失性的(举例而言,诸如RAM)、非易失性的(举例而言,诸如ROM、闪速存储器等等)、或二者的某种组合。这种配置在图10上用虚线1004例示。
在其它实施例中,装置1002可包括附加特征和/或功能性。例如,装置1002还可包括附加的存储装置(例如,可拆卸和/或不可拆卸的),包括但不限于,磁存储装置、光存储装置等等。这样的附加存储装置在图10上用存储装置1010例示。在一个实施例中,实施这里提供的一个或多个实施例的计算机可读指令可以是在存储装置1010中。存储装置1010还可存储实施操作系统、应用程序等等的其它计算机可读指令。计算机可读指令可被装载在存储器1008中,用于例如由处理单元1006执行。当在这里使用时,术语“计算机可读媒体”包括计算机存储媒体。计算机存储媒体包括以用于存储诸如计算机可读指令或其它数据那样的信息的任何方法或技术实施的易失性和非易失性、可拆卸和不可拆卸的媒体。存储器1008和存储装置1010是计算机存储媒体的例子。计算机存储媒体包括,但不限于,RAM、ROM、EEPR0M、闪速存储器、或其他存储器技术、CD-ROM、数字多功能盘(DVD)、或其它光存储装置、磁带盒、磁带、磁盘存储装置、或其它磁存储装置、或可被使用来存储想要的信息和可被装置1002访问的任何其它介质。任何这样的计算机存储媒体可以是装置1002的一部分。 装置1002还可包括允许装置1002与其它装置通信的通信连接1016。通信连接1016可包括但不限于,调制解调器、网络接口卡(NIC)、集成网络接口、射频发射机/接收机、红外端口、USB连接、或用于将计算装置1002连接到其它计算装置的其它接口。通信连接1016可包括有线连接或无线连接。通信连接1016可以发送和/或接收通信媒体。术语“计算机可读媒体”可包括通信媒体。通信媒体典型地体现在诸如载波那样的“调制的数据信号”或其它输送机制中的计算机可读指令或其它数据,并包括任何信息传递媒体。术语“调制的数据信号”可包括使其特性以这样的方式设置或改变的信号,即把Ih息编码到号中。装置1002可包括输入装置1014,诸如键盘、鼠标、笔、话音输入装置、触摸输入装置、红外照相机、视频输入装置、和/或任何其它输入装置。诸如一个或多个显示器、扬声器、打印机、和/或任何其它输出装置那样的输出装置1012也可以被包括在装置1002中。输入装置1014和输出装置1012可以经由有线连接、无线连接或它们的任何组合被连接到装置1002。在一个实施例中,来自另一个计算装置的输入装置或输出装置可被用作用于计算装置1002的输入装置1014或输出装置1012。计算装置1002的部件可以通过各种互连,诸如总线,而被连接。这样的互连可包括诸如PCI Express那样的外围设备互连(PCI)、通用串行总线(USB)、firewire (IEEE1394)、光总线结构等等。在另一个实施例中,计算装置1002的部件可以通过网络而互联。例如,存储器1008可以由位于通过网络互连的不同物理位置的多个物理存储器单元组成。本领域技术人员将认识到,被利用来存储计算机可读指令的存储装置可以跨网络分布。例如,经由网络1018可访问的计算装置1040可以存储用来实施这里提供的一个或多个实施例的计算机可读指令。计算装置1002可以访问计算装置1040以及下载一部分或所有的计算机可读指令用于执行。替换地,计算装置1002可以按需要下载计算机可读指令的片段,或某些指令可以在计算装置1002上执行而某些指令在计算装置1040上执行。F.术语的使用
当在本申请中使用时,术语“部件”、“模块”、“系统”、“接口 ”等等通常打算指计算机有关的实体,或者硬件、硬件与软件的组合、软件、或正在执行的软件。例如,部件可以是,但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序、和/或计算机。作为说明,在控制器上运行的应用或控制器可以是部件。一个或多个部件可以驻留于进程和/或执行的线程内,以及部件可以位于一个计算机上和/或被分布在两个或更多计算机之间。而且,所要求保护的主题可被实施为方法、设备、或制造品,使用标准编程和/或工程技术来产生软件、固件、硬件或它们的任何组合以控制计算机实施所公开的主题。当在这里使用时,术语“制造品”打算包括从任何计算机可读装置、载体、或媒体可访问的计算机程序。当然,本领域技术人员将认识到,可以对于这个配置作出许多修改而不背离所要求保护的主题的范围或精神。在这里提供了实施例的各种操作。在一个实施例中,描述的操作中的一个或多个操作可以构成被存储在一个或多个计算机可读媒体上的计算机可读指令,它如果由计算装置执行,将使得计算装置执行所描述的操作。某些或所有的操作被描述的次序不应当被解释为暗示这些操作必须是依赖于次序的。本领域技术人员将意识到具有本描述的好处的替 换次序。而且,将会理解,不是所有的操作都必须是在这里提供的每个实施例中存在的。而且,单词“示范性”在这里被使用来意味着用作例子、实例、或说明。这里被描述为“示范性”的任何方面或设计不是必须被解释为比其它方面或设计更有利的。而是,单词“示范性”的使用打算以具体的方式呈现概念。正如在本申请中使用的,术语“或”打算是指包括性的“或”,而不是排他性的“或”。也就是,除非另外规定,或从上下文清楚看出,否则“X利用A或B”打算是指任何自然的包括性的置换。也就是,如果X利用A ;X利用B ;或X利用A和B,则在任何的上述实例下“X利用A或B”均是满足的。另外,当在本申请和所附权利要求中使用时,冠词“一”和“一个”(“a”和“an”)通常可被解释为指“一个或多个”,除非另外规定,或从上下文清楚看出是针对单数形式的。另外,虽然本公开内容是相对于一个或多个实现显示和描述的,但本领域技术人员基于对本申请书和附图的阅读和了解,将想到等同的替换和修改。本公开内容包括所有的这样的修改和替换,以及公开内容仅仅由以下权利要求的范围限制。具体地,关于由上述的部件(例如,元件、资源等等)执行的各种功能,被使用来描述这样的部件的术语打算(除非另外指出)对应于执行所描述的部件的规定功能的任何部件(例如,功能上等同的),虽然其在结构上不与在这里说明的公开内容的示范性实现中执行所述功能的所公开结构等同。另外,虽然本公开内容的具体特征可能是相对于几个实现的仅仅一个实现被公开的,但这样的特征可以按对于任何给定的或特定的应用可能希望和有利的那样与其它实现的一个或多个其它特征组合。而且,就术语“包括”、“具有”、“有”、“带有”和它们的变例在详细说明或权利要求中被使用的程度来说,这样的术语打算以类似于术语“包含”的方式是包括性的。
权利要求
1.一种用于在存储装置组(102)上分配容量给空间(108)的方法(600),该存储装置组包括对于具有处理器(812)的设备(810)是可访问的至少两个存储装置(104),所述方法 (600)包括在处理器(812)上执行(604 )指令(806 ),所述指令被配置成在接收到对于分配容量给空间(108)的请求后在存储装置(104)间,识别(606)包括具有高于可用容量最小阈值的可用容量的存储装置(104)的宽裕的存储装置子组(404);在所述宽裕的存储装置子组(404)的存储装置(104)上分配(608)容量给空间(108);以及如果(610)所述宽裕的存储装置子组(404)不满足所述请求则在剩余的存储装置(104)间,识别(612)包括具有低于可用容量最小阈值的可用容量的存储装置(104)的有限的存储装置子组(408);以及在所述有限的存储装置子组(408)的存储装置(104)上分配(614)容量给空间(108)。
2.权利要求I的方法,在存储装置子组的存储装置上分配容量包括按照循环选择,识别存储装置子组的存储装置的序列;对于各个存储装置和按照所述序列在存储装置上分配盘区,以及把盘区与空间相关联,直至与空间相关联的盘区的总容量满足所述请求为止。
3.权利要求2的方法存储装置子组的存储装置具有存储装置次序;以及循环选择包括对于跟随在第一请求后面的第二请求识别在其上为第一请求分配容量的上一个存储装置;识别按照存储装置次序跟随在该上一个存储装置后面的下一个存储装置;以及按照存储装置次序并且从下一个存储装置开始在存储装置上分配容量。
4.权利要求I的方法,在存储装置子组的存储装置上分配容量包括在存储装置子组的存储装置间,识别按可用容量降序排序存储装置的序列;以及按照所述序列在存储装置上分配容量。
5.权利要求I的方法,在存储装置子组的存储装置上分配容量包括在存储装置子组的存储装置间,识别按访问速率升序排序存储装置的序列;以及按照所述序列在存储装置上分配容量。
6.权利要求I的方法,所述请求规定从存储装置分布约束集中选择的存储装置分布约束,所述存储装置分布约束集包括不同的存储装置的数量;对于具有存储装置类型的存储装置,不同的存储装置类型的数量;以及对于处在不同位置处的存储装置,存储装置的不同位置的数量。
7.权利要求I的方法各个空间用预配的容量被创建;各个空间被绑定到分别具有盘区容量的盘区;所述请求包括对于访问在未绑定到盘区的空间中的位置的请求;以及在存储装置上分配容量给空间包括将在存储装置上分配的盘区绑定到包括该位置的、该空间的逻辑地址范围。
8.权利要求I的方法在访问前,存储装置包括被分配给空间且未绑定到该空间的逻辑地址范围的、至少一个未绑定的盘区;以及绑定盘区包括将未绑定的盘区绑定到包括位置的、该空间的逻辑地址范围。
9.权利要求I的方法,指令被配置成按照存储装置组的存储装置的可用容量,调节可用容量最小阈值。
10.权利要求I的方法存储装置组包括至少一个不可用的存储装置;以及所述指令被配置成从存储装置子组中排除该不可用的存储装置。
11.一种计算机可读媒体,包括在其上存储的指令,所述指令响应于由计算设备的执行而使得该计算设备执行按照权利要求I 一 10中任一项的方法。
全文摘要
存储装置组可按照分配策略(例如,从具有最大可用容量的存储装置分配容量或使得跨存储装置分配的容量分布最大化)分配容量给空间(例如,逻辑卷)。然而,这样的分配策略可能是低效的(例如,限制了存储装置组满足随后的具有约束的请求的能力,所述约束诸如是跨几个存储装置的容量的最小分布)。这里给出的技术通过以下方式来实现有效分配,即首先使用循环技术在具有充足可用容量的存储装置上分配容量,并且如果这样的存储装置不满足容量请求,则在具有有限可用容量的存储装置上分配容量。另外,这里给出的技术易于通过容量预留实行精简预配,其中存储装置保留未分配的存储用于特定的空间,其在未预留的容量被耗尽的情况下可以作为预留被利用。
文档编号G06F12/02GK102929787SQ20121033553
公开日2013年2月13日 申请日期2012年9月12日 优先权日2011年9月12日
发明者D.摩斯, K.梅拉, E.帕莱奥罗古 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1