专利名称:计算系统、介质以及用于计算系统的方法
专利类型:实用新型专利
专利申请号:CN202110425438.4
专利申请(专利权)人:慧与发展有限责任合伙企业
权利人地址:美国德克萨斯州
专利发明(设计)人:A·阿布埃尔瓦法,M·瓦达吉里
专利摘要:本公开涉及跟踪存储卷在数据传递期间的变化。在一些示例中,一种系统在第一传递操作中将第一存储位置的第一存储卷的数据传递到第二存储位置的第二存储卷。所述系统响应于所述第一存储卷的数据到所述第二存储卷的所述传递的完成而激活跟踪信息,以跟踪所述第二存储卷的数据部分的变化,所述跟踪信息包括映射到所述第二存储卷的相应不同数据部分的多个指示符。作为在所述第一传递操作之后的第二传递操作的一部分,所述系统将由所述跟踪信息指示的已改变数据从所述第二存储卷传递到所述第一存储卷,而不将所述第二存储卷中的未改变数据传递到所述第一存储卷。
主权利要求:
1.一种非暂态机器可读存储介质,包括指令,所述指令在执行时使计算系统:在传递操作中,将源存储系统处的源存储卷的数据传递到目的地存储系统处的目的地存储卷;
响应于所述源存储卷的数据到所述目的地存储卷的所述传递的完成而激活目的地跟踪信息,以跟踪所述目的地存储卷的数据部分的变化,所述目的地跟踪信息包括映射到所述目的地存储卷的相应不同数据部分的多个指示符,其中,所述多个指示符的第一子集中的指示符被设置为第一值以指示所述目的地存储卷的对应数据部分尚未改变,并且所述多个指示符的第二子集中的指示符被设置为不同的第二值以指示所述目的地存储卷的对应数据部分已改变;以及作为在所述传递操作之后的回滚操作的一部分:
同步所述目的地跟踪信息与针对所述源存储卷的源跟踪信息,所述源跟踪信息包括映射到所述源存储卷的相应不同数据部分的多个指示符,其中,所述源跟踪信息的所述多个指示符中的每个指示符指示所述源存储卷的所述不同数据部分中的对应数据部分是否已改变,并且其中,所述同步包括将设置为所述第二值的所述目的地跟踪信息的所述多个指示符的所述第二子集传递到所述源跟踪信息,在所述同步之后,将所述源存储卷切换为在线,以及
在所述同步和所述切换之后,将由所述源跟踪信息指示的已改变数据从所述目的地存储卷传递到所述源存储卷,而不将所述目的地存储卷中的未改变数据传递到所述源存储卷。
2.如权利要求1所述的非暂态机器可读存储介质,其中,所述源存储卷是将通过所述传递操作从所述源存储系统传递到所述目的地存储系统的存储卷一致性集的一部分,其中,所述指令在执行时使所述计算系统:基于单独的存储卷来阻塞以所述存储卷一致性集中的所述源存储卷为目标的主机输入/输出(I/O)请求。
3.如权利要求2所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述计算系统:作为所述存储卷一致性集的所述传递的一部分,针对所述存储卷一致性集中的相应单独存储卷的数据已完成向其传递的每个对应的单独目的地存储卷,来激活相应目的地跟踪信息。
4.如权利要求3所述的非暂态机器可读存储介质,其中,针对与所述存储卷一致性集中的各单独存储卷的第一子集相对应的目的地存储卷而被激活的所述目的地跟踪信息允许在所述存储卷一致性集中的各单独存储卷的第二子集的数据尚未完成传递时对所述目的地存储卷执行写入。
5.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述计算系统:响应于在其中所述目的地跟踪信息的所述多个指示符的所述第二子集已被传递到所述源跟踪信息的所述同步的完成:将所述目的地存储卷切换为离线,以及
在将所述目的地存储卷切换为离线以及将所述源存储卷切换为在线之后,作为后台数据同步进程执行将所述已改变数据从所述目的地存储卷到所述源存储卷的所述传递。
6.如权利要求5所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述计算系统:在所述后台数据同步进程期间:
接收针对所述源存储卷的第一数据部分的输入/输出(I/O)请求,针对所述第一数据部分,所述源跟踪信息中的相应指示符被设置为指示所述第一数据部分已在所述目的地存储卷处被改变的值,以及响应于所述I/O请求,由所述源存储系统从所述目的地存储卷获取已改变的所述第一数据部分以满足所述I/O请求。
7.如权利要求6所述的非暂态机器可读存储介质,其中,相对于所述后台数据同步进程的已改变数据部分的传递顺序,对已改变的所述第一数据部分从所述目的地存储卷的所述获取是乱序的。
8.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述计算系统:使用所述源存储系统处的所述源跟踪信息来识别所述目的地存储卷中的相对于所述源存储卷已改变的数据部分。
9.如权利要求6所述的非暂态机器可读存储介质,其中,所述将所述目的地存储卷切换为离线使得主机输入/输出(I/O)请求不再被指向所述目的地存储卷,并且所述将所述源存储卷切换为在线使得主机I/O请求被指向所述源存储卷。
10.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述计算系统:响应于作为所述回滚操作的一部分将已改变数据部分从所述目的地存储卷到所述源存储卷的传递,将所述源跟踪信息中的相应指示符从所述第二值重置为所述第一值。
11.如权利要求1所述的非暂态机器可读存储介质,其中,所述回滚操作是基于所述目的地跟踪信息与所述源跟踪信息的所述同步的瞬时回滚。
12.一种计算系统,包括:
处理器;以及
存储有指令的非暂态存储介质,所述指令能够在所述处理器上执行以:
发起传递操作以将源存储系统处的源存储卷的数据传递到目的地存储系统处的目的地存储卷;
响应于所述源存储卷的数据到所述目的地存储卷的单独的传递的完成而激活目的地跟踪信息,以跟踪所述目的地存储卷的数据部分的变化,所述目的地跟踪信息包括映射到相应目的地存储卷的相应不同数据部分的多个指示符,其中,所述多个指示符的第一子集中的指示符被设置为第一值以指示所述目的地存储卷的对应数据部分尚未改变,并且所述多个指示符的第二子集中的指示符被设置为不同的第二值以指示所述目的地存储卷的对应数据部分已改变;以及作为在所述传递操作之后的回滚操作的一部分:
同步所述目的地跟踪信息与针对所述源存储卷的源跟踪信息,所述源跟踪信息包括映射到所述源存储卷的相应不同数据部分的多个指示符,其中,所述源跟踪信息的所述多个指示符中的每个指示符指示所述源存储卷的所述不同数据部分中的对应数据部分是否已改变,并且其中,所述同步包括将设置为所述第二值的所述目的地跟踪信息的所述多个指示符的所述第二子集传递到所述源跟踪信息,在所述同步之后,将所述源存储卷切换为在线,以及
在所述同步和所述切换之后,将由所述源跟踪信息指示的已改变数据从所述目的地存储卷传递到所述源存储卷,而不将所述目的地存储卷中的未改变数据传递到所述源存储卷。
13.如权利要求12所述的计算系统,其中,所述指令能够在所述处理器上执行以:响应于在其中所述目的地跟踪信息的所述多个指示符的所述第二子集已被传递到所述源跟踪信息的所述同步的完成:将所述目的地存储卷切换为离线,以及
在将所述源存储卷切换为在线以及将所述目的地存储卷切换为离线之后,作为后台数据同步进程执行将所述已改变数据从所述目的地存储卷到所述源存储卷的所述传递。
14.如权利要求12所述的计算系统,其中,所述指令能够在所述处理器上执行以:响应于与所述传递操作相关联的故障状况而发起所述回滚操作。
15.如权利要求12所述的计算系统,其中,所述目的地跟踪信息具有可变的粒度以跟踪不同大小的数据部分。
16.如权利要求13所述的计算系统,其中,所述指令能够在所述处理器上执行以:在所述后台数据同步进程期间:
接收针对所述源存储卷的第一数据部分的输入/输出(I/O)请求,针对所述第一数据部分,所述源跟踪信息中的相应指示符被设置为指示所述第一数据部分已在所述目的地存储卷处被改变的值,以及响应于所述I/O请求,由所述源存储系统从所述目的地存储卷获取已改变的所述第一数据部分以满足所述I/O请求,其中,相对于所述后台数据同步进程的已改变数据部分的传递顺序,对已改变的所述第一数据部分从所述目的地存储卷的所述获取是乱序的。
17.一种用于计算系统的方法,所述计算系统包括硬件处理器,所述方法包括:将数据从源存储系统处的源存储卷传递到目的地存储系统处的目的地存储卷;
响应于所述传递而激活目的地跟踪信息,以跟踪所述目的地存储卷的数据部分的变化,所述目的地跟踪信息包括映射到所述目的地存储卷的相应不同数据部分的多个指示符,其中,所述目的地跟踪信息的所述多个指示符中的每个指示符指示所述目的地存储卷的所述不同数据部分中的对应数据部分是否已改变;
作为数据从所述目的地存储卷到所述源存储卷的回滚的一部分,同步所述目的地跟踪信息与针对所述源存储卷的源跟踪信息,所述源跟踪信息包括映射到所述源存储卷的相应不同数据部分的多个指示符,其中,所述源跟踪信息的所述多个指示符中的每个指示符指示所述源存储卷的所述不同数据部分中的对应数据部分是否已改变,并且其中,所述同步包括将所述目的地跟踪信息的已更新的指示符传递到所述源跟踪信息,所述已更新的指示符每个均被设置指示所述目的地存储卷的相应数据部分相对于所述源存储卷的对应数据部分已改变的值;
在所述同步之后,将所述源存储卷切换为在线,以及
在所述同步和所述切换之后,作为所述回滚的一部分,将由所述源跟踪信息指示的已改变数据从所述目的地存储卷传递到所述源存储卷,而不将所述目的地存储卷中的未改变数据传递到所述源存储卷。
18.如权利要求17所述的方法,包括:
响应于在其中所述目的地跟踪信息的所述已更新的指示符已被传递到所述源跟踪信息的所述同步的完成:将所述目的地存储卷切换为离线,以及
在将所述目的地存储卷切换为离线以及将所述源存储卷切换为离线之后,作为后台数据同步进程执行将所述已改变数据从所述目的地存储卷到所述源存储卷的所述传递。
19.如权利要求18所述的方法,包括:
在所述后台数据同步进程期间:
接收针对所述源存储卷的第一数据部分的请求,针对所述第一数据部分,所述源跟踪信息中的相应指示符被设置为指示所述第一数据部分已在所述目的地存储卷处被改变的值,以及响应于所述请求,由所述源存储系统从所述目的地存储卷获取已改变的所述第一数据部分。
20.如权利要求19所述的方法,其中,相对于所述后台数据同步进程的已改变数据部分的传递顺序,对已改变的所述第一数据部分从所述目的地存储卷的所述获取是乱序的。 说明书 : 计算系统、介质以及用于计算系统的方法技术领域[0001] 本公开总体涉及计算系统。背景技术[0002] 存储系统用于存储一个或多个计算设备的数据。在一些示例中,存储系统可以直接连接到计算设备。在其他示例中,存储系统可由计算设备通过网络访问。发明内容[0003] 在一个方面,本公开提供了一种非暂态机器可读存储介质,包括指令,所述指令在执行时使计算系统:在传递操作中,将源存储系统处的源存储卷的数据传递到目的地存储系统处的目的地存储卷;响应于所述源存储卷的数据到所述目的地存储卷的所述传递的完成而激活目的地跟踪信息,以跟踪所述目的地存储卷的数据部分的变化,所述目的地跟踪信息包括映射到所述目的地存储卷的相应不同数据部分的多个指示符,其中,所述多个指示符的第一子集中的指示符被设置为第一值以指示所述目的地存储卷的对应数据部分尚未改变,并且所述多个指示符的第二子集中的指示符被设置为不同的第二值以指示所述目的地存储卷的对应数据部分已改变;以及作为在所述传递操作之后的回滚操作的一部分:同步所述目的地跟踪信息与针对所述源存储卷的源跟踪信息,所述源跟踪信息包括映射到所述源存储卷的相应不同数据部分的多个指示符,其中,所述源跟踪信息的所述多个指示符中的每个指示符指示所述源存储卷的所述不同数据部分中的对应数据部分是否已改变,并且其中,所述同步包括将设置为所述第二值的所述目的地跟踪信息的所述多个指示符的所述第二子集传递到所述源跟踪信息,在所述同步之后,将所述源存储卷切换为在线,以及在所述同步和所述切换之后,将由所述源跟踪信息指示的已改变数据从所述目的地存储卷传递到所述源存储卷,而不将所述目的地存储卷中的未改变数据传递到所述源存储卷。[0004] 在一个方面,本公开提供了一种计算系统,包括:处理器;以及存储有指令的非暂态存储介质,所述指令能够在所述处理器上执行以:发起传递操作以将源存储系统处的源存储卷的数据传递到目的地存储系统处的目的地存储卷;响应于所述源存储卷的数据到所述目的地存储卷的单独的传递的完成而激活目的地跟踪信息,以跟踪所述目的地存储卷的数据部分的变化,所述目的地跟踪信息包括映射到相应目的地存储卷的相应不同数据部分的多个指示符,其中,所述多个指示符的第一子集中的指示符被设置为第一值以指示所述目的地存储卷的对应数据部分尚未改变,并且所述多个指示符的第二子集中的指示符被设置为不同的第二值以指示所述目的地存储卷的对应数据部分已改变;以及作为在所述传递操作之后的回滚操作的一部分:同步所述目的地跟踪信息与针对所述源存储卷的源跟踪信息,所述源跟踪信息包括映射到所述源存储卷的相应不同数据部分的多个指示符,其中,所述源跟踪信息的所述多个指示符中的每个指示符指示所述源存储卷的所述不同数据部分中的对应数据部分是否已改变,并且其中,所述同步包括将设置为所述第二值的所述目的地跟踪信息的所述多个指示符的所述第二子集传递到所述源跟踪信息,在所述同步之后,将所述源存储卷切换为在线,以及在所述同步和所述切换之后,将由所述源跟踪信息指示的已改变数据从所述目的地存储卷传递到所述源存储卷,而不将所述目的地存储卷中的未改变数据传递到所述源存储卷。[0005] 在一个方面,本公开提供了一种用于计算系统的方法,所述计算系统包括硬件处理器,所述方法包括:将数据从源存储系统处的源存储卷传递到目的地存储系统处的目的地存储卷;响应于所述传递而激活目的地跟踪信息,以跟踪所述目的地存储卷的数据部分的变化,所述目的地跟踪信息包括映射到所述目的地存储卷的相应不同数据部分的多个指示符,其中,所述目的地跟踪信息的所述多个指示符中的每个指示符指示所述目的地存储卷的所述不同数据部分中的对应数据部分是否已改变;作为数据从所述目的地存储卷到所述源存储卷的回滚的一部分,同步所述目的地跟踪信息与针对所述源存储卷的源跟踪信息,所述源跟踪信息包括映射到所述源存储卷的相应不同数据部分的多个指示符,其中,所述源跟踪信息的所述多个指示符中的每个指示符指示所述源存储卷的所述不同数据部分中的对应数据部分是否已改变,并且其中,所述同步包括将所述目的地跟踪信息的已更新的指示符传递到所述源跟踪信息,所述已更新的指示符每个均被设置指示所述目的地存储卷的相应数据部分相对于所述源存储卷的对应数据部分已改变的值;在所述同步之后,将所述源存储卷切换为在线,以及在所述同步和所述切换之后,作为所述回滚的一部分,将由所述源跟踪信息指示的已改变数据从所述目的地存储卷传递到所述源存储卷,而不将所述目的地存储卷中的未改变数据传递到所述源存储卷。附图说明[0006] 关于以下附图描述了本公开的一些实施方式。[0007] 图1是根据一些示例的用于在存储卷之间传递数据的布置的框图。[0008] 图2是根据一些示例的用于在源存储卷与目的地存储卷之间传递数据的布置的框图。[0009] 图3A和图3B是根据各种示例的包括被映射到存储卷的相应数据部分的跟踪指示符的跟踪结构的框图。[0010] 图4是根据一些示例的数据迁移过程的流程图。[0011] 图5和图6是根据各种示例的回滚过程的流程图。[0012] 图7是根据一些示例的存储有机器可读指令的存储介质的框图。[0013] 图8是根据一些示例的计算系统的框图。[0014] 图9是根据一些示例的过程的流程图。[0015] 在所有附图中,相同的附图标记指代相似但不一定相同的元件。附图不一定成比例,并且可以放大一些零件的尺寸以更清楚地图示所示出的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。具体实施方式[0016] 在本公开中,除非上下文另外明确指示,否则使用术语“一(a/an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包括(includes/including/comprises/comprising)”或“具有(have/having)”指明存在所述元件,但不排除存在或添加其他元件。[0017] 可以出于各种目的在不同存储系统之间执行数据的迁移。在一些示例中,数据的迁移可以指将数据从第一存储位置复制到第二存储位置,其中数据的副本保持在第一存储位置处。可替代地,数据的迁移可以指将数据从第一存储位置移动到第二存储位置,其中数据未保持在第一存储位置处。[0018] “存储位置”可以指物理存储系统(或物理存储系统的一部分)或任何的存储系统集合。存储系统可以包括存储设备或多个存储设备的集合。存储设备的示例包括基于磁盘的存储设备、固态存储设备等。[0019] 在以下场景中的任何场景中,可以将数据从第一存储位置迁移到第二存储位置:响应于在第一存储位置处检测到错误;作为将第一存储系统升级到不同的(例如,更高性能的)第二存储系统以将数据移动到目标位置(例如,物理上靠近要使用数据的(多个)计算设备的位置、比先前位置更安全的位置等)的一部分;或出于任何其他目的。[0020] 在一些情况下,数据可以存储在存储卷集合(collectionofstoragevolumes)中。“存储卷”可以指作为用于存储数据的逻辑存储单元的虚拟卷。例如,特定实体(例如,程序、用户、机器等)的数据可以被存储在存储卷集合中,比如以便将用于特定实体的数据分布在存储卷集合上。在另外的示例中,存储卷集合中的存储卷可以对彼此有一定的依赖性,其中一个存储卷中的数据依赖于集合中的另一个存储卷中的数据。[0021] 出于数据迁移的目的,存储卷集合可以被称为“存储卷一致性集(consistencysetofstoragevolumes)”。存储卷一致性集是指要作为群组从第一存储位置迁移到第二存储位置的存储卷分组。如果存储卷一致性集中的任何存储卷不能成功地从第一存储位置迁移到第二存储位置,则存储卷一致性集的迁移不会成功。[0022] 迁移存储卷是指将由存储卷存储的数据从源存储位置传递(复制或移动)到目的地存储位置,这意味着数据从与源存储位置的(多个)物理存储设备相关联的存储卷(“源存储卷”)传递到与目的地存储位置的(多个)物理存储设备相关联的存储卷(“目的地存储卷”)。[0023] 在一些示例中,随着存储卷集合从源存储位置迁移到目的地存储位置,写入可以关于目的地存储位置(“目的地存储卷”)处迁移的存储卷进行,这可能导致对目的地存储卷进行改变。“迁移的存储卷”(或等效地,“目的地存储卷”)是指与同源存储位置相关联的源存储卷的数据已传递到的目的地存储位置相关联的存储卷。[0024] 在一些情况下,对目的地存储卷进行的改变可能不会同步到源存储位置处的对应源存储卷。因此,源存储位置处的源存储卷中的数据可能变得陈旧。如果数据迁移由于任何原因而中止,使得执行回滚回到源存储位置,则可能必须执行将目的地存储位置处的目的地存储卷完全脱机复制到源存储位置,以避免由于回滚导致的数据丢失。执行目的地存储卷的完全复制可能是耗时的并且会消耗大量资源(包括处理、通信和存储资源)(尤其是如果目的地存储卷较大或如果一致性集包括大量存储卷的话)。[0025] 在替代性示例中,当将存储卷集合从源存储位置迁移到目的地存储位置时,在完成数据迁移之后,一次将存储卷集合从源存储位置一起切换到目的地存储位置。将存储卷集合从源存储位置切换到目的地存储位置意味着以存储卷集合为目标的输入/输出(I/O)请求重定向到目的地存储位置并且从目的地存储卷而不是从源存储位置处的源存储卷得到满足。可以在发出I/O请求的主机系统处、在主机系统与存储系统之间的通信架构中的中介系统处等执行I/O请求的重定向。[0026] 在这种替代性示例中,为了支持一次将存储卷集合一起切换,可以将数据迁移期间目的地存储位置处的目的地存储卷的任何变化同步(镜像)到源存储位置处的对应源存储卷。在数据迁移期间必须将对目的地存储卷中的数据进行的更新与对应的源存储卷同步(镜像)会消耗大量资源,这可能降低存储系统的性能。[0027] 此外,在这种替代性示例中,一旦存储卷集合的数据已经成功地从源存储位置传递到目的地存储位置,就可以发起对以存储卷集合为目标的I/O访问的I/O阻塞。在I/O阻塞期间,从主机系统(或多个主机系统)接收到的I/O请求可以存储在队列中,以便当I/O阻塞被去除时进行后续处理。当对I/O请求进行排队时,存储系统可以不响应于I/O请求而以成功指示(例如,肯定确认)对I/O请求作出响应。因此,(多个)主机系统可能在接收指示I/O请求在存储系统处完成的成功指示时经历延迟。如果存储卷集合中的存储卷数量较大,则在主机系统未在指定的持续时间内接收到响应于主机系统发出的I/O请求的成功指示时,主机系统处可能发生I/O超时。此外,即使主机系统要在指定的持续时间内接收响应于I/O请求的成功指示,主机系统也可能检测到I/O响应中的高等待时间,这可能是不期望的。[0028] 根据本公开的一些实施方式,可以基于针对存储卷一致性集中的相应的各单独存储卷维持的跟踪数据结构(trackingdatastructure)的使用,以更高效的方式执行存储卷一致性集的数据迁移。在一致性集中的给定存储卷单独完成从源存储位置到目的地存储位置的迁移时,可以针对给定存储卷激活跟踪数据结构。跟踪数据结构可以包括跟踪对给定存储卷中的数据部分进行的变化的跟踪信息。在一些示例中,所跟踪的变化包括覆写给定存储卷的数据部分中的先前数据,而不在目的地存储位置处维持先前数据的副本。数据部分中的“先前数据”包括先前存储在数据部分中的数据,并且所跟踪的变化覆写先前存储的数据,并且在覆写之后不维持先前存储的数据的副本。跟踪数据结构可以具有各种形式中的任何形式,如跟踪位图(包括表示存储卷的对应数据部分是否已改变的一系列位或位阵列)。[0029] 更一般地,跟踪数据结构的跟踪信息可以包括映射到存储卷的对应数据部分的指示符。“指示符”可以由单个数据位或数据位集合构成。指示符可以被设置为多个值之一。指示符的第一值可以指示对应的数据部分尚未改变。指示符的第二值可以指示对应的数据部分已改变。[0030] 图1是包括源存储系统102和目的地存储系统104的示例布置的框图。如结合存储系统102和104使用的标签“源”和“目的地”假设了其中数据要从存储系统102迁移到存储系统104的示例。在其他示例中,如果要将数据从存储系统104迁移到存储系统102,则存储系统104可以被称为源存储系统,并且存储系统102可以被称为目的地存储系统。[0031] 存储系统102和104连接到通信架构106,所述通信架构可以使用局域网(LAN)、广域网(WAN)、存储区域网(SAN)或任何其他类型的网络中的任何一项或某种组合来实施。主机系统108能够通过发出用于访问数据(读取数据和/或写入数据)的I/O请求来访问存储系统102或104。由主机系统108发出的I/O请求通过通信架构106传输到存储系统102或104。[0032] 主机系统包括能够发出I/O请求的计算设备(或多个计算设备)。计算设备的示例包括以下各项中的任何一项或某种组合:台式计算机、笔记本计算机、平板计算机、服务器计算机、智能电话、游戏器具、物联网(IoT)设备等。[0033] 尽管在图1中仅示出了一个主机系统108,但是应注意,在其他示例中,多个主机系统108可以访问存储系统102或104。同样,在其他示例中,可以有两个以上的存储系统。[0034] 图1还示出了迁移系统110,所述迁移系统包括用于将数据从源存储系统102迁移到目的地存储系统104的迁移引擎112。如这里所使用的,“引擎”可以指硬件处理电路,所述硬件处理电路可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列或另一个硬件处理电路中的任何一项或某种组合。可替代地,“引擎”可以指硬件处理电路和可在硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。[0035] 迁移系统110可以与源存储系统102和目的地存储系统104分离。如这里所使用的,“系统”可以指计算设备或计算设备集合。[0036] 在其他示例中,代替在单独的迁移系统110中实施迁移引擎112,反而可以将迁移引擎112包括在源存储系统102中和/或目的地存储系统104中。[0037] 源存储系统102包括存储设备114的阵列,并且目的地存储系统104包括存储设备116的阵列。尽管每个存储系统102或104被描绘为具有多个存储设备,但是在其他示例中,存储系统102或104可以仅包括一个存储设备。[0038] 源存储系统102包括被布置为源存储卷的源集合118的虚拟卷。源存储卷的数据可以在存储设备114的阵列上存储。源存储卷的源集合118是作为数据迁移的一部分、要作为群组而迁移的存储卷一致性集,使得如果源集合118中的源存储卷中的任何源存储卷无法成功迁移,那么数据迁移将被中止。[0039] 数据迁移将源集合118中的源存储卷的数据传递到目的地存储系统104中的目的地存储卷的目的地集合122。目的地存储卷的数据在目的地存储系统104中的存储设备116的阵列上存储。[0040] 根据本公开的一些实施方式,迁移引擎112使用跟踪数据结构124,所述跟踪数据结构包含用于跟踪对目的地集合122中的相应目的地存储卷中的数据部分进行的变化的相应跟踪信息。随着单独的源存储卷的传递完成,针对每个目的地存储卷激活跟踪数据结构124。[0041] 在一些示例中,跟踪数据结构124存储在迁移系统110的存储器126中。可以使用存储器设备或存储器设备集合实施存储器126,其中,每个存储器设备可以包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或任何其他类型的存储器设备中的任何一项。[0042] 在另外的示例中,跟踪数据结构124可以存储在目的地存储系统104的存储器中。在一些示例中,仅针对目的地存储卷维持跟踪数据结构124,并且不针对源存储卷维持跟踪数据结构124的副本。[0043] 在替代性示例中,跟踪数据结构124的副本也可以存储在源存储系统102的存储器中。在这种替代性示例中,可以将用于目的地存储卷的跟踪数据结构124的变化同步(例如,以周期性间隔或以其他间隔)到源存储系统102处的跟踪数据结构124的副本。[0044] 可以使用各种不同的技术中的任何一种技术发起数据迁移。例如,用户设备130处的用户可以手动发起从源存储系统102到目的地存储系统104的数据迁移。在一些示例中,协调器引擎132可由用户设备130访问(通过网络,所述网络可以是通信架构106或不同的网络)以允许发起数据迁移。例如,协调器引擎132可以是可以由用户设备130通过网络访问的服务器的一部分。协调器引擎132可以在用户设备130处呈现用户界面,在所述用户界面处,用户设备130的用户可以进行选择以发起数据迁移。[0045] 在其他示例中,可以基于检测到触发状况由程序或由机器发起数据迁移。例如,触发状况可以是源存储系统102正在经历可以指示源存储系统102将要发生故障的错误或故障的状况。[0046] 图2示出了源集合118中的源存储卷到目的地集合122中的相应目的地存储卷的数据迁移(202)的示例。数据迁移(202)由迁移引擎112管理。[0047] 在图2的示例中,源集合118包括源存储卷118‑1、118‑2和118‑3。尽管示例是指三个源存储卷,但是应注意,在不同示例中,不同数量(一个或大于一个)的源存储卷可以是源集合118的一部分。[0048] 源存储卷118‑1、118‑2和118‑3的数据要作为数据迁移(202)的一部分传递到相应目的地存储卷122‑1、122‑2和122‑3,所述目的地存储卷是目的地集合122的一部分。[0049] 根据本公开的一些实施方式,在每个源存储卷118‑i(i=1至3)的数据由迁移引擎112单独地传递到对应目的地存储卷122‑i时,可以激活相应跟踪数据结构124‑i(图2中所示的124‑1、124‑2、124‑3中的一个),以跟踪对相应目的地存储卷122‑i(122‑1、122‑2、122‑3中的一个)中的数据部分进行的改变。[0050] 在一些示例中,针对相应源存储卷118‑1、118‑2和118‑3维持跟踪数据结构124‑1、124‑2和124‑3的副本204‑1、204‑2和204‑3。在其他示例中,没有针对相应源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3;换句话说,没有针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构。作为示例,如果源存储系统102(图1)不支持跟踪数据结构的使用,则将不针对源存储卷118‑1、118‑2和118‑3维持这种跟踪数据结构。[0051] 图3A示出了与相应目的地存储卷122‑i相关联的跟踪数据结构124‑i的示例。在图3A的示例中,跟踪数据结构124‑i中的跟踪信息包括位图,该位图具有与目的地存储卷122‑i的相应数据区间(dataextent)304‑1、304‑2、…、304‑M相对应的多个跟踪位302‑1、302‑2、…、302‑M(M≥2)。每个数据区间是指指定大小的存储空间的单位。[0052] 如果将跟踪位302‑j(j=1至M)设置为第一值(例如,“0”),则所述第一值指示自数据从对应源存储卷118‑i到目的地存储卷122‑i的迁移完成以来,相应数据区间304‑j尚未改变。然而,如果将跟踪位302‑j设置为不同于第一值的第二值(例如,“1”),则所述第二值指示自数据从对应源存储卷118‑i到目的地存储卷122‑i的迁移完成以来,相应数据区间304‑j已改变(例如,通过写入操作)。[0053] 图3B示出了跟踪数据结构124‑i的不同示例。在图3B的示例中,跟踪数据结构124‑i的跟踪信息包括多位跟踪指示符306‑1、306‑2、…、306‑M,所述多位跟踪指示符对应于对应目的地存储卷122‑i的相应数据区间304‑1、304‑2、…、304‑M。使用多位跟踪指示符306‑j允许跟踪目的地存储卷122‑i的每个数据区间304‑j的子区间的变化。将目的地存储卷122‑i的每个数据区间划分为子区间,并且多位跟踪指示符306‑j的每个位可以用于跟踪对目的地存储卷122‑i的数据区间304‑j的对应子区间进行的改变。[0054] 更一般地,跟踪数据结构124‑i中的跟踪信息包括跟踪指示符,以跟踪对目的地存储卷122‑i的对应数据部分(数据区间或子区间)进行的改变。可将跟踪指示符设置为相应不同值以用于指示目的地存储卷中的已改变的数据部分。[0055] 如图3A和图3B中所描绘的,对应于不同大小的数据部分的跟踪指示符的粒度可以是可变的。图3A的跟踪指示符(跟踪位302‑1、302‑2、…、302‑M)各自具有第一长度(长度为一位)以跟踪第一大小(数据区间的大小)的数据部分。图3B的跟踪指示符(多位跟踪指示符306‑1、306‑2、…、306‑M)各自具有不同的第二长度(长度为四位)以跟踪小于第一大小的第二大小(子区间的大小)的数据部分。更一般地,跟踪指示符的粒度可以如由用户、程序、机器或另一个实体可变地设置,以跟踪相应不同大小的数据部分。[0056] 在随后的讨论中,假设跟踪数据结构124‑i的跟踪信息包括跟踪位(例如,图3A中的302‑1、302‑2、…、302‑M)以跟踪对对应数据区间进行的改变。[0057] 当数据从对应源存储卷118‑i到目的地存储卷122‑i的迁移完成后目的地存储卷122‑i中的数据区间改变时,对应跟踪位302‑j从第一值改变为第二值。应注意,跟踪位302‑j保持在第二值,而不管数据区间304‑j在第一次变化之后改变多少次。最初,将每个跟踪位302‑1、302‑2、…、302‑M设置为第一值,因为当数据从源存储卷118‑i到对应目的地存储卷122‑i的迁移最初完成时,并无数据区间改变。[0058] 通过使用跟踪数据结构124‑1、124‑2和124‑3,可以跟踪目的地存储卷122‑1、122‑2和122‑3的已改变部分。当要从目的地存储卷122‑1、122‑2和122‑3执行回滚回到源存储卷118‑1、118‑2和118‑3时(如响应于数据迁移的中止、响应于用户请求等),跟踪数据结构124‑1、124‑2和124‑3中的跟踪信息可以用于识别目的地存储卷的哪些数据部分已改变,使得在回滚期间仅将那些已改变数据部分传递回到相应源存储卷。因此,不必将整个目的地存储卷回滚到相应源存储卷。通过仅传递由跟踪信息识别的目的地存储卷的已改变数据部分以进行回滚,可以减少与回滚操作相关联的资源使用。[0059] 此外,在针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本(例如,图2中的204‑1、204‑2、204‑3)的示例中,回滚可以被视为“瞬时”回滚。当发起回滚时,即使目的地存储卷122‑1、122‑2和122‑3的已改变数据尚未传递回到源存储卷118‑1、118‑2和118‑3,也可以将来自(多个)主机系统的I/O请求(被称为“主机I/O请求”)定向到源存储卷118‑1、118‑2和118‑3。在主机I/O请求可以提交到源存储卷118‑1、118‑2和118‑3而不必等待目的地存储卷122‑1、122‑2和122‑3的已改变数据部分传递回到源存储卷118‑1、118‑2和118‑3的完成的意义上,回滚是“瞬时”的,并且对回滚存储卷的数据的访问是“瞬时”的。[0060] 一旦跟踪数据结构副本204‑1、204‑2和204‑3(用于相应源存储卷118‑1、118‑2和118‑3)与跟踪数据结构124‑1、124‑2和124‑3(用于相应目的地存储卷122‑1、122‑2和122‑3)同步,则可以通过从目的地存储卷122‑1、122‑2和122‑3中取得已改变数据来满足用于访问与已改变数据相关联的源存储卷118‑1、118‑2和118‑3中的数据区间的任何主机I/O请求。[0061] 在不针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3的其他示例中,主机I/O请求则被暂时阻塞,直到由跟踪数据结构124‑1、124‑2和124‑3指示的已改变数据区间被传递回到源存储卷118‑1、118‑2和118‑3。[0062] 在一些示例中,如果给定目的地存储卷中的已改变数据部分的量相对于给定目的地存储卷中的数据部分总数量超过阈值(例如,70%、85%、90%、95%等),则迁移引擎112可以停止跟踪给定目的地存储卷内的已改变数据部分。当已改变数据部分的量超过阈值时,可以关闭跟踪(禁用相应跟踪数据结构),以减少与跟踪变化相关联的开销。如果关闭了针对给定目的地存储卷的跟踪,则将整个给定目的地存储卷复制回到相应源存储卷以进行回滚操作。[0063] 图4是根据本公开的一些实施方式的数据迁移过程400的流程图。尽管在图4中示出了特定的任务序列,但是应注意,在其他示例中,可以改变任务的顺序,可以省略一些任务并且可以添加附加任务。[0064] 迁移引擎112可以响应于用于执行数据迁移(所述数据迁移可以由图1的用户设备130或由另一个实体发起)的请求而开始(在402处)源集合118中的单独源存储卷118‑1、118‑2和118‑3到对应目的地存储卷122‑1、122‑2和122‑3的数据传递。单独源存储卷到相应目的地存储卷的数据传递是独立于另一个源存储卷到另一个目的地存储卷的数据传递来执行的。[0065] 在执行对给定源存储卷118‑i的数据的传递之前的任何时间点处或同时,迁移引擎112触发(在404处)对应跟踪数据结构124‑i的创建。然而,由于此时从给定源存储卷118‑i到给定目的地存储卷122‑i的数据传递尚未完成,因此尚未激活跟踪。创建的跟踪数据结构124‑i包括全部被设置为第一值以指示没有数据部分已改变的跟踪指示符。[0066] 迁移引擎112可以响应于检测到给定源存储卷118‑i到给定目的地存储卷122‑i的数据传递已完成而执行以下任务:暂时阻塞(在406处)对迁移的存储卷的主机I/O访问(通过执行I/O阻塞)、激活(在408处)跟踪数据结构124‑i以开始跟踪给定目的地存储卷122‑i的数据部分的变化并且将给定源存储卷118‑i与给定目的地存储卷122‑i断开(在410处)。[0067] 阻塞对迁移的存储卷的主机I/O请求意味着将主机I/O请求缓存在队列中以供稍后处理。实际上,不允许将I/O请求应用于迁移的存储卷(给定源存储卷118‑i或给定目的地存储卷122‑i)。根据本公开的一些实施方式,可以在数据迁移期间基于每个存储卷执行I/O阻塞,使得不必针对整个存储卷集合实施I/O阻塞。[0068] 将给定源存储卷118‑i与给定目的地存储卷122‑i断开导致主机I/O请求被重定向到给定目的地存储卷122‑i并且进一步导致停止将给定目的地存储卷122‑i处的数据变化镜像回到给定源存储卷118‑i。[0069] 在将给定源存储卷118‑i与给定目的地存储卷122‑i断开之后,主机I/O请求被解除阻塞(在412处)并且被允许相对于给定目的地存储卷122‑i进行处理。[0070] 在针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3(图2)的示例中,迁移引擎112还在断开之后激活(在414处)用于给定源存储卷118‑i的跟踪数据结构副本204‑i。[0071] 在没有针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3(图2)的示例中,省略了任务414。[0072] 在对给定目的地存储卷122‑i的相应数据部分进行改变时,迁移引擎112更新(在416处)跟踪数据结构124‑i中的跟踪信息。应注意,即使(多个)其他源存储卷仍在迁移到(多个)其他目标存储卷的过程中,也允许主机I/O请求对给定目的地存储卷122‑i进行改变。[0073] 针对迁移到对应目的地存储卷的每个源存储卷,重复上述过程(包括任务404、406、408、410、412、414和416)。[0074] 在针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3(图2)的示例中,迁移引擎112可以将跟踪数据结构124‑1、124‑2和124‑3的更新与跟踪数据结构副本204‑1、204‑2和204‑3同步(在418处)。应注意,在418处执行的同步仅将每个跟踪数据结构124‑i的已改变部分传递到相应跟踪数据结构副本204‑i;底层数据没有从目的地存储卷122‑i传递到源存储卷118‑i。[0075] 在没有针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3(图2)的示例中,省略了任务418。[0076] 如果数据迁移成功完成,则迁移引擎112去掉(takedown)(在420处)源存储卷的源集合118并且丢弃(在422处)跟踪数据结构124。去掉源存储卷的源集合118意味着去激活或删除源存储卷。[0077] 图4是成功进行数据迁移使得不执行回滚的示例。[0078] 然而,如果在数据迁移期间发生问题,使得要从目的地存储卷(已完成迁移)执行回滚回到相应源存储卷,则迁移引擎112可以执行以下任务。[0079] 图5示出了示例回滚过程500,在所述示例回滚过程中,以其中针对目的地存储卷122‑1、122‑2和122‑3维持跟踪数据结构124‑1、124‑2和124‑3但是不针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3的布置执行回滚。尽管在图5中示出了特定的任务序列,但是应注意,在其他示例中,可以改变任务的顺序,可以省略一些任务并且可以添加附加任务。[0080] 图6示出了示例回滚过程600,在所述示例回滚过程中,以其中针对目的地存储卷122‑1、122‑2和122‑3维持跟踪数据结构124‑1、124‑2和124‑3并且其中针对源存储卷118‑1、118‑2和118‑3维持跟踪数据结构副本204‑1、204‑2和204‑3的布置执行回滚。尽管在图6中示出了特定的任务序列,但是应注意,在其他示例中,可以改变任务的顺序,可以省略一些任务并且可以添加附加任务。[0081] 如图5所示,当发起回滚时,如由于迁移引擎112检测到在数据迁移期间发生了错误或故障或者响应于来自用户、程序或机器的请求,迁移引擎112暂时阻塞(在502处)对目的地存储卷122‑1、122‑2和122‑3的主机I/O请求。[0082] 迁移引擎112可以将源存储卷118‑1、118‑2和118‑3设置(在504处)为镜像状态,以开始将源存储卷118‑1、118‑2和118‑3的数据与目的地存储卷122‑1、122‑2和122‑3中的数据重新同步。[0083] 迁移引擎112使用用于每个目的地存储卷122‑i的跟踪数据结构124‑i识别(在506)目的地存储卷122‑i中的已改变的数据部分。每个目的地存储卷122‑i的已改变数据部分被传递回到相应源存储卷118‑i,以重建完全同步的镜像(即,源存储卷118‑i是目的地存储卷122‑i的相同副本)。在目的地存储系统104将已改变数据部分推送回到源存储系统102的意义上,此数据传递被视为“推送”操作,因为源存储系统102没有跟踪数据结构来跟踪哪些数据部分已改变并且因此无法请求取得已改变数据部分。[0084] 在已将来自目的地存储卷122‑1、122‑2和122‑3的所有已改变数据部分传递回到相应源存储卷118‑1、118‑2和118‑3之后,回滚完成,并且迁移引擎112可以提供(在508处)回滚完成的通知,使得可以执行切换以将主机I/O请求重定向回到源存储卷(而不是目的地存储卷)。[0085] 如上文所指出的,图5示出了其中不针对源存储卷维持跟踪数据结构副本的示例。[0086] 在图6所示的另一个示例中,针对源存储卷和目的地存储卷两者维持跟踪数据结构。[0087] 如图6所示,当发起回滚时,如由于迁移引擎112检测到在数据迁移期间发生了错误或故障或者响应于来自用户、程序或机器的请求,迁移引擎112使目的地存储系统104停止(在602处)(通过执行I/O阻塞)接受对目的地存储卷122‑1、122‑2和122‑3的主机I/O请求。如上文所指出的,此回滚是瞬时回滚。[0088] 迁移引擎112将跟踪数据结构124‑1、124‑2和124‑3的任何剩余已更新部分(尚未与跟踪数据结构副本204‑1、204‑2和204‑3同步)传递(在604处)到跟踪数据结构副本204‑1、204‑2和204‑3。在一些情况下,跟踪数据结构124‑1、124‑2和124‑3的大多数已更新部分将与跟踪数据结构副本204‑1、204‑2和204‑3同步,作为跟踪数据结构之间的周期性同步的一部分。[0089] 一旦跟踪数据结构124‑1、124‑2和124‑3的所有已改变部分已经被传递到跟踪数据结构副本204‑1、204‑2和204‑3,就可以使目的地存储卷122‑1、122‑2和122‑3脱机(在606处)(即,主机I/O请求不再定向到目的地存储卷122‑1、122‑2和122‑3)。[0090] 迁移引擎112使源存储卷118‑1、118‑2和118‑3联机(在608处),使得将主机I/O请求定向到源存储卷118‑1、118‑2和118‑3。应注意,此时,源存储卷118‑1、118‑2和118‑3中的数据部分中的一些数据部分可能是陈旧的,因为已改变数据部分可能尚未从目的存储卷122‑1、122‑2和122‑3传递回到源存储卷118‑1、118‑2和118‑3。[0091] 源存储系统102还可以开始(在610处)后台数据同步过程以将已改变数据部分(如跟踪数据结构副本204‑1、204‑2和204‑3所指示的)从目的地存储卷122‑1、122‑2和122‑3复制到源存储卷118‑1、118‑2和118‑3。[0092] 进一步,可以在源存储系统102处针对陈旧的数据部分实施局部I/O阻塞(在612处),所述陈旧的数据部分可以由跟踪数据结构副本204‑1、204‑2和204‑3来指示。如果接收到针对源存储卷中的局部阻塞的数据部分的主机I/O请求(即,主机I/O请求正尝试访问由跟踪数据结构副本204‑i指示为在改变的数据),则源存储系统102可以从目的地存储卷请求(在614处)已改变数据部分。应注意,相对于在608处开始的后台数据同步过程,请求的已改变数据部分是乱序的,在所述后台数据同步过程中,已改变数据部分以特定顺序(例如,数据部分标识符的递增顺序或递减顺序)被传递回。[0093] 响应于此请求,已改变数据部分被适时地(opportunistically)传递(在616处)回到源存储卷。在一些示例中,由源存储系统102提交的针对目的地存储卷的已改变数据部分的请求可以被分配更高的优先级,使得可以以更及时的方式将这种已改变数据部分返回到源存储系统102。[0094] 在每个已改变数据部分从目的地存储卷传递到源存储卷(适时地或作为后台同步过程的一部分)时,可以将对应跟踪数据结构副本204‑i中的相应跟踪指示符重置(在618处)为第一值。[0095] 一旦所有已改变数据部分已从目的地存储卷122‑1、122‑2和122‑3复制到源存储卷118‑1、118‑2和118‑3(使用后台数据同步过程和适时传递过程),就建立完全同步的镜像(即,源存储卷的源集合118是目的地存储卷的目的地集合122的相同副本),并且回滚操作完成。[0096] 在完成回滚到源存储卷的源集合118之后,可以执行从源存储卷的源集合118到目的地存储卷的目的地集合122的前滚操作。“前滚”是指在回滚之后重新发起数据迁移以在回滚之后完成数据迁移的过程。在前滚操作中,跟踪数据结构204‑1、204‑2和204‑3与124‑1、124‑2和124‑3的作用相反。在前滚操作中,跟踪数据结构204‑1、204‑2和204‑3响应于对源存储卷118‑1、118‑2和118‑3的主机I/O请求而跟踪已改变数据部分。对跟踪数据结构204‑1、204‑2和204‑3的更新可以间歇地同步到跟踪数据结构124‑1、124‑2和124‑3,并且一旦每个源存储卷118‑1、118‑2和118‑3的数据已传递到目的地存储卷122‑1、122‑2和122‑3,跟踪数据结构124‑1、124‑2和124‑3就可以用于将源存储卷118‑1、118‑2和118‑3的已改变数据部分传递到目的地存储卷122‑1、122‑2和122‑3(不仅适时地并且还作为后台同步的一部分)以完成前滚操作。[0097] 图7是非暂态机器可读或计算机可读存储介质700的框图,所述非暂态机器可读或计算机可读存储介质存储有在执行时使系统执行各种任务的机器可读指令。系统例如可以是迁移系统110、源存储系统102或目的地存储系统104中的任何一项或组合。[0098] 机器可读指令包括数据传递指令702,所述数据传递指令用于在第一传递操作中将第一存储位置的第一存储卷的数据传递到第二存储位置的第二存储卷。数据传递可以是数据迁移的一部分或回滚的一部分或前滚的一部分或任何其他类型的数据传递的一部分。[0099] 在一些示例中,第一存储卷是要通过第一传递操作从第一存储位置传递到第二存储位置的存储卷一致性集的一部分。[0100] 机器可读指令包括跟踪信息激活指令704,所述跟踪信息激活指令用于响应于第一存储卷到第二存储卷的数据传递的完成而激活跟踪信息以跟踪第二存储卷的数据部分的变化,所述跟踪信息包括映射到第二存储卷的相应不同数据部分的多个跟踪指示符。所跟踪的变化包括覆写数据部分中的先前数据,而不在第二存储位置处维持先前数据的副本。[0101] 在一些示例中,针对与存储卷一致性集中的各单独存储卷的第一子集相对应的目的地存储卷而被激活的跟踪信息允许对目的地存储卷执行写入,而存储卷一致性集中的各单独存储卷的第二子集的数据尚未完成传递。[0102] 在由于主机I/O写入而对第二存储卷进行改变时,所述多个指示符的第一子集中的指示符被设置为第一值以指示第二存储卷的对应数据部分尚未改变,并且所述多个指示符的第二子集中的指示符被设置为不同的第二值以指示第二存储卷的对应数据部分已改变。[0103] 在一些示例中,以第一存储卷为目标的主机输入/输出(I/O)请求基于单独存储卷而不是整个存储卷一致性集被阻塞。[0104] 机器可读指令包括已改变数据传递指令706,所述已改变数据传递指令用于作为在第一传递操作之后的第二传递操作的一部分,将由跟踪信息指示的已改变数据从第二存储卷传递到第一存储卷,而不将第二存储卷中的未改变数据传递到第一存储卷。已改变数据的传递可以是在数据迁移中止后进行回滚的数据传递的一部分或者在回滚后进行前滚的数据传递的一部分等。[0105] 在一些示例中,基于跟踪信息来识别第二存储卷中的相对于第一存储卷的已改变数据部分,并且将已改变数据从第二存储卷的经识别数据部分推送到第一存储卷。可以在源存储系统不支持跟踪信息的使用的示例中执行此操作。[0106] 在源存储系统和目的地存储系统两者均支持跟踪信息的使用的另外的示例中,针对第一存储卷激活跟踪信息的副本,并且使用源存储系统处的跟踪信息的副本来识别第二存储卷中的相对于第一存储卷已改变的数据部分。[0107] 图8是计算系统800的框图,所述计算系统可以是迁移系统110、源存储系统102或目的地存储系统104中的任何一项或组合。[0108] 计算系统800包括硬件处理器802(或多个硬件处理器)。硬件处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列或另一个硬件处理电路。[0109] 计算系统800进一步包括非暂态存储介质804,所述非暂态存储介质存储有可在硬件处理器802上执行以执行各种任务的机器可读指令。可在硬件处理器上执行的机器可读指令可以指可在单个硬件处理器上执行的指令或可在多个硬件处理器上执行的指令。[0110] 存储在存储介质804中的机器可读指令包括第一传递操作发起指令806,所述第一传递操作发起指令用于发起第一传递操作以将存储卷一致性集的数据从第一存储位置传递到第二存储位置,其中,第一传递操作的完成是基于存储卷一致性集中的每个存储卷的数据的传递的完成。[0111] 机器可读指令进一步包括跟踪信息激活指令808,所述跟踪信息激活指令用于响应于存储卷一致性集中的单独存储卷到第二存储位置的相应目的地存储卷的完成而激活相应跟踪信息以跟踪相应目的地存储卷的各部分的变化,所述相应跟踪信息包括映射到相应目的地存储卷的相应不同数据部分的多个跟踪指示符。所跟踪的变化包括覆写数据部分中的先前数据,而不在第二存储位置处维持先前数据的副本。[0112] 在一些示例中,与尚未完成数据从存储卷一致性集中的对应单独存储卷的传递的另外的目的地存储卷相关联的跟踪信息未被激活。[0113] 机器可读指令进一步包括已改变数据传递指令810,所述已改变数据传递指令用于作为在第一传递操作之后的第二传递操作的一部分,将由相应跟踪信息指示的已改变数据从相应目的地存储卷传递到单独存储卷,而不将相应目的地存储卷中的未改变数据传递到单独存储卷。[0114] 在一些示例中,响应于与第一传递操作相关联的故障状况,发起第二传递操作(例如,回滚)。[0115] 在另外的示例中,响应于第一传递操作的完成,发起第二传递操作(例如,前滚)。[0116] 图9是根据一些示例的过程900的流程图。可以由迁移系统110、源存储系统102或目的地存储系统104中的任何一项或组合来执行过程900。尽管在图9中示出了特定的任务序列,但是应注意,在其他示例中,可以改变任务的顺序,可以省略一些任务并且可以添加附加任务。[0117] 过程900包括将数据从第一存储位置处的第一存储卷传递(在902处)到第二存储位置的第二存储卷。[0118] 过程900包括响应于传递而激活(在904处)第一跟踪信息以跟踪第二存储卷的各部分的变化,所述跟踪信息包括映射到第二存储卷的相应不同部分的多个指示符。[0119] 过程900包括使第一跟踪信息与用于第一存储卷的第二跟踪信息同步(在906处)。[0120] 过程900包括在同步之后将由第二跟踪信息指示的已改变数据从第二存储卷传递(在908处)到第一存储卷,而不将第二存储卷中的未改变数据传递到第一存储卷。[0121] 根据本公开的一些实施方式,通过使用跟踪信息来跟踪目的地存储卷处的更新,可以迁移的源存储卷的集合的大小不必受到限制,因为资源使用在回滚期间由于使用跟踪信息来识别目的地存储卷的已改变数据部分而变得更高效。[0122] 而且,回滚可以以联机方式执行,而不会中断任何服务。[0123] 存储介质(例如,图7中的700或图8中的804)可以包括以下各项中的任何一项或某种组合:半导体存储器设备,如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪速存储器或其他类型的非易失性存储器设备;磁盘,如固定的软盘和可移动盘;另一种磁介质,包括磁带;光学介质,如光盘(CD)或数字视频盘(DVD);或另一种类型的存储设备。应注意,上文讨论的指令可以设置在一个计算机可读或机器可读存储介质上,或者可替代地,可以设置在分布在具有可能多个节点的大型系统中的多个计算机可读或机器可读存储介质上。这种一个或多个计算机可读或机器可读存储介质被视为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或多个部件。一个或多个存储介质可以位于运行机器可读指令的机器中或者位于可以通过网络从其下载机器可读指令以供执行的远程站点处。[0124] 在前述描述中,阐述了许多细节以提供对本文中所公开的主题的理解。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
专利地区:美国
专利申请日期:2021-04-20
专利公开日期:2024-07-26
专利公告号:CN114201109B