在存储系统中执行复制的制作方法

文档序号:15752266发布日期:2018-10-26 18:00阅读:185来源:国知局
在存储系统中执行复制的制作方法

本发明涉及在存储系统中执行复制卸载(copy offload)操作。



背景技术:

维护数据是经营企业的基本部分,无论是产品开发、人力资源、财务还是在其它方面。作为这种数据的维护的部分,由于各种原因中的任何一个经常出现创建数据副本的需要。创建副本的一个方法包括客户端(例如,经由网络耦合至存储系统)主动地参与复制过程。在该方法中,一个或多个客户端处理器发起和管理在整个复制过程期间传送至存储设备的事务处理。因而,客户端处理器忙于复制操作并且通常不能参与其它工作。复制数据的另一个方法包括将复制过程的管理卸载至另一个或多个处理器。例如,可以将复制过程卸载至随后管理复制过程的存储系统。这种方法可以被称为“复制卸载”。以这种方式,客户端通常被释放以在执行复制的同时执行其它工作。复制卸载操作指的是存储系统将数据(常常是大量数据)从一个位置复制到另一个位置的操作(或者在单个卷内,或者在两个卷之间)。

鉴于以上内容,期望用于高效地执行复制卸载操作的系统和方法。



技术实现要素:

预期用于执行复制卸载操作的系统和方法的各种实施例。

存储系统可以包括存储控制器以及一个或多个存储设备。存储系统可以耦合至一个或多个主机客户端系统。在一个实施例中,存储控制器可以利用卷和介质跟踪存储在存储系统中的客户端数据。介质被定义为数据的逻辑分组,以及每个介质具有用以标识数据的逻辑分组的标识符。存储控制器可以维护卷到介质映射表以将每个卷映射到单个介质,并且该介质被称为卷的锚介质(anchor medium)。每个介质可以被映射到任何数量的其它介质,并且存储控制器还可以维护介质映射表以跟踪介质之间的映射。

当主机系统请求复制卸载操作将数据从第一卷复制到第二卷(或者从第一卷内的第一位置复制到第一卷内的第二位置)时,存储控制器可以仅仅通过操纵卷到介质映射表和介质映射表来执行复制卸载操作,而不用访问正在复制的数据。因此,可以快速地并且以对存储系统资源的最小利用率执行复制卸载操作。

当考虑下列描述和附图时,这些以及其它实施例将变得明显。

附图说明

图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维护。这些映射表可以包括介质映射表和卷到介质映射表。可以利用这些表来记录和维护介质与下层(underlying)介质之间的映射以及卷与介质之间的映射。存储控制器110还可以包括具有多个条目的地址转换表,其中每个条目保持用于对应数据分量的虚拟到物理映射。该映射表可以用于将来自客户端计算机系统115和125中的每一个的逻辑读取/写入请求映射到存储设备135A-N中的物理位置。可以在与接收到的读取/写入请求相对应的查找操作期间,从与给定介质相关联的映射中读取“物理”指针值。术语“映射”被定义为地址转换映射表的一个或多个条目,其将给定介质ID和块编号变换为物理指针值。该物理指针值随后可以用于定位存储设备135A-N内的物理位置。注意,物理指针值可以用于访问存储设备135A-N的给定存储设备内的另一个映射表。因此,物理指针值与目标存储位置之间可以存在一个或多个间接级。

注意,在替换实施例中,客户端计算机、存储控制器、网络、存储设备组和数据存储设备的数量和类型不限于图1中所示的那些。在各种时间,一个或多个客户端可以离线操作。另外,在操作期间,各个客户端计算机连接类型可以随着用户与系统100连接、断开连接和重新连接而改变。此外,本文中描述的系统和方法可以应用于直接附接的存储系统或者网络附接的存储系统,并且可以包括被配置为执行所描述方法的一个或多个方面的主机操作系统。许多这种替代方案是可能的,并且是可预期的。

网络120可以利用各种技术,包括无线连接、直接局域网(LAN)连接、广域网(WAN)连接(诸如因特网)、路由器、存储区域网络、以太网等等。网络120可以包括也可以是无线的一个或者多个LAN。网络120还可以包括远程直接存储器访问(RDMA)硬件和/或软件、传输控制协议/因特网协议(TCP/IP)硬件和/或软件、路由器、中继器、交换机、网格和/或其它。诸如光纤通道、经由以太网的光纤通道(FCoE)、iSCSI等等的协议可以用于网络120。网络120可以提供与用于因特网的一组通信协议(诸如传输控制协议(TCP)和因特网协议(IP)或者TCP/IP)的接口。

