CN1764904A - 虚拟排序的写 - Google Patents
虚拟排序的写 Download PDFInfo
- Publication number
- CN1764904A CN1764904A CN200480008082.9A CN200480008082A CN1764904A CN 1764904 A CN1764904 A CN 1764904A CN 200480008082 A CN200480008082 A CN 200480008082A CN 1764904 A CN1764904 A CN 1764904A
- Authority
- CN
- China
- Prior art keywords
- data
- storage device
- data block
- write
- groove
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 71
- 230000004044 response Effects 0.000 claims abstract description 52
- 230000005540 biological transmission Effects 0.000 claims description 60
- 238000012545 processing Methods 0.000 claims description 50
- 238000013500 data storage Methods 0.000 claims description 6
- 238000004321 preservation Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 abstract description 2
- 230000000977 initiatory effect Effects 0.000 abstract 2
- 230000000694 effects Effects 0.000 description 100
- 230000008569 process Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 36
- 230000007246 mechanism Effects 0.000 description 10
- 241001269238 Data Species 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003716 rejuvenation Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2056—Error 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/2064—Error 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 while ensuring consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2056—Error 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/2071—Error 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/2074—Asynchronous techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F2003/0697—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99955—Archiving or backup
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
主存储设备排序多个数据写,其通过:将第一时间之后及第二时间之前开始的数据写与第一数据块相关联,将在第二时间之后开始的数据写与不同于第一数据块的第二数据块相关联,在与第一数据块相关联的所有写完成之后,开始将与第一数据块相关联的写传输给辅助存储设备。排序数据写还可包括,在主存储设备将与第一数据块相关联的所有写传输给辅助存储设备之后,主存储设备发送消息给辅助存储设备,及响应于从主存储设备接收消息,辅助存储设备保存与第一数据块相关联的数据写。远程存储设备保存已排序的写,其通过:接收用于与第一数据块相关联的数据的消息,响应于与不同于所述第一数据块的第二数据块相关联的数据尚未被保存,等待与第二数据块相关联的数据被保存;及开始与第一数据块相关联的数据的存储。远程存储设备还可确认消息。
Description
发明背景
1.技术领域
本发明涉及计算机存储设备,特别是涉及在存储设备之间传输数据的领域。
2.背景技术
主处理机系统可使用存储设备保存和检索数据,存储设备包含多个主机接口装置(主机适配器)、磁盘驱动器、及磁盘接口装置(磁盘适配器)。这样的存储设备可由麻萨诸塞州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设备还可在镜像后从其标准逻辑设备分离并可在分离后重新同步(即重新建立为镜像)到标准逻辑设备。然而,使用SAR方法要求大量连续分离和重新同步BCV设备的辅助操作。SAR方法还使用主机控制和管理,其依赖于控制主机运行。此外,SAR方法的实际实施的轮转时间为20-30分钟,因此,当RDF链路和/或主设备出故障时,可能丢失的数据量为20-30分钟的数据价值。
因此,希望具有这样一种RDF系统,其具有上述不同技术中的每一种的部分有益品质,同时还减少了缺点。该系统对每一主机写可呈现低等待时间性,不管主设备和辅助设备之间的距离的长短如何,并可在出现故障时提供辅助设备的一致性(可复原性)。
发明内容
根据本发明,排序数据写包括主存储设备接收多个数据写,主存储设备将第一时间之后及第二时间之前开始的数据写与第一数据块相关联,主存储设备将在第二时间之后开始的数据写与不同于第一数据块的第二数据块相关联,在与第一数据块相关联的所有写完成之后,主存储设备开始将与第一数据块相关联的写传输给辅助存储设备。排序数据写还可包括,在主存储设备将与第一数据块相关联的所有写传输给辅助存储设备之后,主存储设备发送消息给辅助存储设备,及响应于从主存储设备接收消息,辅助存储设备保存与第一数据块相关联的数据写。排序数据写还可包括,在保存与第一数据块相关联的所有数据写之后,辅助存储设备发送确认给主存储设备。排序数据写还可包括,在发送消息给辅助存储设备之后,主存储设备暂停传输数据给辅助存储设备。排序数据写还可包括,在暂停传输数据给随后的数据写之后,主存储设备将数据写与第三数据块相关联,第三数据块不同于第一和第二数据块。排序数据写还可包括,响应于辅助存储设备发送确认给主存储设备,主存储设备重新开始传输数据给辅助存储设备。排序数据写还可包括,提供数据写给主存储设备的高速缓存槽(cache slot)。排序数据写还可包括,响应于与第二数据块相关联的数据写对应于已经与第一数据块关联的高速缓存槽,将数据复制到新的高速缓存槽。排序数据写还可包括,主存储设备使用指向高速缓存槽的第一指针列表用于与第一数据块关联的数据写,及主存储设备使用指向高速缓存槽的第二指针列表用于与第二数据块关联的数据写。排序数据写还可包括,在每一槽的标题部分中提供高速缓存标签字段,高速缓存标签字段包括与槽相关联的序号,其中序号对应于特定的数据块。高速缓存标签字段还可包括在槽第一次使用时被写入的密码字段。排序数据写还可包括,响应于槽不再被使用,清除密码字段。排序数据写还可包括,主存储设备使用高速缓存槽的第一只缓存虚拟设备(cache only virtual device)对应于与第一数据块相关联的数据写,及主存储设备使用高速缓存槽的第二只缓存虚拟设备对应于与第二数据块相关联的数据写。
根据本发明,将排序的写保存到远程存储设备包括,接收用于与第一数据块相关联的数据的消息,响应于与不同于所述第一数据块的第二数据块相关联的数据尚未被保存,等待与第二数据块相关联的数据被保存,并开始与第一数据块相关联的数据的存储。将排序的写保存到远程存储设备还可包括确认消息。将排序的写保存到远程存储设备还可包括,连同接收与第一数据块相关联的数据,建立被修改的槽的列表。开始与第一数据块相关联的数据的存储可包括遍历被修改的槽的列表。接收多个数据写可包括从主机接收多个数据写。将排序的写保存到远程存储设备还可包括,在主存储设备将与第一数据块相关联的所有写传输给辅助存储设备之后,主存储设备发送消息给辅助存储设备。
根据本发明,排序数据写的计算机软件包括,将第一时间之后开始及第二时间之前的数据写与第一数据块相关联的可执行代码,将在第二时间之后开始的数据写与不同于第一数据块的第二数据块相关联的可执行代码,及在与第一数据块相关联的所有写完成之后,开始将与第一数据块相关联的写传输给辅助存储设备的可执行代码。计算机软件还可包括,在传输与第一数据块相关联的所有写之后发送消息给存储设备的可执行代码,及在发送消息给存储设备之后暂停传输数据给存储设备的可执行代码。计算机软件还可包括,在暂停传输数据给随后的数据写之后,将数据写与第三数据块相关联的可执行代码,第三数据块不同于第一和第二数据块。计算机软件还可包括,响应于存储设备确认处理消息而重新开始传输数据给存储设备的可执行代码。计算机软件还可包括,提供数据写给高速缓存槽的可执行代码。计算机软件还可包括,响应于与第二数据块相关联的数据写对应于已经与第一数据块关联的高速缓存槽,将数据复制到新的高速缓存槽的可执行代码。计算机软件还可包括,使用指向高速缓存槽的第一指针列表用于与第一数据块关联的数据写的可执行代码,及使用指向高速缓存槽的第二指针列表用于与第二数据块关联的数据写的可执行代码。计算机软件还可包括,在每一槽的标题部分中提供高速缓存标签字段的可执行代码,高速缓存标签字段包括与槽相关联的序号,其中序号对应于特定的数据块。高速缓存标签字段还可包括在槽第一次使用时被写入的密码字段。计算机软件还可包括,响应于槽不再被使用而清除密码字段的可执行代码。计算机软件还可包括,使用高速缓存槽的第一只缓存虚拟设备对应于与第一数据块相关联的数据写的可执行代码,及使用高速缓存槽的第二只缓存虚拟设备对应于与第二数据块相关联的数据写的可执行代码。
根据本发明,将排序的写保存到远程存储设备的计算机软件包括,接收用于与第一数据块相关联的数据的消息的可执行代码,等待与不同于第一数据块的第二数据块相关联的数据被保存的可执行代码,及在第二数据块已被保存之后开始与第一数据块相关联的数据的存储的可执行代码。计算机软件还可包括确认消息的可执行代码。计算机软件还可包括,连同接收与第一数据块相关联的数据,建立被修改的槽的列表的可执行代码。开始与第一数据块相关联的数据的存储的可执行代码可包括遍历被修改的槽的列表的可执行代码。
根据本发明,数据存储设备,包括至少一包含数据的磁盘驱动器、至少一主机适配器,其连接到至少一磁盘驱动器并接收将要保存在至少一磁盘驱动器上的数据,还包括至少一远程适配器,其连接到至少一磁盘驱动器和至少一主机适配器,并将数据传输给远程存储设备,其中,响应于至少一主机适配器进行的数据的写,在第一时间之后开始且在第二时间之前的数据写与第一数据块关联,在第二时间之后开始的数据写与不同于第一数据块的第二数据块相关联,且在与第一数据块相关联的所有写完成之后,开始将与第一数据块相关联的写传输给远程存储设备。
根据本发明,排序数据写包括主机向主存储设备提供多个数据写,主存储设备将第一序号分配给在第一时间之后开始且在第二时间之前的数据写,主存储设备将不同于第一序号的第二序号分配给在第二时间之后开始的数据写,响应于被分配第一序号的所有写的完成,主存储设备将被分配第一序号的写传输给辅助存储设备,及响应于主存储设备将被分配第一序号的所有写传输给辅助存储设备,主存储设备发送提交信息给辅助存储设备。排序数据写还可包括,响应于从主存储设备接收提交信息,辅助存储设备保存具有第一序号的数据写。排序数据写还可包括,响应于保存所有具有第一序号的数据写,辅助存储设备向主存储设备发送确认。排序数据写还可包括,在发送提交信息给辅助存储设备之后,主存储设备暂停传输数据给辅助存储设备。排序数据写还可包括,在暂停传输数据之后,主存储设备分配第三序号给随后的数据写,第三序号不同于第一和第二序号。排序数据写还可包括,响应于辅助存储设备发送确认给主存储设备,主存储设备重新开始传输数据给辅助存储设备。排序数据写还可包括,提供数据写给主存储设备的高速缓存槽。排序数据写还可包括,响应于被分配第二序号的数据写对应于已经被分配第一序号的高速缓存槽,则将数据复制到新的高速缓存槽。排序数据写还可包括,主存储设备使用指向高速缓存槽的第一指针列表用于被分配第一序号的数据写,及主存储设备使用指向高速缓存槽的第二指针列表用于被分配第二序号的数据写。排序数据写还可包括,在每一槽的标题部分中提供高速缓存标签字段,高速缓存标签字段包括与槽相关联的序号。高速缓存标签字段还可包括在槽第一次使用时被写入的密码字段。排序数据写还可包括,响应于槽不再被使用,清除密码字段。排序数据写还可包括,主存储设备使用高速缓存槽的第一只缓存虚拟设备对应于被分配第一序号的数据写,及主存储设备使用高速缓存槽的第二只缓存虚拟设备对应于被分配第二序号的数据写。
根据本发明,将排序的写保存到远程存储设备包括,接收用于与第一序号相关联的数据的提交信息,响应于与不同于所述第一序号的第二序号相关联的数据尚未被保存,等待与第二序号相关联的数据被保存,并开始与第一序号相关联的数据的存储。保存排序的写还可包括确认提交信息。保存排序的写还可包括,连同接收与第一序号相关联的数据,建立被修改的槽的列表。开始与第一序号相关联的数据的存储可包括遍历被修改的槽的列表。
根据本发明,排序数据写的计算机软件包括将第一序号分配给在第一时间之后开始且在第二时间之前的数据写的可执行代码,将不同于第一序号的第二序号分配给在第二时间之后开始的数据写的可执行代码,响应于被分配第一序号的所有写的完成而将被分配第一序号的写传输给辅助存储设备的可执行代码,及传输被分配第一序号的所有写之后发送提交信息给存储设备的可执行代码。计算机软件还可包括在发送提交信息给存储设备之后暂停传输数据给存储设备的可执行代码。计算机软件还可包括,在暂停传输数据之后,分配第三序号给随后的数据写的可执行代码,第三序号不同于第一和第二序号。计算机软件还可包括,响应于存储设备确认处理所述执行而重新开始传输数据给存储设备的可执行代码。计算机软件还可包括,提供数据写给高速缓存槽的可执行代码。计算机软件还可包括,响应于被分配第二序号的数据写将数据复制到新的高速缓存槽的可执行代码,所述数据写对应于已经被分配第一序号的高速缓存槽。计算机软件还可包括,使用指向高速缓存槽的第一指针列表用于被分配第一序号的数据写的可执行代码,及使用指向高速缓存槽的第二指针列表用于被分配第二序号的数据写的可执行代码。计算机软件还可包括,在每一槽的标题部分中提供高速缓存标签字段的可执行代码,高速缓存标签字段包括与槽相关联的序号。高速缓存标签字段还可包括在槽第一次使用时被写入的密码字段。计算机软件还可包括,响应于槽不再被使用而清除密码字段的可执行代码。计算机软件还可包括,使用高速缓存槽的第一只缓存虚拟设备对应于被分配第一序号的数据写的可执行代码,及使用高速缓存槽的第二只缓存虚拟设备对应于被分配第二序号的数据写的可执行代码。
根据本发明,将排序的写保存到远程存储设备的计算机软件包括,接收用于与第一序号相关联的数据的提交信息的可执行代码,响应于与不同于第一序号的第二序号相关联的数据尚未被保存,等待与第二序号相关联的数据被保存的可执行代码,及开始与第一序号相关联的数据的存储的可执行代码。计算机软件还可包括确认提交信息的可执行代码。计算机软件还可包括,连同接收与第一序号相关联的数据,建立被修改的槽的列表的可执行代码。开始与第一序号相关联的数据的存储的可执行代码可包括遍历被修改的槽的列表的可执行代码。
根据本发明,从远程存储设备读所需要的数据,其中远程存储设备从另一存储设备接收数据块,包括:确定所需要的数据是否是另一存储设备提交的数据块的一部分,如果所需要的数据不是另一存储设备提交的数据块的一部分,则从相应的标准逻辑设备读取所需要的数据;如果所需要的数据是另一存储设备提交的数据块的一部分,将所需要的数据传输给标准逻辑设备并从下列之一获得所需要的数据:在传输所需要的数据至标准逻辑设备之后从标准逻辑设备获得及从另一存储设备提交的数据块获得。从远程存储设备读所需要的数据还可包括,如果所需要的数据是另一存储设备提交的数据块的一部分,锁定只缓存虚拟设备中指向所需要数据的相应槽。从远程存储设备读所需要的数据还可包括,在锁定相应的槽后,再次确定所需要的数据是否是另一存储设备提交的数据块的一部分。从远程存储设备读所需要的数据还可包括,如果再次确定的结果表明所需要的数据不是另一存储设备提交的数据块的一部分,则解锁相应的槽并从相应的标准逻辑设备读所需要的数据。从远程存储设备读所需要的数据还可包括,锁定标准逻辑设备的相应槽,合并相应的高速缓存槽,及使只缓存虚拟设备的相应槽指向标准逻辑设备。
根据本发明,连接到远程存储设备的主机读由本地存储设备传输的所需要数据,其通过识别包含所需要数据的最近且一致的数据集并从最近且一致的数据集获得所需要的数据进行。数据集可以是由本地存储设备提交的数据块。数据块可被分配以序号,该序号小于包含其它数据的其它数据块的序号,其它数据为开始写所需要的数据之后由其它主机开始写的数据。连接到远程存储设备的主机读由本地存储设备传输的所需要数据还可包括,确定远程存储设备的多个磁轨是否正被读,如果多个磁轨正被读,在读磁轨之前确定第一当前序号、读磁轨、及确定第二当前序号,如果第一当前序号不等于第二当前序号,则重新读磁轨。连接到远程存储设备的主机读由本地存储设备传输的所需要数据还可包括,确定远程存储设备的多个磁轨是否正被读,如果多个磁轨正被读,在读磁轨之前确定第一当前序号、读磁轨、及确定第二当前序号,如果第一当前序号不等于第二当前序号,则返回错误。
根据本发明,从远程存储设备读所需要的数据的计算机软件,其中远程存储设备从另一存储设备接收数据块,包括:确定所需要的数据是否是另一存储设备提交的数据块的一部分的可执行代码,如果所需要的数据不是另一存储设备提交的数据块的一部分则从相应的标准逻辑设备读取所需要的数据的可执行代码;如果所需要的数据是另一存储设备提交的数据块的一部分,将所需要的数据传输给标准逻辑设备并从下列之一获得所需要的数据的可执行代码:在传输所需要的数据至标准逻辑设备之后从标准逻辑设备获得及从另一存储设备提交的数据块获得。计算机软件还可包括,如果所需要的数据是另一存储设备提交的数据块的一部分则锁定只缓存虚拟设备中指向所需要数据的相应槽的可执行代码。计算机软件还可包括,在锁定相应的槽后,再次确定所需要的数据是否是另一存储设备提交的数据块的一部分的可执行代码。计算机软件还可包括,如果再次确定的结果表明所需要的数据不是另一存储设备提交的数据块的一部分,则解锁相应的槽并从相应的标准逻辑设备读所需要的数据的可执行代码。计算机软件还可包括,锁定标准逻辑设备的相应槽的可执行代码,合并相应的高速缓存槽的可执行代码,及使只缓存虚拟设备的相应槽指向标准逻辑设备的可执行代码。
根据本发明,用于连接到远程存储设备的主机读由本地存储设备传输的所需要数据的计算机软件,包括识别包含所需要数据的最近且一致的数据集的可执行代码,及从最近且一致的数据集获得所需要的数据的可执行代码。数据集可以是由本地存储设备提交的数据块。数据块可被分配以序号,该序号小于包含其它数据的其它数据块的序号,其它数据为开始写所需要的数据之后由其它主机开始写的数据。计算机软件还可包括,确定远程存储设备的多个磁轨是否正被读的可执行代码,如果多个磁轨正被读,在读磁轨之前确定第一当前序号、读磁轨、及确定第二当前序号的可执行代码,如果第一当前序号不等于第二当前序号,用于重新读磁轨的可执行代码。计算机软件还可包括,确定远程存储设备的多个磁轨是否正被读的可执行代码,如果多个磁轨正被读,在读磁轨之前确定第一当前序号、读磁轨、及确定第二当前序号的可执行代码,如果第一当前序号不等于第二当前序号,用于返回错误的可执行代码。
根据本发明,排序数据写包括,主机提供多个数据写给主存储设备,主存储设备将第一序号分配给在第一时间之后、第二时间之前开始的数据写,主存储设备将不同于第一序号的第二序号分配给在第二时间之后开始的数据写,响应于被分配第一序号的所有写的完成,主存储设备将被分配第一序号的写传输给辅助存储设备,及响应于主存储设备将所有被分配第一序号的写传输给辅助存储设备,主存储设备发送提交信息给辅助存储设备。排序数据写还可包括,响应于从主存储设备接收提交信息,辅助存储设备保存具有第一序号的数据写。排序数据写还可包括,响应于保存具有第一序号的所有数据写,辅助存储设备发送确认给主存储设备。排序数据写还可包括,在发送提交信息给辅助存储设备之后,主存储设备暂停传输数据给辅助存储设备。排序数据写还可包括,在暂停传输数据之后,主存储设备将不同于第一和第二序号的第三序号分配给随后的数据写。排序数据写还可包括,响应于辅助存储设备发送确认给主存储设备,主存储设备重新开始传输数据给辅助存储设备。排序数据写还可包括,提供数据写给主存储设备的高速缓存槽。排序数据写还可包括,响应于被分配以第二序号的数据写对应于已经被分配以第一序号的高速缓存槽,将数据复制到新的高速缓存槽。排序数据写还可包括,主存储设备使用指向高速缓存槽的第一指针列表用于被分配以第一序号的数据写,及主存储设备使用指向高速缓存槽的第二指针列表用于被分配以第二序号的数据写。排序数据写还可包括,在每一槽的标题部分中提供高速缓存标签字段,高速缓存标签字段包括与槽相关联的序号。高速缓存标签字段还可包括在槽第一次使用时被写入的密码字段。排序数据写还可包括,响应于槽不再被使用,清除密码字段。排序数据写还可包括,主存储设备使用高速缓存槽的第一只缓存虚拟设备对应于被分配以第一序号的数据写,及主存储设备使用高速缓存槽的第二只缓存虚拟设备对应于被分配以第二序号的数据写。
根据本发明,将排序的写保存到远程存储设备包括,接收用于与第一序号关联的数据的提交信息,响应于与不同于所述第一序号的第二序号相关联的数据尚未被保存,等待与第二序号相关联的数据被保存,并开始与第一序号相关联的数据的存储。保存排序的写还可包括确认提交信息。保存排序的写还可包括,连同接收与第一序号相关联的数据一起建立被修改的槽的列表。开始与第一序号相关联的数据的存储还可包括遍历被修改的槽的列表。
根据本发明,排序数据写的计算机软件包括,将第一序号分配给在第一时间之后、第二时间之前开始的数据写的可执行代码,将不同于第一序号的第二序号分配给在第二时间之后开始的数据写的可执行代码,响应于被分配第一序号的所有写的完成,将被分配第一序号的写传输给存储设备的可执行代码,及在传输所有被分配第一序号的写之后,发送提交信息给存储设备的可执行代码。计算机软件还可包括,在发送提交信息给存储设备之后,暂停传输数据给存储设备的可执行代码。计算机软件还可包括,在暂停传输数据之后,将不同于第一和第二序号的第三序号分配给随后的数据写的可执行代码。计算机软件还可包括,响应于存储设备确认处理所述提交,重新开始传输数据给存储设备的可执行代码。计算机软件还可包括,提供数据写给高速缓存槽的可执行代码。计算机软件还可包括,响应于被分配以第二序号的数据写对应于已经被分配以第一序号的高速缓存槽,将数据复制到新的高速缓存槽的可执行代码。计算机软件还可包括,使用指向高速缓存槽的第一指针列表用于被分配以第一序号的数据写的可执行代码,及使用指向高速缓存槽的第二指针列表用于被分配以第二序号的数据写的可执行代码。计算机软件还可包括,在每一槽的标题部分中提供高速缓存标签字段的可执行代码,高速缓存标签字段包括与槽相关联的序号。高速缓存标签字段还可包括在槽第一次使用时被写入的密码字段。计算机软件还可包括,响应于槽不再被使用,清除密码字段的可执行代码。计算机软件还可包括,使用高速缓存槽的第一只缓存虚拟设备对应于被分配以第一序号的数据写的可执行代码,及使用高速缓存槽的第二只缓存虚拟设备对应于被分配以第二序号的数据写的可执行代码。
根据本发明,将排序的写保存到远程存储设备的计算机软件包括,接收用于与第一序号关联的数据的提交信息的可执行代码,响应于与不同于所述第一序号的第二序号相关联的数据尚未被保存,等待与第二序号相关联的数据被保存的可执行代码,及开始与第一序号相关联的数据的存储的可执行代码。计算机软件还可包括确认提交信息的可执行代码。计算机软件还可包括,连同接收与第一序号相关联的数据一起建立被修改的槽的列表的可执行代码。开始与第一序号相关联的数据的存储的可执行代码还可包括遍历被修改的槽的列表的可执行代码。
根据本发明,使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,包括:如果所需数据的全部均在本地存储设备的高速缓存中,本地存储设备从高速缓存返回数据;及如果所需数据不全部在本地存储设备的高速缓存中,则从远程存储设备读数据到本地存储设备且本地存储设备将来自远程存储设备的数据与来自本地存储设备的数据合并于本地存储设备。使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,还可包括:在从远程存储设备读数据到本地存储设备之前,如果有来自本地存储设备的数据将被读,则在本地存储设备中创建临时存储区。临时存储区可以是临时槽。使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,还可包括:在创建临时存储区之前,锁定本地存储设备中对应于将被读的、来自本地存储设备的数据的槽。使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,还可包括:在合并数据之后,解锁本地存储设备中对应于将被读的、来自本地存储设备的数据的槽。来自本地存储区的数据可被合并在来自远程存储区的数据的上面。使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,还可包括:响应于保存在远程存储设备的高速缓存槽中的数据将被读,远程存储设备分配一临时存储区。使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,还可包括:从远程存储设备的磁盘将数据读进临时存储区,将保存在高速缓存槽中的将被读的数据与来自临时存储区中的磁盘的数据进行合并。使用本地存储设备读保存在远程存储设备上的所需数据,其中远程存储设备从本地存储设备接收数据块,还可包括:在远程存储区确定是否有保存在远程存储设备的高速缓存槽中的数据将被读之前,远程存储设备从远程存储设备的至少一高速缓存槽写至少一部分数据到远程存储设备的磁盘中。
根据本发明,读保存在远程存储设备上的所需数据的计算机软件,其中远程存储设备从本地存储设备接收数据块,包括:如果所需数据的全部均在本地存储设备的高速缓存中,从高速缓存返回数据的可执行代码;及如果所需数据不全部在本地存储设备的高速缓存中,则从远程存储设备读数据到本地存储设备且将来自远程存储设备的数据与来自本地存储设备的数据合并于本地存储设备的可执行代码。软件还可包括:在从远程存储设备读数据到本地存储设备之前,如果有来自本地存储设备的数据将被读,则在本地存储设备中创建临时存储区的可执行代码。临时存储区可以是临时槽。软件还可包括:在创建临时存储区之前,锁定本地存储设备中对应于将被读的、来自本地存储设备的数据的槽的可执行代码。软件还可包括:在合并数据之后,解锁本地存储设备中对应于将被读的、来自本地存储设备的数据的槽的可执行代码。来自本地存储区的数据可被合并在来自远程存储区的数据的上面。软件还可包括:响应于保存在远程存储设备的高速缓存槽中的数据将被读,在远程存储设备中分配临时存储区的可执行代码。软件还可包括:从远程存储设备的磁盘将数据读进临时存储区的可执行代码,将保存在高速缓存槽中的将被读的数据与来自临时存储区中的磁盘的数据进行合并的可执行代码。软件还可包括:在远程存储区确定是否有保存在远程存储设备的高速缓存槽中的数据将被读之前,从远程存储设备的至少一高速缓存槽写至少一部分数据到远程存储设备的磁盘中的可执行代码。
附图简要说明
图1为连同在此描述的系统使用的主机、本地存储设备及远程数据存储设备的示意图。
图2为连同在此描述的系统使用的主机、本地存储设备及远程数据存储设备之间的数据流的示意图。
图3为根据在此描述的系统,示出用于构建和利用本地存储设备上的数据块的项目的示意图。
图4示出了连同在此描述的系统使用的槽的数据结构。
图5为根据在此描述的系统,响应于主机的写,主机适配器(HA)的操作流程图。
图6为根据在此描述的系统,将数据从本地存储设备传输到远程存储设备的流程图。
图7为根据在此描述的系统,示出用于构建和利用远程存储设备上的数据块的项目的示意图。
图8为根据在此描述的系统,由远程存储设备执行的、与从本地存储设备接收提交指示符有关的步骤的流程图。
图9为根据在此描述的系统,将所传输的数据保存在远程存储设备中的流程图。
图10为根据在此描述的系统,所执行的与本地存储设备增加序号有关的步骤的流程图。
图11为根据在此描述的系统的另一实施例,用于构建和利用本地存储设备上的数据块的项目的示意图。
图12为根据在此描述的系统的另一实施例,响应于主机的写,主机适配器(HA)的操作流程图。
图13为根据在此描述的系统的另一实施例,将数据从本地存储设备传输到远程存储设备的流程图。
图14为连同在此描述的系统使用的第一主机、本地存储设备、远程数据存储设备、连接到远程存储设备的第二主机之间的数据流的示意图。
图15为根据在此描述的系统,所执行的与主机从远程存储设备读虚拟排序的写有关的步骤的流程图。
图16A和16B为根据在此描述的系统,所执行的与主机从远程存储设备读多个磁轨的虚拟排序的写的不同实施例有关的步骤的流程图。
图17为连同在此描述的系统使用的第一主机、本地存储设备、远程数据存储设备、及连接到本地存储设备的另一主机之间的数据流的示意图。
图18为根据在此描述的系统,所执行的与连接到本地存储设备的主机从远程存储设备读虚拟排序的写有关的步骤的流程图。
图19A和19B为根据在此描述的系统,响应于来自连接到主机的本地存储设备的读请求从远程存储设备读虚拟排序的写,由远程存储设备执行的步骤的流程图。
具体实施方式
参考图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之一或二者与其它存储设备(未示出)之间具有另外的链路是可能的。注意,在从本地存储设备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、及2001年7月7日申请的美国专利申请09/850,551中有所描述,二者均通过引用组合于此。
参考图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及2001年7月7日申请的美国专利申请09/850,551中描述,二者均通过引用组合于此。
在本文别处讨论的一些实施例中,远程存储设备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及2001年7月7日申请的美国专利申请09/850,551中描述,二者均通过引用组合于此。
参考图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到达。
在某些情况下,在系统正操作和执行从本地存储设备(R1)到远程存储设备的虚拟排序的写时,能够使用连接到远程存储设备的主机从R2设备读数据是有用的。与此有关,对于连接到远程存储设备的主机,能够读一致的、最新数据(即R2侧所提交的数据块的一部分)是有用的。
图14示出了从主机602到本地存储设备604及经链路608到远程存储设备606的数据通路。图14的系统类似于图2中所示的系统。从主机602写到本地存储设备604的数据被本地保存,如本地存储设备604的数据单元612所示。由主机602写到本地存储设备604的数据还被本地存储设备604保持并由本地存储设备604经链路608发送到远程存储设备606。
主机602进行的每一数据写(例如,记录、多个记录、磁轨等的写)被分配以序号。序号可提供在与写相关联的适当的数据字段中。在图14中,主机602进行的写被示出为分配以序号N。由主机602执行的、被分配以序号N的所有写均被收集在单一数据块614中。数据块614代表由主机602几乎在同时进行的多个独立的写。
通常,本地存储设备604积聚一序号的数据块,同时将先前积聚的数据块(具有在前的序号)传输给远程存储设备606。因而,在本地存储设备604正积聚来自主机602的、被分配序号N的写的同时,对在前序号(N-1)出现的写由本地存储设备604经链路608传输给远程存储设备606。数据块616代表来自主机602的、被分配以序号N-1的、尚未被传输给远程存储设备606的写。
远程存储设备606从对应于被分配以序号N-1的写的数据块616接收数据并建立具有序号N-1的主机写的新数据块618。数据可使用适当的RDF协议传输,其确认跨链路608发送的数据。当远程存储设备606已从数据块616接收所有数据时,本地存储设备604发送提交信息给远程存储设备606以提交所有被分配以N-1序号的、对应于数据块618的数据。通常,一旦对应于特定序号的数据块被提交,该数据块可被写到逻辑存储设备。这在图14中用数据块622表示,其对应于被分配以序号N-2的写(即,主机602写到本地存储设备606时使用的当前序号之前的第二个序号)。
在图14中,数据块622被示出为写到数据单元624中,其代表远程存储设备606的磁盘存储(标准逻辑设备)。因此,远程存储设备606正接收和积聚对应于序号N-1的数据块618,同时,对应于在前序号(N-2)的数据块622正被写到远程存储设备606的磁盘存储,由数据单元624图示。在一些实施例中,为了写(但不必立即被写),数据块622的数据被标记,而数据块618的数据则未被标记。保存在数据单元624上的数据被示出为具有序号N-3,这表明数据单元624上的数据可以是由数据块622代表的所提交数据之后的一(或更多)代。
因而,在运行中,主机602将数据写到本地存储设备604,其被本地保存在数据单元612中并被积聚在数据块614中。一旦特定序号的所有数据已被积聚(本文别处描述),本地存储设备604递增序号。来自数据块616的、对应于小于当前序号的序号的数据从本地存储设备604经链路608传输给远程存储设备606。数据块622对应于已由本地存储设备604发送消息给远程存储设备606进行提交的序号的数据。数据块622的数据被写到远程存储设备的磁盘存储624,其包含来自对应于序号N-3的先前代的数据。
对于R2主机626,可能希望连接到远程存储设备606以从远程存储设备606读数据,所述数据在开始已由主机602提供给本地存储设备604并从本地存储设备604经链路608传输给远程存储设备606。应注意,对应于数据块618的数据不必一致,因为其还在从本地存储设备604提供。然而,数据块622的数据是一致的,因为数据块622已被提交。因此,当R2主机626希望从远程存储设备606读数据时,数据或从数据块622提供,如果数据不在数据块中,则从数据单元624提供,如下面将详述的那样。
参考图15,流程图650示出了连同R2主机626从远程存储设备606读数据所执行的步骤。处理开始于第一步骤652,其确定对应于正被R2主机626读的数据的COVD槽是否指向标准逻辑设备(即指向数据单元624)。如果是,则R2主机626所想要的数据在数据单元624上且控制从步骤652转到步骤654,想要的数据从对应于数据单元624的标准逻辑设备读取。应注意,在步骤654从标准逻辑设备读数据包括从高速缓存器读数据,或者,如果数据在开始不在高速缓存器中,则从磁盘读数据,可选地,将数据从磁盘移到高速缓存器中。在步骤654之后,处理结束。
如果在测定步骤652确定对应于正被R2主机626读的数据的COVD槽没有指向标准逻辑设备,则控制从测定步骤652转到步骤656,COVD的槽被锁定。在步骤656锁定槽阻止其它操作访问该槽,如从数据块622恢复数据到数据单元624的操作。
在步骤656之后是测定步骤658,其确定COVD槽是否指向标准逻辑设备。在步骤658的测定步骤与步骤652的测定步骤一样。在步骤658的测定是有用的,因为在测定步骤652之后但在COVD槽在步骤656被锁定之前,另一过程(如从数据块622恢复数据到数据单元624的过程)已访问该COVD并将数据恢复到标准逻辑设备是可能的。在步骤658进行重新测定确保防止这样的竞态条件。
如果在测定步骤658确定在步骤656锁定的COVD槽现在指向标准逻辑设备,则控制从步骤658转到步骤662,COVD槽被解锁。在步骤662之后是步骤654,R2主机626想要的数据从数据单元624读取。在步骤654之后,处理结束。
如果在测定步骤658确定包含R2主机626想要的数据的COVD槽没有指向标准逻辑设备,则控制从步骤658转到步骤664,COVD中的数据被恢复到标准逻辑设备。在步骤664恢复数据通过使用类似于步骤308、312、314、316、318、322、324、326、328、332、334的步骤实现,这些步骤已在上面结合图9的流程图进行了描述。在步骤664之后,控制转到步骤654,如上所述,从标准逻辑设备读数据。在步骤654之后,处理结束。
对于某些实施例,将R2主机626执行的每一读操作限制为一次一磁轨是有用的。这减少了不一致数据的可能性,其由在R2主机626已读部分磁轨之后但在R2主机626已读所有磁轨之前在R2设备606处发生的循环切换导致。在其它实施例中,如果采取适当的步骤,R2主机626读多个磁轨是可能的。
参考图16A,流程图700示出了R2主机具有一次读一个以上磁轨的能力所执行的步骤。处理开始于第一步骤702,其确定读操作是否涉及一个以上磁轨。如果否,则控制从步骤702转到步骤704,读操作按本文别处描述的那样执行。在步骤704之后,处理结束。
如果在步骤702确定有一个以上的磁轨正被读,控制从步骤702转到步骤706以获取R2设备606的当前序号(即数据块622的序号)。在步骤706之后是步骤708,执行读。应注意,在步骤708的读是读一个以上磁轨。在步骤708之后是步骤712,R2设备606的当前序号被再次获得。在步骤712之后是步骤714,其确定在步骤712获得的序号是否与在步骤706获得的序号一样。如果是,则序号在多磁轨读操作期间没有改变且控制从步骤714转到步骤716,其返回已被读的数据。在步骤716之后,处理结束。否则,如果在步骤714确定序号不同,控制从步骤714转回到步骤706以重复上述顺序的步骤。应注意,如果在序号改变之间的时间足够长(如30秒),则不期望在步骤714,序号将连续两次不同。
参考图16B,流程图示出了具有一次读多个磁轨的能力的R2主机所执行的步骤的另一实施例,其不同于图16A的流程图700所示的实施例。处理开始于第一步骤722,其确定读操作是否涉及一个以上磁轨。如果否,则控制从步骤722转到步骤724,按本文别处描述的那样执行读操作。在步骤724之后,处理结束。
如果在步骤722确定有一个以上的磁轨正被读,控制从步骤722转到步骤726以获得R2设备606的当前序号(即数据块622的序号)。在步骤726之后是步骤728,执行读。应注意,在步骤728的读是读一个以上磁轨。在步骤728之后是步骤732,R2设备606的当前序号被再次获得。在步骤732之后是步骤734,其确定在步骤732获得的序号是否与在步骤726获得的序号一样。如果是,则序号在多磁轨读操作期间没有改变且控制从步骤734转到步骤736,其返回已被读的数据。在步骤736之后,处理结束。否则,如果在步骤734确定序号不同,控制从步骤734转到步骤738,返回错误消息。在步骤738之后,处理结束。应注意,接收在步骤738提供的错误消息的主机可简单地重新开始读操作。因此,主机可继续尝试读操作,直到获得成功的结果为止。
在某些情况下,在系统正操作和执行从本地存储设备(R1)到远程存储设备的虚拟排序的写时,能够使用连接到本地存储设备的主机从R2设备读数据是有用的。与此有关,对于连接到本地存储设备的主机,能够读一致的、最新数据(即R2侧所提交的数据块的一部分)是有用的。
图17示出了从主机802到本地存储设备804及经链路808到远程存储设备806的数据通路。图17的系统类似于图2中所示的系统。从主机802写到本地存储设备804的数据被本地保存,如本地存储设备804的数据单元812所示。由主机802写到本地存储设备804的数据还被本地存储设备804保持并由本地存储设备804经链路808发送到远程存储设备806。
主机802进行的每一数据写(例如,记录、多个记录、磁轨等的写)被分配以序号。序号可提供在与写相关联的适当的数据字段中。在图17中,主机802进行的写被示出为分配以序号N。由主机802执行的、被分配以序号N的所有写均被收集在单一数据块814中。数据块814代表由主机802几乎在同时进行的多个独立的写。
通常,本地存储设备804积聚一序号的数据块,同时将先前积聚的数据块(具有在前的序号)传输给远程存储设备806。因而,在本地存储设备804正积聚来自主机802的、被分配序号N的写的同时,对在前序号(N-1)出现的写由本地存储设备804经链路808传输给远程存储设备806。数据块816代表来自主机802的、被分配以序号N-1的、尚未被传输给远程存储设备806的写。
远程存储设备806从对应于被分配以序号N-1的写的数据块816接收数据并建立具有序号N-1的主机写的新数据块818。数据可使用适当的RDF协议传输,其确认跨链路808发送的数据。当远程存储设备806已从数据块816接收所有数据时,本地存储设备804发送提交信息给远程存储设备806以提交所有被分配以N-1序号的、对应于数据块818的数据。通常,一旦对应于特定序号的数据块被提交,该数据块可被写到逻辑存储设备。这在图17中用数据块822表示,其对应于被分配以序号N-2的写(即,主机802写到本地存储设备806时使用的当前序号之前的第二个序号)。
在图17中,数据块822被示出为写到数据单元824中,其代表远程存储设备806的磁盘存储(标准逻辑设备)。因此,远程存储设备806正接收和积聚对应于序号N-1的数据块818,同时,对应于在前序号(N-2)的数据块822正被写到远程存储设备806的磁盘存储,由数据单元824图示。在一些实施例中,为了写(但不必立即被写),数据块822的数据被标记,而数据块818的数据则未被标记。保存在数据单元824上的数据被示出为具有序号N-3,这表明数据单元824上的数据可以是由数据块822代表的所提交数据之后的一(或更多)代。
因而,在运行中,主机802将数据写到本地存储设备804,其被本地保存在数据单元812中并被积聚在数据块814中。一旦特定序号的所有数据已被积聚(本文别处描述),本地存储设备804递增序号。来自数据块816的、对应于小于当前序号的序号的数据从本地存储设备804经链路808传输给远程存储设备806。数据块822对应于已由本地存储设备804发送消息给远程存储设备806进行提交的序号的数据。数据块822的数据被写到远程存储设备的磁盘存储824,其包含来自对应于序号N-3的先前代的数据。
对于另一主机826,可能希望连接到本地存储设备804以从远程存储设备806读数据,所述数据在开始已由主机802提供给本地存储设备804并从本地存储设备804经链路808传输给远程存储设备806。对于主机802,可能还希望读数据。例如,在某些情况下,R1设备可能发生故障但可能希望主机802、826中的一个或两个继续以最新版本的数据进行工作,同时保持R2侧的一致性。应注意,想要的数据可能部分在本地磁盘单元812上、部分在N数据块814中、部分在N-1数据块816、818中,部分在N-2数据块822中,及部分在远程存储设备806的磁盘单元824上。在此的对读数据的描述可应用于读数据的主机802和/或读数据的其它主机826。
参考图18,流程图850示出了连同主机802、826之一或二者从R2设备806读数据所执行的步骤。处理开始于第一步骤852,其确定想要的数据(正被读的数据)是否在R1设备的高速缓存器中。应注意,如果所有想要的数据均在R1设备804的高速缓存器中,则不必从R2设备806获得任何数据。如果在步骤852确定数据在R1设备的高速缓存器中,则控制从步骤852转到步骤854,响应于读请求,R1设备804的高速缓存器中的数据被返回。在步骤854之后,处理结束。
如果在测定步骤852确定所有所请求的数据不在R1设备804的高速缓存器中,则控制从步骤852转到测定步骤856,其确定是否部分数据在对应于N数据块814及N-1数据块816之一或二者的磁轨的槽中。如果是,则控制从步骤856转到步骤862,产生临时槽,用于接收从R2设备读的数据(如下述)。在步骤862之后是步骤864,对应于N和N-1数据块814、816之一或二者的槽被锁定。在步骤864锁定槽阻止数据在执行读过程时改变。
在步骤864之后是测定步骤874,其确定是否所有想要的数据均在N和N-1数据块814、816之一或二者中。如果否,则控制从步骤874转到步骤876,R1设备804发送读请求给R2设备806。在R2设备806处处理读请求将在下文中详细描述。在步骤876之后是步骤878,来自R2设备806的数据被R1设备804读。如果已在步骤862产生临时槽,则来自R2设备806的数据被读进临时槽。否则,数据可被直接接收到R1设备804。
在步骤878之后或步骤874之后(如果所有想要的数据被发现在N和N-1数据块814、816之一或二者中)是步骤882,N数据块814、R1设备804上的N-1数据块816、R2设备806返回的数据被合并。应注意,N-1数据(如果有)被合并在临时槽(其较旧)中的任何数据的上面,且合并的结果被合并在任何N数据的上面,其是最新的数据。将第一组数据合并在第二组数据的上面意味着第一组数据优先于第二组数据,从而来自第一组的数据盖写第二组的相应数据。
在步骤882合并数据类似于图9的流程图300的合并步骤314。应注意,来自磁轨的不同部分的数据与不同序号相关联并位于R1设备804和/或R2设备806之上是可能的。因而,步骤882处理所有缓存槽中的所有数据的合并以在临时槽中提供单磁轨价值的数据。
在步骤882之后是步骤884,合并后的数据被返回到发出读指令的主机。在步骤884之后是步骤886,在读过程期间被锁定的任何槽均被解锁。在步骤886之后是步骤888,在读过程期间被分配的任何临时槽均被解除分配。在步骤888之后,处理结束。
在一些实施例中,在步骤864之后或测定步骤856之后(如果在N和N-1数据块814、816中没有数据)放弃测定步骤874并总是执行步骤876是可能的。这如流程图850中从步骤864到步骤876的另一通路892所示。
参考图19A,流程图900示出了在R2设备806处处理读请求的一实施例,读请求由R1设备804提供。处理开始于第一步骤902,N-2数据块822(其已被提交)中的任何数据被恢复到磁盘单元824。即,如果在N-2数据块822有任何数据要被读,则在步骤902数据被恢复到磁盘单元824。
在步骤902之后是步骤903,其确定在N-1数据块818中是否有任何数据要被读。如果是,控制从步骤903转到步骤904,在R2设备806上分配临时槽。在步骤904之后是步骤906,磁盘单元824的数据被复制到在步骤904分配的临时槽。在步骤906之后是步骤908,临时槽中的数据与R2设备806上N-1数据块818中的任何对应数据进行合并。
在步骤908之后是步骤912,在步骤908合并数据的结果被返回给R1设备804。注意,然而,如果在步骤903确定N-1数据块818中没有数据要读,步骤912也可被到达,在这种情况下,磁盘的数据在步骤912被返回。在步骤912之后是步骤914,在步骤904分配的槽(如果执行步骤904的话)被解除分配。在步骤914之后,处理结束。
参考图19B,流程图920示出了在R2设备806处处理读请求的另一实施例。处理开始于第一步骤921,其确定N-1和N-2数据块818、822中是否有任何数据要被读。如果是,控制从步骤921转到步骤922,分配临时槽。在步骤922之后是步骤924,磁盘单元824的数据被复制到在步骤922分配的临时槽。在步骤924之后是步骤926,N-2数据块822的数据与临时槽中的数据合并。在步骤926之后是步骤928,R2设备806上的N-1数据块818的数据与临时槽合并。
在步骤928之后是步骤932,所有合并到临时槽中的结果从R2设备806返回给R1设备804。应注意,然而,如果在步骤921确定在N-1和N-2数据块818、822中没有数据要读,步骤932也可被到达,在这种情况下,磁盘的数据在步骤932被返回。在步骤932之后是步骤934,在步骤922分配的临时槽(如果步骤922被执行的话)被解除分配。在步骤934之后,处理结束。
在本发明已连同多个实施例进行公开的同时,其修改对本领域技术人员而言应是显而易见的。因此,本发明的实质和范围在下述权利要求中提出。
Claims (36)
1、排序数据写的方法,包括:
主存储设备接收多个数据写;
主存储设备将第一时间之后及第二时间之前开始的数据写与第一数据块关联;
主存储设备将第二时间之后开始的数据写与不同于第一数据块的第二数据块关联;及
在完成与第一数据块相关联的所有写之后,主存储设备开始将与第一数据块关联的写传输给辅助存储设备。
2、根据权利要求1所述的方法,还包括:
在主存储设备将与第一数据块关联的所有写传输给辅助存储设备之后,主存储设备发送消息给辅助存储设备;及
响应于从主存储设备接收消息,辅助存储设备保存与第一数据块关联的数据写。
3、根据权利要求2所述的方法,还包括:
在保存与第一数据块相关联的所有数据写之后,辅助存储设备发送确认给主存储设备。
4、根据权利要求3所述的方法,还包括:
在发送消息给辅助存储设备之后,主存储设备暂停传输数据给辅助存储设备。
5、根据权利要求4所述的方法,还包括:
在暂停传输数据给随后的数据写之后,主存储设备将数据写与第三数据块关联,第三数据块不同于第一和第二数据块。
6、根据权利要求5所述的方法,还包括:
响应于辅助存储设备发送确认给主存储设备,主存储设备重新开始传输数据给辅助存储设备。
7、根据权利要求1所述的方法,还包括:
提供数据写给主存储设备的缓存槽。
8、根据权利要求7所述的方法,还包括:
响应于与第二数据块相关联的数据写对应于已经与第一数据块相关联的缓存槽,将数据复制到新的缓存槽。
9、根据权利要求7所述的方法,还包括:
主存储设备使用第一指针列表指向与第一数据块相关联的数据写的缓存槽;及
主存储设备使用第二指针列表指向与第二数据块相关联的数据写的缓存槽。
10、根据权利要求9所述的方法,还包括:
在每一槽的标题部分中提供高速缓存标签字段,高速缓存标签字段包括与槽相关联的序号,其中序号对应于特定的数据块。
11、根据权利要求10所述的方法,其中高速缓存标签字段还包括密码字段,其在槽第一次使用时被写入。
12、根据权利要求11所述的方法,还包括:
响应于槽不再被使用,清零密码字段。
13、根据权利要求7所述的方法,还包括:
主存储设备使用缓存槽的第一只缓存虚拟设备对应于与第一数据块相关联的数据写;及
主存储设备使用缓存槽的第二只缓存虚拟设备对应于与第二数据块相关联的数据写。
14、将已排序的写保存到远程存储设备的方法,包括:
接收用于与第一数据块相关联的数据的消息;
响应于与不同于所述第一数据块的第二数据块相关联的数据尚未被保存,等待与第二数据块相关联的数据被保存;及
开始与第一数据块相关联的数据的存储。
15、根据权利要求14所述的方法,还包括:
确认消息。
16、根据权利要求14所述的方法,还包括:
连同接收与第一数据块相关联的数据,建立被修改的槽的列表。
17、根据权利要求16所述的方法,其中开始与第一数据块相关联的数据的存储包括遍历被修改的槽的列表。
18、根据权利要求1所述的方法,其中接收多个数据写包括从主机接收多个数据写。
19、根据权利要求1所述的方法,还包括:
在主存储设备将与第一数据块相关联的所有写传输给辅助存储设备之后,主存储设备发送消息给辅助存储设备。
20、排序数据写的计算机软件,包括:
将第一时间之后及第二时间之前开始的数据写与第一数据块关联的可执行代码;
将第二时间之后开始的数据写与不同于第一数据块的第二数据块关联的可执行代码;及
在完成与第一数据块相关联的所有写之后,开始将与第一数据块关联的写传输给存储设备的可执行代码。
21、根据权利要求20所述的计算机软件,还包括:
在传输与第一数据块关联的所有写之后,发送消息给存储设备的可执行代码;及
在发送消息给存储设备之后暂停传输数据给存储设备的可执行代码。
22、根据权利要求21所述的计算机软件,还包括:
在暂停传输数据给随后的数据写之后,将数据写与第三数据块关联的可执行代码,其中第三数据块不同于第一和第二数据块。
23、根据权利要求22所述的计算机软件,还包括:
响应于存储设备确认处理消息,重新开始传输数据给存储设备的可执行代码。
24、根据权利要求20所述的计算机软件,还包括:
提供数据写给缓存槽的可执行代码。
25、根据权利要求24所述的计算机软件,还包括:
响应于与第二数据块相关联的数据写对应于已经与第一数据块相关联的缓存槽,将数据复制到新的缓存槽的可执行代码。
26、根据权利要求24所述的计算机软件,还包括:
使用第一指针列表指向与第一数据块相关联的数据写的缓存槽的可执行代码;及
使用第二指针列表指向与第二数据块相关联的数据写的缓存槽的可执行代码。
27、根据权利要求26所述的计算机软件,还包括:
在每一槽的标题部分中提供高速缓存标签字段的可执行代码,高速缓存标签字段包括与槽相关联的序号,其中序号对应于特定的数据块。
28、根据权利要求27所述的计算机软件,其中高速缓存标签字段还包括密码字段,其在槽第一次使用时被写入。
29、根据权利要求28所述的计算机软件,还包括:
响应于槽不再被使用而清零密码字段的可执行代码。
30、根据权利要求24所述的计算机软件,还包括:
使用缓存槽的第一只缓存虚拟设备对应于与第一数据块相关联的数据写的可执行代码;及
使用缓存槽的第二只缓存虚拟设备对应于与第二数据块相关联的数据写的可执行代码。
31、根据权利要求20所述的计算机软件,还包括:
在传输与第一数据块相关联的所有写之后发送消息给存储设备的可执行代码。
32、将已排序的写保存到远程存储设备的计算机软件,包括:
接收用于与第一数据块相关联的数据的消息的可执行代码;
等待与不同于第一数据块的第二数据块相关联的数据被保存的可执行代码;及
在第二数据块已被保存之后开始与第一数据块相关联的数据的存储的可执行代码。
33、根据权利要求32所述的计算机软件,还包括:
确认消息的可执行代码。
34、根据权利要求32所述的计算机软件,还包括:
连同接收与第一数据块相关联的数据,建立被修改的槽的列表的可执行代码。
35、根据权利要求34所述的计算机软件,其中开始与第一数据块相关联的数据的存储的可执行代码包括遍历被修改的槽的列表的可执行代码。
36、数据存储设备,包括:
至少一包含数据的磁盘驱动器;
至少一连接到至少一磁盘驱动器的主机适配器,其接收将要保存在至少一磁盘驱动器上的数据;及
至少一远程适配器,其连接到至少一磁盘驱动器及至少一主机适配器,其传输数据给远程存储设备,其中,响应于至少一主机适配器进行的数据接收,在第一时间之后及第二时间之前开始的数据写与第一数据块关联,在第二时间之后开始的数据写与不同于第一数据块的第二数据块关联,在完成与第一数据块相关联的所有写之后,开始将与第一数据块相关联的写传输给远程存储设备。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/396,786 | 2003-03-25 | ||
US10/396,786 US6898685B2 (en) | 2003-03-25 | 2003-03-25 | Ordering data writes from a local storage device to a remote storage device |
US10/606,699 | 2003-06-26 | ||
US10/607,041 | 2003-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1764904A true CN1764904A (zh) | 2006-04-26 |
CN100410895C CN100410895C (zh) | 2008-08-13 |
Family
ID=32988849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800080829A Expired - Lifetime CN100410895C (zh) | 2003-03-25 | 2004-02-06 | 排序数据写的方法 |
Country Status (2)
Country | Link |
---|---|
US (4) | US6898685B2 (zh) |
CN (1) | CN100410895C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107491364A (zh) * | 2017-08-25 | 2017-12-19 | 长沙曙通信息科技有限公司 | 一种远程数据复制服务质量实现方法 |
CN107526535A (zh) * | 2016-06-22 | 2017-12-29 | 伊姆西公司 | 用于管理存储系统的方法和系统 |
Families Citing this family (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1379949A4 (en) * | 2001-03-05 | 2006-09-27 | Sanpro Systems Inc | SYSTEM AND METHOD FOR ASYNCHRONOUS REPLICATION FOR MEMORY ZONE NETWORKS |
US7113945B1 (en) * | 2002-04-10 | 2006-09-26 | Emc Corporation | Virtual storage device that uses volatile memory |
US7340489B2 (en) * | 2002-04-10 | 2008-03-04 | Emc Corporation | Virtual storage devices |
US7103727B2 (en) | 2002-07-30 | 2006-09-05 | Hitachi, Ltd. | Storage system for multi-site remote copy |
US6938184B2 (en) * | 2002-10-17 | 2005-08-30 | Spinnaker Networks, Inc. | Method and system for providing persistent storage of user data |
US7114033B2 (en) * | 2003-03-25 | 2006-09-26 | Emc Corporation | Handling data writes copied from a remote data storage device |
US7178055B2 (en) * | 2003-06-06 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | Method and system for ensuring data consistency after a failover event in a redundant data storage system |
US7152182B2 (en) * | 2003-06-06 | 2006-12-19 | Hewlett-Packard Development Company, L.P. | Data redundancy system and method |
US7165187B2 (en) * | 2003-06-06 | 2007-01-16 | Hewlett-Packard Development Company, L.P. | Batch based distributed data redundancy |
US7120825B2 (en) * | 2003-06-06 | 2006-10-10 | Hewlett-Packard Development Company, L.P. | Adaptive batch sizing for asynchronous data redundancy |
US20040260735A1 (en) * | 2003-06-17 | 2004-12-23 | Martinez Richard Kenneth | Method, system, and program for assigning a timestamp associated with data |
JP4021823B2 (ja) | 2003-09-01 | 2007-12-12 | 株式会社日立製作所 | リモートコピーシステム及びリモートコピーの方法 |
DE112004002315B4 (de) * | 2003-12-01 | 2016-11-10 | Emc Corp. | Virtuell geordnete Schreibeinträge für Vielfach-Speichervorrichtungen |
US7054883B2 (en) * | 2003-12-01 | 2006-05-30 | Emc Corporation | Virtual ordered writes for multiple storage devices |
US7228456B2 (en) * | 2003-12-01 | 2007-06-05 | Emc Corporation | Data recovery for virtual ordered writes for multiple storage devices |
US7437389B2 (en) * | 2004-03-10 | 2008-10-14 | Hitachi, Ltd. | Remote copy system |
US7085788B2 (en) * | 2003-12-03 | 2006-08-01 | Hitachi, Ltd. | Remote copy system configured to receive both a write request including a write time and a write request not including a write time. |
US7724599B2 (en) * | 2003-12-03 | 2010-05-25 | Hitachi, Ltd. | Remote copy system |
US8032726B2 (en) * | 2003-12-03 | 2011-10-04 | Hitachi, Ltd | Remote copy system |
US7478211B2 (en) | 2004-01-09 | 2009-01-13 | International Business Machines Corporation | Maintaining consistency for remote copy using virtualization |
US7451283B2 (en) * | 2004-01-09 | 2008-11-11 | International Business Machines Corporation | Method, system, and program for copying tracks between a primary storage and secondary storage |
US20050154786A1 (en) * | 2004-01-09 | 2005-07-14 | International Business Machines Corporation | Ordering updates in remote copying of data |
JP4477370B2 (ja) * | 2004-01-30 | 2010-06-09 | 株式会社日立製作所 | データ処理システム |
US7363541B2 (en) * | 2004-02-23 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Command management using task attributes |
JP4422519B2 (ja) * | 2004-03-18 | 2010-02-24 | 株式会社日立製作所 | 情報処理システム |
JP4549709B2 (ja) * | 2004-03-23 | 2010-09-22 | 株式会社日立製作所 | ストレージ装置 |
JP4477950B2 (ja) * | 2004-07-07 | 2010-06-09 | 株式会社日立製作所 | リモートコピーシステム及び記憶装置システム |
JP4915775B2 (ja) * | 2006-03-28 | 2012-04-11 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのリモートコピー制御方法 |
US7330861B2 (en) | 2004-09-10 | 2008-02-12 | Hitachi, Ltd. | Remote copying system and method of controlling remote copying |
US7519851B2 (en) * | 2005-02-08 | 2009-04-14 | Hitachi, Ltd. | Apparatus for replicating volumes between heterogenous storage systems |
US20070074038A1 (en) * | 2005-09-29 | 2007-03-29 | International Business Machines Corporation | Method, apparatus and program storage device for providing a secure password manager |
JP4790377B2 (ja) * | 2005-11-07 | 2011-10-12 | 株式会社日立製作所 | ストレージサブシステムのボリューム複製方法 |
US7430646B2 (en) * | 2006-03-31 | 2008-09-30 | Emc Corporation | Planned switchover in connection with triangular asynchronous replication |
US20070234105A1 (en) * | 2006-03-31 | 2007-10-04 | Quinn Brett A | Failover to asynchronous backup site in connection with triangular asynchronous replication |
US7647525B2 (en) * | 2006-03-31 | 2010-01-12 | Emc Corporation | Resumption of operations following failover in connection with triangular asynchronous replication |
US8843783B2 (en) * | 2006-03-31 | 2014-09-23 | Emc Corporation | Failover to backup site in connection with triangular asynchronous replication |
US7581136B2 (en) * | 2006-05-19 | 2009-08-25 | Hitachi, Ltd. | Method and apparatus for data recovery |
US8145865B1 (en) | 2006-09-29 | 2012-03-27 | Emc Corporation | Virtual ordered writes spillover mechanism |
US7624229B1 (en) | 2006-09-29 | 2009-11-24 | Emc Corporation | Spillover slot |
US8010550B2 (en) * | 2006-11-17 | 2011-08-30 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US7711678B2 (en) * | 2006-11-17 | 2010-05-04 | Microsoft Corporation | Software transaction commit order and conflict management |
US8024714B2 (en) | 2006-11-17 | 2011-09-20 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US7860847B2 (en) * | 2006-11-17 | 2010-12-28 | Microsoft Corporation | Exception ordering in contention management to support speculative sequential semantics |
US7752404B2 (en) * | 2006-12-29 | 2010-07-06 | Emc Corporation | Toggling between concurrent and cascaded triangular asynchronous replication |
US7734884B1 (en) | 2006-12-29 | 2010-06-08 | Emc Corporation | Simultaneous concurrent and cascaded triangular asynchronous replication |
US7779291B2 (en) * | 2006-12-29 | 2010-08-17 | Emc Corporation | Four site triangular asynchronous replication |
US7680997B1 (en) | 2006-12-29 | 2010-03-16 | Emc Corporation | Data recovery simulation |
US7751398B1 (en) | 2007-03-28 | 2010-07-06 | Emc Corporation | Techniques for prioritization of messaging traffic |
JP2009003499A (ja) * | 2007-06-19 | 2009-01-08 | Hitachi Ltd | ファイル共有システム及びファイル共有システムを用いて単一の論理的ディレクトリ構成を生成する方法 |
US8146085B2 (en) | 2007-06-25 | 2012-03-27 | Microsoft Corporation | Concurrent exception handling using an aggregated exception structure |
US7861072B2 (en) | 2007-06-25 | 2010-12-28 | Microsoft Corporation | Throwing one selected representative exception among aggregated multiple exceptions of same root cause received from concurrent tasks and discarding the rest |
US7899999B2 (en) * | 2007-06-27 | 2011-03-01 | Microsoft Corporation | Handling falsely doomed parents of nested transactions |
US7890707B2 (en) | 2007-06-27 | 2011-02-15 | Microsoft Corporation | Efficient retry for transactional memory |
US7991967B2 (en) * | 2007-06-29 | 2011-08-02 | Microsoft Corporation | Using type stability to facilitate contention management |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US7475280B1 (en) * | 2008-02-24 | 2009-01-06 | International Business Machines Corporation | Active-active server for high availability of data replication management application |
US8335899B1 (en) | 2008-03-31 | 2012-12-18 | Emc Corporation | Active/active remote synchronous mirroring |
US8468320B1 (en) * | 2008-06-30 | 2013-06-18 | Symantec Operating Corporation | Scalability of data deduplication through the use of a locality table |
US9665502B1 (en) | 2008-06-30 | 2017-05-30 | EMC IP Holding Company LLC | Virtual I/O hardware |
JP4774085B2 (ja) | 2008-07-31 | 2011-09-14 | 富士通株式会社 | ストレージシステム |
US8566549B1 (en) | 2008-12-31 | 2013-10-22 | Emc Corporation | Synchronizing performance requirements across multiple storage platforms |
US8966211B1 (en) | 2011-12-19 | 2015-02-24 | Emc Corporation | Techniques for dynamic binding of device identifiers to data storage devices |
US8898444B1 (en) | 2011-12-22 | 2014-11-25 | Emc Corporation | Techniques for providing a first computer system access to storage devices indirectly through a second computer system |
US8862541B1 (en) * | 2012-12-26 | 2014-10-14 | Emc Corporation | N-site asynchronous replication |
WO2014106871A1 (en) * | 2013-01-07 | 2014-07-10 | Hitachi, Ltd. | Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof |
US10203904B1 (en) * | 2013-09-24 | 2019-02-12 | EMC IP Holding Company LLC | Configuration of replication |
US9606870B1 (en) | 2014-03-31 | 2017-03-28 | EMC IP Holding Company LLC | Data reduction techniques in a flash-based key/value cluster storage |
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 |
US10146648B1 (en) * | 2016-09-30 | 2018-12-04 | EMC IP Holding Company LLC | Preserving disaster recovery protection for a data storage object |
US10521344B1 (en) * | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
US10409520B1 (en) | 2017-04-27 | 2019-09-10 | EMC IP Holding Company LLC | Replication of content-based storage using address space slices |
US10503609B1 (en) | 2017-04-27 | 2019-12-10 | EMC IP Holding Company LLC | Replication link smoothing using historical data |
US10445295B1 (en) | 2017-07-28 | 2019-10-15 | EMC IP Holding Company LLC | Task-based framework for synchronization of event handling between nodes in an active/active data storage system |
US10860239B2 (en) | 2018-05-04 | 2020-12-08 | EMC IP Holding Company LLC | Fan-out asynchronous replication caching |
US11360688B2 (en) | 2018-05-04 | 2022-06-14 | EMC IP Holding Company LLC | Cascading snapshot creation in a native replication 3-site configuration |
US10853221B2 (en) | 2018-05-04 | 2020-12-01 | EMC IP Holding Company LLC | Performance evaluation and comparison of storage systems |
US10705753B2 (en) | 2018-05-04 | 2020-07-07 | EMC IP Holding Company LLC | Fan-out asynchronous replication logical level caching |
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 |
US11593396B2 (en) | 2020-09-23 | 2023-02-28 | EMC IP Holding Company LLC | Smart data offload sync replication |
US11281407B1 (en) | 2020-09-23 | 2022-03-22 | EMC IP Holding Company LLC | Verified write command in active-active replication |
CN112783895B (zh) * | 2021-01-11 | 2023-11-10 | 中国科学院软件研究所 | 面向软件定义卫星的数据库访问处理方法、装置及设备 |
FR3126249B1 (fr) * | 2021-08-18 | 2023-07-07 | Continental Automotive | Procédé, dispositif et système d’autorisation d’accès à un véhicule partagé |
US11921691B2 (en) * | 2022-06-20 | 2024-03-05 | Google Llc | Low latency demultiplexer for propagating ordered data to multiple sinks |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5206939A (en) | 1990-09-24 | 1993-04-27 | Emc Corporation | System and method for disk mapping and data retrieval |
US5345575A (en) * | 1991-09-26 | 1994-09-06 | Hewlett-Packard Company | Write optimized disk storage device |
US5381539A (en) | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5555371A (en) * | 1992-12-17 | 1996-09-10 | International Business Machines Corporation | Data backup copying with delayed directory updating and reduced numbers of DASD accesses at a back up site using a log structured array data storage |
US5623599A (en) * | 1994-07-29 | 1997-04-22 | International Business Machines Corporation | Method and apparatus for processing a synchronizing marker for an asynchronous remote data copy |
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 |
US5889935A (en) * | 1996-05-28 | 1999-03-30 | Emc Corporation | Disaster control features for remote data mirroring |
US5857208A (en) | 1996-05-31 | 1999-01-05 | Emc Corporation | Method and apparatus for performing point in time backup operation in a computer system |
US5778394A (en) | 1996-12-23 | 1998-07-07 | Emc Corporation | Space reclamation system and method for use in connection with tape logging system |
US6003114A (en) * | 1997-06-17 | 1999-12-14 | Emc Corporation | Caching system and method providing aggressive prefetch |
US6192408B1 (en) * | 1997-09-26 | 2001-02-20 | Emc Corporation | Network file server sharing local caches of file access information in data processors assigned to respective file systems |
US6157991A (en) * | 1998-04-01 | 2000-12-05 | Emc Corporation | Method and apparatus for asynchronously updating a mirror of a source device |
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 |
US7117386B2 (en) * | 2002-08-21 | 2006-10-03 | Emc Corporation | SAR restart and going home procedures |
US7024528B2 (en) * | 2002-08-21 | 2006-04-04 | Emc Corporation | Storage automated replication processing |
-
2003
- 2003-03-25 US US10/396,786 patent/US6898685B2/en not_active Expired - Lifetime
-
2004
- 2004-02-06 CN CNB2004800080829A patent/CN100410895C/zh not_active Expired - Lifetime
-
2005
- 2005-03-01 US US11/069,373 patent/US7000086B2/en not_active Expired - Lifetime
-
2006
- 2006-01-09 US US11/327,961 patent/US7197616B2/en not_active Expired - Lifetime
- 2006-08-11 US US11/503,338 patent/US7383408B2/en not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526535A (zh) * | 2016-06-22 | 2017-12-29 | 伊姆西公司 | 用于管理存储系统的方法和系统 |
CN107526535B (zh) * | 2016-06-22 | 2020-07-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和系统 |
CN107491364A (zh) * | 2017-08-25 | 2017-12-19 | 长沙曙通信息科技有限公司 | 一种远程数据复制服务质量实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US7197616B2 (en) | 2007-03-27 |
US7000086B2 (en) | 2006-02-14 |
US20060112248A1 (en) | 2006-05-25 |
US20040193820A1 (en) | 2004-09-30 |
US20050149666A1 (en) | 2005-07-07 |
US6898685B2 (en) | 2005-05-24 |
US7383408B2 (en) | 2008-06-03 |
CN100410895C (zh) | 2008-08-13 |
US20060277381A1 (en) | 2006-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1764904A (zh) | 虚拟排序的写 | |
CN1886743A (zh) | 对多存储设备的虚拟排序的写 | |
CN101031891A (zh) | 虚拟排序的写 | |
CN1311365C (zh) | 分布式共享磁盘系统中的磁盘写操作 | |
CN1308851C (zh) | 数据处理系统中执行远程复制的方法和存储数据的方法 | |
CN1149480C (zh) | 文件存储装置 | |
CN1114859C (zh) | 数据共享方法和计算机体系结构 | |
CN1137439C (zh) | 容错计算机系统 | |
CN100338582C (zh) | 存储装置系统 | |
CN1291320C (zh) | 保存大容量存储系统的所选数据的快照 | |
CN1729455A (zh) | 数据处理系统内从失败的恢复 | |
CN1809828A (zh) | 用于恢复数据库中单元的系统和方法 | |
CN1536485A (zh) | 数据维护、备份和恢复系统及方法 | |
CN1690973A (zh) | 远程复制方法及远程复制系统 | |
CN1648867A (zh) | 数据处理系统 | |
CN101051286A (zh) | 存储系统 | |
CN101055537A (zh) | 存储系统以及数据管理方法 | |
CN1350674A (zh) | 用来实现共用磁盘阵列管理功能的方法和系统 | |
CN1908907A (zh) | 改善资料写入效率的方法以及实施此方法的子系统与系统 | |
CN101075203A (zh) | 存储装置以及其恢复卷生成方法 | |
CN1773470A (zh) | 库系统、虚拟库装置、缓存器恢复方法及可机读记录介质 | |
CN1788256A (zh) | 用于增量虚拟复制的方法、系统和程序 | |
CN1764901A (zh) | 用于将计算机中的文件、目录和面向应用的文件的至少一个恢复成先前状态的设备 | |
JP2005242403A (ja) | 計算機システム | |
CN1524224A (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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20080813 |
|
CX01 | Expiry of patent term |