DE112004002315B4 - Virtual ordered write entries for multiple storage devices - Google Patents

Virtual ordered write entries for multiple storage devices Download PDF

Info

Publication number
DE112004002315B4
DE112004002315B4 DE112004002315.7T DE112004002315T DE112004002315B4 DE 112004002315 B4 DE112004002315 B4 DE 112004002315B4 DE 112004002315 T DE112004002315 T DE 112004002315T DE 112004002315 B4 DE112004002315 B4 DE 112004002315B4
Authority
DE
Germany
Prior art keywords
data
storage device
slot
storage devices
host
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.)
Active
Application number
DE112004002315.7T
Other languages
German (de)
Other versions
DE112004002315T5 (en
Inventor
Douglas E. LeCrone
Kevin C. Heasley
Vadim Longinov
Mark J. Halstead
David Meiri
Benjamin W. Yoder
William P. Thibodeau
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
Priority claimed from US10/724,670 external-priority patent/US7228456B2/en
Priority claimed from US10/724,669 external-priority patent/US7054883B2/en
Application filed by EMC Corp filed Critical EMC Corp
Publication of DE112004002315T5 publication Critical patent/DE112004002315T5/en
Application granted granted Critical
Publication of DE112004002315B4 publication Critical patent/DE112004002315B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0617Improving the reliability of storage systems in relation to availability
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Abstract

Verfahren zum Ordnen von Datenschreibeinträgen, mit den folgenden Schritten: wenigstens eine einer Gruppe von primären Speichervorrichtungen empfängt eine erste Vielzahl von Datenschreibeinträgen die vor einer ersten Zeit veranlasst werden; es wird ein Sendezyklus-Schaltvorgang zu einem neuen Sendezyklus für die mindestens eine der Gruppen der primären Speichervorrichtungen veranlaßt, wobei die erste Vielzahl der Datenschreibeinträge einem bestimmten Sendezyklus für die mindestens eine der primären Speichervorrichtungen in der Gruppe zugeordnet ist; die wenigstens eine aus der Gruppe der primären Speichervorrichtungen empfängt eine zweite Vielzahl an Schreibeinträgen und zwar nach der Initialisierung des Sendezyklus-Schaltvorganges, wobei alle Schreibeinträge der zweiten Vielzahl der Schreibeinträge einem Sendezyklus zugeordnet werden, der von dem speziellen Sendezyklus für die mindestens eine der primären Speichervorrichtungen verschieden ist und die zweite Vielzahl von Schreibeinträgen nach der genannten ersten Zeit veranlasst wird; wobei die Schreibeinträge zu der Gruppe, die nach der Initialisierung des Sendezyklus-Schaltvorganges begonnen haben, bis nach der Vervollständigung des Sendezyklus-Schaltvorganges nicht vervollständigt werden; und nach der Vervollständigung des Sendezyklus-Schaltvorganges initiiert die mindestens eine der primären Speichervorrichtungen der Gruppe einen Transfer der ersten Vielzahl der Schreibeinträge zu einer entsprechenden sekundären Speichervorrichtung und wobei ein Verursachen des Sendezyklus-Schaltvorganges folgendes enthält: Abwarten einer vorbestimmten Zeitdauer; Bestimmen, ob alle primären Speichervorrichtungen der Gruppe der Speichervorrichtungen für den Schaltvorgang bereit sind; und Senden eines ersten Befehls zu jeder der primären Speichervorrichtungen der Gruppe, um einen Sendezyklusschaltvorgang zu bewirken.A method of ordering data write entries, comprising the steps of: at least one of a group of primary storage devices receiving a first plurality of data write entries made a first time; a transmit cycle switch is caused to a new send cycle for the at least one of the groups of primary storage devices, the first plurality of data write entries being associated with a particular send cycle for the at least one of the primary storage devices in the group; the at least one of the group of primary storage devices receives a second plurality of write entries after initialization of the transmit cycle switch, wherein all write entries of the second plurality of write entries are associated with a transmit cycle from the particular transmit cycle for the at least one of the primary storage devices is different and causes the second plurality of write entries after said first time; wherein the write entries to the group which started after the transmission cycle switching has been initialized are not completed until after the completion of the transmission cycle switching operation; and after completion of the transmit cycle switching operation, the at least one of the primary storage devices of the group initiates transfer of the first plurality of write entries to a corresponding secondary storage device, and wherein causing the transmit cycle switch comprises: waiting a predetermined amount of time; Determining if all the primary storage devices of the group of storage devices are ready for the switching operation; and sending a first command to each of the primary storage devices of the group to effect a send cycle switch.

Description

Hintergrund der ErfindungBackground of the invention

1. Technisches Gebiet1. Technical area

Die vorliegende Anmeldung betrifft Computerspeichervorrichtungen und spezieller das Gebiet der Übertragung von Daten zwischen Speichervorrichtungen.The present application relates to computer storage devices, and more particularly to the field of transferring data between storage devices.

2. Beschreibung des Standes der Technik2. Description of the Related Art

Host-Prozessorsysteme können Daten speichern und wieder auffinden und zwar unter Verwendung einer Speichervorrichtung, die eine Vielzahl an Host-Interface-Einheiten (Host-Adapter), Plattenlaufwerke und Platten-Interface-Einheiten (Plattenadapter) enthält. Solche Speichervorrichtungen werden beispielsweise von der EMC Corporation of Hopkinton, Massachusetts geliefert und sind in dem US Patent Nr. 5,206,939 von Yanai et al., dem US Patent Nr. 5,778,394 von Galtzur et al., dem US Patent Nr. 5,845,147 von Vishlitzky et al. und dem US Patent Nr. 5,857,208 von Ofek offenbart. Die Host-Systeme greifen auf die Speichervorrichtung über eine Vielzahl von Kanälen zu, die damit vorgesehen sind. Die Host-Systeme liefern Daten und Zugriff-Steuerinformationen über die Kanäle zu der Speichervorrichtung und die Speichervorrichtung liefert Daten zu den Host-Systemen über die Kanäle. Die Host-Systeme adressieren die Plattenlaufwerke der Speichervorrichtung nicht direkt, sondern realisieren einen Zugriff, der bei den Host-Systemen in Form einer Vielzahl von logischen Platteneinheiten erscheint. Die logischen Platteneinheiten können den tatsächlichen Plattenlaufwerken entsprechen oder auch nicht. Die Vielfach-Host-Systeme erhalten die Möglichkeit auf die einzelne Speichervorrichtungseinheit zuzugreifen, wobei die Host-Systeme die darin gespeicherten Daten gemeinsam verwenden können.Host processor systems can store and retrieve data using a storage device containing a variety of host interface units (host adapters), disk drives, and disk interface units (disk adapters). Such storage devices are, for example, supplied by EMC Corporation of Hopkinton, Massachusetts, and are incorporated herein by reference U.S. Patent No. 5,206,939 by Yanai et al., the U.S. Patent No. 5,778,394 by Galtzur et al., the U.S. Patent No. 5,845,147 by Vishlitzky et al. and the U.S. Patent No. 5,857,208 revealed by Ofek. The host systems access the storage device via a plurality of channels provided therewith. The host systems provide data and access control information to the storage device through the channels, and the storage device provides data to the host systems through the channels. The host systems do not directly address the disk drives of the storage device, but implement an access that appears in the host systems in the form of a plurality of logical disk units. The logical disk units may or may not match the actual disk drives. The multiple host systems are given the ability to access the single storage device unit, and the host systems can share the data stored therein.

In einigen Fallen kann es wünschenswert sein, Daten von einer Speichervorrichtung zu einer anderen zu kopieren. Wenn ein Host Daten zu einer ersten Speichervorrichtung schreibt, kann es wünschenswert sein, dass die Daten zu einer zweiten Speichervorrichtung kopiert werden, die an einer verschiedenen Stelle vorgesehen ist, so dass dann, wenn in Desaster auftritt, durch welches die erste Speichervorrichtung nicht mehr betriebsfähig wird, der Host (oder ein anderer Host) den Betrieb wieder aufnehmen kann, und zwar unter Verwendung der Daten, die in der zweiten Speichervorrichtung gespeichert sind. Solch eine Fähigkeit wird beispielsweise durch das Remote Data Facility Produkt (RDF) realisiert, welches durch die EMC Corporation von Hopkinton, Massachusetts hergestellt wird. Mit Hilfe der RDF wird eine erste Speichervorrichtung, die als die ”primäre Speichervorrichtung” (oder ”R1”) bezeichnet wird, an den Host gekoppelt. Eine oder mehrere andere Speichervorrichtungen, die als ”sekundäre Speichervorrichtungen” (oder ”R2”) bezeichnet werden, empfangen Kopien der Daten, die zu der primären Speichervorrichtung durch den Host geschrieben wurden. Der Host interagiert direkt mit der primären Speichervorrichtung, jedoch können irgendwelche Datenänderungen, die an der primären Speichervorrichtung vorgenommen werden, automatisch auch bei einer oder bei mehreren der sekundären Speichervorrichtungen unter Verwendung von RDF realisiert werden. Die primären und sekundären Speichervorrichtungen können durch ein Datenverbindungsglied verbunden sein wie beispielsweise ein ESCON Link, ein Faserkanal-Link und/oder ein Gigabit Ethernet Link. Die RDF-Funktionalität kann mit Hilfe eines RDF-Adapters (RA) vereinfacht werden, der bei jeder der Speichervorrichtungen vorgesehen ist.In some cases, it may be desirable to copy data from one storage device to another. When a host writes data to a first storage device, it may be desirable for the data to be copied to a second storage device provided at a different location such that when disaster occurs, the first storage device becomes inoperable will allow the host (or other host) to resume operation using the data stored in the second storage device. Such a capability is realized, for example, by the Remote Data Facility Product (RDF), which is manufactured by the EMC Corporation of Hopkinton, Massachusetts. Using the RDF, a first storage device, referred to as the "primary storage device" (or "R1"), is coupled to the host. One or more other storage devices, referred to as "secondary storage devices" (or "R2"), receive copies of the data written to the primary storage device by the host. The host interacts directly with the primary storage device, however, any data changes made to the primary storage device can be automatically realized on one or more of the secondary storage devices using RDF. The primary and secondary storage devices may be connected by a data link such as an ESCON link, a Fiber Channel link, and / or a Gigabit Ethernet link. The RDF functionality can be simplified using an RDF adapter (RA) provided with each of the storage devices.

RDF ermöglicht einen synchronen Datentransfer und zwar dort, wo nach den Daten, die von einem Host zu der primären Speichervorrichtung geschrieben wurden, von der primären Speichervorrichtung zu einer sekundären Speichervorrichtung unter Verwendung von RDF übertragen werden, der Empfang durch die sekundäre Speichervorrichtung bestätigt wird und zwar gegenüber der primären Speichervorrichtung, die dann eine Schreibbestätigungsnachricht zu dem Host zurücksendet. In dem Synchronmodus empfängt somit der Host keine Schreibbestätigung von der primären Speichervorrichtung bis der RDF-Transfer zu der sekundären Speichervorrichtung vervollständigt worden ist und durch die sekundäre Speichervorrichtung bestätigt worden ist.RDF enables synchronous data transfer where, after the data written by a host to the primary storage device is transferred from the primary storage device to a secondary storage device using RDF, receipt by the secondary storage device is acknowledged to the primary storage device, which then returns a write acknowledgment message to the host. Thus, in the synchronous mode, the host does not receive a write acknowledgment from the primary storage device until the RDF transfer to the secondary storage device has been completed and acknowledged by the secondary storage device.

Ein Nachteil bei dem synchronen RDF-System besteht darin, dass die Latenz von jedem der Schreiboperationen erhöht wird und zwar aufgrund eines Wartevorgangs auf die Bestätigung des RDF-Transfers. Dieses Problem verstärkt sich, wenn eine lange Strecke zwischen der primären Speichervorrichtung und der sekundären Speichervorrichtung vorliegt; da Übertragungsverzögerungen auftreten, ferner eine Zeitverzögerung auftritt, um den RDF-Transfer durchzuführen und um dann auf eine Bestätigung zu warten, die zurückgelangt nachdem der Transfer vervollständigt worden ist, was nicht annehmbar ist.A disadvantage with the synchronous RDF system is that the latency of each of the write operations is increased due to a wait for acknowledgment of the RDF transfer. This problem is compounded when there is a long distance between the primary storage device and the secondary storage device; since transmission delays occur, there is also a time delay to perform the RDF transfer, and then to wait for an acknowledgment that will come back after the transfer has been completed, which is unacceptable.

Es ist auch möglich RDF in einem halbsynchronen Modus zu verwenden, in welchem Fall die Daten von dem Host zu der primären Speichervorrichtung geschrieben werden, die den Schreibvorgang bestätigt und zwar unmittelbar, woraufhin dann zur gleichen Zeit der Prozess der Übertragung der Daten zu der sekundären Speichervorrichtung beginnt. Somit überwindet für einen einzelnen Datentransfer dieses Schema einige der Nachteile bei der Verwendung des RDF im Synchronmodus.It is also possible to use RDF in a semi-synchronous mode, in which case the data is written by the host to the primary storage device confirming the write immediately and then at the same time the process of transferring the data to the secondary storage device starts. Thus, for a single data transfer, this scheme overcomes some of the disadvantages of using the RDF in synchronous mode.

Jedoch ermöglicht für den Zweck der Datenintegrität der halbsynchrone Übertragungsmodus nicht der primären Speichervorrichtung Daten zu der sekundären Speichervorrichtung zu übertragen, bis ein früherer Transfer durch die sekundäre Speichervorrichtung bestätigt worden ist. Somit werden die Flaschenhälse, die RDF in dem Synchronmodus zugeordnet sind, einfach durch eine Iteration verzögert, da der Transfer eines zweiten Betrages an Daten nicht stattfinden kann, bis der Transfer von früheren Daten durch die sekundäre Speichervorrichtung bestätigt oder anerkannt worden ist. However, for the purpose of data integrity, the half-synchronous transfer mode does not allow the primary storage device to transfer data to the secondary storage device until earlier transfer by the secondary storage device has been confirmed. Thus, the bottle necks associated with RDF in the synchronous mode are simply delayed by an iteration, since the transfer of a second amount of data can not take place until the transfer of previous data by the secondary storage device has been acknowledged or acknowledged.

Eine andere Möglichkeit besteht darin, den Host Daten zu der primären Speichervorrichtung in einem Asynchronmodus schreiben zu lassen und die primäre Speichervorrichtung zu veranlassen, Daten zu der sekundären Speichervorrichtung im Hintergrund zu kopieren. Das Kopieren im Hintergrund involviert ein Durchlaufen von jeder der Spuren der primären Speichervorrichtung sequenziell und, wenn bestimmt wird, dass ein bestimmter Block modifiziert worden ist und zwar seit dem letzten Mal, als der Block kopiert wurde, wird der Block von der primären Speichervorrichtung zu der sekundären Speichervorrichtung übertragen. Obwohl dieser Mechanismus das Latenzproblem mindern kann, welches mit dem synchronen und halbsynchronen Datentransfermodus verbunden ist, ergibt sich eine Schwierigkeit, da keine Garantie geboten wird eine Datenkonsistenz zwischen der primären und sekundären Speichervorrichtung zu erreichen. Wenn Probleme auftreten wie beispielsweise ein Ausfallen des primären Systems, kann das sekundäre System zu einem Ende gelangen und zwar mit Änderungen, die außerhalb der Ordnung liegen, welches dann die Daten unbrauchbar macht.Another possibility is to have the host write data to the primary storage device in an asynchronous mode and cause the primary storage device to copy data to the secondary storage device in the background. Background copying involves traversing each of the tracks of the primary storage device sequentially and, if it is determined that a particular block has been modified, since the last time the block was copied, the block becomes the one from the primary storage device transmitted secondary storage device. Although this mechanism can alleviate the latency problem associated with the synchronous and half-synchronous data transfer modes, there is a difficulty in providing no guarantee of data consistency between the primary and secondary storage devices. When problems occur, such as a failure of the primary system, the secondary system may end up with out-of-order changes which then renders the data unusable.

Eine vorgeschlagene Lösung für dieses Problem ist der Symmetrix Automated Replication (SAR) Prozess, der in der schwebenden US Patentanmeldung 10/224,918 und 10/225,021 beschrieben, die beide am 21. August 2002 eingereicht wurden. Der SAR-Prozess verwendet Vorrichtungen (BCV's), die logische Standardvorrichtungen spiegeln können. Eine BCV-Vorrichtung kann auch von deren logischer Standardvorrichtung gesplittet werden und zwar nachdem eine Spiegelung erfolgt ist und kann wieder integriert werden (das heißt als ein Spiegel wiederhergestellt werden) und zwar zu den logischen Standardvorrichtungen nach dem Splitten. Zusätzlich kann eine BCV unter Verwendung von RDF ferngespiegelt werden, in welchem Fall die BCV Datenänderungen, die bei dieser vorgenommen worden sind, verbreiten kann (und zwar unter Verwendung von BCV, welches als ein Spiegel wirkt) und zwar zu dem entfernt gelegenen BCV-Spiegel, wenn BCV von der entsprechenden logischen Standardvorrichtung abgesplittet wurde.One proposed solution to this problem is the Symmetrix Automated Replication (SAR) process described in pending US patent applications 10 / 224,918 and 10 / 225,021, both of which were filed on August 21, 2002. The SAR process uses devices (BCVs) that can mirror standard logical devices. A BCV device may also be split from its standard logical device after mirroring has occurred and may be re-integrated (that is, restored as a mirror) to the standard logical devices after splitting. Additionally, BCV may be remotely mirrored using RDF, in which case the BCV may propagate data changes made thereto (using BCV acting as a mirror) to the remote BCV mirror when BCV has been split off the corresponding standard logical device.

Jedoch erfordert die Verwendung des SAR-Prozesses einen signifikanten Überhang eines kontinuierlichen Splitvorgangs und Wiederintegriervorgangs der BCVs. Der SAR-Prozess verwendet auch eine Host-Steuerung und Management, welches auf der Steuerung des Host, der in Betrieb ist, basiert. Zusätzlich kann die Zykluszeit für eine praktische Implementierung eines SAR-Prozesses in der Größenordnung von zwanzig bis dreißig Minuten liegen und somit kann ein Betrag an Daten verloren gehen, wenn ein RDF Link und/oder eine Primärvorrichtung ausfällt, was dann zwanzig bis dreißig Minuten an Daten kosten kann.However, the use of the SAR process requires a significant overhang of a continuous split operation and reintegration operation of the BCVs. The SAR process also uses host control and management based on the control of the host that is operating. In addition, the cycle time for a practical implementation of a SAR process may be on the order of twenty to thirty minutes, and thus an amount of data may be lost if an RDF link and / or a primary device fails, which will then take twenty to thirty minutes of data can cost.

Es wäre daher wünschenswert ein RDF-System zur Verfügung zu haben, welches einige der vorteilhaften Qualitäten von jeder der unterschiedlichen Techniken aufweist, wie sie oben erläutert sind, jedoch deren Nachteile reduziert sind. Solch ein System sollte eine niedrige Latenz aufweisen und zwar für jeden Host-Schreibvorgang ungeachtet von dem Abstand zwischen der primären Vorrichtung und der sekundären Vorrichtung und würde eine Konsistenz (Wiedergewinnbarkeit) an der zweiten Vorrichtung im Falle eines Fehlers liefern.It would therefore be desirable to have an RDF system which has some of the advantageous qualities of each of the different techniques as discussed above but whose disadvantages are reduced. Such a system should have a low latency for each host write regardless of the distance between the primary device and the secondary device and would provide consistency (recoverability) to the second device in the event of failure.

Weiterer relevanter Stand der Technik wird in US 6 301 643 B1 , US 6 415 292 B1 , US 6 157 991 A , US 6 209 002 B1 , US 5 901 327 A und US 5 845 147 A offenbart.Further relevant prior art is in US 6 301 643 B1 . US Pat. No. 6,415,292 B1 . US 6 157 991 A . US Pat. No. 6,209,002 B1 . US 5 901 327 A and US 5,845,147 A disclosed.

Insbesondere offenbart US 6,415,292 B1 einen shuttle-basierten Mechanismus zum Nummerieren von gleichzeitigen Ketten unabhängiger Datenübertragungen. Dabei werden Daten von einer Quelle zu einem Zielort übertragen, was ein Empfangen von Daten von der Quelle sowie ein Vorsehen der Daten an den Zielort unter Verwendung eines Netzwerks beinhaltet. Die Daten werden dabei durch die Quelle als erfolgreich an den Zielort empfangen bestätigt, bevor all die Daten dem Netzwerk zur Verfügung gestellt werden. Die Quelle kann eine primäre Speichervorrichtung und der Zielort eine sekundäre Speichervorrichtung sein. Die Daten können von der ersten Quelle in einem ersten Format vorgesehen werden und können für das Netzwerk in einem zweiten Format vorgesehen werden, das sich von dem ersten Format unterscheidet und wobei das erste Format RDF und das zweite Format TCP/IP oder UDP sein kann. Der Zielort kann die Daten in einem ersten Format empfangen, das sich von dem zweiten Format unterscheidet, das zur Übertragung der Daten über das Netzwerk verwendet wurde. Das erste Format kann dabei RDF und das zweite Format kann TCP/IP oder UDP sein.In particular disclosed US Pat. No. 6,415,292 B1 a shuttle-based mechanism for numbering simultaneous chains of independent data transfers. Data is transferred from a source to a destination, which involves receiving data from the source as well as providing the data to the destination using a network. The data is confirmed by the source as successfully received at the destination before all the data is made available to the network. The source may be a primary storage device and the destination may be a secondary storage device. The data may be provided from the first source in a first format and may be provided to the network in a second format that differs from the first format and where the first format may be RDF and the second format TCP / IP or UDP. The destination may receive the data in a first format that differs from the second format used to transmit the data over the network. The first format can be RDF and the second format can be TCP / IP or UDP.

Zusammenfassung der ErfindungSummary of the invention

Aufgabe der vorliegenden Erfindung ist es daher ein Verfahren zum Ordnen von Datenschreibeinträgen für ein Computerspeichersystem, beispielsweise einem RDF System, zu schaffen, das eine niedrige Latenz f jeden Schreibvorgang ungeachtet von dem Abstand zwischen der primären Vorrichtung und der sekundären Vorrichtung aufweist.The object of the present invention is therefore a method for sorting To create data write entries for a computer storage system, such as an RDF system, that has a low latency f for each write regardless of the distance between the primary device and the secondary device.

Diese Aufgabe wird durch die Merkmalskombination des Anspruchs 1 gelöst. Weitere vorteilhafte Ausgestaltungen und Weiterentwicklungen sind Gegenstand der sich daran anschließenden Anprüche.This object is achieved by the combination of features of claim 1. Further advantageous embodiments and further developments are the subject of the subsequent claims.

Gemäß der vorliegenden Erfindung enthalten geordnete Datenschreibeinträge wenigstens einige von einer Gruppe der primären Speichervorrichtungen, die eine erste Vielzahl an Datenschreibeinträgen empfangen, wobei ein Zyklusschaltvorgang verursacht wird und zwar für die Gruppe der primären Speichervorrichtungen, bei denen die erste Vielzahl der Datenschreibeinträge einem bestimmten Zyklus an jeder primären Speichervorrichtung in jeder Gruppe zugeordnet wird, und wobei wenigstens einige aus der Gruppe der primären Speichervorrichtungen eine zweite Vielzahl an Schreibeinträgen empfängt und zwar nach dem Initialisieren des Zyklusschaltvorganges, bei dem alle der zweiten Vielzahl der Schreibeinträge, die einem Zyklus zugeordnet sind, welcher von dem bestimmten Zyklus an jeder primären Speichervorrichtung verschieden ist, zugeordnet werden. Die Schreibeinträge zu der Gruppe, die nach der Initialisierung des Zyklusschaltvorganges begonnen haben, werden nicht vervollständigt und zwar bis nach dem der Zyklusschaltvorgang vervollständigt worden ist. Das Ordnen der Datenschreibeinträge kann auch nach der Vervollständigung des Zyklusschaltvorganges umfassen, dass jede der primären Speichervorrichtungen der Gruppe, die einen Transfer der ersten Vielzahl der Schreibeinträge zu einer entsprechenden sekundären Speichervorrichtung zugeordnet wird. Das Ordnen der Datenschreibeinträge oder Schreibvorgänge kann auch enthalten, dass nachfolgend der Vervollständigung der Übertragung der ersten Vielzahl der Schreibeinträge zu einer entsprechenden sekundären Speichervorrichtung durch jede der primären Speichervorrichtungen der Gruppe, jede der primären Speichervorrichtungen eine Nachricht zu der entsprechenden sekundären Speichervorrichtung sendet. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass die erste Vielzahl der Datenschreibeinträge zu Cache-Schlitzen der Gruppe der primären Speichervorrichtung geliefert wird. Das Empfangen einer ersten Vielzahl der Datenschreibeinträge kann auch enthalten, dass eine Vielzahl der Datenschreibeinträge von einem Host empfangen wird. Ein Host kann den Zyklusschaltvorgang verursachen. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass eine vorbestimmte Zeitdauer gewartet wird, bestimmt wird, ob alle primären Speichervorrichtungen der Gruppe der Speichervorrichtungen für den Schaltvorgang bereit ist und indem für jede der primären Speichervorrichtungen der Gruppe ein erster Befehl gesendet wird, um einen Zyklusschaltvorgang zu bewirken. Das Aussenden eines Befehls, um einen Zyklusschaltvorgang zu bewirken, kann auch bewirken, dass Schreibeinträge, die nach dem ersten Befehl begonnen wurden, nicht vervollständig werden bis ein zweiter Befehl empfangen wird. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass nach dem Senden des ersten Befehls zu allen primären Speichervorrichtungen der Gruppe ein zweiter Befehl zu allen primären Speichervorrichtungen gesendet wird, um zu ermöglichen, dass die Schreibvorgänge vervollständigt werden.In accordance with the present invention, ordered data write entries include at least some of a group of the primary storage devices receiving a first plurality of data write entries causing a cycle switch operation for the group of primary storage devices where the first plurality of data write entries are one particular cycle at each one primary memory device is allocated in each group, and wherein at least some of the group of primary memory devices receives a second plurality of write entries after initializing the cycle switching operation in which all of the second plurality of write entries associated with a cycle which of the one certain cycle at each primary storage device is different. The write entries to the group which started after the cycle cycle initialization are not completed until after the cycle switch operation has been completed. The ordering of the data write entries, even after the completion of the cycle switching operation, may include that each of the primary storage devices of the group being assigned a transfer of the first plurality of the write entries to a corresponding secondary storage device. The ordering of the data write entries or writes may also include subsequent to completing the transfer of the first plurality of write entries to a corresponding secondary storage device through each of the primary storage devices of the group, each of the primary storage devices sending a message to the corresponding secondary storage device. The ordering of the data write entries may also include providing the first plurality of data write entries to cache slots of the group of the primary storage device. Receiving a first plurality of data write entries may also include receiving a plurality of the data write entries from a host. A host can cause the cycle switch operation. The ordering of the data write entries may also include waiting a predetermined period of time, determining whether all the primary storage devices of the group of storage devices are ready for the switching operation, and sending a first command for each of the primary storage devices of the group to cycle-switch cause. Sending a command to effect a cycle switch can also cause write entries started after the first command not to complete until a second command is received. Ordering the data write entries may also include sending a second command to all of the primary storage devices after sending the first command to all of the primary storage devices of the group to allow the writes to be completed.

Ferner enthält gemäß der vorliegenden Erfindung eine Computersoftware, welche die Datenschreibeinträge zu einer Gruppe der primären Speichervorrichtungen ordnet, einen ausführbaren Code, der einen Zyklusschaltvorgang für die Gruppe der primären Speichervorrichtungen bewirkt, wobei die erste Vielzahl der Datenschreibeinträge einem bestimmten Zyklus an jeder primären Speichervorrichtung in der Gruppe zugeordnet wird, und einen ausführbaren Code enthält, der für eine zweite Vielzahl der Schreibeinträge nach der Initialisierung des Zyklusschaltvorganges alle von der zweiten Vielzahl der Schreibeinträge einem Zyklus zuordnet, der verschieden von dem bestimmten Zyklus an jeder primären Speichervorrichtung ist. Die Schreibeinträge zu der Gruppe, die nach der Initialisierung des Zyklusschaltvorganges begonnen haben, werden nicht vervollständigt, bis der Zyklusschaltvorgang vervollständigt worden ist. Die Computersoftware kann auch einen ausführbaren Code enthalten, der bewirkt, dass jede der primären Speichervorrichtungen der Gruppe den Transfer der ersten Vielzahl der Schreibeinträge zu einer entsprechenden sekundären Speichervorrichtung initialisiert und zwar nach der Vervollständigung des Zyklusschaltvorganges. Die Computersoftware kann auch einen ausführbaren Code enthalten, der bewirkt, dass jede der primären Speichervorrichtungen eine Nachricht zu der entsprechenden sekundären Speichervorrichtung sendet und zwar nachfolgend, nachdem jede der primären Speichervorrichtungen der Gruppe den Transfer der ersten Vielzahl der Schreibeinträge zu einer entsprechenden sekundären Speichervorrichtung vervollständigt hat. Die Computersoftware kann auch einen ausführbaren Code enthalten, der die erste Vielzahl der Datenschreibeinträge zu Cache-Schlitzen der Gruppe der primären Speichervorrichtung liefert. Die erste Vielzahl der Datenschreibeinträge kann von einem Host stammen. Ein Host kann einen ausführbaren Code erzeugen, der den Zyklusschaltvorgang bewirkt. Der ausführbare Code, der den Zyklusschaltvorgang bewirkt, kann auch einen ausführbaren Code enthalten, der eine vorbestimmte Zeitdauer wartet, einen ausführbaren Code, der bestimmt, ob alle primären Speichervorrichtungen der Gruppe der Speichervorrichtungen für den Schaltvorgang bereit sind, und einen ausführbaren Code, der einen ersten Befehl zu jeder der primären Speichervorrichtungen der Gruppe sendet, um den Zyklusschaltvorgang zu bewirken. Der ausführbare Code, durch den ein Befehl gesendet wird, um den Zyklusschaltvorgang zu bewirken, kann auch verursachen, dass Schreibvorgänge, die nach dem ersten Befehl begonnen wurden, nicht vervollständigt werden, bis ein zweiter Befehl empfangen wird. Die Computersoftware kann auch einen ausführbaren Code enthalten, durch den ein zweiter Befehl zu allen primären Speichervorrichtungen gesendet wird, um es zu ermöglichen, dass Schreibvorgänge vervollständigt werden, nachdem der erste Befehl zu allen den primären Speichervorrichtungen der Gruppe gesendet wurde.Further, in accordance with the present invention, computer software associating the data write entries with a group of primary storage devices includes executable code that effects a cycle switch operation for the group of primary storage devices, wherein the first plurality of data write entries correspond to a particular cycle at each primary storage device in the primary storage device Group and containing executable code for a second plurality of the write entries after the initialization of the cycle switching operation assigns all of the second plurality of write entries to a cycle that is different from the particular cycle at each primary storage device. The write entries to the group which started after the initialization of the cycle switch operation are not completed until the cycle switch operation has been completed. The computer software may also include executable code that causes each of the group's primary storage devices to initialize the transfer of the first plurality of write entries to a corresponding secondary storage device after completing the cycle switch. The computer software may also include executable code that causes each of the primary storage devices to send a message to the corresponding secondary storage device subsequent to each of the primary storage devices of the group having completed the transfer of the first plurality of write entries to a corresponding secondary storage device , The computer software may also include executable code that provides the first plurality of data write entries to cache slots of the group of the primary storage device. The first plurality of data write entries can come from a host. A host may generate executable code that effects the cycle switch. The executable code that effects the cycle switching operation may also include executable code that waits a predetermined period of time, executable code that determines whether all the primary storage devices of the group of storage devices are ready for switching, and an executable code that sends a first instruction to each of the primary storage devices of the group to effect the cycle switching operation. The executable code by which a command is sent to effect the cycle switch may also cause writes initiated after the first command to not be completed until a second command is received. The computer software may also include executable code that sends a second command to all of the primary storage devices to allow writes to be completed after the first command has been sent to all the primary storage devices of the group.

Kurze Beschreibung der ZeichnungenBrief description of the drawings

1 zeigt ein schematisches Diagramm, welches einen Host, eine logische Speichervorrichtung und eine entfernt gelegen Datenspeichervorrichtung wiedergibt und zwar verwendet in Verbindung mit dem hier beschriebenen System; 1 Fig. 12 is a schematic diagram showing a host, a logical storage device, and a remote data storage device used in conjunction with the system described herein;

2 ist ein schematisches Diagramm, welches einen Datenfluss zwischen einem Host, einer örtlichen Speichervorrichtung und einer entfernt gelegenen Datenspeichervorrichtung wiedergibt, die in Verbindung mit dem hier beschriebenen System verwendet werden; 2 Fig. 10 is a schematic diagram illustrating a data flow between a host, a local storage device, and a remote data storage device used in conjunction with the system described herein;

3 veranschaulicht ein schematisches Diagramm, welches Elemente zum Konstruieren und Manipulieren von Blöcken von Daten an einer logischen Speichervorrichtung gemäß dem hier beschriebenen System wiedergibt; 3 Fig. 12 illustrates a schematic diagram representing elements for constructing and manipulating blocks of data on a logical storage device according to the system described herein;

4 zeigt ein Diagramm, welches eine Datenstruktur für einen Schlitz darstellt, die in Verbindung mit dem hier beschriebenen System verwendet wird; 4 Figure 11 is a diagram illustrating a data structure for a slot used in conjunction with the system described herein;

5 veranschaulicht ein Flussdiagramm, welches die Betriebsweise eines Host-Adapters (HA) im Ansprechen auf einen Schreibvorgang durch einen Host gemäß dem hier beschriebenen System veranschaulicht; 5 Fig. 12 illustrates a flowchart illustrating the operation of a host adapter (HA) in response to a write by a host in accordance with the system described herein;

6 ist ein Flussdiagramm, welches den Übertragungsvorgang von Daten von einer örtlichen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System darstellt; 6 Fig. 10 is a flow chart illustrating the transfer process of data from a local storage device to a remote storage device according to the system described herein;

7 zeigt ein schematisches Diagramm, welches Elemente zum Konstruieren und Manipulieren von Blöcken von Daten an einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht; 7 Fig. 12 is a schematic diagram illustrating elements for constructing and manipulating blocks of data at a remote storage device in accordance with the system described herein;

8 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die durch eine entfernt gelegene Speichervorrichtung in Verbindung mit dem Empfang eines Zusage-Indikators ausgeführt werden und zwar von einer örtlichen Speichervorrichtung gemäß dem hier beschriebenen System; 8th FIG. 12 is a flow chart illustrating the steps performed by a remote storage device in conjunction with the receipt of a commit indicator from a local storage device according to the system described herein; FIG.

9 veranschaulicht ein Flussdiagramm, welches den Speichervorgang von gesendeten Daten an einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System darstellt; 9 FIG. 12 illustrates a flow chart illustrating the storage operation of transmitted data at a remote storage device according to the system described herein; FIG.

10 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit einer örtlichen Speichervorrichtung ausgeführt werden, die eine Sequenzzahl inkrementiert entsprechend dem hier beschriebenen System; 10 FIG. 12 is a flow chart illustrating the steps performed in conjunction with a local storage device that increments a sequence number according to the system described herein; FIG.

11 ist ein schematisches Diagramm, welches Elemente zum Konstruieren und Manipulieren von Blöcken von Daten an einer logischen Speichervorrichtung veranschaulicht und zwar entsprechend einer alternativen Ausführungsform des hier beschriebenen Systems; 11 Fig. 12 is a schematic diagram illustrating elements for constructing and manipulating blocks of data on a logical storage device according to an alternative embodiment of the system described herein;

12 ist ein Flussdiagramm, welches den Betrieb eines Host-Adapters (HA) im Ansprechen auf einen Schreibvorgang durch einen Host gemäß einer alternativen Ausführungsform des hier beschriebenen Systems wiedergibt; 12 FIG. 10 is a flow chart depicting the operation of a host adapter (HA) in response to a write by a host in accordance with an alternative embodiment of the system described herein; FIG.

13 zeigt ein Flussdiagramm, welches den Übertragungsvorgang von Daten von einer örtlichen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß einer alternativen Ausführungsform des hier beschriebenen Systems veranschaulicht; 13 FIG. 12 is a flow chart illustrating the transfer process of data from a local storage device to a remote storage device according to an alternative embodiment of the system described herein; FIG.

14 ist ein schematisches Diagramm, welches eine Vielzahl von örtlichen und entfernt gelegenen Speichervorrichtungen mit einem Host gemäß dem hier beschriebenen System wiedergibt; 14 FIG. 12 is a schematic diagram depicting a plurality of local and remote storage devices with a host according to the system described herein; FIG.

15 zeig ein Diagramm, welches eine Multi-Box-Modus-Tabelle darstellt, die in Verbindung mit dem hier beschriebenen System verwendet wird; 15 show a diagram illustrating a multi-box mode table used in conjunction with the system described herein;

16 ist ein Flussdiagramm, welches eine modifizierte Vielfachbox-Modus-Tabelle gemäß dem hier beschriebenen System veranschaulicht; 16 FIG. 10 is a flowchart illustrating a modified multi-box mode table according to the system described herein; FIG.

17 zeigt ein Flussdiagramm, welches den Zyklusschaltvorgang durch einen Host gemäß dem hier beschriebenen System wiedergibt; 17 FIG. 12 is a flowchart showing the cycle switching operation by a host according to the system described herein; FIG.

18 ist ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit einer örtlichen Speichervorrichtung ausgeführt werden, die eine Sequenznummer gemäß dem hier beschriebenen System inkrementiert; 18 FIG. 10 is a flowchart illustrating the steps performed in conjunction with a local storage device that increments a sequence number according to the system described herein; FIG.

19 zeigt ein Flussdiagramm, welches den Übertragungsvorgang von Daten von einer örtlichen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht; 19 FIG. 12 is a flowchart illustrating the transfer operation of data from a local storage device to a remote storage device according to the system described herein; FIG.

20 zeigt ein Flussdiagramm, welches den Übertragungsvorgang von Daten von einer örtlichen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß einer alternativen Ausführungsform des hier beschriebenen Systems wiedergibt; 20 FIG. 12 is a flow chart depicting the transfer operation of data from a local storage device to a remote storage device according to an alternative embodiment of the system described herein; FIG.

21 zeigt ein Flussdiagramm, welches das Liefern einer Aktiv-Leer-Indikator-Nachricht von einer entfernt gelegenen Speichervorrichtung zu einer entsprechenden örtlichen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht; 21 FIG. 12 is a flowchart illustrating delivering an active empty indicator message from a remote storage device to a corresponding local storage device according to the system described herein; FIG.

22 ist ein schematisches Diagramm, welches eine Vielzahl der örtlichen und entfernt gelegenen Speichervorrichtungen mit einer Vielzahl an Hosts gemäß dem hier beschriebenen System zeigt; 22 Fig. 12 is a schematic diagram showing a plurality of local and remote storage devices having a plurality of hosts in accordance with the system described herein;

23 veranschaulicht ein Flussdiagramm, welches eine Verarbeitung wiedergibt, die durch eine entfernt gelegene Speichervorrichtung in Verbindung mit einer Datenwiedergewinnung gemäß dem hier beschriebenen System durchgeführt wird; 23 Fig. 10 illustrates a flowchart representing processing performed by a remote storage device in conjunction with data retrieval according to the system described herein;

24 zeigt ein Flussdiagramm, welches eine Verarbeitung veranschaulicht, die durch einen Host in Verbindung mit einer Datenwiedergewinnung gemäß dem hier beschriebenen System durchgeführt wird. 24 FIG. 10 is a flowchart illustrating processing performed by a host in conjunction with data retrieval according to the system described herein. FIG.

Detaillierte Beschreibung der verschiedenen AusführungsformenDetailed description of the various embodiments

Gemäß 1 zeigt ein Diagramm 20 eine Beziehung zwischen einem Host 22, einer örtlichen Speichervorrichtung 24 und einer entfernt gelegenen Speichervorrichtung 26. Der Host 22 liest und schreibt Daten von und zu der örtlichen Speichervorrichtung 24 und zwar über einen Host-Adapter (HA) 28, der die Kopplung zwischen dem Host 22 und der örtlichen Speichervorrichtung 24 vereinfacht. Obwohl das Diagramm 20 lediglich eine Host 22 und eine HA 28 zeigt, sei für Fachleute darauf hingewiesen, dass eine Vielzahl an HAs verwendet werden kann und dass auch einer oder mehrere HAs einen oder mehrere daran angekoppelte Hosts aufweisen kann.According to 1 shows a diagram 20 a relationship between a host 22 , a local storage device 24 and a remote storage device 26 , The host 22 reads and writes data to and from the local storage device 24 through a host adapter (HA) 28 that is the coupling between the host 22 and the local storage device 24 simplified. Although the diagram 20 just a host 22 and a HA 28 It should be appreciated by those skilled in the art that a variety of HAs may be used and that one or more HAs may also include one or more hosts coupled thereto.

Daten von der örtlichen Speichervorrichtung 24 werden zu der entfernt gelegenen Speichervorrichtung 26 über ein RDF Link (Verbindungsglied) 29 kopiert, um zu erreichen, dass Daten an der entfernt gelegenen Speichervorrichtung 26 identisch mit den Daten an der örtlichen Speichervorrichtung 24 sind. Obwohl lediglich ein Verbindungsglied 29 gezeigt ist, ist es möglich zusätzliche Verbindungsglieder zwischen den Speichervorrichtungen 24, 26 vorzusehen und auch Verbindungsglieder zwischen einem oder beiden der Speichervorrichtungen 24, 26 und auch anderen Speichervorrichtungen (nicht gezeigt). Es sei darauf hingewiesen, dass eine Zeitverzögerung zwischen dem Transfer der Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 auftreten kann, so dass die entfernt gelegene Speichervorrichtung 26 zu bestimmten Zeitpunkten Daten enthalten kann, die nicht identisch mit den Daten bei der örtlichen Speichervorrichtung 24 sind. Eine Kommunikation unter Verwendung von RDF ist beispielsweise in dem US Patent Nr. 5,742,792 beschrieben, die hier unter Bezugnahme darauf voll miteinbezogen wird.Data from the local storage device 24 become the remote storage device 26 via an RDF link 29 copied to achieve that data at the remote storage device 26 identical to the data on the local storage device 24 are. Although only one link 29 is shown, it is possible additional links between the storage devices 24 . 26 provide and also connecting links between one or both of the storage devices 24 . 26 and also other memory devices (not shown). It should be noted that there is a time delay between the transfer of the data from the local storage device 24 to the remote storage device 26 can occur, leaving the remote storage device 26 at certain times may contain data that is not identical to the data at the local storage device 24 are. Communication using RDF is for example in the U.S. Patent No. 5,742,792 which is incorporated herein by reference.

Die örtliche Speichervorrichtung 24 enthält eine erste Vielzahl an RDF-Adaptereinheiten (RAs) 30a, 30b, 30c und die entfernt gelegene Speichervorrichtung 26 enthält eine zweite Vielzahl an RAs 32a32c. Die RAs 30a30c, 32a32c sind an das RDF Verbindungsglied 29 gekuppelt und sind ähnlich dem Host-Adapter 28, werden jedoch zum Transfer von Daten zwischen den Speichervorrichtungen 24, 26 verwendet. Die in Verbindung mit den RAs 30a30c, 32a32c verwendete Software wird im Folgenden mehr in Einzelheiten erläutert.The local storage device 24 contains a first variety of RDF Adapter Units (RAs) 30a . 30b . 30c and the remote storage device 26 contains a second variety of RAs 32a - 32c , The RAs 30a - 30c . 32a - 32c are to the RDF connector 29 coupled and are similar to the host adapter 28 However, they are used to transfer data between the storage devices 24 . 26 used. The in conjunction with the RAs 30a - 30c . 32a - 32c Software used is explained in more detail below.

Die Speichervorrichtungen 24, 26 können ein oder mehrere Platten enthalten, von denen jede einen unterschiedlichen Abschnitt von Daten enthält, die in jeder der Speichervorrichtungen 24, 26 gespeichert sind. 1 zeigt die Speichervorrichtung 24, die ein Vielzahl an Platten oder Plattenlaufwerken 33a, 33b, 33c enthält, und wobei die Speichervorrichtung 26 eine Vielzahl an Platten oder Plattenlaufwerken 34a, 34b, 34c enthält. Die RDF-Funktionalität, die betrieben wird, kann so angewendet werden, dass die Daten für wenigstens einen Abschnitt der Platten 33a33c der örtlichen Speichervorrichtung 24 unter Verwendung von RDF zu wenigstens einem Abschnitt der Platten 34a34c der entfernt gelegenen Speichervorrichtung 26 kopiert werden. Es ist möglich, dass andere Daten der Speichervorrichtungen 24, 26 nicht zwischen den Speichervorrichtungen 24, 26 kopiert werden und somit nicht identisch sind.The storage devices 24 . 26 may include one or more disks, each containing a different portion of data stored in each of the storage devices 24 . 26 are stored. 1 shows the storage device 24 containing a variety of disks or disk drives 33a . 33b . 33c contains, and wherein the memory device 26 a variety of disks or disk drives 34a . 34b . 34c contains. The RDF functionality that is operated can be applied so that the data for at least a portion of the disks 33a - 33c the local storage device 24 using RDF to at least a portion of the disks 34a - 34c the remote storage device 26 be copied. It is possible that other data of the storage devices 24 . 26 not between the storage devices 24 . 26 are copied and therefore not identical.

Jede der Platten 33a33c ist mit einer entsprechenden Plattenadaptereinheit (DA) 35a, 35b, 35c gekoppelt, die Daten zu einer entsprechenden einen der Platten 33a33c liefern und Daten von einer entsprechenden einen der Platten 33a33c empfangen. In ähnlicher Weise wird eine Vielzahl der DAs 36a, 36b, 36c der entfernt gelegenen Speichervorrichtung 26 dafür verwendet, um Daten zu entsprechenden Platten der Plattenlaufwerke 34a34c zu liefern und um Daten von entsprechenden Platten der Plattenlaufwerke 34a34c zu empfangen. Es existiert ein interner Datenpfad zwischen den DAs 35a35c, der HA 28 und den RAs 30a30c der örtlichen Speichervorrichtung 24. In ähnlicher Weise existiert ein interner Datenpfad zwischen den DAs 36a36c und den RAs 32a32c der entfernt gelegenen Speichervorrichtung 26. Es sei darauf hingewiesen, dass es bei anderen Ausführungsformen möglich ist, dass mehr als eine Platte durch einen DA bedient wird und dass es möglich ist, dass mehr als eine DA eine Platte bzw. Plattenlaufwerk bedient.Each of the plates 33a - 33c is with a corresponding disk adapter unit (DA) 35a . 35b . 35c coupled the data to a corresponding one of the disks 33a - 33c deliver and data from a corresponding one of the plates 33a - 33c receive. Similarly, a variety of DAs 36a . 36b . 36c the remote storage device 26 used to transfer data to corresponding disks of the disk drives 34a - 34c to deliver and to get data from corresponding disks of the disk drives 34a - 34c to recieve. There is an internal data path between the DAs 35a - 35c . the HA 28 and the RAs 30a - 30c the local storage device 24 , Similarly, an internal data path exists between the DAs 36a - 36c and the RAs 32a - 32c the remote storage device 26 , It should be noted that in other embodiments, it is possible for more than one disk to be serviced by a DA, and for more than one DA to be able to service a disk drive.

Die örtliche Speichervorrichtung 24 enthält auch einen Globalspeicher 37, der dazu verwendet werden kann, um den Datentransfer zwischen den DAs 35a35c, der HA 28 und den RAs 30a30c zu vereinfachen. Der Speicher 37 kann Aufgaben (tasks) enthalten, die von einer oder von mehreren der DAs 35a35c, der HA 28 und den RAs 30a30c ausgeführt werden, und kann einen Cache-Speicher enthalten, um Daten von einer oder von mehreren der Platten 33a33c aufzunehmen. In ähnlicher Weise enthält die entfernt gelegene Speichervorrichtung 26 einen Globalspeicher, der Aufgaben (tasks) enthalten kann, die durch einen oder mehrere der DAs 36a36c und der RAs 32a32c ausgeführt werden, und einen Cache-Speicher, um Daten von einem oder von mehreren der Platten 34a34c aufzunehmen. Die Verwendung der Speicher 37, 38 wird im Folgenden mehr in Einzelheiten beschrieben.The local storage device 24 also contains a global store 37 which can be used to transfer data between the DAs 35a - 35c , the HA 28 and the RAs 30a - 30c to simplify. The memory 37 may contain tasks that are performed by one or more of the DAs 35a - 35c , the HA 28 and the RAs 30a - 30c and may include a cache to store data from one or more of the disks 33a - 33c take. Similarly, the remote storage device includes 26 a global store that may contain tasks that are performed by one or more of the DAs 36a - 36c and the RAs 32a - 32c and a cache to retrieve data from one or more of the disks 34a - 34c take. The use of memory 37 . 38 will be described in more detail below.

Der Speicherraum in der örtlichen Speichervorrichtung 24, die den Platten 33a33c entspricht, kann aufgeteilt werden in eine Vielzahl von Volumina oder logischen Vorrichtungen. Die logischen Vorrichtungen können oder können auch nicht dem physikalischen Speicherraum der Platten 33a33c entsprechen. Beispielsweise kann somit die Platte 33a eine Vielzahl an logischen Vorrichtungen enthalten oder alternativ kann eine einzelne logische Vorrichtung beide Platten 33a, 33b überspannen. In ähnlicher Weise kann der Speicherraum für die entfernt gelegene Speichervorrichtung 26, welche die Platten 34a34c umfasst, unterteilt werden in eine Vielzahl von Volumina oder logischen Vorrichtungen, wobei jede der logischen Vorrichtungen einer oder mehreren der Platten 34a34c entsprechen kann oder auch nicht.The storage space in the local storage device 24 that the plates 33a - 33c may be divided into a plurality of volumes or logical devices. The logical devices may or may not be the physical storage space of the disks 33a - 33c correspond. For example, thus, the plate 33a contain a plurality of logical devices, or alternatively, a single logical device can both plates 33a . 33b span. Similarly, the storage space for the remote storage device 26 which the plates 34a - 34c comprises, subdivided into a plurality of volumes or logical devices, each of the logical devices of one or more of the disks 34a - 34c may or may not correspond.

Das Vorsehen einer RDF-Speicherabbildung zwischen Abschnitten der örtlichen Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 involviert das Erstellen einer logischen Vorrichtung an der entfernt gelegenen Speichervorrichtung 26, das heißt das Erstellen eines entfernt gelegenen Spiegels für eine logische Vorrichtung an der örtlichen Speichervorrichtung 24. Der Host 22 liest und schreibt Daten von bzw. zu der logischen Vorrichtung an der örtlichen Speichervorrichtung 24 und die RDF-Speicherabbildung (mapping) bewirkt, dass modifizierte Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen werden und zwar unter Verwendung der RAs 30a30c, 32a32c und des RDF-Verbindungsgliedes 29. Bei der Dauerzustand-Operation enthält die logische Vorrichtung an der entfernt gelegenen Speichervorrichtung 26 Daten, die identisch mit den Daten der logischen Vorrichtung an der örtlichen Speichervorrichtung 24 sind. Die logische Vorrichtung an der örtlichen Speichervorrichtung 24, die durch den Host 22 zugegriffen wird, wird als ”R1 Volumen” (oder lediglich ”R1”) bezeichnet, während die logische Vorrichtung an der entfernt gelegenen Speichervorrichtung 26, die eine Kopie der Daten an dem R2 Volumen enthält, als ”R2 Volumen” (oder lediglich ”R2”) genannt wird. Somit liest und schreibt der Host Daten von bzw. zu dem R1 Volumen und RDF handhabt automatisch den Kopiervorgang und die Erneuerung der Daten von dem R1 Volumen zu dem R2 Volumen.The provision of an RDF memory map between portions of the local storage device 24 and the remote storage device 26 involves creating a logical device on the remote storage device 26 that is, creating a remote mirror for a logical device on the local storage device 24 , The host 22 reads and writes data from and to the logical device at the local storage device 24 and the RDF map mapping causes modified data from the local storage device 24 to the remote storage device 26 be transmitted using the RAs 30a - 30c . 32a - 32c and the RDF link 29 , In the steady state operation, the logical device includes at the remote storage device 26 Data identical to the data of the logical device at the local storage device 24 are. The logical device on the local storage device 24 by the host 22 is referred to as "R1 Volume" (or just "R1") while the logical device is at the remote storage device 26 containing a copy of the data at the R2 volume called "R2 Volume" (or just "R2"). Thus, the host reads and writes data to and from the R1 volume and RDF automatically handles the copying and renewal of the data from the R1 volume to the R2 volume.

Gemäß 2 ist ein Pfad von Daten von dem Host 22 zu der örtlichen Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 veranschaulicht. Die Daten, die von dem Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement 51 der örtlichen Speichervorrichtung 24 veranschaulicht ist. Die Daten, die durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden auch durch die örtliche Speichervorrichtung 24 gehalten und zwar in Verbindung damit, dass diese durch die örtliche Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 über das Verbindungsglied 29 gesendet werden.According to 2 is a path of data from the host 22 to the local storage device 24 and the remote storage device 26 illustrated. The data coming from the host 22 to the local storage device 24 are written locally, as indicated by the data element 51 the local storage device 24 is illustrated. The data by the host 22 to the local storage device 24 are also written by the local storage device 24 held in connection with this through the local storage device 24 to the remote storage device 26 over the connecting link 29 be sent.

Bei dem hier beschriebenen System werden Daten, die durch den Host 22 geschrieben werden (von beispielsweise einer Aufzeichnung, einer Vielzahl an Aufzeichnungen, einer Spur und so weiter) einer Sequenzzahl zugewiesen. Die Sequenzzahl kann in einem geeigneten Datenfeld vorgesehen sein, welches dem Schreibeintrag zugeordnet ist. In 2 sind die Schreibeinträge durch den Host 22 so dargestellt, das sie der Sequenzzahl N zugeordnet sind. Alle die Schreibeinträge, die durch den Host 22 durchgeführt werden, die der Sequenzzahl N zugeordnet sind, werden in einem einzelnen Datenblock 52 gesammelt. Der Block 52 repräsentiert eine Vielzahl von getrennten Schreibeinträgen durch den Host 22, die zu angenähert der gleichen Zeit auftreten.In the system described here, data provided by the host 22 are written (from, for example, a record, a plurality of records, a track, and so on) to a sequence number. The sequence number may be provided in a suitable data field associated with the write entry. In 2 are the write entries by the host 22 as shown, they are assigned to the sequence number N. All the write entries made by the host 22 are performed, which are assigned to the sequence number N, are in a single data block 52 collected. The block 52 represents a multiplicity of separate write entries by the host 22 which occur at approximately the same time.

Im Allgemeinen sammelt die örtliche Speichervorrichtung 24 Blöcke von einer Sequenzzahl, während sie einen früher angesammelten Block (der die frühere Sequenzzahl aufweist) zu der entfernt gelegenen Speichervorrichtung 26 sendet. Während somit die örtliche Speichervorrichtung 24 Schreibeinträge von dem Host 22 sammelt, die der Sequenzzahl N zugeordnet sind, werden die Schreibeinträge, die für die frühere Sequenzzahl (N – 1) aufgetreten sind, durch die örtliche Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 über das Verbindungsglied 29 gesendet. Ein Datenblock 54 repräsentiert Schreibeinträge von dem Host 22, denen die Sequenzzahl N – 1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung 26 gesendet worden sind.In general, the local storage device will collect 24 Blocks from a sequence number while storing a previously accumulated block (having the previous sequence number) to the remote storage device 26 sends. Thus, while the local storage device 24 Write entries from the host 22 which allocates the sequence number N, the write entries that occurred for the earlier sequence number (N-1) occur are through the local storage device 24 to the remote storage device 26 over the connecting link 29 Posted. A data block 54 represents write entries from the host 22 which are assigned the sequence number N-1 not yet to the remote storage device 26 have been sent.

Die entfernt gelegene Speichervorrichtung 26 empfängt Daten von dem Block 54 entsprechend den Schreibeinträgen, denen eine Sequenzzahl N – 1 zugeordnet ist, und konstruiert einen neuen Datenblock 56 von Host-Schreibeinträgen oder Schreibvorgängen, welche die Sequenzzahl N – 1 haben. Die Daten können unter Verwendung eines geeigneten RDF-Protokolls übertragen werden, welches Daten bestätigt, die über das Verbindungsglied 29 gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung 26 alle die Daten von dem Block 54 empfangen hat, sendet die örtliche Speichervorrichtung 24 eine Bestätigungs- oder Zusage-Nachricht zu der entfernt gelegenen Speichervorrichtung 26, um alle die Daten zu bestätigen, welchen die Sequenzzahl N – 1 zugeordnet ist entsprechend dem Datenblock 56. Wenn im Allgemeinen einmal ein Datenblock, der einer bestimmten Sequenzzahl entspricht, bestätigt worden ist, wird dieser Datenblock zu der logischen Speichervorrichtung geschrieben. Dies ist in 2 mit einem Datenblock 58 veranschaulicht, der Schreibeinträgen entspricht, denen die Sequenzzahl N – 2 zugeordnet ist (das heißt zwei vor der momentanen Sequenzzahl, die in Verbindung mit den Schreibeinträgen verwendet wird, die von dem Host 22 zu der örtlichen Speichervorrichtung 26 übertragen werden). In 2 ist der Datenblock 58 so gezeigt, dass dieser zu einem Datenelement 62 geschrieben wird, welches einen Plattenspeicher repräsentiert und zwar für die entfernt gelegene Speichervorrichtung 26. Somit empfängt die entfernt gelegene Speichervorrichtung 26 den Datenblock 56 und sammelt denselben entsprechend der Sequenzzahl N – 1, während der Datenblock 58, welcher der früheren Sequenzzahl (N – 2) entspricht, zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung 26 geschrieben wird, der durch das Datenelement 62 veranschaulicht ist. Bei einigen Ausführungsformen werden Daten für den Block 58 zum Schreiben markiert (werden jedoch nicht notwendigerweise unmittelbar geschrieben), während die Daten für den Block 56 nicht markiert werden.The remote storage device 26 receives data from the block 54 corresponding to the write entries assigned a sequence number N-1, and constructs a new data block 56 of host writes or writes having the sequence number N-1. The data may be transmitted using a suitable RDF protocol which acknowledges data sent over the link 29 were sent. If the remote storage device 26 all the data from the block 54 has received, sends the local storage device 24 an acknowledgment or promise message to the remote storage device 26 to confirm all the data to which the sequence number N-1 is assigned according to the data block 56 , In general, once a data block corresponding to a particular sequence number has been acknowledged, that data block is written to the logical storage device. This is in 2 with a data block 58 which corresponds to write entries associated with the sequence number N-2 (that is, two before the current sequence number used in conjunction with the write entries made by the host 22 to the local storage device 26 be transmitted). In 2 is the data block 58 shown to be a data item 62 which represents a disk memory for the remote storage device 26 , Thus, the remote storage device receives 26 the data block 56 and collects it according to the sequence number N-1, while the data block 58 , which corresponds to the previous sequence number (N-2), to the disk memory of the remote storage device 26 written by the data element 62 is illustrated. In some embodiments, data is for the block 58 marked for writing (but not necessarily written directly) while the data for the block 56 not marked.

Somit schreibt im Betrieb der Host 22 Daten zu der örtlichen Speichervorrichtung 24, die örtlich in dem Datenelement 51 gespeichert werden und in dem Block 52 gesammelt sind. Wenn einmal alle Daten für eine bestimmte Sequenzzahl angesammelt worden sind (was bereits beschrieben worden ist), inkrementiert die örtliche Speichervorrichtung 24 die Sequenzzahl. Daten aus dem Block 54, die einer Sequenzzahl entsprechen, die um Eins geringer ist als die momentane Sequenzzahl, werden von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 über das Verbindungsglied 29 übertragen. Der Block 58 entspricht den Daten für eine Sequenzzahl, die durch die örtliche Speichervorrichtung 24 bestätigt wurde, die eine Nachricht zu der entfernt gelegenen Speichervorrichtung 26 sendet. Daten aus dem Block 58 werden zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung 26 hin geschrieben.Thus, during operation, the host writes 22 Data about the local storage device 24 local to the data element 51 be stored and in the block 52 are collected. Once all the data has been accumulated for a particular sequence number (which has already been described), the local storage device increments 24 the sequence number. Data from the block 54 that correspond to a sequence number that is one less than the current sequence number are read by the local storage device 24 to the remote storage device 26 over the connecting link 29 transfer. The block 58 corresponds to the data for a sequence number generated by the local storage device 24 which sent a message to the remote storage device 26 sends. Data from the block 58 become the disk storage of the remote storage device 26 written down.

Es sei erwähnt, dass die Schreibeinträge innerhalb eines bestimmten einen der Blöcke 52, 54, 56, 58 nicht notwendigerweise geordnet sind. Wie jedoch mehr in Einzelheiten noch beschrieben werden soll, wurde jeder Schreibeintrag für den Block 58 entsprechend der Sequenzzahl N – 2 vor dem Beginn von irgendwelchen Schreibeinträgen für die Blöcke 54, 56 begonnen, entsprechend der Sequenzzahl N – 1. Zusätzlich wurde jeder Schreibeintrag für die Blöcke 54, 56 entsprechend der Sequenzzahl N – 1 vor dem Beginn von irgendwelchen Schreibeinträgen für den Block 52 begonnen, die der Sequenzzahl N entsprechen. Somit kann in einem Fall eines Kommunikationsfehlers oder Ausfalls zwischen der örtlichen Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 die entfernt gelegene Speichervorrichtung 26 einfach den Schreibvorgang des letzten bestätigten Datenblocks beenden (der Block 58 bei dem Beispiel von 2) und kann sicherstellen, dass der Zustand der Daten an der entfernt gelegenen Speichervorrichtung 29 in einem Sinn geordnet ist, dass das Datenelement 62 alle die Schreibeinträge enthält, die vor einem bestimmten Zeitpunkt begonnen wurden, und keine Schreibeinträge enthält, die nach diesem Zeitpunkt begonnen wurden. Somit enthält R2 eine Zeitpunkt-Kopie von R1 und es ist möglich ein konsistentes Bild von der R2-Vorrichtung wiederherzustellen.It should be noted that the write entries within a particular one of the blocks 52 . 54 . 56 . 58 are not necessarily ordered. However, as more will be described in detail, each write entry for the block 58 corresponding to the sequence number N-2 before the beginning of any write entries for the blocks 54 . 56 started, according to the sequence number N - 1. In addition, each write entry for the blocks 54 . 56 corresponding to the sequence number N-1 before the beginning of any write entries for the block 52 started, which correspond to the sequence number N. Thus, in case of a communication error or failure between the local storage device 24 and the remote storage device 26 the remote storage device 26 just finish writing the last confirmed data block (the block 58 in the example of 2 ) and can ensure that the state of the data at the remote storage device 29 arranged in a sense that the data element 62 contains all the write entries that started before a specific time and does not contain any write entries that started after that time. Thus, R2 contains a timing copy of R1 and it is possible to recover a consistent image from the R2 device.

Gemäß 3 veranschaulicht ein Diagramm 70 Elemente, die zum Konstruieren und Aufrechterhaltung der Blöcke 52, 54 verwendet werden. Eine logische Standardvorrichtung 72 enthält Daten, die durch den Host 22 geschrieben werden und die dem Datenelement 51 von 1 entsprechen, und auch den Platten 33a33c von 1. Die logische Standardvorrichtung 72 enthält Daten, die durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben wurden.According to 3 illustrates a diagram 70 Elements used to construct and maintain the blocks 52 . 54 be used. A standard logical device 72 Contains data by the host 22 be written and the data element 51 from 1 match, and also the plates 33a - 33c from 1 , The standard logical device 72 Contains data by the host 22 to the local storage device 24 were written.

Zwei verknüpfte Listen an Zeigern 74, 76 werden in Verbindung mit der logischen Standardvorrichtung 72 verwendet. Die verknüpften Listen 74, 76 entsprechen den Daten, die beispielsweise in dem Speicher 37 der örtlichen Speichervorrichtung 24 gespeichert sein können. Die verknüpfte Liste 74 enthält eine Vielzahl an Zeigern 8185, von denen jeder zu einem Schlitz eines Cache-Speichers 88 zeigt, der in Verbindung mit der örtlichen Speichervorrichtung 24 verwendet wird. In ähnlicher Weise enthält die verknüpfte Liste 76 eine Vielzahl an Zeigern 9195, von denen jeder auf einen Schlitz des Cache-Speichers 88 zeigt. Bei einigen Ausführungsformen kann der Cache-Speicher 88 in dem Speicher 37 der örtlichen Speichervorrichtung 24 vorgesehen sein. Der Cache-Speicher 88 enthält eine Vielzahl an Cache-Schlitzen 102104, die in Verbindung mit Schreibeinträgen zu der logischen Standardvorrichtung 72 verwendet werden können und zur gleichen Zeit in Verbindung mit den verknüpften Listen 74, 76 verwendet werden können.Two linked lists of pointers 74 . 76 become in connection with the standard logical device 72 used. The linked lists 74 . 76 correspond to the data, for example, in the memory 37 the local storage device 24 can be stored. The linked list 74 contains a variety of pointers 81 - 85 each one to a slot of a cache memory 88 shows, in conjunction with the local storage device 24 is used. Similarly, the linked list contains 76 a variety of pointers 91 - 95 , each of which accesses a slot of the cache memory 88 shows. In some embodiments, the cache memory may 88 in the store 37 the local storage device 24 be provided. The cache memory 88 contains a variety of cache slots 102 - 104 associated with write entries to the standard logical device 72 can be used and at the same time in conjunction with the linked lists 74 . 76 can be used.

Jede der verknüpften oder verketteten Listen 74, 76 kann für einen der Datenblöcke 52, 54 verwendet werden, so dass beispielsweise die verknüpfte oder verkettete Liste 74 dem Datenblock 52 für die Sequenzzahl N entsprechen kann, während die verkettete Liste 76 dem Datenblock 54 für die Sequenzzahl N – 1 entsprechen kann. Wenn somit Daten durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden die Daten zu dem Cache-Speicher 88 geliefert und in einigen Fällen (die noch beschrieben werden) wird ein geeigneter Zeiger der verketteten Liste 74 erzeugt. Es sei darauf hingewiesen, dass Daten aus dem Cache-Speicher 88 so lange nicht entfernt werden, bis die Daten zu der logischen Standardvorrichtung 72 hin abgebaut worden sind und auf die Daten auch nicht länger durch einen der Zeiger 8185 der verketteten Liste 74 angezeigt werden, wie dies noch beschrieben wird.Each of the linked or linked lists 74 . 76 can for one of the data blocks 52 . 54 so that, for example, the linked or linked list 74 the data block 52 for the sequence number N, while the linked list 76 the data block 54 for the sequence number N - 1. If so, data through the host 22 to the local storage device 24 are written, the data becomes the cache memory 88 and in some cases (to be described) will become a suitable pointer to the linked list 74 generated. It should be noted that data from the cache memory 88 until the data is removed to the standard logical device 72 have been mined and no longer on the data by one of the pointers 81 - 85 the linked list 74 are displayed as will be described.

Bei einer hier beschriebenen Ausführungsform wird eine der verketteten Listen 74, 76 als ”aktiv” angenommen, während die andere als ”inaktiv” angenommen wird. Wenn somit beispielsweise die Sequenzzahl N geradzahlig ist, kann die verkettete Liste 74 aktiv sein, während die verkettete Liste 76 inaktiv ist. Die aktive Eine der verketteten Listen 74, 75 handhabt die Schreibeinträge von dem Host 22, während die inaktive Liste der verketteten Listen 74, 76 den Daten entspricht, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen werden.In one embodiment described herein, one of the linked lists becomes 74 . 76 accepted as "active" while the other is assumed to be "inactive". Thus, for example, if the sequence number N is even, the linked list 74 be active while the linked list 76 is inactive. The active one of the linked lists 74 . 75 handles the write entries from the host 22 while the inactive list of linked lists 74 . 76 the data matches that of the local storage device 24 to the remote storage device 26 be transmitted.

Während die Daten, die durch den Host 22 geschrieben werden, unter Verwendung der aktiven Einen der verketteten Listen 74, 76 gesammelt werden (für die Sequenzzahl N), werden die Daten, welche der inaktiven Einen der verketteten Listen 74, 76 entsprechen (für die frühere Sequenzzahl N – 1) von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen. Die RAs 30a30c verwenden die verketteten Listen 74, 76, um zu bestimmen, dass die Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen werden. Nachdem einmal die Daten, die einem bestimmten Einen der Zeiger in einer der verketteten Listen 74, 76 entsprechen, zu der entfernt gelegenen Speichervorrichtung 26 gesendet worden sind, kann der spezielle Eine der Zeiger von der geeigneten Einen der verketteten Listen 74, 76 entfernt werden. Zusätzlich können Daten auch für ein Entfernen aus dem Cache-Speicher 88 markiert werden (das heißt es kann der Schlitz zu einem Pool von Schlitzen für späteren Gebrauch, der nicht bezogen ist, zurükgeleitet werden) vorausgesetzt, dass die Daten in dem Schlitz nicht in anderer Weise für einen anderen Zweck benötigt werden (zum Beispiel um zu der logischen Standardvorrichtung 72 hin ausgelesen zu werden). Ein Mechanismus kann dazu verwendet werden, um sicherzustellen, dass Daten nicht aus dem Cache-Speicher 88 entfernt werden bis alle Vorrichtungen nicht mehr die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US Patent Nr. 5,537,568 beschrieben, ausgegeben am 16. Juli 1996, und auch in der US Patentanmeldung Nr. 09/850,551, eingereicht am 07. Juli 2001, die beide hier unter Bezugnahme miteinbezogen werden.While the data is being hosted by the host 22 using the Active One of the Chained Lists 74 . 76 are collected (for the sequence number N), the data, which is the inactive one of the linked lists 74 . 76 correspond (for the earlier sequence number N-1) from the local storage device 24 to the remote storage device 26 transfer. The RAs 30a - 30c use the linked lists 74 . 76 to determine that the data from the local storage device 24 to the remote storage device 26 be transmitted. Once the data is given to a particular one of the pointers in one of the linked lists 74 . 76 correspond to the remote storage device 26 The special One of the pointers may be sent from the appropriate one of the linked lists 74 . 76 be removed. Additionally, data may also be for removal from the cache memory 88 (i.e., the slot may be returned to a pool of unused later slots) provided that the data in the slot is not otherwise needed for some other purpose (e.g. standard logical device 72 to be read out). A mechanism can be used to ensure that data is not cached 88 be removed until all devices no longer use the data. Such a mechanism is for example in the U.S. Patent No. 5,537,568 U.S. Patent Application No. 09 / 850,551, filed Jul. 7, 2001, both of which are incorporated herein by reference.

Gemäß 4 enthält ein Schlitz 120 ähnlich dem Einen der Schlitze 102104 des Cache-Speichers 88 einen Kopfabschnitt 122 und Daten 124. Der Kopfabschnitt oder Header 122 entspricht Zusatzinformationen, die von dem System zum Managen des Schlitzes 120 verwendet werden. Die Daten 124 sind die entsprechenden Daten von der Platte, die (zeitweilig) in dem Schlitz 120 gespeichert sind. Die Informationen in dem Kopfabschnitt 122 enthalten Zeiger zurück zur Platte, Zeitstempel und so weiter.According to 4 contains a slot 120 similar to the one of the slots 102 - 104 of the cache memory 88 a head section 122 and dates 124 , The header or header 122 Corresponds to additional information provided by the system for managing the slot 120 be used. The data 124 are the corresponding data from the disk that (temporarily) in the slot 120 are stored. The information in the header section 122 include pointer back to disk, timestamp and so on.

Der Kopfabschnitt 122 enthält auch einen Cache-Stempel 126, der in Verbindung mit dem hier beschriebenen System verwendet wird. Bei einer Ausführungsform umfasst der Cache-Stempel 126 acht Bytes. Zwei der Bytes sind ein ”Passwort”, welches angibt, dass der Schlitz 120 durch das hier beschriebene System verwendet wird. Bei anderen Ausführungsformen kann das Passwort aus einem Byte bestehen, während das folgende Byte für ein Pad verwendet wird. Wie noch beschrieben wird, zeigen die zwei Bytes des Passwortes (oder ein Byte je nach Fall), die gleich einem bestimmten Wert sind, an, dass auf den Schlitz 120 durch wenigstens einen Eintrag der verketteten Listen 74, 76 gezeigt wird. Das Passwort, welches gleich ist einem bestimmten Wert, zeigt an, dass auf den Schlitz 120 nicht durch einen Eintrag der verketteten Listen 74, 76 gezeigt wird. Die Verwendung des Passwortes wird noch näher beschrieben.The head section 122 also contains a cache stamp 126 used in conjunction with the system described herein. In one embodiment, the cache stamp includes 126 eight bytes. Two of the bytes are a "password" indicating that the slot 120 is used by the system described here. In other embodiments, the password may consist of one byte while the following byte is used for a pad. As will be described, the two bytes of the password (or one byte as the case may be) equal to a certain value indicate that the slot 120 by at least one entry of the linked lists 74 . 76 will be shown. The password, which is equal to a certain value, indicates that on the slot 120 not by an entry of the linked lists 74 . 76 will be shown. The use of the password will be described in more detail.

Der Cache-Stempel 126 enthält ein zwei Byte-Feld, welches die Sequenzzahl (zum Beispiel N, N – 1, N – 2, und so weiter) der Daten 124 des Schlitzes 120 anzeigt. Wie noch beschrieben wird, kann das Sequenzzahlfeld des Cache-Stempels 126 dazu verwendet werden, um die hier beschriebene Verarbeitung zu vereinfachen. Die verbleibenden vier Bytes des Cache-Stempels 126 können für einen Zeiger verwendet werden, wie noch beschrieben werden soll. Natürlich sind die zwei Bytes der Sequenzzahl und sind die vier Bytes des Zeigers nur dann gültig, wenn das Passwort gleich einem bestimmten Wert ist, der anzeigt, dass auf den Schlitz 120 durch wenigstens einen Eintrag in einer der Listen 74, 76 gezeigt wird.The cache stamp 126 contains a two-byte field containing the sequence number (for example, N, N-1, N-2, and so on) of the data 124 of the slot 120 displays. As will be described, the sequence number field of the cache stamp 126 used to simplify the processing described herein. The remaining four Bytes of the cache stamp 126 can be used for a pointer, as will be described. Of course, the two bytes are the sequence number and the four bytes of the pointer are valid only if the password is equal to a certain value indicating that the slot 120 by at least one entry in one of the lists 74 . 76 will be shown.

Gemäß 5 veranschaulicht ein Flussdiagramm 140 Schritte, die durch den HA 28 in Verbindung mit einem Host 22 durchgeführt werden, der eine Schreiboperation durchführt. Wenn natürlich der Host 22 einen Schreibvorgang ausführt, erfolgt eine Verarbeitung zur Handhabung des Schreibeintrages in einer normalen Weise und zwar ungeachtet davon, ob Daten in einem Teil einer R1/R2 RDF Gruppe vorhanden sind. Wenn beispielsweise der Host 22 Daten für einen Abschnitt der Platte schreibt, erfolgt das Schreiben zu den Cache-Schlitz, der eventuell zu der Platte ausgelesen wird. Der Cache-Schlitz kann entweder ein neuer Cache-Schlitz sein oder kann ein bereits existierender Cache-Schlitz sein, der in Verbindung mit einem früheren Lesevorgang und/oder Schreibvorgang zu der gleichen Spur erzeugt worden ist.According to 5 illustrates a flowchart 140 Steps through the HA 28 in conjunction with a host 22 which performs a write operation. If, of course, the host 22 performs a write operation, processing is performed to handle the write entry in a normal manner regardless of whether data exists in a part of a R1 / R2 RDF group. For example, if the host 22 Writing data for a portion of the disk writes to the cache slot that may be read out to the disk. The cache slot may either be a new cache slot or may be an existing cache slot that has been created in connection with an earlier read and / or write to the same track.

Die Verarbeitung beginnt bei einem ersten Schritt 142, bei dem ein Schlitz entsprechend einem Schreibeintrag verriegelt wird. Bei der hier dargestellten Ausführungsform entspricht jeder der Schlitze 102104 des Cache-Speichers 88 einer Spur von Daten bei der logischen Standardvorrichtung 72. Das Verriegeln des Schlitzes bei dem Schritt 142 verhindert zusätzliche Verarbeitungen, dass diese also stattfinden und zwar ab dem relevanten Schlitz während der Verarbeitung durch den HA 28 entsprechend den Schritten des Flussdiagramms 140.Processing begins with a first step 142 in which a slot is locked according to a write entry. In the embodiment illustrated here, each corresponds to the slots 102 - 104 of the cache memory 88 a trace of data in the standard logical device 72 , Locking the slot at the step 142 prevents additional processing, so that they take place from the relevant slot during processing by the HA 28 according to the steps of the flowchart 140 ,

Nachfolgend dem Schritt 142 tritt ein Schritt 144 auf, bei dem ein Wert für N, also für die Sequenzzahl eingestellt wird. Wie noch erläutert werden wird, wird der Wert für die Sequenzzahl, die bei dem Schritt 144 erhalten wird, während der gesamten Schreiboperation aufrechterhalten, die durch den HA 28 durchgeführt wird während der Schlitz blockiert ist. Wie noch erläutert werden wird, wird die Sequenzzahl jedem Schreibvorgang zugeordnet, um einen der Datenblöcke 52, 54 einzustellen, zu dem der Schreibvorgang oder Schreibeintrag gehört. Schreibeinträge, die durch den Host 22 ausgeführt werden, werden der laufenden Sequenzzahl zugeordnet. Es ist von Vorteil, dass eine einzelne Schreiboperation die gleiche Sequenzzahl durchgehend beibehält.Following the step 142 step one step 144 on, in which a value for N, that is set for the sequence number. As will be explained later, the value for the sequence number used in the step 144 is maintained throughout the write operation maintained by the HA 28 is performed while the slot is blocked. As will be explained, the sequence number is assigned to each write to one of the data blocks 52 . 54 to which the write or write entry belongs. Write entries made by the host 22 are executed are assigned to the current sequence number. It is advantageous that a single write operation will maintain the same sequence number throughout.

Nachfolgend auf den Schritt S144 folgt ein Testschritt 146, bei dem bestimmt wird, ob das Passwortfeld des Cache-Schlitzes gültig ist. Wie oben erläutert wurde, wird bei dem hier beschriebenen System das Passwortfeld auf einen vorbestimmten Wert eingestellt, um anzuzeigen, dass der Cache-Schlitz bereits in einer der verketteten Listen 74, 76 enthalten ist. Wenn bei dem Testschritt 146 bestimmt wird, dass das Passwortfeld nicht gültig ist (es wird angezeigt, dass der Schlitz ein neuer Schlitz ist und dass keine Zeiger von der Liste 74, 76 auf den Schlitz zeigen), verläuft die Steuerung von dem Schritt 146 zu dem Schritt 148, bei dem der Cache-Stempel des neuen Schlitzes eingestellt wird, indem das Passwort auf den vorbestimmten Wert gestellt wird, das Sequenzzahlfeld auf N eingestellt wird und das Zeigerfeld auf Null eingestellt wird. Bei anderen Ausführungsformen kann das Zeigerfeld so eingestellt werden, dass es auf den Schlitz selbst zeigt.Subsequent to step S144, a test step follows 146 in which it is determined if the password field of the cache slot is valid. As discussed above, in the system described herein, the password field is set to a predetermined value to indicate that the cache slot is already in one of the linked lists 74 . 76 is included. If in the test step 146 it is determined that the password field is not valid (indicating that the slot is a new slot and that there are no pointers from the list 74 . 76 pointing to the slot), the control proceeds from the step 146 to the step 148 in which the cache stamp of the new slot is set by setting the password to the predetermined value, the sequence number field is set to N, and the pointer field is set to zero. In other embodiments, the pointer field may be adjusted to point to the slot itself.

Nachfolgend auf den Schritt 148 folgt ein Schritt 152, bei dem ein Zeiger zu dem neuen Schlitz zu der aktiven einen Liste der Zeigerlisten 74, 76 hinzuaddiert wird. Bei der hier beschriebenen Ausführungsform bestehen die Listen 74, 76 aus kreisförmigen doppelt verketteten Listen und der neue Zeiger wird zu der kreisförmigen doppelt verketteten Liste in einer herkömmlichen Weise hinzuaddiert. Natürlich können andere geeignete Datenstrukturen zum Managen der Listen 74, 76 verwendet werden. Nachfolgend auf den Schritt 152 folgt ein Schritt 154, bei dem Flags eingestellt werden. Bei dem Schritt 154 wird das RDF_WP-Flag (das RDF-Schreib-Aussteh-Flag) gesetzt, um anzuzeigen, dass der Schlitz zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung RDF übertragen werden muss. Zusätzlich wird bei dem Schritt 154 das IN_CACHE-Flag gesetzt, um anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung 172 ausgelesen werden muss. Nachfolgend auf den Schritt 154 folgt ein Schritt 156, bei dem die durch den Host 22 und HA 28 zu schreibenden Daten zu dem Schlitz geschrieben werden. Nachfolgend auf den Schritt 156 folgt ein Schritt 158, bei dem der Schlitz entriegelt wird. Nachfolgend auf den Schritt 158 ist die Verarbeitung dann beendet.Following on the step 148 follows a step 152 in which a pointer to the new slot to the active one list of pointer lists 74 . 76 is added. In the embodiment described here, the lists exist 74 . 76 of circular doubly linked lists and the new pointer is added to the circular doubly linked list in a conventional manner. Of course, other suitable data structures may be used to manage the lists 74 . 76 be used. Following on the step 152 follows a step 154 in which flags are set. At the step 154 the RDF_WP flag (the RDF write pending flag) is set to indicate that the slot is to the remote storage device 26 must be transmitted using RDF. In addition, at the step 154 set the IN_CACHE flag to indicate that the slot is the default logical device 172 must be read. Following on the step 154 follows a step 156 in which the host 22 and HA 28 data to be written to the slot. Following on the step 156 follows a step 158 in which the slot is unlocked. Following on the step 158 then the processing is finished.

Wenn bei dem Testschritt 146 bestimmt wird, dass das Passwortfeld des Schlitzes gültig ist (es wird angezeigt, dass bereits auf den Schlitz durch wenigstens einen Zeiger der Listen 74, 76 gezeigt wird), wird die Steuerung von dem Schritt 146 zu einem Testschritt 162 übertragen, bei dem dann bestimmt wird, ob das Sequenzzahlfeld des Schlitzes gleich ist der momentanen Sequenzzahl N. Es sei darauf hingewiesen, dass es zwei gültige Möglichkeiten für das Sequenzzahlfeld eines Schlitzes gibt, und zwar mit einem gültigen Passwort. Es ist für das Sequenzzahlfeld möglich gleich zu sein mit N, als der laufenden Sequenzzahl. Dies ereignet sich, wenn der Schlitz einem früheren Schreibvorgang mit der Sequenzzahl N entspricht. Die andere Möglichkeit für das Sequenzzahlfeld besteht darin, dass es gleich ist N – 1. Dies ereignet sich, wenn der Schlitz einem früheren Schreibvorgang mit der Sequenzzahl N – 1 entspricht. Irgendein anderer Wert für das Sequenzzahlfeld ist ungültig. Somit kann es für einige Ausführungsformen möglich sein einen Fehler/Gültigkeits-Prüfvorgang bei dem Schritt 162 durchzuführen oder möglicherweise einen Fehler/Gültigkeits-Prüfvorgang gemäß einem getrennten Schritt vorzunehmen. Solch ein Fehler kann in einer geeigneten Weise gehandhabt werden, die auch das Liefern einer Nachricht zu einem Anwender enthalten kann.If in the test step 146 it is determined that the password field of the slot is valid (it is indicated that already on the slot by at least one pointer of the lists 74 . 76 is shown), the control of the step 146 to a test step 162 in which it is then determined whether the sequence number field of the slot is equal to the current sequence number N. It should be noted that there are two valid possibilities for the sequence number field of a slot, with a valid password. It is possible for the sequence number field to be equal to N, as the current sequence number. This occurs when the slot corresponds to an earlier write with the sequence number N. The other possibility for the sequence number field is that it is equal to N-1. This occurs when the slot is in an earlier write to the sequence number N - 1 corresponds. Any other value for the sequence number field is invalid. Thus, for some embodiments, an error / validity checking process may be possible at the step 162 or possibly perform an error / validity check according to a separate step. Such an error may be handled in a suitable manner, which may also include delivering a message to a user.

Wenn bei dem Schritt 162 bestimmt wird, dass der Wert in dem Sequenzzahlfeld des Schlitzes gleich ist der momentanen Sequenzzahl N, ist keine spezielle Verarbeitung erforderlich und die Steuerung wird dann von dem Schritt 162 zu dem Schritt 165 übertragen, der oben erläutert ist, wobei die Daten zu dem Schlitz geschrieben werden. Wenn im anderen Fall der Wert des Sequenzzahlfeldes gleich ist N – 1 (der einzige andere gültige Wert), dann wird die Steuerung von dem Schritt 162 zu einem Schritt 164 übertragen, bei dem ein neuer Schlitz erhalten wird. Der bei dem Schritt 164 erhaltene neue Schlitz kann zum Speichern der zu schreibenden Daten verwendet werden.If at the step 162 it is determined that the value in the sequence number field of the slot is equal to the current sequence number N, no special processing is required and control is then taken from the step 162 to the step 165 described above, wherein the data is written to the slot. In the other case, if the value of the sequence number field is equal to N - 1 (the only other valid value), then control is taken from the step 162 to a step 164 transfer, in which a new slot is obtained. The one at the step 164 The new slot obtained can be used to store the data to be written.

Nachfolgend auf den Schritt 164 folgt ein Schritt 166, bei dem die Daten von dem alten Schlitz zu dem neuen Schlitz kopiert werden, die bei dem Schritt 164 erhalten wurden. Es sei erwähnt, dass die kopierten Daten das RDF_WP-Flag enthalten, welches bei dem Schritt 154 gesetzt worden sein müsste und zwar bei dem früheren Schreibvorgang, wenn der Schlitz zum ersten Mal erzeugt wurde. Nachfolgend auf den Schritt 166 folgt ein Schritt 168, bei dem der Cache-Stempel für den neuen Schlitz gesetzt wird und zwar durch Einstellen des Passwortfeldes auf den geeigneten Wert, Einstellen des Sequenzzahlfeldes auf die laufende Sequenzzahl N und Einstellen des Zeigerfeldes so, dass auf den alten Schlitz gezeigt wird. Nachfolgend auf den Schritt 168 folgt ein Schritt 172, bei dem ein Zeiger zu dem neuen Schlitz hinzuaddiert wird und zwar zu der aktiven einen Liste der verketteten Listen 74, 76. Nachfolgend auf den Schritt 172 folgt ein Schritt 156, der oben erläutert wurde, bei dem die Daten zu dem Schlitz geschrieben werden, der in diesem Fall aus dem neuen Schlitz besteht.Following on the step 164 follows a step 166 in which the data is copied from the old slot to the new slot that is at the step 164 were obtained. It should be noted that the copied data includes the RDF_WP flag which is at step 154 should have been set in the earlier write when the slot was first created. Following on the step 166 follows a step 168 in which the cache stamp for the new slot is set by setting the password field to the appropriate value, setting the sequence number field to the current sequence number N and setting the pointer field to point to the old slot. Following on the step 168 follows a step 172 in which a pointer is added to the new slot to the active a list of linked lists 74 . 76 , Following on the step 172 follows a step 156 which was explained above, in which the data is written to the slot, which in this case consists of the new slot.

Gemäß 6 veranschaulicht ein Flussdiagramm 200 die Schritt, die in Verbindung mit den RAs 30a30c durchgeführt werden, wobei die inaktive eine Liste der Listen 72, 74 abgetastet wird, um die RDF-Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 zu übertragen. Wie oben erläutert wurde zeigt die inaktive Liste der Listen 72, 74 auf Schlitze entsprechend dem N – 1-Zyklus für die R1 Vorrichtung, wenn der N Zyklus zu der R1 Vorrichtung durch den Host geschrieben wird und zwar unter Verwendung der aktiven einen Liste der Listen 72, 74.According to 6 illustrates a flowchart 200 the step, in conjunction with the RAs 30a - 30c the inactive is a list of lists 72 . 74 is sampled to the RDF data from the local storage device 24 to the remote storage device 26 transferred to. As explained above, the inactive list of lists shows 72 . 74 on slots corresponding to the N-1 cycle for the R1 device when the N cycle to the R1 device is written by the host using the active list of the lists 72 . 74 ,

Die Verarbeitung beginnt bei einem ersten Schritt 202, bei dem bestimmt wird, ob irgendwelche Einträge in der inaktiven einen Liste der Listen 72, 74 vorhanden sind. Wenn Daten gesendet werden, werden die entsprechenden Einträge aus der inaktiven einen Liste der Listen 72, 74 entfernt. Zusätzlich werden neue Schreibeinträge zu der aktiven einen Liste der Listen 72, 74 geliefert und nicht allgemein zu der inaktiven einen Liste der Listen 72, 74. Es ist somit möglich (und auch wünschenswert, wie beschrieben wird), dass die inaktive Liste der Listen 72, 74 keine Daten zu bestimmten Zeitpunkt enthält. Wenn bei dem Schritt 202 bestimmt wird, dass keine Daten gesendet werden sollen, dann wird die inaktive Liste der Listen 72, 74 kontinuierlich abgefragt, bis Daten verfügbar werden. Daten zum Senden werden in Verbindung mit einem Zyklusschaltvorgang (der bereits erläutert worden ist) verfügbar, bei dem die inaktive Liste der Listen 72, 74 zu einer aktiven Liste der Listen 72, 74 wird und umgekehrt.Processing begins with a first step 202 in which it is determined if any entries in the inactive list of lists 72 . 74 available. When data is sent, the corresponding entries from the inactive become a list of lists 72 . 74 away. In addition, new write entries to the active list of the lists 72 . 74 delivered and not general to the inactive a list of lists 72 . 74 , It is thus possible (and also desirable, as will be described) that the inactive list of lists 72 . 74 does not contain data at any given time. If at the step 202 is determined that no data should be sent, then the inactive list of lists 72 . 74 continuously polled until data becomes available. Data for transmission is available in connection with a cycle switch (which has already been explained) in which the inactive list of lists 72 . 74 to an active list of lists 72 . 74 and vice versa.

Wenn bei dem Schritt 202 bestimmt wird, dass Daten zum Senden verfügbar sind, wird die Steuerung von dem Schritt 202 zu einem Schritt 204 übertragen, bei dem der Schlitz als korrekt verifiziert wird. Die Verarbeitung, die bei dem Schritt 204 ausgeführt wird, besteht aus einer optionalen ”Gesundheits-Überprüfung”, die eine Verifizierung enthalten kann, dass das Passwortfeld korrekt ist und eine Verifizierung enthalten kann, dass das Sequenzzahlfeld korrekt ist. Wenn in dem Schlitz unkorrekte (unerwartete) Daten vorhanden sind, kann ein Fehlerverarbeitung ausgeführt werden, die eine Unterrichtung eines Anwenders über den Fehler und eine mögliche Fehlerbeseitigungsverarbeitung enthalten kann.If at the step 202 it is determined that data is available for transmission, the control of the step 202 to a step 204 in which the slot is verified as correct. The processing involved in the step 204 is executed, consists of an optional "health check" which may include a verification that the password field is correct and may contain a verification that the sequence number field is correct. If there are incorrect (unexpected) data in the slot, error processing may be performed which may include informing a user of the error and possible debugging processing.

Nachfolgend auf den Schritt 204 folgt ein Schritt 212, bei dem Daten über RDF in einer herkömmlichen Weise gesendet werden. Bei der hier beschriebenen Ausführungsform wird nicht der gesamte Schlitz gesendet. Vielmehr werden lediglich Aufzeichnungen innerhalb des Schlitzes, die den geeigneten Spiegel-Bitsatz enthalten (der Aufzeichnungen angibt, die geändert wurden) zu der entfernt gelegenen Speichervorrichtung 26 gesendet. Bei anderen Ausführungsformen kann es jedoch möglich sein, den gesamten Schlitz bzw. Schlitzinhalt zu senden vorausgesetzt, dass die entfernt gelegene Speichervorrichtung 26 lediglich Daten schreibt, die den Aufzeichnungen entsprechen, die einen geeigneten Spiegel-Bitsatz aufweisen, und andere Daten für eine Spur ignoriert, die gültig oder auch nicht gültig sein können. Nachfolgend auf den Schritt 212 folgt ein Testschritt 214, bei dem bestimmt wird, ob Daten, die gesendet worden sind, durch die R2 Vorrichtung bestätigt worden sind. Wenn dies nicht der Fall ist, werden die Daten wieder gesendet, wie dies durch den Fluss angezeigt ist und zwar von dem Schritt 214 zurück zu dem Schritt 212. Bei anderen Ausführungsformen kann eine abweichende mehr involvierte Verarbeitung dafür angewendet werden, um Daten zu senden und den Empfang derselben zu bestätigen. Solche Verarbeitungen können eine Fehlerreportage und eine alternative Verarbeitung enthalten, die nach einer bestimmten Anzahl von Versuchen die Daten zu senden, welche fehlgeschlagen sind, ausgeführt wird.Following on the step 204 follows a step 212 where data is sent via RDF in a conventional manner. In the embodiment described here, not the entire slot is sent. Rather, only records within the slot that contain the appropriate mirror bit set (indicating records that have changed) are sent to the remote storage device 26 Posted. In other embodiments, however, it may be possible to send the entire slot content, provided that the remote storage device 26 only writes data corresponding to the records having a suitable mirror bit set and ignores other data for a track that may or may not be valid. Following on the step 212 follows a test step 214 in which it is determined whether data that has been sent has been confirmed by the R2 device. If not, the data is retransmitted as indicated by the flow from the step 214 back to the step 212 , In other embodiments, a different more involved Processing can be used to send data and acknowledge receipt. Such processings may include error reporting and alternative processing which, after a certain number of attempts, will send the data which failed.

Wenn bei dem Testschritt 214 einmal bestimmt worden ist, dass die Daten erfolgreich gesendet worden sind, verläuft die Steuerung von dem Schritt 214 zu einem Schritt 216, um das RDF_WP-Flag zu löschen (da die Daten erfolgreich über RDF gesendet worden sind). Nachfolgend auf den Schritt 216 folgt ein Testschritt 218, bei dem bestimmt wird, ob der Schlitz aus einem Duplikat-Schlitz besteht, der in Verbindung mit einem Schreibvorgang zu einem Schlitz erzeugt wurde, welche bereits einen existierenden Eintrag in der inaktiven Liste der Listen 72, 74 aufweist. Diese Möglichkeit wurde oben in Verbindung mit den Schritten 162, 164, 166, 168, 172 erläutert. Wenn bei dem Schritt 218 bestimmt wird, dass der Schlitz aus einem Duplikat-Schlitz besteht, verläuft die Steuerung von dem Schritt 218 zu einem Schritt 222, bei dem der Schlitz zu dem Pool der verfügbaren Schlitze zurückgeführt wird (um wiederverwendet zu werden). Zusätzlich kann der Schlitz auch gealtert werden (oder kann irgendeinen anderen geeigneten Mechanismus umfassen, der bei diesem angewendet wird), um eine unmittelbare Wiederverwendung vor anderen Schlitzen zu realisieren, da die Daten, die in dem Schlitz geliefert werden, nicht für irgendwelche anderen Zwecke gültig sind. Nachfolgend auf den Schritt 222 oder auf den Schritt 218, wenn der Schlitz nicht aus einem Duplikat-Schlitz besteht, folgt ein Schritt 224, bei dem das Passwortfeld des Schlitz-Datenkopfabschnitts gelöst wird, so dass dann, wenn der Schlitz wiederverwendet wird, der Test bei dem Schritt 146 von 5 den Schlitz in richtiger Weise als einen neuen Schlitz klassifiziert.If in the test step 214 Once it has been determined that the data has been sent successfully, control passes from the step 214 to a step 216 to clear the RDF_WP flag (because the data was sent successfully via RDF). Following on the step 216 follows a test step 218 in which it is determined whether the slot consists of a duplicate slot created in connection with a write to a slot which already contains an existing entry in the inactive list of the lists 72 . 74 having. This option was above in connection with the steps 162 . 164 . 166 . 168 . 172 explained. If at the step 218 it is determined that the slot consists of a duplicate slot, control passes from the step 218 to a step 222 in which the slot is returned to the pool of available slots (to be reused). In addition, the slot may also be aged (or may include any other suitable mechanism used therewith) to realize immediate reuse before other slots, since the data provided in the slot will not be valid for any other purposes are. Following on the step 222 or on the step 218 if the slot does not consist of a duplicate slot, a step follows 224 in which the password field of the slot header section is released, so that when the slot is reused, the test at the step 146 from 5 properly classifies the slot as a new slot.

Nachfolgend auf den Schritt 224 folgt ein Schritt 226, bei dem der Eintrag in die inaktive Liste der Listen 72, 74 entfernt wird. Nachfolgend auf den Schritt 226 wird die Steuerung zurück zu dem Schritt 202 geführt, der oben erläutert worden ist, bei dem bestimmt wird, ob zusätzliche Einträge an der inaktiven Liste der Listen 72, 74 vorhanden sind entsprechend den Daten, die übertragen werden sollen.Following on the step 224 follows a step 226 in which the entry in the inactive list of lists 72 . 74 Will get removed. Following on the step 226 the control will go back to the step 202 described above, which determines whether there are additional entries in the inactive list of lists 72 . 74 are present according to the data to be transmitted.

Gemäß 7 veranschaulicht ein Diagramm 240 die Erzeugung und Manipulation von Datenpaketen 56, 58, die von der entfernt gelegenen Speichervorrichtung 26 verwendet werden. Die Daten, die durch die entfernt gelegene Speichervorrichtung über das Verbindungsglied 29 empfangen werden, werden zu einem Cache-Speicher 242 der entfernt gelegenen Speichervorrichtung 26 geliefert. Der Cache 242 kann beispielsweise in dem Speicher 38 der entfernt gelegenen Speichervorrichtung 26 vorgesehen sein. Der Cache 242 enthält eine Vielzahl von Cache-Schlitzen 244246, von denen jeder auf eine Spur der logischen Standardspeichervorrichtung 252 abgebildet sein kann. Der Cache 242 ist ähnlich dem Cache 88 von 3 und kann enthalten, die zu der logischen Standardspeichervorrichtung 252 der entfernt gelegenen Speichervorrichtung 26 ausgelesen werden. Die logische Standardspeichervorrichtung 252 entspricht dem Datenelement 62, welches in 2 gezeigt ist, und den Platten 34a34c, die in 1 gezeigt sind.According to 7 illustrates a diagram 240 the generation and manipulation of data packets 56 . 58 from the remote storage device 26 be used. The data passing through the remote storage device over the link 29 are received, become a cache memory 242 the remote storage device 26 delivered. The cache 242 For example, in the memory 38 the remote storage device 26 be provided. The cache 242 contains a variety of cache slots 244 - 246 each of which is on a track of the standard logical storage device 252 can be pictured. The cache 242 is similar to the cache 88 from 3 and may include that to the standard logical storage device 252 the remote storage device 26 be read out. The standard logical storage device 252 corresponds to the data element 62 which is in 2 shown and the plates 34a - 34c , in the 1 are shown.

Die entfernt gelegene Speichervorrichtung 26 enthält auch ein Paar von lediglich virtuellen Cache-Vorrichtungen 254, 256. Die lediglich virtuellen Cache-Vorrichtungen 254, 256 entsprechen Vorrichtungstabellen, die beispielsweise in dem Speicher 38 der entfernt gelegenen Speichervorrichtung 26 gespeichert sein können. Jeder Spureintrag der Tabellen von jedem der lediglich virtuellen Cache-Vorrichtungen 254, 256 zeigt zu einer Spur der logischen Standardvorrichtung 252 oder zeigt zu einem Schlitz des Cache-Speichers 242. Die lediglich virtuellen Cache-Vorrichtungen sind in einer parallel laufenden US Patentanmeldung beschrieben mit dem Titel ”CACHE-ONLY VIRTUAL DEVICES”, eingereicht am 25. März 2003 mit der Seriennummer 10/396,800, die hier unter Bezugnahme voll miteinbezogen wird.The remote storage device 26 also contains a pair of only virtual cache devices 254 . 256 , The only virtual cache devices 254 . 256 correspond device tables, for example, in the memory 38 the remote storage device 26 can be stored. Each track entry of the tables from each of the only virtual cache devices 254 . 256 shows a trace of the standard logical device 252 or points to a slot of the cache memory 242 , The only virtual cache devices are described in co-pending US Patent Application entitled "CACHE-ONLY VIRTUAL DEVICES" filed Mar. 25, 2003, Serial No. 10 / 396,800, which is incorporated herein by reference in its entirety.

Die Vielzahl der Cache-Schlitze 244246 kann in Verbindung mit Schreibeinträgen zu der logischen Standardvorrichtung 252 verwendet werden und zur gleichen Zeit in Verbindung mit den lediglich virtuellen Cache-Vorrichtungen 254, 256 verwendet werden. Bei einer hier beschriebenen Ausführungsform enthält jeder Spurtabelleneintrag der lediglich virtuellen Cache-Vorrichtungen 254, 256 eine Null, um anzuzeigen, dass die Daten für diese Spur an einer entsprechenden Spur der logischen Standardvorrichtung 252 gespeichert sind. Ansonsten enthält ein Eintrag in der Spurtabelle für jede der lediglich virtuellen Cache-Vorrichtungen 254, 256 einen Zeiger zu einem der Schlitze 244246 in dem Cache 242.The variety of cache slots 244 - 246 can be used in conjunction with write entries to the standard logical device 252 and at the same time in connection with the only virtual cache devices 254 . 256 be used. In one embodiment described herein, each track table entry includes only virtual cache devices 254 . 256 a zero to indicate that the data for that track is on a corresponding track of the standard logical device 252 are stored. Otherwise, an entry in the track table for each of the only virtual cache devices 254 . 256 a pointer to one of the slots 244 - 246 in the cache 242 ,

Jede der lediglich virtuellen Cache-Vorrichtungen 254, 256 entspricht einem der Datenpakete 56, 58. Somit kann zum Beispiel die lediglich virtuelle Cache-Vorrichtung 254 dem Datenpaket 56 entsprechen, während die lediglich virtuelle Cache-Vorrichtung 256 dem Datenpaket 58 entsprechen kann. Bei einer hier beschriebenen Ausführungsform kann eine der lediglich virtuellen Cache-Vorrichtungen 254, 256 als ”aktiv” betrachtet werden, während die andere eine der lediglich virtuellen Cache-Vorrichtungen 254, 256 als ”inaktiv” betrachtet werden kann. Die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 kann den Daten entsprechen, die von der örtlichen Speichervorrichtung 24 empfangen werden (das heißt dem Paket 56), während die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 den Daten entsprechen kann, die zu der logischen Standardvorrichtung 252 hin wieder abgespeichert (geschrieben) werden.Each of the only virtual cache devices 254 . 256 corresponds to one of the data packets 56 . 58 , Thus, for example, the only virtual cache device 254 the data packet 56 while the only virtual cache device 256 the data packet 58 can correspond. In one embodiment described herein, one of the only virtual cache devices 254 . 256 while the other is considered one of the only virtual cache devices 254 . 256 can be considered as "inactive". The inactive device of the only virtual cache devices 254 . 256 can match the data provided by the local storage device 24 be received (that is the package 56 ) while the active device is the only virtual cache devices 254 . 256 may correspond to the data corresponding to the standard logical device 252 back to be saved (written).

Die Daten von der logischen Speichervorrichtung 24, die über das Verbindungsglied 29 empfangen werden, können in einem der Schlitze 244246 des Cache 242 platziert werden. Ein entsprechender Zeiger der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 kann so eingestellt werden, dass er auf die empfangenen Daten zeigt. Nachfolgende Daten, welche die gleiche Sequenzzahl haben, können in einer ähnlichen Weise verarbeitet werden. Bei einer gewissen Stelle liefert die örtliche Speichervorrichtung 24 eine Nachricht, die alle gesendeten Daten unter Verwendung der gleichen Sequenzzahl bestätigt. Nachdem die Daten für eine bestimmte Sequenzzahl einmal bestätigt worden sind, wird die eine Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 aktiv und umgekehrt. An dieser Stelle werden Daten von der nun aktiven einen Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 kopiert, während die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zum Empfangen neuer Daten verwendet wird (mit einer neuen Sequenzzahl), die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet werden.The data from the logical storage device 24 passing over the link 29 can be received in one of the slots 244 - 246 of the cache 242 to be placed. A corresponding pointer of the inactive device of the only virtual cache devices 254 . 256 can be set to point to the received data. Subsequent data having the same sequence number can be processed in a similar manner. At some point, the local storage device will provide 24 a message that confirms all sent data using the same sequence number. Once the data for a particular sequence number has been acknowledged, the one becomes the only virtual cache device 254 . 256 active and vice versa. At this point, data from the now-active one device becomes the only virtual cache devices 254 . 256 to the standard logical device 252 while the inactive device is the only virtual cache device 254 . 256 is used to receive new data (with a new sequence number) from the local storage device 24 to the remote storage device 26 be sent.

Wenn Daten von der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 entfernt werden (was noch näher erläutert wird), kann der entsprechende Eintrag in der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 auf Null gesetzt werden. Zusätzlich können Daten aus dem Cache 244 auch entfernt werden (das heißt es wird der Schlitz zu dem Pool von freien Schlitzen für spätere Verwendung zurückgeführt) vorausgesetzt, dass die Daten in dem Schlitz nicht anderweitig für einen anderen Zweck benötigt werden (zum Beispiel zum Auslesen der logischen Standardvorrichtung 252). Ein Mechanismus kann dafür verwendet werden sicherzustellen, dass Daten aus dem Cache 242 nicht entfernt werden bis alle Spiegel (inklusive der lediglich virtuellen Cache-Vorrichtungen 254, 256) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US Patent Nr. 5,537,568 beschrieben, ausgegeben am 16. Juli 1996 und auch in der US Patentanmeldung Nr. 09/850,551, eingereicht am 7. Juli 2001, die beide hier durch Bezugnahme miteinbezogen werden.When data from the active device of the only virtual cache devices 254 . 256 can be removed (which will be explained in more detail), the corresponding entry in the active device of the only virtual cache devices 254 . 256 set to zero. Additionally, data may be from the cache 244 also be removed (that is, the slot is returned to the pool of free slots for later use) provided that the data in the slot is not otherwise needed for another purpose (for example, to read the standard logical device 252 ). A mechanism can be used to ensure that data is from the cache 242 can not be removed until all mirrors (including only virtual cache devices 254 . 256 ) no longer use the data. Such a mechanism is for example in the U.S. Patent No. 5,537,568 and U.S. Patent Application No. 09 / 850,551, filed July 7, 2001, both of which are incorporated herein by reference.

Bei einigen hier erläuterten Ausführungsformen kann die entfernt gelegene Speichervorrichtung 26 die verketteten Listen 258, 262 ähnlich den Listen 74, 76 beibehalten, die durch die örtliche Speichervorrichtung 24 verwendet werden. Die Listen 258, 262 können Informationen enthalten, welche die Schlitze der entsprechenden lediglichen Cache-Vorrichtungen 254, 256 identifizieren, welche nicht modifiziert worden sind, wobei eine der Listen 258, 262 einer der lediglich virtuellen Cache-Vorrichtungen 254, 256 entspricht und die andere der Listen 258, 262 der anderen einen Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 entspricht. Wie bereits erläutert worden ist können die Listen 258, 262 dazu verwendet werden, um das Wiederabspeichern von Daten von den lediglich virtuellen Cache-Vorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 hin zu vereinfachen.In some embodiments discussed herein, the remote storage device may 26 the linked lists 258 . 262 similar to the lists 74 . 76 maintained by the local storage device 24 be used. The lists 258 . 262 may contain information about the slots of the corresponding single cache devices 254 . 256 identify which have not been modified using one of the lists 258 . 262 one of the only virtual cache devices 254 . 256 corresponds and the other of the lists 258 . 262 the other is an apparatus of only virtual cache devices 254 . 256 equivalent. As has already been explained, the lists 258 . 262 to be used for restoring data from the cache only virtual devices 254 . 256 to the standard logical device 252 to simplify.

Gemäß 8 veranschaulicht ein Flussdiagramm 270 die Schritte, die durch die entfernt gelegene Speichervorrichtung 26 in Verbindung mit der Verarbeitung von Daten für eine Sequenzzahlbestätigung durchgeführt werden, welche durch die örtliche Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet wird. Wie bereits erläutert worden ist inkrementiert die örtliche Speichervorrichtung 24 periodisch die Sequenzzahlen. Wenn dies stattfindet, beendet die örtliche Speichervorrichtung 24 das Senden aller Daten für die frühere Sequenzzahl und sendet dann eine Bestätigungsnachricht für die frühere Sequenzzahl.According to 8th illustrates a flowchart 270 the steps taken by the remote storage device 26 in connection with the processing of data for a sequence number confirmation performed by the local storage device 24 to the remote storage device 26 is sent. As already explained, the local storage device increments 24 periodically the sequence numbers. When this happens, the local storage device stops 24 sending all the data for the previous sequence number and then sending an acknowledgment message for the previous sequence number.

Die Verarbeitung beginnt bei einem ersten Schritt 272, bei dem die Bestätigung empfangen wird. Nachfolgend auf den Schritt 272 folgt ein Testschritt 274, bei dem bestimmt wird, ob die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 der entfernt gelegenen Speichervorrichtung 26 leer ist. Wie bereits erläutert worden ist wird die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 der entfernt gelegenen Speichervorrichtung 26 dazu verwendet, Daten von der örtlichen Speichervorrichtung 24 zu sammeln, die unter Verwendung von RDF gesendet wurden, während die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 für die logische Standardvorrichtung 252 wiederhergestellt wird.Processing begins with a first step 272 in which the confirmation is received. Following on the step 272 follows a test step 274 in which it is determined whether the active device is the only virtual cache device 254 . 256 the remote storage device 26 is empty. As already explained, the inactive device becomes the only virtual cache device 254 . 256 the remote storage device 26 used data from the local storage device 24 while the active device is the only virtual cache device 254 . 256 for the standard logical device 252 is restored.

Wenn bei dem Testschritt 274 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 nicht leer ist, wird die Steuerung von dem Testschritt 274 zu einem Schritt 276 übertragen, bei dem die Wiederherstellung für die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 vervollständigt wird und zwar bevor irgendwelche weitere Verarbeitungen ausgeführt werden. Die Wiederherstellung von Daten von der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 wird mehr in Einzelheiten an späterer Stelle beschrieben. Es ist von Vorteil, dass die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 leer ist bevor die Bestätigung gehandhabt wird und die Wiederherstellung der Daten für die nächste Sequenzzahl beginnt.If in the test step 274 it is determined that the active device is the only virtual cache device 254 . 256 is not empty, the control of the test step 274 to a step 276 in which the restoration for the active device of the only virtual cache devices 254 . 256 is completed before any further processing is performed. The restoration of data from the active device of the cache only virtual devices 254 . 256 will be described in more detail later. It is advantageous that the active device be the only virtual cache devices 254 . 256 is empty before the acknowledgment is handled and data recovery begins for the next sequence number.

Nachfolgend auf den Schritt 276 oder nachfolgend auf den Schritt 274, wenn die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 als leer bestimmt wird, folgt ein Schritt 278, bei dem die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 inaktivgemacht wird. Nachfolgend auf den Schritt 278 folgt ein Schritt 282, bei dem die früher inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 (das heißt die eine, die vor der Ausführung des Schrittes 278 inaktiv war) aktiv gemacht wird. Das Umwechseln der aktiven und inaktiven lediglich virtuellen Cache-Vorrichtungen 254, 256 bei den Schritten 278, 282 bildet eine Vorbereitung für die nun inaktive (und leere) Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 mit dem Empfang von Daten von der logischen Speichervorrichtung 24 für die nächste Sequenzzahl zu beginnen. Following on the step 276 or following the step 274 when the active device is the only virtual cache device 254 . 256 is determined to be empty, followed by a step 278 in which the active device is the only virtual cache devices 254 . 256 is made inactive. Following on the step 278 follows a step 282 in which the formerly inactive device is the only virtual cache device 254 . 256 (ie the one that precedes the execution of the step 278 was inactive) is made active. Switching the active and inactive only virtual cache devices 254 . 256 at the steps 278 . 282 forms a preparation for the now inactive (and empty) device of the only virtual cache devices 254 . 256 with the reception of data from the logical storage device 24 to start for the next sequence number.

Nachfolgend auf den Schritt 282 folgt ein Schritt 284, bei dem die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 der entfernt gelegenen Speichervorrichtung 26 hin wiederhergestellt wird. Das Wiederherstellen der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 hin, wird mehr in Einzelheiten im Folgenden beschrieben. Es sei jedoch darauf hingewiesen, dass bei einigen Ausführungsformen der Wiederherstellungsprozess begonnen wird, jedoch nicht notwendigerweise vervollständigt wird, und zwar bei dem Schritt 284. Nachfolgend auf den Schritt 284 folgt ein Schritt 286, bei dem bestätigt wird, dass das, was von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet wurde, zurückbestätigt wird und zwar zu der örtlichen Speichervorrichtung 24, so dass die örtliche Speichervorrichtung 24 darüber informiert wird, dass die Bestätigung erfolgreich war. Nachfolgend auf den Schritt 286 ist dann die Verarbeitung vervollständigt.Following on the step 282 follows a step 284 in which the active device is the only virtual cache devices 254 . 256 to the standard logical device 252 the remote storage device 26 is restored. Restoring the active device of the only virtual cache devices 254 . 256 to the standard logical device 252 will be described in more detail below. It should be noted, however, that in some embodiments, the recovery process is begun but not necessarily completed at the step 284 , Following on the step 284 follows a step 286 in which it is confirmed that what is available from the local storage device 24 to the remote storage device 26 is sent back to the local storage device 24 so that the local storage device 24 informed that the confirmation was successful. Following on the step 286 then the processing is completed.

Gemäß 9 veranschaulicht ein Flussdiagramm 300 mehr in Einzelheiten die Schritte 276, 284 von 8, wobei die entfernt gelegene Speichervorrichtung 26 die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 wiederherstellt. Die Verarbeitung beginnt bei einem ersten Schritt 302, bei dem ein Zeiger eingestellt wird, um auf den ersten Schlitz der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu zeigen. Der Zeiger wird dazu verwendet, um durch jeden Spurtabelleneintrag der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 hindurchzuschreiten (iterate), von denen jede individuell verarbeitet wird. Nachfolgend dem Schritt 302 folgt ein Testschritt 304, bei dem bestimmt wird, ob die Spur der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256, die verarbeitet wird, auf die logische Standardvorrichtung 252 zeigt. Wenn dies der Fall ist, gibt es dann nichts, um wiederhergestellt zu werden. Im anderen Fall wird die Steuerung von dem Schritt 304 zu einem Schritt 306 übertragen, bei dem der entsprechende Schlitz der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 verriegelt wird.According to 9 illustrates a flowchart 300 more in detail the steps 276 . 284 from 8th wherein the remote storage device 26 the active device of the only virtual cache devices 254 . 256 restores. Processing begins with a first step 302 in which a pointer is adjusted to the first slot of the active device of the only virtual cache devices 254 . 256 to show. The pointer is used to move through each track table entry of the active virtual cache device only device 254 . 256 pass through (iterate), each of which is processed individually. Following the step 302 follows a test step 304 in which it is determined whether the track is the active device of the only virtual cache devices 254 . 256 which is processed on the standard logical device 252 shows. If so, then there is nothing to restore. Otherwise, the control of the step 304 to a step 306 in which the corresponding slot of the active device of the only virtual cache devices 254 . 256 is locked.

Nachfolgend auf den Schritt 306 folgt ein Testschritt 308, bei dem bestimmt wird, ob der entsprechende Schlitz der logischen Standardvorrichtung 252 bereits in dem Cache der entfernt gelegenen Speichervorrichtung 26 vorhanden ist. Wenn dies der Fall ist wird die Steuerung von dem Testschritt 308 zu einem Schritt 312 übertragen, bei dem der Schlitz der logischen Standardvorrichtung verriegelt oder blockiert wird. Nachfolgend dem Schritt 312 folgt ein Schritt 314, bei dem die Daten von der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 mit den Daten in dem Cache für die logische Standardvorrichtung 252 gemischt werden. Das Mischen der Daten bei dem Schritt 314 involviert das Überschreiben der Daten für die logische Standardvorrichtung mit den neuen Daten der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256. Es sei darauf hingewiesen, dass bei den Ausführungsformen, die für die Aufzeichnung von Werte-Flags Rechnung tragen, es möglich sein kann die neuen Aufzeichnungen von der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 ODER zu verknüpfen und zwar mit den Aufzeichnungen der logischen Standardvorrichtung 252 in dem Cache. Das heißt wenn die Aufzeichnungen verschachtelt sind, ist es nur erforderlich die Aufzeichnungen von der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu verwenden, die geändert wurden und dann die Aufzeichnungen zu dem Cache-Schlitz der logischen Standardvorrichtung 252 zu liefern. Nachfolgend auf den Schritt 314 folgt ein Schritt 316, bei dem der Schlitz der logischen Standardvorrichtung 252 entriegelt wird. Nachfolgend dem Schritt 316 folgt ein Schritt 318, bei dem der Schlitz der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256, der verarbeitet wird, ebenfalls entriegelt wird.Following on the step 306 follows a test step 308 in which it is determined whether the corresponding slot of the standard logical device 252 already in the cache of the remote storage device 26 is available. If so, control is from the test step 308 to a step 312 in which the slot of the standard logical device is locked or blocked. Following the step 312 follows a step 314 in which the data is from the active device of the only virtual cache devices 254 . 256 with the data in the cache for the standard logical device 252 be mixed. Mixing the data at the step 314 involves overwriting the data for the standard logical device with the new active device data of the cache only virtual devices 254 . 256 , It should be noted that in the embodiments that accommodate the recording of value flags, it may be possible to keep the new records from the active device of the cache only virtual devices 254 . 256 OR to be linked with the recordings of the standard logical device 252 in the cache. That is, if the records are interleaved, then it is only necessary to keep the records from the active cache only virtual device 254 . 256 to be used, and then the records to the cache slot of the standard logical device 252 to deliver. Following on the step 314 follows a step 316 in which the slot of the standard logical device 252 is unlocked. Following the step 316 follows a step 318 in which the slot is the active device of the only virtual cache devices 254 . 256 which is being processed is also unlocked.

Wenn bei dem Testschritt 308 bestimmt wird, dass der entsprechende Schlitz der logischen Standardvorrichtung 252 nicht im Cache ist, verläuft die Steuerung von dem Testschritt 308 zu einem Schritt 322, bei dem der Spureintrag für den Schlitz der logischen Standardvorrichtung 252 geändert wird, um anzuzeigen, dass der Schlitz der logischen Standardvorrichtung 252 im Cache ist (zum Beispiel kann ein IN_CACHE-Flag gesetzt werden) und nicht ausgelesen werden braucht. Wie noch erläutert werden wird brauchen bei einigen Ausführungsformen lediglich Aufzeichnungen der Spur, die einen geeigneten Spiegel-Bitsatz aufweisen, ausgelesen zu werden. Nachfolgend auf den Schritt 322 folgt ein Schritt 324, bei dem Flag für die Spur gesetzt werden kann, um anzuzeigen, dass die Daten für die Spur in dem Cache sind.If in the test step 308 it is determined that the corresponding slot of the standard logical device 252 is not in the cache, control passes from the test step 308 to a step 322 in which the track entry for the slot of the standard logical device 252 is changed to indicate that the slot of the standard logical device 252 is in the cache (for example, an IN_CACHE flag can be set) and does not need to be read out. As will be explained, in some embodiments, only records of the track that have a suitable mirror bit set need to be read out. Following on the step 322 follows a step 324 , at the flag for the track can be set to indicate that the data for the track is in the cache.

Nachfolgend dem Schritt 324 folgt ein Schritt 326, bei dem der Schlitzzeiger für die logische Standardvorrichtung 252 geändert wird, um auf den Schlitz in dem Cache zu zeigen. Nachfolgend dem Schritt 326 folgt ein Testschritt 328, bei dem bestimmt wird, ob die bei den Schritten 322, 324, 326 ausgeführten Operationen erfolgreich waren. In einigen Fällen kann eine einzelne Operation, die als ”vergleichen und umlagern”-Operation bezeichnet wird, dazu verwendet werden, um die Schritte 322, 324, 326 auszuführen. Wenn diese Operationen aus irgendeinem Grund nicht erfolgreich sind, wird die Steuerung von dem Schritt 328 zurück zu dem Schritt 308 übertragen, um erneut zu prüfen, ob die entsprechende Spur der logischen Standardvorrichtung 252 in dem Cache ist. Im anderen Fall, wenn bei dem Testschritt 328 bestimmt wird, das die früheren Operationen erfolgreich waren, wird die Steuerung von dem Testschritt 328 zu dem Schritt 318 übertragen, der oben erläutert wurde.Following the step 324 follows a step 326 in which the slot pointer for the standard logical device 252 is changed to point to the slot in the cache. Following the step 326 follows a test step 328 in which determines if the steps 322 . 324 . 326 executed operations were successful. In some cases, a single operation, called a "compare and relocate" operation, can be used to complete the steps 322 . 324 . 326 perform. If these operations are unsuccessful for any reason, control will be taken from the step 328 back to the step 308 to recheck if the corresponding lane of the standard logical device 252 is in the cache. In the other case, if in the test step 328 it is determined that the previous operations were successful, control of the test step 328 to the step 318 transferred, which was explained above.

Nachfolgend dem Schritt 318 folgt ein Testschritt 332, bei dem bestimmt wird, ob der Cache-Schlitz der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 (die wiederhergestellt wird) noch immer verwendet wird. In einigen Fällen ist es möglich, dass der Schlitz für die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 durch einen anderen Spiegel verwendet wird. Wenn bestimmt wird und zwar bei dem Testschritt 332, dass der Schlitz der lediglich virtuellen Cache-Vorrichtung durch einen anderen Spiegel nicht verwendet wird, wird die Steuerung von dem Testschritt 332 zu einem Schritt 334 übertragen, bei dem der Schlitz für die Verwendung durch andere Prozesse freigegeben wird (zum Beispiel wieder in den Pool der verfügbaren Schlitze zurück übertragen wird, wie dies bereits erläutert worden ist). Nachfolgend dem Schritt 334 folgt ein Schritt 336, um auf den nächsten Schlitz zu zeigen, um den nächsten Schlitz der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu verarbeiten. Es sei darauf hingewiesen, dass der Schritt 336 auch von dem Testschritt 332 aus erreicht wird, wenn bei dem Schritt 332 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 noch durch irgendeinen anderen Spiegel verwendet wird. Es sei auch erwähnt, dass der Schritt 336 von dem Testschritt 304 erreicht werden kann, wenn bei dem Schritt 304 bestimmt wird, dass für den in Bearbeitung befindlichen Schlitz die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 zeigt. Nachfolgend dem Schritt 336 folgt ein Testschritt 338, bei dem bestimmt wird, ob mehrere Schlitze der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 verarbeitet werden. Wenn dies nicht der Fall ist, wird die Verarbeitung vervollständigt. Ansonsten bzw. im anderen Fall wird die Steuerung von dem Testschritt 338 zurück zu dem Schritt 304 übertragen.Following the step 318 follows a test step 332 in which it is determined whether the active device cache slot is the only virtual cache device 254 . 256 (which is being restored) is still being used. In some cases, it is possible for the active device slot to be the only virtual cache device 254 . 256 is used by another mirror. When it is determined, in the test step 332 in that the slot of the only virtual cache device is not used by another mirror, the control of the test step 332 to a step 334 in which the slot is released for use by other processes (eg, retransmitted back into the pool of available slots, as already explained). Following the step 334 follows a step 336 to point to the next slot, to the next slot of the active cache only virtual device 254 . 256 to process. It should be noted that the step 336 also from the test step 332 is reached when at the step 332 it is determined that the active device is the only virtual cache device 254 . 256 is still used by any other mirror. It should also be noted that the step 336 from the test step 304 can be achieved when at the step 304 it is determined that, for the slot being processed, the active device is the only virtual cache device 254 . 256 to the standard logical device 252 shows. Following the step 336 follows a test step 338 in which it is determined whether multiple slots of the active device of the only virtual cache devices 254 . 256 are processed. If this is not the case, the processing is completed. Otherwise, or in the other case, the control of the test step 338 back to the step 304 transfer.

Bei einer anderen Ausführungsform ist es möglich Listen zu konstruieren und zwar von modifizierten Schlitzen für den empfangenen Datenblock 56 entsprechend dem N – 1-Zyklus an der entfernt gelegenen Speichervorrichtung 26, wie die Listen 258, 262, die in 7 gezeigt sind. Wenn die Daten empfangen werden, konstruiert die entfernte gelegene Speichervorrichtung 26 eine verkettete Liste von modifizierten Schlitzen. Die Listen, die konstruiert werden, können kreisförmig, linear (mit einer Null-Beendigung) oder gemäß irgendeinem geeigneten Design konstruiert sein. Die Listen können dann dazu verwendet werden, um die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 254, 256 wiederherzustellen.In another embodiment, it is possible to construct lists of modified slots for the received data block 56 corresponding to the N-1 cycle at the remote storage device 26 like the lists 258 . 262 , in the 7 are shown. When the data is received, the remote storage device constructs 26 a linked list of modified slots. The lists that are constructed may be circular, linear (with zero termination), or designed according to any suitable design. The lists may then be used to identify the active device of the cache only virtual devices 254 . 256 restore.

Das Flussdiagramm 300 von 9 zeigt zwei alternative Pfade 342, 344, die den Betrieb der Ausführungsformen veranschaulichen, bei denen eine Liste von modifizierten Schlitzen verwendet wird. Bei dem Schritt 302 wird ein Zeiger (der für die Iteration durch die Liste der modifizierten Schlitze verwendet wird) dazu gebracht auf das erste Element der Liste zu zeigen. Nachfolgend dem Schritt 302 folgt ein Schritt 306, der über den alternativen Pfad 342 erreicht werden kann. Bei den Ausführungsformen, welche die Listen der modifizierten Schlitze verwenden, wird der Testschritt 304 nicht benötigt, da keine Schlitze auf der Liste zu der logischen Standardvorrichtung 252 zeigen sollten.The flowchart 300 from 9 shows two alternative paths 342 . 344 illustrating the operation of the embodiments using a list of modified slots. At the step 302 For example, a pointer (used for the iteration through the modified slot list) is made to point to the first element of the list. Following the step 302 follows a step 306 that's about the alternative path 342 can be achieved. In the embodiments using the lists of modified slots, the test step becomes 304 not needed because there are no slots on the list to the standard logical device 252 should show.

Nachfolgend dem Schritt 306 wird die Verarbeitung in der oben erläuterten Weise fortgesetzt und zwar entsprechend der früheren Ausführungsform mit der Ausnahme, dass der Schritt 336 eine Durchquerung der Liste der modifizierten Schlitze betrifft und nicht ein Zeigen auf den nächsten Schlitz in der COVD. In ähnlicher Weise wird bei dem Test bei dem Schritt 338 bestimmt, ob der Zeiger sich an dem Ende der Liste befindet (oder zurück zum Anfang im Falle einer kreisförmig verketteten Liste). Auch wenn bei dem Schritt 338 bestimmt wird, dass mehr Schlitze vorhanden sind, die verarbeitet werden müssen, wird die Steuerung von dem Schritt 338 zu dem Schritt 306 übertragen, wie dies durch den alternativen Pfad 344 veranschaulicht ist. Wie oben dargelegt wurde kann bei Ausführungsformen, die eine Liste der modifizierten Schlitze verwenden, der Schritt 304 eliminiert werden.Following the step 306 processing continues in the manner explained above according to the previous embodiment, except that step 336 a traversal of the modified slots list and not a pointing to the next slot in the COVD. Similarly, in the test at step 338 determines if the pointer is at the end of the list (or back to the beginning in the case of a circular linked list). Even if at the step 338 it is determined that there are more slots that need to be processed, control of the step 338 to the step 306 transfer, as indicated by the alternative path 344 is illustrated. As stated above, in embodiments using a list of modified slots, step 304 be eliminated.

Gemäß 10 veranschaulicht ein Flussdiagramm 350 die Schritte, die in Verbindung mit der logischen Speichervorrichtung 24 ausgeführt werden und zwar beim Erhöhen der Sequenzzahl. Die Verarbeitung beginnt bei einem ersten Schritt 352, bei dem die logische Speichervorrichtung 24 wenigstens M Sekunden vor der Erhöhung der Sequenzzahl wartet. Bei einer hier erläuterten Ausführungsform hat M die Größe von dreißig, jedoch kann M auch irgendeine andere Zahl haben. Große Werte für M erhöhen die Menge der Daten, die verloren gehen können, wenn die Kommunikation zwischen den Speichervorrichtungen 24, 26 unterbrochen wird. Jedoch erhöhen kleinere Werte für M den Gesamtbetrag des Overhead, der durch das häufigere Inkrementieren der Sequenzzahl verursacht wird.According to 10 illustrates a flowchart 350 the steps involved in connection with the logical storage device 24 be executed while increasing the sequence number. The Processing starts with a first step 352 in which the logical storage device 24 wait at least M seconds before increasing the sequence number. In one embodiment discussed herein, M has the size of thirty, but M may also have some other number. Large values for M increase the amount of data that can be lost when communicating between the storage devices 24 . 26 is interrupted. However, smaller values for M increase the total amount of overhead caused by more frequent incrementing of the sequence number.

Nachfolgend auf den Schritt 352 folgt ein Testschritt 354, bei dem bestimmt wird, ob alle die HAs der örtlichen Speichervorrichtung 24 ein Bit gesetzt haben, welches anzeigt, dass die HAs alle ihre I/Os für eine frühere Sequenzzahl vervollständigt haben. Wenn sich die Sequenzzahl ändert, nimmt jede der HAs die Änderung wahr und setzt ein Bit, welches anzeigt, dass alle I/Os der früheren Sequenzzahl vervollständigt wurden. Wenn beispielsweise die Sequenzzahl sich von N – 1 nach N ändert, setzt ein HA das Bit, wenn die HA alle I/Os für die Sequenzzahl N – 1 vervollständigt hat. Es sei darauf hingewiesen, dass in einigen Fällen ein einzelnes I/O für ein HA eine lange Zeit beanspruchen kann und noch im Laufen begriffen sein kann, selbst nachdem die Sequenzzahl geändert wurde. Es sei auch darauf hingewiesen, dass für einige Systeme ein unterschiedlicher Mechanismus verwendet werden kann, um zu bestimmen, ob alle die HAs ihre N – 1 I/Os vervollständigt haben. Der andersartige Mechanismus kann ein Prüfen der Vorrichtungstabellen in dem Speicher 37 enthalten.Following on the step 352 follows a test step 354 in which it is determined if all the HAs of the local storage device 24 have set a bit indicating that the HAs have completed all their I / Os for an earlier sequence number. As the sequence number changes, each of the HAs perceives the change and sets a bit indicating that all I / Os of the previous sequence number have been completed. For example, if the sequence number changes from N-1 to N, a HA sets the bit when the HA has completed all the I / Os for the sequence number N-1. It should be noted that in some cases, a single I / O for a HA may take a long time and may still be running even after the sequence number has been changed. It should also be noted that for some systems a different mechanism can be used to determine if all the HAs have completed their N-1 I / Os. The alternative mechanism may be to check the device tables in the memory 37 contain.

Wenn bei dem Testschritt 354 bestimmt wird, dass die I/Os von der früheren Sequenzzahl vervollständigt worden sind, wird die Steuerung von dem Schritt 354 zu einem Testschritt 356 übertragen, bei dem bestimmt wird, ob die aktive Liste der Listen 74, 76 leer ist. Es sei erwähnt, dass ein Sequenzzahl-Umschalten so lange nicht ausgeführt werden muss, bis alle Daten entsprechend der inaktiven Liste der Listen 74, 76 vollständig von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung des RDF-Protokolls übertragen worden sind. Wenn einmal die aktive Liste der Listen 74, 76 als leer bestimmt worden ist, wird die Steuerung von dem Schritt 356 zu einem Schritt 358 übertragen, bei dem eine Bestätigung für die frühere Sequenzzahl von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet wird. Wie weiter oben erläutert worden ist, bewirkt die entfernt gelegene Speichervorrichtung 26, welche eine Bestätigungsnachricht für eine bestimmte Sequenzzahl empfängt, dass die entfernt gelegene Speichervorrichtung 26 die Daten wiederherstellt und zwar entsprechend der Sequenzzahl.If in the test step 354 it is determined that the I / Os have been completed from the previous sequence number, the control of the step 354 to a test step 356 in which it is determined whether the active list of lists 74 . 76 is empty. It should be noted that a sequence number switching does not have to be performed until all data corresponding to the inactive list of lists 74 . 76 completely from the local storage device 24 to the remote storage device 26 have been transmitted using the RDF protocol. If once the active list of lists 74 . 76 has been determined to be empty, the control of the step 356 to a step 358 in which a confirmation for the earlier sequence number from the local storage device 24 to the remote storage device 26 is sent. As explained above, the remote storage device operates 26 receiving a confirmation message for a particular sequence number that the remote storage device 26 restores the data according to the sequence number.

Nachfolgend dem Schritt 358 folgt ein Schritt 362, bei dem das Kopieren der Daten für die inaktive Liste der Listen 74, 76 ausgesetzt wird. Wie bereits erläutert worden ist wird die inaktive Liste der Listen abgetastet, um entsprechende Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 zu senden. Es ist nützlich, das Kopieren der Daten so lange auszusetzen, bis die Sequenzzahlumschaltung vervollständigt worden ist. Bei einer hier beschriebenen Ausführungsform wird das Aussetzen dadurch vorgesehen, indem eine Nachricht zu den RAs 30a30c gesendet wird. Es ist jedoch für Fachleute offensichtlich, dass bei Ausführungsformen, die andere Komponenten verwenden, zur Vereinfachung des Sendevorgangs von Daten unter Verwendung des hier beschriebenen Systems das Aussetzen des Kopiervorgangs dadurch vorgesehen werden kann, indem geeignete Nachrichten/Befehle zu den anderen Komponenten gesendet werden.Following the step 358 follows a step 362 in which copying the data for the inactive list of lists 74 . 76 is suspended. As already explained, the inactive list of lists is sampled to receive corresponding data from the local storage device 24 to the remote storage device 26 to send. It is useful to suspend copying the data until the sequence count switch is completed. In one embodiment described herein, exposure is provided by sending a message to the RAs 30a - 30c is sent. However, it will be apparent to those skilled in the art that in embodiments using other components to facilitate the transmission of data using the system described herein, the suspension of copying may be provided by sending appropriate messages / commands to the other components.

Nachfolgend auf den Schritt 362 folgt ein Schritt 364, bei dem die Sequenzzahl inkrementiert wird. Nachfolgend dem Schritt 364 folgt ein Schritt 366, bei dem die Bits für die HAs, die bei dem Testschritt 354 verwendet werden, alle gelöscht werden, so dass die Bits erneut in Verbindung mit dem Inkrementieren der Sequenzzahl gesetzt werden können. Nachfolgend dem Schritt 366 folgt ein Testschritt 372, bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung 26 die Betätigungsnachricht, di bei dem Schritt 358 gesendet wird, bestätigt oder anerkannt hat. Das Bestätigen der Bestätigungsnachricht oder Zusagenachricht wurde weiter oben in Verbindung mit 8 erläutert. Wenn einmal bestimmt worden ist, dass die entfernt gelegene Speichervorrichtung 26 die Bestätigungsnachricht oder Zusagenachricht, die bei dem Schritt 358 gesendet wird, bestätigt hat, wird die Steuerung von dem Schritt 372 zu einem Schritt 374 übertragen, bei dem das Aussetzen des Kopierens, welches bei dem Schritt 362 vorgesehen wurde, gelöscht wird, so dass der Kopiervorgang wiederaufgenommen werden kann. Nachfolgend dem Schritt 374 ist dann die Verarbeitung vervollständigt. Es sei darauf hingewiesen, dass es möglich ist, von dem Schritt 374 zurück zu dem Schritt 352 zu gehen, um einen neuen Zyklus zu beginnen, um das Inkrementieren der Sequenzzahl fortzusetzen.Following on the step 362 follows a step 364 in which the sequence number is incremented. Following the step 364 follows a step 366 in which the bits for the HAs used in the test step 354 all are cleared so that the bits can be re-set in conjunction with incrementing the sequence number. Following the step 366 follows a test step 372 in which it is determined whether the remote storage device 26 the actuation message, ie at the step 358 is sent, confirmed or acknowledged. The confirmation of the confirmation message or promise message has been discussed above in connection with 8th explained. Once it has been determined that the remote storage device 26 the confirmation message or promise message that is in the step 358 is sent, the control of the step 372 to a step 374 transferred, in which the suspension of copying, which in the step 362 is provided, is deleted, so that the copying process can be resumed. Following the step 374 then the processing is completed. It should be noted that it is possible from the step 374 back to the step 352 to go to start a new cycle to continue incrementing the sequence number.

Es ist ebenso möglich COVDs bei der R1 Vorrichtung zu verwenden, um Schlitze zu sammeln, die den aktiven Daten und den inaktiven Datenpakten zugeordnet sind. In diesem Fall kann genauso wie bei der R2 Vorrichtung eine COVD der inaktiven Sequenzzahl zugeordnet werden und eine andere COVD kann der aktiven Sequenzzahl zugeordnet werden. Dies wird weiter unten beschrieben.It is also possible to use COVDs on the R1 device to collect slots associated with the active data and the inactive data packets. In this case, as with the R2 device, one COVD may be assigned to the inactive sequence number and another COVD may be assigned to the active sequence number. This will be described below.

Gemäß 11 veranschaulicht ein Diagramm 400 Elemente, die zum Konstruieren und Aufrechterhalten der Datenpakete 52, 54 verwendet werden. Eine logische Standardvorrichtung 402 enthält Daten, die durch den Host 22 geschrieben werden und die dem Datenelement 51 von 2 und den Platten 33a33c von 1 entsprechen. Die logische Standardvorrichtung 402 enthält Daten, die durch den Host 22 zu der logischen Speichervorrichtung 24 hin geschrieben wurden. According to 11 illustrates a diagram 400 Elements used to construct and maintain the data packets 52 . 54 be used. A standard logical device 402 Contains data by the host 22 be written and the data element 51 from 2 and the plates 33a - 33c from 1 correspond. The standard logical device 402 Contains data by the host 22 to the logical storage device 24 written down.

Es werden zwei lediglich virtuelle Cache-Vorrichtungen 404, 406 in Verbindung mit der logischen Standardvorrichtung 402 verwendet. Die den lediglich virtuellen Cache-Vorrichtungen 404, 406 entsprechenden Vorrichtungstabellen können beispielsweise in dem Speicher 37 der örtlichen Speichervorrichtung 42 gespeichert werden. Jeder Spureintrag der Tabellen von jeder der lediglich virtuellen Cache-Vorrichtungen 404, 406 zeigt entweder auf eine Spur der logischen Standardvorrichtung 402 oder zeigt auf einen Schlitz eines Cache 408, der in Verbindung mit der logischen Speichervorrichtung 24 verwendet wird. Bei einigen Ausführungsformen kann der Cache 408 in dem Speicher 37 der logischen Speichervorrichtung 24 vorgesehen sein.There are two only virtual cache devices 404 . 406 in conjunction with the standard logical device 402 used. The only virtual cache devices 404 . 406 corresponding device tables can, for example, in the memory 37 the local storage device 42 get saved. Each track entry of the tables from each of the only virtual cache devices 404 . 406 indicates either a trace of the standard logical device 402 or points to a slot of a cache 408 that is connected to the logical storage device 24 is used. In some embodiments, the cache may be 408 in the store 37 the logical storage device 24 be provided.

Der Cache 408 enthält eine Vielzahl von Cache-Schlitzen 412414, die in Verbindung mit Schreibeinträgen zu der logischen Standardvorrichtung 402 verwendet werden können und zur gleichen Zeit in Verbindung mit den lediglich virtuellen Cache-Vorrichtungen 404, 406 verwendet werden. Bei einer Ausführungsform enthält jeder Spurtabelleneintrag der lediglich virtuellen Cache-Vorrichtungen 404, 406 eine Null, um auf eine entsprechende Spur der logischen Standardvorrichtung 402 zu zeigen. Ansonsten enthält ein Eintrag in der Spurtabelle für jede der virtuellen Cache-Vorrichtungen 404, 406 einen Zeiger zu einem der Schlitze 412414 in dem Cache 408.The cache 408 contains a variety of cache slots 412 - 414 associated with write entries to the standard logical device 402 can be used and at the same time in connection with the only virtual cache devices 404 . 406 be used. In one embodiment, each track table entry includes only virtual cache devices 404 . 406 a zero to a corresponding track of the standard logical device 402 to show. Otherwise, it contains an entry in the track table for each of the virtual cache devices 404 . 406 a pointer to one of the slots 412 - 414 in the cache 408 ,

Jede der lediglich virtuellen Cache-Vorrichtungen 404, 406 kann für eines der Datenpakete 52, 54 verwendet werden, so dass beispielsweise die lediglich virtuelle Cache-Vorrichtung 404 dem Datenpaket 52 für die Sequenzzahl N entsprechen kann, während die lediglich virtuelle Cache-Vorrichtung 406 dem Datenpaket 54 für die Sequenzzahl N – 1 entsprechen kann. Wenn somit Daten durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden die Daten zu dem Cache 408 geliefert und ein geeigneter Zeiger der lediglich virtuellen Cache-Vorrichtung 404 wird eingestellt. Es sei erwähnt, dass die Daten nicht von dem Cache 408 entfernt werden, bis die Daten zu der logischen Standardvorrichtung 402 ausgelesen worden sind und dass die Daten auch durch die lediglich virtuelle Cache-Vorrichtung 404 freigegeben werden, wie dies beschrieben wurde.Each of the only virtual cache devices 404 . 406 can for any of the data packets 52 . 54 may be used, such that, for example, the only virtual cache device 404 the data packet 52 for the sequence number N, while the only virtual cache device 406 the data packet 54 for the sequence number N - 1. If so, data through the host 22 to the local storage device 24 are written, the data becomes the cache 408 and a suitable pointer to the cache only virtual device 404 is set. It should be noted that the data is not from the cache 408 be removed until the data is transferred to the standard logical device 402 have been read and that the data also by the only virtual cache device 404 be released as described.

Bei einer hier beschriebenen Ausführungsform wird eine der lediglich virtuellen Cache-Vorrichtungen 404, 406 als ”aktiv” betrachtet, während die andere als ”inaktiv” betrachtet wird. Wenn somit beispielsweise die Sequenzzahl N geradzahlig ist, kann die lediglich virtuelle Cache-Vorrichtung 404 aktiv sein während die lediglich virtuelle Cache-Vorrichtung 406 inaktiv ist. Die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 handhabt die Schreibeinträge von dem Host 22, während die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 den Daten entspricht, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen werden.In one embodiment described herein, one of the only virtual cache devices 404 . 406 considered "active" while the other is considered "inactive". Thus, for example, if the sequence number N is even, then the only virtual cache device may be 404 be active during the only virtual cache device 406 is inactive. The active device of the only virtual cache devices 404 . 406 handles the write entries from the host 22 while the inactive device is the only virtual cache device 404 . 406 the data matches that of the local storage device 24 to the remote storage device 26 be transmitted.

Während die Daten, die durch den Host 22 geschrieben werden, gesammelt werden und zwar unter Verwendung der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 (für die Sequenzzahl N), werden die Daten entsprechend der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 (für die frühere Sequenzzahl N – 1) von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen. Bei dieser Ausführungsform und damit in Beziehung stehende Ausführungsformen handhaben die DAs 35a35c der örtlichen Speichervorrichtung den Abtastvorgang der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406, um Kopieranfragen zu einem oder mehreren der RAs 30a30c zu senden, um Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 zu senden. Somit können die Schritte 362, 374, die weiter oben in Verbindung mit dem Aussetzen und Wiederaufnehmen des Kopiervorganges beschrieben wurden, das Vorsehen von Nachrichten/Befehlen zu den DAs 35a35c enthalten.While the data is being hosted by the host 22 be written using the active device of the only virtual cache devices 404 . 406 (for the sequence number N), the data corresponding to the inactive device of the only virtual cache devices 404 . 406 (for the earlier sequence number N-1) from the local storage device 24 to the remote storage device 26 transfer. In this embodiment and related embodiments, the DAs handle 35a - 35c the local storage device scanning the inactive device of the only virtual cache devices 404 . 406 to copy requests to one or more of the RAs 30a - 30c to send data from the local storage device 24 to the remote storage device 26 to send. Thus, the steps 362 . 374 as described above in connection with suspending and resuming the copy operation, providing messages / commands to the DAs 35a - 35c contain.

Wenn einmal Daten zu der entfernt gelegenen Speichervorrichtung 26 gesendet worden sind, kann der entsprechende Eintrag in der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 auf Null gesetzt werden. Zusätzlich können auch Daten aus dem Cache- 408 entfernt werden (das heißt der Schlitz wird zu dem Pool der Schlitze für spätere Verwendung zurückgeleitet), wenn die Daten in dem Schlitz nicht anderweitig für einen anderen Zweck benötigt werden (zum Beispiel um zu der logischen Standardvorrichtung 402 ausgelesen zu werden). Es kann ein Mechanismus verwendet werden, um sicherzustellen, dass die Daten nicht aus dem Cache 408 entfernt werden, bis alle Spiegel (inklusive den lediglich virtuellen Cache-Vorrichtungen 404, 406) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US Patent Nr. 5,537,568 , ausgegeben am 16. Juli 1996 und in der US Patentanmeldung Nr. 09/850,551, eingereicht am 7. Juli 2001 beschrieben, die hier unter Bezugnahme miteinbezogen werden.Once data is sent to the remote storage device 26 can be sent, the corresponding entry in the inactive device of the only virtual cache devices 404 . 406 set to zero. In addition, data from the cache 408 (i.e., the slot is returned to the pool of slots for later use) if the data in the slot is not otherwise needed for some other purpose (for example, to the standard logical device) 402 to be read out). A mechanism can be used to ensure that the data is not from the cache 408 until all mirrors (including the only virtual cache devices 404 . 406 ) no longer use the data. Such a mechanism is for example in the U.S. Patent No. 5,537,568 , issued July 16, 1996, and in US Patent Application No. 09 / 850,551, filed July 7, 2001, which are incorporated herein by reference.

Gemäß 12 veranschaulicht ein Flussdiagramm 440 Schritte, die durch HA 28 in Verbindung mit einem Host 22 durchgeführt werden, der eine Schreiboperation in Verbindung mit Ausführungsformen durchführt, wobei zwei COVDs durch die R1 Vorrichtung verwendet werden, um das hier beschriebene System zu bilden. Die Verarbeitung beginnt bei einem ersten Schritt 442, bei dem ein Schlitz entsprechend einem Schreibeintrag verriegelt wird. Bei einer hier beschriebenen Ausführungsform entspricht jeder der Schlitze 412414 des Cache 408 einer Spur von Daten an der logischen Standardvorrichtung 402. Das Verriegeln oder Blockieren des Schlitzes bei dem Schritt 442 verhindert, dass zusätzliche Prozesse an dem relevanten Schlitz während der Verarbeitung ausgeführt werden, die von dem HA 28 durchgeführt wird entsprechend den Schritten des Flussdiagramms 440. According to 12 illustrates a flowchart 440 Steps taken by HA 28 in conjunction with a host 22 performing a write operation in conjunction with embodiments wherein two COVDs are used by the R1 device to form the system described herein. Processing begins with a first step 442 in which a slot is locked according to a write entry. In one embodiment described herein, each corresponds to the slots 412 - 414 of the cache 408 a trace of data on the standard logical device 402 , The locking or blocking of the slot in the step 442 prevents additional processes from being executed at the relevant slot during processing by the HA 28 is performed according to the steps of the flowchart 440 ,

Nachfolgend auf den Schritt 442 folgt ein Schritt 444, bei dem ein Wert für N, als der Sequenzzahl, eingestellt wird. Genauso wie bei der Ausführungsform, welche Listen anstelle von COVDs auf der R1 Seite verwendet, wird der Wert für die Sequenzzahl, der bei dem Schritt 444 erhalten wird, während der gesamten Schreiboperation aufrechterhalten, die von dem HA 28 durchgeführt wird während der Schlitz blockiert ist. Wie noch erläutert wird, wird die Sequenzzahl jedem Schreibeintrag zugeordnet, um das eine der Datenpakete 52, 54 zu setzen, zu welchem der Schreibeintrag gehört. Die durch den Host 22 ausgeführten Schreibeinträge oder Schreibvorgänge werden der momentanen Sequenzzahl zugeordnet. Es ist von Vorteil, dass eine einzelne Schreiboperation die gleiche Sequenzzahl durchgehend beibehält.Following on the step 442 follows a step 444 in which a value for N, as the sequence number, is set. As with the embodiment which uses lists instead of COVDs on the R1 side, the value for the sequence number that is at step 444 is maintained throughout the write operation maintained by the HA 28 is performed while the slot is blocked. As will be explained, the sequence number is assigned to each write entry to be the one of the data packets 52 . 54 to set to which the write entry belongs. The by the host 22 executed write entries or writes are assigned to the current sequence number. It is advantageous that a single write operation will maintain the same sequence number throughout.

Nachfolgend auf den Schritt 444 folgt ein Testschritt 446, bei dem bestimmt wird, ob die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 bereits auf den Schlitz zeigt, der bei dem Schritt 442 verriegelt wurde (der Schlitz, bei dem eine Operation erfolgt). Dies kann auftreten, wenn ein Schreibeintrag zu dem gleichen Schlitz vorgesehen wurde, als die Sequenzzahl um Eins kleiner war als die momentane Sequenzzahl. Die Daten, die dem Schreibeintrag für die frühere Sequenzzahl entsprechen, können noch nicht zu der entfernt gelegenen Speichervorrichtung 26 übertragen worden sein.Following on the step 444 follows a test step 446 in which it is determined whether the inactive device is the only virtual cache device 404 . 406 already pointing at the slot, at the step 442 was locked (the slot where an operation takes place). This can occur if a write entry to the same slot was made when the sequence number was one less than the current sequence number. The data corresponding to the write entry for the previous sequence number can not yet go to the remote storage device 26 have been transferred.

Wenn bei dem Testschritt 446 bestimmt wird, dass die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 nicht auf den Schlitz zeigt, wird die Steuerung von dem Testschritt 446 zu einem anderen Testschritt 448 übertragen, bei dem bestimmt wird, ob die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 auf den Schlitz zeigt. Es ist für die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 möglich auf den Schlitz zu zeigen, wenn ein früherer Schreibeintrag zu dem Schlitz aufgetreten ist während die Sequenzzahl die gleiche geblieben ist wie die momentane Sequenzzahl. Wenn bei dem Testschritt 448 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 nicht auf den Schlitz zeigt, wird die Steuerung von dem Testschritt 448 zu einem Schritt 452 übertragen, bei dem ein neuer Schlitz für die Daten erhalten wird. Nachfolgend auf den Schritt 452 folgt ein Schritt 454, bei dem die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 dazu gebracht wird, auf den Schlitz zu zeigen.If in the test step 446 it is determined that the inactive device is the only virtual cache device 404 . 406 does not point to the slot, the control of the test step 446 to another test step 448 in which it is determined whether the active device is the only virtual cache device 404 . 406 pointing to the slot. It is for the active device of the only virtual cache devices 404 . 406 possible to point to the slot if a previous write entry to the slot has occurred while the sequence number has remained the same as the current sequence number. If in the test step 448 it is determined that the active device is the only virtual cache device 404 . 406 does not point to the slot, the control of the test step 448 to a step 452 in which a new slot for the data is obtained. Following on the step 452 follows a step 454 in which the active device is the only virtual cache devices 404 . 406 is brought to point to the slot.

Nachfolgend auf den Schritt 454 oder nachfolgend auf den Schritt 448, wenn die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 auf den Schlitz zeigt, folgt ein Schlitz 456, bei den Flags gesetzt werden. Bei dem Schritt 456 wird das RDF_WP-Flag (RDF-Schreib-Schwebe-Flag) gesetzt, um anzuzeigen, dass der Schlitz zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung von RDF übertragen werden muss. Zusätzlich wird bei dem Schritt 456 das IN_CACHE-Flag gesetzt, um anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung 402 ausgelesen werden muss. Es sei darauf hingewiesen, dass in einigen Fällen dann, wenn die aktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 bereits auf den Schlitz zeigt (wie bei dem Schritt 448 bestimmt wird), es möglich ist, dass die RDF_WP- und IN_CACHE-Flags bereits gesetzt sind und zwar vor der Ausführung des Schrittes 456. Jedoch stellt das Einstellen der Setzen der Flags bei dem Schritt 456 sicher, dass die Flags richtig gesetzt werden und zwar ungeachtet dem früheren Zustand.Following on the step 454 or following the step 448 when the active device is the only virtual cache device 404 . 406 pointing to the slot, a slot follows 456 to be set at the flags. At the step 456 the RDF_WP flag is set to indicate that the slot is to the remote storage device 26 must be transmitted using RDF. In addition, at the step 456 set the IN_CACHE flag to indicate that the slot is the default logical device 402 must be read. It should be noted that in some cases, when the active device is the only virtual cache device 404 . 406 already pointing to the slot (as in the step 448 is determined), it is possible that the RDF_WP and IN_CACHE flags are already set prior to the execution of the step 456 , However, the setting represents the setting of the flags in the step 456 sure that the flags are set correctly, regardless of their previous state.

Nachfolgend auf den Schritt 456 folgt ein Schritt 458, bei dem ein indirektes Flag in der Spurtabelle, welches auf den Schlitz zeigt, gelöscht wird, wodurch angezeigt wird, dass die relevanten Daten in dem Schlitz vorgesehen sind und nicht in einem unterschiedlichen Schlitz, auf den indirekt gezeigt wird. Nachfolgend dem Schritt 458 folgt ein Schritt 462, bei dem die Daten, die durch den Host 22 und durch HA 28 geschrieben werden, zu dem Schlitz geschrieben werden. Nachfolgend auf den Schritt 462 folgt ein Schritt 464, bei dem der Schlitz entriegelt wird. Nachfolgend auf den Schritt 464 wird die Verarbeitung vervollständigt.Following on the step 456 follows a step 458 in which an indirect flag in the track table pointing to the slot is cleared, indicating that the relevant data is provided in the slot and not in a different slot, which is shown indirectly. Following the step 458 follows a step 462 where the data is hosted by the host 22 and by HA 28 written to be slotted to the slot. Following on the step 462 follows a step 464 in which the slot is unlocked. Following on the step 464 the processing is completed.

Wenn bei dem Testschritt 446 bestimmt wird, dass die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 auf den Schlitz zeigt, wird die Steuerung von dem Schritt 446 zu einem Schritt 472 übertragen, bei welchem ein neuer Schlitz erhalten wird. Der neue Schlitz, der bei dem Schritt 472 erhalten wird, kann für die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 verwendet werden, um den RDF-Transfer zu bewirken, während der alte Schlitz der aktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 zugeordnet werden kann, wie dies weiter unten beschrieben wird.If in the test step 446 it is determined that the inactive device the only virtual cache devices 404 . 406 pointing to the slot, the control of the step 446 to a step 472 in which a new slot is obtained. The new slot at the step 472 can be obtained for the inactive device of the only virtual cache devices 404 . 406 used to effect the RDF transfer, while the old slot of the active cache only virtual device 404 . 406 can be assigned, as will be described below.

Nachfolgend auf den Schritt 472 folgt ein Schritt 474, bei dem Daten von dem alten Schlitz zu dem neuen Schlitz kopiert werden, der bei dem Schritt 472 erhalten worden ist. Nachfolgend auf den Schritt 474 folgt ein Schritt 476, bei dem das indirekte Flag (oben erläutert) gesetzt wird, um anzuzeigen, dass der Spurtabelleneintrag für die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 auf den alten Schlitz zeigt, dass jedoch die Daten in dem neuen Schlitz vorhanden sind, auf den durch den alten Schlitz gezeigt wird. Somit bewirkt das Setzen des indirekten Flags bei dem Schritt 476, dass die Spurtabelle der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 bewirkt, dass der Spurtabelleneintrag anzeigt, dass die Daten in dem neuen Schlitz vorhanden sind.Following on the step 472 follows a step 474 in which data is copied from the old slot to the new slot which is at the step 472 has been obtained. Following on the step 474 follows a step 476 in which the indirect flag (explained above) is set to indicate that the spill table entry for the inactive device is the only virtual cache device 404 . 406 on the old slot shows, however, that the data is present in the new slot pointed to by the old slot. Thus, setting the indirect flag in the step 476 in that the track table is the inactive device of the only virtual cache devices 404 . 406 causes the track record entry to indicate that the data is present in the new slot.

Nachfolgend auf den Schritt 476 folgt ein Schritt 478, bei dem die Spiegel-Bits für die Aufzeichnungen in dem neuen Schlitz eingestellt werden. Irgendwelche örtlichen Spiegel-Bits, die kopiert wurden, wenn die Daten von dem alten Schlitz zu dem neuen Schlitz bei dem Schritt 474 kopiert wurden, werden gelöscht, da der Zweck des neuen Schlitzes darin besteht lediglich den RDF-Transfer für die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen zu bewirken. Der alte Schlitz wird dazu verwendet, um jegliche örtliche Spiegel zu handhaben. Nachfolgend auf den Schritt 478 folgt ein Schritt 462, bei dem Daten zu dem Schlitz geschrieben werden. Nachfolgend auf den Schritt 462 folgt ein Schritt 464, bei welchem der Schlitz entriegelt wird. Nachfolgend auf den Schritt 464 ist dann die Bearbeitung vervollständigt.Following on the step 476 follows a step 478 in which the mirror bits for the recordings in the new slot are set. Any local mirror bits that were copied when the data from the old slot to the new slot in the step 474 are deleted, since the purpose of the new slot is merely to effect the RDF transfer for the inactive device of the cache only virtual devices. The old slot is used to handle any local mirrors. Following on the step 478 follows a step 462 in which data is written to the slot. Following on the step 462 follows a step 464 in which the slot is unlocked. Following on the step 464 then the processing is completed.

Gemäß 13 veranschaulicht ein Flussdiagramm 500 Schritte, die in Verbindung mit der örtlichen Speichervorrichtung 24 ausgeführt werden, die ein Datenpaket 54 zu der entfernt gelegenen Speichervorrichtung 26 sendet. Das Senden involviert im Wesentlichen ein Abtasten der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 auf Spuren, die dorthin geschrieben worden sind und zwar während einer früheren Iteration, wenn die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 aktiv war. Bei dieser Ausführungsform tasten die DAs 35a35c der örtlichen Speichervorrichtung 24 die inaktive Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 ab, um die Daten für die Übertragung zu der entfernt gelegenen Speichervorrichtung 26 zu kopieren und zwar durch einen oder mehreren der RAs 30a30c unter Verwendung des RDF-Protokolls.According to 13 illustrates a flowchart 500 Steps associated with the local storage device 24 be executed, which is a data packet 54 to the remote storage device 26 sends. The sending essentially involves scanning the inactive device of the only virtual cache devices 404 . 406 on tracks written thereon during an earlier iteration when the inactive device is the only virtual cache device 404 . 406 was active. In this embodiment, the DAs key 35a - 35c the local storage device 24 the inactive device of the only virtual cache devices 404 . 406 to transfer the data for transmission to the remote storage device 26 to copy by one or more of the RAs 30a - 30c using the RDF protocol.

Die Verarbeitung beginnt bei einem ersten Schritt 502, bei dem auf die erste Spur der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 gezeigt wird, um den Prozess der Iteration durch alle die Spuren hindurch zu beginnen. Nachfolgend auf den ersten Schritt 502 folgt ein Testschritt 504, bei dem bestimmt wird, ob das RDF_WP-Flag gesetzt ist. Wie noch erläutert werden wird, wird das RDF_WP-Flag dazu verwendet, um anzuzeigen, dass ein Schlitz (Spur) Daten enthält, die über das RDF Verbindungsglied übertragen werden müssen. Das RDF_WP-Flag, welches gesetzt wird, zeigt an, dass wenigstens einige Daten für den Schlitz (Spur) unter Verwendung von RDF zu übertragen oder zu senden sind. Bei der hier erläuterten Ausführungsform ist nicht der gesamte Schlitz übertragen. Vielmehr werden lediglich Aufzeichnungen innerhalb des Schlitzes, bei denen die geeigneten Spiegel-Bits gesetzt sind (was anzeigt, dass die Aufzeichnungen geändert worden sind), zu der entfernt gelegenen Speichervorrichtung 26 gesendet. Bei anderen Ausführungsformen kann es jedoch möglich sein, den gesamten Schlitz bzw. Schlitzinhalt zu senden, vorausgesetzt, dass die entfernt gelegene Speichervorrichtung 26 lediglich Daten schreibt entsprechend den Aufzeichnungen, bei denen die geeigneten Spiegel-Bits gesetzt sind und andere Daten für die Spur ignoriert, die gültig oder auch nicht gültig sein können.Processing begins with a first step 502 in which the first trace of the inactive device of the only virtual cache devices 404 . 406 is shown to begin the process of iteration through all the tracks. Following on the first step 502 follows a test step 504 which determines if the RDF_WP flag is set. As will be explained, the RDF_WP flag is used to indicate that a slot (track) contains data that needs to be transmitted over the RDF link. The RDF_WP flag that is set indicates that at least some data for the slot (lane) is to be transmitted or transmitted using RDF. In the embodiment discussed here, not the entire slot is transferred. Rather, only records within the slot where the appropriate mirror bits are set (indicating that the records have been changed) are transferred to the remote storage device 26 Posted. However, in other embodiments, it may be possible to send the entire slot content, provided that the remote storage device 26 only data is written according to the records where the appropriate mirror bits are set and ignore other data for the track that may or may not be valid.

Wenn bei dem Testschritt 504 bestimmt wird, dass der Cache-Schlitz, der verarbeitet wird, ein gesetztes RDF_WP-Flag aufweist, wird die Steuerung von dem Schritt 504 zu einem Testschritt 505 übertragen, bei dem bestimmt wird, ob der Schlitz Daten enthält oder ob der Schlitz aus einem indirekten Schlitz besteht, der auf einen anderen Schlitz zeigt, welche die relevanten Daten enthält. In einigen Fällen kann der Schlitz keine Daten für den Abschnitt der Platte enthalten, welcher dem Schlitz entspricht. Stattdessen kann der Schlitz aus einem indirekten Schlitz bestehen, der auf einen anderen Schlitz zeigt, welcher die Daten enthält. Wenn bei dem Schritt 505 bestimmt wird, dass der Schlitz aus einem indirekten Schlitz besteht, wird die Steuerung von dem Schritt 505 zu einem Schritt 506 übertragen, bei dem die Daten (von dem Schlitz, auf den durch den indirekten Schlitz gezeigt wird) erhalten werden. Wenn somit der Schlitz aus einem direkten Schlitz besteht, werden die Daten für das Aussenden mit Hilfe von RDF in dem Schlitz gespeichert, während dann, wenn der Schlitz aus einem indirekten Schlitz besteht, die Daten, die mit Hilfe von RDF zu senden sind, in einem anderen Schlitz vorhanden sind, auf den durch den indirekten Schlitz gezeigt wird.If in the test step 504 it is determined that the cache slot being processed has a set RDF_WP flag, control is taken from the step 504 to a test step 505 in which it is determined whether the slot contains data or whether the slot consists of an indirect slot pointing to another slot containing the relevant data. In some cases, the slot may not contain data for the portion of the disc that corresponds to the slot. Instead, the slot may consist of an indirect slot pointing to another slot containing the data. If at the step 505 is determined that the slot consists of an indirect slot, the control of the step 505 to a step 506 in which the data (from the slot pointed to by the indirect slot) is obtained. Thus, if the slot consists of a direct slot, the data for transmission is stored in the slot by means of RDF, while if the slot consists of an indirect slot, the data to be transmitted by means of RDF is stored in another slot pointed to by the indirect slot.

Nachfolgend auf den Schritt 506 oder dem Schritt 505, wenn der Schlitz ein direkter Schlitz ist, folgt ein Schritt 507, bei dem die Daten, welche gesendet werden (direkt oder indirekt von dem Schlitz) durch eine der DAs 35a35c kopiert werden, um von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung des RDF-Protokolls gesendet zu werden. Nachfolgend auf den Schritt 507 folgt ein Testschritt 508, bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung 26 den Empfang der Daten bestätigt hat. Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 508 zurück auf den Schritt 507 übertragen, um die Daten erneut zu senden. Bei anderen Ausführungsformen kann eine abweichende oder stärker involvierte Verarbeitung dazu verwendet werden, um Daten zu senden und um den Empfang derselben zu bestätigen. Solch eine Verarbeitung kann einen Fehlerbericht enthalten und eine alternative Verarbeitung, die dann durchgeführt wird, nachdem eine bestimmte Anzahl an Versuchen die Daten auszusenden ausgeführt worden ist, welche Versuche fehlgeschlagen sind.Following on the step 506 or the step 505 if the slot is a direct slot, a step follows 507 in which the data which is sent (directly or indirectly from the slot) through one of the DAs 35a - 35c copied to from the local storage device 24 to the remote storage device 26 under Using the RDF protocol. Following on the step 507 follows a test step 508 in which it is determined whether the remote storage device 26 confirmed receipt of the data. If not, control is taken from the step 508 back to the step 507 to resend the data. In other embodiments, different or more involved processing may be used to send data and to confirm receipt thereof. Such processing may include an error report and alternative processing performed after a certain number of attempts have been made to transmit the data, which attempts have failed.

Wenn bei dem Testschritt 508 einmal bestimmt worden ist, dass die Daten erfolgreich gesendet worden sind, verläuft die Steuerung von dem Schritt 508 zu einem Schritt 512, um das RDF_WP-Flag zu löschen (da die Daten mit Hilfe von RDF erfolgreich gesendet worden sind). Nachfolgend auf den Schritt 512 folgt ein Schritt 514, bei dem geeignete Spiegel-Flags gelöscht werden, um anzuzeigen, dass wenigstens der RDF-Spiegel (R2) nicht länger die Daten benötigt. Bei einer Ausführungsform stellt jede Aufzeichnung einen Teil eines Schlitzes (Spur) dar und besitzt individuelle Spiegel-Flags, die anzeigen, welche Spiegel die spezielle Aufzeichnung verwenden. Die R2 Vorrichtung ist eine der Spiegel für jede der Aufzeichnungen und es sind die Flags entsprechend der R2 Vorrichtung, die bei dem Schritt 514 gelöscht werden.If in the test step 508 Once it has been determined that the data has been sent successfully, control passes from the step 508 to a step 512 to clear the RDF_WP flag (because the data was successfully sent using RDF). Following on the step 512 follows a step 514 in which appropriate mirror flags are cleared to indicate that at least the RDF mirror (R2) no longer needs the data. In one embodiment, each record represents part of a slot (track) and has individual mirror flags indicating which mirrors use the particular record. The R2 device is one of the mirrors for each of the records and it is the flags corresponding to the R2 device that are at the step 514 to be deleted.

Nachfolgend auf den Schritt 514 folgt ein Testschritt 516, bei dem bestimmt wird, ob irgendwelche der Aufzeichnungen der Spur, die verarbeitet werden, irgendwelche anderen Spiegel-Flags gesetzt aufweisen (oder andere Spiegelvorrichtungen). Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt 516 zu einem Schritt 518, bei welchem der Schlitz freigegeben wird (das heißt nicht länger verwendet wird). Bei einigen Ausführungsformen werden nicht verwendete Schlitze in einem Pool von Schlitzen aufbewahrt, die für die Verwendung verfügbar sind. Es sei darauf hingewiesen, dass dann, wenn zusätzliche Flags noch gesetzt sind und zwar für einige der Aufzeichnungen des Schlitzes, dies bedeuten kann, dass die Aufzeichnungen zu der logischen Standardvorrichtung 402 ausgelesen werden müssen oder durch irgendeinen anderen Spiegel verwendet werden (inklusive einer anderen R2 Vorrichtung). Nachfolgend auf den Schritt 518 oder nachfolgend auf den Schritt 516, wenn mehr Spiegel-Flags vorhanden sind, folgt ein Schritt 522, bei dem ein Zeiger, der dazu verwendet wird, um durch jeden Spureintrag der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 hindurchzulaufen, dazu gebracht wird, auf die nächste Spur zu zeigen. Nachfolgend dem Schritt 522 folgt ein Testschritt 524, bei dem bestimmt wird, ob mehr Spuren der inaktiven Vorrichtung der lediglich virtuellen Cache-Vorrichtungen 404, 406 verarbeitet werden. Wenn dies nicht der Fall ist wird die Verarbeitung vervollständigt. Im anderen Fall wird die Steuerung zurück zu dem Testschritt 504 übertragen, der oben erläutert worden ist. Es sei erwähnt, dass der Schritt 522 auch von dem Testschritt 504 aus erreicht werden kann, wenn bestimmt wird, dass das RDF_WP-Flag für die in Bearbeitung befindliche Spur nicht gesetzt ist.Following on the step 514 follows a test step 516 in which it is determined whether any of the recordings of the track being processed have any other mirror flags set (or other mirror devices). If not, the controller proceeds from the step 516 to a step 518 in which the slot is released (that is no longer used). In some embodiments, unused slots are stored in a pool of slots that are available for use. It should be noted that if additional flags are still set, and indeed for some of the recordings of the slot, this may mean that the records have become the standard logical device 402 must be read out or used by any other mirror (including another R2 device). Following on the step 518 or following the step 516 if there are more mirror flags, a step follows 522 in which a pointer used to move through each track entry of the inactive device of the only virtual cache devices 404 . 406 to run through, is led to point to the next lane. Following the step 522 follows a test step 524 in which it is determined whether there are more traces of the inactive device of the only virtual cache devices 404 . 406 are processed. If this is not the case, the processing is completed. Otherwise, control is returned to the test step 504 transferred, which has been explained above. It should be noted that the step 522 also from the test step 504 can be reached if it is determined that the RDF_WP flag for the track being processed is not set.

Gemäß 14 veranschaulicht ein Diagramm 700 einen Host 702, der an eine Vielzahl von örtlichen Speichervorrichtungen 703705 gekoppelt ist. DAs Diagramm 700 zeigt auch eine Vielzahl von entfernt gelegenen Speichervorrichtungen 706708. Obwohl lediglich drei örtliche Speichervorrichtungen 703705 und drei entfernt gelegene Speichervorrichtungen 706708 in dem Diagramm 700 gezeigt sind, kann das hier beschriebene System auch erweitert werden, um irgendeine Zahl an örtlichen und entfernt gelegenen Speichervorrichtungen zu verwenden.According to 14 illustrates a diagram 700 a host 702 which is connected to a variety of local storage devices 703 - 705 is coupled. The diagram 700 also shows a variety of remote storage devices 706 - 708 , Although only three local storage devices 703 - 705 and three remote storage devices 706 - 708 in the diagram 700 can be extended to use any number of local and remote storage devices.

Jede der örtlichen Speichervorrichtungen 703705 ist mit einer entsprechenden einen der entfernt gelegenen Speichervorrichtungen 706708 gekoppelt, so dass beispielsweise die örtliche Speichervorrichtung 703 mit der entfernt gelegenen Speichervorrichtung 706 gekoppelt ist, die örtliche Speichervorrichtung 704 mit der entfernt gelegenen Speichervorrichtung 707 gekoppelt ist und die örtliche Speichervorrichtung 705 mit der entfernt gelegenen Speichervorrichtung 708 gekoppelt ist. Die örtlichen Speichervorrichtungen 703705 und die entfernt gelegenen Speichervorrichtungen 706708 können unter Verwendung geordneter Schreibmechanismen miteinander gekoppelt werden, die hier beschrieben werden, so dass beispielsweise die örtliche Speichervorrichtung 703 an die entfernt gelegene Speichervorrichtung 706 unter Verwendung des geordneten Schreibmechanismus gekoppelt sein kann. Wie noch zu erläutern ist, ermöglicht der geordnete Schreibmechanismus eine Datenwiedergewinnung unter Verwendung der entfernt gelegenen Speichervorrichtung in Fällen, bei denen die örtliche Speichervorrichtung und/oder der Host mit seiner Arbeit anhalten und/oder Daten verlieren.Each of the local storage devices 703 - 705 is with a corresponding one of the remote storage devices 706 - 708 coupled so that, for example, the local storage device 703 with the remote storage device 706 coupled, the local storage device 704 with the remote storage device 707 is coupled and the local storage device 705 with the remote storage device 708 is coupled. The local storage devices 703 - 705 and the remote storage devices 706 - 708 can be coupled together using ordered write mechanisms described herein such that, for example, the local storage device 703 to the remote storage device 706 can be coupled using the orderly writing mechanism. As will be further explained, the ordered writing mechanism enables data retrieval using the remote storage device in cases where the local storage device and / or the host stop working and / or lose data.

In einigen Fällen kann der Host 702 in einer einzelnen Anwendung laufen, die gleichzeitig mehr als eine der örtlichen Speichervorrichtungen 703705 verwendet. In solch einem Fall kann die Anwendung so konfiguriert sein, um sicherzustellen, dass die Anwendungsdaten konsistent sind (wiedergewinnbar sind) und zwar an den örtlichen Speichervorrichtungen 703705, wenn der Host 702 mit der Arbeit aufhört und zwar zu irgendeinem Zeitpunkt und/oder wenn eine der örtlichen Speichervorrichtungen 703705 ausfällt. Da jedoch jede der geordneten Schreibverbindungen zwischen den örtlichen Speichervorrichtungen 703705 und den entfernt gelegenen Speichervorrichtungen 706708 asynchron von anderen Verbindungen sind, gibt es keine Versicherung, dass Daten für die Anwendung konsistent sind (und somit wiedergewinnbar sind) und zwar an den entfernt gelegenen Speichervorrichtungen 706708. Das heißt obwohl beispielsweise die Datenverbindung zwischen der örtlichen Speichervorrichtung 703 und der entfernt gelegenen Speichervorrichtung 706 (ein erstes Orts/Fern-Paar) konsistent ist und die Datenverbindung zwischen der örtlichen Speichervorrichtung 704 der entfernt gelegenen Speichervorrichtung 707 (ein zweites Orts/Fern-Paar9 konsistent ist, ist es nicht notwendigerweise der Fall, dass die Daten an den entfernt gelegenen Speichervorrichtungen 706, 707 immer konsistent sind, wenn keine Synchronisation zwischen dem ersten und dem zweiten Orts/Fern-Paar vorhanden ist.In some cases, the host may 702 run in a single application that simultaneously has more than one of the local storage devices 703 - 705 used. In such a case, the application may be configured to ensure that the application data is consistent (recoverable) at the local storage devices 703 - 705 if the host 702 stops work at any time and / or if any of the local storage devices 703 - 705 fails. However, since each of the ordered Write connections between the local storage devices 703 - 705 and the remote storage devices 706 - 708 Asynchronous from other connections, there is no assurance that data is consistent (and thus recoverable) for the application at the remote storage devices 706 - 708 , That is, although, for example, the data connection between the local storage device 703 and the remote storage device 706 (a first local / remote pair) is consistent and the data connection between the local storage device 704 the remote storage device 707 (a second local / remote pair 9 is consistent, it is not necessarily the case that the data at the remote storage devices 706 . 707 are always consistent if there is no synchronization between the first and second local / remote pairs.

Für Anwendungen auf dem Host 702, die gleichzeitig eine Vielzahl von örtlichen Speichervorrichtungen 703705 verwenden, ist es wünschenswert, dass die Daten konsistent und wiedergewinnbar sind und zwar an den entfernt gelegenen Speichervorrichtungen 706708. Dies kann mit Hilfe eines Mechanismus erreicht werden, bei dem der Host 702 den Zyklusschaltvorgang an jeder der örtlichen Speichervorrichtungen 703705 so steuert, dass die Daten von der Anwendung, die auf dem Host 702 laufen, konsistent und wiedergewinnbar sind und zwar an den entfernt gelegenen Speichervorrichtungen 706708. Diese Funktionalität wird durch eine spezielle Anwendung vorgesehen, die auf dem Host 702 läuft, welche eine Vielzahl von örtlichen Speichervorrichtungen 703705 in einem Multi-Box-Modus schaltet, wie dies noch mehr in Einzelheiten weiter unten beschrieben werden soll.For applications on the host 702 , at the same time a variety of local storage devices 703 - 705 It is desirable that the data be consistent and recoverable at the remote storage devices 706 - 708 , This can be achieved by using a mechanism in which the host 702 the cycle switching operation on each of the local storage devices 703 - 705 So that controls the data from the application running on the host 702 run, consistent and recoverable at the remote storage devices 706 - 708 , This functionality is provided by a special application on the host 702 which runs a variety of local storage devices 703 - 705 in a multi-box mode, as will be described in more detail below.

Gemäß 15 enthält eine Tabelle 730 eine Vielzahl an Einträgen 732734. Jeder der Einträge 732734 entspricht einem einzelnen Orts/Fern-Paar der Speichervorrichtungen, so dass beispielsweise der Eintrag 732 einem Paar gemäß der örtlichen Speichervorrichtung 703 und der entfernt gelegenen Speichervorrichtung 706 entsprechen kann, der Eintrag 733 dem Paar gemäß der örtlichen Speichervorrichtung 704 und der entfernt gelegenen Speichervorrichtung 707 entsprechen kann und der Eintrag 734 dem Paar entsprechend der örtlichen Speichervorrichtung 705 und der entfernt gelegenen Speichervorrichtung 708 entsprechen kann. Jeder der Einträge 732734 umfasst eine Vielzahl an Feldern, wobei ein erstes Feld 736a736c eine Seriennummer der entsprechenden örtlichen Speichervorrichtung wiedergibt, ein zweites Feld 738a738c eine Sessionsnummer wiedergibt, die durch die Vielfachbox-Gruppe verwendet wird, ein drittes Feld 742a742c die Seriennummer der entsprechenden entfernt gelegenen Speichervorrichtung des Orts/Fern-Paares wiedergibt, und ein viertes Feld 744a744c die Sessionsnummer für die Multi-Box-Gruppe wiedergibt. Die Tabelle 730 wird von dem Host 702 konstruiert und aufrechterhalten und zwar in Verbindung mit dem Betrieb in dem Multi-Box-Modus. Zusätzlich wird die Tabelle 730 zu jeder der örtlichen Speichervorrichtungen gesendet und auch zu den entfernt gelegenen Speichervorrichtungen gesendet, die Teil der Multi-Box-Gruppe sind. Die Tabelle 730 kann dazu verwendet werden, um die Wiedergewinnung zu vereinfachen, wie dies noch näher in Einzelheiten weiter unten erläutert wird.According to 15 contains a table 730 a variety of entries 732 - 734 , Each of the entries 732 - 734 corresponds to a single local / remote pair of storage devices, so that, for example, the entry 732 a pair according to the local storage device 703 and the remote storage device 706 can match the entry 733 the pair according to the local storage device 704 and the remote storage device 707 can match and the entry 734 the pair according to the local storage device 705 and the remote storage device 708 can correspond. Each of the entries 732 - 734 includes a plurality of fields, wherein a first field 736a - 736c a serial number of the corresponding local storage device represents a second field 738a - 738c a session number used by the multibox group, a third field 742a - 742c represents the serial number of the corresponding remote storage device of the local / remote pair, and a fourth field 744a - 744c the session number for the multi-box group. The table 730 is from the host 702 designed and maintained in conjunction with operation in the multi-box mode. In addition, the table 730 sent to each of the local storage devices and also sent to the remote storage devices that are part of the multi-box group. The table 730 can be used to facilitate recovery, as explained in greater detail below.

Unterschiedliche Orts/Fern-Paare können in den Multi-Box-Modus eintreten und diesen auch verlassen und zwar unabhängig in irgendeiner Sequenz zu irgendeinem Zeitpunkt. Der Host 702 managt den Eintritt und Austritt der örtlichen Speichervorrichtung/entfernt gelegenen Speichervorrichtung bzw. der Paare derselben in und aus dem Multi-Box-Modus. Dies wird mehr in Einzelheiten weiter unten beschrieben.Different local / remote pairs can enter and leave the multi-box mode independently in any sequence at any one time. The host 702 manages the entry and exit of the local storage device / remote storage device (s) thereof into and out of the multi-box mode. This will be described in more detail below.

Gemäß 16 veranschaulicht ein Flussdiagramm 750 die Schritte, die durch den Host 702 in Verbindung mit einem Eintritt oder Austritt eines Orts/Fern-Paares in oder aus dem Multi-Box-Modus ausgeführt werden. Die Verarbeitung beginnt bei einem ersten Schritt 752, bei welchem der Multi-Box-Modusbetrieb zeitweilig ausgesetzt wird. Das zeitweilige Aussetzen des Multi-Box-Betriebes bei dem Schritt 752 ist nützlich, um Änderungen zu vereinfachen, die in Verbindung mit dem Eintritt oder Austritt eines Fern/Orts-Paares in und aus dem Multi-Box-Modus vorgenommen werden. Nachfolgend auf den Schritt 752 folgt ein Schritt 754, bei welchem eine Tabelle ähnlich wie die Tabelle 730 in 15 modifiziert wird, um entweder einen Eintrag hinzuzufügen oder wegzulassen, je nach Bedarf. Nachfolgend auf den Schritt 754 folgt ein Schritt 756, bei welchem die modifizierte Tabelle zu den örtlichen Speichervorrichtungen und zu den entfernt gelegenen Speichervorrichtungen der Multi-Box-Gruppe übertragen wird. Das Übertragen der Tabelle bei dem Schritt 756 vereinfacht die Wiedergewinnung, wie dies noch mehr in Einzelheiten erläutert werden wird.According to 16 illustrates a flowchart 750 the steps taken by the host 702 in connection with entering or leaving a local / remote pair in or out of the multi-box mode. Processing begins with a first step 752 in which the multi-box mode operation is temporarily suspended. The temporary suspension of multi-box operation in the step 752 is useful to simplify changes made in connection with the entry or exit of a remote / local pair in and out of the multi-box mode. Following on the step 752 follows a step 754 in which a table similar to the table 730 in 15 is modified to either add an entry or omit it as needed. Following on the step 754 follows a step 756 in which the modified table is transmitted to the local storage devices and to the remote storage devices of the multi-box group. Transferring the table at the step 756 simplifies recovery, as will be explained in more detail.

Nachfolgend auf den Schritt 756 folgt ein Schritt 758, bei dem eine Nachricht zu der beeinflussten örtlichen Speichervorrichtung gesendet wird, um die Änderung vorzusehen. Die örtliche Speichervorrichtung kann sich selbst so konfigurieren, dass sie in einem Multi-Box-Modus läuft oder auch nicht, wie dies noch mehr in Einzelheiten beschrieben wird. Wie weiter unten in Einzelheiten dargelegt wird, arbeitet die örtliche Speichervorrichtung, welche geordnete Schreibeinträge handhabt, unterschiedlich und zwar abhängig davon, ob sie als ein Teil einer Multi-Box-Gruppe arbeitet oder nicht. Wenn die örtliche Speichervorrichtung zu einer Multi-Box-Gruppe hinzuaddiert wird, zeigt die Nachricht, die bei dem Schritt 758 gesendet wird, für die örtliche Speichervorrichtung an, dass sie zu einer Multi-Box-Gruppe hinzuaddiert wird, so dass die örtliche Speichervorrichtung sich selbst so konfigurieren sollte, dass sie in dem Multi-Box-Modus läuft. Wenn alternativ die örtliche Speichervorrichtung aus einer Multi-Box-Gruppe entfernt wird, zeigt die bei dem Schritt 758 gesendete Nachricht an und zwar für die örtliche Speichervorrichtung, dass sie aus der Multi-Box-Gruppe entfernt wurde, so dass die örtliche Speichervorrichtung sich selbst so konfigurieren sollte, dass sie nicht in dem Multi-Box-Modus läuft.Following on the step 756 follows a step 758 in which a message is sent to the affected local storage device to provide the change. The local storage device may or may not configure itself to run in a multi-box mode, as described in more detail below. As will be explained in detail below, the local storage device handling ordered writes operates differently depending on whether or not it operates as part of a multi-box group. When the local storage device becomes a multi-box group is added, shows the message at the step 758 is sent to the local storage device to be added to a multi-box group so that the local storage device should configure itself to run in the multi-box mode. Alternatively, if the local storage device is removed from a multi-box group, it will show at the step 758 sent message to the local storage device that it has been removed from the multi-box group, so that the local storage device should configure itself so that it does not run in the multi-box mode.

Nachfolgend dem Schritt 758 folgt ein Testschritt 762, bei dem bestimmt wird, ob ein Orts/Fern-Paar zu der Multi-Box-Gruppe hinzuaddiert wurde (im Gegensatz zu einem Entfernen). Wenn dies der Fall ist, wird die Steuerung von dem Testschritt 762 zu einem Schritt 764 übertragen, bei dem Etikettenwerte zu der örtlichen Speichervorrichtung gesendet werden, die hinzuaddiert wird. Die Etikettenwerte werden mit den Daten geliefert, die von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung übertragen werden und zwar in einer Weise ähnlich dem Vorsehen der Sequenzzahlen mit den Daten. Die Etikettenwerte (tag values) werden durch den Host gesteuert und werden so gesetzt, dass alle Orts/Fern-Paare Daten senden, welche den gleichen Etikettenwert haben und zwar während des gleichen Zyklus. Die Verwendung der Etikettenwerte wird weiter unten mehr in Einzelheiten erläutert. Nachfolgend auf den Schritt 764 oder nachfolgend auf den Schritt 762, wenn ein neues Orts/Fern-Paar nicht hinzuaddiert wurde, folgt ein Schritt 766, bei dem die Multi-Box-Operation wieder aufgenommen wird. Nachfolgend auf den Schritt 766 wird die Verarbeitung vervollständigt.Following the step 758 follows a test step 762 in which it is determined if a local / remote pair has been added to the multi-box group (as opposed to a removal). If so, control is from the test step 762 to a step 764 in which label values are sent to the local storage device which is added. The tag values are provided with the data being transferred from the local storage device to the remote storage device in a manner similar to providing the sequence numbers with the data. The tag values are controlled by the host and are set so that all the local / remote pairs send data having the same tag value during the same cycle. The use of label values is explained in more detail below. Following on the step 764 or following the step 762 If a new local / remote pair has not been added, a step follows 766 in which the multi-box operation is resumed. Following on the step 766 the processing is completed.

Gemäß 17 veranschaulicht ein Flussdiagramm 780 Schritte, die in Verbindung mit dem Host-Management-Zyklus-Schaltvorgang ausgeführt werden und zwar für Vielfach-Orts/Fern-Paare, die als eine Gruppe in dem Multi-Box-Modus laufen. Wie noch erläutert wird, involviert der Multi-Box-Modus das Verwenden von Host-Synchronisier-Zyklus-Schaltern für mehr als ein Fern/Orts-Paar, um die Datenkonsistenz unter den ferngelegenen Speichervorrichtungen aufrechtzuerhalten. Der Zyklus-Schaltvorgang wird durch den Host koordiniert und nicht intern durch die logischen Speichervorrichtungen erzeugt. Dies wird weiter unten mehr in Einzelheiten erläutert.According to 17 illustrates a flowchart 780 Steps performed in conjunction with the host management cycle switch for multiple local / remote pairs running as a group in the multi-box mode. As will be discussed, the multi-box mode involves using host sync cycle switches for more than one remote / local pair to maintain data consistency among the remote storage devices. The cycle switching process is coordinated by the host and not generated internally by the logical storage devices. This will be explained in more detail below.

Die Verarbeitung gemäß dem Flussdiagramm 780 beginnt bei einem Testschritt 782, bei dem bestimmt wird, ob M Sekunden verstrichen sind. Genauso wie bei dem Nicht-Multi-Box-Betrieb treten Zyklus-Schaltvorgänge nicht früher auf als alle M Sekunden, wobei M eine Zahl ist, die so ausgewählt wird, um die verschiedenen Performance-Parameter zu optimieren. Wenn die Zahl M erhöht wird, nimmt der Betrag des Overhead, der dem Schaltvorgang zugeordnet ist, ab. Jedoch bewirkt eine Erhöhung von M, dass die Menge der Daten, die potenziell in Verbindung mit einem Ausfall oder einem Fehler verloren gehen können, ebenfalls zunimmt. Bei einer hier erläuterten Ausführungsform wird M so gewählt, dass es dreißig Sekunden beträgt, obwohl offensichtlich andere Werte für M verwendet werden können.The processing according to the flowchart 780 begins with a test step 782 which determines if M seconds have elapsed. As with non-multi-box operation, cycle shifts do not occur earlier than every M seconds, where M is a number that is selected to optimize the various performance parameters. As the number M is increased, the amount of overhead associated with the shift decreases. However, increasing M will also increase the amount of data that can potentially be lost in connection with a failure or an error. In one embodiment discussed herein, M is chosen to be thirty seconds, although obviously other values for M can be used.

Wenn bei dem Testschritt 782 bestimmt wird, dass M Sekunden noch nicht verstrichen sind, wird die Steuerung zurück zu dem Schritt 782 übertragen, um das Warten fortzusetzen, bis M Sekunden verstrichen sind. Wenn einmal bei dem Testschritt 782 bestimmt worden ist, dass M Sekunden verstrichen sind, wird die Steuerung von dem Schritt 782 zu einem Schritt 784 übertragen, bei dem der Host bei allen örtlichen Speichervorrichtungen in der Multi-Box-Gruppe anfragt, um festzulegen, ob alle die Orts/Fern-Paare für das Schalten bereit sind. Die Orts/Fern-Paare, die für das Schalten bereit sind, werden mehr in Einzelheiten im Folgenden erläutert.If in the test step 782 If it is determined that M seconds have not yet elapsed, control is returned to the step 782 to continue waiting until M seconds have elapsed. Once in the test step 782 it has been determined that M seconds have elapsed, the control of the step 782 to a step 784 in which the host polls all local storage devices in the multi-box group to determine if all the local / remote pairs are ready for switching. The local / remote pairs ready for switching will be explained in more detail below.

Nachfolgend auf den Schritt 784 folgt ein Testschritt 786, bei dem bestimmt wird, ob alle Orts/Fern-Paare für das Schalten bereit sind. Wenn dies nicht der Fall ist, wird die Steuerung zurück auf den Schritt 784 übertragen, um die Anfrage wieder aufzunehmen. Bei einer hier beschriebenen Ausführungsform ist es lediglich erforderlich, die Orts/Fern-Paare anzufragen, die an früherer Stelle nicht für das Schalten bereit waren, da dann, wenn ein Orts/Fern-Paar einmal für den Schaltvorgang bereit ist, dieses Paar so verbleibt, bis der Schaltvorgang auftritt.Following on the step 784 follows a test step 786 in which it is determined whether all the local / remote pairs are ready for switching. If not, control is returned to the step 784 to resume the request. In an embodiment described herein, it is only necessary to request the local / remote pairs that were previously not ready for switching because once a local / remote pair is ready for the switch, that pair remains so until the switching operation occurs.

Wenn einmal bei dem Testschritt 786 bestimmt worden ist, dass alle die Orts/Fern-Paare in der Multi-Box-Gruppe für das Schalten bereit sind, wird die Steuerung von dem Schritt 786 auf einen Schritt 788 übertragen, bei dem eine Index-Variable N gleich auf Eins gesetzt wird. Die Index-Variable N wird dazu verwendet, um durch alle Orts-/Fern-Paare hindurch zu iterieren (das heißt alle die Einträge 732734 der Tabelle 730 von 15). Nachfolgend auf den Schritt 788 folgt ein Testschritt 792, bei dem bestimmt wird, ob die Indexvariable N größer ist als die Zahl der Orts/Fern-Paare in der Multi-Box-Gruppe. Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 792 zu einem Schritt 794 übertragen, bei dem ein offenes Fenster für die N-te örtliche Speichervorrichtung des N-ten Paares durch den Host realisiert wird, der einen Befehl (das heißt einen geeigneten Systembefehl) zu der N-ten örtlichen Speichervorrichtung sendet. Das Öffnen des Fensters für die N-te örtliche Speichervorrichtung bei dem Schritt 794 bewirkt, dass die N-te örtliche Speichervorrichtung die Schreibvorgänge aussetzt, so dass jeglicher Schreibvorgang durch einen Host, der nicht vor dem Öffnen des Fensters bei dem Schritt 794 begonnen wurde, nicht vervollständigt wird, bis das Fenster geschlossen wird (was weiter unten beschrieben wird). Das Nichtvervollständigen einer Schreiboperation verhindert eine zweite abhängige Schreiboperation am Auftreten und zwar vor der Vervollständigung des Zyklus-Schaltvorganges. Jegliche Schreibeinträge, die im Laufen sind, welche vor dem Öffnen des Fensters begonnen wurden, können vor dem Schließen des Fensters vervollständigt werden.Once in the test step 786 it has been determined that all the local / remote pairs in the multi-box group are ready for switching, the control of the step 786 on a step 788 in which an index variable N is set equal to one. The index variable N is used to iterate through all the local / remote pairs (that is, all the entries 732 - 734 the table 730 from 15 ). Following on the step 788 follows a test step 792 in which it is determined whether the index variable N is greater than the number of local / remote pairs in the multi-box group. If not, control is taken from the step 792 to a step 794 in which an open window for the Nth local storage device of the Nth pair is realized by the host sending a command (that is, a suitable system command) to the Nth local storage device. Opening the window for the Nth local storage device at the step 794 causes the Nth local storage device to suspend writes, so that any writing by a host that is not prior to opening the window in step 794 is not completed until the window is closed (which will be described below). Failure to complete a write operation prevents a second dependent write operation from occurring prior to completing the cycle switch. Any write entries that are in progress that were started before the window was opened can be completed before the window is closed.

Nachfolgend auf den Schritt 794 folgt ein Schritt 796, bei dem ein Zyklusschalten für die N-te örtliche Speichervorrichtung durchgeführt wird. Das Durchführen des Zyklus-Schaltvorganges bei dem Schritt 796 involviert das Aussenden eines Befehls von dem Host 702 zu der N-ten örtlichen Speichervorrichtung. Das Verarbeiten des Befehls von dem Host durch die N-te örtliche Speichervorrichtung wird weiter unten mehr in Einzelheiten erläutert. Ein Abschnitt der Verarbeitung, die bei dem Schritt 796 ausgeführt wird, kann das Merkmal enthalten, das der Host neue Werte für die Etiketten vorsieht, die Daten zugeordnet werden. Die Etiketten (tags) werden mehr in Einzelheiten noch erläutert. Bei einer alternativen Ausführungsform können die Operationen, die bei den Schritten 794, 796 ausgeführt werden, in Form eines einzelnen integrierten Schrittes 797 ausgeführt werden, was durch die Box veranschaulicht ist, die um die Schritte 794, 796 herum verläuft.Following on the step 794 follows a step 796 in which cycle switching is performed for the Nth local storage device. Performing the cycle switching operation in the step 796 involves sending a command from the host 702 to the Nth local storage device. The processing of the command from the host by the Nth local storage device will be explained in more detail below. A section of the processing involved in the step 796 may include the feature that the host provides new values for the labels associated with data. The tags will be explained in more detail. In an alternative embodiment, the operations involved in the steps 794 . 796 in the form of a single integrated step 797 Running what is illustrated by the box, the steps around 794 . 796 runs around.

Nachfolgend auf den Schritt 796 folgt ein Schritt 798, bei dem die Index-Variable N inkrementiert wird. Nachfolgend auf den Schritt 798 wird die Steuerung zurück zu dem Testschritt 792 übertragen, um zu bestimmen, ob die Indexvariable N größer ist als die Zahl der Orts/Fern-Paare.Following on the step 796 follows a step 798 in which the index variable N is incremented. Following on the step 798 control is returned to the test step 792 to determine if the index variable N is greater than the number of local / remote pairs.

Wenn bei dem Testschritt 792 bestimmt wird, dass die Indexvariable N größer ist als die Zahl der Orts/Fern-Paare, wird die Steuerung von dem Testschritt 792 zu einem Schritt 802 übertragen, bei welchem die Indexvariable N auf Eins gesetzt wird. Nachfolgend auf den Schritt 802 folgt ein Testschritt 804, bei dem bestimmt wird, ob die Indexvariable N größer ist als die Zahl der Orts/Fern-Paare. Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 804 zu einem Schritt 806 übertragen, bei dem das Fenster für die N-te örtliche Speichervorrichtung geschlossen wird. Das Schließen des Fensters gemäß dem Schritt 806 wird durch den Host ausgeführt, der einen Befehl zu der N-ten örtlichen Speichervorrichtung sendet, um die N-te örtliche Speichervorrichtung zu veranlassen Schreiboperationen wieder aufzunehmen. Somit können irgendwelche Schreibvorgänge, die im Laufen sind und die durch das Öffnen des Fensters bei dem Schritt 794 ausgesetzt wurden, nun vervollständigt werden und zwar nach der Ausführung des Schrittes 806. Nachfolgend auf den Schritt 806 wird die Steuerung zu einem Schritt 808 übertragen, bei welchem die Indexvariable N inkrementiert wird. Nachfolgend auf den Schritt 808 wird die Steuerung zurück zu dem Testschritt 804 übertragen, um zu bestimmen, ob die Indexvariable N größer ist als die Zahl der Orts/Fern-Paare. Wenn dies der Fall ist wird die Steuerung von dem Testschritt 804 zurück zu dem Schritt 782 übertragen, um mit der Verarbeitung für den nächsten Zyklus-Schaltvorgang zu beginnen.If in the test step 792 is determined that the index variable N is greater than the number of the local / remote pairs, the control of the test step 792 to a step 802 in which the index variable N is set to one. Following on the step 802 follows a test step 804 in which it is determined whether the index variable N is greater than the number of local / remote pairs. If not, control is taken from the step 804 to a step 806 in which the window for the Nth local storage device is closed. Closing the window according to the step 806 is executed by the host sending a command to the Nth local storage device to cause the Nth local storage device to resume write operations. Thus, any writes that are in progress and those by opening the window at step 794 are now completed and that after the execution of the step 806 , Following on the step 806 the control becomes a step 808 in which the index variable N is incremented. Following on the step 808 control is returned to the test step 804 to determine if the index variable N is greater than the number of local / remote pairs. If so, control is from the test step 804 back to the step 782 to begin processing for the next cycle shift.

Gemäß 18 veranschaulicht ein Flussdiagramm 830 Schritte, die durch eine örtliche Speichervorrichtung in Verbindung mit dem Zyklus-Schaltvorgang ausgeführt werden. Das Flussdiagramm 830 von 18 ersetzt das Flussdiagramm 350 von 10 in Fällen, bei denen die örtliche Speichervorrichtung sowohl den Multi-Box-Modus als auch den Nicht-Multi-Box-Modus unterstützt. Das heißt Flussdiagramm 830 veranschaulicht Schritte, die durchgeführt werden ähnlich denjenigen des Flussdiagramms 350 von 10, um den Nicht-Multi-Box-Modus zu unterstützen und umfasst zusätzlich Schritte, um den Multi-Box-Modus zu unterstützen.According to 18 illustrates a flowchart 830 Steps performed by a local storage device in conjunction with the cycle switching operation. The flowchart 830 from 18 replaces the flowchart 350 from 10 in cases where the local storage device supports both the multi-box mode and the non-multi-box mode. That is flowchart 830 illustrates steps performed similar to those of the flowchart 350 from 10 to support the non-multi-box mode and also includes steps to support the multi-box mode.

Die Verarbeitung beginnt bei einem ersten Testschritt 832, bei dem bestimmt wird, ob die örtliche Speichervorrichtung sich in dem Multi-Box-Modus befindet. Es sei darauf hingewiesen, dass das Flussdiagramm 750 von 16 einen Schritt 758 zeigt, bei welchem der Host eine Nachricht zu der örtlichen Speichervorrichtung sendet. Die Nachricht, die bei dem Schritt 758 gesendet wird, zeigt der örtlichen Speichervorrichtung an, ob die örtliche Speichervorrichtung in dem Multi-Box-Modus ist oder nicht. Nach dem Empfang der Nachricht, die durch den Host bei dem Schritt 758 gesendet wird, stellt die örtliche Speichervorrichtung eine interne Variable ein, um anzuzeigen, ob die örtliche Speichervorrichtung sich in dem Multi-Box-Modus befindet oder nicht. Die interne Variable kann bei dem Testschritt 832 geprüft werden.The processing begins with a first test step 832 in which it is determined whether the local storage device is in the multi-box mode. It should be noted that the flowchart 750 from 16 one step 758 Fig. 2 shows where the host sends a message to the local storage device. The message at the step 758 is sent, the local storage device indicates whether or not the local storage device is in the multi-box mode. After receiving the message sent by the host at the step 758 is sent, the local storage device sets an internal variable to indicate whether or not the local storage device is in the multi-box mode. The internal variable can be at the test step 832 being checked.

Wenn bei dem Testschritt 832 bestimmt wird, dass die örtliche Speichervorrichtung nicht in dem Multi-Box-Modus ist, wird die Steuerung von dem Testschritt 832 zu einem Schritt 834 übertragen, um M Sekunden auf den Zyklusschaltvorgang zu warten. Wenn die örtliche Speichervorrichtung nicht in dem Multi-Box-Modus arbeitet, dann steuert die örtliche Speichervorrichtung ihren eigenen Zyklus-Schaltvorgang und führt somit den Schritt 834 aus, um M Sekunden zu warten bevor der nächste Zyklus-Schaltvorgang initiiert wird.If in the test step 832 it is determined that the local storage device is not in the multi-box mode, the control of the test step 832 to a step 834 to wait for M seconds to cycle. If the local storage device is not operating in the multi-box mode, then the local storage device controls its own cycle switching operation and thus performs the step 834 to wait M seconds before initiating the next cycle switch.

Nachfolgend auf den Schritt 834 oder nachfolgend auf den Schritt 832, wenn sich die örtliche Speichervorrichtung in dem Multi-Box-Modus befindet, folgt ein Testschritt 836, bei dem bestimmt wird, ob alle die HAs der örtlichen Speichervorrichtung ein Bit gesetzt haben, welches anzeigt, dass die HAs alle I/Os für eine frühere Sequenzzahl vervollständigt haben. Wenn sich die Sequenzzahl ändert, nimmt jede HAs die Änderung wahr und setzt ein Bit, welches anzeigt, dass alle I/Os der früheren Sequenzzahl vervollständigt worden sind. Wenn beispielsweise sich die Sequenzzahl von N – 1 nach N ändert, setzt eine HA ein Bit, wenn die HA alle I/Os für die Sequenzzahl N – 1 vervollständigt hat. Es sei erwähnt, dass in einigen Fällen eine einzelne I/O für ein HA eine lange Zeit beanspruchen kann und noch im Laufen sein kann und zwar selbst nachdem sich die Sequenzzahl geändert hat. Es sei auch darauf hingewiesen, dass bei einigen Systemen ein abweichender Mechanismus verwendet werden kann, um zu bestimmen, ob alle HAs ihre N – 1 I/Os vervollständigt haben. Dieser andere oder abweichende Mechanismus kann Prüfvorrichtungstabellen enthalten. Wenn einmal bei dem Testschritt 836 bestimmt worden ist, dass alle HAs das geeignete Bit gesetzt haben, wird die Steuerung von dem Testschritt 836 zu einem Schritt 888 übertragen, bei dem bestimmt wird, ob ein inaktives Datenpaket für die örtliche Speichervorrichtung leer ist. Wenn bei dem Testschritt 888 bestimmt wird, dass das inaktive Paket leer ist, wird die Steuerung von dem Schritt 888 zu einem Schritt 899 übertragen, bei dem das Kopieren der Daten von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung ausgesetzt wird. Es ist von Vorteil das Kopieren der Daten so lange auszusetzen, bis die Sequenzzahlumschaltung vervollständigt ist.Following on the step 834 or following the step 832 When the local storage device is in the multi-box mode, a test step follows 836 in which it is determined whether all of the HAs of the local storage device have set a bit indicating that the HA completes all I / Os for an earlier sequence number to have. As the sequence number changes, each HAs perceives the change and sets a bit indicating that all I / Os of the previous sequence number have been completed. For example, if the sequence number changes from N-1 to N, a HA sets a bit if the HA has completed all the I / Os for the sequence number N-1. It should be noted that in some cases a single I / O for a HA may take a long time and may still be running, even after the sequence number has changed. It should also be noted that some systems may use a different mechanism to determine if all HAs have completed their N-1 I / Os. This other or different mechanism may include tester tables. Once in the test step 836 it has been determined that all HAs have set the appropriate bit, control is taken from the test step 836 to a step 888 in which it is determined whether an inactive data packet for the local storage device is empty. If in the test step 888 it is determined that the inactive packet is empty, control is taken from the step 888 to a step 899 in which the copying of the data from the local storage device to the remote storage device is suspended. It is advantageous to suspend copying the data until the sequence count switch is completed.

Nachfolgend auf den Schritt 899 folg ein Testschritt 892, um zu bestimmen, ob die örtliche Speichervorrichtung in dem Multi-Box-Modus ist. Wenn bei dem Testschritt 892 bestimmt wird, dass sich die örtliche Speichervorrichtung in dem Multi-Box-Modus befindet, wird die Steuerung von dem Testschritt 892 zu einem Testschritt 894 übertragen, um zu bestimmen, ob das aktive Paket (chunk) der entsprechenden entfernt gelegnen Speichervorrichtung leer ist. Wie noch weiter unten mehr in Einzelzeiten erläutert wird, sendet die entfernt gelegene Speichervorrichtung eine Nachricht zu der örtlichen Speichervorrichtung, wenn diese ihr aktives Datenpaket geleert hat. Im Ansprechen auf die Nachricht setzt die örtliche Speichervorrichtung eine interne Variable, die bei dem Testschritt 894 geprüft wird.Following on the step 899 follow a test step 892 to determine if the local storage device is in the multi-box mode. If in the test step 892 is determined that the local storage device is in the multi-box mode, the control of the test step 892 to a test step 894 to determine if the active packet (chunk) of the corresponding remote storage device is empty. As explained more in detail below, the remote storage device sends a message to the local storage device when it has emptied its active data packet. In response to the message, the local storage device sets an internal variable that is at the test step 894 is checked.

Wenn einmal bei dem Testschritt 894 bestimmt worden ist, dass das aktive Datenpaket der entfernt gelegenen Speichervorrichtung leer ist, wird die Steuerung von dem Testschritt 894 zu einem Schritt 896 übertragen, bei dem eine interne Variable an einer örtlichen Speichervorrichtung gesetzt wird, was anzeigt, dass die örtliche Speichervorrichtung für Schaltzyklen bereit ist. Wie oben in Verbindung mit dem Flussdiagramm 780 von 17 erläutert worden ist, führt der Host Anfragen durch und zwar bei jeder örtlichen Speichervorrichtung, um zu bestimmen, ob jede der örtlichen Speichervorrichtungen für den Schaltvorgang bereit ist. Im Ansprechen auf die Anfrage, die durch den Host vorgesehen wird, überprüft die örtliche Speichervorrichtung die interne Variable, die bei dem Schritt 896 gesetzt wurde und gibt das Ergebnis an den Host zurück.Once in the test step 894 has been determined that the active data packet of the remote storage device is empty, the control of the test step 894 to a step 896 in which an internal variable is set at a local storage device, indicating that the local storage device is ready for switching cycles. As above in connection with the flow chart 780 from 17 The host performs requests at each local storage device to determine if each of the local storage devices is ready for the switching process. In response to the request provided by the host, the local storage device checks the internal variable involved in the step 896 has been set and returns the result to the host.

Nachfolgend auf den Schritt 896 folgt ein Testschritt 898, bei welchem die örtliche Speichervorrichtung wartet, um einen Befehl von dem Host zur Durchführung des Zyklus-Schaltvorganges zu empfangen. Wie weiter oben in Verbindung mit dem Flussdiagramm 780 von 17 erläutert wurde, liefert der Host einen Befehl in Verbindung mit Schaltzyklen zu der örtlichen Speichervorrichtung, wenn die örtliche Speichervorrichtung in dem Multi-Box-Modus arbeitet. Somit wartet die örtliche Speichervorrichtung auf den Befehl bei dem Schritt 898, der lediglich dann erreicht wird, wenn die örtliche Speichervorrichtung in dem Multi-Box-Modus arbeitet.Following on the step 896 follows a test step 898 in which the local storage device waits to receive a command from the host to perform the cycle switching operation. As above in connection with the flow chart 780 from 17 has been explained, the host provides a command in conjunction with switching cycles to the local storage device when the local storage device is operating in the multi-box mode. Thus, the local storage device waits for the command at the step 898 which is reached only when the local storage device is operating in the multi-box mode.

Wenn die örtliche Speichervorrichtung einmal den Schaltbefehl von dem Host empfangen hat, wird die Steuerung von dem Schritt 898 zu einem Schritt 902 übertragen, um eine Bestätigungsnachricht zu der entfernt gelegenen Speichervorrichtung zu senden. Es sei darauf hingewiesen, dass der Schritt 902 auch von dem Testschritt 892 aus erreicht wird, wenn bei dem Testschritt 892 bestimmt wird, dass die logische Speichervorrichtung nicht in dem Multi-Box-Modus ist. Bei dem Schritt 902 sendet die örtliche Speichervorrichtung eine Bestätigungsnachricht zu der entfernt gelegenen Speichervorrichtung. Als Antwort auf den Empfang einer Bestätigungsnachricht für eine bestimmte Sequenzzahl, beginnt die entfernt gelegene Speichervorrichtung die Daten wiederherzustellen und zwar entsprechend der Sequenzzahl, wie oben erläutert wurde.Once the local storage device has received the switching command from the host, control is taken from the step 898 to a step 902 to send a confirmation message to the remote storage device. It should be noted that the step 902 also from the test step 892 is reached when in the test step 892 it is determined that the logical storage device is not in the multi-box mode. At the step 902 the local storage device sends a confirmation message to the remote storage device. In response to receiving a confirmation message for a particular sequence number, the remote storage device begins to recover the data according to the sequence number, as discussed above.

Nachfolgend auf den Schritt 902 von folgt ein Schritt 906, bei welchem die Sequenzzahl inkrementiert wird und ein neuer Wert für das Etikettkennzeichen (von dem Host) gespeichert wird. Die Sequenzzahl wurde oben erläutert. Das Etikett oder Kennung ist ein Etikett, welches zu der örtlichen Speichervorrichtung bei dem Schritt 764 geliefert wird und auch bei dem Schritt 796, wie oben erläutert ist. Das Etikett oder die Kennung wird dazu verwendet, um die Datenwiederherstellung zu vereinfachen, wie auch bereits dargelegt worden ist.Following on the step 902 from follows a step 906 in which the sequence number is incremented and a new value for the tag (from the host) is stored. The sequence number has been explained above. The label or identifier is a label which is added to the local storage device at the step 764 is delivered and also at the step 796 as explained above. The tag or tag is used to simplify data recovery, as already stated.

Nachfolgend auf den Schritt 906 folgt ein Schritt 907, bei dem die Vervollständigung des Zylus-Schaltvorganges von der örtlichen Speichervorrichtung zu dem Host hin bestätigt wird, indem eine Nachricht von der örtlichen Speichervorrichtung zu dem Host gesendet wird. Bei einigen Ausführungsformen ist es möglich, den Schritt 907 für die Ausführung zu konditionieren und zwar abhängig davon, ob die örtliche Speichervorrichtung im Multi-Box-Modus ist oder nicht, da dann, wenn die örtliche Speichervorrichtung nicht in dem Multi-Box-Modus ist, der Host nicht notwendigerweise daran interessiert ist, wenn Zyklus-Schaltvorgänge auftreten.Following on the step 906 follows a step 907 in which the completion of the cycle switching operation from the local storage device to the host is confirmed by sending a message from the local storage device to the host. In some embodiments, it is possible to do the step 907 for the execution depending on whether the local storage device is in the multi-box mode or not, because if the local storage device is not in the multi-box mode, the host is not is necessarily interested in when cycle shifts occur.

Nachfolgend auf den Schritt 907 folgt ein Schritt 908, bei dem die Bits für die HAs, die bei dem Testschritt 836 verwendet wurden, gelöscht werden, so dass die Bits erneut in Verbindung mit dem Inkrementieren der Sequenzzahl gesetzt werden können. Nachfolgend auf den Schritt 908 folgt ein Testschritt 912, bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung die Bestätigungsnachricht anerkannt hat. Es sei darauf hingewiesen, dass dann, wenn das Orts/Fern-Paar in dem Multi-Box-Modus arbeitet und das aktive Datenpaket der entfernt gelegenen Speichervorrichtung bei dem Schritt 894 als leer festgelegt oder bestimmt wurde, dann die entfernt gelegene Speichervorrichtung die Bestätigungsnachricht anerkennen sollte, und zwar nahezu unmittelbar, da die entfernt gelegene Speichervorrichtung für den Zyklus-Schaltvorgang unmittelbar bereitsteht und zwar aufgrund der Tatsache, dass das aktive Paket derselben bereits leer ist.Following on the step 907 follows a step 908 in which the bits for the HAs used in the test step 836 are cleared so that the bits can be re-set in conjunction with incrementing the sequence number. Following on the step 908 follows a test step 912 in which it is determined whether the remote storage device has acknowledged the acknowledgment message. It should be noted that if the local / remote pair is operating in the multi-box mode and the active data packet of the remote storage device is in step 894 has been set as empty or determined, then the remote storage device should acknowledge the acknowledgment message almost immediately because the remote storage device is immediately ready for the cycle switch due to the fact that its active packet is already empty.

Wenn bei dem Testschritt 912 einmal bestimmt worden ist, dass die Bestätigungsnachricht durch die entfernt gelegene Speichervorrichtung anerkannt worden ist, wird die Steuerung von dem Schritt 912 zu einem Schritt 914 übertragen, bei dem das Aussetzen des Kopiervorganges, was bei dem Schritt 899 realisiert wurde, gelöscht wird, so dass der Kopiervorgang von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung wiederaufgenommen werden kann. Nachfolgend dem Schritt 914 ist die Verarbeitung dann vervollständigt.If in the test step 912 Once it has been determined that the acknowledgment message has been acknowledged by the remote storage device, control is taken from step 912 to a step 914 transferred, in which the suspension of the copying process, what in the step 899 has been realized, so that the copying operation can be resumed from the local storage device to the remote storage device. Following the step 914 then the processing is completed.

Gemäß 19 veranschaulicht ein Flussdiagramm 940 Schritte, die in Verbindung mit den RAs ausgeführt werden, welche inaktive Pufferstufen abtasten, um RDF-Daten von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden. Das Flussdiagramm 940 von 19 ist ähnlich dem Flussdiagramm 200 von 6 und es sind ähnliche Schritte mit der gleichen Bezugszahl versehen. Jedoch enthält das Flussdiagramm 940 zwei zusätzliche Schritte 942, 944, die im Flussdiagramm 200 von 6 nicht gefunden werden können. Die zusätzlichen Schritte 942, 944 werden dazu verwendet, um die Multi-Box-Verarbeitung zu vereinfachen. Nachdem Daten bei dem Schritt 212 gesendet worden sind, wird die Steuerung von dem Schritt 212 zu einem Testschritt 942 übertragen, bei dem bestimmt wird, ob die gesendeten Daten die letzten Daten in dem inaktiven Paket der örtlichen Speichervorrichtung sind. Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 942 zu dem Schritt 214 übertragen und die Verarbeitung wird fortgesetzt, wie dies weiter oben in Verbindung mit dem Flussdiagramm 200 von 6 erläutert worden ist. Wenn im anderen Fall bei dem Testschritt 942 bestimmt wird, dass die gesendeten Daten die letzten Daten des Paketes sind, wird die Steuerung von dem Schritt 942 zu dem Schritt 944 übertragen, um eine spezielle Nachricht von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden, die anzeigt, dass die letzten Daten gesendet worden sind. Nachfolgend auf den Schritt 944 wird die Steuerung auf einen Schritt 214 übertragen und die Verarbeitung wird fortgesetzt, wie dies in Verbindung mit dem Flussdiagramm 200 von 6 weiter oben erläutert wurde. Bei einigen Ausführungsformen können die Schritte 942, 944 durch einen getrennten Prozess (und/oder getrennte Hardwarevorrichtung) ausgeführt werden, der von dem Prozess und/oder der Hardwarevorrichtung verschieden ist, bei dem bzw. durch die die Daten übertragen werden.According to 19 illustrates a flowchart 940 Steps performed in conjunction with the RAs scanning inactive buffer stages to send RDF data from the local storage device to the remote storage device. The flowchart 940 from 19 is similar to the flowchart 200 from 6 and similar steps are given the same reference number. However, the flowchart contains 940 two additional steps 942 . 944 in the flowchart 200 from 6 can not be found. The additional steps 942 . 944 are used to simplify multi-box processing. After data at the step 212 have been sent, the control of the step 212 to a test step 942 in which it is determined whether the data sent is the last data in the inactive packet of the local storage device. If not, control is taken from the step 942 to the step 214 Transfer and processing continues, as discussed above in connection with the flowchart 200 from 6 has been explained. If, in the other case, in the test step 942 it is determined that the transmitted data is the last data of the packet, the control of the step 942 to the step 944 to send a special message from the local storage device to the remote storage device indicating that the last data has been sent. Following on the step 944 the control is on one step 214 Transfer and processing continues as described in connection with the flowchart 200 from 6 was explained above. In some embodiments, the steps 942 . 944 be performed by a separate process (and / or separate hardware device) that is different from the process and / or hardware device in which the data is being transferred.

Gemäß 20 veranschaulicht ein Flussdiagramm 950 Schritte, die in Verbindung mit den RAs ausgeführt werden, welche inaktive Pufferstufen abtasten, um RDF-Daten von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu übertragen. Das Flussdiagramm 950 von 20 ist ähnlich dem Flussdiagramm 500 von 13 und es sind ähnliche Schritte mit gleichen Bezugszahlen versehen. Jedoch enthält das Flussdiagramm 950 einen zusätzlichen Schritt 952, der in dem Flussdiagramm 500 von 13 nicht gefunden werden kann. Der zusätzliche Schritt 952 wird dazu verwendet, um die Multi-Box-Verarbeitung zu vereinfachen und ist ähnlich dem zusätzlichen Schritt 944 des Flussdiagramms 940 von 19. Nachdem bestimmt worden ist, dass bei dem Testschritt 524 nicht mehr Schlitze verblieben sind, die von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden sind, wird die Steuerung von dem Schritt 524 auf den Schritt 952 übertragen, um eine spezielle Nachricht von der örtlichen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden, die anzeigt, dass die letzten Daten für das Paket gesendet worden sind. Nachfolgend dem Schritt 952 ist die Verarbeitung vervollständigt.According to 20 illustrates a flowchart 950 Steps performed in conjunction with the RAs scanning inactive buffer stages to transfer RDF data from the on-premises storage device to the remote storage device. The flowchart 950 from 20 is similar to the flowchart 500 from 13 and similar steps are provided with like reference numerals. However, the flowchart contains 950 an extra step 952 that in the flowchart 500 from 13 can not be found. The extra step 952 is used to simplify multi-box processing and is similar to the extra step 944 of the flowchart 940 from 19 , After it has been determined that in the test step 524 no more slots remain to be sent from the local storage device to the remote storage device, the control of the step 524 on the step 952 to send a special message from the local storage device to the remote storage device indicating that the last data for the packet has been sent. Following the step 952 the processing is completed.

Gemäß 21 veranschaulicht ein Flussdiagramm 960 Schritte, die bei der entfernt gelegenen Speichervorrichtung in Verbindung mit dem Vorsehen einer Anzeige darüber ausgeführt werden, dass das aktive Paket der entfernt gelegenen Speichervorrichtung leer ist. Das Flussdiagramm 960 ist ähnlich dem Flussdiagramm 300 von 9 mit der Ausnahme, dass das Flussdiagramm 960 einen neuen Schritt 962 aufweist, der ausgeführt wird, nachdem das aktive Paket der entfernt gelegenen Speichervorrichtung wieder abgespeichert worden ist. Bei dem Schritt 962 sendet die entfernt gelegene Speichervorrichtung eine Nachricht zu der örtlichen Speichervorrichtung, die anzeigt, dass das aktive Paket der entfernt gelegenen Speichervorrichtung leer ist. Nach dem Empfang der Nachricht, die bei dem Schritt 962 gesendet wird, stellt die örtliche Speichervorrichtung eine interne Variable ein, die anzeigt, dass die inaktive Pufferstufe der entfernt gelegenen Speichervorrichtung leer ist. Die örtliche Variable wird in Verbindung mit dem Testschritt 894 des Flussdiagramms 830 von 18 geprüft, wie weiter oben erläutert wurde.According to 21 illustrates a flowchart 960 Steps performed on the remote storage device in conjunction with providing an indication that the active package of the remote storage device is empty. The flowchart 960 is similar to the flowchart 300 from 9 with the exception that the flowchart 960 a new step 962 which is executed after the active package of the remote storage device has been stored again. At the step 962 the remote storage device sends a message to the local storage device indicating that the active packet of the remote storage device is empty. After receiving the message at the step 962 is sent, the local storage device sets an internal variable indicating that the inactive buffer level of the remote storage device is empty. The local variable is associated with the test step 894 of the flowchart 830 from 18 tested, as explained above.

Gemäß 22 veranschaulicht ein Diagramm 980 den Host 702, die örtlichen Speichervorrichtungen 703705 und die entfernt gelegenen Speichervorrichtungen 706708, die in dem Diagramm 700 von 14 gezeigt sind. Das Diagramm 980 enthält auch einen ersten alternativen Host 982, der an den Host 702 und die örtlichen Speichervorrichtungen 703705 gekoppelt ist. Das Diagramm 980 enthält auch einen zweiten alternativen Host 984, der an die entfernt gelegenen Speichervorrichtungen 706708 gekoppelt ist. Die alternativen Hosts 982, 984 können auch für eine Datenwiedergewinnung oder Wiederherstellung verwendet werden, wie weiter unten mehr in Einzelheiten beschrieben wird.According to 22 illustrates a diagram 980 the host 702 , the local storage devices 703 - 705 and the remote storage devices 706 - 708 that in the diagram 700 from 14 are shown. The diagram 980 also contains a first alternative host 982 who is at the host 702 and the local storage devices 703 - 705 is coupled. The diagram 980 also contains a second alternative host 984 to the remote storage devices 706 - 708 is coupled. The alternative hosts 982 . 984 can also be used for data recovery or recovery, as described in more detail below.

Wenn die Wiederherstellung von Daten an der entfernt gelegenen Stelle erforderlich ist, kann die Wiederherstellung durch den Host 702 ausgeführt werden, oder auch durch den Host 982 vorausgesetzt, dass die Verbindungsglieder zwischen den örtlichen Speichervorrichtungen 703705 und den entfernt gelegenen Speichervorrichtungen 706708 weiter in Betrieb sind. Wenn die Verbindungsglieder nicht im Betrieb sind, kann die Datenwiederherstellung mit Hilfe des zweiten alternativen Hosts 984 ausgeführt werden, der an die entfernt gelegenen Speichervorrichtungen 706708 gekoppelt ist. Der zweite alternative Host 984 kann an der gleichen Stelle wie eine oder mehrere der entfernt gelegenen Speichervorrichtungen 706708 vorgesehen sein. Alternativ kann der zweite alternative Host 984 auch von all den entfernt gelegenen Speichervorrichtungen 706708 entfernt liegen. Die Tabelle 730, die durch das System hindurchgeschickt wird, wird in Verbindung mit der Datenwiederherstellung zugegriffen, um die Mitglieder der Multi-Box-Gruppe zu bestimmen.If recovery of data at the remote site is required, recovery may be through the host 702 be executed, or by the host 982 provided that the links between the local storage devices 703 - 705 and the remote storage devices 706 - 708 continue to operate. If the links are not in operation, data recovery can be done using the second alternate host 984 be executed, which to the remote storage devices 706 - 708 is coupled. The second alternative host 984 may be in the same location as one or more of the remote storage devices 706 - 708 be provided. Alternatively, the second alternative host 984 even from all the remote storage devices 706 - 708 lie away. The table 730 which is passed through the system is accessed in conjunction with the data recovery to determine the members of the multi-box group.

Gemäß 23 veranschaulicht ein Flussdiagramm 1000 Schritte, die von jeder der entfernt gelegenen Speichervorrichtungen 706708 in Verbindung mit der Datenwiedergewinnungsoperation ausgeführt werden. Die Schritte des Flussdiagramms 1000 können durch jede der entfernt gelegenen Speichervorrichtungen 706708 ausgeführt und zwar nach dem Empfang eines Signals oder einer Nachricht, die anzeigt, dass eine Datenwiederherstellung oder Datenwiedergewinnung erforderlich ist. Bei einigen Ausführungsformen kann es möglich sein, dass eine entfernt gelegene Speichervorrichtung automatisch feststellt, dass eine Datenwiederherstellung erforderlich ist, und zwar unter Verwendung von beispielsweise herkömmlichen Kriterien wie der Länge der Zeit seit dem letzten Schreibvorgang.According to 23 illustrates a flowchart 1000 Steps taken by each of the remote storage devices 706 - 708 in connection with the data recovery operation. The steps of the flowchart 1000 can pass through any of the remote storage devices 706 - 708 after receiving a signal or message indicating that data recovery or retrieval is required. In some embodiments, it may be possible for a remote storage device to automatically determine that data recovery is required using, for example, conventional criteria such as the length of time since the last write.

Die Verarbeitung beginnt bei einem ersten Schritt 1002, bei dem die entfernt gelegene Speichervorrichtung das Wiederspeichern des aktiven Pakets beendet, wie dies bereits an früherer Stelle erläutert wurde. Nachfolgend auf den Schritt 1002 folgt ein Testschritt 1004, bei dem bestimmt wird, ob das inaktive Paket der entfernt gelegenen Speichervorrichtung vollständig ist (das heißt alle die Daten dorthin geschrieben worden sind). Es sei darauf hingewiesen, dass die entfernt gelegene Speichervorrichtung bestimmen kann, ob das inaktive Datenpaket vollständig ist und zwar unter Verwendung der Nachricht, die durch die örtliche Speichervorrichtung bei den Schritten 944, 952 gesendet wird, wie weiter oben erläutert wurde. Das heißt, wenn die örtliche Speichervorrichtung die Nachricht bei dem Schritt 944 oder bei dem Schritt 952 gesendet hat, dann kann die entfernt gelegene Speichervorrichtung den Empfang von dieser Nachricht dazu verwenden, um zu bestätigen, dass das inaktive Datenpaket vollständig ist.Processing begins with a first step 1002 in which the remote storage device terminates the re-storage of the active packet, as previously explained. Following on the step 1002 follows a test step 1004 in which it is determined whether the inactive packet of the remote storage device is complete (that is, all the data has been written thereto). It should be noted that the remote storage device may determine whether the inactive data packet is complete, using the message provided by the local storage device in the steps 944 . 952 is sent, as explained above. That is, when the local storage device receives the message at the step 944 or at the step 952 then the remote storage device may use the receipt of that message to confirm that the inactive data packet is complete.

Wenn bei dem Testschritt 1004 bestimmt wird, dass das inaktive Datenpaket der entfernt gelegenen Speichervorrichtung nicht vollständig ist, wird die Steuerung von dem Testschritt 1004 zu einem Schritt 1006 übertragen, bei dem die Daten von dem inaktiven Datenpaket gelöscht werden. Es wird dann keine Datenwiederherstellung oder Datenwiedergewinnung unter Verwendung unvollständiger inaktiver Datenpakete durchgeführt, da die dort vorhandenen Daten inkonsistent sein können und zwar mit den entsprechenden aktiven Datenpaketen. Demzufolge wird eine Datenwiederherstellung oder Datengewinnung unter Verwendung der aktiven Datenpakete durchgeführt und in einigen Fällen sind die inaktiven Datenpakete komplett. Nachfolgend auf den Schritt 1006 ist dann die Verarbeitung vervollständigt.If in the test step 1004 is determined that the inactive data packet of the remote storage device is not complete, the control of the test step 1004 to a step 1006 in which the data is deleted from the inactive data packet. No data recovery or retrieval is then performed using incomplete inactive data packets because the data there may be inconsistent with the corresponding active data packets. As a result, data recovery or retrieval is performed using the active data packets, and in some cases, the inactive data packets are complete. Following on the step 1006 then the processing is completed.

Wenn bei dem Testschritt 1004 bestimmt wird, dass das inaktive Datenpaket vollständig ist, wird die Steuerung von dem Schritt 1004 zu dem Schritt 1008 übertragen, bei dem die entfernt gelegene Speichervorrichtung auf eine Intervention durch den Host wartet. Wenn ein inaktives Datenpaket vorhanden ist, muss einer der Hosts 702, 982, 984, je nach Fall, den Zustand von allen den entfernt gelegenen Speichervorrichtungen in der Multi-Box-Gruppe prüfen, um zu bestimmen auf welche Weise die Wiedergewinnung oder Wiederherstellung durchzuführen ist. Dies wird mehr in Einzelheiten weiter unten beschrieben.If in the test step 1004 it is determined that the inactive data packet is complete, the control of the step 1004 to the step 1008 in which the remote storage device is waiting for an intervention by the host. If an inactive data packet exists, one of the hosts must be 702 . 982 . 984 as appropriate, check the state of all the remote storage devices in the multi-box group to determine how to perform the recovery or recovery. This will be described in more detail below.

Nachfolgend auf den Schritt 1008 folgt ein Testschritt 1012, bei dem bestimmt wird, ob der Host einen Befehl zu allen Speichervorrichtungen geschickt hat, um das inaktive Datenpaket auszulöschen. Wenn dies der Fall ist, wird die Steuerung von dem Schritt 1012 zu dem Schritt 1006 übertragen, um das inaktive Datenpaket zu löschen. Nachfolgend auf den Schritt 1006 ist dann die Verarbeitung vervollständigt.Following on the step 1008 follows a test step 1012 in which it is determined if the host has sent a command to all storage devices to wipe out the inactive data packet. If this is the case, the control of the step 1012 to the step 1006 to delete the inactive data packet. Following on the step 1006 then the processing is completed.

Wenn bei dem Testschritt 1002 bestimmt wird, dass der Host einen Befehl abgegeben hat, um das vollständige inaktive Datenpaket wieder abzuspeichern, wird die Steuerung von dem Schritt 1012 zu einem Schritt 1014 übertragen, bei dem das inaktive Datenpaket zu der entfernt gelegenen Speichervorrichtung hin wiederabgespeichert wird. Das Wiederabspeichern (restoring) des inaktiven Datenpakets in der entfernt gelegenen Speichervorrichtung involviert, dass das inaktive Datenpaket zu einem aktiven Datenpaket gemacht wird und dass dann das aktive Datenpaket zu der Platte geschrieben wird, wie dies bereits beschrieben worden ist. Nachfolgend auf den Schritt 1014 ist die Verarbeitung dann vervollständigt.If in the test step 1002 it is determined that the host has issued a command to restore the entire inactive data packet, the control of the step 1012 to a step 1014 in which the inactive data packet is re-stored to the remote storage device. The restoring of the inactive data packet in the remote storage device involves making the inactive data packet an active data packet and then writing the active data packet to the disk, as already described. Following on the step 1014 then the processing is completed.

Gemäß 24 veranschaulicht ein Flussdiagramm 1030 Schritte, die in Verbindung mit einem der Hosts 702, 982, 984 ausgeführt werden, wenn bestimmt wird, ob eine Löschung oder Wiederabspeicherung von jedem der inaktiven Datenpakete von jeder der entfernt gelegenen Speichervorrichtungen erfolgen soll. Der eine der Hosts 702, 982, 984, der die Wiederabspeicherung durchführt, kommuniziert mit den entfernt gelegenen Speichervorrichtungen 706708, um Befehle dorthin zu liefern und um Informationen von diesen zu empfangen und zwar unter Verwendung der Etiketten oder Kennungen, die durch den Host zugewiesen werden, wie bereits erläutert worden ist.According to 24 illustrates a flowchart 1030 Steps in conjunction with one of the hosts 702 . 982 . 984 when determining whether erasure or restocking of each of the inactive data packets from each of the remote storage devices is to be performed. The one of the hosts 702 . 982 . 984 The re-storage communicates with the remote storage devices 706 - 708 to provide instructions there and to receive information from them using the labels or identifiers assigned by the host, as previously explained.

Die Verarbeitung beginnt bei einem ersten Schritt 1032, bei dem bestimmt wird, ob irgendeine der entfernt gelegenen Speichervorrichtungen einen vollständigen inaktiven Datenblock enthält. Wenn dies nicht der Fall ist, erfolgt auch keine weitere Verarbeitung, die ausgeführt wird und die entfernt gelegenen Speichervorrichtungen löschen die unvollständigen Datenpakete für sich selbst, wie bereits oben erläutert worden ist, ohne Intervention des Host. Ansonsten wird die Steuerung von dem Testschritt 1032 zu einem Testschritt 1034 übertragen, bei dem der Host bestimmt, ob alle die entfernt gelegenen Speichervorrichtungen inaktive Datenpakete vollständig haben. Wenn dies der Fall ist, wird die Steuerung von dem Testschritt 1034 zu einem Testschritt 1036 übertragen, bei dem bestimmt wird, ob alle die vollständigen inaktiven Datenpakete von allen den entfernt gelegenen Speichervorrichtungen die gleiche Etikettenzahl haben. Wie bereits erläutert worden ist sind die Etiketten (tags) durch den Host zugewiesen und werden durch das System dazu verwendet, um Daten in einer Weise zu identifizieren, ähnlich wie bei der Sequenzzahl mit Ausnahme, dass die Kennungen oder Etiketten durch den Host gesteuert werden, so dass sie den gleichen Wert für den gleichen Zyklus aufweisen.Processing begins with a first step 1032 in which it is determined whether any of the remote storage devices contains a complete inactive data block. If this is not the case, then no further processing is performed and the remote storage devices delete the incomplete data packets for themselves, as already explained above, without intervention of the host. Otherwise, the control of the test step 1032 to a test step 1034 in which the host determines if all the remote storage devices have inactive data packets completely. If so, control is from the test step 1034 to a test step 1036 in which it is determined whether all of the complete inactive data packets from all the remote storage devices have the same label number. As already explained, the tags are assigned by the host and are used by the system to identify data in a manner similar to the sequence number except that the tags or tags are controlled by the host. so that they have the same value for the same cycle.

Wenn bei dem Testschritt 1036 bestimmt wird, dass alle die entfernt gelegenen Speichervorrichtungen das gleiche Etikett oder Kennung für die inaktiven Datenpakete haben, wird die Steuerung von dem Schritt 1036 zu einem Schritt 1038 übertragen, bei dem alle die inaktiven Datenpakete wieder abgespeichert werden. Das Durchführen des Schrittes 1038 stellt sicher, dass alle die entfernt gelegenen Speichervorrichtungen Daten aus dem gleichen Zyklus haben. Nachfolgend auf den Schritt 1038 ist die Verarbeitung dann vervollständigt.If in the test step 1036 it is determined that all the remote storage devices have the same label or identifier for the inactive data packets, control is taken from the step 1036 to a step 1038 transferred, in which all the inactive data packets are stored again. Performing the step 1038 Ensures that all the remote storage devices have data from the same cycle. Following on the step 1038 then the processing is completed.

Wenn bei dem Testschritt 1034 bestimmt wird, dass alle die inaktiven Datenpakete nicht vollständig sind oder wenn bestimmt wird, dass bei dem Schritt 1036 alle die inaktiven Datenpakete, die komplett sind, nicht die gleiche Kennung oder Etikett haben, wird die Steuerung zu einem Schritt 1042 übertragen, bei dem der Host einen Befehl zu den entfernt gelegenen Speichervorrichtungen liefert, um die vollständigen inaktiven Datenpakete wieder abzuspeichern, welche die niedrigere Etikettenzahl aufweisen. Zum Zwecke der Erläuterung sei angenommen, dass die Etikettenzahlen oder Etikettennummern inkrementiert werden, so dass eine niedrigere Etikettenzahl ältere Daten repräsentiert. Anhand eines Beispiels, wenn eine erste entfernt gelegene Speichervorrichtung einen vollständigen inaktiven Datensatz bzw. Datenpaket mit einem Etikettenwert von Drei aufgewiesen hat und eine zweite entfernt gelegene Speichervorrichtung einen kompletten inaktiven Datensatz oder Datenpaket mit einem Etikettenwert von Vier aufgewiesen hat, würde der Schritt 1042 die erste entfernt gelegene Speichervorrichtung veranlassen (nicht jedoch die zweite) ihr inaktives Datenpaket wieder abzuspeichern. Nachfolgend auf den Schritt 1042 folgt ein Schritt 1044, bei dem der Host Befehle zu den entfernt gelegenen Speichervorrichtungen liefert, um die vollständigen inaktiven Pufferstufen zu löschen, welche eine höhere Etikettenzahl aufweisen (zum Beispiel die zweite entfernt gelegene Speichervorrichtung bei dem früheren Beispiel). Nachfolgend auf den Schritt 1044 ist dann die Verarbeitung vervollständigt.If in the test step 1034 it is determined that all of the inactive data packets are incomplete or if it is determined that at the step 1036 if all the inactive data packets that are complete do not have the same identifier or tag, the control becomes one step 1042 in which the host provides a command to the remote storage devices to re-store the complete inactive data packets having the lower tag count. For purposes of explanation, assume that the label numbers or label numbers are incremented so that a lower label number represents older data. By way of example, if a first remote storage device had a complete inactive record having a tag value of three and a second remote storage device had a complete inactive record or data packet with a tag value of four, the step would become 1042 the first remote memory device cause (but not the second) to re-store its inactive data packet. Following on the step 1042 follows a step 1044 in which the host provides commands to the remote storage devices to clear the entire inactive buffer stages having a higher tag count (e.g., the second remote storage device in the earlier example). Following on the step 1044 then the processing is completed.

Nachfolgend der Ausführung des Schrittes 1044 enthält jede der entfernt gelegenen Speichervorrichtungen Daten, die den gleichen Etikettenwert zugeordnet sind und zwar in Form von Daten für andere der entfernt gelegenen Speichervorrichtungen. Demzufolge sollten dann die wiederhergestellten oder wiedergewonnenen Daten bei den entfernt gelegenen Speichervorrichtungen 706708 konsistent sein.Following the execution of the step 1044 Each of the remote storage devices contains data associated with the same tag value in the form of data for other of the remote storage devices. Consequently, then the recovered or retrieved data should be at the remote storage devices 706 - 708 be consistent.

Obwohl die vorliegende Erfindung in Verbindung mit vielfältigen Ausführungsformen erläutert wurde, sind für Fachleute modifizierte Ausführungsformen offensichtlich. Demzufolge ergibt sich der Rahmen der vorliegenden Erfindung aus den nachfolgenden Ansprüchen.Although the present invention has been illustrated in conjunction with various embodiments, embodiments modified for those skilled in the art will be apparent. Accordingly, the scope of the present invention is apparent from the following claims.

Claims (3)

Verfahren zum Ordnen von Datenschreibeinträgen, mit den folgenden Schritten: wenigstens eine einer Gruppe von primären Speichervorrichtungen empfängt eine erste Vielzahl von Datenschreibeinträgen die vor einer ersten Zeit veranlasst werden; es wird ein Sendezyklus-Schaltvorgang zu einem neuen Sendezyklus für die mindestens eine der Gruppen der primären Speichervorrichtungen veranlaßt, wobei die erste Vielzahl der Datenschreibeinträge einem bestimmten Sendezyklus für die mindestens eine der primären Speichervorrichtungen in der Gruppe zugeordnet ist; die wenigstens eine aus der Gruppe der primären Speichervorrichtungen empfängt eine zweite Vielzahl an Schreibeinträgen und zwar nach der Initialisierung des Sendezyklus-Schaltvorganges, wobei alle Schreibeinträge der zweiten Vielzahl der Schreibeinträge einem Sendezyklus zugeordnet werden, der von dem speziellen Sendezyklus für die mindestens eine der primären Speichervorrichtungen verschieden ist und die zweite Vielzahl von Schreibeinträgen nach der genannten ersten Zeit veranlasst wird; wobei die Schreibeinträge zu der Gruppe, die nach der Initialisierung des Sendezyklus-Schaltvorganges begonnen haben, bis nach der Vervollständigung des Sendezyklus-Schaltvorganges nicht vervollständigt werden; und nach der Vervollständigung des Sendezyklus-Schaltvorganges initiiert die mindestens eine der primären Speichervorrichtungen der Gruppe einen Transfer der ersten Vielzahl der Schreibeinträge zu einer entsprechenden sekundären Speichervorrichtung und wobei ein Verursachen des Sendezyklus-Schaltvorganges folgendes enthält: Abwarten einer vorbestimmten Zeitdauer; Bestimmen, ob alle primären Speichervorrichtungen der Gruppe der Speichervorrichtungen für den Schaltvorgang bereit sind; und Senden eines ersten Befehls zu jeder der primären Speichervorrichtungen der Gruppe, um einen Sendezyklusschaltvorgang zu bewirken.Procedure for ordering data write entries, with the following steps: at least one of a group of primary storage devices receives a first plurality of data write entries that are initiated a first time; a transmit cycle switch is caused to a new send cycle for the at least one of the groups of primary storage devices, the first plurality of data write entries being associated with a particular send cycle for the at least one of the primary storage devices in the group; the at least one of the group of primary storage devices receives a second plurality of write entries after initialization of the transmit cycle switch, wherein all write entries of the second plurality of write entries are associated with a transmit cycle from the particular transmit cycle for the at least one of the primary storage devices is different and causes the second plurality of write entries after said first time; wherein the write entries to the group which started after the transmission cycle switching has been initialized are not completed until after the completion of the transmission cycle switching operation; and after completion of the transmit cycle switching operation, the at least one of the primary storage devices of the group initiates transfer of the first plurality of write entries to a corresponding secondary storage device and wherein causing the transmission cycle switching process includes: Waiting for a predetermined period of time; Determining if all the primary storage devices of the group of storage devices are ready for the switching operation; and Sending a first command to each of the primary storage devices of the group to effect a send cycle switch. Verfahren nach Anspruch 1, bei dem ein Host den Sendezyklus-Schaltvorgang verursacht.The method of claim 1, wherein a host causes the transmission cycle switching operation. Verfahren nach Anspruch 1, bei dem jeder Sendezyklus einem bestimmten Etikettenwert (tag value) zugeordnet ist, der mit jedem Datenpaket vorgesehen wird.The method of claim 1, wherein each transmit cycle is associated with a particular tag value provided with each data packet.
DE112004002315.7T 2003-12-01 2004-10-19 Virtual ordered write entries for multiple storage devices Active DE112004002315B4 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/724,670 US7228456B2 (en) 2003-12-01 2003-12-01 Data recovery for virtual ordered writes for multiple storage devices
US10/724,669 2003-12-01
US10/724,670 2003-12-01
US10/724,669 US7054883B2 (en) 2003-12-01 2003-12-01 Virtual ordered writes for multiple storage devices
PCT/US2004/034330 WO2005057337A2 (en) 2003-12-01 2004-10-19 Virtual ordered writes for multiple storage devices

Publications (2)

Publication Number Publication Date
DE112004002315T5 DE112004002315T5 (en) 2006-10-12
DE112004002315B4 true DE112004002315B4 (en) 2016-11-10

Family

ID=34681728

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004002315.7T Active DE112004002315B4 (en) 2003-12-01 2004-10-19 Virtual ordered write entries for multiple storage devices

Country Status (4)

Country Link
JP (1) JP2007513424A (en)
DE (1) DE112004002315B4 (en)
GB (1) GB2423173B (en)
WO (1) WO2005057337A2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5901327A (en) * 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
US6157991A (en) * 1998-04-01 2000-12-05 Emc Corporation Method and apparatus for asynchronously updating a mirror of a source device
US6209002B1 (en) * 1999-02-17 2001-03-27 Emc Corporation Method and apparatus for cascading data through redundant data storage units
US6301643B1 (en) * 1998-09-03 2001-10-09 International Business Machines Corporation Multi-environment data consistency
US6415292B1 (en) * 2001-08-28 2002-07-02 Emc Corporation Shuttle-based mechanism for numbering concurrent chains of independent data transfers

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5615329A (en) * 1994-02-22 1997-03-25 International Business Machines Corporation Remote data duplexing
US6345346B1 (en) * 1999-02-26 2002-02-05 Voom Technologies Substantially instantaneous storage restoration for non-computer forensics applications
JP3983516B2 (en) * 2001-10-25 2007-09-26 株式会社日立製作所 Storage system
US6898685B2 (en) * 2003-03-25 2005-05-24 Emc Corporation Ordering data writes from a local storage device to a remote storage device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5901327A (en) * 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
US6157991A (en) * 1998-04-01 2000-12-05 Emc Corporation Method and apparatus for asynchronously updating a mirror of a source device
US6301643B1 (en) * 1998-09-03 2001-10-09 International Business Machines Corporation Multi-environment data consistency
US6209002B1 (en) * 1999-02-17 2001-03-27 Emc Corporation Method and apparatus for cascading data through redundant data storage units
US6415292B1 (en) * 2001-08-28 2002-07-02 Emc Corporation Shuttle-based mechanism for numbering concurrent chains of independent data transfers

Also Published As

Publication number Publication date
WO2005057337A3 (en) 2005-12-29
GB0609391D0 (en) 2006-06-21
JP2007513424A (en) 2007-05-24
WO2005057337A2 (en) 2005-06-23
GB2423173A (en) 2006-08-16
GB2423173B (en) 2007-06-06
DE112004002315T5 (en) 2006-10-12

Similar Documents

Publication Publication Date Title
DE60312746T2 (en) RECOVERY AFTER FAULTS IN DATA PROCESSING PLANTS
DE60018872T2 (en) System and method for deleting database update image files after completion of associated transactions
DE60317383T2 (en) Data recovery device using journal data and identification information
DE69831944T2 (en) DEVICE AND METHOD FOR SECURING A PLATE STORAGE SYSTEM
DE60213867T2 (en) DEVICE FOR MANAGING DATA REPLICATION
DE60318687T2 (en) MAKE A MIRRORED COPY USING INCREMENTAL DIVERGENCE
DE60038364T2 (en) Computer system and snapshot data management method
DE69636330T2 (en) Procedures for on-line and real-time data migration
DE69838898T2 (en) Duplicate disk storage controls
DE60112462T2 (en) RESTORING FILE SYSTEM DATA IN FILE SERVER WITH MIRRORED FILE SYSTEM VOLUMES
DE602004005344T2 (en) METHOD, SYSTEM AND PROGRAM FOR HANDLING A FAILOVER TO A REMOTE MEMORY
DE69938378T2 (en) Copy data to storage systems
DE69724846T2 (en) Multi-way I / O storage systems with multi-way I / O request mechanism
DE602005001041T2 (en) Dump System
DE602005000819T2 (en) Maintaining the Consistency of a Remote Copy Using Virtualization
DE4497149B4 (en) Computer-based method for data replication in peer-to-peer environment
EP0163096B1 (en) Apparatus for saving a calculator status
DE112011100534B4 (en) Multi-stage backup process
DE69724834T2 (en) SYSTEM FOR HIGHLY AVAILABLE DATA STORAGE WITH GENERALLY ADDRESSED STORAGE
DE69733076T2 (en) HIGH-PERFORMANCE DATA PATH WITH IMMEDIATE XOR
DE10112941B4 (en) System and method for parallel reading of primary and secondary backups to restore multiple shared database files
DE102004064069B4 (en) Disk array device
DE69918470T2 (en) Managing a resource used by a plurality of nodes
DE19924822A1 (en) Data processing and communication system with protection against loss of data due to catastrophic failure; has local server using operating protocol in which all data is stored in nonvolatile memory
DE60113586T2 (en) Transferring interconnected data objects in a distributed data storage environment

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004002315

Country of ref document: DE

Date of ref document: 20061012

Kind code of ref document: P

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final