客户端计算机系统115和125表示任何数量的固定计算机或者移动计算机,诸如台式个人计算机(PC)、服务器、服务器群、工作站、膝上型计算机、手持式计算机、服务器、个人数字助理(PDA)、智能电话等等。一般而言,客户端计算机系统115和125包括一个或多个处理器,该一个或多个处理器包括一个或多个处理器内核。每个处理器内核包括用于根据预定义的通用指令集执行指令的电路。例如,可以选择x86指令集架构。替换地,可以选择或者任何其它通用指令集架构。处理器内核可以针对数据和计算机程序指令来访问高速缓存子系统。高速缓存子系统可以耦合至存储器分层体系,该存储器分层体系包括随机存取存储器(RAM)和存储设备。

现在参考图2,示出了图示介质的有向非循环图(DAG)200的框图。还示出了卷到介质映射表205,该卷到介质映射表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所示的方式不同的方式进行组织。

如表300的最左列所示,每个介质可以由介质ID标识。范围属性还可以包括在表300的每个条目中,并且范围可以是依据数据块的。数据块的大小(例如,4KB、8KB)可以根据实施例而变化。介质可以被分解为多个范围,并且可以处理介质的每个范围,就如同介质的每个范围是具有它自己的属性和映射的独立介质一样。例如,介质ID 2具有两个单独的范围。在表300中,介质ID 2的范围0-99具有与介质ID 2的范围100-299的条目不同的条目。

尽管介质ID 2的这两个范围都映射到下层介质ID 1,但是相同源介质的单独范围可以映射到不同的下层介质。例如,来自介质ID35的单独范围映射到单独的下层介质。例如,介质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。这些条目指示介质ID35的块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中描绘的复制卸载操作指定卷8的块400-599将要被复制到卷12的块850-1049。尽管在图4中将卷8和卷12的逻辑表示描绘为邻接的数据结构,但是应当理解,与卷8和卷12相对应的数据可以位于整个主机存储系统的存储设备中的许多单独的、非邻接的位置处。

存储控制器可以响应于接收执行该复制卸载操作的请求来确定由卷8和卷12指向哪个介质。在一个实施例中,存储控制器可以查询卷到介质映射表以确定卷8和卷12的锚介质。为了该讨论的目的,可以假定,卷8的锚介质是介质123,而卷12的锚介质是介质234(如卷到介质映射表405A中所示,其表示在执行复制卸载操作之前卷到介质映射表的两个条目)。此外,介质映射表410A表示在执行复制卸载操作之前介质映射表的两个条目。

为了执行所请求的复制卸载操作,存储控制器可以创建介质‘x’,并且将介质123记录为介质x的下层介质。此时,介质123变成稳定的。值‘x’可以是非当前使用的任何介质ID值。此外,如卷到介质映射表405B(表示在执行复制卸载操作之后卷到介质映射表的两个条目)所示,可以将卷8更新为指向介质x。另外,可以创建介质‘y’,并且将介质234记录为介质y的下层介质。此外,可以更新卷12,以使得卷12指向介质y。可以针对被复制到的介质y的范围来创建条目,并且该条目可以将介质123记录为其下层(U)介质。介质y的其它范围的所有其它条目可以使介质234作为下层介质。在介质映射表410B中示出了这些条目,该介质映射表410B表示在执行复制卸载操作之后介质映射表的一部分。注意,介质映射表410A-B的条目可以包括附加于图4中所示的内容的信息。

通过根据上面的步骤执行复制卸载操作,存储控制器能够在实际没有复制讨论中的数据块的情况下执行所请求的复制卸载操作。替代地,仅仅通过对卷到介质映射表和介质映射表进行改变来实现复制卸载操作。因此,没有在实现复制卸载操作时执行立即的数据写入,并且可以以最小的资源利用率、快速地执行复制卸载操作。

复制卸载操作的上述描述还可以应用于执行其它类型的复制卸载操作的其它实施例。例如,在另一个实施例中,可以请求从第一卷的第一范围到多个单独卷的复制卸载操作。对于该复制卸载操作,可以对于源卷执行一次上面描述的与介质'x'和卷8相对应的步骤。可以对被该复制卸载操作作为目标的每个目的地卷重复与介质'y'和卷12相对应的步骤,其中,针对每个目的地卷创建新介质。

在一些实施例中,可以缓冲上面描述的用于执行复制卸载操作的步骤,而不是在接收执行复制卸载操作的请求时立即实现这些步骤。可以缓冲多个复制卸载操作,然后,稍后以批处理模式执行多个复制卸载操作。另外,在一些实施例中,可以延迟与源卷相对应的复制卸载操作的步骤,直到由存储控制器接收到将源卷作为目标的请求。在该时间点,可以执行与源卷相对应的复制卸载操作的部分。类似地,可以延迟与目的地卷相对应的复制卸载操作的步骤,直到由存储控制器接收到将目的地卷作为目标的请求。

