用于回收存储空间的方法和系统的制作方法

文档序号:6486842阅读:131来源:国知局
用于回收存储空间的方法和系统的制作方法
【专利摘要】本发明的实施例涉及用于回收存储空间的方法和系统。特别地,公开了一种用于回收存储空间的方法,该存储空间包含多个段。该方法包括:基于预定的回收需求而确定存储空间中的目标区域以使得满足该回收需求的数据移动开销最小;回收该目标区域包含的段;以及更新与该存储空间相关联的地址映射以保持存储空间的地址连续性。还公开了相应的系统。根据本发明的实施例,允许根据待回收的存储空间的当前使用状况来灵活确定回收其中的哪些段。以此方式,可以显著降低回收操作所导致的数据移动开销,提高存储空间回收的灵活性和效率。
【专利说明】用于回收存储空间的方法和系统
【技术领域】
[0001]本发明的实施例总体上涉及存储管理,更具体地,涉及用于回收存储空间的方法和系统。
【背景技术】
[0002]存储管理是现代计算技术中的重要问题。在现代计算机系统中,存储系统通常以层级式架构实现。用户数据与物理的存储设备(例如,磁盘)之间存在一个或多个逻辑和/或物理的层。在层级式存储架构中,卷(volume)是一个重要概念。在此使用的术语“卷”是指在物理存储盘上创建的连续存储空间。每个物理存储设备可以被划分为多个卷,一个卷也可以跨越多个物理存储设备。此外,卷通常被划分为若干大小相等的单元,称为“段” (chunk)。
[0003]卷之类的存储空间的回收是存储管理中的重要问题之一,它旨在将卷中目前未被使用或者说处于“空闲”状态的段回收到系统存储池中以供再次分配和使用,从而以较为有效的方式来使用存储空间。以卷为例,在已知的存储空间回收方案中,总是尝试从卷的结尾处回收连续的段。这种方案可能导致不必要的数据移动操作。例如,假设需要回收卷中包含N个段的一段连续空间。然而,可以理解,在卷的结尾处未必具有N个连续的空闲段。此时,常规的处理方法是将最后N个段中非空闲的段所存储的数据移动到卷中的其他空闲段,而后回收卷中的这最后N个段。
[0004]本领域技术人员能够理解,上述方案在灵活性和性能方面都存在缺陷。例如,这种方法只能从卷尾部处回收空间,没有实际考虑卷当时的使用情况特别是空闲段的分布情况,这种局限性往往会导致过多的数据移动。例如,可能在卷的前部或中部存在连续的N个空闲段。此时,如果回收这N个空闲段,则根本无需进行数据移动。另外,过多的数据搬移势必带来更大的磁盘I/O压力,所以已知的方法通常是离线运行,无法满足在线存储系统的需求,而且也降低了系统可用性。
[0005]实际上,上文结合卷描述的情况不仅仅出现在卷的空间回收中,在很多其他逻辑存储空间的管理和回收中也存在类似问题。因此,本领域中需要一种更为有效的存储空间回收方案。

【发明内容】

[0006]鉴于本领域中目前存在的上述问题,本发明提出一种用于回收存储空间的方法和系统。
[0007]在本发明的第一方面,提供一种用于回收存储空间的方法,其中所述存储空间包含多个段。所述方法包括:基于预定的回收需求而确定所述存储空间中的目标区域以使得满足所述回收需求的数据移动开销最小;回收所述目标区域包含的段;以及更新与所述存储空间相关联的地址映射以保持所述存储空间的地址连续性。
[0008]在本发明的第二方面,提供一种用于回收存储空间的系统,其中所述存储空间包含多个段。所述系统包括:确定装置,配置为用于基于预定的回收需求而确定所述存储空间中的目标区域以使得满足所述回收需求的数据移动开销最小;回收装置,配置为用于回收所述目标区域包含的段;以及更新装置,配置为用于更新与所述存储空间相关联的地址映射以保持所述存储空间的地址连续性。
[0009]根据本发明的实施例,对于任何给定的存储空间回收需求,允许根据待回收的存储空间(例如,卷)的当前使用状况来灵活确定回收其中的哪些段。具体而言,本发明的实施例可以确保对存储空间进行回收所导致的数据移动开销最小,从而显著提高存储空间回收的灵活性和效率。特别地,本发明的实施例可以利用地址映射机制确保回收之后的存储空间的逻辑地址是连续的。
【专利附图】

