本发明涉及在存储系统中恢复所删除的卷。
背景技术:
随着计算机存储器存储和数据带宽增大,企业日常管理的数据的量和复杂度也增大。大规模分布式存储系统(诸如数据中心)通常运行许多业务操作。数据中心(也可以被称为服务器机房)是用于存储、管理和分发关于一个或多个业务的数据的集中式储存库(物理的或者虚拟的)。分布式存储系统可以耦合至通过一个或多个网络互连的客户端计算机。如果分布式存储系统中的任何部分具有差的性能,则可能损害公司操作。因此,分布式存储系统维持用于数据可用性和高性能功能性的高标准。
软件应用(诸如逻辑卷管理器或者磁盘阵列管理器)提供分配大容量存储阵列上的空间的方法。另外,该软件允许系统管理员创建包括逻辑卷的存储组的单元。存储虚拟化提供从物理存储到逻辑存储的抽象,以便在不需要终端用户标识物理存储的情况下访问逻辑存储。
为了支持存储虚拟化,卷管理器通过将来自终端用户的使用逻辑地址的进入I/O请求转换成使用与存储设备中的物理位置相关联的地址的新请求来执行输入/输出(I/O)重定向。由于一些存储设备可以包括附加的地址转换机构(诸如可以在固态存储设备中使用的地址转换层),因此从逻辑地址到上面提到的另一个地址的转换可能不表示仅有的或者最终的地址转换。
对于许多存储系统,可以频繁地执行卷操作。例如,可以每天创建和删除大量卷。有时,用户可能无意中删除了卷,然后,稍后意识到他们想要恢复卷。然而,在常规存储系统中,一旦卷被删除,则不可能恢复所删除的卷。
鉴于上述内容,期望用于允许恢复所删除的卷的系统和方法。
技术实现要素:
预期用于使卷操作逆转的系统和方法的各种实施例。
存储系统可以包括存储控制器以及一个或多个存储设备。存储系统可以耦合至一个或多个主机客户端系统。在一个实施例中,存储控制器可以利用卷和介质跟踪存储在存储系统中的客户端数据。介质被定义为数据的逻辑分组,以及每个介质具有用以标识数据的逻辑分组的标识符。
存储控制器可以维护卷到介质映射表以将每个卷映射到单个介质,并且该介质被称为卷的锚介质。每个介质可以被映射到任何数量的其它介质,并且存储控制器还可以维护介质映射表以跟踪锚介质与下层(underlying)介质之间的关系,其中每个下层介质表示快照。
在一个实施例中,存储控制器可以被配置为允许卷操作被逆转。存储控制器可以接收删除第一卷的第一请求。第一卷可以具有作为其锚介质的第一介质。响应于接收到第一请求,存储控制器可以移除第一卷与第一介质之间的链接。存储控制器可以将删除第一介质延迟第一时间段,或者直到被第一介质利用的存储空间需要存储其它数据。第一时间段可以是可编程的,并且可以根据实施例而变化。在用户想要恢复第一卷与第一介质之间的先前链接的情况下,存储控制器还可以暂时地存储该链接的指示。
在稍后的时间点,用户可能想要恢复第一卷。用户可以生成恢复第一卷的第二请求并且向存储控制器发送第二请求。在一个实施例中,响应于接收到第二请求,存储控制器可以恢复第一卷与第一介质之间的链接。在另一个实施例中,响应于接收到第二请求,存储控制器可以创建第二介质,存储第一介质在第二介质下层的指示,以及随后创建第一卷与第二介质之间的链接。在该实施例中,重新连接的卷的变化可能不同于那些前述断开连接。
当考虑下列描述和附图时,这些和其它实施例将变得明显。
附图说明
图1是图示存储系统的一个实施例的概括性框图。
图2是介质的有向非循环图(DAG)的一个实施例的概括性框图。
图3图示了介质映射表的一个实施例。
图4图示了删除和恢复卷的操作的一个实施例。
图5图示了恢复所删除的卷的替代操作的一个实施例。
图6是图示用于撤消卷操作的方法的一个实施例的概括性流程图。
图7是图示用于恢复所删除的卷的替代方法的一个实施例的概括性流程图。
尽管本发明容许各种修改和替代形式,但是通过示例的方式在附图中示出了特定实施例,并且在本文中对特定实施例进行详细描述。然而,应当理解,附图及其详细说明并不旨在将本发明限制于所公开的特定形式,而是相反地,本发明将覆盖落在如由所附权利要求限定的本发明的精神和范围内的所有修改、等效物和替代方案。
具体实施方式
在下列描述中,阐述了许多具体细节以提供对本发明的全面理解。然而,本领域普通技术人员应当认识到,可以在没有这些具体细节的情况下实施本发明。在一些情况下,没有详细地示出公知的电路、结构、信号、计算机程序指令和技术,以避免使本发明模糊。
现在参考图1,示出了存储系统100的一个实施例的概括性框图。存储系统100可以包括存储控制器110以及存储设备组130和140,该存储设备组130和140表示任何数量的存储设备组(或者数据存储阵列)。如图所示,存储设备组130包括存储设备135A-N,其表示任何数量和类型的存储设备(例如,固态驱动器(SSD))。存储控制器110可以直接耦合至客户端计算机系统125,以及存储控制器110可以通过网络120远程地耦合至客户端计算机系统115。客户端115和125表示可以利用存储控制器110在系统100中存储和访问数据的任何数量的客户端。注意,一些系统可以仅包括单个客户端,直接或者远程地连接至存储控制器110。
存储控制器110可以包括被配置为提供对存储设备135A-N的访问的软件和/或硬件。尽管存储控制器110被显示为与存储设备组130和140分离,但是在一些实施例中,存储控制器110可以位于存储设备组130和140中的一个或每一个内。存储控制器110可以包括或者耦合至基本操作系统(OS)、卷管理器以及用于实现本文中公开的各种技术的附加控制逻辑。
根据实施例,存储控制器110可以包括任何数量的处理器和/或在任何数量的处理器上执行,以及可以包括单个主机计算设备和/或在单个主机计算设备上执行,或者遍布于多个主机计算设备。在一些实施例中,存储控制器110通常可以包括一个或多个文件服务器和/或块服务器,或者在一个或多个文件服务器和/或块服务器上执行。存储控制器110可以使用各种技术中的任何一个跨越设备135A-N复制数据,以防止由于设备故障或者设备内的存储位置故障导致的数据损失。存储控制器110还可以利用各种细粒度的重复数据删除(deduplication)技术中的任何一个,以通过对公共数据段进行重复数据删除来减少存储在设备135A-N中的数据量。
存储控制器110还可以被配置为创建和管理系统100中的快照。相应地,可以由存储控制器110记录和维护一组介质。除了一个或多个选择的介质(诸如,由特定卷最近使用的介质)以外,介质中的大部分可以是只读的。只读介质可以表示先前拍摄的快照。每个介质在逻辑上包括介质中的所有块。然而,仅保存从创建介质的时间到关闭介质的时间发生变化的块,以及到这些块的映射也可以与介质一起维护。
在各种实施例中,多个映射表可以由存储控制器110维护。这些映射表可以包括介质映射表、卷到介质映射表、地址转换表、重复数据删除表、覆盖(overlay)表和/或其它表。在一些实施例中,存储在这些表中的两个或多个中的信息可以合并成单个表。介质映射表可以用于记录和维护介质与下层介质之间的映射,以及卷到介质映射表可以用于记录和维护卷与介质之间的映射。
地址转换表可以包括多个条目,其中每个条目保持用于对应数据分量的虚拟到物理映射。该映射表可以用于将来自客户端计算机系统115和125中的每一个的逻辑读取/写入请求映射到存储设备135A-N中的物理位置。可以在与接收到的读取/写入请求相对应的查找操作期间,从与给定介质相关联的映射中读取“物理”指针值。该物理指针值随后可以用于定位存储设备135A-N内的物理位置。注意,物理指针值可以用于访问在存储设备135A-N的给定存储设备内的另一个映射表。因此,物理指针值与目标存储位置之间可以存在一个或多个间接级。
在各种实施例中,可以使用包括介质ID、逻辑或虚拟地址、扇区编号等等的键来访问地址转换表。所接收到的读取/写入存储访问请求可以标识特定卷、扇区和长度。可以使用卷到介质映射表将卷ID映射到介质ID。扇区可以是存储在介质中的数据的逻辑块。扇区可以在不同介质上具有不同大小。地址转换表可以以扇区大小为单位来映射介质。在一个实施例中,用于访问地址转换表的键值可以是介质ID和所接收到的扇区编号的组合。键是映射表中使一行数据区别于另一行数据的实体。在其它实施例中,可以采用其它类型的地址转换表。
在一个实施例中,地址转换表可以将介质映射到物理指针值。根据实施例,物理指针值可以是由存储设备映射到设备内的物理位置的物理地址或者逻辑地址。在一个实施例中,可以利用索引来访问地址转换表。索引可以标识地址转换表内的映射的位置。可以利用由介质ID和扇区编号生成的键值来查询索引,以及可以针对与键值匹配或者以其它方式相对应的一个或多个条目来搜索索引。来自匹配条目的信息随后可以用于定位和检索标识存储位置的映射,该存储位置是所接收到的读取或者写入请求的目标。在一个实施例中,索引中的命中提供标识存储系统的存储设备内的页面的对应的虚拟页面ID,其中该页面存储键值和对应的物理指针值两者。随后可以利用键值搜索该页面以找到物理指针值。
重复数据删除表可以包括用于以细粒度水平对数据进行重复数据删除的信息。存储在重复数据删除表中的信息可以包括给定数据分量的一个或多个计算的哈希值与保持该给定数据分量的存储设备135A-N之一中的物理位置的物理指针之间的映射。另外,对应条目的状态信息和给定数据分量的长度可以存储在重复数据删除表中。注意,在一些实施例中,物理指针值与对应的物理存储位置之间可以存在一个或多个间接级。相应地,在这些实施例中,物理指针值可以用于访问存储设备135A-N的给定存储设备内的另一个映射表。
存储控制器110可以被配置为:如果用户确定卷被错误地删除,则允许恢复所删除的卷。在一个实施例中,存储控制器110可以通过删除与卷到介质映射表中的卷相对应的条目来删除卷。这将移除卷与其锚介质之间的链接。此外,存储控制器可以存储所删除的卷与其锚介质之间的先前映射的指示。根据实施例,该映射可以存储在日志中、表中或者另一个位置中。然后,在稍后的时间点处,当用户请求恢复所删除的卷时,存储控制器可以检索该映射并且使用该映射重新创建所删除的卷与其锚介质之间的链接。当重新创建该链接时,这将所删除的卷有效地恢复至其先前状态。
注意,在替代实施例中,客户端计算机、存储控制器、网络、存储设备组和数据存储设备的数量和类型不限于图1所示的那些。在各种时间,一个或多个客户端可以离线操作。另外,在操作期间,各个客户端计算机连接类型可以随着用户与系统100连接、断开连接和重新连接而改变。此外,本文中描述的系统和方法可以应用于直接附接的存储系统或者网络附接的存储系统,并且可以包括被配置为执行所描述方法的一个或多个方面的主机操作系统。许多这样的替代方案是可能的,并且是可预期的。
网络120可以利用各种技术,包括无线连接、直接局域网(LAN)连接、广域网(WAN)连接(诸如因特网)、路由器、存储区域网络、以太网和其它。网络120可以包括也可以是无线的一个或多个LAN。网络120还可以包括远程直接存储器访问(RDMA)硬件和/或软件、传输控制协议/因特网协议(TCP/IP)硬件和/或软件、路由器、中继器、交换机、网格和/或其它。可以在网络120中使用诸如光纤通道、通过以太网的光纤通道(FCoE)、iSCSI等等的协议。网络120可以提供与用于因特网的一组通信协议(诸如传输控制协议(TCP)和因特网协议(IP)或者TCP/IP)的接口。
客户端计算机系统115和125表示任何数量的固定计算机或者移动计算机,诸如台式个人计算机(PC)、服务器、服务器群、工作站、膝上型计算机、手持式计算机、服务器、个人数字助理(PDA)、智能电话等等。一般而言,客户端计算机系统115和125包括一个或多个处理器,该一个或多个处理器包括一个或多个处理器内核。每个处理器内核包括用于根据预定义的通用指令集来执行指令的电路。例如,可以选择x86指令集架构。替代地,可以选择或者任何其它通用指令集架构。处理器内核可以针对数据和计算机程序指令访问高速缓存子系统。高速缓存子系统可以耦合至存储器分层体系,该存储器分层体系包括随机存访问储器(RAM)和存储设备。
现在参考图2,示出了图示介质的有向非循环图(DAG)200的框图。还示出了卷到介质映射表205,其针对由存储系统使用的每个卷示出了将卷映射至哪个介质。卷可以被认为是到图表200中的指针。
本文中使用的术语“介质”被定义为数据的逻辑分组。介质可以具有用以标识数据的逻辑分组的对应标识符。每个介质还可以包括逻辑块编号到内容位置的映射、重复数据删除条目以及其它信息,或者与逻辑块编号到内容位置的映射、重复数据删除条目以及其它信息相关联。在一个实施例中,尽管介质标识符可以被存储控制器使用,但是介质标识符可能不是用户可见的。用户(或者客户端)可以发送伴随有卷ID的数据请求以指定请求将哪个数据作为目标,以及存储控制器可以将卷ID映射到介质ID,并且随后在处理请求时使用介质ID。
不可将术语“介质”与术语“存储介质”或者“计算机可读存储介质”混淆。存储介质被定义为用于存储数据的实际物理设备(例如,SSD、HDD)。计算机可读存储介质(或者非暂态计算机可读存储介质)被定义为被配置为存储可由处理器或者其它硬件设备执行的程序指令的物理存储介质。实现本文中描述的方法和/或机制的各种类型的程序指令可以在计算机可读介质上传送,或者存储在计算机可读介质上。被配置为存储程序指令的许多类型的介质是可获得的,并且包括硬盘、软盘、CD-ROM、DVD、闪速存储器、可编程ROM(PROM)、随机访问存储器(RAM)以及各种其它形式的易失性或者非易失性存储设备。
还应当注意,术语“卷到介质映射表”可以指代多个表而不是仅单个表。类似地,术语“介质映射表”也可以指代多个表而不是仅单个表。还应当注意,卷到介质映射表205仅是卷到介质映射表的一个示例。其它卷到介质映射表可以具有用于其它数量的卷的其它数量的条目。
在图表200中将每个介质描绘为三个连结的框,其中最左边的框示出了介质ID,中间的框示出了下层介质,以及最右边的框显示介质的状态:(RO-只读)或者(RW-读写)。读-写介质可以被称为活动介质,而只读介质可以表示先前拍摄的快照。在图表200内,介质指向其下层介质。例如,介质20指向介质12,以描绘介质12是介质20的下层介质。介质12还指向介质10,该介质10又指向介质5,该介质5又指向介质1。一些介质是多于一个较高级别介质的下层介质。例如,三个单独介质(12、17、11)指向介质10,两个单独介质(18、10)指向介质5,以及两个单独介质(6、5)指向介质1。作为至少一个较高级别介质的下层介质的介质中的每一个具有只读状态。
图表200左下角上的一组介质是线性组的示例。如图表200中描绘的,首先创建介质3并且随后拍摄快照,从而使得介质3变得稳定(即,在该点之后,在介质3中查找给定块的结果将一直返回相同值)。以介质3作为介质7的下层介质创建介质7。在介质3变得稳定之后写入的任何块被标记为在介质7中。如果在介质7中找到块,则对介质7的查找返回来自介质7的值,但是如果没有在介质7中找到块,则将在介质3中寻找。在稍后的时间,拍摄介质7的快照,介质7变得稳定,以及创建介质14。对介质14中的块的查找将检查介质7并且随后检查介质3,以找到目标逻辑块。最终,拍摄介质14的快照并且在创建介质15的同时介质14变得稳定。此时,在图表200中,随着对卷102的写入转到介质15,介质14是稳定的。
卷到介质映射表205将用户可见的卷映射到介质。每个卷可以被映射到单个介质,也被称为锚介质。如同所有其它介质一样,该锚介质可以应付它自己的查找。多个卷所依赖的介质(诸如介质10)独立于依赖于该介质的卷跟踪该介质自己的块。每个介质还可以被分解为块的范围,并且可以在介质DAG 200中单独地处理每个范围。
现在参考图3,示出了介质映射表300的一个实施例。介质映射表300的任何部分或者整体可以存储在存储控制器110中和/或存储设备135A-N中的一个或多个中。卷标识符(ID)可以用于访问卷到介质映射表205,以确定与卷ID相对应的介质ID。该介质ID随后可以用于访问介质映射表300。注意,表300仅仅是介质映射表的一个示例,以及在其它实施例中,可以采用具有其它数量的条目的其它介质映射表。另外,在其它实施例中,介质映射表可以包括其它属性,并且以与图3所示的方式不同的方式进行组织。还应注意,可以使用任何合适的数据结构来存储映射表信息以便提供高效搜索(例如,B树、二叉树、哈希表等等)。可预期所有这样的数据结构。
如表300的最左列所示,每个介质可以由介质ID标识。范围属性还可以包括在表300的每个条目中,并且范围可以是依据数据块的。数据块的大小(例如,4KB、8KB)可以根据实施例而变化。介质可以被分解为多个范围,并且可以处理介质的每个范围,如同介质的每个范围是具有它自己的属性和映射的独立介质一样。例如,介质ID 2具有两个单独的范围。在表300中,介质ID 2的范围0-99具有与介质ID 2的范围100-299的条目不同的条目。
尽管介质ID 2的这两个范围都映射到下层介质ID 1,但是相同源介质的单独范围可以映射到不同的下层介质。例如,来自介质ID 35的单独范围映射到单独的下层介质。例如,介质ID 35的范围0-299以400的偏移映射到下层介质ID 18。这指示介质ID 35的块0-299映射到介质ID 18的块400-699。另外,介质ID 35的范围300-499以-300的偏移映射到下层介质ID 33,以及介质ID 35的范围500-899以-400的偏移映射到下层介质ID 5。这些条目指示介质ID 35的块300-499映射到介质ID 33的块0-199,而介质ID 35的块500-899映射到介质ID 5的块100-499。注意,在其它实施例中,介质可以被分解为多于三个范围。
表300的状态列记录允许更高效地执行块的查找的信息。状态“Q”指示介质是静止的,“R”指示介质是注册的,以及“U”指示介质是未屏蔽的。在静止状态中,在表300中准确地指定的一个或两个介质上执行查找。在注册的状态中,递归地执行查找。未屏蔽状态确定是否应当在基础介质中执行查找,或者是否应当仅在下层介质中执行查找。尽管没有在表300中针对条目中的任何一个示出,但是另一个状态“X”可以用于指定源介质是未映射的。未映射状态指示源介质包括不可达数据并且可以被丢弃。该未映射状态可以应用于源介质的范围。如果整个介质是未映射的,则介质ID可被输入到序列无效表中并且最终被丢弃。
在一个实施例中,当创建介质时,如果该介质具有下层介质,则该介质处于注册的状态中,或者如果该介质是没有先前存在的状态的全新卷,则该介质处于静止状态中。当介质被写入时,介质的部分可以变成未屏蔽的,其中映射存在于介质本身和下层介质两者中。这可以通过将单个范围分成多个范围条目来完成,多个范围条目中的一些保持原始屏蔽状态,而多个范围条目中的其它条目被标记为未屏蔽的。
另外,表300中的每个条目可以包括基础属性,该基础属性指示介质的基础,该介质的基础在该情况下指向源介质本身。每个条目还可以包括偏移字段,该偏移字段指定当将源介质映射到下层介质时应当应用于块地址的偏移。这允许介质映射到下层介质内的其它位置,而不是仅构建在从下层介质的起始块开始的下层介质的顶部上。如表中300所示,介质8具有500的偏移,该偏移指示介质8的块0将映射到其下层介质(介质1)的块500。因此,经由介质8对介质1的查找将500的偏移添加至请求的原始块编号。偏移列允许介质包括多个介质。例如,在一个实施例中,介质可以包括“最终版本(gold master)”操作系统映像和每个VM(虚拟机)暂存空间。其它灵活的映射也是可能的,并且是可预期的。
每个条目还包括下层介质属性,该下层介质属性指示源介质的下层介质。如果下层介质指向源介质(如同介质1一样),则这指示源介质没有下层介质,并且所有查找将仅在源介质中执行。每个条目还可以包括稳定属性,其中“Y”(是)指示介质是稳定的(或者只读的),以及“N”(否)指示介质是读-写的。在稳定介质中,与介质中的给定块相对应的数据从不改变,然而产生该数据的映射可以改变。例如,尽管介质2是稳定的,但是介质2中的块50可以记录在介质2或者介质1中,该介质2或者介质1在逻辑上以该顺序被搜索,然而如果需要,搜索可以并行进行。在一个实施例中,如果介质被除本身以外的任何介质用作下层介质,则介质将是稳定的。
现在转至图4,示出了删除和恢复卷的操作的一个实施例。用户可能想要删除给定卷,并且可以将删除给定卷的请求传送至存储控制器。正被删除的卷由图4中的卷410表示。在执行删除操作之前,可以存在与卷到介质映射表425A中的卷410相对应的条目,并且该条目可以记录介质415是卷410的锚介质。为了讨论的目的,将假定介质415具有下层介质,并且该下层介质被示出为介质420。根据情景,介质420可以具有下层介质,或者可以不具有下层介质。注意,在一些情形中,介质415可以不具有下层介质。
存储控制器可以通过将卷410到锚介质415的先前映射记录在删除的卷表430中并且在卷到介质映射表425B中删除与卷410相对应的条目来执行卷410的删除操作。在卷到介质映射表425B中划掉卷和锚介质编号,以表示该条目已经从表425B中删除。此外,框图将卷410示出为划掉,以表示卷410已被删除并且卷410与介质415之间不再存在链接。
当从卷到介质映射表425B中删除与卷410相对应的条目时,这将卷410从存储系统有效地删除。由于卷410被删除,因此卷410的锚介质(介质415)将变成稳定的。所删除的卷表430是可以用于存储关于所删除的卷以及它们与锚介质的先前连接的信息的一种类型的存储结构。在其它实施例中,可以采用其它类型的结构以及存储该信息的其它方式。可以存储该信息,以使得允许在稍后的时间点执行所删除的卷的恢复操作。另外,在删除操作之后可以保留与介质415、介质420以及介质映射表中的任何其它下层介质(未示出)相对应的条目。存储控制器可以在已经执行删除操作之后将介质415保留一段时间段。在一些情况下,如果其它卷采用介质415,或者如果其它介质使用介质415作为下层介质,则介质415将被无限期保留。
在执行卷410的删除操作之后的某个时间点处,可以由用户请求卷410的恢复操作。存储控制器可以基于存储在所删除的卷表430中的信息来恢复卷410。图4底部处的虚线框示出了在执行恢复操作之后卷到介质映射表425C的状态。恢复操作使得卷410重新连接到介质415。换句话说,恢复操作将卷410恢复到在执行删除操作之前卷410所处的状态。此时,还可以将介质415的状态从稳定的更新到活动的。
一般而言,存储控制器可以在给定卷的删除操作之后将所删除卷的链接信息保留最小的时间量。替代地,存储控制器可以保留所删除卷的链接信息,直到需要空间来存储其它数据。当存储控制器已经等待了该指定的时间量时,则可以删除与给定卷相对应的链接信息。此时,存储控制器可以立即收回该删除卷的给定锚介质,或者存储控制器可以等待直到更方便收回给定锚介质的稍后的时间点。在一些情况下,存储控制器可以等待收回给定锚介质直到需要空间来存储其它数据的稍后的时间点。如果给定锚介质的任何下层介质不再被其它卷或者介质采用,则还可以收回该给定锚介质的任何下层介质。
现在参考图5,示出了恢复所删除的卷的替代操作的一个实施例。在该实施例中,恢复先前删除的卷410的操作包括在接收恢复卷410的请求之后创建新介质(介质505)。然后,可以在介质映射表515中为介质505创建新条目,并且可以将介质415在介质505下层的指示存储在该新条目中。在介质映射表515中还示出了介质415的现有条目,并且该现有条目将介质420列出为介质415的下层介质。
此外,可以在卷到介质映射表525中创建新条目,并且可以在该新条目中将介质505记录为卷410的锚介质。如可以从图5中的图表所看到的,在恢复操作之后,卷410现在指向介质505,以及介质505指向介质415。通过创建介质505并且将介质505放置在卷410与其先前的锚介质(介质415)之间,存储控制器确保在恢复卷410之后卷410发生的任何变化可以与在删除卷410之前发生的变化区分开。
现在转至图6,示出了用于撤消卷操作的方法600的一个实施例。上面描述的在系统100中实施的组件(例如,存储控制器110)通常可以根据方法600进行操作。另外,以顺序次序示出了该实施例中的步骤。然而,一些步骤可以以与所示的次序不同的次序发生,一些步骤可以同时执行,一些步骤可以与其它步骤结合,以及在另一个实施例中可以缺少一些步骤。
存储控制器可以接收删除第一卷的请求(块605)。响应于接收到该请求,存储控制器可以确定第一卷的锚介质(块610)。存储控制器可以从与卷到介质映射表中的第一卷相对应的条目确定锚介质。为了该讨论的目的,第一卷的锚介质可以被称为“第一介质”。接下来,存储控制器可以存储第一卷与第一介质之间的映射的指示(块615)。在一个实施例中,该映射可以存储在所删除的卷表中。在其它实施例中,映射可以存储在任何其它合适的结构(例如,日志文件)中。在一个实施例中,可以在删除第一卷之后将该映射保留固定的时间量。存储控制器旨在将该映射保留合适的时间段,以允许用户根据需要恢复第一卷。一旦该时间量已经过去,则可以删除映射。在另一个实施例中,可以无限期地保留映射。注意,一旦映射被删除,则存储控制器将无法将第一卷恢复到其先前状态。
接下来,存储控制器可以移除第一卷有效的任何指示(块620)。通过移除第一卷有效的任何指示,存储控制器使第一卷对用户不可用。在一个实施例中,存储控制器可以通过在卷到介质映射表中删除与第一卷相对应的条目来移除第一卷有效的任何指示。该动作可以从存储系统有效地删除第一卷。在其它实施例中,存储控制器可以使用其它技术,以便维护卷与介质之间的映射,而且还将该信息存储在表中。在这些实施例中,存储控制器可以以任何合适的方式更新第一卷的状态。此外,在固定时间量过去之后,存储控制器可以将第一介质标记为准备被收回,然后可以在下次执行垃圾收集操作时删除第一介质。在一些情况下,存储控制器可以在所删除的卷之前优先考虑收回其它类型的自由空间。例如,存储控制器可以尝试在从所删除的卷收回空间之前收回(由于重写而导致的)不可达空间。注意,一旦第一介质被删除,则存储控制器将无法将第一卷恢复到其先前状态。然而,存储控制器可以将第一介质保留相当久的时间段,以便如果用户请求将第一卷恢复到其先前状态的恢复操作,则允许该恢复操作。
然后,在块620之后,在稍后的时间点处,存储控制器可以接收恢复第一卷的请求(块625)。例如,用户可能意识到第一卷被错误地删除,并且因此可能想要将第一卷恢复到其先前状态。可以假定在第一卷到第一介质的映射被删除之前以及在第一介质被删除之前由存储控制器接收恢复第一卷的该请求。响应于接收到恢复第一卷的请求,存储控制器可以在删除的卷表中检索与第一卷相对应的映射(块630)。然后,使用该检索到的映射,存储控制器可以在卷到介质映射表中为第一卷创建条目,并且该条目可以将第一介质记录为第一卷的锚介质(块635)。通过在卷到介质映射表中为第一卷创建该条目,存储控制器将第一卷恢复到其先前状态。在块635之后,方法600可以结束。
现在参考图7,示出了用于恢复所删除的卷的替代方法700的一个实施例。上面描述的在系统100中实施的组件(例如,存储控制器110)通常可以根据方法700进行操作。另外,以顺序次序示出了该实施例中的步骤。然而,一些步骤可以以与所示的次序不同的次序发生,一些步骤可以同时执行,一些步骤可以与其它步骤结合,以及在另一个实施例中可以缺少一些步骤。
存储控制器可以接收恢复先前删除的第一卷的请求(块705)。响应于接收到该请求,存储控制器可以在删除的卷表中检索与第一卷相对应的映射(块710)。所检索到的映射可以在第一卷被删除之前存储第一卷的锚介质的标识,并且为了该讨论的目的,该锚介质可以被称为“第一介质”。此外,响应于接收到该请求,存储控制器可以创建新介质(块715)。为了该讨论的目的,该新介质可以被称为“第二介质”。然后,存储控制器可以在介质映射表中为第二介质创建新条目(块720)。存储控制器可以将第一介质在第二介质下层的指示存储在介质映射表中的该新条目中(块725)。
此外,存储控制器可以在卷到介质映射表中为第一卷生成新条目(块730)。存储控制器可以在卷到介质映射表中的该新条目中将第二介质记录为第一卷的锚介质(块735)。方法700是用于恢复先前删除的卷的替代实现方式。在该替代实现方式中,通过创建新介质以及将所恢复的卷指向该新介质,存储控制器确保所恢复的卷的变化可以与在卷被删除之前发生的任何变化区分开。
注意,上面描述的实施例可以包括软件。在这样的实施例中,实现方法和/或机制的程序指令可以在计算机可读介质上传送,或者存储在计算机可读介质上。被配置为存储程序指令的许多类型的介质是可获得的,并且包括硬盘、软盘、CD-ROM、DVD、闪速存储器、可编程ROM(PROM)、随机访问存储器(RAM)以及各种其它形式的易失性或者非易失性存储设备。
在各种实施例中,本文中描述的方法和机制的一个或多个部分可以形成云计算环境的部分。在这样的实施例中,可以根据一个或多个各种模型通过因特网将资源提供为服务。这样的模型可以包括基础设施即服务(IaaS)、平台即服务(PaaS)以及软件即服务(SaaS)。在IaaS中,计算机基础设施作为服务递送。在这种情况下,计算装置通常由服务供应商拥有和操作。在PaaS模型中,由开发者使用以开发软件解决方案的软件工具和底层装置可以被提供为服务,并且由服务供应商托管。SaaS通常包括根据需要将软件许可为服务的服务供应商。服务供应商可以托管软件,或者可以将软件部署给客户达给定时间段。上面模型的许多组合是可能的,并且是可预期的。
尽管已经非常详细地描述了上面的实施例,但是一旦完全理解了上面的公开内容,则对本领域技术人员来说,许多变型和修改将变得明显。下列权利要求旨在被解释为包括所有这样的变型和修改。