现在参考图5,示出了复制卸载操作的另一个实施例的框图。在该复制卸载操作中,正在将一组数据块从卷内的第一位置复制到相同卷内的第二位置。在图5中示出了卷35的逻辑表示,并且正在将数据从位置200-499复制到位置1800-2099。为了该讨论的目的,可以假定,如表505A所示,介质355是卷35的锚介质。在介质映射表510A中示出了介质355的条目,该介质映射表510A表示在执行复制卸载操作之前介质映射表的一个条目。

在一个实施例中,响应于接收执行该复制卸载操作的请求,存储控制器可以创建新介质‘z’。如表505B所示,介质z可以被记录为卷35的锚介质。此外,可以将介质z的三个单独条目添加到介质映射表(该介质映射表的一部分被显示为表510B)。介质z的第一条目针对来自0-1799的数据块的范围,以及该介质z的下层(U)介质被记录为介质355。第一条目的偏移被设定为0。类似地,针对来自2100-N的数据块的范围的介质z的第三条目具有与第一条目相同的属性。第一和第三条目各自具有偏移0,当映射到下层介质(介质355)时使用该偏移0。介质z的第二条目对应于被所复制的数据作为目标的范围(1800-2099)。第二条目还将介质355记录为其下层介质。然而,第二条目具有-1600的偏移,以便映射到与复制卸载操作中指定的数据相对应的、介质355内的正确位置。

通过使用上面描述的技术,存储控制器能够在没有物理地复制所讨论的数据块的情况下完成所请求的复制卸载操作。相反地,仅仅通过操纵卷和介质映射表来执行复制卸载操作,而不用访问数据块。在该复制卸载操作期间没有访问存储有请求复制数据的实际物理存储位置。

现在转至图6,示出了用于执行复制卸载操作的方法600的一个实施例。上面描述的在系统100中实施的组件(例如,存储控制器110)通常可以根据方法600进行操作。另外,以顺序次序示出了该实施例中的步骤。然而,一些步骤可以以与所示的次序不同的次序发生,一些步骤可以同时地执行,一些步骤可以与其它步骤结合,以及在另一个实施例中可以缺少一些步骤。

可以由存储控制器接收执行从第一卷的第一范围到第二卷的第二范围的复制卸载操作的请求(块605)。为了讨论的目的,假定第一卷与第一介质相关联(即,第一卷指向第一介质)。还可以假定,第二卷指向第二介质。在一个实施例中,可以通过查询卷到介质映射表来确定这些关联。

响应于接收该请求,可以创建第三介质并且可以在介质映射表中创建第三介质的新条目(块610)。在各种实施例中,创建新介质的过程包括为介质生成新ID以及为介质映射表中的介质生成新条目。可以存储将第一介质指定为第三介质的下层介质的指示(块615)。在一个实施例中,可以通过在介质映射表的新条目中将第一介质记录为第三介质的下层介质来实现块615。

然后,可以更新卷到介质映射表,以使得第一卷与第三介质相关联(块620)。换句话说,第三介质可以被指定为第一卷的锚介质。此外,可以存储指定第一介质是只读(即,稳定的)的指示符(块625)。在一个实施例中,该指示符可以存储在介质映射表中的对应条目中。

另外,可以创建第四介质并且可以在介质映射表中创建第四介质的新条目(块630)。第二介质可以被指定为第四介质的下层介质(块635)。此外,可以存储指定第一介质的第一范围在第四介质的第二范围下层的指示(块640)。可以针对第四介质的第二范围在介质映射表中创建单独的范围条目,并且该单独的范围条目可以将第四介质的第二范围映射到第一介质的第一范围。在一个实施例中,偏移值可以包括在该范围条目中,以指定第四介质的第二范围如何与第一介质的第一范围对准。第二介质可以保持为第四介质的所有其它范围的下层介质。

另外,第四介质可以被指定为第二卷的锚介质(块645)。更进一步地,可以存储指定第二介质是只读的指示符(块650)。在块650之后,方法600可以结束。可以使用上面描述的方法并行地执行任何数量的复制卸载操作。注意,可以延迟上面的步骤中的一些,直到接收到将受复制偏移操作影响的卷的区域作为目标的读取或者写入操作。

现在参考图7,示出了用于执行复制卸载操作的另一个方法700的一个实施例。上面描述的在系统100中实施的组件(例如,存储控制器110)通常可以根据方法700进行操作。另外,以顺序次序示出了该实施例中的步骤。然而,一些步骤可以以与所示的次序不同的次序发生,一些步骤可以同时地执行,一些步骤可以与其它步骤结合,以及在另一个实施例中可以缺少一些步骤。

