同步本地存储设备和远程存储设备的制作方法
【专利摘要】一种方法,包括:检测与远程本地系统的本地存储设备的对应的本地区域不匹配的远程存储系统的第一远程存储设备的初始远程区域,并标识匹配初始远程区域的远程存储系统上的随后的远程区域。用来自随后的远程区域的数据代替初始远程区域中的数据。
【专利说明】同步本地存储设备和远程存储设备
【技术领域】
[0001] 本发明总体上涉及数据存储,具体而言,涉及用于异步或同步镜像的远程数据存 储设备的初始化和同步。
【背景技术】
[0002] 在计算中,虚拟化被定义为实体的虚拟(而不是实际的)版本的创建,所述实体例 如操作系统、服务器、存储设备或网络资源。虚拟化技术使得在一台物理计算机系统上运行 多台虚拟"机器"成为可能,其中每台虚拟机器执行它自己的操作系统实例。在同一台物理 计算机系统上运行的多台虚拟机器通常需要共享诸如存储设备(例如磁盘驱动器)和网络 适配器的输入/输出(I/O)设备的能力。
[0003] 当通过虚拟化并发执行操作系统的多个实例时,计算机系统通常虚拟化它的物理 存储设备。通过实现存储虚拟化,每个操作系统实例访问虚拟存储设备的对应的独特实例, 其中所有的虚拟存储设备共享相同的物理存储设备。
【发明内容】
[0004] 提供了根据本发明的实施例的一种方法,包括:检测与远程本地系统的本地存储 设备的对应的本地区域不匹配的远程存储系统的第一远程存储设备的初始远程区域,标识 匹配初始远程区域的远程存储系统上的随后的远程区域,并用来自随后的远程区域的数据 代替初始远程区域中的数据。
[0005] 还提供了根据本发明的实施例的一种装置,包括:具有本地处理器和本地存储设 备的本地存储系统,所述本地存储设备具有多个本地区域,以及具有第一远程存储设备和 远程处理器的远程存储系统,所述第一远程存储设备具有与本地区域一一对应的远程区 域,所述远程处理器被配置为:检测不匹配对应的本地区域的初始远程区域,标识匹配初始 远程区域的随后的远程区域系统,并用来自随后的远程区域的数据代替初始远程区域中的 数据。
[0006] 还提供了根据本发明的实施例的一种计算机程序产品,该计算机程序产品包括: 非临时性计算机可读存储介质,具有在其中体现的计算机可读程序代码,该计算机可读程 序代码包括:被配置为第一二进制图像计算第一距离矩阵并为第二二进制图像计算第二距 离矩阵的计算机可读程序代码,被配置为检测与远程本地系统的本地存储设备的对应的本 地区域不匹配的远程存储系统的第一远程存储设备的初始远程区域的计算机可读程序代 码,被配置为标识匹配初始远程区域的远程存储系统上的随后的远程区域的计算机可读程 序代码,以及被配置为用来自随后的远程区域的数据代替初始远程区域中的数据的计算机 可读程序代码。
【专利附图】
【附图说明】
[0007] 现在将仅参照以下附图,通过示例详细描述本发明的实施例,其中:
[0008] 图1是根据本发明的实施例的存储系统的示意性图示说明;
[0009] 图2是根据本发明的实施例的远程镜像初始化和同步设施的示意性图示说明;以 及
[0010] 图3是根据本发明的实施例的示意性地说明本地区域和远程区域同步方法的流 程图。
【具体实施方式】
[0011] 概述
[0012] 镜像将本地数据存储设备复制到分离的远程数据存储设备,以便确保冗余。对于 包括本地存储设备和远程存储设备的存储设施,可以同步或异步地实现镜像。在同步镜像 期间,与存储设施通信的主机(例如数据库服务器)在数据成功写入本地存储设备和远程 存储设备两者之后接收写入确认。通常在高速局域网(LAN)或广域网(WAN)之上实现同步 镜像。
[0013] 在异步镜像期间,主机在数据写入本地存储设备后接收写入确认(即远程存储设 备可能尚未接收该数据和/或可能没有确认写入该数据)。通常在低速的广域网之上实现 异步镜像,尤其是在更远的距离之上。
[0014] 为了初始化镜像(即异步或同步),在本地存储和远程设备中的数据通常被同步 (即该数据必须一致)。另外或可替代地,可以在检测本地存储设备和远程存储设备不同步 (即存储相同的数据)的任何时间执行该同步。
[0015] 本发明的实施例提供用于同步本地存储设备和远程存储设备的方法和系统,从而 适应设备上存储的数据的任何差异。在下面的描述中,本地存储设备和远程存储设备被假 定为分别在存储设施的本地存储系统和远程存储系统(例如集群存储控制器)中起作用。
[0016] 在初始化期间,可用来自本地存储设备的本地区域的数据加载远程存储设备的远 程区域。通常,本地存储设备包括多个本地区域,而远程存储设备包括具有与本地区域一一 对应的多个远程区域。
[0017] 在一些实施例中,来自本地存储设备的本地区域(区域是具有特定长度的字节的 序列,通常为1兆)的数据存储到可移动介质(例如磁带)。可移动介质然后被物理传送到 远程存储系统站点(也被称为远程站点),数据被加载到远程存储设备上的远程区域。从可 移动介质复制的本地区域数据是在同步过程中可用作基线的参考。
[0018] 在可替代实施例中,在将存储系统物理传输到远程站点之前,远程存储系统经由 局域网耦合到本地存储系统,而来自本地存储设备的本地区域的数据被传输(即经由网 络)到远程存储设备的远程区域。
[0019] 在进一步的实施例中,在同步之前,未用任何数据初始化存储设备的远程区域,并 且同步(在下文中详细描述)将数据加载到所有远程区域。
[0020] 在远程存储系统被初始化并被定位在远程站点后,用来自其数据在初始化后被更 新的任何本地区域的数据更新远程区域。如下文中详细解释的那样,检测与其对应的本地 区域不匹配的初始远程区域,标识远程存储系统上的匹配第一远程区域的随后的远程区 域,并用来自随后的远程区域的数据代替初始远程区域中的数据。
[0021] 在一些实施例中,本地存储系统在本地存储设备的本地区域之上计算本地签名 (例如校验和)。本地存储系统经由数据通信信道将本地签名传送到远程存储系统。在一 些实施例中,在接收本地签名时,远程存储系统在远程存储设备的远程区域之上计算对应 的远程签名。在可替代实施例中,本地存储系统和远程存储系统同时计算本地签名和远程 签名。
[0022] 每个本地签名与给定的本地区域相关联,而每个远程签名与给定的远程区域相关 联。此外,每个本地签名具有对应的远程签名。
[0023] 如果远程存储系统标识不匹配其对应的本地签名的初始远程签名,则远程存储系 统首先搜索匹配该初始远程签名的随后的远程签名。如果远程存储系统检测到匹配该初始 远程签名的随后的远程签名,则存储在与随后的远程签名相关联的随后的远程区域中的数 据与存储在与初始远程签名相关联的初始远程区域中的数据相同,而远程存储系统用来自 与随后的远程签名相关联的随后的远程区域的当前数据代替与初始远程签名相关联的初 始远程区域中的非当前数据。
[0024] 如果远程存储系统没有检测到匹配初始远程签名的随后的远程签名,则远程系统 通知本地存储系统。本地存储系统将对应的本地区域的数据(即当前数据)传送到远程存 储系统,远程存储系统然后用当前数据代替初始远程区域中的非当前数据。
[0025] 对于实现存储虚拟化的计算机系统,在系统的存储设备上可能有许多相同的区 域。例如,计算机系统可能正在执行操作系统的多个实例(通常经由操作系统虚拟化),同 时每个实例向存储设备上的不同区域(即卷)进行读取和写入。由于上述的多个相同区域, 如果初始远程签名不匹配其对应的本地签名,则可能有匹配该初始远程签名的随后的远程 签名。因此,本发明的实施例提供同步本地存储设备和远程存储设备的有效方法,由于初始 远程区域(存储在第一给定的远程存储设备上)可用从随后的远程区域(存储在第一给定 的远程存储设备上或第二给定的远程存储设备上)本地复制的数据更新,而不是用来自经 由广域网传送的对应的本地区域的数据更新。
[0026] 系统描述
[0027] 图1是根据本发明的实施例的数据处理存储子系统20的示意性图示说明。呈现 图1所示的特定子系统以便于解释本发明。然而,正如本领域技术人员将理解的,本发明可 以使用其他计算环境来实施,例如具有各种体系结构和容量的其他存储子系统。
[0028] 该实施例中的存储子系统20从一个或多个主计算机22接收输入/输出(I/O) 请求,输入/输出请求是在逻辑卷的逻辑地址处读取或写入数据的指令。任意数量的主计 算机22通过本领域中已知的任意装置耦合到存储子系统20,例如使用网络。在本文中, 举例来说,主计算机22和存储子系统20被假定为由合并数据连接24和主机总线适配器 (HBA) 28的存储区域网络(SAN) 26耦合。逻辑地址指定逻辑卷中数据块的范围,每个块在本 文中通过示例而被假定为包含512字节。例如,在给定的主计算机22上的数据处理应用程 序中使用的10KB数据记录将需要20个块,给定的主计算机可能将20个块指定为存储在包 含逻辑卷的块1000到1019的逻辑地址处。存储子系统20通常在网络附连存储(NAS)或 SAN系统中工作,或者作为网络附连存储(NAS)或SAN系统工作。
[0029] 存储子系统20包括在SAN26和专用网络46之间分别使用数据连接30和44并且 再次分别合并适配器32和42的集群存储控制器34。集群存储控制器34实现存储模块36 的集群,每个存储模块包括接口 38 (在适配器32和42之间通信)和高速缓存40。通过所 示的数据连接48,每个存储模块36负责许多存储设备50。
[0030] 如前所述,在该实施例中,每个存储模块36还包括给定的高速缓存40。然而,将理 解的是,用在存储子系统20中并与集群存储控制器34-起使用的高速缓存40的数量可以 是任何方便的数量。虽然存储子系统20的所有高速缓存40可以基本相同的方式工作并包 括基本相似的元件,但这不是必要条件。每个高速缓存40通常但不一定大小大致相等,并 通过不例而被假定为与一组物理存储设备50 对应地稱合,一组物理存储设备50通常 是磁盘。在一个实施例中,物理存储设备可包括这种磁盘。本领域技术人员将能够使本文 的描述适合于不同大小的高速缓存。
[0031] 每组存储设备50包括多个慢和/或快存取时间的大容量存储设备,下文假定为多 个硬盘。图1显示耦合到存储设备50的各个组的高速缓存40。通常,存储设备50的组包 括可具有不同性能特征的一个或多个硬盘。响应于I/O命令,举例来说,给定的高速缓存40 可以在给定的存储设备50的可寻址物理位置处读取或写入数据。在图1所示的实施例中, 高速缓存40能够在存储设备50上执行某些控制功能。这些控制功能可以由链接到高速缓 存40的诸如磁盘控制器(未示出)的硬件设备可替代地实现。
[0032] 路由记录由SAN26分布到存储模块36的一个或多个通常相似的网络接口 38,所述 路由记录指示逻辑卷的逻辑地址与分区的关联以及分区与高速缓存的关联。将理解的是, 存储子系统20以及因此集群存储控制器34可包括任何方便数量的网络接口 38。在存储设 备50形成之后,网络接口 38可从主计算机22接收指定存储设备50的逻辑地址的I/O命 令。网络接口使用路由记录来将命令分成然后在高速缓存40之间分布的I/O指令或命令 子集。
[0033] 每个存储模块36可操作地监视其状态,包括相关联的高速缓存40的状态,并且将 配置信息(例如导致阻塞间隔(blocking interval)的配置变化)发送到存储子系统20 的其他组件,或者限制用于物理存储的组的I/O请求被接受的速率。
[0034] 将命令和数据从HBA28路由到集群存储控制器34并且路由到每个高速缓存40通 常通过网络和/或交换机执行。在本文中,举例来说,HBA28可通过SAN26的至少一个交换 机(未示出)耦合到存储模块36,所述交换机可以是具有数字交叉连接功能的任何已知类 型的交换机。另外或可替代地,HBA28可以直接耦合到存储模块36。
[0035] 具有连续的逻辑地址的数据通常在存储设备50之间分布。可替代地,可以使用其 他算法分布数据,例如字节或块交织。通常,这增加了带宽,例如通过允许一次从多于一个 给定的存储设备50读取SAN中的卷或网络附连存储中的文件,或者一次向多于一个给定的 存储设备50写入SAN中的卷或网络附连存储中的文件。然而,这种技术需要在各个存储设 备之间协调,而在实践中可能需要复杂准备来应对存储设备的任何故障以及处理误差校验 信息的策略,例如存储与分布的数据有关的奇偶校验信息的技术。的确,当以足够小的粒度 分布逻辑单元分区时,与单个逻辑单元相关联的数据可以跨越所有存储设备50。
[0036] 虽然没有为了简单说明的目的而明确显示,但本领域技术人员将理解,在一些实 施例中,集群存储控制器34可能适于与某些硬件结合实现,例如机架安装系统、中心板和/ 或背板。的确,在一个实施例中可以使用背板实现专用网络46。此外正如本领域技术人员 将理解的,诸如前述交换机、处理器、控制器、存储设备等额外硬件也可以合并到集群存储 控制器34中并且在存储子系统20内的其他地方。此外,各种软件组件、操作系统、固件等 可集成到一个存储子系统20中。
[0037] 图2是根据本发明的实施例的远程镜像初始化和同步设施60的示意性图示说明。 在本文的描述中,集群存储控制器34及其各自的组件可通过向标识数字附加字母来加以 区分,使得集群存储控制器34包括本地集群存储控制器34A和远程存储控制器34B。
[0038] 设施60包括具有本地存储设备50A的本地集群存储控制器34A,所述本地存储设 备50A将被镜像到远程集群存储控制器34B的远程存储设备50B。在广域网(WAN) 62之上 经由两个集群存储控制器中的HBA64A和64B执行镜像以及在本地集群存储控制器和远程 集群存储控制器之间的其他通信。虽然图2所示的示例显示包括本地集群存储控制器和远 程集群存储控制器的设施60,但其他类型的存储系统被认为在本发明的精神和范围内。
[0039] 本地集群存储控制器34A包括本地模块36A、本地存储设备50A和本地HBA64A。本 地模块36A包括处理器66A和存储器68A。本地存储设备50A在多个本地区域70A中存储 数据。除了本地区域70A,存储设备50A可存储本地签名72A,其中每个给定的区域70A具 有对应的签名72A。通常,给定的签名72A附加到存储设备50A上的其对应的区域70A。
[0040] 远程集群存储控制器34B包括远程模块36B、远程存储设备50B和远程HBA64B。远 程模块36B包括处理器66B和存储器68B。远程存储设备50B在多个远程区域70B中存储 数据。除了区域70B,存储设备50B可存储远程签名72B,其中每个给定的区域70B具有对 应的签名72B。通常,给定的签名72B附加到存储设备50B上的其对应的区域70B。
[0041] 本地签名和远程签名(也被称为数据完整性字段或DIF)通常被添加到数据的给 定区域(也称为块或段),以防止数据错误,特别是(但不排除)数据存储应用中的数据错 误。签名通常包括对于给定区域中的数据执行的校验和计算。一个示例校验和计算是消息 摘要算法5 (MD5),消息摘要算法5是具有128位散列值的加密的散列函数。诸如MD5的校 验和计算不是抗冲突的(即,对于两个区域a和b,可能存在散列函数Η产生H(a) = H(b) 的情况)。例如,具有64千字节(KB)区域的64太字节(TB)存储设备在设备中具有109个 区域。由于MD5具有128位散列值,负误识的概率为2 128。因此在64ΤΒ的存储设备中冲突 的可能性为(228/2128)或1/2 1(1°。
[0042] 本地集群存储控制器34Α可操作地将数据存储到可移动介质74,可移动介质74可 被从本地存储控制器的站点物理运输到远程存储控制器的站点。远程集群存储控制器34Β 可操作地从可移动介质74加载数据。
[0043] 存储设备50Α和50Β通常包括大容量硬盘驱动器和固态驱动器的组合。在一些实 施例中,每个存储设备可包括逻辑磁盘。在实施小型计算机系统接口(SCSI)协议的存储系 统中,逻辑磁盘通常被称为逻辑单元或LUN。虽然通常将每个LUN作为单个逻辑单元寻址, 但LUN通常包括大容量硬盘驱动器和/或固态驱动器的组合。
[0044] 处理器66A和66B通常包括以软件编程来执行本文所述功能的通用计算机。例 如,该软件可以电子形式通过网络而被下载到本地模块36A和远程模块36B,或者可以在诸 如光学、磁或电子存储介质的非临时性有形介质上提供该软件。可替代地,处理器66A和 66B的一些功能或全部功能可由专用或可编程数字硬件组件执行或使用硬件元件和软件元 件的组合执行。
[0045] 所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算 机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、 完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方 式,这里可以统称为"电路"、"模块"或"系统"。此外,在一些实施例中,本发明的各个方面 还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介 质中包含计算机可读的程序代码。
[0046] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算 机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是--但不限 于--电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便 携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器 (EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者 上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的 有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0047] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括--但 不限于--电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是 计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者 传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0048] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括--但不限 于--无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0049] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算 机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++ 等,还包括常规的过程式程序设计语言一诸如"C"语言或类似的程序设计语言。程序代码可 以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。 在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络--包括局域网(LAN) 或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务 提供商来通过因特网连接)。
[0050] 下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图 和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图 中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计 算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计 算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程 图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0051] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、 其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的 指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令 的制造品(article of manufacture) 〇
[0052] 该计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或其它设 备,以使得在计算机、其它可编程装置或其他设备上执行一系列的操作步骤,以产生计算机 实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框 图或框中指定功能/动作的过程。
[0053] 远程区域同步
[0054] 图3是根据本发明的第一实施例的示意性地说明本地区域和远程区域同步方法 的流程图。在初始步骤80中,处理器66A将数据从本地区域70A复制到可移动介质74。复 制到可移动介质的本地区域数据是设施60在同步期间用作基线的本地存储设备的记录。 在数据传送步骤82中,可移动介质被物理传送到远程站点,其中处理器66B将本地区域数 据从可移动介质加载到远程区域70B。可移动介质的物理传送可以通过便于介质物理传输 的任何方法,例如通过人工和/或通过车辆。
[0055] 在验证本地区域数据被正确加载后,处理器66B将正确数据传送的通知经由信道 62发送到本地模块36A。该通知确认:在远程存储设备上存储的远程区域分别与在初始步 骤80的时本地存储设备上的本地区域对应。此外,本地存储设备和远程存储设备分别具有 本地区域和远程区域的一一对应。
[0056] 虽然步骤80和82描述初始化远程区域70B的方法,但其他初始化的方法在本 发明的范围内。在可替代的初始化实施例中,远程集群存储控制器34B可以被定位在接 近本地集群存储控制器34A,而本地集群存储控制器和远程集群存储控制器可经由局域网 (LAN)耦合。为了初始化远程区域,本地处理器66A可经由LAN将数据从本地区域70A传送 到远程存储控制器34B。在远程处理器66B将传送的数据保存到远程区域70B后,远程存储 控制器可被物理传输到远程站点。
[0057] 在第一签名计算步骤84中,当接收通知时,处理器66A在本地区域之上70A计算 本地签名72A,并将本地签名存储到存储器68A。在完成步骤84后,每个本地签名关联到给 定的一个本地区域70A。计算本地签名使得设施60能够检测在初始步骤80之后到本地存 储设备50A的任何更新。如果在初始步骤80之后有到本地存储设备50A的任何更新,则完 成数据传送步骤82时,本地存储设备和远程存储设备的内容不同。
[0058] 在传送签名步骤86中,处理器66A经由信道62将本地签名从存储器68A传送到 远程模块36B。当接收本地签名时,处理器66B将本地签名存储到存储器68B。在第二签名 计算步骤88中,处理器66B在远程存储设备50B上的远程区域70B之上计算各自的远程签 名72B,并将远程签名存储到存储器68B。每个远程签名与给定的一个远程区域70B相关联, 并且对应于本地签名之一。
[0059] 在初始检索步骤90中,处理器66B从存储器68B检索第一本地和对应的第一远程 签名。在本文所述的实施例中,从存储器68B检索的远程签名被称为初始远程签名。远程 处理器66B然后在第一比较步骤92中比较检索的本地和初始远程签名。如果处理器66B 检测经比较的签名不匹配,则在搜索步骤94中,远程处理器66B在存储器68B中搜索匹配 检索的本地签名的随后的远程签名72B。如果处理器66B在第二比较步骤96中标识了匹配 检索的本地签名的随后的远程签名72B,则在第一更新步骤98中,处理器66B用来自与随后 的远程签名相关联的随后的远程区域70B中的当前数据代替与初始远程签名相关联的初 始远程区域70B中的非当前数据。
[0060] 远程集群存储控制器34B可包含存储相同区域70B的多个逻辑存储设备50B(例 如LUN)。在使用操作系统虚拟化实现的实施例中,远程处理器66B可执行(相同的)操作 系统的多个实例,其中每个操作系统访问不同逻辑存储设备50B上的虚拟化存储。为了加 速搜索步骤94,远程处理器66B可以只在远程区域70B的目标子集上搜索其签名72B匹配 对应于初始远程区域的本地区域的签名70A的初始远程区域。
[0061] 例如,远程集群存储控制器34B可包括五个逻辑远程存储设备50B,其中每个逻辑 远程存储设备包括10000个远程区域。在搜索步骤94中,如果远程处理器66B正搜索其签 名匹配对应于第一远程逻辑存储设备上编号1000的远程区域70B的本地签名72A的第二 远程区域70B,则远程处理器可搜索与其他四个远程逻辑存储设备的编号1000的远程区域 70B接近的远程区域。例如,远程存储处理器66B可搜索其他四个远程存储设备50中每一 个的编号995-1005的远程区域70B。换句话说,为了加快该搜索,远程处理器搜索44个远 程区域70B (即其他四个远程存储设备50中每一个的11个远程区域),而不是搜索其他四 个远程存储设备50的40000个远程区域72B。
[0062] 此外,如果远程处理器66B定位了其签名72B匹配本地签名70B的第二远程区域 70B,则远程处理器可基于第二远程区域的位置启动随后的搜索。例如,存储设备50包括五 个逻辑存储设备,而远程处理器66B用第四逻辑存储设备上的随后的远程区域500更新第 二逻辑存储设备上编号500的初始远程区域。如果编号501的初始远程区域的签名72B不 匹配对应的本地区域70B的本地签名72A (步骤92),则在步骤94中,远程处理器66B可用 第四逻辑存储设备50B上的远程区域501开始搜索随后的远程区域70B。
[0063] 在第三比较步骤100中,如果在存储器68B中有额外的本地签名和初始远程签名, 则处理器68B在第二检索步骤102中从存储器68B检索下一个本地签名和初始远程签名, 并且该方法继续步骤90。
[0064] 返回到步骤96,如果处理器66B没有检测到匹配检索的本地签名的随后的远程签 名72B,则在第二更新步骤104中,处理器66B经由信道62将数据传送请求传送到本地模 块36A。该请求包括指示与检索的本地签名相关联的给定的本地区域的参数。响应于该请 求,处理器66A经由信道62将数据从所请求的给定的本地区域传送到远程模块36B。一收 到所请求的本地区域数据,处理器66A就用来自接收的本地区域的当前数据代替初始远程 区域中的非当前数据,并且所述方法继续步骤100。
[0065] 返回到步骤92,如果检索的本地签名和初始远程签名匹配,则该方法继续步骤 100。在步骤100中,当在远程存储器68B中没有额外的本地签名和初始远程签名时,该方 法结束。换句话说,当远程区域70B中存储数据匹配本地区域70A中存储的数据时,流程图 的过程停止。
[0066] 虽然上述步骤详细描述标识在初始化远程区域(即步骤80和82)后被更新的本 地区域的方法,但其他标识方法在本发明的精神和范围内。在可替代的标识实施例中,本地 处理器66A存储在初始化远程区域70B后更新的本地区域70A的列表(未示出)。本地处 理器66A可将该列表传送到远程处理器66B,从而指示需被更新的远程区域70B。
[0067] 在进一步的标识实施例中,远程处理器66B可在给定的远程区域70A分别计算每 个远程签名72A,并向本地处理器66A传送为对应的本地区域70A计算本地签名72B的请 求。作为响应,处理器66A计算所请求的本地签名72A,并将计算的本地签名传送到远程处 理器66B。在接收计算机本地签名时,处理器66B可比较计算的本地和计算的远程签名。
[0068] 如上所述,可能有跳过远程区域70A的初始化(即步骤80)的实例。如果没有执 行初始化,则处理器68B使用流程图中所述的步骤84-102同步所有区域70B。
[0069] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以 基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行 规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。
[0070] 将理解的是,通过示例引用上述实施例,并且本发明并不限于上文中已经特别显 示和描述的内容。相反,本发明的范围包括上文所述的各种特征的组合和子组合及其变型 和修改,对于本领域技术人员而言,阅读前面的描述时将出现该变型和修改,并且现有技术 中没有公开该变型和修改。
【权利要求】
1. 一种用于同步本地数据存储设备和远程数据存储设备的方法,包括: 检测与远程本地系统的本地存储设备的对应的本地区域不匹配的远程存储系统的第 一远程存储设备的初始远程区域; 标识匹配初始远程区域的远程存储系统上的随后的远程区域;以及 用来自随后的远程区域的数据代替初始远程区域中的数据。
2. 根据权利要求1所述的方法,其中初始远程区域包括多个本地区域之一,而对应的 本地区域包括与本地区域--对应的多个本地区域之一。
3. 根据权利要求2所述的方法,并且包括:在检测步骤之前,用来自对应的本地区域的 数据初始化远程区域。
4. 根据前述任一权利要求所述的方法,其中检测不匹配本地区域的初始远程区域包 括:本地存储在本地区域之上计算本地签名,在标识了在初始化远程区域后被更新的本地 区域时,将本地签名传送到远程存储系统。
5. 根据权利要求1至3中任一个所述的方法,其中检测不匹配本地区域的初始远程区 域包括:本地存储系统在本地区域之上计算本地签名,将本地签名传送到远程存储系统,远 程存储系统在初始远程区域之上计算初始远程签名,并且检测本地签名和初始远程签名不 匹配。
6. 根据权利要求1所述的方法,其中标识随后的区域包括:在初始远程区域之上计算 初始远程签名,在随后的远程区域之上计算随后的远程签名,并且检测初始远程签名和随 后的远程签名不匹配。
7. 根据前述任一权利要求所述的方法,其中随后的区域位于从列表中选择的存储设备 上,该列表包括第一远程存储设备和第二远程存储设备。
8. 根据前述任一权利要求所述的方法,并且包括:当标识了不匹配初始远程区域的随 后的远程区域时,用来自对应的本地区域的数据代替给定的远程区域中的数据。
9. 根据权利要求8所述的方法,并且包括:在用来自对应的本地区域的数据代替给定 的远程区域中的数据之前,由远程存储系统将指示对应的本地区域的请求传送到本地存储 系统,并由本地存储系统将来自对应的本地区域的数据传送到远程存储系统。
10. -种装置,包括: 具有本地处理器和本地存储设备的本地存储系统,所述本地存储设备具有多个本地区 域;以及 具有第一远程存储设备和远程处理器的远程存储系统,所述第一远程存储设备具有与 本地区域一一对应的远程区域,所述远程处理器被配置为:检测不匹配对应的本地区域的 初始远程区域,标识匹配初始远程区域的随后的远程区域系统,并用来自随后的远程区域 的数据代替初始远程区域中的数据。
11. 根据权利要求10所述的装置,其中所述远程处理器被配置为:在检测步骤之前,用 来自对应的本地区域的数据初始化远程区域。
12. 根据权利要求10或11所述的装置,其中所述本地处理器被配置为:在本地区域之 上计算本地签名,在标识了在初始化远程区域后被更新的本地区域时,将本地签名传送到 远程存储系统,而所述远程处理器被配置为:通过接收传送的本地签名,检测不匹配本地区 域的初始远程区域。
13. 根据权利要求10所述的装置,其中所述本地处理器被配置为:在本地区域之上计 算本地签名,并将本地签名传送到远程存储系统,而所述远程处理器被配置为:通过在初始 远程区域之上计算初始远程签名,而检测不匹配本地区域的初始远程区域,并检测本地签 名和初始远程签名不匹配。
14. 根据权利要求10至13中任一个所述的装置,其中所述远程处理器被配置为:通过 在初始远程区域之上计算初始远程签名,而标识随后的区域,在随后的远程区域之上计算 随后的远程签名,并检测初始远程签名和随后的远程签名不匹配。
15. 根据权利要求10至14中任一个所述的装置,其中随后的区域位于从列表中选择的 存储设备上,该列表包括第一远程存储设备和第二远程存储设备。
16. 根据权利要求10所述的装置,其中所述远程处理器被配置为:当标识了随后的远 程区域不匹配初始远程区域时,用来自对应的本地区域的数据代替给定的远程区域中的数 据。
17. 根据权利要求16所述的装置,其中所述远程处理器被配置为:在用来自对应的本 地区域的数据代替给定的远程区域中的数据之前,将指示对应的本地区域的请求传送到本 地存储系统,而本地处理器被配置为:响应于该请求,传送来自对应的本地区域的数据。
18. 根据权利要求10至17中任一个所述的装置,其中本地存储设备和远程存储设备中 的每一个包含逻辑存储设备,该逻辑存储设备包括从包括硬盘驱动器和固态驱动器的列表 中选择的一个或多个物理存储设备。
19. 一种计算机程序产品,该计算机程序产品包括: 非临时性计算机可读存储介质,具有在其中体现的计算机可读程序代码,该计算机可 读程序代码包括: 被配置为检测不匹配远程本地系统的本地存储设备的对应的本地区域的远程存储系 统的第一远程存储设备的初始远程区域的计算机可读程序代码; 被配置为标识匹配初始远程区域的远程存储系统上的随后的远程区域的计算机可读 程序代码;以及 被配置为用来自随后的远程区域的数据代替初始远程区域中数据的计算机可读程序 代码。
20. 根据权利要求19的计算机程序产品,其中初始远程区域包括多个本地区域之一, 而对应的本地区域包括与本地区域--对应的多个本地区域之一。
【文档编号】G06F12/00GK104067241SQ201380006395
【公开日】2014年9月24日 申请日期:2013年1月7日 优先权日:2012年1月23日
【发明者】I·古尔德伯格 申请人:国际商业机器公司