【附图说明】
[0010]通过参考附图阅读下文的详细描述,本发明实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施例,其中:
[0011]图1示出了根据本发明示例性实施例的用于回收存储空间的方法100的流程图;
[0012]图2A和图2B示出了根据本发明示例性实施例的确定目标区域的示意图;
[0013]图3示出了根据本发明示例性实施例的用于移动目标区域中的非空闲段中数据的方法300的流程图;
[0014]图4示出了根据本发明示例性实施例的在回收目标区域之后的存储空间的示意图;
[0015]图5示出了根据本发明示例性实施例的用于扩充存储空间容量的方法500的流程图;
[0016]图6示出了根据本发明示例性实施例的扩充存储空间容量的示意图;
[0017]图7示出了根据本发明示例性实施例的用于回收存储空间的系统700的框图;以及
[0018]图8示出了可用来实现本发明实施例的计算机系统800的框图。
[0019]在各个附图中,相同或对应的标号表不相同或对应的部分。
【具体实施方式】
[0020]下面将参考附图中示出的若干示例性实施例来描述本发明的原理和精神。给出这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
[0021]首先参考图1,其示出了根据本发明示例性实施例的用于回收存储空间的方法100的流程图。根据本发明的实施例,方法100的实例可以由负责管理存储空间的一方来执行,例如,存储管理器或者存储管理线程,等等。
[0022]方法100开始之后,在步骤S101,基于预定的回收需求而确定要回收的存储空间中的一个目标区域,使得满足该回收需求的数据移动开销最小。
[0023]根据本发明的实施例,要回收的存储空间可以是卷,或者是任何其他在物理存储设备上创建的逻辑存储区域。特别地,卷的地址一般而言是连续的。根据本发明的实施例,在回收过程中允许卷的物理地址是不连续的,但是通过地址映射可以保证其逻辑上的地址连续性,这还将在下文详述。
[0024]根据本发明的实施例,存储空间在逻辑上被进一步划分为单元,其大小通常是相等的(在某些情况下这可以不是必须的)。存储空间所包含的这些单元称为“段”。每个段在存储空间中都具有一个起始地址和一个结尾地址。可以理解,在段的大小相等的情况下,只需要段的起始地址便可以在存储空间中唯一地标识一个段。
[0025]注意,在下文描述中将主要参考“卷”来阐释本发明的思想。然而应当理解,这仅仅是示例性的而非限制性的。可以在物理存储设备上创建的逻辑存储结构均适用于本发明的实施例。
[0026]根据本发明的实施例,“回收需求”可以指示回收的目标,S卩,要从存储空间中回收的存储量。例如,回收需求可以直接指示要回收的段的数目。备选地,回收需求也可以指示要回收的存储容量,该存储容量既可以是数值,也可以是占整个存储空间存储量的比例。此夕卜,根据本发明的实施例,回收需求可以由应用或者用户以交互的方式生成,也可以定期生成。本发明的范围在这些方面不受限制。
[0027]本文中使用的术语“目标区域”是存储空间中所包含的一个子空间,由一个或多个段组成。可以理解,在步骤SlOl处确定的目标区域中所包含的空闲段(即,当前未被分配和使用的段)的总存储容量应当大于或者等于回收需求中指示的将要回收的存储容量。如果存储空间中所有空闲段的存储容量总和小于回收需求中指示的回收容量,方法100可以返回错误指示并且结束。
[0028]此外,在步骤SlOl处确定的目标区域还应当使满足回收需求的数据移动开销最小。这里所说的“数据移动开销”主要是指移动目标区域中的非空闲段(如果存在的话)中存储的数据所产生的时间和资源上的开销。根据本发明的实施例,对于一个确定的待回收目标区域,数据移动开销与诸多因素相关联。一个示例性影响因素是目标区域中包含的空闲段的数目。具体而言,一个区域中包含的空闲段越多,回收该区域的数据移动开销可能越小。特别地,假设回收需求指示回收N个段(N是自然数),如果目标区域由多于N个连续空闲段组成,则满足回收需求的数据移动开销为零。
[0029]备选地或附加地,影响数据移动开销的另一个因素是目标区域中包含的非空闲段在该目标区域中的分布状况。例如,本领域技术人员知道,移动连续段中存储的数据的开销通常小于移动不连续段中存储的数据。因此,如果两个候选区域中包含的空闲段数目相同,则可以选择非空闲段分布比较连续或者集中的那个候选区域作为目标区域。
[0030]应当理解,上文列举的仅仅是与数据移动开销相关的几个示例性因素。任何其他因素均可以被纳入考虑并且与本发明的实施例结合使用。本发明的范围在此方面不受限制。
[0031]此外,根据本发明的某些实施例,可以通过对卷进行实际的物理访问来确定目标区域。备选地,根据另一些实施例,可以通过访问段位图(chunk bitmap)来确定目标区域。在这样的实施例中,存储空间(例如,卷)所包含的多个段的使用状况可以由一个段位图记录。例如,段位图中可以包含用于每个段的字段,用于指示对应的段处于使用状态(例如,标记为逻辑“I”)还是空闲状态(例如,标记为逻辑“O”)。本领域技术人员知道,段位图可以存储在磁盘上,并且可以在运行时被调入存储器以保存在存储空间中的特定位置。例如,如果存储空间是卷,则卷位图可以保存在卷头部中。术语“卷头部”表示卷中用于存储元数据的固定区域,它通常是位于卷首的固定区域。上层应用通常不直接访问或者分配卷头部,而且卷头部不会被回收。
[0032]此时,在步骤S102处,可以访问段位图以获得存储空间的空闲段分布状况;并且基于回收需求和空闲段分布状况来确定使数据移动开销最小化的目标区域。参考图2A讨论一个具体示例。在图2A所示的示例中,假设要回收的卷总计包含20个段(编号1-20,其中“H”表示卷头部,不用于存储数据),并且空闲段为13个(位图中相应的位被设置为“O”)。当回收需求只是要回收卷容量的25% (即,5个段)时,通过从卷的尾部开始访问位图,以确定至少包括5个段的目标区域。首先扫描的候选区域可以是段16至20组成的区域,该区域的数据移动开销为I。继续扫描发现:段14至18组成的区域的数据移动开销最小(都是空闲段,无需移动数据)。由此,可以将这个区域确定为目标区域,如图2A中的框所示。
[0033]可以想到,一种可能出现的情况是:存储空间(例如,卷)中可能具有多个候选区域使满足回收需求的数据移动开销最小化。在这种情况下,根据本发明的某些实施例,可以选择结尾地址最接近存储空间的结尾地址的那个候选区域作为要回收的目标区域。可以理解,这里所说的存储空间的结尾地址是指该存储空间中包含的最后一段的结尾地址。
[0034]考虑图2B所示的示例,类似于图2A,仍然假设要回收的卷总计包含20个段,其中空闲段为13个。当回收需求中指示的回收目标是卷容量的50% (S卩,10个段)时,至少存在两个候选区间同时满足最小数据移动开销,即,由段10至19构成的区域I以及由段11至20构成的区域2。此时,因为区域2更接近整个存储空间(卷)的结尾,因此选择区域2作为目标区域。
[0035]选择尽量“靠后”的区域作为目标区域是有益的。首先,如下文所述,为了保持回收后的存储空间的地址连续性,需要对段的地址映射进行更新,而这种更新通常只涉及目标区域之后的段。因此,目标区域越接近整个存储空间的结尾,受到影响的段就越少。另一方面,这种选择目标区域的策略对于卷的容量扩充也是有利的,这还将在下文详述。
[0036]应当理解,当具有使数据移动开销最小化的不止一个候选区域时,可以备选地或附加地采用任何其他策略从中选择一个作为目标区域。例如,随机选择是一种可行的策略。本发明的范围在此方面不受限制。
[0037]接下来,方法100进行到步骤S102,在此回收在步骤SlOl处选定的目标区域中包含的段。如上所述,目标区域中可能只包含空闲段。在这种情况下,直接回收该目标区域中包含的所有段即可。此时,与回收相关联的数据移动开销为零。在此使用的术语“回收”可以包括将空闲段返回给系统存储池以便再次分配和使用。
[0038]另一方面,如果目标区域中包含任何非空闲段,则在步骤S102,将目标区域中的每个非空闲段中存储的数据移动到存储空间中位于目标区域之外的空闲段中。特别地,根据某些实施例,可以首先尝试将目标区域中的非空闲段中存储的数据移动到存储空间中的、起始地址小于目标区域的起始地址的空闲段,即,目标区域“之前”的空闲段。当这种尝试失败,说明目标区域之前的空闲段已经被填满。响应于此,可以将目标区域中的剩余非空闲段中存储的数据移动到目标区域之后的空闲段中,即,起始地址大于目标区域结尾地址的那些空闲段。[0039]参考图3,其具体描述了根据此类实施例的用于移动目标区域的非空闲段的方法300的框图。可以理解,方法300可以被认为是方法100中的步骤S102的一种特定实现。
[0040]方法300开始之后,在步骤S301,根据访问索引访问目标区域中的一个段。在方法300的初始迭代中,访问索引可以指向目标区域中的第一个段。
[0041]接下来,方法300进行到步骤S302,判断访问的段是否为空闲段。如果是,则方法300进行到步骤S303,在此判断当前段是否为目标区域中的最后一个段。如果是,则方法300结束。否则,方法300进行到步骤S304,在此递增访问索引以指向当前段的下一段。方法300接下来返回到步骤S301以迭代执行。
[0042]另一方面,如果在步骤S302判断当前访问的段为非空闲段,则方法300进行到步骤S305以确定在目标区域之前是否存在空闲段。如果存在,则在步骤S306处,将目标区域中当前访问的段中的数据移动到目标区域之前的一个空闲段,并且方法300继而进行到步骤S303。反之,如果在步骤S305确定目标区域之前已经不存在空闲段,则方法300进行到步骤S307,在此将目标区域中当前访问的段中的数据移动到目标区域之后的一个空闲段。方法300继而进行到步骤S303。
[0043]在迭代执行以遍历了目标区域中包含的所有段之后,方法300结束。
[0044]方法300所示的实施例是有益的,因为目标区域“之后”的段需要在回收之后变更地址映射。通过将目标区域中的非空闲段中存储的数据尽量移动到目标区域之前的空闲段,可以简化后续地址映射变更的操作。当然,应当注意,这并不是必须的。也可以首先向目标区域之后的空闲段移动数据,或者随机选择空闲段。本发明的范围在此方面不受限制。
[0045]返回图1,在执行步骤S102之后,目标区域中包含的所有段被回收,不再属于当前存储空间(例如,卷)。相应地,存储空间的容量被缩减。如图4所示,在回收先前由段8-17构成的目标区域之后,该目标区域先前所对应的地址空间成为“空洞”。
[0046]注意,在步骤S102回收目标区域之后,通常还需要更新与目标区域中的段相对应的元数据。例如,可以更新段的地址映射关系(例如由存储管理进程维护),以便及时反映出该数据块的变化,从而保持数据一致性。此外,还可以在日志中记录重要数据的改变历史,以便系统故障时恢复。而且,在步骤S102执行过程中,可能需要暂时屏蔽或者挂起针对有关段的输入/输出(I/O)请求。这些都是本领域技术人员知道的,在此不再赘述。
[0047]接下来,方法100进行到步骤S103,在此更新与存储空间相关联的地址映射,以保持存储空间的地址连续性。对于卷之类的存储空间,其物理地址通常是连续的。然而如上所述,根据本发明的实施例,当回收目标区域所导致的地址空间空洞不在存储空间结尾处时,存储空间的物理地址会变得不再连续。
[0048]在步骤S103处,采用地址映射更新机制对地址空间的空洞进行补偿。根据本发明的某些实施例,在步骤S103处,通过以下方式来实现地址映射更新。一方面,保持起始地址小于目标区域起始地址的段的地址映射不变。可以理解,这里所说的目标区域的起始地址等于该目标区域中的第一个段的起始地址。另一方面,对于那些起始地址大于目标区域的结尾地址的段,则为其设置适当的地址映射偏移量。
[0049]特别地,根据这样的实施例,存储空间可以与一个段映射表(Chunk Map Table,CMT)相关联,映射表的每个条目对应于一个段,用于支持段的逻辑地址与物理地址之间的转换。通过利用CMT,可以确保目标区域回收所导致的地址空间空洞对于上层应用是透明的。换言之,尽管存储空间的物理地址不再连续,但是从上层应用的角度看,其逻辑地址仍然是连续的,从而确保上层应用对存储空间的使用不受影响。
[0050]参考表1示出的示例性CMT描述一个具体示例。CMT的每个条目具有“段编号”字段,用于表示段。特别地,卷首的段不用于存储用户数据,因而编号特殊(例如,“H”)。CMT的每个条目还包括“偏移量”字段,用于指示相应的段由于目标区域回收操作的影响在寻址时所需的地址映射偏移。每个段的初始偏移量被设置为零。
[
【权利要求】
1.一种用于回收存储空间的方法,所述存储空间包含多个段,所述方法包括: 基于预定的回收需求而确定所述存储空间中的目标区域以使得满足所述回收需求的数据移动开销最小; 回收所述目标区域包含的段;以及 更新与所述存储空间相关联的地址映射以保持所述存储空间的地址连续性。
2.根据权利要求1所述的方法,其中所述数据移动开销与以下至少一个相关联: 所述目标区域中包含的空闲段的数目;以及 所述目标区域中包含的非空闲段在所述目标区域中的分布状况。
3.根据权利要求1所述的方法,其中所述存储空间中的所述多个段的使用状况由段位图记录,并且其中基于预定的回收需求而确定所述存储空间中的目标区域以使得满足所述回收需求的数据移动开销最小包括: 访问所述段位图以获得所述存储空间的空闲段分布状况;以及 基于所述回收需求和所述空闲段分布状况来确定所述目标区域。
4.根据权利要求1所述的方法,其中基于预定的回收需求而确定所述存储空间中的目标区域以使得满足所述回收需求的数据移动开销最小包括: 如果所述存储空间中具有多个候选区域使得所述数据移动开销最小,选择结尾地址最接近所述存储空间的结尾地址的候选区域作为所述目标区域。
5.根据权利要求1所述的方法,其中回收所述目标区域包含的段包括: 如果所述目标区域中包含非空闲段,将所述目标区域中的每个非空闲段中存储的数据移动到所述存储空间中位于所述目标区域之外的空闲段。
6.根据权利要求5所述的方法,其中将所述目标区域中的每个非空闲段中存储的数据移动到所述存储空间中位于所述目标区域之外的空闲段包括: 将所述目标区域中的非空闲段中存储的数据移动到所述存储空间中的、起始地址小于所述目标区域的起始地址的空闲段;以及 如果所述目标区域中存在剩余非空闲段,将所述剩余非空闲段中存储的数据移动到所述存储空间中的、起始地址大于所述目标区域的结尾地址的空闲段。
7.根据权利要求1所述的方法,其中更新与所述存储空间相关联的地址映射以保持所述存储空间的地址连续性包括: 保持起始地址小于所述目标区域的起始地址的段的地址映射不变;以及 为起始地址大于所述目标区域的结尾地址的段的设置地址映射偏移量。
8.根据权利要求1所述的方法,还包括通过向所述存储空间分配附加段来扩充所述存储空间的容量,所述扩充包括: 将所述附加段分配到所述存储空间中与先前回收的所述目标区域相对应的地址空间;以及 如果存在未分配的剩余附加段,将所述剩余附加段分配到所述存储空间的结尾地址之后的地址空间; 其中与所述存储空间相关联的所述地址映射响应于所述扩充而被更新。
9.根据权利要求8所述的方法,其中所述附加段作为单个存储子空间而被维护。
10.根据权利要求1-9任一项所述的方法,其中所述存储空间是卷。
11.一种用于回收存储空间的系统,所述存储空间包含多个段,所述系统包括: 确定装置,配置为用于基于预定的回收需求而确定所述存储空间中的目标区域以使得满足所述回收需求的数据移动开销最小; 回收装置,配置为用于回收所述目标区域包含的段;以及 更新装置,配置为用于更新与所述存储空间相关联的地址映射以保持所述存储空间的地址连续性。
12.根据权利要求11所述的系统,其中所述数据移动开销与以下至少一个相关联: 所述目标区域中包含的空闲段的数目;以及 所述目标区域中包含的非空闲段在所述目标区域中的分布状况。
13.根据权利要求11所述的系统,其中所述存储空间中的所述多个段的使用状况由段位图记录,并且其中所述确定装置包括: 位图访问装置,配置为用于访问所述段位图以获得所述存储空间的空闲段分布状况;以及 第一确定装置,配置为用于基于所述回收需求和所述空闲段分布状况来确定所述目标区域。
14.根据权利要求11所述的系统,其中所述确定装置包括:` 第二确定装置,配置为用于在所述存储空间中具有多个候选区域使得所述数据移动开销最小的情况下,选择结尾地址最接近所述存储空间的结尾地址的候选区域作为所述目标区域。
15.根据权利要求11所述的系统,其中所述回收装置包括: 数据移动装置,配置为用于在所述目标区域中包含非空闲段的情况下,将所述目标区域中的每个非空闲段中存储的数据移动到所述存储空间中位于所述目标区域之外的空闲段。
16.根据权利要求15所述的系统,其中所述数据移动装置包括: 第一移动装置,配置为用于尝试将所述目标区域中的非空闲段中存储的数据移动到所述存储空间中的、起始地址小于所述目标区域的起始地址的空闲段;以及 第二移动装置,配置为用于在所述目标区域中还存在剩余非空闲段的情况下,将所述剩余非空闲段中存储的数据移动到所述存储空间中的、起始地址大于所述目标区域的结尾地址的空闲段。
17.根据权利要求11所述的系统,其中所述更新装置包括: 第一更新装置,配置为用于保持起始地址小于所述目标区域的起始地址的段的地址映射不变;以及 第二更新装置,配置为用于为起始地址大于所述目标区域的结尾地址的段的设置地址映射偏移量。
18.根据权利要求11所述的系统,还包括扩充装置,配置为用于通过向所述存储空间分配附加段来扩充所述存储空间的容量,所述扩充装置包括: 第一分配装置,配置为用于将所述附加段分配到所述存储空间中与先前回收的所述目标区域相对应的地址空间;以及 第二分配装置,配置为用于在存在未分配的剩余附加段的情况下,将所述剩余附加段分配到所述存储空间的结尾地址之后的地址空间; 并且其中所述更新装置配置为用于响应于所述扩充而更新与所述存储空间相关联的所述地址映射。
19.根据权利要求18所述的系统,其中所述附加段作为单个存储子空间而被维护。
20.根据权利要求11-19任一项所述的`系统,其中所述存储空间是卷。
【文档编号】G06F12/02GK103514098SQ201210236447
【公开日】2014年1月15日 申请日期:2012年6月29日 优先权日:2012年6月29日
【发明者】赵军平 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1