可以由存储控制器接收执行复制卸载操作的请求(块705)。为了该讨论的目的,假定,复制卸载操作的目标是针对要从第一卷的第一范围复制到第二卷的第二范围的数据。然而,其它操作可以具有不同源和/或目的地。响应于接收该请求,与所接收到的复制卸载请求相对应的操作可以被缓冲,而不是立即被执行(块710)。在各种实施例中,操作可以被单独地缓冲。例如,可以生成、缓冲与第一卷相对应的操作,并且将该操作准备好以在第一卷的第一范围被后续请求作为目标时执行。类似地,可以生成、缓冲与第二卷相对应的操作,并且准备该操作以在将第二卷的第二范围作为目标时执行。

在块710之后,可以确定存储控制器是否已经接收到将受先前接收到的复制卸载操作影响的区域作为目标的读取或者写入请求(条件块715)。如果没有接收到将受影响的位置作为目标的请求(条件块715,“否”支路),则存储控制器可以阻止缓冲的一个或多个复制卸载操作被执行(块720)。在块720之后,可以确定是否已经接收到另一个复制卸载请求(条件块725)。如果已经接收到复制卸载请求(条件块725,“是”支路),则方法700可以返回到块710以缓冲所接收到的复制卸载请求。注意,存储控制器可以在任何时间点接收复制卸载请求(而不仅仅是在由块725表示的时间点),在该情况下,方法700可以相应地跳到块710,以缓冲所接收到的复制卸载请求。如果没有接收到复制卸载请求(条件块725,“否”支路),则方法700可以返回到块715,以确定是否已经接收到将与所缓冲的复制卸载请求相对应的区域作为目标的请求。

如果已经接收到将受影响的位置作为目标的请求(条件块715,“是”支路),则可以由存储控制器执行对应的复制卸载操作(块730)。所缓冲的复制卸载操作可以将源卷和目的地卷作为目标,并且如果所接收到的请求仅将这些卷中的一个作为目标,则仅可以执行将受影响的卷作为目标的复制卸载操作。复制卸载操作的其它部分可以保持被缓冲,并且可以在稍后的时间(当将其对应卷内的位置作为目标时,或者当处理资源空闲并且可供使用时)执行。在块730之后,方法700可以返回到块725,以确定是否已经接收到另一个复制卸载请求。

通过等待执行复制卸载操作直到接收到将受影响区域(或者卷)作为目标的后续请求,可以释放存储系统上的处理资源以执行其它任务。缓冲复制卸载操作还通过阻止额外介质被创建直到实际需要这些介质来提供帮助。可以在不过度加重存储系统负担的情况下接收和缓冲多个复制卸载操作。此外,在存储系统资源可用的时间段期间,存储控制器可以使用空闲的处理能力,并且执行所缓冲的大量复制卸载操作。以此方式,可以在不干扰正在由存储系统执行的其它任务的情况下执行复制卸载操作。相应地,在一些实施例中,存储控制器不是缓冲由块710指示的所有接收到的复制卸载操作,而是可以确定是否应当根据具体情况来缓冲所接收到的复制卸载操作。该确定可以至少基于存储系统的当前操作情况(例如,处理负荷、存储利用率、未决请求的数量)。在其它实施例中,可以自动地缓冲所接收到的复制卸载操作,并且当缓冲的复制卸载操作数量超过阈值时,存储控制器可以随后以批处理模式执行多个复制卸载操作。在这些实施例中,如果接收到将受影响的区域作为目标的数据请求,则可以在其它复制卸载操作保持被缓冲的同时,执行对应的缓冲的复制卸载操作。

注意,上面描述的实施例可以包括软件。在这种实施例中,实现方法和/或机制的程序指令可以在计算机可读介质上传送或者存储在计算机可读介质上。被配置为存储程序指令的许多类型的介质是可获得的,并且包括硬盘、软盘、CD-ROM、DVD、闪速存储器、可编程ROM(PROM)、随机访问存储器(RAM)以及各种其它形式的易失性或者非易失性存储设备。

在各种实施例中,本文中描述的方法和机制的一个或多个部分可以形成云计算环境的部分。在这样的实施例中,可以根据一个或多个各种模型,通过因特网将资源提供为服务。这样的模型可以包括基础设施即服务(IaaS)、平台即服务(PaaS)以及软件即服务(SaaS)。在IaaS中,计算机基础设施作为服务递送。在这种情况下,计算装置通常由服务供应商拥有和操作。在PaaS模型中,由开发者使用以开发软件解决方案的软件工具和底层装置可以被提供为服务,并且由服务供应商托管。SaaS通常包括根据需要将软件许可为服务的服务供应商。服务供应商可以托管软件,或者可以将软件部署给客户达给定时间段。上面模型的许多组合是可能的,并且是可预期的。

尽管已经非常详细地描述了上面的实施例,但是一旦完全理解了上面的公开内容,则对本领域技术人员来说,许多变型和修改将变得明显。下列权利要求旨在被解释为包括所有这样的变型和修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1