CN1779660A - 三者间的异步复制 - Google Patents

三者间的异步复制 Download PDF

Info

Publication number
CN1779660A
CN1779660A CNA2005101079577A CN200510107957A CN1779660A CN 1779660 A CN1779660 A CN 1779660A CN A2005101079577 A CNA2005101079577 A CN A2005101079577A CN 200510107957 A CN200510107957 A CN 200510107957A CN 1779660 A CN1779660 A CN 1779660A
Authority
CN
China
Prior art keywords
data
destination
local
data block
long
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005101079577A
Other languages
English (en)
Other versions
CN100428190C (zh
Inventor
道格拉斯·E.·勒克龙
加里·H.·考克斯
布雷特·A.·奎因
戴维·梅雷
马克·J.·霍尔斯特德
本杰明·W.·约德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC Corp filed Critical EMC Corp
Publication of CN1779660A publication Critical patent/CN1779660A/zh
Application granted granted Critical
Publication of CN100428190C publication Critical patent/CN100428190C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2079Bidirectional techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers

Abstract

保存恢复数据包括提供数据块给远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且其中特定数据块的第二时间对应于该特定数据块随后的数据块的第一时间;提供同步数据给本地目的地;及提供与用于保存在远程目的地的新数据块的形成有关的指示符给本地目的地。本地目的地可保持多个映射,其中每一映射将正提供给其的同步数据与特定的数据块相关联。响应于接收与新数据块的形成有关的指示符,本地目的地可指向新的映射。可以有两个或两个以上的映射。

Description

三者间的异步复制
技术领域
本发明涉及计算机存储设备,特别是涉及在存储设备之间传输数据的领域。
背景技术
主处理机系统可使用存储设备保存和检索数据,存储设备包含多个主机接口装置(主机适配器)、磁盘驱动器、及磁盘接口装置(磁盘适配器)。这样的存储设备可由麻萨诸塞州Hopkinton的伊姆西公司提供,且其在授权给Yanai等的美国专利5,206,939、授权给Galtzur等的美国专利5,778,394、授权给Vishlitzky等的美国专利5,845,147、及授权给Ofek等的美国专利5,857,208中公开。主机系统通过多个随其提供的通道访问存储设备。主机系统通过通道提供数据和访问控制信息给存储设备,存储设备也通过通道提供数据给主机系统。主机系统不直接寻址存储设备的磁盘驱动器,而是访问对主机系统表现为多个逻辑磁盘机的装置。逻辑磁盘机可以也可不对应于实际的磁盘驱动器。允许多个主机系统访问单个存储设备将允许主机系统共享保存于其中是数据。
在某些情形下,可能希望将数据从一个存储设备复制到另一存储设备。例如,如果主机写数据到第一存储设备,则可能希望将该数据复制到位于不同位置的第二存储设备,使得当致使第一存储设备不能工作的灾难出现时主机(或另一主机)可使用第二存储设备的数据恢复运行。这样的性能可由麻萨诸塞州Hopkinton的伊姆西公司提供的远程数据镜像(RDF)产品提供。具有RDF功能的第一存储设备(标注为“主存储设备”或“R1”)连接到主机。一个或多个其它存储设备(称为“辅助存储设备”或“R2”)接收由主机写到主存储设备的数据的拷贝。主机与主存储设备直接相互作用,但主存储设备的任何数据变化均使用RDF自动提供给一个或多个辅助存储设备。主和辅助存储设备可由数据链路连接,数据链路如ESCON链路、光纤通道链路、和/或吉比特以太网链路。RDF功能可使用在每一存储设备处提供的RDF适配器(RA)而得以促进。
RDF允许同步数据传输,其中在数据从主机写到主存储设备之后,该数据通过使用RDF从主存储设备传输到辅助存储设备,由辅助存储设备向主存储设备确认数据的接收,主存储设备接下来将写确认提供回主机。因此,在同步模式中,主机不从主存储设备接收写确认,直到对辅助存储设备的RDF传输已被完成并由辅助存储设备确认为止。
同步RDF系统的缺点在于每一写操作的等待时间将由于等待RDF传输的确认而增加。在主存储设备和辅助存储设备之间距离较长时,该问题更加突出。由于传输延迟,进行RDF传输及随后在传输完成后等待确认回馈所需要的时延可能是不可接受的。
也可能以半同步方式使用RDF,在这种情况下,数据从主机写到主存储设备,主存储设备立即确认写,接着,同时开始将数据传输到辅助存储设备的步骤。因此,对于单一数据传输,该方案克服了以同步方式使用RDF的一些缺点。然而,对于数据完整性目的,半同步传输不允许主存储设备传输数据给辅助存储设备,直到先前的传输由辅助存储设备确认为止。因此,与以同步方式使用RDF相关联的瓶颈在于由一次重复造成的简单的延迟,因为第二数据量的传输不会发生,直到先前数据的传输为辅助存储设备确认为止。
另一种可能是使主机以异步方式写数据到主存储设备并使主存储设备在背后将数据复制到辅助存储设备。后台复制包括顺序轮转通过主存储设备的每一磁轨,当确定特定的数据块自上次复制该数据块后已被修改时,数据块被从主存储设备传输到辅助存储设备。尽管该机制可减轻与同步及半同步数据传输方式相关的等待时间问题,但困难依然存在,因为不能保证主存储设备和辅助存储设备之间的数据一致性。如果发生问题,如主系统不能工作,则辅助系统可能以使得数据不可用的无序变化结束工作。
所提出的解决该问题的方案为对称自动复制(SAR)方法,其于未决美国专利申请10/224,918和10/225,021中描述,两申请均于2002年8月21日申请。SAR使用可镜像标准逻辑设备的设备(BCV)。BCV设备还可在镜像后从其标准逻辑设备分离并可在分离后重新同步(即重新建立为镜像)到标准逻辑设备。此外,BCV可使用RDF进行远程镜像,在这种情况下,当BCV从相应的标准逻辑设备分离时,BCV可将对其做出的数据变化(当BCV用作镜像时)传播给BCV远程镜像。
然而,使用SAR方法要求大量连续分离和重新同步BCV设备的辅助操作。SAR方法还使用主机控制和管理,其依赖于控制主机运行。此外,SAR方法的实际实施的轮转时间为20-30分钟,因此,当RDF链路和/或主设备出故障时,可能丢失的数据量为20-30分钟的数据价值。
因此,希望具有这样一种RDF系统,其具有上述不同技术中的每一种的部分有益品质,同时还减少了缺点。该系统对每一主机写可呈现低等待时间性,不管主设备和辅助设备之间的距离的长短如何,并可在出现故障时提供辅助设备的一致性(可复原性)。
可能还希望将同步RDF传输和异步RDF传输的优点结合起来,从而最新的备份数据可被提供在J0远程设备上,J0远程设备离源设备相当近(地理上),同时,备份数据还可被提供给离源设备相当远的备份设备。可能还希望这样的系统能在备份设备之间进行适当的数据恢复。
发明内容
根据本发明,保存恢复数据包括提供数据块给远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,其中某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间,提供对应于数据块的同步数据给小型存储器本地目的地,其中小型存储器本地目的地包含未被保存在远程目的地上的数据,且远程目的地包含未被保存在小型存储器本地目的地的数据,当正提供新数据块时提供指示符。包含在远程目的地上但未包含在小型存储器本地目的地上的数据可比包含在小型存储器本地目的地上但未包含在远程目的地上的数据更旧。由小型存储器本地目的地接收的同步数据可保存在链表单元中。单元可根据数据的源存储设备位置排序。单元可根据在小型存储器本地目的地的数据的接收顺序排序。每一单元可包括标识符,其用于特定数据块对应于每一单元的同步数据。保存恢复数据还可包括在小型存储器远程目的地提供周期次数,响应于接收指明新数据块正被提供的指示符,递增本地指示符。由小型存储器本地目的地接收的同步数据可保存在链表单元中。每一单元可包括用于特定数据块对应于每一单元的同步数据的标识符且标识符可对应于本地周期次数。
根据本发明,提供在计算机可读介质中的保存恢复数据的计算机软件,其包括:提供数据块给远程目的地的可执行代码,其中每一数据块代表在第一时间之前及第二时间之后写的数据,其中某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间,提供对应于数据块的同步数据给小型存储器本地目的地的可执行代码,其中小型存储器本地目的地包含未被保存在远程目的地上的数据,且远程目的地包含未被保存在小型存储器本地目的地的数据,当正提供新数据块时提供指示符的可执行代码。包含在远程目的地上但未包含在小型存储器本地目的地上的数据可比包含在小型存储器本地目的地上但未包含在远程目的地上的数据更旧。由小型存储器本地目的地接收的同步数据可保存在链表单元中。单元可根据数据的源存储设备位置排序。单元可根据在小型存储器本地目的地的数据的接收顺序排序。每一单元可包括标识符,其用于特定数据块对应于每一单元的同步数据。计算机软件还可包括在小型存储器远程目的地提供本地周期次数的可执行代码,及响应于接收指明新数据块正被提供的指示符而递增本地指示符的可执行代码。由小型存储器本地目的地接收的同步数据可保存在链表单元中。每一单元可包括用于特定数据块对应于每一单元的同步数据的标识符且标识符可对应于本地周期次数。
根据本发明,用于保存恢复数据的系统包括源组、连接到源组以从其接收数据块的远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,其中某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间,小型存储器本地目的地连接到源组以从其接收同步数据,其中小型存储器本地目的地包含未被保存在远程目的地上的数据,且远程目的地包含未被保存在小型存储器本地目的地的数据,且当正提供新数据块时源组提供指示符。包含在远程目的地上但未包含在小型存储器本地目的地上的数据可比包含在小型存储器本地目的地上但未包含在远程目的地上的数据更旧。
根据本发明,保存恢复数据包括提供数据块给远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,其中某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间,其还包括提供同步数据给本地目的地,提供指示符给本地目的地并产生新数据块以用于存储在远程目的地。本地目的地可保持多个映射,每一映射将正提供给其的同步数据与特定的数据块相关联。响应于接收指示符及新数据块的产生,本地目的地可指向新的映射。可以有两个或两个以上的映射。响应于本地目的地未能确认提供给其的同步数据,远程目的地可保留向其写的数据的映射。保存恢复数据可包括,响应于本地目的地未能确认提供给其的同步数据,远程目的地保留新数据块被创建的次数的计数。
根据本发明,恢复保存在本地目的地和远程目的地上的数据包括:确定本地目的地和远程目的地中哪一个具有最新的数据,如果远程目的地具有最新数据则将远程目的地的数据复制到本地目的地,如果本地目的地具有最新数据则将本地目的地的数据复制到远程目的地。确定本地目的地和远程目的地中哪一个具有最新数据可包括检查远程目的地提供的标记,其指明保存在远程目的地上但未保存在本地目的地上的新数据的量。标记可指明在本地存储设备未能确认提供给其的数据之后提供给远程存储设备的新数据块的量,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间。从远程目的地复制数据到本地目的地可包括复制由映射指示的数据,该映射对应于写到远程目的地的、未被确认为写到本地目的地的数据。从本地目的地复制数据到远程目的地可包括复制由多个映射指示的数据,这些映射对应于写到本地目的地的、未被确认为写到远程目的地的数据。可以有两个或两个以上的映射。
根据本发明,保存恢复数据的软件包括提供数据块给远程目的地的可执行代码,其中每一数据块代表在第一时间之前及第二时间之后写的数据,其中某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间,其还包括提供同步数据给本地目的地的可执行代码,提供指示符给本地目的地并产生新数据块以用于在远程目的地的存储的可执行代码。本地目的地可包括保持多个映射的可执行代码,每一映射将正提供给其的同步数据与特定的数据块相关联。响应于接收指示符及新数据块的产生,本地目的地可指向新的映射。可以有两个或两个以上的映射。软件还可包括,响应于本地目的地未能确认提供给其的同步数据,在远程目的地保留提供给其的数据的映射的可执行代码。软件可包括,响应于本地目的地未能确认提供给其的同步数据,在远程目的地保留新数据块被创建的次数的计数的可执行代码。
根据本发明,恢复保存在本地目的地和远程目的地上的数据的软件包括:确定本地目的地和远程目的地中哪一个具有最新的数据的可执行代码,如果远程目的地具有最新数据则将远程目的地的数据复制到本地目的地的可执行代码,如果本地目的地具有最新数据则将本地目的地的数据复制到远程目的地的可执行代码。确定本地目的地和远程目的地中哪一个具有最新数据的可执行代码可包括检查远程目的地提供的标记的可执行代码,标记指明保存在远程目的地上但未保存在本地目的地上的新数据的量。标记可指明在本地存储设备未能确认提供给其的数据之后提供给远程存储设备的新数据块的量,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间。从远程目的地复制数据到本地目的地的可执行代码可包括复制由映射指示的数据的可执行代码,该映射对应于写到远程目的地的、未被确认为写到本地目的地的数据。从本地目的地复制数据到远程目的地的可执行代码可包括复制由多个映射指示的数据的可执行代码,这些映射对应于写到本地目的地的、未被确认为写到远程目的地的数据。可以有两个或两个以上的映射。
根据本发明,用于保存恢复数据的系统包括源组、连接到源组以从其接收数据块的远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,其中某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间,及连接到源组以从其接收同步数据的本地目的地,其中源组连同用于存储在远程目的地的新数据块的产生一起,提供指示符给本地目的地。
根据本发明,用于恢复数据的系统包括产生数据的源组、连接到源组以从其接收同步数据的本地目的地、连接到源组以从其接收同步数据的远程目的地、用于确定本地目的地和远程目的地中哪一个具有最新数据的装置、在远程目的地具有最新数据时用于将数据从远程目的地复制到本地目的地的装置、在本地目的地具有最新数据时用于将数据从本地目的地复制到远程目的地的装置。
根据本发明,保存恢复数据包括:主处理机写数据到本地存储设备,主处理机使本地存储设备积聚对应于主处理机的写的数据块,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且特定数据块的第二时间对应于该特定数据块随后的数据块的第一时间,将数据块从本地存储设备传输到远程目的地,从本地存储设备提供同步数据给本地目的地;及,主处理机连同存储在远程目的地的新数据块的产生,使得一指示符被提供给本地目的地。本地目的地可保持多个映射,其中每一映射将正提供给其的同步数据与特定的数据块相关联。响应于接收与新数据块的产生有关的指示符,本地目的地可指向新的映射。可以有两个或两个以上的映射。响应于本地目的地未能确认提供给其的同步数据,远程目的地可保留向其写的数据的映射。保存恢复数据可包括,响应于本地目的地未能确认提供给其的同步数据,远程目的地保留新数据块被创建的次数的计数。主处理机可写数据给一个以上的本地存储设备,这些本地存储设备同步传输数据给一个以上的本地目的地。
根据本发明,恢复保存在本地目的地和远程目的地上的数据包括使主机本地访问本地目的地和远程目的地之一,主机确定本地目的地和远程目的地中的哪一个具有最新数据,如果远程目的地具有最新数据,则主机使得数据从远程目的地复制到本地目的地,及如果本地目的地具有最新数据,则主机使得数据从本地目的地复制到远程目的地。主机确定本地目的地和远程目的地中哪一个具有最新数据可包括主机检查远程目的地提供的标记,标记指明保存在远程目的地上但未保存在本地目的地上的新数据的量。标记可指明在本地存储设备未能确认提供给其的数据之后提供给远程存储设备的新数据块的量,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且某一特定数据块的第二时间对应于特定数据块的随后数据块的第一时间。主机从远程目的地复制数据到本地目的地可包括主机复制由映射指示的数据,该映射对应于写到远程目的地的、未被确认为写到本地目的地的数据。主机从本地目的地复制数据到远程目的地可包括主机复制由多个映射指示的数据,这些映射对应于写到本地目的地的、未被确认为写到远程目的地的数据。可以有两个或两个以上的映射。
附图简要说明
图1为连同在此描述的系统使用的主机、本地存储设备及远程数据存储设备的示意图。
图2为连同在此描述的系统使用的主机、本地存储设备及远程数据存储设备之间的数据流的示意图。
图3为根据在此描述的系统,示出用于构建和利用本地存储设备上的数据块的项目的示意图。
图4示出了连同在此描述的系统使用的槽的数据结构。
图5为根据在此描述的系统,响应于主机的写,主机适配器(HA)的操作流程图。
图6为根据在此描述的系统,将数据从本地存储设备传输到远程存储设备的流程图。
图7为根据在此描述的系统,示出用于构建和利用远程存储设备上的数据块的项目的示意图。
图8为根据在此描述的系统,由远程存储设备执行的、与从本地存储设备接收提交指示符有关的步骤的流程图。
图9为根据在此描述的系统,将所传输的数据保存在远程存储设备中的流程图。
图10为根据在此描述的系统,所执行的与本地存储设备增加序号有关的步骤的流程图。
图11为根据在此描述的系统的另一实施例,用于构建和利用本地存储设备上的数据块的项目的示意图。
图12为根据在此描述的系统的另一实施例,响应于主机的写,主机适配器(HA)的操作流程图。
图13为根据在此描述的系统的另一实施例,将数据从本地存储设备传输到远程存储设备的流程图。
图14为根据在此描述的系统,多个本地和远程存储设备与主机的示意图。
图15为连同在此描述的系统使用的多盒模式(multi-box mode)表。
图16为根据在此描述的系统修改多盒模式表的流程图。
图17为根据在此描述的系统,主机转换周期的流程图。
图18为根据在此描述的系统连同本地存储设备递增序号所执行的步骤的流程图。
图19为根据在此描述的系统,将数据从本地存储设备传输到远程存储设备的流程图。
图20为根据在此描述的系统的另一实施例,将数据从本地存储设备传输到远程存储设备的流程图。
图21为根据在此描述的系统,从远程存储设备提供活动态空指示符消息给相应的本地存储设备的流程图。
图22为根据在此描述的系统,示出多个本地和远程存储设备与多个主机的示意图。
图23为根据在此描述的系统,由远程存储设备执行的与数据恢复有关的处理的流程图。
图24为根据在此描述的系统,由主机执行的与数据恢复有关的处理的流程图。
图25为根据在此描述的系统,示出存储设备、存储器、多个导向器、及通信模块的示意图。
图26为根据在此描述的系统,示出源组、本地目的地和远程目的地的示意图。
图27为根据在此描述的系统,由本地目的地执行的初始化数据恢复参数的过程的流程图。
图28A为根据在此描述的系统,在非故障方式期间由本地目的地执行的与接收数据有关的过程的流程图。
图28B为根据在此描述的系统,在非故障方式期间由本地目的地执行的与接收数据有关的另一过程的流程图。
图28C为根据在此描述的系统,在非故障方式期间由本地目的地执行的与接收数据有关的另一过程的流程图。
图29为根据在此描述的系统,由本地目的地执行的初始化数据恢复参数的过程的流程图。
图30为根据在此描述的系统,由远程目的地执行的与收集故障恢复数据有关的过程的流程图。
图31为根据在此描述的系统,所执行的与故障恢复有关的过程的流程图。
图32为根据在此描述的系统,所执行的与终止排序的写有关的处理的流程图。
图33为根据在此描述的系统,所执行的与从本地目的地发送数据到远程目的地有关的处理的流程图。
图34为根据在此描述的系统,由本地目的地执行的与重新设置错误恢复参数有关的过程的流程图。
图35为根据在此描述的系统,由远程目的地执行的与重新设置错误恢复参数有关的过程的流程图。
图36为根据在此描述的系统的源组的结构图。
图37为根据在此描述的系统的源组的另一结构图。
图38为根据在此描述的系统,从本地存储设备传输数据给远程存储设备的另一实施例的流程图。
图39为根据在此描述的系统,用于构建和操作远程存储设备上的数据块的项目的示意图。
图40为根据在此描述的系统,用于将逻辑设备位置映射到包含由远程存储设备接收的数据的槽的表。
图41为根据在此描述的系统,用于将逻辑设备位置映射到包含由远程存储设备接收的数据的槽的表的另一实施例。
图42为根据在此描述的系统的一实施例的源组、小型存储器本地目的地、及远程目的地的示意图。
图43为根据在此描述的系统的一实施例,示出在小型存储器本地目的地的数据存储的示意图。
图44为根据在此描述的系统的一实施例,用于在小型存储器本地目的地的数据存储的数据单元的图。
图45为根据在此描述的系统的一实施例,所执行的与小型存储器本地目的地接收数据有关的步骤的流程图。
图46为根据在此描述的系统的一实施例,所执行的与小型存储器本地目的地添加数据有关的步骤的流程图。
图47为根据在此描述的系统的另一实施例,所执行的与小型存储器本地目的地添加数据有关的步骤的流程图。
图48为根据在此描述的系统的一实施例,所执行的与小型存储器本地目的地除去数据有关的步骤的流程图。
图49为根据在此描述的系统的一实施例,所执行的与数据恢复有关的步骤的流程图。
图50为根据在此描述的系统的另一实施例,示出连接到小型存储器本地目的地的多个源组和远程目的地的示意图。
具体实施方式
参考图1,图表20示出了主机22、本地存储设备24和远程存储设备26之间的关系。主机22经主机适配器(HA)28从本地存储设备读数据及写数据到本地存储设备,主机适配器便于主机22和本地存储设备24之间的连接。尽管图表20仅示出了一个主机22和一个HA28,本领域一般技术人员可以意识到的是,可使用多个HA,且一个或多个HA可有一个或多个主机与其连接。
来自本地存储设备24的数据经RDF链路29复制到远程存储设备26以使远程存储设备26上的数据与本地存储设备24上的数据一样。尽管只示出了一个链路29,在存储设备24、26之间及在存储设备24、26之一或二者与其它存储设备(未示出)之间具有另外的链路是可能的。此外,链路29还可使用直接连接(有线、无线、或其某种结合)、网络(如因特网)、或任何其它适当的用于传送数据的设施提供。注意,在从本地存储设备24到远程存储设备26的数据传输之间可能有时间延迟,从而远程存储设备26可能,在某些时间点,某些数据与本地存储设备上的数据不一样。使用RDF的通信在美国专利5,742,792中描述,其通过引用组合于此。
本地存储设备24包括第一多个RDF适配器单元(RA)30a、30b、30c,远程存储设备26包括第二多个RA32a-32c。RA30a-30c、32a-32c均连接到RDF链路29且均类似于主机适配器28,但用于在存储设备24、26之间传输数据。连同RA30a-30c、32a-32c使用的软件将在下文中详细描述。
存储设备24、26可包括一个或多个磁盘,每一磁盘包含保存在每一存储设备24、26上的数据的不同部分。图1示出了存储设备24包括多个磁盘33a、33b、33c,及存储设备26包括多个磁盘34a、34b、34c。在此描述的RDF功能可被应用,使得本地存储设备24的磁盘33a-33c的至少一部分的数据可使用RDF复制到远程存储设备26的磁盘34a-34c的至少一部分中。存储设备24、26的其它数据不在存储设备24、26之间进行复制是可能的,因而不完全相同。
磁盘33a-33c中的每一个被连接到对应的磁盘适配器单元(DA)35a、35b、35c,其提供数据给磁盘33a-33c中的对应磁盘并从磁盘33a-33c中的对应磁盘接收数据。类似地,远程存储设备26的多个DA36a、36b、36c均用于提供数据给磁盘34a-34c中的对应磁盘并从磁盘34a-34c中的对应磁盘接收数据。在本地存储设备24的DA35a-35c、HA28和RA30a-30c之间存在内部数据通路。类似地,在远程存储设备的DA36a-36c和RA32a-32c之间也存在内部数据通路。注意,在其它实施例中,DA服务于一个以上的磁盘是可能的,且一个以上的DA服务于一个磁盘也是可能的。
本地存储设备24还包括全局存储器37,其可用于帮助在DA35a-35c、HA28和RA30a-30c之间的数据传输。存储器37可包含将由DA35a-35c、HA28和RA30a-30c中的一个或多个执行的任务,及包含用于从磁盘33a-33c中的一个或多个取回的数据的高速缓存器。类似地,远程存储设备26包括全局存储器38,其可包含将由DA36a-36c和RA32a-32c中的一个或多个执行的任务,及包含用于从磁盘34a-34c中的一个或多个取回的数据的高速缓存器。存储器37、38的使用将在下文中详细描述。
本地存储设备24中对应于磁盘33a-33c的存储空间可被再分为多个卷或逻辑设备。逻辑设备可以也可不对应于磁盘33a-33c的物理存储空间。因而,例如,磁盘33a可包含多个逻辑设备,或者单个逻辑设备可横跨两个磁盘33a、33b。类似地,远程存储设备26的包括磁盘34a-34c的存储空间可被再分为多个卷或逻辑设备,其中每一逻辑设备可以也可不对应于磁盘34a-34c中的一个或多个。
假设在本地存储设备24和远程存储设备26的部分之间进行映射的RDF包括,在远程存储设备26上建立逻辑设备,其是对本地存储设备24上的逻辑设备的远程镜像。主机22从本地存储设备24上的逻辑设备读数据并写数据到该逻辑设备,且RDF映射使得已修改的数据将通过使用RA30a-30c、32a-32c和RDF链路而从本地存储设备24传输到远程存储设备26。在稳态工作情况下,远程存储设备26上的逻辑设备包含的数据与本地存储设备24上的逻辑设备的数据完全一样。本地存储设备24上为主机22所访问的逻辑设备被称为“R1卷”(或“R1”),而远程存储设备26上包含R1卷上的数据的拷贝的逻辑设备被称为“R2卷”(或“R2”)。因此,主机从R1卷读数据并将数据写到R1卷,及RDF处理从R1卷到R2卷的数据的自动复制和更新。在此描述的系统可使用软件、硬件、和/或软件和硬件的结合进行实施,其中软件可保存在适当的存储介质中并由一个或多个处理器执行。
参考图2,其示出了从主机22到本地存储设备24和远程存储设备26的数据通路。如本地存储设备24的数据元51所示,从主机22写到本地存储设备24的数据被本地保存。由主机22写到本地存储设备24的数据还被本地存储设备24保持并由本地存储设备24经链路29发送给远程存储设备26。
在在此描述的系统中,主机22的每一数据写(如记录、多个记录、磁轨等的写)均被分配以序号。序号可在与写相关联的适当数据字段中提供。在图2中,主机22的写被示为被分配以序号N。由主机执行的、被分配以序号N的所有写均被收集在一个数据块52中。数据块52代表由主机22执行的、几乎在同时发生的多个单独的写。
通常,本地存储设备24积聚一个序号的数据块,同时将先前积聚的数据块(具有在前的序号)传输给远程存储设备26。因而,当本地存储设备24正积聚来自主机的、被分配以序号N的写时,已发生的、在前序号(N-1)的写由本地存储设备24经链路29传输给远程存储设备26。数据块54代表来自主机22的、被分配以序号N-1的、尚未传输给远程存储设备26的写。
远程存储设备26从对应于被分配以序号N-1的写的数据块接收数据并为具有序号N-1的主机写建立新的数据块56。数据可使用适当的RDF协议进行传输,其确认跨链路29发送的数据。当远程存储设备26已从数据块54接收所有的数据时,本地存储设备24发送提交信息给远程存储设备26以提交被分配以N-1序号的所有数据,其对应于数据块56。通常,一旦对应于特定序号的数据块被提交,则数据块可被写到逻辑存储设备。这在图2中用数据块58图示,其对应于被分配以序号N-2(即,主机22到本地存储设备24的写正使用的当前序号之前的第二个序号)的写。在图2中,数据块58被示出为正被写到数据元62,其代表远程存储设备26的磁盘存储。因而,远程存储设备26正接收和积聚对应于序号N-1的数据块56,同时对应于在前序号(N-2)的数据块58正被写到远程存储设备26的磁盘存储,如数据元62所示。在一实施例中,数据块58的数据因为写(但不是必需立即写)而被标记,而数据块56的数据则未被标记。
因此,在运行中,主机写数据到本地存储设备24,该数据被本地保存在数据元51中并被积聚在数据块52中。一旦特定序号的所有数据均已被积聚(在本文的其它地方描述),本地存储设备24递增序号。对应于小于当前序号的序号的数据块54的数据经链路29从本地存储设备24传输到远程存储设备26。数据块58对应于已由本地存储设备24通过发送消息给远程存储设备26进行提交的序号的数据。数据块58的数据被写到远程存储设备26的磁盘存储。
应注意的是,在数据块52、54、56、58特定之一内的写不是必须被排序。然而,如本文中其它地方所详细描述的,在开始对应于序号N-1的数据块54、56的任何写之前,对应于序号N-2的数据块58的每一写均已开始。此外,在开始对应于序号N的数据块52的任何写之前,对应于序号N-1的数据块54、56的每一写均已开始。因此,如果本地存储设备24和远程存储设备26之间通信失败,远程存储设备26可简单地结束最后提交的数据块(在图2的例子中为数据块58)的写,并可被保证:远程存储设备26处的数据的状态被排序,其中数据元62包含在某一时间点之前开始的所有写且不包含该时间点之后开始的写。因而,R2总是包含R1的即时拷贝且从R2设备重新建立一致的映射是可能的。
参考图3,图表70示出了用于构建和保持数据块52、54的项目。标准逻辑设备72包含由主机22写入的数据并对应于图2的数据元51和图1的磁盘33a-33c。标准逻辑设备72包含由主机22写到本地存储设备24的数据。
两个指针的链表74、76与标准逻辑设备72一起使用。链表74、76对应于可被保存在本地存储设备24的存储器37中的数据。链表74包含多个指针81-85,每一指针指向与本地存储设备24一起使用的高速缓存器88的槽。类似地,链表76包含多个指针91-95,每一指针指向高速缓存器88的槽。在一些实施例中,高速缓存器88可被提供在本地存储设备24的存储器37中。高速缓存器88包含多个缓存槽102-104,其可连同向标准逻辑设备72写一起使用,同时,可连同链表74、76一起使用。
链表74、76中的每一个均可用于数据块52、54之一,使得链表74可对应于序号N的数据块52,而链表76可对应于序号N-1的数据块54。因而,当数据由主机22写到本地存储设备24时,数据被提供给高速缓存器88,在某些情况下(在本文其它地方描述),链表74的适当指针被产生。应注意,数据将不会从高速缓存器88去除,直到数据被降级(destage)到标准逻辑设备72且数据不再被链表74的任一指针81-85指向为止,如本文其它地方所述。
在在此的实施例中,链表74、76之一被视为“活动态”,而另一个被视为“非活动态”。因此,当序号N为偶数时,链表74可以是活动态,而链表76是非活动态。链表74、76中的活动态链表处理来自主机22的写,而非活动态链表对应于正从本地存储设备24传输到远程存储设备26的数据。
在由主机22写的数据通过使用链表74、76中的活动态链表进行积聚时(对于序号N),对应于链表74、76中的非活动态链表的数据(对于在前的序号N-1)被从本地存储设备24传输到远程存储设备26。RA30a-30c使用链表74、76确定数据从本地存储设备24传输到远程存储设备26。
一旦对应于链表74、76之一中的指针的特定指针的数据已被传输给远程存储设备26,指针中的特定指针可从链表74、76中的适当链表去除。此外,假如槽中的数据不再因其它目的需要(如降级到标准逻辑设备72),数据还可被标记以从高速缓存器88去除(即槽可被返回到槽池以用于随后的、不相干的使用)。一机制可被用于确保数据不被从高速缓存器88去除,直到所有设备不再使用该数据为止。这样的机制在1996年7月16日授予的美国专利5,537,568、及2003年7月15日授予的美国专利6,594,742中有所描述,二者均通过引用组合于此。
参考图4,槽120,与高速缓存器88的槽102-104之一类似,包括标题122和数据124。标题122对应于系统用以管理槽120的内务信息。数据124为来自磁盘的、正被(暂时)保存在槽120中的相应数据。标题122中的信息包括指回到磁盘的指针、时间标签等。
标题122还包括与在此描述的系统一起使用的缓存标签126。在在此的实施例中,缓存标签126为8个字节。其中两个字节为“密码”,其表明槽120是否正由在此描述的系统使用。在其它实施例中,密码可以是一个字节,而其后的字节用于填充。如本文其它地方所描述的,等于特定值的两字节密码(或一字节)表明槽120被链表74、76的至少一项指向。不等于特定值的密码表明槽120未被链表74、76的项指向。密码的使用将在本文其它地方描述。
缓存标签126还包括一两字节字段,其指明槽120的数据124的序号(如N、N-1、N-2等)。如本文其它地方所描述的,缓存标签126的序号字段可用于帮助在此描述的处理。缓存标签126的其余四个字节可用于指针,如本文其它地方所描述的那样。当然,序号的两个字节和指针的四个字节仅在密码等于特定值时是有效的,其中特定值表明槽120被列表74、76之一中的至少一项指向。
参考图5,流程图140示出了连同主机22执行写操作,由HA28执行的步骤。当然,当主机22执行写时,处理出现以用一般方式处理写,而不管数据是否是R1/R2RDF组的一部分。例如,当主机22对磁盘的一部分写数据时,对缓存槽的写发生,其最后被降级到磁盘。缓存槽或可以是新的缓存槽,或可以是已经存在的、连同先前对同一磁轨进行的读和/或写操作产生的缓存槽。
处理开始于第一步骤142,其中对应于写的槽被锁定。在在此的实施例中,高速缓存器88的每一槽102-104对应于标准逻辑设备上的数据磁道。在步骤142锁定槽阻止另外的过程在HA28执行的、对应于流程图140的步骤的处理期间在相应的槽上运行。
在步骤142之后是步骤144,其中序号N的值被设定。如本文别处所描述的,在步骤144获得的序号的值在HA28执行的整个写操作期间均被保持,同时槽被锁定。如本文别处所描述的,序号被分配给每一写以设定写属于数据块52、54中的哪一个。主机22执行的写被分配以当前序号。单一写操作始终保持同一序号是有用的。
在步骤144之后是测定步骤146,其确定缓存槽的密码字段是否有效。如上所述,在此描述的系统将密码字段设定为预先确定的值以表明缓存槽已经在指针的链表74、76之一中。如果在测定步骤146确定密码字段无效(表明槽是新的且没有列表74、76的指针指向该槽),则控制从步骤146转到步骤148,新槽的缓存标签被设定,其中将密码设定为预先确定的值、将序号字段设定为N、将指针字段设定为空。在其它实施例中,指针字段可被设定为指向槽本身。
在步骤148之后是步骤152,指向新槽的指针被添加到指针列表74、76中的活动态列表。在在此的一实施例中,列表74、76为周期双向链表,且新指针被以传统方式添加到周期双向链表中。当然,其它适当的数据结构也可用于管理列表74、76。在步骤152之后是步骤154,其中标志被设定。在步骤154,RDF_WP标志(RDF写悬挂标志)被设定以表明该槽需要通过使用RDF传输给远程存储设备26。此外,在步骤154,IN_CACHE标志被设定以表明该槽需要被降级到标准逻辑设备72。在步骤154之后是步骤156,由主机22和HA28写的数据被写到该槽中。在步骤156之后是步骤158,该槽被解锁。在步骤158之后,处理结束。
如果在测定步骤146确定槽的密码字段有效(表明该槽已经被列表74、76的至少一指针指向),则控制从步骤146转到测定步骤162,其确定该槽的序号字段是否等于当前序号N。应注意,对于具有有效密码的槽的序号字段有两种有效的可能性。序号字段等于N(当前序号)是可能的。这在槽对应于具有序号N的在前写的情况下发生。另一种可能性是序号字段等于N-1。这在槽对应于具有序号N-1的在前写的情况下发生。序号字段的任何其它值均是无效的。因此,对于某些实施例,在步骤162中包括错误/有效性检查或在单独的步骤中进行错误/有效性检查是可能的。这样的错误可以任何适当的方式处理,其可包括提供消息给用户。
如果在测定步骤162确定槽的序号字段中的值等于当前序号N,则不要求特殊的处理且控制从步骤162转到步骤156,如上所述,数据被写到槽中。否则,如果序号字段的值为N-1(唯一另外的有效值),则控制从步骤162转到步骤164,新槽被获得。在步骤164获得的新槽可用于保存正被写的数据。
在步骤164之后是步骤166,来自旧槽的数据被复制到小步骤164获得的新槽。应注意,所复制的数据包括RDF WP标志,其应在该槽被第一次创建时已被设定(步骤154)。在步骤166之后是步骤168,新槽的缓存标签被设定,其将密码字段设定为适当的值、将序号字段设定为当前序号N、及将指针字段设定为指向旧槽。在步骤168之后是步骤172,指向新槽的指针被添加到链表74、76中的活动态链表。在步骤172之后是步骤156,如上所述,数据被写到槽中,在该例子中,其是新槽。
参考图6,流程图200示出了连同RA30a-30c扫描链表72、74中的非活动态链表所执行的步骤以将RDF数据从本地存储设备24传输到远程存储设备26。如上所述,当N周期正由主机使用链表72、74中的活动态链表写到R1设备时,链表72、74中的非活动态链表指向对应于R1设备的N-1周期的槽。
处理开始于第一步骤202,其确定在列表72、74的非活动态表中是否有任何项。当数据被传输时,相应的项被从列表72、74的非活动态列表中去除。此外,新的写被提供给列表72、74中的活动态列表且通常不提供给列表72、74中的非活动态列表。因此,列表72、74中的非活动态列表在某些时间不包含数据是可能的(也是所希望的,如本文别处所述的)。如果在步骤202确定没有数据将被传输,则列表72、74中的非活动态列表继续被轮询直到数据可用为止。用于发送的数据变得可用同时周期切换(在本文别处描述),其中列表72、74中的非活动态列表变成列表72、74中的活动态列表,反之亦然。
如果在步骤202确定有数据可用于发送,则控制从步骤202转到步骤204,其中槽被验证为是正确的。在步骤204执行的处理是随意的“精神健全检查”,其可包括验证密码字段是正确的及验证序号字段是正确的。如果在槽中有不正确的(意外的)数据,则可执行错误处理,其可包括通知用户该错误及可能的错误校正处理。
在步骤204之后是步骤212,数据以传统方式经RDF进行发送。在在此的一实施例中,整个槽均未被传输。而是,只有槽内具有适当的镜像位设置(表明记录已改变)的记录被传输给远程存储设备26。然而,在其它实施例中,则可能传输整个槽,假如远程存储设备26只写对应于具有适当镜像位设置的数据并忽略该磁轨的其它数据,其可能是也可能不是有效的。在步骤212之后是测定步骤214,其确定被传输的数据是否已被R2设备确认。如果没有,则数据被按照从步骤214回到步骤212的流程的指示重新发送。在其它实施例中,不同的及更多有关的处理可用于发送数据及确认其接收。这样的处理可包括错误报告及在一定数量的发送数据的努力已失败之后执行的另外的处理。
一旦在测定步骤214确定数据已被成功发送,控制从步骤214转到步骤216以清除RDF_WP标志(因为数据已经RDF成功发送)。在步骤216之后是测定步骤218,其确定该槽是否是连同向已经具有列表72、74的非活动态列表中的现存项的槽进行写而创建的复制槽。这种可能性已在上面连同步骤162、164、166、168、172进行描述。如果在测定步骤218确定该槽是复制槽,则控制从步骤218转到步骤222,该槽被返回到可用的槽池中(将被重新使用)。此外,槽还可被老化(或具有某些应用于其的其它适当机制)以在其它槽之前提供用于立即的重新使用,因为该槽中提供的数据对于任何其它目的均不是有效的。在步骤222或步骤218(如果槽不是复制槽)之后是步骤224,槽的标题的密码字段被清零,使得当槽被重新使用时,在图5的步骤146的测定可正确地将该槽分类为新槽。
在步骤224之后是步骤226,列表72、74的非活动态列表中的项被移除。在步骤226之后,控制转回到步骤202,如上所述,其确定在列表72、74的非活动态列表上是否有另外的项对应于需要被传输的数据。
参考图7,图表240示出了远程存储设备26所使用的数据块56、58的产生和处理。由远程存储设备26接收的数据经链路29提供给远程存储设备26的高速缓存器242。高速缓存器242可被提供在远程存储设备26的存储器38中。高速缓存器242包括多个缓存槽244-246,每一缓存槽可被映射到标准逻辑存储设备252的磁轨。高速缓存器242类似于图3的高速缓存器88并可包含可被降级到远程存储设备26的标准逻辑存储设备252的数据。标准逻辑存储设备252对应于图2中所示的数据元62及图1中所示的磁盘34a-34c。
远程存储设备26还包含一对只缓存虚拟设备254、256。只缓存虚拟设备254、256对应可能保存在远程存储设备26的存储器38中的设备表。每一只缓存虚拟设备254、256的表的每一磁轨项(trackentry)或指向标准逻辑设备252的磁轨或指向高速缓存器242的槽。只缓存虚拟设备在2003年3月25日申请的、题为“CACHE-ONLY虚拟设备”的美国未决专利申请10/396,800中描述,其通过引用组合于此。
多个缓存槽244-246可与向标准逻辑设备252进行写一起使用,同时,也可与只缓存虚拟设备254、256一起使用。在在此的实施例中,只缓存虚拟设备254、256的每一磁轨表项包含一空值以表明该磁轨的数据被保存在标准逻辑设备252的对应磁轨上。否则,每一只缓存虚拟设备的磁轨表中的项包含指向高速缓存器242中的槽244-246之一的指针。
每一只缓存虚拟设备254、256对应于数据块56、58之一。因而,例如,只缓存虚拟设备254可对应于数据块56,而只缓存虚拟设备256可对应于数据块58。在在此的实施例中,只缓存虚拟设备254、256之一可被视为“活动态”,而只缓存虚拟设备254、256中的另一个可被视为“非活动态”。只缓存虚拟设备254、256中的非活动态虚拟设备可对应于正从本地存储设备24接收的数据(即数据块56),而只缓存虚拟设备254、256中的活动态虚拟设备对应于正被恢复(写)到标准逻辑设备252的数据。
来自本地存储设备24的、经链路29接收的数据可被放置在高速缓存器242的槽244-246之一中。只缓存虚拟设备254、256中的非活动态虚拟设备的相应指针可被设置为指向所接收的数据。随后的具有相同序号的数据可以类似的方式进行处理。在某一时间,本地存储设备24提供消息,其提交所有使用同一序号发送的数据。一旦特定序号的数据已被提交,只缓存虚拟设备254、256中的非活动态设备变成活动态,反之亦然。在这时,来自只缓存虚拟设备254、256的当前活动态设备的数据被复制到标准逻辑设备252,而只缓存虚拟设备254、256中的非活动态设备被用于接收从本地存储设备24传输给远程存储设备26的新数据(具有新的序号)。
当从只缓存虚拟设备254、256中的活动态设备移除数据时(在本文别处描述),只缓存虚拟设备254、256中的活动态设备中的对应项可被设为空值。此外,假如槽中的数据不再为其它目的所需要(如将被降级到标准逻辑设备252),数据还可从高速缓存器244中移除(即该槽被返回到空闲槽池中以供后用)。一机制可用于确保数据不从高速缓存器242中移除,直到所有镜像(包括只缓存虚拟设备254、256)均不再使用该数据为止。这样的机制在1996年7月16日授予的美国专利5,537,568及2003年7月15日授予的美国专利6,594,742中描述,二者均通过引用组合于此。
在本文别处讨论的一些实施例中,远程存储设备26可包含链表258、262,类似于本地存储设备24使用的链表74、76。链表258、262可包含这样的信息,其确定相应的只缓存虚拟设备254、256中已被修改的槽,其中列表258、262之一对应于只缓存虚拟设备254、256之一,及列表258、262中的另一列表对应于只缓存虚拟设备254、256中的另一个。如本文别处所描述的,列表258、262可用于帮助从只缓存虚拟设备254、256恢复数据到标准逻辑设备252中。
参考图8,流程图270示出了与处理用于序号提交的数据有关的、由远程存储设备26执行的步骤,其中所述数据由本地存储设备24传输给远程存储设备26。如本文别处所描述的,本地存储设备24定期递增序号。当其发生时,本地存储设备24结束在前序号的所有数据的传输并继而发送一用于在前序号的提交信息。
处理开始于第一步骤272,其接收提交。在步骤272之后是测定步骤274,其确定远程存储设备26的只缓存虚拟设备254、256中的活动态虚拟设备是否是空的。如本文别处所描述的,远程存储设备26的只缓存虚拟设备254、256中的非活动态虚拟设备用于积聚来自本地存储设备24的使用RDF发送的数据,而只缓存虚拟设备254、256中的活动态虚拟设备被恢复到标准逻辑设备252。
如果在测定步骤274确定只缓存虚拟设备254、256中的活动态虚拟设备不是空的,则控制从测定步骤274转到步骤276,其中,在执行进一步的处理之前只缓存虚拟设备254、256中的活动态虚拟设备的恢复被完成。从只缓存虚拟设备254、256中的活动态虚拟设备恢复数据将在本文别处详细描述。在处理提交并开始恢复下一序号的数据之前只缓存虚拟设备254、256中的活动态虚拟设备为空是有用的。
在步骤276之后或在步骤274之后(如果只缓存虚拟设备254、256中的活动态虚拟设备被确定为空)是步骤278,只缓存虚拟设备254、256中的活动态虚拟设备被使得为非活动态。在步骤278之后是步骤282,只缓存虚拟设备254、256中先前非活动态的虚拟设备(即在执行步骤278之前为非活动态的虚拟设备)被变成活动态。在步骤278、282交换活动态及非活动态只缓存虚拟设备254、256准备了只缓存虚拟设备254、256中的当前非活动态(及空)的虚拟设备以开始从本地存储设备24接收下一序号的数据。
在步骤282之后是步骤284,只缓存虚拟设备254、256中的活动态虚拟设备被恢复到远程存储设备26的标准逻辑设备252。将只缓存虚拟设备254、256中的活动态虚拟设备恢复到标准逻辑设备252将在下文中详细描述。然而,应注意,在一些实施例中,恢复过程在步骤284开始,但不必在步骤284就结束。在步骤284之后是步骤286,已从本地存储设备24发送到远程存储设备26的提交被确认回到本地存储设备24,使得本地存储设备24被通知:提交成功。在步骤286之后,处理结束。
参考图9,流程图300更详细地示出了图8的步骤276、284,其中远程存储设备26恢复只缓存虚拟设备254、256中的活动态虚拟设备。处理开始于第一步骤302,指针被设定为指向只缓存虚拟设备254、256中的活动态虚拟设备的第一槽。指针用于重复通过只缓存虚拟设备254、256中的活动态虚拟设备的每一磁轨表项,每一磁轨表项均被单独处理。在步骤302之后是测定步骤304,其确定只缓存虚拟设备254、256中的活动态虚拟设备的正被处理的磁轨是否指向标准逻辑设备252。如果是,则没有东西需要恢复。否则,控制从步骤304转到步骤306,只缓存虚拟设备254、256中的活动态虚拟设备的相应槽被锁定。
在步骤306之后是测定步骤308,其确定标准逻辑设备252的相应槽是否已经在远程存储设备26的高速缓存器中。如果是,则控制从测定步骤308转到步骤312,标准逻辑设备的槽被锁定。在步骤312之后是步骤314,来自只缓存虚拟设备254、256中的活动态虚拟设备的数据与用于标准逻辑设备252的高速缓存器中的数据合并。在步骤314合并数据包括用只缓存虚拟设备254、256中的活动态虚拟设备的新数据盖写标准逻辑设备的数据。应注意,在对记录级标志提供的实施例中,则可能简单地将新记录从只缓存虚拟设备254、256中的活动态虚拟设备或(OR)到高速缓存器中的标准逻辑设备252的记录。即,如果记录被交叉存取,则只需使用来自只缓存虚拟设备254、256中的活动态虚拟设备的已改变的记录,并将记录提供给标准逻辑设备252的缓存槽。在步骤314之后是步骤316,标准逻辑设备252的槽被解锁。在步骤316之后是步骤318,只缓存虚拟设备254、256中的活动态虚拟设备的正被处理的槽也被解锁。
如果在测定步骤308确定标准逻辑设备252的相应槽不在高速缓存器中,则控制从测定步骤308转到步骤322,改变标准逻辑设备252的槽的磁轨项以表明标准逻辑设备252的槽在高速缓存器中(如可设置IN_CACHE标志)并需要被降级。如本文别处所述,在一些实施例中,只有具有适当镜像位设置的磁轨的记录才需要被降级。在步骤322之后是步骤324,可设置磁轨的标志以表明该磁轨的数据在高速缓存器中。
在步骤324之后是步骤326,标准逻辑设备252的槽指针被改变为指向高速缓存器中的槽。在步骤326之后是测定步骤328,其确定在步骤322、324、326执行的操作是否已成功。在某些情况下,一称为“比较和交换”的操作可用于执行步骤322、324、326。如果这些操作因任何原因而没有成功,则控制从步骤328转回到步骤308以重新检查标准逻辑设备252的相应磁轨是否在高速缓存器中。否则,如果在测定步骤328确定先前的操作均已成功,则控制从测定步骤328转到步骤318,如上所述。
在步骤318之后是测定步骤332,其确定只缓存虚拟设备254、256中的活动态虚拟设备的缓存槽(其正被恢复)依然在使用。在某些情况下,只缓存虚拟设备254、256中的活动态虚拟设备的槽可能依然正由另一镜像使用。如果在测定步骤332确定只缓存虚拟设备的槽正由另一镜像使用,则控制从测定步骤332转到步骤334,释放槽以为其它过程使用(如恢复到可用槽池中,如本文别处所述)。在步骤334之后是步骤336,指向下一槽以处理只缓存虚拟设备254、256中的活动态虚拟设备的下一槽。应注意,步骤336还可从测定步骤332到达,如果在步骤332确定只缓存虚拟设备254、256中的活动态虚拟设备仍然由另一镜像使用的话。应注意,如果在步骤304确定对于正处理的槽,只缓存虚拟设备254、256中的活动态虚拟设备指向标准逻辑设备252,步骤336也可从测定步骤304到达。在步骤336之后是测定步骤338,其确定只缓存虚拟设备254、256中的活动态虚拟设备是否有更多的槽要被处理。如果不是,则处理结束。否则,控制从测定步骤338转回到步骤304。
在另一实施例中,可能对所接收的数据块56建立已修改的槽的列表,数据块56对应于远程存储设备26上的N-1周期,所述列表如图7中所示的列表258、262。当数据被接收时,远程存储设备26建立已修改的槽的链表。所建立的链表可以是周期的、线性的(具有NULL终止)、或任何其它适当的设计。链表接着可用于恢复只缓存虚拟设备254、256中的活动态虚拟设备。
图9的流程图300示出了两个二选一的通路342、344,其图示了使用已修改的槽的列表的实施例的实施。在步骤302,指针(用于重复通过已修改的槽的列表)被使得指向列表的第一单元。在步骤302之后是步骤306,其由另一通路342到达。在使用已修改的槽的列表的实施例中,不需要测定步骤304,因为列表上没有槽应指向标准逻辑设备252。
在步骤306之后,如上以先前实施例所述,处理继续,除了步骤336为遍历已修改的槽的列表而不是指向COVD中的下一槽以外。类似地,在步骤338的测试确定指针是否在列表的末尾(或在周期链表的情况下回到开始)。同样,如果在步骤338确定有更多的槽要处理,则控制从步骤338转到步骤306,如另一通路344所示。如上所述,对于使用已修改的槽的列表的实施例,步骤304可被排除。
参考图10,流程图350示出了连同本地存储设备24增加序号执行的步骤。处理开始于第一步骤352,在增加序号之前本地存储设备24等待至少M秒。在在此的实施例中,M为30,当然,M可以为任何数字。如果存储设备24、26之间的通信中断,较大的M值增加了可能丢失的数据的量。然而,较小的M值可能因更频繁地递增序号而增加内务操作的总量。
在步骤352之后是测定步骤354,其确定是否本地存储设备24的所有HA已设置位,其表明HA已完成在前序号的所有I/O。当序号改变时,每一HA注意到该改变并设置位,其表明在前序号的所有I/O完成。例如,如果序号从N-1变为N,HA将在HA已完成序号N-1的所有I/O时设置位。注意,在某些情况下,HA的单一I/O可能需要很长时间并可能在序号已改变之后仍然在进行之中。还应注意,对于某些系统,可使用不同的机制来确定所有HA已完成它们的N-1I/O。不同的机制可包括检查存储器37中的设备表。
如果在测定步骤354确定来自在前序号的I/O已被完成,则控制从步骤354转到测定步骤356,其确定列表74、76中的不活动态列表是否是空的。应注意,可不进行序号转换,除非及直到对应于列表74、76的不活动态列表的所有数据已使用RDF协议全部从本地存储设备24传输到远程存储设备26为止。一旦列表74、76中的不活动态列表被确定为空,则控制从步骤356转到步骤358,在前序号的提交从本地存储设备24发送到远程存储设备26。如上所述,远程存储设备26接收特定序号的提交信息将使得远程存储设备26开始恢复对应于序号的数据。
在步骤358之后是步骤362,对列表74、76中的不活动态列表的数据复制被暂停。如本文别处所述,不活动态列表被扫描以将相应的数据从本地存储设备24发送到远程存储设备26。暂停复制数据直到序号转换完成为止是有用的。在在此的实施例中,暂停通过发送消息给RA 30a-30c实现。然而,本领域一般技术人员应该意识到的是,对于使用其它组件来帮助使用在此描述的系统发送数据的实施例,暂停复制可通过发送适当的消息/指令给其它组件实现。
在步骤362之后是步骤364,其增加序号。在步骤364之后是步骤366,在测定步骤354中使用的HA的位均被清零,使得这些位可连同序号的增加而被再次设置。在步骤366之后是测定步骤372,其确定远程存储设备26是否已确认在步骤358发送的提交信息。确认提交信息已在上面结合图8进行了描述。一旦确定远程存储设备26已确认在步骤358发送的提交信息,控制从步骤372转到步骤374,在步骤362提供的暂停复制设定被解除,使得复制可重新开始。在步骤374之后,处理结束。注意,从步骤374回到步骤352以开始新的周期从而连续增加序号是可能的。
使用R1设备上的COVD来收集与活动态数据和非活动态数据块相关的槽也是可能的。在这种情况下,正象R2设备处那样,一COVD可与非活动态序号相关联,而另一COVD可与活动态序号相关联。这将在下面讨论。
参考图11,图表400示出了用于构建和保持数据块52、54的项目。标准逻辑设备402包含由主机22写的数据并对应于图2的数据单元51和图1的磁盘33a-33c。标准逻辑设备402包含由主机22写到本地存储设备24的数据。
两个只缓存虚拟设备404、406可与标准逻辑设备402一起使用。只缓存虚拟设备404、406对应可能保存在本地存储设备24的存储器37中的设备表。每一只缓存虚拟设备404、406的表的每一磁轨项或指向标准逻辑设备402的磁轨或指向连同本地存储设备24使用的高速缓存器408的槽。在某些实施例中,高速缓存器408可被提供在本地存储设备24的存储器37中。
高速缓存器408包含多个缓存槽412-414,其可连同对标准逻辑设备402进行写一起使用,同时,还可连同只缓存虚拟设备404、406一起使用。在在此的实施例中,只缓存虚拟设备404、406的每一磁轨表项包含一空值以指向标准逻辑设备402的相应磁轨。否则,每一只缓存虚拟设备404、406的磁轨表中的项包含指向高速缓存器408中的槽412-414之一的指针。
每一只缓存虚拟设备404、406可用于数据块52、54之一,从而,例如,只缓存虚拟设备404可对应于数据块52(序号N),而只缓存虚拟设备406可对应于数据块54(序号N-1)。因此,当数据由主机22写到本地存储设备24时,数据被提供给高速缓存器408且只缓存虚拟设备404的适当指针被调整。应注意,数据将不从高速缓存器408中移除,直到数据被降级到标准逻辑设备402为止,且数据还由只缓存虚拟设备404释放,如本文别处所述。
在在此的实施例中,只缓存虚拟设备404、406之一被视为“活动态”,而另一只缓存虚拟设备被视为“非活动态”。因而,例如,当序号N为偶数时,只缓存虚拟设备404可以为活动态,而只缓存虚拟设备406为非活动态。只缓存虚拟设备404、406中的活动态虚拟设备处理来自主机22的写,而只缓存虚拟设备404、406中的非活动态虚拟设备对应于正从本地存储设备24传输到远程存储设备26的数据。
当主机22所写的数据使用只缓存虚拟设备404、406中的活动态虚拟设备进行积聚时(对于序号N),对应于只缓存虚拟设备404、406中的非活动态虚拟设备的数据(对于在前序号N-1)从本地存储设备24传输到远程存储设备26。对于本实施例及有关的实施例,本地存储设备的DA 35a-35c处理对只缓存虚拟设备404、406的不活动态虚拟设备的扫描以将复制请求发送给一个或多个RA 30a-30c从而将数据从本地存储设备24传输到远程存储设备26。因而,上述与暂停和重新开始复制有关的步骤362、374可包括提供消息/指令给DA35a-35c。
一旦数据已被传输给远程存储设备26,只缓存虚拟设备404、406的非活动态虚拟设备中的对应项可被设定为空值。此外,如果槽中的数据不再因另外的目的所需要(如要被降级到标准逻辑设备402),数据还可从高速缓存器408中移除(即槽被返回到槽池中以供后用)。一机制可用于确保数据不被从高速缓存器408移除,直到所有镜像(包括只缓存虚拟设备404、406)不再使用该数据为止。这样的机制在1996年7月16日授予的美国专利5,537,568及2003年7月15日授予的美国专利6,594,742中描述,二者均通过引用组合于此。
参考图12,流程图400示出了连同主机22执行写操作由HA28执行的步骤,其是针对两个COVD均由R1设备使用以提供在此描述的系统的实施例。处理开始于第一步骤442,对应于写的槽被锁定。在在此的实施例中,高速缓存器408的每一槽412-414对应于标准逻辑设备402上的数据磁轨。在步骤442锁定槽可在HA28执行的处理期间阻止另外的过程在相应的槽上运行,所述HA28执行的处理对应于流程图440的步骤。
在步骤442之后为步骤444,序号N的值被设定。正象使用列表而不是在R1侧上使用COVD的实施例那样,在步骤444获得的序号的值在HA28执行的整个写操作期间均被保持,且槽被锁定。如本文别处所述,序号被分配给每一写以设定数据块52、54之一属于哪一写。主机22执行的写被分配以当前序号。单一写操作始终保持相同的序号是有用的。
在步骤444之后是测定步骤446,其确定只缓存虚拟设备404、406中的非活动态虚拟设备是否已经指向在步骤442锁定的槽。这可能在序号小于当前序号时如果对同一槽的写已被提供的情况下发生。对应于在前序号的写的数据可能尚未被传输给远程存储设备26。
如果在测定步骤446确定只缓存虚拟设备404、406中的非活动态虚拟设备没有指向该槽,则控制从测定步骤446转到另一测定步骤448,其确定只缓存虚拟设备404、406中的活动态虚拟设备是否指向该槽。如果在序号与当前序号相同时先前已有对该槽的写,则只缓存虚拟设备404、406中的活动态虚拟设备指向该槽是可能的。如果在测定步骤448确定只缓存虚拟设备404、406中的活动态虚拟设备没有指向该槽,则控制从测定步骤448转到步骤452,为数据获得新槽。在步骤452之后是步骤454,只缓存虚拟设备404、406中的活动态虚拟设备被使得指向该槽。
在步骤454之后或在步骤448之后(如果只缓存虚拟设备404、406的活动态虚拟设备指向该槽)是步骤456,设置标志。在步骤456,RDF_WP标志(RDF写未决标志)被设定以表明该槽需要使用RDF传输给远程存储设备26。此外,在步骤456,IN_CACHE标志被设定以表明该槽需要被降级到标准逻辑设备402。应注意,在某些情况下,如果只缓存虚拟设备404、406的活动态虚拟设备已经指向该槽(如在步骤448确定),则RDF_WP和IN_CACHE标志在执行步骤456前已被设定是可能的。然而,在步骤456设置标志确保标志被正确地设置,而不管先前的状态如何。
在步骤456之后是步骤458,指向该槽的磁轨表中的间接标志被清零,以表明有关数据被提供在该槽中而不是在间接指向其的另外的槽中。在步骤458之后是步骤462,正由主机22和HA28写的数据被写到该槽中。在步骤462之后是步骤464,其解锁槽。在步骤464之后,处理结束。
如果在测定步骤446确定只缓存虚拟设备404、406中的非活动态虚拟设备指向该槽,则控制从步骤446转到步骤472,其获得新槽。在步骤472获得的新槽可用于只缓存虚拟设备404、406的非活动态虚拟设备以实现RDF传输,同时旧槽可与只缓存虚拟设备404、406的活动态虚拟设备相关联,如下所述。
在步骤472之后是步骤474,旧槽的数据被复制到在步骤472获得的新槽。在步骤474之后是步骤476,(上述的)间接标志被设定以表明只缓存虚拟设备404、406的非活动态虚拟设备的磁轨表项指向旧槽及表明数据在旧槽所指向的新槽中。因此,在步骤476设置间接标志影响只缓存虚拟设备404、406的非活动态虚拟设备的磁轨表从而导致磁轨表项表明数据在新槽中。
在步骤476之后是步骤478,新槽中的记录的镜像位被调整。当数据在步骤474从旧槽复制到新槽时,被复制的任何本地镜像位均被清零,因为新槽的目的只是简单地实现对只缓存虚拟设备的非活动态虚拟设备的RDF传输。旧槽将用于处理任何本地镜像。在步骤478之后是步骤462,数据被写到槽中。在步骤462之后是步骤464,解锁槽。在步骤464之后,处理结束。
参考图13,流程图500示出了连同本地存储设备24将数据块54传输给远程存储设备26所执行的步骤。传输实质上包括:对只缓存虚拟设备404、406的非活动态虚拟设备先前在活动态时的重复操作期间已写到那里的磁轨,扫描只缓存虚拟设备404、406的非活动态虚拟设备。在该实施例中,本地存储设备24的DA35a-35c扫描只缓存虚拟设备404、406的非活动态虚拟设备以通过一个或多个RA30a-30c、使用RDF协议将需要传输的数据复制到远程存储设备26。
处理开始于第一步骤502,指向只缓存虚拟设备404、406的非活动态虚拟设备的第一磁轨以开始通过所有磁轨的重复过程。在第一步骤502之后是测定步骤504,其确定RDF_WP标志是否已被设定。如本文别处所述,RDF_WP标志被用于表明槽(磁轨)包含需要经RDF链路传输的数据。被设置的RDF_WP标志表明槽(磁轨)中的至少部分数据将使用RDF传输。在在此的实施例中,整个槽均不被传输。而是,只有槽内具有适当的镜像位设置(表明记录已改变)的记录才被传输给远程存储设备26。然而,在其它实施例中,假如远程存储设备26只写对应于具有适当镜像位设置的记录的数据并忽略磁轨的其它数据,则可能传输整个槽,其可以是也可不是有效的。
如果在测定步骤504确定被处理的缓存器具有RDF_WP标志设置,则控制从步骤504转到测定步骤505,其确定槽是否包含数据或确定槽是否是指向包含相关数据的另一槽的间接槽。在某些情况下,槽可能不包含对应于槽的磁盘部分的数据。即槽可能是指向包含数据的另一槽的间接槽。如果在步骤505确定槽是间接槽,则控制从步骤505转到步骤506,获取数据(从间接槽指向的槽获取)。因而,如果槽是直接槽,正由RDF发送的数据被保存在该槽中,而如果槽是间接槽,则正由RDF发送的数据被保存在由间接槽所指向的另一槽中。
在步骤506之后或步骤505(如果槽是直接槽)是步骤507,正被发送的数据(直接或间接从槽)由DA 35a-35c之一复制以使用RDF协议从本地存储设备24发送到远程存储设备26。在步骤507之后是测定步骤508,其确定远程存储设备26是否已确认数据的接收。如果否,则控制从步骤508转回到步骤507以重新发送数据。在其它实施例中,不同的及更多有关的处理可用于发送数据并确认其接收。这样的处理可包括错误报告及其它处理,其是在一定量的发送数据的尝试失败之后执行的处理。
一旦在测定步骤508确定数据已被成功发送,控制从步骤508转到步骤512以清零RDF_WP标志(因为数据已经RDF成功发送)。在步骤512之后是步骤514,适当的镜像标志被清零以表明至少RDF镜像(R2)不再需要数据。在在此的实施例中,作为槽(磁轨)的一部分的每一记录具有各自的镜像标志,其表明哪些镜像使用特定的记录。R2设备是每一记录的镜像之一且是对应于R2设备的标志在步骤514被清零。
在步骤514之后是测定步骤516,其确定正被处理的磁轨的任意记录是否具有任意其它镜像标志设置(对于其它镜像设备)。如果否,则控制从步骤516转到步骤518,其释放槽(即不再被使用)。在一些实施例中,未使用的槽可被保持在可用槽池中。应注意,对于槽的一些记录,如果另外的标志仍被设置,则可能意味着记录需要被降级到标准逻辑设备402或正由一些其它镜像(包括另一R2设备)使用。在步骤518之后,或在步骤516之后(如果更多的镜像标志存在)是步骤522,用于重复通过只缓存虚拟设备404、406的非活动态虚拟设备的每一磁轨项的指针被使得指向下一磁轨。在步骤522之后是测定步骤524,其确定只缓存虚拟设备404、406中的非活动态虚拟设备是否有更多的磁轨要被处理。如果否,则处理结束。否则,控制转回到测定步骤504,如上所述。注意,如果确定对于正被处理的磁轨RDF_WP标志未被设置,步骤522还可从测定步骤504到达。
参考图14,图表700示出了主机702连接到多个本地存储设备703-705。图表700还示出了多个远程存储设备706-708。尽管图表700中只示出了三个本地存储设备703-705和三个远程存储设备706-708,在此描述的系统可扩展到使用任意数量的本地和远程存储设备。
本地存储设备703-705中的每一个连接到相应的远程存储设备706-708,从而,例如,本地存储设备703连接到远程存储设备706,本地存储设备704连接到远程存储设备707,及本地存储设备705连接到远程存储设备708。本地存储设备703-705和远程存储设备706-708可使用在此描述的排序的写机制进行连接,从而,例如,本地存储设备703可使用排序的写机制连接到远程存储设备706。如本文别处所述,排序的写机制允许在本地存储设备和/或主机停止工作和/或丢失数据的情况下通过使用远程存储设备而进行数据恢复。
在一些情况下,主机702可运行单个应用程序,其同时使用一个以上的本地存储设备703-705。在这种情况下,应用程序可被配置以确保:如果主机702要在任意时间中止工作和/或如果本地存储设备703-705之一发生故障,则应用数据是一致的(可恢复的)。然而,由于本地存储设备703-705和远程存储设备706-708之间的每一排序的写连接与其它连接不同步,则不能确保用于应用程序的数据将在远程存储设备706-708是一致的(因而可恢复)。即,例如,即使本地存储设备703和远程存储设备706(第一本地/远程对)之间的数据连接是一致的,且本地存储设备704和远程存储设备707(第二本地/远程对)之间的数据连接是一致的,如果在第一和第二本地/远程对之间没有同步,则远程存储设备706、707上的数据不必定总是一致的。
对于主机702上同时使用多个本地存储设备703-705的应用程序,可能希望使数据在远程存储设备706-708是一致且可恢复的。这可由主机702控制每一本地存储设备703-705处的周期转换(cycleswitch)实现,从而来自主机702上运行的应用程序的数据在远程存储设备706-708是一致且可恢复的。该功能由在主机702上运行的特别应用程序提供,其将多个本地存储设备703-705转换为多盒模式,如下所详述的。
参考图15,表730具有多个项732-734。每一项732-734对应于存储设备的单一本地/远程对,例如,项732可对应于本地存储设备703和远程存储设备706的对,项733可对应于本地存储设备704和远程存储设备707的对,而项734可对应于本地存储设备705和远程存储设备708的对。项732-734中的每一项具有多个字段,其中第一字段736a-736c代表相应的本地存储设备的序号,第二字段738a-738c代表多盒组(multi-box group)使用的会话数量,第三字段742a-742c代表本地/远程对的相应远程存储设备的序号,第四字段744a-744c代表多盒组的会话数量。连同在多盒模式下工作,表730由主机702构建和保持。此外,表730被传达给本地存储设备和远程存储设备中的每一个,这些设备是多盒组的一部分。表730可用于帮助恢复,如下详述的那样。
不同的本地/远程对可以任何顺序在任何时间单独进入和退出多盒模式。主机702管理本地存储设备/远程存储设备对进入和退出多盒模式。这将在下面详述。
参考图16,流程图750示出了主机702执行的与本地/远程对进入或退出多盒模式有关的步骤。处理开始于第一步骤752,多盒模式操作被临时暂停。在步骤752临时暂停多盒操作可用于促进连同远程/本地对进入或退出多盒模式做出的变化。在步骤752之后是步骤754,象图15的表730的表被修改以添加或删除项,合理地进行。在步骤754之后是步骤756,修改后的表被传送给多盒组的本地存储设备和远程存储设备。在步骤756传送表有利于恢复,如本文别处所详细描述的。
在步骤756之后是步骤758,消息被发送给受影响的本地存储设备以提供该变化。本地存储设备可配置其自身以在或不在多盒模式下运行,如本文别处所详细描述的。如下面详细描述的,处理排序的写的本地存储设备根据其是否作为多盒组的一部分运行而不同地运行。如果本地存储设备正被添加到多盒组,则在步骤758发送的消息向本地存储设备指明其正被添加到多盒组,从而本地存储设备应配置其自身以在多盒模式下运行。或者,如果本地存储设备正被从多盒组中移除,在步骤758发送的消息向本地存储设备指明其正被从多盒组中移除,从而本地存储设备应配置其自身以不在多盒模式下运行。
在步骤758之后是测定步骤762,其确定本地/远程对是否正被添加到多盒组中(与被移除相反)。如果是,则控制从测定步骤762转到步骤764,标签值被发送给正被添加的本地存储设备。标签值被提供给从本地存储设备传输给远程存储设备的数据,其方式类似于给数据提供序号。标签值由主机控制和设定,从而所有本地/远程对在同一周期期间发送具有同一标签值的数据。标签值的使用将在下面详细讨论。在步骤764之后或步骤762之后(如果新的本地/远程对未被添加)是步骤766,重新开始多盒操作。在步骤766之后,处理结束。
参考图17,流程图780示出了所执行的与主机管理多个本地/远程对的周期切换有关的步骤,多个本地/远程对作为多盒模式下的组运行。如本文别处所论述的,多盒模式包括使主机同步一个以上远程/本地对的周期转换以在远程存储设备之间保持数据一致性。周期转换由主机调整而不是由本地存储设备内部产生。这将在下面详述。
流程图780的处理开始于测定步骤782,其确定M秒是否已逝去。正如非多盒操作那样,周期转换每M秒就发生一次,其中M是选择来优化多个性能参数的数字。当M增加时,与转换相关的内务操作量则减少。然而,增加M也使得与故障有关的潜在数据损失也增加。在在此的实施例中,M被选择为30秒,尽管也可使用其它M值。
如果在测定步骤782确定M秒尚未逝去,则控制转回到步骤782以继续等待直到M秒已逝去为止。一旦在测定步骤782确定M秒已逝去,控制从步骤782转到步骤784,主机询问多盒组中的所有本地存储设备以确定是否所有本地/远程对均已准备好转换。准备好转换的本地/远程对将在下文中详述。
在步骤784之后是测定步骤786,其确定是否所有本地/远程对均已准备好转换。如果否,控制转回到步骤784以重新开始询问。在在此的实施例中,只需要询问先前未准备好转换的本地/远程对,因为,一旦本地/远程对准备好转换,该对保持这种状态直到转换发生为止。
一旦在测定步骤786确定多盒组中的所有本地/远程对均准备转换,控制从步骤786转到步骤788,下标变量N被设定为等于1。下标变量N用于重复通过所有本地/远程对(即图15的表730的所有项732-734)。在步骤788之后是测定步骤792,其确定下标变量N是否大于多盒组中的本地/远程对的数量。如果否,则控制从步骤792转到步骤794,对第N对的第N本地存储设备进行开窗口,其通过主机发送指令(如适当的系统指令)给第N本地存储设备进行。在步骤794对第N本地存储设备开窗口将导致第N本地存储设备暂停写,从而由主机进行的、不是在步骤794开窗口之前开始的任何写将不被完成,直到窗口关闭为止(如下述)。未完成写操作将阻止第二依赖的写在完成周期转换之前出现。任何进行中的、在开窗口之前开始的写可在窗口关闭之前完成。
在步骤794之后是步骤796,第N本地存储设备的周期转换被执行。在步骤796执行周期转换包括从主机702发送指令给第N本地存储设备。第N本地存储设备处理来自主机的指令将在下面详细描述。在步骤796执行的处理的一部分可包括使主机向分配给数据的标签提供新值。标签在本文别处详细描述。在另一实施例中,在步骤794、796执行的操作可被执行为单一合成步骤797,其被图示为在步骤794、796周围画的框。
在步骤796之后是步骤798,递增下标变量N。在步骤798之后,控制转回到测定步骤792以确定下标变量N是否大于本地/远程对的数量。
如果在测定步骤792确定下标变量N大于本地/远程对的数量,则控制从测定步骤792转到步骤802,下标变量N被设定为等于1。在步骤802之后是测定步骤804,其确定下标变量N是否大于本地/远程对。如果否,则控制从步骤804转到步骤806,第N本地存储设备的窗口被关闭。在步骤806关闭窗口由主机发送指令给第N本地存储设备以使第N本地存储设备重新开始写操作进行。因而,在执行步骤806之后,任何由在步骤794开窗口暂停的、进行中的写现在可被完成。在步骤806之后,控制转到步骤808,递增下标变量N。在步骤808之后,控制转回到测定步骤804以确定下标变量N是否大于本地/远程对的数量。如果是,则控制从测定步骤804转回到步骤782以开始下一周期转换的处理。
参考图18,流程图830示出了本地存储设备执行的与周期转换有关的步骤。在本地存储设备既支持多盒发生又支持非多盒模式的情况下,图18的流程图830代替图10的流程图350。即,流程图830示出了所执行的与图10的流程图350类似的步骤以支持非多盒模式,此外还包括支持多盒模式的步骤。
处理开始于第一测定步骤832,其确定本地存储设备是否正在多盒模式下工作。应注意,图16的流程图750示出了步骤758,其中主机发送消息给本地存储设备。在步骤758发送的消息向本地存储设备指明本地存储设备是否在多盒模式下工作。在接收主机在步骤758发送的消息的基础上,本地存储设备设置内部变量以指明本地存储设备是否在多盒模式下工作。可在测定步骤832检查该内部变量。
如果在测定步骤832确定本地存储设备不是多盒模式,则控制从测定步骤832转到步骤834以等待M秒进行周期转换。如果本地存储设备不是在多盒模式下工作,则本地存储设备控制其自己的周期转换并因而执行步骤834以在开始下一周期转换之前等待M秒。
在步骤834之后,或在步骤832之后(如果本地存储设备是在多盒模式)是测定步骤836,其确定是否本地存储设备的所有HA均已设置位,其表明HA已完成在前序号的所有I/O。当序号改变时,每一HA注意到该变化并设置位以表明在前序号的所有I/O已被完成。例如,如果序号从N-1改变为N,当HA已完成序号N-1的所有I/O时HA将设置位。注意,在一些情况下,HA的单一I/O可能需要很长时间并可能在序号已改变之后仍然在进行中。还应注意,对于某些系统,不同的机制可用于确定是否所有HA已完成它们的N-1I/O。不同的机制可包括检查设备表。一旦在测定步骤836确定所有HA已设置适当的位,控制从测定步骤836转到步骤888,其确定本地存储设备的非活动态数据块是否为空。一旦在测定步骤888确定非活动态数据块为空,控制从步骤888转到步骤899,暂停将数据从本地存储设备复制到远程存储设备。暂停复制数据直到序号转换结束为止是有用的。
在步骤899之后是测定步骤892,其确定本地存储设备是否在多盒模式。如果在测定步骤892确定本地存储设备在多盒模式,则控制从测定步骤892转到测定步骤894以确定相应的远程存储设备的活动态数据块是否为空。如下面将详细讨论的,一旦远程存储设备已倒空其活动态数据块,其发送消息给本地存储设备。响应于该消息,本地存储设备设置在测定步骤894检查的内部变量。
一旦在测定步骤894确定远程存储设备的活动态数据块为空,控制从测定步骤894转到步骤896,内部变量被设置在本地存储设备上以表明本地存储设备准备转换周期。如结合图17的流程图780所述,主机询问每一本地存储设备以确定每一本地存储设备均已准备转换。响应于由主机提供的询问,本地存储设备检查在步骤896设置的内部变量并将结果返回给主机。
在步骤896之后是测定步骤898,本地存储设备等待以从主机接收执行周期转换的指令。如结合图17的流程图780所述,当本地存储设备在多盒模式下工作时,主机提供指令给本地存储设备以转换周期。因而,本地存储设备在步骤898等待指令,只有在本地存储设备在多盒模式下工作时才能到达该步骤。
一旦本地存储设备已从主机接收到转换指令,控制从步骤898转到步骤902以发送提交信息给远程存储设备。注意,如果在测定步骤892确定本地存储设备不是多盒模式,则步骤902也可从测定步骤892到达。在步骤902,本地存储设备发送提交信息给远程存储设备。响应于接收特定序号的提交信息,远程存储设备将开始恢复对应于该序号的数据,如上所述。
在步骤902之后是步骤906,递增序号并保存标签的新值(来自主机)。序号如上所述。标签是在步骤764和步骤796提供给本地存储设备的标签,如上所述。标签用于帮助数据恢复,如本文别处所述。
在步骤906之后是步骤907,周期转换的完成被从本地存储设备到主机进行确认,其通过从本地存储设备发送消息给主机进行。在一些实施例中,执行步骤907的条件在于本地存储设备是否在多盒模式,因为,如果本地存储设备不在多盒模式,则主机不必关注周期转换在何时出现。
在步骤907之后是步骤908,使用在测定步骤836中的HA的位均被清零,从而这些位可连同递增序号而被再次设置。在步骤908之后是测定步骤912,其确定远程存储设备是否已确认提交信息。注意,如果本地/远程对在多盒模式下工作且在步骤894已确定远程存储设备活动态数据块为空,则远程存储设备应几乎立即确认提交信息,因为远程存储设备将立即准备用于周期转换,既然其活动态数据块已经为空。
一旦在测定步骤912确定提交信息已被远程存储设备确认,控制从步骤912转到步骤914,已在步骤899提供的暂停复制的设定被清除,从而,从本地存储设备到远程存储设备的复制可重新开始。在步骤914之后,处理结束。
参考图19,流程图940示出了所执行的与RA扫描非活动态缓冲器以将RDF数据从本地存储设备传输到远程存储设备有关的步骤。图19的流程图940类似于图6的流程图200,且类似的步骤被给予了相同的附图标记。然而,流程图940包括两个另外的步骤942、944,其未在图6的流程图200中发现。另外的步骤942、944用于帮助多盒处理。在数据已在步骤212发送之后,控制从步骤212转到测定步骤942,其确定发送的数据是否是本地存储设备的非活动态数据块中的最后数据。如果否,则控制从步骤942转到步骤214,且处理继续,如结合图6的流程图200所述的那样。否则,如果在测定步骤942确定发送的数据是数据块的最后数据,则控制从步骤942转到步骤944以从本地存储设备发送特殊的消息给远程存储设备,其指明最后的数据已被发送。在步骤944之后,控制转到步骤214,且处理继续,如结合图6的流程图200所述的那样。在一些实施例中,步骤942、944可由不同于传输数据的过程(和/或硬件设备)的单独的过程(和/或单独的硬件设备)执行。
参考图20,流程图950示出了所执行的与RA扫描非活动态缓冲器以将RDF数据从本地存储设备传输到远程存储设备有关的步骤。图20的流程图950类似于图13的流程图500,且类似的步骤被给予了相同的附图标记。然而,流程图950包括两个另外的步骤952,其未在图13的流程图500中发现。另外的步骤952用于帮助多盒处理且类似于图19的流程图940的附加步骤944。在测定步骤524确定没有剩下更多的槽将从本地存储设备发送到远程存储设备之后,控制从步骤524转到步骤952以从本地存储设备发送特殊的消息给远程存储设备,其表明数据块的最后数据已被发送。在步骤952之后,处理结束。
参考图21,流程图960示出了在远程存储设备执行的、与提供指示有关的步骤,所述指示是远程存储设备的活动态数据块为空。流程图960类似于图9的流程图300,除了流程图960示出了新步骤962之外,新步骤962是在远程存储设备的活动态数据块已被恢复之后执行。在步骤962,远程存储设备发送消息给本地存储设备,其指明远程存储设备的活动态数据块为空。在接收在步骤962发送的消息的基础上,本地存储设备设置内部变量以表明远程存储设备的非活动态缓冲器为空。本地变量在图18的流程图830的测定步骤894进行检查,如上所述。
参考图22,图表980示出了主机702、本地存储设备703-705和远程存储设备706-708,其如图14的图表700所示。图表980还包括第一备选主机982,其连接到主机702和本地存储设备703-705。图表980还包括第二备选主机984,其连接到远程存储设备706-708。备选主机982、984可用于数据恢复,如下面将详述的那样。
当在远程站点的数据恢复必要时,假如本地存储设备703-705和远程存储设备706-708之间的链路仍然工作的话,恢复可由主机702或由主机982执行。如果链路不工作,则数据恢复可由连接到远程存储设备706-708的第二备选主机984执行。第二备选主机984可被提供在与一个或多个远程存储设备706-708一样的位置。或者,第二备选主机984可远离所有远程存储设备706-708。通过系统传送的表730连同数据恢复被访问以确定多盒组的成员。
参考图23,流程图1000示出了每一远程存储设备706-708执行的与数据恢复操作有关的步骤。流程图1000的步骤可由每一远程存储设备706-708在接收信号或消息的基础上执行,所述信号或消息指明数据恢复是必要的。在一些实施例中,对于远程存储设备,其可自动感知数据恢复是否是必要的,其使用传统的规则如自最后的写之后的时间长度进行。
处理开始于第一步骤1002,远程存储设备以本文别处描述的方式完成活动态数据块的恢复。在步骤1002之后是测定步骤1004,其确定远程存储设备的非活动态数据块是否完整(即所有数据已被写到那里)。应注意,远程存储设备可使用本地存储设备在步骤944、952发送的消息确定非活动态数据块是否完整,如上所述。即,如果本地存储设备已在步骤944或步骤952发送消息,则远程存储设备可使用该消息的接收来确认非活动态数据块是完整的。
如果在测定步骤1004确定远程存储设备的非活动态数据块不完整,则控制从测定步骤1004转到步骤1006,非活动态数据块的数据被放弃。没有数据恢复会使用不完整的非活动态数据块来进行,因为其中的数据可能与相应的活动态数据块不一致。因此,数据恢复使用活动态数据块进行,在某些情况下,也使用完整的非活动态数据块进行。在步骤1006之后,处理结束。
如果在测定步骤1004确定非活动态数据块是完整的,则控制从步骤1004转到步骤1008,远程存储设备等待主机的干涉。如果是非活动态数据块,主机702、982、984之一需要检查多盒组中的所有远程存储设备的状态以确定怎样执行恢复。这将在下面详细讨论。
在步骤1008之后是测定步骤1012,其确定主机是否已提供指令给所有存储设备以放弃非活动态数据块。如果是,则控制从步骤1012转到步骤1006以放弃非活动态数据块。在步骤1006之后,处理结束。
如果在测定步骤1002确定主机已提供指令以恢复完整的非活动态数据块,则控制从步骤1012转到步骤1014,非活动态数据块被恢复到远程存储设备。将非活动态数据块恢复在远程存储设备中包括使非活动态数据块变为活动态数据块并继而将活动态数据块写到本文别处描述的磁盘中。在步骤1014之后,处理结束。
参考图24,流程图1030示出了所执行的与主机702、982、984之一确定是放弃还是恢复每一远程存储设备的每一非活动态数据块有关的步骤。执行恢复的主机702、982、984之一与远程存储设备706-708通信以向其提供指令并从其接收信息,其通过使用由主机分配的标签进行,如本文别处所述。
处理开始于第一步骤1032,其确定远程存储设备中的任意一个是否具有完整的非活动态数据块。如果否,则没有进一步的处理要被执行。如上所述,远程存储设备将自己放弃不完整的数据块,而无需主机干涉。否则,控制从测定步骤1032转到测定步骤1034,主机确定是否所有远程存储设备均具有完整的非活动态数据块。如果是,则控制从测定步骤1034转到测定步骤1036,其确定是否所有远程存储设备的所有完整的非活动态数据块均具有相同的标签号。如本文别处所述,标签由主机分配并由系统使用以以类似于序号的方式识别数据,除了标签由主机控制以对同一周期具有相同值以外。
如果在测定步骤1036确定所有远程存储设备对非活动态数据块均具有相同的标签,则控制从步骤1036转到步骤1038,所有非活动态数据块均被恢复。执行步骤1038确保所有远程存储设备具有来自同一周期的数据。在步骤1038之后,处理结束。
如果在测定步骤1034确定所有非活动态数据块不是完整的,或如果在步骤1036确定所有完整的非活动态数据块不具有相同的标签,则控制转到步骤1042,主机提供指令给远程存储设备以恢复具有较低标签号的完整非活动态数据块。用于解释的目的,假定标签号被递增,从而较低的标签号代表较旧的数据。作为例子,如果第一远程存储设备具有标签值为3的完整非活动态数据块,而第二远程存储设备具有标签值为4的完整非活动态数据块,则步骤1042使第一远程存储设备(而不是第二)恢复其非活动态数据块。在步骤1042之后是步骤1044,主机提供指令给远程存储设备以放弃具有较高标签号的完整非活动态缓冲器(如在前例子中的第二远程存储设备)。在步骤1044之后,处理结束。
在执行步骤1044之后,每一远程存储设备包含与同一标签值相关联的数据,该标签值与其它远程存储设备的数据的标签值一样。因此,恢复在远程存储设备706-708上面的数据应该是一致的。
参考图25,图表1120示出了一实施例,其中存储设备1124与存储设备24和/或存储设备26类似,包括多个连接到存储器1126的导向器1152a-1152c,存储器1126与存储设备24、26的存储器37和/或存储器38类似。每一导向器1152a-1152c代表HA、DA和/或RA,其类似于存储设备的HA28、DA35a-35c、36a-36c和/或RA30a-30c、32a-32c。在在此公开的实施例中,有高达16个导向器连接到存储器1126。当然,对于其它实施例,可以使用更高或更低最大数量的导向器。
图表1120还示出了可选的通信模块(CM)1154,其在导向器1152a-1152c之间提供另一通信通路。每一导向器1152a-1152c可连接到CM1154,从而导向器1152a-1152c中的任一导向器均可发送消息和/或数据给导向器1152a-1152c中的任何其它导向器,而不需要通过存储器1126。CM1154可使用传统的MUX/路由器技术实施,其中导向器1152a-1152c中的发送导向器提供适当的地址以使消息和/或数据可由导向器1152a-1152c中的预定接收导向器接收。此外,导向器1152a-1152c中的发送导向器能够同时传播消息给所有其它导向器1152a-1152c。
参考图26,图表1200示出了一系统,其包括源组1202、本地目的地1204和远程目的地1206。源组1202与本地目的地1204和远程目的地1206通信。源组1202代表单个存储设备、多个存储设备、具有单个主机的单个或多个存储设备、具有多个主机的单个或多个存储设备。数据在源组1202产生并保存在源组1202中,且传输给本地目的地1204和远程目的地1206。在一些实施例中,本地组可以上面结合图14描述的实施例的方式进行工作。
在在此的实施例中,本地目的地代表相当接近源组1202的单个或多个存储设备以允许从源组1202到本地目的地1204的同步数据镜像。在在此的实施例中,本地目的地1204与源组1202位于同一建筑物、同一设施和/或同一公司位置。因而,例如,本地目的地1204可代表由与管理源组1202的个人同一组的人管理的备份存储设备(或多个存储设备)。
远程目的地1206代表在地理上远离源组1202的位置的存储设备和/或多个存储设备。例如,远程目的地1206可代表在美国西海岸的存储设备或存储设备组,而源组1202位于美国的东海岸。由于源组1202和远程目的地1206之间的相当大的地理距离,使用同步或半同步数据传输模式来从源组1202镜像远程目的地1206上的数据是不切实际的。即,由于从源组1202到远程目的地1206并再回到源组1202需要较长的往返在途时间,使用同步或半同步数据镜像是不可行的,该种镜像在确认写到本地组1202的主机之前要确认远程目的地1206处的数据。在这种情况下,则可能在源组1202和远程目的地1206之间使用排序的写,从而远程目的地1206是源组1202的一致镜像,尽管有一些时间延迟。
通信通路1208还可存在于本地目的地1204和远程目的地1206之间。只要源组1202在运行,则通信通路1208可不被使用。然而,在源组1202没有运行的情况和/或源组1202和本地目的地1204及远程目的地1206之一或二者之间的通信链路不能运行,则通信通路1208可用于在本地目的地1204和远程目的地1206之间同步数据,如本文别处所详细描述的。此外,主机可被提供给本地目的地1204和远程目的地1206之一以在同步之后重新开始系统的运转,如本文别处所详述的。注意,如果用连接到本地目的地1204的主机重新开始运转,则通信链路1208可被使用,从而远程目的地1206是本地目的地1204的镜像。相反,如果通过提供主机给远程目的地1206而重新开始运转,则通信链路1208可被使用,从而本地目的地1204是远程目的地1206的镜像。
参考图27,流程图1230示出了所执行的与在本地目的地1204初始化参数以提供在此讨论的恢复机制有关的步骤。在此描述的恢复机制使用Symmetrix Differential Data Facility(SDDF),其允许多个会话,每一会话具有随其与位相关联的位图,所述位在特定时间段期间无论何时有对相应数据位置的写其均被设定为1。如果没有对特定位置的写,相应的位保持被清零的状态(即保持为0)。在在此的实施例中,每一位可对应于数据磁轨。然而,对于其它实施例,可能使每一位对应于较大或较小的数据增量,也不能不同的位和/或不同的位设置对应于不同的数据量。
与SDDF会话相关联的操作包括创建SDDF会话、激活SDDF会话、清零SDDF会话的位图的位,禁止SDDF会话、及终止SDDF会话。创建SDDF会话、清零其位、及终止SDDF会话均不需解释。激活SDDF会话使得SDDF会话位图的位将被设置,无论相应的磁轨(或其它适当的数据增量)在何时被写。禁止SDDF会话则暂停位的设置。在此讨论的SDDF机制可使用美国专利6,366,986中提供的描述进行实施,其通过引用组合于此。
流程图1230的处理开始于第一步骤1232,其中第一SDDF会话SDDF_1被创建。在在此描述的实施例中,SDDF会话的创建不会导致会话的自动激活。在步骤1232之后是步骤1234,在步骤1232创建的SDDF会话的位图的位被清零。在步骤1234之后是步骤1236,创建第二SDDF会话SDDF_2。在步骤1236之后是步骤1238,在步骤1236创建的SDDF会话的位图的位被清零。
在步骤1238之后是步骤1242,状态被初始化。在步骤1242初始化的状态可用于确定SDDF会话SDDF_1、SDDF_2中哪一个将被激活。如本文别处所详述的,有两种可能的状态,且在步骤1242的状态可被转换以使得SDDF_1会话和SDDF_2会话将被二选一地激活。在其它实施例中,标记或一些其它类型的变量可用于指示或SDDF_1或SDDF_2的选择。在步骤1242之后是步骤1244,SDDF_1被激活。在步骤1244激活SDDF_1使得SDDF_1会话的位图的位将被设置,无论本地目的地1204的磁轨(或其它数据增量)在何时被修改。
SDDF_1和SDDF_2会话由本地目的地1204使用来跟踪源组1202连同源组1202到远程目的地1206的排序的写使用的活动态和非活动态缓冲器。如本文别处所详述的,每次源组1202进行与从源组1202到远程目的地1206的排序的写有关的周期转换,源组1202发送消息给本地目的地1204,其表明周期转换已被执行,从而本地目的地1204可转换状态(在步骤1242中初始化的状态,如上所述)。本地目的地1204使用周期转换信息在本文别处详细描述。
参考图28A,流程图1250示出了由本地目的地1204执行的与在正常运行(非故障)期间从源组1202接收I/O有关的步骤。处理开始于第一步骤1252,I/O被本地目的地1204接收。在步骤1252之后是测定步骤1254,其确定从源组1202接收的I/O是否表明本地组1202已准备好与本地组1202和远程目的地1206之间的排序的写有关的转换。准备好转换的本地组1202在本文别处详述描述。
如果所接收的数据表明本地组1202准备转换,则控制从步骤1254转到步骤1256,其确定SDDF会话(SDDF_1或SDDF_2)中的非活动态会话是否清除。在一些实施例中,SDDF会话可在步骤1256被清除。在其它情况中,在步骤1256清除SDDF会话所需要的时间量将会是不可接受的,在这种情况下,两个以上的SDDF会话可被使用并可被轮流,从而将被激活的SDDF会话总是被异步清除。在任何情况下,在步骤1256执行的处理涉及清除SDDF_1和SDDF_2中的非活动态会话,从而在执行步骤1256之后,非活动态会话清除。
在步骤1256之后是步骤1258,SDDF会话中的非活动态会话被激活,从而在执行步骤1258的处理之后SDDF_1和SDDF_2均被激活。因而,随后的写被反映在SDDF_1和SDDF_2的位图中。在步骤1258之后,处理结束。
如果在步骤1254确定所接收的数据不对应于准备转换的信号,则控制从步骤1254转到测定步骤1262,其确定所接收的数据是否对应于正被执行的周期转换。如果是,则控制从步骤1262转到步骤1264,在图27的流程图1230的步骤1242初始化的状态被转换。如本文别处所述,状态被用于确定SDDF_1和SDDF_2中的哪一个将被激活和禁止。在步骤1264之后是步骤1266,根据在步骤1264设定的状态的特定值,SDDF会话SDDF_1或SDDF_2之一被禁止。注意,即使SDDF会话在步骤1266被禁止,SDDF会话也不被清除直到接收到下一准备转换信号为止。当然,如果两个以上的SDDF会话用于SDDF_1和SDDF_2,如上所述,则在步骤1266禁止的SDDF会话可被保持,同时另一SDDF会话被清除以准备用于在步骤1258进行激活,如上述。
如果在步骤1262确定所接收的数据不对应于周期转换,则控制从测定步骤1262转到步骤1268,其中I/O被执行。例如,如果I/O是写操作,则在步骤1268,数据被写到本地目的地1204的存储区。在步骤1268之后是步骤1272,其确定I/O操作是否是写操作。如果否(例如I/O操作是读操作),则处理结束。否则,控制从步骤1272转到步骤1274,在SDDF会话SDDF_1、SDDF_2的适当会话中的位被设置,或二者的位均被设置,取决于哪一SDDF会话被激活。在步骤1274之后,处理结束。
在某些情况中,可能希望等待以刚好在指向同一SDDF位图之前清除该SDDF位图。在这样的情况下,具有两个以上的SDDF位图是有用的,其中每次两个被使用如SDDF_1和SDDF_2,同时其余SDDF位图已经清除并等待被使用或正使用后台过程进行清除。例如,使用三个位图SDDF_A、SDDF_和SDDF_C,SDDF_1可对应于SDDF_A,SDDF_2可对应于SDDF_C。在这种情况下,SDDF_B可被清除,同时处理在SDDF_A和SDDF_C上执行。当周期转换时,SDDF_B(其已经清零)可被使用,同时SDDF_C被使用后台过程进行清零,其即使在周期转换结束之后及新数据正被记入SDDF_B时也可运行。
参考图28B,流程图1280示出了使用多个SDDF位图SDDF[0]、SDDF[1]、…SDDF[NMAPS-1]的另一实施例,其中NMAPS是SDDF位图的数量。在在此的实施例中,NMAPS大于2(如3)。流程图1280的许多步骤均与图28A的流程图1250的步骤相似。
处理开始于第一步骤1282,I/O被本地目的地1204接收。在步骤1282之后是测定步骤1283,其确定从源组1202接收的I/O是否表明本地组1202已准备好与本地组1202和远程目的地1206之间的排序的写有关的转换。准备好转换的本地组1202在本文别处详述描述。
如果所接收的数据表明本地组1202准备转换,则控制从步骤1283转到步骤1284,其中下标K被增加且其结果被设定为以NMAPS为模。在步骤1284之后是步骤1285,其确认SDDF[K]清零。在步骤1285之后是步骤1286,SDDF[K]被激活,从而在执行步骤1286的处理之后SDDF[K]和SDDF[K-1]均被激活。因而,随后的写被反映在SDDF[K]和SDDF[K-1]的位图中。注意,如果K为0,则SDDF[K-1]实际上指SDDF[NMAPS-1]。
如果在步骤1283确定所接收的数据不对应于准备转换的信号,则控制从测定步骤1283转到测定步骤1287,其确定所接收的数据是否对应于周期转换。如果在步骤1287确定所接收的数据对应于周期转换(见上面结合图28A的流程图1250所述),则控制从步骤1287转到步骤1288,状态(上述)被转换。在步骤1288之后是步骤1289,变量J被设定为等于(K-2)模NMAPS。因为K是用于跟踪最近激活的SDDF位图的下标变量,在步骤1289设置J使得J指向第三最近激活的SDDF位图。在步骤1289之后是步骤1292,启动过程以清零SDDF[J]位图。如本文别处所述,为了完成周期转换并开始积聚新数据,在步骤1292开始的过程不是必须被完成。
在步骤1292之后是步骤1294,变量J被设定为等于(K-1)模NMAPS。因为K是用于跟踪最近激活的SDDF位图的下标变量,在步骤1294设置J使得J指向第二最近激活的SDDF位图。在步骤1294之后是步骤1296,SDDF[J]被禁止。然而,即使SDDF[J]在步骤1296被禁止,数据仍被保留用于恢复目的,直到下一周期转换为止。在步骤1296之后,处理结束。
参考图28C,流程图1300示出了涉及本地目的地1204在正常运行(非故障)期间从源组1202接收I/O的处理的另一实施例。处理开始于第一步骤1302,I/O被本地目的地1204接收。在步骤1302之后是测定步骤1304,其确定所接收的数据是否对应于准备执行的周期转换。如果是,则控制从步骤1304转到测定步骤1306,其确定自上次转换状态之后是否已出现两次或两次以上周期转换。如果否,则处理结束。否则,控制从步骤1306转到步骤1307,其确定当前非活动态SDDF会话SDDF_X是否清零。如果是,则控制从步骤1307转到步骤1308,在图27的流程图1230的步骤1242初始化的状态被转换。如本文别处所述,状态用于确定SDDF_1和SDDF_2中哪一个将被激活和禁止。
在步骤1308之后是步骤1309,SDDF会话SDDF_1或SDDF_2之一按状态的指示被激活。在步骤1309之后是步骤1312,另一SDDF会话被禁止。在步骤1312之后,处理结束。
如果在测定步骤1307确定SDDF_X未被清除,则控制从步骤1307转到步骤1313,其确定清除SDDF_X是否已经开始(即在先前的迭代中)。如果是,则处理结束。否则,控制从步骤1313转到步骤1314,开始清除SDDF_X的过程。在步骤1314之后,处理结束。
如果在步骤1304确定所接收的数据不对应于周期转换,则控制从测定步骤1304转到步骤1316,其中I/O被执行。例如,如果I/O是写操作,则在步骤1316数据被写到本地目的地1204的存储区。在步骤1316之后是步骤1317,其确定I/O操作是否是写操作。如果否(如I/O操作是读操作),则处理结束。否则,控制从步骤1317转到步骤1318,根据SDDF会话中哪一个被激活,SDDF会话SDDF_1或SDDF_2(SDDF_X或SDDF_Y)的适当会话中的位被设置。在步骤1318之后,处理结束。
参考图29,流程图1320示出了所执行的与在远程目的地1206收集恢复数据有关的步骤。不像本地目的地1204,其总是在稳态运行期间收集恢复数据,远程目的地1206不可能收集恢复数据,除非及直到其接收到信号要那样做为止。在在此的实施例中,源组1202可提供这样的信号给远程目的地1206,例如,当源组1202检测到源组1202和本地目的地1204之间的链路没有工作时和/或当源组1202检测到本地目的地1204没有适当地接收或处理数据时。在其它实施例或其它情形中,远程目的地1206可从不同于源组1202的位置或单元接收适当的信号。
处理开始于第一步骤1322,创建第三会话SDDF_3。在步骤1322之后是步骤1324,在步骤1322创建的SDDF会话的位图被清除。在步骤1324之后是步骤1326,标记值(在本文别处详述)被设定为0。在步骤1326之后,处理结束。
参考图30,流程图1330示出了由远程目的地1206执行的与恢复数据的收集有关的步骤。处理开始于第一步骤1331,远程目的地1206等待来自源组1202或来自其它源的故障消息。一旦接收到故障消息,控制从步骤1331转到步骤1332,SDDF_3会话被激活以开始收集关于远程目的地1206的磁轨(或其它适当的数据增量)的数据,所述远程目的地已被执行写。注意,然而,SDDF_3反映已被提交的写(即在当前周期正被接收之后的写)。
在步骤1332之后是步骤1333,标记值(下述)被初始化为0。在步骤1333之后是步骤1334,远程目的地1206从源组1202接收I/O。注意,在步骤1334接收的I/O可代表排序的写数据,其为本地组1202在非故障模式下发送给远程目的地1206的数据。
在步骤1334之后是测定步骤1336,其确定在步骤1334从源组1202接收的I/O是否指明由源组1202进行的周期转换。如果否(即数据是将被写到远程目的地1206的常规排序的写数据或其它类型的数据),则控制从测定步骤1336转回到步骤1334以接收下一I/O。
如果在测定步骤1336确定来自源组1202的数据指明一周期转换,则控制从测定步骤1336转到步骤1338以递增标记,其跟踪自开始恢复数据的收集以来周期转换的次数。在步骤1338之后是步骤1342,SDDF_3的位图被设置以反映已提交的周期的已被写的数据。注意,在步骤1342的处理可连同激活的SDDF会话的运行而自动执行,在这种情况下,则可不必使步骤1342作为图30所示的恢复过程的一部分。
注意,已提交的周期是在周期转换之前用于收集数据的周期。在步骤1342之后是测定步骤1344,其确定处理是否结束(即错误恢复数据的收集是否结束)。如果错误情形已被矫正,例如如果本地目的地1204和远程目的地1206正在被同步(下述),则处理可结束。如果在步骤1344确定处理没有结束,则控制从测定步骤1344转回到步骤1334以接收另一I/O。否则,控制从步骤1344转回到步骤1331以等待新的故障消息。注意,在某些实施例中,在步骤1344结束的处理还可使某些恢复参数被重置,如下面所详述的。
参考图31,流程图1360示出了所执行的与同步本地目的地1204和远程目的地1206有关的步骤。如上所述,本地目的地1204和远程目的地1206可通过使用通信链路1208在其之间传输数据而同步。在同步之后,系统可在本地目的地1204或在远程目的地1206重新启动,而使用另一个作为镜像。
与同步有关,决定本地目的地1204和远程目的地1206中哪一个具有最新数据是有用的,从而数据可从远程目的地1206和本地目的地1204中具有最新数据的那一目的地传输给另一目的地。
流程图1360的处理开始于第一步骤1362,在源组1202和本地目的地1204之间的链路被撤消,及源组1202和远程目的地1206之间的链路被撤消。在步骤1362撤消链路帮助确保同步过程将不被破坏。在步骤1362之后是步骤1364,当恢复信息正被收集时产生的SDDF映射被保持。在步骤1364之后是步骤1366,由于类似于在步骤1362撤消链路的原因,在源组1202和本地目的地1204之间的排序的写被终止。
在步骤1366之后是测定步骤1368,其确定标记值(上述)是否大于预定的值N。注意,标记值指明自在远程目的地1206开始收集错误恢复数据以来已出现的周期转换次数。如果在源组1202和本地目的地1204之间的链路不再工作且远程目的地1206已开始恢复数据的收集,则远程目的地1206可包含较本地目的地1204更新的数据。这可通过查询标记的值进行确定,所述标记值指明自远程目的地1206接收信号以开始收集恢复数据以来已出现的周期转换次数。因此,如果在测定步骤1368确定标记大于某一预先确定的值N(如2),则控制从测定步骤1368转到步骤1371,所有SDDF会话(SDDF_1、SDDF_2和SDDF_3)的位图均被OR(使用“或”)以确定远程目的地1206的磁轨(或其它数据量)及本地目的地1204的磁轨,这些磁轨对应于在源组故障之前在源组1202和远程目的地1206之间发送或传输的活动态及非活动态缓冲器的数据,及对应于可能在不同本地目的地1204上的可能数据。
在步骤1371之后是步骤1372,远程目的地1206从对应于位图的设定位的磁轨发送数据,其是OR SDDF_1、SDDF_2和SDDF_3的三个位图的结果。来自这些磁轨的数据可被复制到本地目的地1204,从而远程目的地1206和本地目的地1204可被同步。在步骤1372之后,处理结束。在在此的实施例中,N可被设定为不小于2。同样,应注意,在完成在步骤1376或步骤1372开始的复制之前,以连接到本地目的地1204或远程目的地1206中的适当目的地的主机重新开始操作是可能的。
如果在测定步骤1368确定标记不具有大于N的值(如标记为0),则控制从测定步骤1368转到步骤1374,所有会话(SDDF_1、SDDF_2、及SDDF_3(如果存在))的位图被OR(使用“或”)以确定本地目的地1204的磁轨(或其它数据量),其对应于在源组1202故障之前在源组1202和远程目的地1206之间发送或传输的活动态和费活动态缓冲器的数据。在步骤1374之后是步骤1376,对应于位图的OR的数据从本地目的地1204经通信链路1208发送到远程目的地1206。一旦数据从本地目的地1204发送到远程目的地1206,则本地目的地1204和远程目的地1206将被同步。在步骤1376之后,处理结束。
步骤1372、1374、1376可使用任何数量的适当技术完成。例如,后台复制可被启动以使用由OR SDDF会话的位图的结果指示的位复制数据。在在此的实施例中,步骤1372、1374、1376可使用RDF执行,其中R1/R2被首先建立,其使用在美国专利申请09/997,810中公开的动态RDF机制进行,该专利申请通过引用组合于此。在其之后,位图可用于修改本地目的地1204和远程目的地1206之一或二者中的设备表映射,以使RDF机制执行后台复制。
参考图32,流程图1380示出了所执行的与图31的流程图1360的终止排序的写步骤1366有关的详细步骤。注意,当源组1202使用单个存储设备时,图32的处理示出clean up。在源组1202包括一个以上存储设备的情况下,则图23所示的处理可被代替使用。
处理开始于第一测定步骤1382,其确定远程目的地1206从源组1202接收的所有排序的写数据是否已被完全处理(由远程目的地保存)。即,在测定步骤1382,其确定在远程目的地1206是否有任何数据对应于排序的写周期,所述周期尚未被保存在远程目的地1206的磁盘空间上或至少在高速缓存器中并被标记为写到磁盘空间。如果在测定步骤1382确定所有排序的写数据已在远程目的地被处理,则处理结束。
如果在测定步骤1382确定来自源组1202的部分排序的写数据尚未被处理,则控制从测定步骤1382转到测定步骤1384,其确定在远程目的地1206的已接收、但未处理的排序的写数据是否对应于完成的排序的写周期。注意,当源组1202发送对应于特定周期的数据给远程目的地1206时,在远程目的地1206的周期不是完成的,除非并直到提交信息从源组1202发送给远程目的地1206为止。如果在测定步骤1384确定未处理的数据对应于完成的排序的写周期,则控制从测定步骤1384转到步骤1385,该周期的数据被保存,其通过将数据保存到远程目的地1206的磁盘和/或使数据在远程存储设备1206的高速缓存器中以用于写到其磁盘上。在步骤1385之后,处理结束。
如果在测定步骤1384确定来自源组1202的未处理的排序的写数据不对应于完成的周期,则控制从测定步骤1384转到步骤1386,在远程目的地1206的设备表上的无效位被设置。在步骤1386的无效位设定表明远程目的地1206的磁轨(或某些其它数据增量)包含无效数据并因而需要从另一设备复制以导致更新。在这种情况下,其它设备可以是本地目的地1204,取决于本地目的地1204和远程目的地1206中哪一个包含最新信息。在远程目的地1206的设备表中被设定无效的特定磁轨(或其它数据单元)对应于由从源组1202接收的未处理排序的写数据所指明的磁轨。在步骤1386之后是步骤1387,未完成的周期的未处理的排序的写数据被放弃。在步骤1387之后,处理结束。
参考图33,流程图1390示出了所执行的与步骤1376或步骤1372有关的详细步骤,其中在步骤1376,数据从本地目的地1204复制到远程目的地1206,在步骤1372,数据从远程目的地1206复制到本地目的地1204。处理开始于第一步骤1392,SDDF_1、SDDF_2和SDDF_3的OR(来自步骤1374)用于设置设备表,无论本地目的地1204和远程目的地1206中哪一个将是恢复之后的R1设备。如果数据是从R1设备复制到R2设备,则对应于远程磁轨的设备表位置在步骤1392被设置。否则,如果数据是从R2设备复制到R1设备,则对应于本地磁轨的设备表位置在步骤1392被设置。在许多情况下,对应于在步骤1392的表的修改的磁轨将是一样的或是来自步骤1386的表的修改的超集,如上所述。
在步骤1392之后是步骤1396,开始后台复制过程。在步骤1396开始后台复制过程使数据在后台过程中复制。在步骤1396之后,处理结束。
参考图34,流程图1450示出了一旦在源组1202、本地目的地1204和远程目的地1206之间的正常运行被恢复,重新初始化恢复参数所执行的步骤。处理开始于第一步骤1452,两个SDDF会话SDDF_1和SDDF_2均被禁止。在步骤1452之后是步骤1454,SDDF_1被清除。在步骤1454之后是步骤1456,SDDF_2被清除。在步骤1456之后是步骤1458,指向SDDF会话之一的指针被使得指向SDDF_1。在步骤1458之后是步骤1462,SDDF_1被激活。在步骤1462之后,处理结束。
参考图35,流程图1470示出了与重置远程目的地1206使用的恢复参数有关的步骤。处理开始于第一步骤1472,SDDF_3被禁止。在步骤1472之后是步骤1474,SDDF_3被清除。在步骤1474之后是步骤1476,远程目的地1206使用的标记被清零(设定为0)。在步骤1476之后,处理结束。注意,在一些实施例中,在步骤1472或在步骤1472之后终止SDDF_3也是可能的,从而SDDF_3可在图29的流程图1320的步骤1322重新创建,如上所述。
参考图36,图表示出了源组1202的可能结构。在图36中,源组1202包括连接到单一本地存储设备1504的主机1502。本地存储设备1202被连接到本地目的地1204和远程目的地1206。在图36所示的结构中,所有在此描述的处理均由本地存储设备1504执行,或者,部分处理可由主机1502执行。
参考图37,图表示出了源组1202的另一结构,主机1512连接到多个本地存储设备1514-1516。每一本地存储设备1514-1516均被连接到本地目的地1204和远程目的地1206。在图37的结构中,主机1512可处理在此描述的部分处理,例如,与排序的写有关的所有本地存储设备1514-1516的周期转换。
在一些情况下,如果在源组1202和本地目的地1204之间有数据传输困难,则可能希望阻止周期转换。当然,在本地目的地1204完全失效或源组1202和本地目的地1204之间的链路完全失效的情况下,系统可能完全停止工作且恢复将按如上所述进行。然而,在其它情形中,可能是断续的故障(如源组1202和本地目的地1204之间的链路短暂连接失败),则可能希望仅仅不在源组1202上进行与源组1202和远程目的地1206之间的通信有关的周期转换,除非并直到相应的数据被首次成功地从源组1202传输到本地目的地1204为止。这将在下面描述。
参考图38,流程图200’示出了图6的流程图200的修改部分,其示出了所执行的与从列表72、74(图3中所示)的非活动态列表传输数据给另一存储设备有关的步骤。流程图200’示出了步骤204和步骤212,这两个步骤也在流程图200中并在上面结合阐述图6的文本进行了描述。然而,如下面详细提出的,流程图200’包含另外的新步骤,这些步骤没有提供在图6的流程图200中。
在步骤204之后是测定步骤1602,其确定正被传输给另一存储设备的数据是否是特殊数据。如流程图200’所使用的,在步骤1602的特殊数据指从源组1202传输到本地目的地1204和远程目的地1206的数据。在在此的实施例中,特殊数据可通过使用内建机制以确定数据是否被排队以传输给本地目的地1204和远程目的地1206而进行识别。当然,其它识别和测试特殊数据的机制也可使用。
如果在测定步骤1602确定数据不是特殊数据,则控制从步骤1602转到步骤212以结合按图6的流程图200所述发送数据。在步骤212之后,处理按图6的流程图200中所示继续并在本文别处描述。如果在测定步骤1602确定正被发送的数据是特殊数据(正从源组1202传输给本地目的地1204和远程目的地1206),则控制从测定步骤1602转到测定步骤1604,其确定正被检查的特定传输是从源组1202到远程目的地1206的特殊数据的传输。如本文别处所述,可能希望避免从源组1202发送数据给远程目的地1206,除非并直到数据已首先从源组1202成功地发送到本地目的地1204为止。因而,在步骤1604的测试确定正被检查的特殊数据传输是否是从源组1202到远程目的地1206的传输。如果否,则控制从测定步骤1604转到步骤212以继续处理,如本文别处所述。否则,如果在测定步骤1604确定被检查的数据对应于从源组1202到远程目的地1206的传输,则控制从测定步骤1604转到测定步骤1606,其确定相应的从源组1202到本地目的地1204的数据传输是否在先前已成功完成。即,对于给定的槽或正被传输给远程目的地1206和本地目的地1204的数据的部分,在步骤1606的测试确定从源组1202到本地目的地1204的传输是否已被成功执行。如果否,控制从测定步骤1606转到步骤1607,执行错误处理/测试。
在某些情况下,不能从源组1202传输数据给本地目的地1204将使得系统在远程目的地1206开始积聚数据,例如,通过使故障消息被发送给远程目的地(见图30的流程图1330及相应的描述)及通过退出图38的流程图200’所示的处理,从而不管数据是否曾经成功地从源组1202发送给本地目的地1204,数据被从源组1202发送给远程目的地1206。其它处理可出现,如,对于未从源组1202传输给本地目的地1204的数据,设置设备表中的无效位。注意,如果源组1202和本地目的地1204之间的连接被重新建立,则可能同步远程目的地1206继而重新开始如在此所述的稳态操作(例如,200’的流程图的步骤)。
确定是否执行上述错误处理的规则可根据本领域一般技术人员可认识的功能因素的数量进行设置。在在此的实施例中,规则可根据源组1202和本地目的地1204之间的链路发生故障和/或本地目的地1204发生故障的可能性进行设置。例如,如果一定时间量已逝去而没有数据被成功地从源组1202传输到本地目的地1204,则在步骤1607的错误处理可确定故障已出现。如果在步骤1607的错误处理确定故障尚未出现(继而处理应继续),则控制从步骤1607转到测定步骤1608,其确定是否有更多的非活动态数据将从源组1202发送给远程目的地1206。如果是,则控制从测定步骤1608转到步骤1612,重复通过数据(如重复通过列表74、76中的非活动态列表的单元)的指针被调整为指向将要发送的数据的下一非活动态块。在步骤1612之后,控制转回到步骤204,以继续本文别处所讨论的处理。
如果在测定步骤1608确定没有更多的非活动态数据要发送,则控制从测定步骤1608转到步骤1614,过程等待。由于已经确定被发送的数据对应于从源组1202到远程目的地1206的传输(在测定步骤1604),且已经确定从源组1202到本地目的地1204的相应传输尚未完成(根据在步骤1606的测试),则如果在测定步骤1608确定没有更多的数据要发送,则在步骤1614等待是适当的,从而或更多的非活动态数据将被使得可用于发送,或直到另一过程将相应的数据成功地从源组1202传输到本地目的地1204为止,因而改变在测定步骤1606的结果以用于下一迭代。在步骤1614之后,控制转回到步骤204以继续本文别处描述的处理。
如果在测定步骤1606确定相应的到本地目的地1204的传输在先前已成功完成,则控制从测定步骤1606转到另一测定步骤1616以确定正被传输的数据是否具有一个以上的与其关联的与传输有关的槽(如活动态槽和非活动态槽)。如本文别处所述,在一定条件下,有一个以上的槽与其关联而不是单个槽。例如,见上面结合图12的流程图440和步骤446、472、474、476、478的描述。因而,如果在测定步骤1616确定没有一个以上的槽,则控制从测定步骤1616转到步骤212,以继续本文别处描述的处理。否则,如果在测定步骤1616确定有一个以上的相应槽,则控制从测定步骤1616转到测定步骤1618,其确定传输到本地目的地1204的其它槽的传输是否已成功,类似于在步骤1606的槽的测试。如果在测定步骤1618确定所有其它相应的槽均被适当地传输给本地存储设备1204,则控制从测定步骤1618转到步骤212以继续本文别处描述的处理。否则,控制从测定步骤1618转到步骤1608,同样如本文别处所述。
在在此描述的系统的另一实施例中,不象图7的图表240中所示那样使用COVD用于R2设备是可能的。即,可在R2设备不使用COVD的情况下实现异步数据的R2接收。
参考图39,图表1640示出了提供在接收数据的远程存储设备26中的高速缓存器1642。高速缓存器1642包括多个槽1652-1654,其中放置从本地存储设备24接收的异步数据。其还示出了第一周期链表1674和第二周期链表1676,这些链表包含指向高速缓存器1642的槽1652-1654的指针。因而。例如,周期链表1674包括多个指针1681-1685,每一指针指向高速缓存器1642中的槽1652-1654之一。类似地,周期链表1676包括多个指针1691-1695,每一指针指向高速缓存器1642的槽1652-1654之一。标准逻辑设备1698也被映射到高速缓存器1642的部分中。
在在此的实施例中,列表1674、1676之一对应于非活动态数据块(如图2中所示的数据块56),而列表1674、1676中的另一列表对应于活动态数据块(如图2的数据块58)。所接收的数据使用非活动态数据块进行积聚,而活动态数据块用于保存在标准逻辑设备1698的数据,如本文别处结合图7的图表240及相应的文本所述。因而,当新数据到达时,其被放置在高速缓存器1642中,且新指针被添加到周期链表1674、1676中对应于非活动态数据块(接收数据时)的那一周期链表。
在一些情况下,能够确定标准逻辑设备1698(或任何其它逻辑设备)的一部分在对应于所接收的数据的高速缓存器1642中具有与其关联的槽是有用的。当然,永远可能遍历列表1674、1676以确定在高速缓存器1642中是否有相应的槽。然而,如果有使用特定设备、柱面(cylinder)及磁头的值(head value)来确定在高速缓存器1642中是否有对应的槽1652-1654等待被降级到设备的方法则更有用。
参考图40,图表1700示出了散列表1702,其包含多个项1704-1706。在在此的实施例中,每一项1704-1706或包含空值指针或指向缓存槽1652-1654之一,这些缓存槽对应于已被接收但尚未被保存在标准逻辑设备1698(或另一标准逻辑设备)上的数据。表1702通过使用散列函数进行索引,散列函数使用设备、柱面及首次分析值执行数学运算以在表1702内产生索引从而发现相应的项。因而,当R2设备接收数据时,散列函数被应用到设备、柱面、及磁头以发现其在表1702内的索引值,继而指针被写到指向高速缓存器1642中的特定槽1652-1654的相应项1704-1706。一旦所接收的数据被适当地降级到标准逻辑设备1698(或另一设备),则项1704-1706中的相应项被设置为空值。在这种情况下,散列表1702允许快速地确定标准逻辑设备的特定部分是否对应于尚未被降级的所接收数据。对于在此描述的系统,任何适当的散列函数均可用于在表1702内产生索引。
在一些情况下,对于特定的设备、柱面及磁头值,在表1702内产生与用不同设备、柱面及磁头值产生的索引一样的索引是可能的。这被称为“冲突”。在出现冲突的情况,表1702中的第二项对应于与所提供的索引相同的索引,且第二项被链接到第一项,从而特定的索引将对应于一个以上的项。这由单元1708所示,其链接到表1702的单元1705。因而,第一设备、柱面及磁头值被散列以产生并索引到项1705,同时不同的设备、柱面及磁头值被输入到散列函数以产生相同的索引值。在在此的实施例中,项1705用于指向高速缓存器1642中对应于第一设备、柱面及磁头的数据,而项1708用于指向高速缓存器1642中对应于第二设备、柱面及磁头的数据。当然,当数据被降级到适当的设备时,项1705、1708中的对应项可从表1700中消除。
注意,任何数量的项可对应于单一索引,从而,例如,如果导致三个单独的设备、柱面及磁头的设置值产生相同的索引的冲突出现,则有三个(或更多个)项在表1702内在特定的索引处链接在一起。还应注意,其它适当的技术可用于处理冲突,包括提供另外的表(如第二表、第三表、第四表等)。
参考图41,图表1720示出了散列表1722的另一实施例,其包含多个项1724-1726。图41的实施例类似于图40的实施例,但也有几个区别,如在此所述。每一项1724-1726或包含空值指针或指向图表1720中所示的缓存槽1728、1732、1734之一,这些缓存槽对应于已被接收但尚未被保存在标准逻辑设备1698(或另一标准逻辑设备)上的数据。表1722通过使用散列函数进行索引,散列函数使用设备、柱面及磁头的值执行数学运算以在表1722内产生索引从而发现相应的项。因而,当R2设备接收数据时,散列函数被应用到设备、柱面、及磁头以发现其在表1722内的索引值,继而指针被写到指向特定槽1728、1732、1734的相应项1724-1726。一旦所接收的数据被适当地降级到标准逻辑设备1698(或另一设备),则项1724-1726中的相应项被适当地调整。在这种情况下,散列表1722允许快速地确定标准逻辑设备的特定部分是否对应于尚未被降级的所接收数据。对于在此描述的系统,任何适当的散列函数均可用于在表1722内产生索引。
对于图41中的实施例,在出现冲突的情况,由表项指向的第一槽指向导致冲突的第二槽。因而,例如,如果槽1732和槽1736在表项1725导致冲突,则表项1725指向槽1732,而槽1732指向槽1736。因此,当随后的槽被添加时,冲突不会导致表1722的任何变化,因为添加随后的槽仅包括改变先前槽的指针值。当然,任何数量的槽可对应于单一表项。
注意,任何数量的项可对应于单一索引,从而,例如,如果导致三个单独的设备、柱面及磁头的设置值产生相同的索引的冲突出现,则有三个(或更多个)项在表1722内在特定的索引处链接在一起。还应注意,其它适当的技术可用于处理冲突,包括提供另外的表(如第二表、第三表、第四表等)。
在一些情形中,能够使用图26的图表1200中所示的本地目的地1204以外的设备是有利的。当然,如果本地目的地1204不是源组的完全镜像,则恢复可在远程目的地1206执行。然而,远程目的地1206可能不包含与从源组1202同步写到本地目的地1204的数据一样新的数据。因此,可能希望能够在远程目的地1206恢复但具有与从源组1202同步写到本地目的地1204的数据一样新的数据。
参考图42,图表1780示出了包含源组1782的系统,其类似于图26的图表1200的源组1202。该图表1780还示出了远程目的地1786,其类似于图26的图表1200的远程目的地1206。
图表1780还示出了小型存储器本地目的地1788,其用于从源组1782接收同步的数据写。在在此的实施例中,小型存储器本地目的地1788对源组1782而言表现为存储设备,类似于图26的图表1200的本地目的地1204。然而,在在此的实施例中,小型存储器本地目的地1788不是源组1782的镜像。而是,小型存储器本地目的地1788用于保存在恢复必要时将被传输给远程目的地1786的数据。在在此的实施例中,所有恢复均在远程目的地1786执行。在其它实施例中,源组1782可能知道其被连接到小型存储器本地目的地1788。
源组1782可象图26的图表1200的源组1202那样工作。因而,源组1782提供同步的写给小型存储器本地目的地1788并提供排序的写给远程目的地1786。小型存储器本地目的地1788,不是作为源组1782的镜像,而是保存来自源组1782的最近的同步的写,从而,在恢复必要的情况下,小型存储器本地目的地1788可将最近的写传输给远程目的地1786。当数据从源组1782传输给远程目的地1786时,相应的数据被从小型存储器本地目的地1788除去,从而小型存储器本地目的地1788仅保留(例如)最近两个周期的排序的写数据,因为任何比两个最近周期旧的周期均已被保存在远程存储设备1786上。
参考图43,数据结构1800示出了在小型存储器本地目的地1788的数据的存储。在在此的实施例中,数据结构1800为具有多个单元1802-1805的链表。链表顶部指针指向第一单元1802。第一单元指向第二单元1803,第二单元指向第三单元1804,等等。链表1800还具有最后的单元1805,其指向作为下一单元的空值指针以指明链表的末尾。当然,其它适当的数据结构也可使用。
在在此的实施例中,链表1800根据标准逻辑设备上的磁轨和磁头位置进行排序,从而,例如,单元1802在标准逻辑设备的单元顺序中可能是第一单元,第二单元1803紧随第一单元1802等。在另一实施例中,链表1800可根据数据写从源组1782提供给小型存储器本地目的地1788的顺序进行排序。两个实施例均将在下面详述。
参考图44,图表详细示出了链表1800的数据单元1820。数据单元1820包括TRACK字段1822,其指明用于保存相应的标准逻辑设备上的数据的磁轨号。其它数据存储位置可代替磁轨号进行使用,如区段编号、自标准逻辑设备的开始的偏移、或任何其它适当的指示符。
数据单元1820还包括周期次数1824(CYCNO),其指明用于将数据从源组1782传输到远程目的地1786的周期,如本文别处所述。当数据从源组1782传输到小型存储器本地目的地1788时,小型存储器本地目的地1788跟踪对应于源组1782和远程目的地1786之间的传输的周期变化并分配适当的周期次数给数据单元1820,如本文别处所详述的。
数据单元1820还包括数据字段1826(DATA),其对应于已从源组1782传输到小型存储器本地目的地1788的数据。数据单元1820还包括下一字段1828(NEXT),其用于指向链表1800中的下一数据单元。
参考图45,流程图1850示出了由小型存储器本地目的地1788执行的与接收由源组1782提供给小型存储器本地目的地1788的数据有关的步骤。如本文别处所述,小型存储器本地目的地1788对源组1782可表现为源组1782的镜像。然而如在此所述的,小型存储器本地目的地1788不必须是源组1782的镜像,而是包含来自源组1782的最近数据。在恢复必要的情况下,小型存储器本地目的地1788将保存于其上的数据传输给远程目的地1786以帮助恢复。
流程图1850的处理开始于步骤1852,本地周期次数CYCNO被设定为0。在步骤1852设置本地周期次数用于跟踪源组1782的周期变化。注意,本地周期次数不必准确对应于在源组1782使用的特定周期次数。而是,在步骤1852设置的周期次数跟踪源组1782的周期转换即足够了。
在步骤1852之后是步骤1854,从源组1782接收数据。在步骤1854之后是测定步骤1856,其确定所接收的数据是否对应于源组1782提供的周期转换。测定步骤1856类似于图28A的测定步骤1262,如上所述。
如果在测定步骤1856确定所接收的数据不对应于周期转换,则控制从测定步骤1856转到步骤1858,所接收的数据被添加到小型存储器本地目的地1788的存储器中。在步骤1858将数据添加到小型存储器本地目的地1788的存储器将在本文别处详细描述。在步骤1858之后是步骤1862,所接收的数据由小型存储器本地目的地1788向源组1782确认。在步骤1862确认数据可用于使小型存储器本地目的地1788对源组1782表现为全同步镜像(即在步骤1862提供的确认与全同步镜像提供的确认一样)。在步骤1862之后,控制转回到步骤1854以接收更多的数据。
如果在测定步骤1856确定在步骤1854接收的数据对应于周期转换,则控制从步骤1856转到步骤1864,与小型存储器本地目的地1788一起使用的内部周期次数CYCNO被增加。在在此的实施例中,有一个最大周期次数MAXCYCNO,从而在步骤1864增加周期次数是通过对CYCNO加1并取其模MAXCYCNO的结果。
在步骤1864之后是步骤1866,对应于先前周期次数的数据被放弃。如本文别处所讨论的,小型存储器本地目的地1788保存对应于两个最近周期次数的数据。任何比两个周期次数旧的数据应已被成功从源组1782传输到远程目的地1786。因此,由于恢复将在远程目的地1786提供,则小型存储器本地目的地1788仅需要保存对应于当前周期次数的数据及对应于在前周期次数的数据。在其它实施例中,保持不同的数据(如三个或四个最近周期的数据)是可能的。在步骤1866放弃数据在本文别处详细讨论。在步骤1866之后,控制转回到步骤1854,如上述,以接收另外的数据。
参考图46,流程图1900详细地示出了由小型存储器本地目的地1788执行的与步骤1858有关的步骤,其中所接收的数据被添加到保存在小型存储器本地目的地1788的数据。处理开始于第一步骤1902,临时变量P1被设定为等于list top,指针指向保存在小型存储器本地目的地1788的数据的链表1800。
在步骤1902之后是测定步骤1904,其确定临时变量P1是否等于空值。如果是,则没有数据保存在链表1800中且由流程图1900的步骤保存的数据对应于被保存在小型存储器本地目的地1788的第一数据。如果在测定步骤1904确定P1等于空值,则控制从测定步骤1904转到步骤1906,则使用用于临时变量T的malloc指令(或其它适当的类似指令)从堆栈(或其它适当的类似物)获得存储器,所述变量T用于暂时保存数据。在步骤1906之后是步骤1908,数据记录T(T.TRACK)的磁轨号字段被设定为等于标准逻辑设备的磁轨,标准逻辑设备上的数据被保存在源组1782。在步骤1908之后是步骤1912,T.CYCNO被设定为等于在小型存储器本地目的地1788的当前本地周期次数。
在步骤1912之后是步骤1914,所接收的数据被复制到数据字段T(即T.DATA)。在步骤1914之后是步骤1916,下一字段(T.NEXT)被设定为等于空值。在步骤1916之后是步骤1918,list top被设定为等于T。在步骤1918之后,处理结束。
如果在测定步骤1904确定变量P1不等于空值,则控制从测定步骤1904转到测定步骤1922,其确定对应于已被接收的数据的磁轨号是否等于由P1指向的数据单元的磁轨号。如果是,则控制从测定步骤1922转到步骤1924,所接收的数据被写到数据字段P1.DATA(可能盖写现有的数据)。在步骤1924之后是步骤1926,由P1(P1.CYCNO)指向的单元的周期次数字段用保存在小型存储器本地目的地1778的当前本地周期次数(CYCNO)盖写。在步骤1926之后,处理结束。
如果在测定步骤1922确定由P1指向的单元的磁轨号不等于对应于所接收数据的磁轨号,则控制从测定步骤1922转到步骤1928,另一临时变量P2被设定为等于P1.NEXT。在步骤1928之后是测定步骤1932,其确定P2是否等于空值(即P1指向在链表1800末尾的单元)。如果否,则控制从测定步骤1932转到测定步骤1934,其确定对应于由P2指向的单元的磁轨号是否小于对应于已被接收的数据的磁轨号。在步骤1934的测试确定所接收的数据是否将是插入P1和P2之间的新单元。如果在测定步骤1934确定由P2指向的单元的磁轨号不小于对应于所接收的数据的磁轨号,则控制从测定步骤1934转到步骤1936,临时变量P1被设定为等于P2以准备下一迭代。在步骤1936之后,控制转回到步骤1922的测试,如上所述。
如果在测定步骤1932确定P2指向空值,或如果在测定步骤1934确定由P2指向的数据单元的磁轨号小于对应于所接收数据的磁轨号,则控制转到步骤1938,使用临时变量T分配新单元(对列表1800)。在步骤1938之后是步骤1942,T(T.TRACK)的磁轨号被设定为等于对应于所接收数据的磁轨号。在步骤1942之后是步骤1944,T(T.CYCNO)的周期次数字段被设定为等于在小型存储器本地目的地1788的本地周期次数。
在步骤1944之后是步骤1946,所接收的数据被写到临时存储区(T.DATA)的数据字段。在步骤1946之后是步骤1948,T(T.NEXT)的下一字段被设定为等于P2。在步骤1948之后是步骤1952,由P1(P1.NEXT)指向的单元的下一字段被设定为等于T。在步骤1952之后,处理结束。
图46的流程图1900示出了在小型存储区本地目的地1788的链表1800根据对应于所接收的数据的磁轨号排序的实施例。其还可能根据在小型存储区本地目的地1788的数据接收顺序排序所接收的数据。
参考图47,流程图2000示出了由小型存储区本地目的地1788在添加数据的步骤1858执行的步骤。在流程图2000所示的另一实施例中,链表1800中的数据根据在小型存储器本地目的地1788的数据接收顺序进行保存。
处理开始于第一步骤2002,分配新数据单元T。在步骤2002之后是步骤2004,所分配的单元的磁轨号字段(T.TRACK)被设定为等于对应于所接收数据的磁轨号。在步骤2004之后是步骤2006,所分配的单元的周期次数字段(T.CYCNO)被设定为等于在小型存储器本地目的地1788提供的本地周期次数(CYCNO)。
在步骤2006之后是步骤2008,所接收的数据被写到所分配的单元的数据字段中(T.DATA)。在步骤2008之后是步骤2012,所分配的单元的下一字段(T.NEXT)被设定为等于空值。在在此的实施例中,最近接收的数据被添加在链表1800的末尾。在步骤2012之后是测定步骤2014,其确定list top(指向链表1800的顶部的指针)是否等于空值。注意,当第一数据被写到链表1800时,或如果所有数据已被从链表1800除去时,list top可等于空值。如果在测定步骤2014确定list top等于空值,则控制从测定步骤2014转到步骤2016,list top被设定为指向新分配的数据单元T。在步骤2016之后是步骤2018,跟踪链表1800的末尾的链表末端单元LE也被设定为指向新分配的数据单元T。在步骤2018之后,处理结束。
如果在测定步骤2014确定list top不等于空值,则控制从测定步骤2014转到步骤2022,由链表末端指针指向的数据单元的下一字段(LE.NEXT)被设定为指向新分配的数据单元T。在步骤2022之后是步骤2024,链表末端指针LE被设定为等于新分配的数据单元T。在步骤2024之后,处理结束。
参考图48,流程图2050示出了由小型存储器本地目的地1788执行的与图45的流程图1850的放弃步骤1866有关的步骤。在在此的实施例中,同样的处理可用于放弃,不管数据是根据磁轨号(图46的实施例)还是根据接收顺序(图47的实施例)保存在链表1800上。注意,用于放弃数据的技术可独立于用于添加数据的技术。
流程图2050的处理开始于第一步骤2052,临时变量P1被设定为等于list top变量,其指向链表1800的第一单元。在步骤2052之后是测定步骤2054,其确定P1是否等于空值。如果是,则处理结束。否则,控制从测定步骤2054转到步骤2056,另一临时变量P2被设定为等于由P1指向的数据单元的下一字段(即被设定为等于P1.NEXT)。在步骤2056之后是测定步骤2058,其确定P2是否指向空值。如果是,则处理结束。否则,控制从测定步骤2058转到测定步骤2062,其确定由P2指向的数据单元的周期次数字段(P2.CYCNO)是否等于被放弃的数据的周期次数(如(CYCNO-2)模MAXCYCNO)。如果是,则控制从测定步骤2062转到步骤2064,由P1指向的单元的下一字段(P1.NEXT)被设定为等于由P2指向的单元的下一字段(P2.NEXT),因而从链表1800除去由P2指向的单元。在步骤2064之后是步骤2066,由P2指向的单元被释放(即返回到堆栈中)。在步骤2066之后是步骤2068,P1被设定为等于由P1指向的下一字段(即P1=P1.NEXT)。在步骤2068之后,控制转回到步骤2056以进行下一迭代。注意,如果在测定步骤2062确定由P1指向的单元的周期次数字段不等于被放弃的数据的周期次数,则控制从测定步骤2062转到步骤2068,如上所述。
注意,对于结合图42-48讨论的实施例,其不必保持SDDF映射,因为恢复总是在远程目的地1786执行且所有保存的数据均从小型存储器本地目的地1788传输给远程目的地1786恢复。因而,不必跟踪需要被传输的具体的数据。此外,不必具有标记或任何其它机制来跟踪哪一设备将被用于恢复,因为在图42-48的实施例中远程目的地1786总是被用于恢复。此外,不必在远程目的地执行图29和30的处理,因为没有标记或SDDF映射。
参考图49,流程图2100示出了所执行的与在远程目的地1786恢复有关的步骤,例如,当源组1782中止运行时。处理开始于第一步骤2102,其中源组1782、远程目的地1786和小型存储器本地目的地1788之间的链路被撤消。在步骤2102撤消链路类似于在图31的流程图1360的步骤1362撤消链路。在步骤2102之后是步骤2104,排序的写被终止。在步骤2104终止排序的写类似于在图31的流程图1360的步骤1366终止排序的写。
在步骤2104之后是步骤2106,所有数据均被从小型存储器本地目的地1788传输到远程目的地1786。数据可根据链表1800上的数据单元的顺序进行传输。因而,例如,如果链表1800根据写到小型存储器本地目的地1788的时间顺序进行保存(图47所示的实施例),则数据将根据写的时间顺序从小型存储器本地目的地1788传输给远程目的地1786。或者,如果数据以相应的标准逻辑设备上的存储位置顺序保存在链表1800中(图46的实施例),则数据可以该顺序从小型存储器本地目的地1788传输给远程目的地1786。在步骤2106之后,处理结束且运行可使用远程存储设备1786重新开始,其具有最新数据。
参考图50,图表2120示出了资源的共享。图表2120包括源组2122和远程目的地2126,这二者类似于图42的源组1782和远程目的地1786。图表2120还示出了小型存储器本地目的地2128,其类似于图42的小型存储器本地目的地1788,除了小型存储器本地目的地2128可由无关的存储系统共享以外。注意,小型存储器本地目的地2128可以是任何类型的存储设备,包括由EMC公司提供的Symmetrics设备、个人计算机、或任何其它能够保存数据并提供在此描述的功能的设备。
图表还示出了第二源组2126’及第二远程目的地2122’。然而,源组2122’传输数据给小型存储器本地目的地2128,其也由源组2122使用。当对于源组2122、2122’之一或二者恢复变得必要时,恢复数据将由小型存储器本地目的地2128提供给远程目的地2126、2126’中的一个或同时提供给二者。在在此的实施例中,小型存储器本地目的地2128将来自源组2122的数据保存在与保存源组2122’的数据的位置不同的位置。
图表2120还示出了第三源组2122″和第三远程目的地2126″。第三源组2122″也传输数据给小型存储器本地目的地2128。此外,当恢复变得必要时,小型存储器本地目的地2128可传输恢复数据给远程目的地2126″。
连接到小型存储器本地目的地的源组和远程目的地的数量受限于小型存储器本地目的地的存储和处理能力。注意,单个存储设备可用作多个源组的远程目的地。
当本发明已结合多个实施例进行公开的同时,在其基础上的修改对本领域技术人员而言将是很明显的。因此,本发明的实质和范围在下面的权利要求中提出。

Claims (10)

1、保存恢复数据的方法,包括:
提供数据块给远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且其中特定数据块的第二时间对应于该特定数据块随后的数据块的第一时间;
提供同步数据给本地目的地;及
提供与新数据块的形成有关的指示符给本地目的地以用于在远程目的地的存储。
2、根据权利要求1所述的方法,其中本地目的地保持多个映射,其中每一映射将正提供给其的同步数据与特定的数据块相关联。
3、根据权利要求2所述的方法,响应于接收与新数据块的形成有关的指示符,本地目的地指向新的映射。
4、根据权利要求1所述的方法,还包括:
响应于本地目的地未能确认提供给其的同步数据,远程目的地保持写给其的数据的映射。
5、保存恢复数据的方法,包括:
主处理机将数据写到本地存储设备;
主处理机使本地存储设备积聚对应于主处理机进行的写的数据块,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且其中特定数据块的第二时间对应于该特定数据块随后的数据块的第一时间;
将数据块从本地存储设备传输给远程目的地;
从本地存储设备提供同步数据给本地目的地;及
主处理机使得指示符将被提供给本地目的地以用于在远程目的地的存储,其中指示符与新数据块的形成有关。
6、根据权利要求5所述的方法,其中本地目的地保持多个映射,其中每一映射将正提供给其的同步数据与特定的数据块相关联。
7、根据权利要求6所述的方法,其中,响应于接收与新数据块的形成有关的指示符,本地目的地指向新的映射。
8、保存恢复数据的方法,包括:
提供数据块给远程目的地,其中每一数据块代表在第一时间之前及第二时间之后写的数据,且其中特定数据块的第二时间对应于该特定数据块随后的数据块的第一时间;
提供对应于数据块的同步数据给小型存储器本地目的地,其中小型存储器本地目的地包含未被保存在远程目的地上的数据且远程目的地包含未被保存在小型存储器本地目的地上的数据;及
当新数据块被提供时提供指示符。
9、根据权利要求8所述的方法,其中包含在远程目的地上但未包含在小型存储器本地目的地上的数据比包含在小型存储器本地目的地上但未包含在远程目的地上的数据旧。
10、根据权利要求7所述的方法,还包括:
在小型存储器远程目的地提供本地周期次数;及
响应于接收新数据块正被提供的指示符,递增本地指示符。
CNB2005101079577A 2004-09-30 2005-09-30 三者间的异步复制 Active CN100428190C (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/955,470 US8078813B2 (en) 2004-09-30 2004-09-30 Triangular asynchronous replication
US10/955,142 US8185708B2 (en) 2004-09-30 2004-09-30 Host implementation of triangular asynchronous replication
US10/955,142 2004-09-30
US10/955,470 2004-09-30
US11/050,551 2005-02-03

Publications (2)

Publication Number Publication Date
CN1779660A true CN1779660A (zh) 2006-05-31
CN100428190C CN100428190C (zh) 2008-10-22

Family

ID=43015790

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101079577A Active CN100428190C (zh) 2004-09-30 2005-09-30 三者间的异步复制

Country Status (2)

Country Link
US (4) US8078813B2 (zh)
CN (1) CN100428190C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101808137A (zh) * 2010-03-29 2010-08-18 成都市华为赛门铁克科技有限公司 数据传输方法、装置和系统
CN104937576A (zh) * 2013-03-28 2015-09-23 惠普发展公司,有限责任合伙企业 协调存储在基于非易失性存储器的系统中的数据的复制

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464126B2 (en) * 2005-07-21 2008-12-09 International Business Machines Corporation Method for creating an application-consistent remote copy of data using remote mirroring
US8843783B2 (en) * 2006-03-31 2014-09-23 Emc Corporation Failover to backup site in connection with triangular asynchronous replication
JP4942418B2 (ja) * 2006-08-04 2012-05-30 株式会社日立製作所 計算機システム及びそのスナップショット作成方法
US20080209145A1 (en) * 2007-02-27 2008-08-28 Shyamsundar Ranganathan Techniques for asynchronous data replication
JP4916420B2 (ja) * 2007-11-16 2012-04-11 株式会社日立製作所 ストレージシステム及びリモートコピー制御方法
US7890459B1 (en) 2008-03-25 2011-02-15 Emc Corporation Non-disruptive modification of data in-place
US8135929B1 (en) 2008-03-27 2012-03-13 Emc Corporation Cascaded remote data facility system having diskless intermediate RDF site providing logical storage device functionality
US8589645B1 (en) 2008-03-27 2013-11-19 Emc Corporation Remote read for storage devices
US8122209B1 (en) 2008-03-27 2012-02-21 Emc Corporation Diskless storage device
US8190948B1 (en) 2008-07-31 2012-05-29 Emc Corporation Handling out of order I/O using temporal relationships of transmitted data
US8151069B1 (en) 2008-10-29 2012-04-03 Emc Corporation Multiprotection for snapsnots
US8335904B1 (en) 2008-12-30 2012-12-18 Emc Corporation Identifying active and inactive data in storage systems
US8307271B1 (en) 2009-09-17 2012-11-06 Emc Corporation Fast verification of data block cycle redundancy checks
US8364858B1 (en) 2009-12-07 2013-01-29 Emc Corporation Normalizing capacity utilization within virtual storage pools
US8484536B1 (en) 2010-03-26 2013-07-09 Google Inc. Techniques for data storage, access, and maintenance
US8433848B1 (en) 2010-03-30 2013-04-30 Emc Corporation Analysis tool for a multi-tier storage environment
US8719675B1 (en) 2010-06-16 2014-05-06 Google Inc. Orthogonal coding for data storage, access, and maintenance
US8924675B1 (en) 2010-09-24 2014-12-30 Emc Corporation Selective migration of physical data
US9558111B1 (en) 2010-09-27 2017-01-31 EMC IP Holding Comapny LLC Storage space reclaiming for virtual provisioning
US9176677B1 (en) 2010-09-28 2015-11-03 Emc Corporation Virtual provisioning space reservation
US8578204B1 (en) 2010-12-29 2013-11-05 Emc Corporation Witness facility for distributed storage system
US10769021B1 (en) 2010-12-31 2020-09-08 EMC IP Holding Company LLC Cache protection through cache
US8682955B1 (en) 2010-12-31 2014-03-25 Emc Corporation Fully automated cloud tiering controlled by an orchestration layer based on dynamic information
US8898402B1 (en) 2011-03-31 2014-11-25 Emc Corporation Assigning storage resources in a virtualization environment
US8621317B1 (en) 2011-07-25 2013-12-31 Google Inc. Modified orthogonal coding techniques for storing data
US8615698B1 (en) 2011-09-28 2013-12-24 Google Inc. Skewed orthogonal coding techniques
US9811272B1 (en) 2011-12-28 2017-11-07 EMC IP Holding Company LLC Four site data replication using host based active/active model
US8856619B1 (en) 2012-03-09 2014-10-07 Google Inc. Storing data across groups of storage nodes
US9026492B1 (en) 2012-03-26 2015-05-05 Emc Corporation Multisite replication with uncoordinated cycle switching
US8732124B1 (en) 2012-03-26 2014-05-20 Emc Corporation Multisite replication with coordinated cycle switching
US8959305B1 (en) 2012-06-29 2015-02-17 Emc Corporation Space reclamation with virtually provisioned devices
US9100330B1 (en) * 2012-07-13 2015-08-04 Emc Corporation Introduction of read delay or write delay in servers of a geographically distributed data processing system so that clients read up-to-date data
US10528262B1 (en) * 2012-07-26 2020-01-07 EMC IP Holding Company LLC Replication-based federation of scalable data across multiple sites
US8972405B1 (en) 2012-07-26 2015-03-03 Emc Corporation Storage resource management information modeling in a cloud processing environment
US9092449B2 (en) * 2012-10-17 2015-07-28 International Business Machines Corporation Bitmap selection for remote copying of updates
US9275117B1 (en) 2012-12-06 2016-03-01 Emc Corporation Fast dependency mining using access patterns in a storage system
US9069482B1 (en) * 2012-12-14 2015-06-30 Emc Corporation Method and system for dynamic snapshot based backup and recovery operations
US9330048B1 (en) 2013-01-28 2016-05-03 Emc Corporation Balancing response times for synchronous I/O requests having different priorities
US10552342B1 (en) 2013-03-15 2020-02-04 EMC IP Holding Company LLC Application level coordination for automated multi-tiering system in a federated environment
US9813447B2 (en) 2013-03-15 2017-11-07 Extreme Networks, Inc. Device and related method for establishing network policy based on applications
US9172627B2 (en) 2013-03-15 2015-10-27 Extreme Networks, Inc. Device and related method for dynamic traffic mirroring
US9584393B2 (en) 2013-03-15 2017-02-28 Extreme Networks, Inc. Device and related method for dynamic traffic mirroring policy
US9130826B2 (en) * 2013-03-15 2015-09-08 Enterasys Networks, Inc. System and related method for network monitoring and control based on applications
US9323682B1 (en) 2013-04-05 2016-04-26 Emc Corporation Non-intrusive automated storage tiering using information of front end storage activities
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US10157020B1 (en) * 2014-09-30 2018-12-18 EMC IP Holding Company LLC Optimizing copy processing between storage processors
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US10503609B1 (en) 2017-04-27 2019-12-10 EMC IP Holding Company LLC Replication link smoothing using historical data
US10409520B1 (en) 2017-04-27 2019-09-10 EMC IP Holding Company LLC Replication of content-based storage using address space slices
US10613766B1 (en) 2017-07-27 2020-04-07 EMC IP Holding Company LLC Data replication techniques
US11341103B2 (en) 2017-08-04 2022-05-24 International Business Machines Corporation Replicating and migrating files to secondary storage sites
US10705753B2 (en) 2018-05-04 2020-07-07 EMC IP Holding Company LLC Fan-out asynchronous replication logical level caching
US10860239B2 (en) 2018-05-04 2020-12-08 EMC IP Holding Company LLC Fan-out asynchronous replication caching
US10853221B2 (en) 2018-05-04 2020-12-01 EMC IP Holding Company LLC Performance evaluation and comparison of storage systems
US11360688B2 (en) 2018-05-04 2022-06-14 EMC IP Holding Company LLC Cascading snapshot creation in a native replication 3-site configuration
US11048722B2 (en) 2018-07-31 2021-06-29 EMC IP Holding Company LLC Performance optimization for data persistency in asynchronous replication setups
US10613793B1 (en) 2018-11-01 2020-04-07 EMC IP Holding Company LLC Method to support hash based xcopy synchronous replication
US10719249B1 (en) 2019-01-31 2020-07-21 EMC IP Holding Company LLC Extent lock resolution in active/active replication
US10853200B2 (en) 2019-02-01 2020-12-01 EMC IP Holding Company LLC Consistent input/output (IO) recovery for active/active cluster replication
US11194666B2 (en) 2019-04-26 2021-12-07 EMC IP Holding Company LLC Time addressable storage in a content addressable storage system
US10719257B1 (en) 2019-04-29 2020-07-21 EMC IP Holding Company LLC Time-to-live (TTL) license management in an active/active replication session
US11216388B2 (en) 2019-04-30 2022-01-04 EMC IP Holding Company LLC Tiering between storage media in a content aware storage system
US11301138B2 (en) 2019-07-19 2022-04-12 EMC IP Holding Company LLC Dynamic balancing of input/output (IO) operations for a storage system
US11238063B2 (en) 2019-07-25 2022-02-01 EMC IP Holding Company LLC Provenance-based replication in a storage system
US10908828B1 (en) 2019-07-25 2021-02-02 EMC IP Holding Company LLC Enhanced quality of service (QoS) for multiple simultaneous replication sessions in a replication setup
US11429493B2 (en) 2020-01-20 2022-08-30 EMC IP Holding Company LLC Remote rollback of snapshots for asynchronous replication
US11360693B2 (en) 2020-05-27 2022-06-14 EMC IP Holding Company LLC Identifying point-in-time asynchronous application data
US11281407B1 (en) 2020-09-23 2022-03-22 EMC IP Holding Company LLC Verified write command in active-active replication
US11593396B2 (en) 2020-09-23 2023-02-28 EMC IP Holding Company LLC Smart data offload sync replication
US11392311B2 (en) * 2020-10-30 2022-07-19 EMC IP Holding Company LLC Overlapping replication cycles for asynchronous replication

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2004A (en) * 1841-03-12 Improvement in the manner of constructing and propelling steam-vessels
US39959A (en) * 1863-09-15 Improvement in machines for measuring grain
GB2157113B (en) 1984-04-05 1987-06-24 British Library Board Improved threshold detector
US5206939A (en) * 1990-09-24 1993-04-27 Emc Corporation System and method for disk mapping and data retrieval
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5381539A (en) 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
JP3856855B2 (ja) 1995-10-06 2006-12-13 三菱電機株式会社 差分バックアップ方式
US5845147A (en) 1996-03-19 1998-12-01 Emc Corporation Single lock command for an I/O storage system that performs both locking and I/O data operation
US5778430A (en) 1996-04-19 1998-07-07 Eccs, Inc. Method and apparatus for computer disk cache management
US5857208A (en) 1996-05-31 1999-01-05 Emc Corporation Method and apparatus for performing point in time backup operation in a computer system
US5794254A (en) * 1996-12-03 1998-08-11 Fairbanks Systems Group Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets
US5778394A (en) * 1996-12-23 1998-07-07 Emc Corporation Space reclamation system and method for use in connection with tape logging system
JP3410010B2 (ja) * 1997-12-24 2003-05-26 株式会社日立製作所 サブシステムの移行方法および情報処理システム
US6145045A (en) 1998-01-07 2000-11-07 National Semiconductor Corporation System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points
US6366986B1 (en) 1998-06-30 2002-04-02 Emc Corporation Method and apparatus for differential backup in a computer storage system
JP4689137B2 (ja) 2001-08-08 2011-05-25 株式会社日立製作所 リモートコピー制御方法、及びストレージシステム
US6209002B1 (en) 1999-02-17 2001-03-27 Emc Corporation Method and apparatus for cascading data through redundant data storage units
US6446175B1 (en) * 1999-07-28 2002-09-03 Storage Technology Corporation Storing and retrieving data on tape backup system located at remote storage system site
EP1158409B1 (en) 2000-05-25 2008-05-28 Hitachi, Ltd. Storage system making possible data synchronisation confirmation at time of asynchronous remote copy
WO2002017055A1 (fr) * 2000-08-18 2002-02-28 Fujitsu Limited Dispositif de commande de disque, procede de commande de disque, dispositif de commande a distance de disque, et procede de commande a distance de disque
US6662281B2 (en) 2001-01-31 2003-12-09 Hewlett-Packard Development Company, L.P. Redundant backup device
FR2820849B1 (fr) 2001-02-15 2003-05-16 Cit Alcatel Procede de stockage de donnees informatiques et dispositif de stockage correspondant
US6594742B1 (en) * 2001-05-07 2003-07-15 Emc Corporation Cache management via statistically adjusted slot aging
US7249193B1 (en) 2001-08-28 2007-07-24 Emc Corporation SRDF assist
JP3983516B2 (ja) 2001-10-25 2007-09-26 株式会社日立製作所 記憶装置システム
US6862632B1 (en) 2001-11-14 2005-03-01 Emc Corporation Dynamic RDF system for transferring initial data between source and destination volume wherein data maybe restored to either volume at same time other data is written
JP3730907B2 (ja) 2001-12-04 2006-01-05 日本電気株式会社 ディスクアレイ装置間の遠隔データコピー方式
US6948089B2 (en) 2002-01-10 2005-09-20 Hitachi, Ltd. Apparatus and method for multiple generation remote backup and fast restore
CN100343829C (zh) * 2002-04-15 2007-10-17 无敌科技股份有限公司 远程数据保全备份恢复方法
US7024528B2 (en) 2002-08-21 2006-04-04 Emc Corporation Storage automated replication processing
US7117386B2 (en) 2002-08-21 2006-10-03 Emc Corporation SAR restart and going home procedures
JP2005062928A (ja) 2003-08-11 2005-03-10 Hitachi Ltd 複数のサイトにリモートコピーを行うシステム
US20050050115A1 (en) * 2003-08-29 2005-03-03 Kekre Anand A. Method and system of providing cascaded replication
US7188272B2 (en) * 2003-09-29 2007-03-06 International Business Machines Corporation Method, system and article of manufacture for recovery from a failure in a cascading PPRC system
US8200921B2 (en) * 2004-03-12 2012-06-12 Hewlett-Packard Development Company, L.P. Data synchronization for two data mirrors with sidefiles
US7225307B2 (en) * 2004-05-04 2007-05-29 International Business Machines Corporation Apparatus, system, and method for synchronizing an asynchronous mirror volume using a synchronous mirror volume
US8943271B2 (en) * 2008-06-12 2015-01-27 Microsoft Corporation Distributed cache arrangement
US8819371B2 (en) * 2011-10-07 2014-08-26 Hitachi, Ltd. Storage system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101808137A (zh) * 2010-03-29 2010-08-18 成都市华为赛门铁克科技有限公司 数据传输方法、装置和系统
CN101808137B (zh) * 2010-03-29 2014-09-03 成都市华为赛门铁克科技有限公司 数据传输方法、装置和系统
CN104937576A (zh) * 2013-03-28 2015-09-23 惠普发展公司,有限责任合伙企业 协调存储在基于非易失性存储器的系统中的数据的复制
US9678673B2 (en) 2013-03-28 2017-06-13 Hewlett Packard Enterprise Development Lp Coordinating replication of data stored in a non-volatile memory-based system
CN104937576B (zh) * 2013-03-28 2018-08-31 慧与发展有限责任合伙企业 协调存储在基于非易失性存储器的系统中的数据的复制

Also Published As

Publication number Publication date
US8078813B2 (en) 2011-12-13
US20060069887A1 (en) 2006-03-30
US20060069893A1 (en) 2006-03-30
US9558083B2 (en) 2017-01-31
US8185708B2 (en) 2012-05-22
US20120036333A1 (en) 2012-02-09
CN100428190C (zh) 2008-10-22
US9753663B1 (en) 2017-09-05

Similar Documents

Publication Publication Date Title
CN1779660A (zh) 三者间的异步复制
CN1241134C (zh) 存储域管理系统
CN1581091A (zh) 多点远程拷贝系统
CN1311328C (zh) 存储装置系统
CN1225709C (zh) 分散存储型多处理机系统及故障恢复方法
CN1157960C (zh) 电信平台系统及其方法
CN1886743A (zh) 对多存储设备的虚拟排序的写
CN1190741C (zh) 用于支持数据事务的设备和方法
CN1525337A (zh) 包括存储系统的数据处理系统
CN1779650A (zh) 用于自动管理计算环境的复制数据的状态的方法和系统
CN100337233C (zh) 事务文件系统
CN1192315C (zh) 高速缓存清理装置以及具备该装置的计算机系统
CN1764904A (zh) 虚拟排序的写
CN1020811C (zh) 动态管理输入/输出(i/o)连接的方法和装置
CN101075203A (zh) 存储装置以及其恢复卷生成方法
CN1773510A (zh) 存储器管理系统与方法以及程序
CN1760789A (zh) 数据保护应用程序、方法、系统和装置
CN101080710A (zh) 映象数据存储装置写时间映射
CN1696913A (zh) 存储系统内的数据转移
CN1882906A (zh) 在数据存储器中保持临时数据的系统和方法
CN1746856A (zh) 用于在数据保护系统中保护数据的方法、系统和装置
CN1637714A (zh) 远程复制网络
CN1724980A (zh) 存储系统
CN1809815A (zh) 管理锁定和事务
CN1684029A (zh) 存储系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant