DE102005036291B9 - Verfahren zum Speichern von Wiederherstelldaten in einem System - Google Patents
Verfahren zum Speichern von Wiederherstelldaten in einem System Download PDFInfo
- Publication number
- DE102005036291B9 DE102005036291B9 DE102005036291.5A DE102005036291A DE102005036291B9 DE 102005036291 B9 DE102005036291 B9 DE 102005036291B9 DE 102005036291 A DE102005036291 A DE 102005036291A DE 102005036291 B9 DE102005036291 B9 DE 102005036291B9
- Authority
- DE
- Germany
- Prior art keywords
- data
- storage device
- local
- destination
- remote
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2082—Data synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2069—Management of state, configuration or failover
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2058—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2074—Asynchronous techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/855—Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Verfahren zum Speichern von Wiederherstelldaten in einem System mit
• einer ersten Speichervorrichtung (1202) zum Speichern dorthin geschriebener Daten, wobei die erste Speichervorrichtung (1202) in eine Vielzahl von logischen Speichervorrichtungen unterteilt ist,
• einer zweiten Speichervorrichtung (1206), welche eine Kopie der auf der ersten Speichervorrichtung (1202) gespeicherten Daten enthält,
• wobei die zweite Speichervorrichtung (1206) eine Spiegelung der Daten auf der ersten Speichervorrichtung (1202) ist, wobei Schreibeinträge auf die erste Speichervorrichtung (1202) zur zweiten Speichervorrichtung (1206) in einem asynchronen Datenübertragungsmodus übertragen werden, bei dem auf die erste Speichervorrichtung (1202) geschriebene Daten durch die erste Speichervorrichtung (1202) bestätigt werden, bevor sie auf der zweiten Speichervorrichtung (1206) gespeichert sind, gekennzeichnet durch die folgenden Schritte:
• Liefern der Daten von Schreibeinträgen auf die erste Speichervorrichtung (1202) in einer Vielzahl von Datenpaketen [chunks of data] (52) von der ersten Speichervorrichtung (1202) zur zweiten Speichervorrichtung (1206), wobei jedes Datenpaket (52) eine Vielzahl von getrennten Schreibeinträgen repräsentiert, wobei für ein erstes Datenpaket (52) und ein zweites Datenpaket (54) jeder Schreibeintrag für das zweite Datenpaket (54) vor dem Beginn irgendeines der Schreibeinträge für das erste Paket (52) begonnen wurde, wobei das Sammeln der Daten eines bestimmten Datenpakets auf der ersten Speichervorrichtung einem bestimmten Zyklus entspricht und wobei ein Zyklusschaltvorgang (1262) in Verbindung mit der Erzeugung eines neuen Datenpakets durchgeführt wird;
• Liefern von den Datenpaketen entsprechenden Synchrondaten zu einer lokalen Ziel-Speichervorrichtung (1204), wobei Synchrondaten zu der lokalen Ziel-Speichervorrichtung (1204) in einem synchronen Datenübertragungsmodus übertragen werden, bei dem Schreibeinträge von Synchrondaten auf die erste Speichervorrichtung (1202) nicht bestätigt werden, bis die Daten erfolgreich auf die lokale Ziel-Speichervorrichtung (1204) übertragen sind; und
• die erste Speichervorrichtung (1202) liefert an die lokale Ziel-Speichervorrichtung (1204) Mapping-Daten entsprechend der Durchführung eines Zyklusschaltvorgangs (1262) in Verbindung mit der Erzeugung eines neuen Datenpakets zum Speichern an der zweiten Speichervorrichtung (1206), wobei die Mapping-Daten zur lokalen Ziel-Speichervorrichtung (1204) gelieferte Synchrondaten bestimmten an die zweite Speichervorrichtung (1206) gelieferten Datenpaketen zuordnen,
• wobei Daten, die an der lokalen Ziel-Speichervorrichtung (1204) und der zweiten Speichervorrichtung (1206) gespeichert sind, wie folgt wiederhergestellt werden können:
o das Bestimmen, welche von diesen Speichervorrichtungen die neuesten Daten enthält,
o Verwendung der Mapping-Daten zur Bestimmung der Datenpakete, die nicht als auf die andere Speichervorrichtung, die nicht die neuesten Daten enthält, geschrieben bestätigt wurden,
o Kopieren dieser Datenpakete von der Speichervorrichtung mit den neuesten Daten zu der Speichervorrichtung, die nicht die neuesten Daten enthält.
• einer ersten Speichervorrichtung (1202) zum Speichern dorthin geschriebener Daten, wobei die erste Speichervorrichtung (1202) in eine Vielzahl von logischen Speichervorrichtungen unterteilt ist,
• einer zweiten Speichervorrichtung (1206), welche eine Kopie der auf der ersten Speichervorrichtung (1202) gespeicherten Daten enthält,
• wobei die zweite Speichervorrichtung (1206) eine Spiegelung der Daten auf der ersten Speichervorrichtung (1202) ist, wobei Schreibeinträge auf die erste Speichervorrichtung (1202) zur zweiten Speichervorrichtung (1206) in einem asynchronen Datenübertragungsmodus übertragen werden, bei dem auf die erste Speichervorrichtung (1202) geschriebene Daten durch die erste Speichervorrichtung (1202) bestätigt werden, bevor sie auf der zweiten Speichervorrichtung (1206) gespeichert sind, gekennzeichnet durch die folgenden Schritte:
• Liefern der Daten von Schreibeinträgen auf die erste Speichervorrichtung (1202) in einer Vielzahl von Datenpaketen [chunks of data] (52) von der ersten Speichervorrichtung (1202) zur zweiten Speichervorrichtung (1206), wobei jedes Datenpaket (52) eine Vielzahl von getrennten Schreibeinträgen repräsentiert, wobei für ein erstes Datenpaket (52) und ein zweites Datenpaket (54) jeder Schreibeintrag für das zweite Datenpaket (54) vor dem Beginn irgendeines der Schreibeinträge für das erste Paket (52) begonnen wurde, wobei das Sammeln der Daten eines bestimmten Datenpakets auf der ersten Speichervorrichtung einem bestimmten Zyklus entspricht und wobei ein Zyklusschaltvorgang (1262) in Verbindung mit der Erzeugung eines neuen Datenpakets durchgeführt wird;
• Liefern von den Datenpaketen entsprechenden Synchrondaten zu einer lokalen Ziel-Speichervorrichtung (1204), wobei Synchrondaten zu der lokalen Ziel-Speichervorrichtung (1204) in einem synchronen Datenübertragungsmodus übertragen werden, bei dem Schreibeinträge von Synchrondaten auf die erste Speichervorrichtung (1202) nicht bestätigt werden, bis die Daten erfolgreich auf die lokale Ziel-Speichervorrichtung (1204) übertragen sind; und
• die erste Speichervorrichtung (1202) liefert an die lokale Ziel-Speichervorrichtung (1204) Mapping-Daten entsprechend der Durchführung eines Zyklusschaltvorgangs (1262) in Verbindung mit der Erzeugung eines neuen Datenpakets zum Speichern an der zweiten Speichervorrichtung (1206), wobei die Mapping-Daten zur lokalen Ziel-Speichervorrichtung (1204) gelieferte Synchrondaten bestimmten an die zweite Speichervorrichtung (1206) gelieferten Datenpaketen zuordnen,
• wobei Daten, die an der lokalen Ziel-Speichervorrichtung (1204) und der zweiten Speichervorrichtung (1206) gespeichert sind, wie folgt wiederhergestellt werden können:
o das Bestimmen, welche von diesen Speichervorrichtungen die neuesten Daten enthält,
o Verwendung der Mapping-Daten zur Bestimmung der Datenpakete, die nicht als auf die andere Speichervorrichtung, die nicht die neuesten Daten enthält, geschrieben bestätigt wurden,
o Kopieren dieser Datenpakete von der Speichervorrichtung mit den neuesten Daten zu der Speichervorrichtung, die nicht die neuesten Daten enthält.
Description
- HINTERGRUND DER ERFINDUNG
- Technisches Gebiet
- Die vorliegende Anmeldung betrifft Verfahren zum Speichern von Wiederherstelldaten in einem System gemäß den Oberbegriffen der Ansprüche 1 und 8.
- Stand der Technik
- Hostprozessorsysteme können Daten speichern und auslesen, und zwar unter Verwendung einer Speichervorrichtung, die eine Vielzahl an Host-Interfaceeinheiten (Hostadaptern), Plattenlaufwerken und Platten-Interfaceeinheiten (Plattenadapter) enthält. Solche Speichervorrichtungen werden beispielsweise durch die EMC Corporation aus Hopkinton, Massachusetts, USA geliefert und sind in dem
US-Patent Nr. 5,206,939 von Ynai et al., demUS-Patent Nr. 5,778,394 von Galtzur et al., demUS-Patent Nr. 5,845,147 von Vishlitzky et al. und demUS-Patent Nr. 5,857,208 von Ofek offenbart. Die Hostsysteme greifen auf die Speichervorrichtung über eine Vielzahl von Kanälen zu, die bei diesen vorgesehen sind. Die Hostsysteme liefern Daten und Zugriffssteuerinformationen über die Kanäle zu der Speichervorrichtung und die Speichervorrichtung liefert Daten zu den Hostsystemen ebenso über die Kanäle. Die Hostsysteme adressieren die Plattenlaufwerke der Speichervorrichtung nicht direkt, sondern vielmehr greifen sie darauf zu, was für die Hostsysteme in Form einer Vielzahl von logischen Platteneinheiten erscheint. Die logischen Platteneinheiten können oder können auch nicht den tatsächlichen Plattenlaufwerken entsprechen. Das Zulassen des Zugriffs vieler Hostsysteme auf eine einzelne Speichervorrichtungseinheit ermöglicht es den Hostsystemen, die darin gespeicherten Daten gemeinsam zu verwenden. - In einigen Fällen kann es wünschenswert sein, Daten von einer Speichervorrichtung zu einer anderen zu kopieren. Wenn beispielsweise ein Host Daten auf eine erste Speichervorrichtung schreibt, kann es wünschenswert sein, diese Daten zu einer zweiten Speichervorrichtung zu kopieren, die an einem anderen Ort vorgesehen ist, so dass dann, wenn ein Desaster auftritt, bei welchem die erste Speichervorrichtung nicht mehr betriebsfähig ist, der Host (oder auch ein anderer Host) den Betrieb wieder aufnehmen kann, und zwar unter Verwendung der Daten der zweiten Speichervorrichtung. Solch eine Fähigkeit wird beispielsweise durch das Remote-Data-Facility-(RDF)-Produkt bereitgestellt, welches von der EMC Corporation aus Hopkinton, Massachusetts, geliefert wird. Bei dem RDF ist eine erste Speichervorrichtung, die als „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 in die primäre Speichervorrichtung durch den Host geschrieben werden. Der Host interagiert direkt mit der primären Speichervorrichtung, jedoch werden jegliche Datenänderungen auf der primären Speichervorrichtung automatisch auch an eine oder mehrere sekundäre Speichervorrichtungen unter Verwendung des RDF-Produktes geliefert. Die primäre und die sekundäre Speichervorrichtung können durch eine Datenverbindung verbunden sein, wie beispielsweise einer ESCON-Verbindung, einer Glasfaserkabel-Verbindung und/oder einer Gigabit-Ethernet-Verbindung. Die RDF-Funktionalität kann mit einem RDF-Adapter (RA) vereinfacht werden, der an jeder der Speichervorrichtungen vorgesehen ist.
- Das RDF-Produkt ermöglicht eine synchrone Datenübertragung wenn, nachdem von einem Host auf eine primäre Speichervorrichtung geschriebene Daten von der primären Speichervorrichtung zu einer sekundären Speichervorrichtung unter Verwendung des RDF-Produktes übertragen wurden, der Empfang durch die sekundäre Speichervorrichtung an die primäre Speichervorrichtung bestätigt wird, die dann eine Schreibbestätigungsrückmeldung zu dem Host liefert. Somit empfängt der Host in dem Synchronmodus keine Schreibbestätigung von der primären Speichervorrichtung, bis die RDF-Übertragung zu der zweiten Speichervorrichtung vollendet und durch die zweite Speichervorrichtung bestätigt worden ist.
- Ein Nachteil bei dem synchronen RDF-System besteht darin, dass die Latenz von jeder der Schreiboperationen dadurch erhöht wird, dass auf die Bestätigung der RDF-Übertragung gewartet werden muss. Dieses Problem vergrößert sich, wenn eine lange Strecke zwischen der primären Speichervorrichtung und der sekundären Speichervorrichtung vorhanden ist; auf Grund der Übertragungsverzögerungen kann die zeitliche Verzögerung, die für die RDF-Übertragung und dann das Warten auf eine Bestätigungsrückmeldung nach der Vollendung der Übertragung erforderlich ist, inakzeptabel sein.
- Es ist auch möglich, das RDF-Produkt in einem halbsynchronen Modus zu verwenden, in welchem Fall die Daten von dem Host auf die primäre Speichervorrichtung geschrieben werden, die den Schreibvorgang oder Schreibeintrag sofort bestätigt, und es beginnt dann zur gleichen Zeit der Prozess der Übertragung der Daten zu der sekundären Speichervorrichtung. Somit überwindet dieses Schema für eine einzelne Datenübertragung einige Nachteile, die bei Verwendung des RDF-Produktes in dem Synchronmodus auftreten.
- Jedoch ermöglicht der halbsynchrone Übertragungsmodus zum Zwecke der Datenintegrität nicht, dass die primäre Speichervorrichtung Daten zu der sekundären Speichervorrichtung überträgt, bis frühere Übertragung durch die zweite Speichervorrichtung bestätigt worden ist. Somit werden die Engpässe, die bei Verwendung des RDF-Produktes in dem Synchronmodus auftreten, einfach durch eine Iteration verzögert, da die Übertragung einer zweiten Datenmenge solange nicht erfolgen kann, bis die Übertragung der früheren Daten durch die zweite Speichervorrichtung bestätigt worden ist.
- Eine andere Möglichkeit besteht darin, den Host dafür auszulegen, Daten auf die primäre Speichervorrichtung in einem Asynchronmodus zu schreiben und die primäre Speichervorrichtung zu veranlassen, Daten auf die zweite Speichervorrichtung im Hintergrund zu kopieren. Der Hintergrundkopiervorgang involviert ein Durchlaufen durch jede der Spuren der primären Speichervorrichtung in sequenzieller Form, und wenn bestimmt wird, dass ein bestimmter Block seit dem letzten Mal, als der Block kopiert wurde, modifiziert worden ist, wird der Block von der primären Speichervorrichtung zu der sekundären Speichervorrichtung übertragen. Obwohl dieser Mechanismus das Latenzproblem lindern kann, welches mit den synchronen und halbsynchronen Datenübertragungsmodi auftritt, existiert eine Schwierigkeit, da keine Garantie dafür gegeben werden kann, dass eine Datenkonsistenz zwischen der primären und der sekundären Speichervorrichtung besteht. Wenn Probleme auftreten, wie beispielsweise ein Ausfall des primären Systems, kann das sekundäre System fehlerhafte Änderungen aufweisen, welche die Daten unverwendbar machen.
- Eine vorgeschlagene Lösung für dieses Problem bildet der Symmetrix-Automated-Replication-(SAR)-Prozess, der in den schwebenden
US-Patentanmeldungen 10/224,918 10/225,021 - Jedoch erfordert die Anwendung des SAR-Prozesses einen signifikanten Zusatzaufwand des kontinuierlichen Trennens und erneuten Synchronisierens der BCVs. Der SAR-Prozess verwendet auch eine Host-Steuerung und ein Host-Management, welches auf die Betriebsbereitschaft des Steuerungs-Hosts angewiesen ist. Zusätzlich liegt die Zykluszeit für eine praktische Implementierung eines SAR-Prozesses in der Größenordnung von 20 bis 30 Minuten und folglich kann die Datenmenge, die verloren geht, wenn eine RDF-Verbindung und/oder eine primäre Vorrichtung ausfällt, zwischen 20 bis 30 Minuten an Daten entsprechen.
DieEP 1 507 205 A2 beschreibt ein Fernkopiersystem, bei welchem zwei Speicherbereiche in einem ersten Speichersubsystem erzeugt werden. Eine synchrone Fernkopie wird von einem ersten Speicherbereich in dem ersten Speichersubsystem zu einem Speicherbereich in einem zweiten Speichersubsystem durchgeführt, und eine asynchrone Fernkopie wird von einem zweiten Speicherbereich, der in dem ersten Speichersubsystem enthalten ist, zu einem Speicherbereich durchgeführt, der in einem dritten Speichersubsystem enthalten ist.
US 2004/0073831 A1
GemäßEP 1 158 409 A2 wird ein für den Betrieb einer Datenbank erforderliches Synchronisationsbestätigungsverfahren einem Host-Gerät bereitgestellt, das mit einem Plattengerät verbunden ist, das eine entfernte asynchrone Datenübertragung ausführt. Unmittelbar nach dem Festschreiben von Schreibdaten gibt eine Anwendung des Host-Geräts einen Synchronisierungsbefehl aus, der eine Synchronisationsbestätigung erfordert. Eine Plattensteuervorrichtung benachrichtigt die Host-Vorrichtung über eine Nummer bezüglich der neuesten von der Host-Vorrichtung einer lokalen Seite empfangenen Daten und eine Nummer bezüglich der neuesten von einer entfernten Seite empfangenen Daten. Wenn die zwei Zahlen miteinander übereinstimmen, entscheidet das Host-Gerät, dass die Festschreibeoperation abgeschlossen wurde.
Gemäß derUS 2003/0051111 A1
DieUS 2001/0000818 A1
DieUS 6,446,175 B1 offenbart ein Speichersteuerungssystem und - verfahren zum Speichern und Abrufen von Daten zu und von einem Bandsicherungssystem, das entfernt von einem primären Hostsystem angeordnet ist. Das primäre System ist mit einem entfernten Speichersystem für Fernkopieranwendungen gekoppelt. Das Bandsicherungssystem ist mit dem Fernspeichersystem verbunden und wird am entfernten Standort betrieben. Das Leiten von Steuersignalen durch den primären Speichercontroller zu dem entfernten Speichercontroller ermöglicht die Steuerung des Bandsicherungssystems von dem lokalen oder primären Standort.
DieDE 199 00 331 A1 beschreibt eine Vorrichtung und ein Verfahren zum Senden und Empfangen von Daten auf einem „Universal Serial Bus“, wobei sich eine Anzahl von Endpunkten einen Speicher teilt. Der Speicher ist als ein Doppelpuffer ausgebildet, wodurch es möglich ist, dass das nächste Paket vorbereitet wird, während das gegenwärtige Paket übertragen wird.
DieUS 6,415,292 B1 der Anmelderin beschreibt ein Datenspeichersystem und -verfahren. Das Übertragen von Daten von einer Quelle zu einem Ziel umfasst das Empfangen der Daten von der Quelle und das Bereitstellen der Daten an das Ziel unter Verwendung eines Netzwerks, wobei die Daten für die Quelle als erfolgreich am Ziel empfangen bestätigt werden, bevor alle Daten dem Netzwerk bereitgestellt wurden. Die Quelle kann ein primäres Speichergerät sein. Das Ziel kann ein sekundäres Speichergerät sein. Die Daten können von der Quelle in einem ersten Format bereitgestellt werden und können dem Netzwerk in einem zweiten, vom ersten Format unterschiedlichen Format bereitgestellt werden. Das Ziel kann die Daten in einem ersten Format empfangen, das sich von einem zweiten Format unterscheidet, das zum Übertragen der Daten über das Netzwerk verwendet wird. In dieser Schrift geht es um rein asynchrone Datenübertragung. - Aufgabenstellung
- Es ist daher wünschenswert, ein RDF-System zur Verfügung zu haben, welches einige vorteilhafte Qualitäten von jeder der unterschiedlichen, oben erläutert Techniken beinhaltet und gleichzeitig deren Nachteile reduziert. Solch ein System würde eine niedrige Latenz für jeden Host-Schreibvorgang bieten, und zwar ungeachtet der Entfernung zwischen der primären Vorrichtung und der sekundären Vorrichtung, und würde auch eine Konsistenz (Wiederherstellbarkeit) der sekundären Vorrichtung im Falle eines Ausfalles bieten.
- Es wäre auch wünschenswert, dazu befähigt zu sein, die Vorteile zu kombinieren, die aus den synchronen RDF-Übertragungen und den asynchronen RDF-Übertragungen resultieren, so dass auf dem neuesten Stand liegende Sicherungsdaten auf einer J0-Fernvorrichtung bereitgestellt werden können, die relativ nahe (geografisch) bei einer Quellvorrichtung gelegen ist, während zur gleichen Zeit Sicherungsdaten auch an eine Sicherungsvorrichtung geliefert werden können, die relativ weit von der Quellvorrichtung entfernt liegt. Es wäre auch wünschenswert, wenn solch ein System für eine angemessene Datenwiederherstellung unter den Sicherungsvorrichtungen sorgen würde.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Die Aufgabenstellung wird durch Verfahren zum Speichern von Wiederherstelldaten in einem System gemäß der Gesamtheit der Merkmale der Ansprüche 1 bzw. 8 gelöst. Gemäß dem hier beschriebenen Verfahren umfasst Speichern von Wiederherstelldaten das Liefern von Datenpaketen oder Datensegmenten [chunks of data] zu einem entfernt gelegenen Ziel, wobei jedes Datenpaket Daten wiedergibt, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben werden und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht, Liefern von Synchrondaten entsprechend den Datenpaketen zu einem lokalen Minimal-Speicher-Ziel, wobei das lokale Minimal-Speicher-Ziel Daten enthält, die nicht auf dem fern gelegenen Ziel gespeichert sind, und wobei das fern gelegene Ziel Daten enthält, die nicht auf dem lokalen Minimal-Speicher-Ziel gespeichert sind, und Liefern eines Indikators, wenn ein neues Datenpaket geliefert wird. Die Daten, die auf dem entfernt gelegenen Ziel enthalten sind, jedoch nicht auf dem lokalen Minimal-Speicher-Ziel, können älter sein als die Daten, die auf dem lokalen Minimal-Speicher-Ziel enthalten sind, nicht jedoch auf dem entfernt gelegenen Ziel. Die Synchrondaten, die durch das lokale Minimal-Speicher-Ziel empfangen werden, können in einer verketteten Liste von Elementen gespeichert werden. Die Elemente können entsprechend einem Quellspeichervorrichtungsort der Daten sortiert sein. Die Elemente können auch entsprechend einer Reihenfolge des Empfangs der Daten an dem lokalen Minimal-Speicher-Ziel sortiert sein. Jedes der Elemente kann eine Kennung für ein bestimmtes der Datenpakete enthalten, entsprechend den Synchrondaten von jedem der Elemente. Das Speichern der Wiederherstelldaten kann auch das Liefern einer lokalen Zykluszahl an das lokale Minimal-Speicher-Ziel enthalten und kann im Ansprechen auf den Empfang des Indikators, das ein neues Datenpaket geliefert wird, eine Inkrementierung des lokalen Indikators herbeiführen. Die Synchrondaten, die von dem lokalen Minimal-Speicher-Ziel empfangen werden, können in einer verketteten Liste an Elementen gespeichert werden. Jedes der Elemente kann eine Kennung für ein bestimmtes der Datenpakete enthalten, entsprechend den Synchrondaten von jedem der Elemente, und die Kennung kann der lokalen Zykluszahl entsprechen.
- Ferner enthält vorteilhafterweise eine auf einem computerlesbaren Medium bereitgestellte Computersoftware, welche Wiederherstelldaten speichert, ausführbaren Code, der Datenpakete [chunks of data] zu einem entfernt gelegenen Ziel liefert, wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Paketen entspricht, ausführbaren Code, der Synchrondaten entsprechend den Datenpaketen zu einem lokalen Minimal-Speicher-Ziel liefert, wobei das lokale Minimal-Speicher-Ziel Daten enthält, die nicht an dem entfernt gelegenen Ziel gespeichert sind und wobei das entfernt gelegene Ziel Daten enthält, die nicht an dem lokalen Minimal-Speicher-Ziel gespeichert sind, und ausführbaren Code, der einen Indikator liefert, wenn ein neues Datenpaket geliefert wird. Die Daten, die auf dem entfernt gelegenen Ziel enthalten sind, nicht jedoch auf dem lokalen Minimal-Speicher-Ziel, können älter sein als die Daten, die auf dem lokalen Minimal-Speicher-Ziel enthalten sind, jedoch nicht an dem entfernt gelegenen Ziel enthalten sind. Die Synchrondaten, die durch das lokale Minimal-Speicher-Ziel empfangen werden, können in einer verketteten Liste von Elementen gespeichert werden. Die Elemente können entsprechend einem Quellspeichervorrichtungsort der Daten sortiert sein. Die Elemente können entsprechend einer Reihenfolge des Empfangs der Daten an dem lokalen Minimal-Speicher-Ziel sortiert sein. Jedes der Elemente kann eine Kennung für ein bestimmtes der Datenpakete enthalten, entsprechend den Synchrondaten für jedes der Elemente. Die Computersoftware kann auch einen ausführbaren Code enthalten, der eine lokale Zykluszahl an das lokale Minimal-Speicher-Ziel liefert, und einen ausführbaren Code, der den lokalen Indikator im Ansprechen auf den Empfang des Indikators inkrementiert, dass ein neues Datenpaket geliefert wird. Die Synchrondaten, die durch das lokale Minimal-Speicher-Ziel empfangen werden, können in einer verketteten Liste an Elementen gespeichert werden. Jedes der Elemente kann eine Kennung für ein bestimmtes eines der Datenpakete enthalten, entsprechend den Synchrondaten von jedem der Elemente, wobei die Kennung der lokalen Zykluszahl entspricht.
- Ferner enthält vorteilhafterweise ein System zum Speichern von Wiederherstelldaten eine Quellgruppe, ein entfernt gelegenes Ziel, das an die Quellgruppe gekoppelt ist, um von dieser Datenpakete zu empfangen, wobei jedes Datenpaket Daten wiedergibt, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht, und ein lokales Minimal-Speicher-Ziel an die Quellgruppe gekoppelt ist, um von dieser Synchrondaten zu empfangen, wobei das lokale Minimal-Speicher-Ziel Daten enthält, die nicht in dem entfernt gelegenen Ziel gespeichert sind und wobei das entfernt gelegene Ziel Daten enthält, die nicht in dem lokalen Minimal-Speicher-Ziel gespeichert sind und wobei die Quellgruppe einen Indikator liefert, wenn ein neues Datenpaket geliefert wird. Die Daten, die an dem entfernt gelegenen Ziel enthalten sind, nicht jedoch an dem lokalen Minimal-Speicher-Ziel, können älter sein als die Daten, die in dem lokalen Minimal-Speicher-Ziel enthalten sind, nicht jedoch an dem entfernt gelegenen Ziel enthalten sind.
- Ferner umfasst vorteilhafterweise das Speichern von Wiederherstelldaten das Liefern von Datenpaketen zu einem entfernt gelegenen Ziel, wobei jedes Datenpaket Daten wiedergibt, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht, ferner das Liefern von Synchrondaten zu einem lokalen Ziel und das Liefern eines Indikators zu dem lokalen Ziel in Verbindung mit der Erzeugung eines neuen Datenpaketes zum Speichern an dem entfernt gelegenen Ziel umfasst. Das lokale Ziel kann eine Vielzahl an Maps unterhalten, wobei jede der Maps Synchrondaten, die hierhin geliefert werden, einem spezifischen Datenpaket zuordnet. Im Ansprechen auf den Empfang eines Indikators in Verbindung mit der Erzeugung eines neuen Datenpaketes kann das lokale Ziel auf eine neue Map zeigen. Es können zwei Maps oder mehr als zwei Maps vorgesehen sein. Im Ansprechen auf das Ausfallen der Bestätigung dorthin gelieferter Synchrondatendurch das lokale Ziel, kann das entfernt gelegene Ziel eine Map der darauf geschriebenen Daten unterhalten. Das Speichern von Wiederherstelldaten kann im Ansprechen auf das Ausfallen der Bestätigung dorthin gelieferter Synchrondaten durch das lokale Ziel, einen Schritt umfassen, bei dem das entfernt gelegene Ziel einen Zählwert einer Anzahl der Zeitpunkte, an denen ein neues Datenpaket erzeugt wird, unterhält.
- Ferner enthält vorteilhafterweise die Wiederherstellung von Daten, die an einem lokalen Ziel und einem entfernt gelegenen Ziel gespeichert sind, das Bestimmen, welches der Ziele, das lokale Ziel oder das entfernt gelegenen Ziel, die neuesten Daten enthält, das Kopieren der Daten von dem entfernt gelegenen Ziel zu dem lokalen Ziel, wenn das entfernt gelegene Ziel die neuesten Daten enthält, und das Kopieren der Daten von dem lokalen Ziel zu dem entfernt gelegenen Ziel, wenn das lokale Ziel die neuesten Daten enthält. Das Bestimmen, welches der Ziele, das lokale Ziel oder das entfernt gelegene Ziel, die neuesten Daten enthält, kann das Überprüfen eines Tokens umfassen, der durch das entfernt gelegenen Ziel geliefert wird und der eine Menge an neuen Daten anzeigt, die auf dem entfernt gelegenen Ziel gespeichert sind und die nicht auf dem lokalen Ziel gespeichert sind. Der Token kann eine Anzahl von neuen Datenpaketen anzeigen, die zu der entfernt gelegenen Speichervorrichtung geliefert wurden, und zwar nachfolgend dem Ausfall der Bestätigung dorthin gelieferter Daten durch die lokale Speichervorrichtung, wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht. Das Kopieren der Daten von dem entfernt gelegenen Ziel zu dem lokalen Ziel kann das Kopieren der Daten enthalten, die durch eine Map angezeigt werden, entsprechend den Daten, die auf das entfernt gelegenen Ziel geschrieben wurden und die nicht als auf das lokale Ziel geschrieben bestätigt wurden. Das Kopieren der Daten von dem lokalen Ziel zu dem entfernt gelegenen Ziel kann das Kopieren von Daten enthalten, die durch eine Vielzahl an Maps angezeigt werden, entsprechend den Daten, die zu dem lokalen Ziel geschrieben wurden und die nicht als zu dem entfernt gelegenen Ziel geschrieben bestätigt wurden. Es können zwei oder mehr als zwei Maps vorhanden sein.
- Ferner enthält die Software, welche Wiederherstelldaten speichert, vorteilhafterweise einen ausführbaren Code, der Datenpakete zu einem entfernt gelegenen Ziel liefert, wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht, einen ausführbaren Code, der Synchrondaten zu einem lokalen Ziel liefert, und einen ausführbaren Code, der einen Indikator zu dem lokalen Ziel liefert, und zwar in Verbindung mit der Erzeugung eines neuen Datenpaketes zum Speichern an dem entfernt gelegenen Ziel. Das lokale Ziel kann einen ausführbaren Code enthalten, der eine Vielzahl von Maps unterhält, wobei jede der Maps dorthin gelieferte Synchrondaten einem spezifischen Datenpaket zuordnet. Im Ansprechen auf den Empfang eines Indikators in Verbindung mit der Erzeugung eines neuen Datenpaketes kann das lokale Ziel auf eine neue Map zeigen. Es können zwei Maps oder mehr als zwei Maps vorhanden sein. Die Software kann auch einen ausführbaren Code an dem entfernt gelegenen Ziel aufweisen, der im Ansprechen auf den Ausfall der Bestätigung dorthin gelieferter Synchrondaten durch das lokale Ziel, eine Map der dorthin gelieferten Daten unterhält. Die Software kann auch einen ausführbaren Code an dem entfernt gelegenen Ziel aufweisen, der im Ansprechen auf den Ausfall der Bestätigung dorthin gelieferter Synchrondaten durch das lokale Ziel, einen Zählwert einer Anzahl von Zeitpunkten unterhält, an denen neue Datenpakete erzeugt werden.
- Ferner kann die Software gemäß der vorliegenden Erfindung, welche die Daten wiederherstellt, die an einem lokalen Ziel gespeichert sind und die an einem entfernt gelegenen Ziel gespeichert sind, einen ausführbaren Code enthalten, der bestimmt, welches der Ziele, das lokale Ziel oder das entfernt gelegene Ziel, die neuesten Daten enthält, einen ausführbaren Code enthalten, der Daten von dem entfernt gelegenen Ziel zu dem lokalen Ziel kopiert, wenn das entfernt gelegene Ziel die neuesten Daten enthält, und einen ausführbaren Code, der Daten von dem lokalen Ziel zu dem entfernt gelegenen Ziel kopiert, wenn das lokale Ziel die neuesten Daten enthält. Der ausführbare Code, der bestimmt, welches der Ziele, das lokale Ziel oder das entfernt gelegene Ziel, die neuesten Daten enthält, kann einen ausführbaren Code enthalten, der einen Token prüft, welcher durch das entfernt gelegenen Ziel geliefert wird, der eine Menge an neuen Daten anzeigt, welcher in dem entfernt gelegenen Ziel gespeichert ist und der nicht an dem lokalen Ziel gespeichert ist. Der Token kann eine Anzahl von neuen Datenpaketen angeben, die an die entfernt gelegene Speichervorrichtung geliefert werden, und zwar nach einem Ausfall der Bestätigung der dorthin gelieferten Daten durch die lokale Speichervorrichtung, wobei jedes Datenpaket Daten enthält, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht. Der ausführbare Code, der Daten von dem entfernt gelegenen Ziel zu dem lokalen Ziel kopiert, kann einen ausführbaren Code enthalten, der Daten kopiert, die durch eine Map als Daten angezeigt werden, die auf das entfernt gelegene Ziel geschrieben wurden und die nicht als auf das lokale Ziel geschrieben bestätigt wurden. Der ausführbare Code, der Daten von dem lokalen Ziel zu dem entfernt gelegenen Ziel kopiert, kann einen ausführbaren Code umfassen, der Daten kopiert, die durch eine Vielzahl von Maps als Daten angezeigt werden, die auf das lokale Ziel geschrieben wurden und die nicht als auf das entfernt gelegene Ziel geschrieben bestätigt wurden. Es können zwei Maps oder mehr als zwei Maps vorhanden sein.
- Ferner enthält ein System, welches zum Speichern von Wiederherstelldaten dient, vorteilhafterweise eine Quellgruppe, ein entfernt gelegenes Ziel, das an die Quellgruppe gekoppelt ist, um von dieser Datenpakete zu empfangen, wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht, und wobei ein lokales Ziel an die Quellgruppe gekoppelt ist, um von dieser Synchrondaten zu empfangen, wobei die Quellgruppe einen Indikator zu dem lokalen Ziel in Verbindung mit der Erzeugung eines neuen Datenpaketes zur Speicherung auf dem entfernt gelegenen Ziel liefert.
- Ein System zum Wiederherstellen von Daten enthält vorteilhafterweise eine Quellgruppe, die Daten generiert, ein lokales Ziel, das an die Quellgruppe gekoppelt ist, um von dieser Synchrondaten zu empfangen, ein entfernt gelegenes Ziel, das an die Quellgruppe gekoppelt ist, um von dieser Asynchrondaten zu empfangen, Mittel zum Bestimmen, welches der Ziele, das lokale Ziel oder das entfernt gelegene Ziel, die neuesten Daten enthält, Mittel zum Kopieren der Daten von dem entfernt gelegenen Ziel zu dem lokalen Ziel, wenn das entfernt gelegene Ziel die neuesten Daten enthält, und Mittel zum Kopieren der Daten von dem lokalen Ziel zu dem entfernt gelegenen Ziel, wenn das lokale Ziel die neuesten Daten enthält.
- Ferner umfasst das Speichern der Wiederherstelldaten vorteilhafterweise, dass ein Hostprozessor Daten zu einer lokalen Speichervorrichtung schreibt, dass der Hostprozessor die lokale Speichervorrichtung veranlasst, Pakete von Daten entsprechend den Schreibvorgängen des Hostprozessors zu sammeln, wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden und wobei der zweite Zeitpunkt für eines der bestimmten Datenpakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Datenpakete entspricht, ferner dass Datenpakete von der lokalen Speichervorrichtung zu einem entfernt gelegenen Ziel übertragen werden, dass Synchrondaten von der lokalen Speichervorrichtung zu einem lokalen Ziel geliefert werden; und dass der Hostprozessor das Liefern eines Indikators an das lokale Ziel in Verbindung mit der Erzeugung eines neuen Datenpaketes zur Speicherung an dem entfernt gelegenen Ziel veranlasst. Das lokale Ziel kann eine Vielzahl an Maps unterhalten, wobei jede der Maps dorthin gelieferte Synchrondaten einem spezifischen Datenpaket zuordnet. Im Ansprechen auf den Empfang eines Indikators in Verbindung mit der Erzeugung eines neuen Datenpakets kann das lokale Ziel auf eine neue Map zeigen. Es können zwei Maps oder mehr als zwei Maps vorgesehen sein. Im Ansprechen auf ein Ausfallen der Bestätigung dorthin gelieferter Synchrondatendurch das lokale Ziel kann das entfernt gelegene Ziel eine Map an Daten unterhalten, die in dieses geschrieben wurden. Das Speichern von Wiederherstelldaten kann im Ansprechen auf ein Ausfallen der Bestätigung dorthin gelieferter Synchrondaten durch das lokale Ziel den Schritt umfassen, dass das entfernt gelegene Ziel einen Zählwert einer Anzahl der Zeitpunkte unterhält, an denen ein neues Datenpaket erzeugt wird. Der Hostprozessor kann Daten auf mehr als nur eine lokale Speichervorrichtung schreiben, welche Daten synchron zu mehr als einem lokalen Ziel übertragen.
- Das Wiederherstellen von Daten, die an einem lokalen Ziel und an einem entfernt gelegenen Ziel gespeichert sind, kann vorteilhafterweise umfassen, dass ein Host veranlasst wird, lokal auf eines der folgenden Ziele zuzugreifen: das lokale Ziel und das entfernt gelegene Ziel, dass der Host bestimmt, welches der Ziele, das lokale Ziel oder das entfernt gelegene Ziel, die neuesten Daten enthält, dass der Host das Kopieren von Daten von dem entfernt gelegenen Ziel zu dem lokalen Ziel veranlasst, wenn das entfernt gelegene Ziel die neuesten Daten enthält, und dass der Host das Kopieren von Daten von dem lokalen Ziel zu dem entfernt gelegenen Ziel veranlasst, wenn das lokale Ziel die neuesten Daten enthält. Das Bestimmen durch den Host, welches der Ziele, das lokalen Ziel oder das entfernt gelegene Ziel, die neuesten Daten enthält, kann umfassen, dass der Host einen Token prüft, der durch das entfernt gelegene Ziel geliefert wird, der eine Menge an neuen Daten anzeigt, welche an dem entfernt gelegenen Ziel gespeichert werden, die nicht an dem lokalen Ziel gespeichert sind. Der Token kann eine Anzahl von neuen Datenpaketen anzeigen, die zu der entfernt gelegenen Speichervorrichtung geliefert werden, und zwar nach einem Ausfall der Bestätigung der dorthin gelieferten Daten durch die lokale Speichervorrichtung, wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes der bestimmten Pakete entspricht. Das Kopieren von Daten durch den Host von dem entfernt gelegenen Ziel zu dem lokalen Ziel kann auch umfassen, dass der Host Daten kopiert, die durch eine Map angezeigt werden, entsprechend den Daten, die zu dem entfernt gelegenen Ziel geschrieben wurden, welche nicht als zu dem lokalen Ziel geschrieben bestätigt wurden. Das Kopieren von Daten durch den Host von dem lokalen Ziel zu dem entfernt gelegenen Ziel kann umfassen, dass der Host Daten kopiert, die durch eine Vielzahl von Maps angezeigt werden, entsprechend Daten, die zu dem lokalen Ziel geschrieben wurden und nicht als zu dem entfernt gelegenen Ziel geschrieben bestätigt wurden. Die Zahl der Maps kann zwei oder mehr sein.
- Figurenliste
-
-
1 ist ein schematisches Diagramm, welches einen Host, eine lokale Speichervorrichtung und eine entfernt gelegene Datenspeichervorrichtung zeigt, die in Verbindung mit dem hier beschriebenen System verwendet werden. -
2 zeigt ein schematisches Diagramm, welches einen Fluss von Daten zwischen einem Host, einer lokalen Speichervorrichtung und einer entfernt gelegenen Datenspeichervorrichtung veranschaulicht, die in Verbindung mit dem hier beschriebenen System verwendet werden. -
3 zeigt ein schematisches Diagramm, welches die Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer lokalen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht. -
4 zeigt ein Diagramm, welches eine Datenstruktur für einen Bereich oder eine Zeile [slot] veranschaulicht, die in Verbindung mit dem hier beschriebenen System verwendet wird. -
5 zeigt ein Flussdiagramm, welches den Betrieb eines Hostadapters (HA) im Ansprechen auf einen Schreibvorgang oder Schreibeintrag durch einen Host entsprechend dem hier beschriebenen System wiedergibt. -
6 zeigt ein Flussdiagramm, welches das Übertragen von Daten von einer lokalen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System darstellt. -
7 zeigt ein schematisches Diagramm, welches die Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer entfernt gelegenen Speichervorrichtung entsprechend dem hier beschriebenen System veranschaulicht. -
8 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die durch eine Fern-Speichervorrichtung durchgeführt werden, und zwar in Verbindung mit dem Empfang eines Festschreibungsindikators von einer lokalen Speichervorrichtung entsprechend dem hier beschriebenen System. -
9 zeigt ein Flussdiagramm, welches den Speichervorgang von übertragenen Daten an einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht. -
10 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit dem Inkrementieren einer Sequenzzahl durch eine lokale Speichervorrichtung gemäß dem hier beschriebenen System durchgeführt werden. -
11 zeigt ein schematisches Diagramm, welches die Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer lokalen Speichervorrichtung veranschaulicht, entsprechend einer alternativen Ausführungsform des hier beschriebenen Systems. -
12 zeigt ein Flussdiagramm, welches den Betrieb eines Hostadapters (HA) im Ansprechen auf einen Schreibvorgang durch einen Host entsprechend einer alternativen Ausführungsform des hier beschriebenen Systems wiedergibt. -
13 zeigt ein Flussdiagramm, welches das Übertragen von Daten von einer lokalen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß einer alternativen Ausführungsform des hier beschriebenen Systems darstellt. -
14 zeigt ein schematisches Diagramm, welches eine Vielzahl an lokalen und entfernt gelegenen Speichervorrichtungen mit einem Host entsprechend dem hier beschriebenen System zeigt. -
15 zeigt ein Diagramm, welches eine Multiboxmodustabelle darstellt, die in Verbindung mit dem hier beschriebenen System verwendet wird. -
16 zeigt ein Flussdiagramm, welches das Ändern einer Multiboxmodustabelle entsprechend dem hier beschriebenen System veranschaulicht. -
17 zeigt ein Flussdiagramm, welches einen Zyklusschaltvorgang durch den Host entsprechend dem hier beschriebenen System veranschaulicht. -
18 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit dem Inkrementieren einer sequenziellen Zahl durch eine lokale Speichervorrichtung gemäß einem hier beschriebenen System ausgeführt werden. -
19 zeigt ein Flussdiagramm, welches das Übertragen von Daten von einer lokalen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System wiedergibt. -
20 zeigt ein Flussdiagramm, welches das Übertragen von Daten von einer lokalen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß einer alternativen Ausführungsform des hier beschriebenen Systems zeigt. -
21 zeigt ein Flussdiagramm, welches das Liefern einer Aktiv-Leer-Indikatornachricht von einer entfernt gelegenen Speichervorrichtung zu einer entsprechenden lokalen Speichervorrichtung entsprechend dem hier beschriebenen System veranschaulicht. -
22 zeigt ein schematisches Diagramm, welches eine Vielzahl an lokalen und entfernt gelegenen Speichervorrichtungen mit einer Vielzahl an Hosts gemäß dem hier beschriebenen System veranschaulicht. -
23 zeigt ein Flussdiagramm, welches eine Verarbeitung darstellt, die durch eine entfernt gelegene Speichervorrichtung in Verbindung mit einer Datenwiederherstellung entsprechend dem hier beschriebenen System ausgeführt wird. -
24 zeigt ein Flussdiagramm, welches eine Verarbeitung veranschaulicht, die durch einen Host in Verbindung mit einer Datenwiederherstellung entsprechend dem hier beschriebenen System durchgeführt wird. -
25 zeigt ein schematisches Diagramm, welches eine Speichervorrichtung, einen Speicher, eine Vielzahl an Directors [directors] und einen Kommunikationsmodul entsprechend dem hier beschriebenen System darstellt. -
26 zeigt ein schematisches Diagramm, welches eine Quellgruppe, ein lokales Ziel und ein entfernt gelegenes Ziel entsprechend dem hier beschriebenen System wiedergibt. -
27 zeigt ein Flussdiagramm, welches einen Prozess veranschaulicht, der durch ein lokales Ziel ausgeführt wird, um Datenwiederherstellparameter entsprechend dem hier beschriebenen System zu initialisieren. -
28A zeigt ein Flussdiagramm, welches einen Prozess wiedergibt, der durch ein lokales Ziel in Verbindung mit dem Empfangen von Daten während eines ausfallsfreien Modus entsprechend dem hier beschriebenen System durchgeführt wird. -
28B zeigt ein Flussdiagramm, welches einen alternativen Prozess wiedergibt, der durch ein lokales Ziel ausgeführt werden kann, und zwar in Verbindung mit dem Empfangen von Daten während eines ausfallsfreien Modus entsprechend dem hier beschriebenen System. -
28C zeigt ein Flussdiagramm, welches einen alternativen Prozess veranschaulicht, der durch ein lokales Ziel ausgeführt werden kann, und zwar in Verbindung mit dem Empfang von Daten während eines ausfallsfreien Modus des hier beschriebenen Systems. -
29 zeigt ein Flussdiagramm, welches einen Prozess veranschaulicht, der durch ein lokales Ziel ausgeführt wird, um Datenwiederherstellparameter zu initialisieren, entsprechend dem hier beschriebenen System. -
30 zeigt ein Flussdiagramm, welches einen Prozess veranschaulicht, der durch ein entfernt gelegenes Ziel in Verbindung mit dem Sammeln von Ausfallwiederherstelldaten entsprechend dem hier beschriebenen System durchgeführt wird. -
31 zeigt ein Flussdiagramm, welches einen Prozess veranschaulicht, der in Verbindung mit einer Ausfallwiederherstellung ausgeführt wird, entsprechend dem hier beschriebenen System. -
32 zeigt ein Flussdiagramm, welches einen Prozess darstellt, der in Verbindung mit der Beendigung von geordneten Schreibvorgängen entsprechend dem hier beschriebenen System durchgeführt wird. -
33 zeigt ein Flussdiagramm, welches eine Verarbeitung wiedergibt, die in Verbindung mit dem Senden von Daten von einem lokalen Ziel zu einem entfernt gelegenen Ziel entsprechend dem hier beschriebenen System durchgeführt wird. -
34 zeigt ein Flussdiagramm, welches einen Prozess veranschaulicht, der durch ein lokales Ziel in Verbindung mit der Rückstellung von Fehlerwiederherstellparametern entsprechend dem hier beschriebenen System durchgeführt wird. -
35 zeigt ein Flussdiagramm, welches einen Prozess darstellt, der durch ein entfernt gelegenes Ziel in Verbindung mit der Rückstellung von Fehlerwiederherstellparametern entsprechend dem hier beschriebenen System durchgeführt wird. -
36 zeigt ein Diagramm, welches eine Konfiguration einer Quellgruppe gemäß dem hier beschriebenen System darstellt. -
37 zeigt ein Diagramm, welches eine andere Konfiguration einer Quellgruppe gemäß dem hier beschriebenen System zeigt. -
38 zeigt ein Flussdiagramm, welches eine alternative Ausführungsform zum Übertragen von Daten von einer lokalen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung entsprechend dem hier beschriebenen System wiedergibt. -
39 zeigt ein schematisches Diagramm, welches die Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer entfernt gelegenen Speichervorrichtung entsprechend dem hier beschriebenen System veranschaulicht. -
40 zeigt ein Diagramm, welches eine Tabelle zum Mapping von Positionen logischer Vorrichtungen auf Zeilen oder Bereiche mit durch eine entfernt gelegene Speichervorrichtung empfangene Daten darstellt, entsprechend dem hier beschriebenen System. -
41 zeigt ein Diagramm, welches eine andere Ausführungsform einer Tabelle zum Mapping von Positionen logischer Vorrichtungen auf Zeilen oder Bereiche mit durch eine entfernt gelegene Speichervorrichtung empfangene Daten darstellt, entsprechend dem hier beschriebenen System. -
42 zeigt ein schematisches Diagramm, welches eine Quellgruppe, ein lokales Minimal-Speicher-Ziel und ein entfernt gelegenes Ziel gemäß einer Ausführungsform des hier beschriebenen Systems zeigt. -
43 zeigt ein schematisches Diagramm, welches die Datenspeicherung an einem lokalen Minimal-Speicher-Ziel gemäß einer Ausführungsform des hier beschriebenen Systems veranschaulicht. -
44 zeigt ein Diagramm, welches ein Datenelement veranschaulicht, welches für eine Datenspeicherung an einem lokalen Minimal-Speicher-Ziel verwendet wird, entsprechend einer Ausführungsform des hier beschriebenen Systems. -
45 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit dem Empfangen von Daten an dem lokalen Minimal-Speicher-Ziel ausgeführt werden, entsprechend einer Ausführungsform des hier beschriebenen Systems. -
46 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit dem Hinzufügen von Daten durch ein lokales Minimal-Speicher-Ziel ausgeführt werden, entsprechend einer Ausführungsform des hier beschriebenen Systems. -
47 zeigt ein Flussdiagramm, welches die Schritte wiedergibt, die in Verbindung mit dem Hinzufügen von Daten durch ein lokalen Minimal-Ziel durchgeführt werden, entsprechend einer anderen Ausführungsform des hier beschriebenen Systems. -
48 zeigt ein Flussdiagramm, welches die Schritte darstellt, die in Verbindung mit dem Entfernen von Daten durch ein lokales Minimal-Speicher-Ziel ausgeführt werden, entsprechend einer Ausführungsform des hier beschriebenen Systems. -
49 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit einer Datenwiederherstellung entsprechend einer Ausführungsform des hier beschriebenen Systems durchgeführt werden. -
50 zeigt ein schematisches Diagramm, welches eine Vielzahl der Quellgruppen und entfernt gelegenen Ziele zeigt, die an ein lokales Minimal-Speicher-Ziel entsprechend einer anderen Ausführungsform des hier beschriebenen Systems gekoppelt sind. - DETAILLIERTE BESCHREIBUNG DER VERSCHIEDENEN AUSFÜHRUNGSFORMEN
- Gemäß
1 zeigt ein Diagramm20 eine Beziehung zwischen einem Host22 , einer lokalen Speichervorrichtung24 und einer entfernt gelegenen Speichervorrichtung26 . Der Host22 liest und schreibt Daten von und zu der lokalen Speichervorrichtung24 , und zwar über einen Hostadapter (HA)28 , der die Kopplung zwischen dem Host22 und der lokalen Speichervorrichtung24 vereinfacht. Obwohl das Diagramm20 lediglich einen Host22 und einen HA28 zeigt, erkennt der Fachmann, dass eine Vielzahl an HAs verwendet werden kann und dass mit einen oder mehrere HAs ein oder mehrere Hosts gekoppelt sein können. - Daten von der lokalen Speichervorrichtung
24 werden zu der entfernt gelegenen Speichervorrichtung26 über eine RDF-Verbindung29 kopiert, um zu erreichen, dass die Daten an der entfernt gelegenen Speichervorrichtung26 identisch mit den Daten an der lokalen Speichervorrichtung24 sind. Obwohl lediglich die eine Verbindung29 gezeigt ist, ist es auch möglich, zusätzliche Verbindungen zwischen den Speichervorrichtungen24 ,26 vorzusehen und auch Verbindungen zwischen einer oder beiden Speichervorrichtungen24 ,26 und anderen Speichervorrichtungen (nicht gezeigt) vorzusehen. Zusätzlich kann die Verbindung29 so ausgeführt sein, dass sie eine direkte Verbindung (Verdrahtung, Funkverbindung oder Kombinationen daraus), ein Netzwerk (beispielsweise das Internet) oder irgendeine andere geeignete Einrichtung zum Übermitteln von Daten verwendet. Es sei darauf hingewiesen, dass auch eine zeitliche Verzögerung zwischen der Übertragung der Daten von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 auftreten kann, so dass die entfernt gelegene Speichervorrichtung26 zu bestimmten Zeitpunkten Daten enthalten kann, die nicht identisch mit den Daten an der lokalen Speichervorrichtung24 sind. Eine Kommunikation unter Verwendung von RDF ist beispielsweise in demUS-Patent Nr. 5,742,792 beschrieben, welches hier unter Bezugnahme voll mit einbezogen wird. - Die lokale Speichervorrichtung
24 enthält eine erste Anzahl von RDF-Adaptereinheiten (RAs)30a ,30b ,30c und die entfernt gelegene Speichervorrichtung26 enthält eine zweite Anzahl von RAs32a -32c . Die RAs30a -30c ,32a -32c sind an die RDF-Verbindung29 gekoppelt und sind ähnlich dem Hostadapter28 , werden jedoch zur Übertragung von Daten zwischen den Speichervorrichtungen24 ,26 verwendet. Die in Verbindung mit den RAs30a -30c ,32a -32c verwendete Software wird im Folgenden detaillierter erläutert. - Die Speichervorrichtungen
24 ,26 können ein oder mehrere Plattenlaufwerke umfassen, von denen jedes einen unterschiedlichen Abschnitt an Daten enthält, die auf jeder der Speichervorrichtungen24 ,26 gespeichert sind.1 zeigt die Speichervorrichtung24 mit einer Vielzahl von Plattenlaufwerken33a ,33b ,33c und die Speichervorrichtung26 enthält eine Vielzahl an Plattenlaufwerken34a ,34b ,34c . Die RDF-Funktionalität, die hier beschrieben wird, kann so zum Einsatz gebracht werden, dass die Daten für wenigstens einen Abschnitt der Platten33a -33c der lokalen Speichervorrichtung24 unter Verwendung von RDF zu wenigstens einem Abschnitt der Platten34a -34c der entfernt gelegenen Speichervorrichtung26 kopiert werden. Es ist möglich, dass andere Daten der Speichervorrichtungen24 ,26 nicht zwischen den Speichervorrichtungen24 ,26 kopiert werden und diese somit nicht identisch sind. - Jede der Platten
33a -33c ist mit einer entsprechenden Plattenadaptereinheit (DA)35a ,35b ,35c gekoppelt, die Daten zu einer entsprechenden der Platten33a -33c liefert und die Daten von einer entsprechenden der Platten33a -33c empfängt. In ähnlicher Weise werden eine Vielzahl der DAs36a ,36b ,36c der entfernt gelegenen Speichervorrichtung26 dazu verwendet, um Daten zu entsprechenden Platten der Platten34a -34c zu liefern und um Daten von entsprechenden Platten der Platten34a -34c zu empfangen. Ein interner Datenpfad existiert zwischen den DAs35a -35c , der HA28 und den RAs30a -30c der lokalen Speichervorrichtung24 . In ähnlicher Weise existiert ein interner Datenpfad zwischen den DAs36a -36c und den RAs32a -32c der entfernt gelegenen Speichervorrichtung26 . Es sei hervorgehoben, dass es bei anderen Ausführungsformen möglich ist, dass mehr als nur ein Plattenlaufwerk durch eine DA bedient wird und dass es auch möglich ist, dass mehr als nur eine DA ein Plattenlaufwerk bedient. - Die lokale Speichervorrichtung
24 enthält auch einen Globalspeicher37 , der dazu verwendet werden kann, um die Datenübertragung zwischen den DAs35a -35c , der HA28 und den RAs30a -30c zu vereinfachen. Der Speicher37 kann Tasks enthalten, die durch eine oder durch mehrere der DAs35a -35c , der HA28 und den RAs30a -30c auszuführen sind, und kann auch einen Cachespeicher für Daten enthalten, die von einer oder von mehreren der Plattenlaufwerke33a -33c aufgenommen wurden. In ähnlicher Weise enthält die entfernt gelegene Speichervorrichtung26 einen Globalspeicher38 , der Tasks enthalten kann, die durch eine oder durch mehrere der DAs36a -36c und den RAs32a -32c auszuführen sind, und einen Cachespeicher für Daten, die von einem oder von mehreren der Plattenlaufwerke34a -34c aufgenommen wurden. Die Verwendung der Speicher37 ,38 wird im Folgenden detaillierter beschrieben. - Der Speicherplatz in der lokalen Speichervorrichtung
24 , welcher den Platten33a -33c entspricht, kann in eine Vielzahl von Volumina oder logischen Vorrichtungen unterteilt werden. Die logischen Vorrichtungen können dem physikalischen Speicherplatz der Platten33a -33c entsprechen oder auch nicht. Beispielsweise kann die Platte33a eine Vielzahl an logischen Vorrichtungen enthalten oder alternativ kann eine einzelne logische Vorrichtung beide Platten33a ,33b umfassen. In ähnlicher Weise kann der Speicherplatz für die entfernt gelegene Speichervorrichtung26 , welche die Platten34a -34c aufweist, in eine Vielzahl an Volumina oder logischen Vorrichtungen unterteilt werden, wobei jede der logischen Vorrichtungen einer oder mehreren der Platten34a -34c entsprechen kann oder nicht. - Das RDF-Speichermapping zwischen Abschnitten der lokalen Speichervorrichtung
24 und der entfernt gelegenen Speichervorrichtung26 involviert das Erstellen einer logischen Vorrichtung an der entfernt gelegenen Speichervorrichtung26 , das ist eine Fernspiegelung für eine logische Vorrichtung an der lokalen Speichervorrichtung24 . Der Host22 liest und schreibt Daten von und zu der logischen Vorrichtung an der lokalen Speichervorrichtung24 und dasRDF -Speichermapping bewirkt, dass modifizierte Daten von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung der RAs30a -30c ,32a -32c und der RDF-Verbindung29 übertragen werden. In einem Dauerzustandsbetrieb enthält die logische Vorrichtung an der entfernt gelegenen Speichervorrichtung26 Daten, die identisch mit den Daten der logischen Vorrichtung an der lokalen Speichervorrichtung24 sind. Die logische Vorrichtung an der lokalen Speichervorrichtung24 , auf die der Host22 zugreift, wird als das „R1 -Volumen“ (oder lediglich als „R1 “) bezeichnet, während die logische Vorrichtung bei der entfernt gelegenen Speichervorrichtung26 , die eine Kopie der Daten in demR1 -Volumen enthält, als „R2 -Volumen“ (oder lediglich als „R2 “) bezeichnet wird. Somit liest und schreibt der Host Daten von und zu demR1 -Volumen und dieRDF handhabt das automatische Kopieren und Aktualisieren der Daten von demR1 -Volumen zu demR2 -Volumen. Das hier beschriebene System kann unter Verwendung einer Software, Hardware und/oder einer Kombination aus Software und Hardware implementiert werden, wobei die Software in einem geeigneten Speichermedium gespeichert werden kann und durch einen oder mehrere Prozessoren ausgeführt werden kann. - Gemäß
2 ist ein Datenpfad von dem Host22 zu der lokalen Speichervorrichtung24 und der entfernt gelegenen Speichervorrichtung26 veranschaulicht. Die von dem Host22 auf die lokale Speichervorrichtung24 geschriebenen Daten werden lokal gespeichert, wie dies durch das Datenelement51 der lokalen Speichervorrichtung24 veranschaulicht ist. Die durch den Host22 auf die lokale Speichervorrichtung24 geschriebenen Daten werden in Verbindung mit dem Senden durch die lokale Speichervorrichtung24 über die Verbindung29 zu der entfernt gelegenen Speichervorrichtung26 auch durch die lokale Speichervorrichtung24 gehalten. - Bei dem hier beschriebenen System wird jedem Datenschreibvorgang oder -eintrag durch den Host
22 (beispielsweise eine Aufzeichnung, eine Vielzahl an Aufzeichnungen, eine Spur usw.), einer Sequenzzahl zugeordnet. Die Sequenzzahl kann in einem geeigneten Datenfeld vorgesehen werden, welches dem Schreibeintrag zugeordnet ist. In2 sind die Schreibeinträge durch den Host22 so gezeigt, dass diesen die Sequenznummer N zugeordnet ist. Alle die Schreibeinträge durch den Host22 , denen die Sequenznummer N zugeordnet ist, sind in einem einzelnen Datenpaket52 gesammelt. Das Paket52 repräsentiert eine Vielzahl von getrennten Schreibeinträge durch den Host22 , die etwa zur gleichen Zeit erfolgen. - Im Allgemeinen sammelt die lokale Speichervorrichtung
24 Pakete mit einer Sequenznummer, während sie ein früher angesammeltes Paket zu der entfernt gelegenen Speichervorrichtung26 sendet (mit der früheren Sequenznummer). Während somit die lokale Speichervorrichtung24 Schreibeinträge von dem Host22 sammelt, denen die Sequenznummer N zugeordnet wird, werden die zur früheren Sequenznummer (N-1 ) erfolgten Schreibeinträge durch die lokale Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 über die Verbindung29 übertragen. Ein Paket54 repräsentiert Schreibeinträge von dem Host22 , denen die SequenznummerN-1 zugeordnet wurde, die noch nicht zu der entfernt gelegenen Speichervorrichtung26 übertragen worden sind. - Die entfernt gelegene Speichervorrichtung
26 empfängt die Daten aus dem Paket54 entsprechend den Schreibeinträgen, denen eine SequenznummerN-1 zugeordnet wurde, und konstruiert ein neues Paket56 der Host-Schreibeinträge mit der SequenznummerN-1 . Die Daten können unter Verwendung eines geeigneten RDF-Protokolls übertragen werden, welches die Daten bestätigt, die über die Verbindung29 gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung26 alle die Daten aus dem Paket54 empfangen hat, sendet die lokale Speichervorrichtung24 eine Festschreibungsnachricht [commit message] zu der entfernt gelegenen Speichervorrichtung26 , um all die Daten, welche der SequenznummerN-1 zugeordnet sind entsprechend dem Paket56 festzuschreiben. Im Allgemeinen wird dann, wenn ein Paket, welches einer bestimmten Sequenznummer entspricht, festgeschrieben wird, das Paket in die logische Speichervorrichtung geschrieben. Dies ist in2 mit Hilfe eines Paketes58 [chunk] veranschaulicht, entsprechend den Schreibeinträgen, welchen die SequenznummerN-2 zugeordnet ist (das heißt zwei vor der momentanen Sequenznummer, die in Verbindung mit den Schreibeinträgen durch den Host22 an der lokalen Speichervorrichtung26 verwendet wird). In2 ist das Paket58 so gezeigt, dass es zu einem Datenelement62 geschrieben wird, welches einen Plattenspeicher für die entfernt gelegene Speichervorrichtung26 repräsentiert. Somit empfängt und sammelt die entfernt gelegene Speichervorrichtung26 das Paket56 entsprechend der SequenznummerN-1 , während das Datenpaket58 entsprechend der früheren Sequenznummer (N-2 ) in den Plattenspeicher der entfernt gelegenen Speichervorrichtung26 geschrieben wird, der durch das Datenelement62 veranschaulicht ist. Bei einigen Ausführungsformen sind die Daten für das Paket58 zum Schreiben markiert (werden jedoch nicht notwendigerweise unmittelbar geschrieben), während die Daten für das Paket56 nicht markiert sind. - Somit schreibt der Host
22 im Betrieb Daten in die lokale Speichervorrichtung24 , die lokal in dem Datenelement51 gespeichert und in dem Paket52 gesammelt werden. Wenn alle Daten für eine bestimmte Sequenznummer gesammelt worden sind (hier an anderer Stelle beschrieben), inkrementiert die lokale Speichervorrichtung24 die Sequenznummer. Daten von dem Paket54 , die der momentanen Sequenznummer minus eins entsprechen, werden von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 über die Verbindung29 übertragen. Das Paket58 entspricht den Daten für eine Sequenznummer, die durch das Senden einer Nachricht zu der entfernt gelegenen Speichervorrichtung26 durch die lokale Speichervorrichtung24 festgeschrieben wurden. Daten aus dem Paket58 werden in den Plattenspeicher der entfernt gelegenen Speichervorrichtung26 geschrieben. - Es sei darauf hingewiesen, dass die Schreibeinträge innerhalb eines bestimmten einen der Pakete
52 ,54 ,56 ,58 nicht notwendigerweise geordnet sind. Wie hier an anderer Stelle detaillierter beschrieben wird, wurde jeder Schreibeintrag für das Paket58 entsprechend der Sequenznummer N-2 vor dem Beginn irgendeines der Schreibeinträge für die Pakete54 ,56 entsprechend der SequenznummerN-1 begonnen. Zusätzlich wurde jeder Schreibeintrag für die Pakete54 ,56 entsprechend der SequenznummerN-1 vor dem Beginn irgendeines der Schreibeinträge für das Paket52 begonnen, entsprechend der Sequenznummer N. Somit kann in einem Fall eines Kommunikationsausfalls zwischen der lokalen Speichervorrichtung24 und der entfernt gelegenen Speichervorrichtung26 die entfernt gelegene Speichervorrichtung26 einfach das Schreiben des letzten festgeschriebenen Datenpaket (dem Paket58 bei dem Beispiel von2 ), und es kann sichergestellt werden, dass sich die Daten an der entfernt gelegenen Speichervorrichtung26 in einem solchen Sinn in einem geordneten Zustand befinden, dass das Datenelement62 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ältR2 eine Kopie vonR1 in einem bestimmten Zeitpunkt und es wird möglich, ein konsistentes Abbild von derR2 -Vorrichtung wiederherzustellen. - Gemäß
3 veranschaulicht ein Diagramm70 Elemente, die zum Konstruieren und Unterhalten der Datenpakete52 ,54 verwendet werden. Eine logische Standardvorrichtung72 enthält Daten, die durch den Host22 geschrieben wurden, und entspricht dem Datenelement51 von2 und den Platten33a -33c von1 . Die logische Standardvorrichtung72 enthält Daten, die durch den Host22 auf die lokale Speichervorrichtung24 geschrieben wurden. - Es werden zwei verkettete Listen von Zeigern
74 ,76 in Verbindung mit der logischen Standardvorrichtung72 verwendet. Die verketteten Listen74 ,76 entsprechen den Daten, die beispielsweise in dem Speicher37 der lokalen Speichervorrichtung24 gespeichert werden können. Die verkettete Liste74 enthält eine Vielzahl an Zeigern81 -85 , von denen jeder auf einen Bereich oder eine Zeile [slot] eines Cachespeichers88 zeigt, der in Verbindung mit der lokalen Speichervorrichtung24 verwendet wird. In ähnlicher Weise enthält die verkettete Liste76 eine Vielzahl an Zeigern91 -95 , von denen jeder auf eine Zeile in dem Cachespeicher88 zeigt. Bei einigen Ausführungsformen kann der Cachespeicher88 in dem Speicher37 der lokalen Speichervorrichtung24 vorgesehen sein. Der Cachespeicher88 enthält eine Vielzahl an Cachezeilen102 -104 , die in Verbindung mit Schreibeinträgen auf der logischen Standardvorrichtung72 verwendet werden können und die zur gleichen Zeit in Verbindung mit den verketteten Listen74 ,76 verwendet werden können. - Jede der verketteten Listen
74 ,76 kann für eines der Datenpakete52 ,54 in solcher Weise verwendet werden, dass beispielsweise die verkettete Liste74 dem Datenpaket52 für die Sequenznummer N entspricht, während die verkettete Liste76 dem Datenpaket54 für die Sequenznummer N-1 entspricht. Wenn somit Daten durch den Host22 auf die lokale Speichervorrichtung24 geschrieben werden, werden die Daten zu dem Cachespeicher88 geliefert und in einigen Fällen (die hier an anderer Stelle beschrieben werden) wird ein geeigneter Zeiger der verketteten Liste74 erzeugt. Es sei hervorgehoben, dass die Daten nicht aus dem Cachespeicher88 entfernt werden, bis die Daten zu der logischen Standardvorrichtung72 ausgelesen wurden und auch auf die Daten durch keinen der Zeiger81 -85 der verketteten Liste74 gezeigt wird, wie dies hier an anderer Stelle beschrieben wird. - Bei einer Ausführungsform gilt eine der verketteten Listen
74 ,76 als „aktiv“, während die andere als „inaktiv“ gilt. Wenn somit beispielsweise die Sequenznummer N geradzahlig ist, kann die verkettete Liste74 aktiv sein, während jedoch die verkettete Liste76 inaktiv ist. Die aktive der verketteten Listen74 ,76 handhabt Schreibeinträge von dem Host22 , während die eine inaktive Liste der verketteten Listen74 ,76 den Daten entspricht, die von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen werden. - Während die Daten, die durch den Host
22 geschrieben werden, gesammelt werden, und zwar unter Verwendung der aktiven der verketteten Listen74 ,76 (für die Sequenznummer N), werden die Daten entsprechend der inaktiven der verketteten Listen74 ,76 (die frühere Sequenznummer N-1) von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen. Die RAs30a -30c verwenden die verketteten Listen74 ,76 , um die Daten zu bestimmen, die von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 zu übertragen sind. - Nachdem die Daten, die einem bestimmten der Zeiger in einer der verketteten Listen
74 ,76 entsprechen, zu der entfernt gelegenen Speichervorrichtung26 übertragen wurden, kann dieser bestimmte Zeiger aus der entsprechenden verketteten Liste74 oder76 entfernt werden. Zusätzlich können die Daten auch markiert werden, um sie aus dem Cachespeicher88 zu entfernen (das heißt, es kann die Zeile zu einem Pool von Zeilen für eine spätere, unabhängige Verwendung zurückgeführt werden), unter der Voraussetzung, dass die Daten in der Zeile nicht anderweitig für andere Zwecke benötigt werden (z. B. zum Auslesen zu der logischen Standardvorrichtung72 ). Ein Mechanismus kann dafür verwendet werden, um sicherzustellen, dass Daten nicht aus dem Cachespeicher88 entfernt werden, bis alle Vorrichtungen nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in demUS-Patent Nr. 5,537,568 , ausgegeben am 16. Juli 1996, und in demUS-Patent Nr. 6,594,742 , ausgegeben am 15. Juli 2003, beschrieben, die beide hier unter Bezugnahme mit einbezogen werden. - Gemäß
4 enthält eine Zeile120 ähnlich einer der Zeilen102 -104 des Cachespeichers88 einen Header122 und Daten124 . Der Header122 entspricht Overhead-Informationen, die durch das System zum Managen der Zeile120 verwendet werden. Die Daten124 sind die entsprechenden Daten von der Platte, die (temporär) in der Zeile120 gespeichert wird. Informationen in dem Header122 enthalten Zeiger zurück zur Platte, Zeitstempel usw. - Der Header
122 enthält auch einen Cachestempel126 , der in Verbindung mit dem hier beschriebenen System verwendet wird. Bei einer hier beschriebenen Ausführungsform umfasst der Cachestempel126 acht Bytes. Zwei der Bytes bilden ein „Passwort“, welches anzeigt, ob die Zeile120 durch das hier beschriebene System verwendet wird. Bei anderen Ausführungsformen kann das Passwort ein Byte umfassen, während das folgende Byte für ein Pad verwendet wird. Wie hier an anderer Stelle beschrieben wird, zeigt die Tatsache, dass die zwei Bytes des Passwortes (oder ein Byte, je nach Fall) gleich einem bestimmten Wert ist, an, dass auf die Zeile120 durch wenigstens einen Eintrag in den verketteten Listen74 ,76 gezeigt wird. Die Tatsache, dass das Passwort nicht gleich dem bestimmten Wert ist, zeigt an, dass auf die Zeile120 nicht durch einen Eintrag der verketteten Listen74 ,76 gezeigt wird. Die Verwendung des Passwortes wird hier an anderer Stelle beschrieben. - Der Cachestempel
126 enthält auch ein Zwei-Byte-Feld, welches die Sequenznummer angibt (z. B. N, N-1, N-2 usw.) der Daten124 der Zeile120 . Wie hier an anderer Stelle beschrieben wird, kann das Sequenzzahlfeld des Cachestempels126 dazu verwendet werden, den hier beschriebenen Prozess zu vereinfachen. Die verbleibenden vier Bytes des Cachestempels126 können für einen Zeiger beschrieben werden, wie hier an anderer Stelle beschrieben wird. Natürlich sind die zwei Bytes der Sequenznummer und die vier Bytes des Zeigers lediglich gültig, wenn das Passwort gleich dem bestimmten Wert ist, der anzeigt, dass auf die Zeile120 durch wenigstens ein Eintrag in einer der Listen74 ,76 gezeigt wird. - Gemäß
5 veranschaulicht ein Flussdiagramm140 die Schritte, die durch den HA28 in Verbindung mit einem Host22 durchgeführt werden, welcher eine Schreiboperation ausführt. Selbstverständlich erfolgt, wenn der Host22 einen Schreibvorgang ausführt, eine Verarbeitung zur Handhabung des Schreibvorganges auf normale Weise, und zwar unabhängig davon, ob die Daten Teil einer R/R2-RDF-Gruppe sind. Wenn beispielsweise der Host22 Daten für einen Abschnitt der Platte schreibt, erfolgt der Schreibvorgang zu der Cachezeile, der eventuell zur Platte ausgelesen wurde. Die Cachezeile kann entweder eine neue Cachezeile sein oder sie kann eine bereits bestehende Cachezeile sein, die in Verbindung mit einem früheren Lese- und/oder Schreibvorgang zur gleichen Spur erzeugt wurde. - Die Verarbeitung beginnt zunächst bei einem ersten Schritt
142 , bei welchem eine Zeile entsprechend dem Schreibeintrag gesperrt wird. Bei einer hier beschriebenen Ausführungsform entspricht jeder der Zeilen102 -104 des Cachespeichers88 einer Spur an Daten auf der logischen Standardvorrichtung72 . Das Sperren der Zeile bei dem Schritt142 verhindert den Ablauf zusätzlicher Verarbeitungsvorgänge auf der relevanten Zeile während der Verarbeitung, die durch den HA28 entsprechend den Schritten des Flussdiagramms140 durchgeführt werden. - Auf Schritt
142 folgt ein Schritt144 , bei dem ein Wert für N, die Sequenzzahl, gesetzt wird. Wie hier an anderer Stelle erläutert wird, wird der Wert für die Sequenzzahl, die bei dem Schritt144 erhalten wird, während der gesamten Schreiboperation beibehalten, die durch den HA28 ausgeführt wird, während die Zeile gesperrt ist. Wie hier an anderer Stelle erläutert wird, wird die Sequenznummer jedem Schreibeintrag zugeordnet, um dasjenige der Datenpakete52 ,54 zu setzen, zu welchem der Schreibeintrag gehört. Schreibeinträge, die durch den Host22 ausgeführt werden, werden einer momentanen Sequenznummer zugeordnet. Es ist vorteilhaft, dass eine einzelne Schreiboperation die gleiche Sequenznummer durchgehend beibehält. - Auf Schritt
144 folgt ein Testschritt146 , bei dem bestimmt wird, ob das Passwortfeld der Cachezeile gültig ist. Wie oben bereits erläutert wurde, setzt das hier beschriebene System das Passwortfeld auf einen vorbestimmten Wert, um anzuzeigen, dass die Cachezeile bereits in einer der verketteten Zeigerlisten74 ,76 ist. Wenn bei dem Testschritt146 bestimmt wird, dass das Passwortfeld nicht gültig ist (wobei angezeigt wird, dass die Zeile eine neue Zeile ist und dass keine Zeiger von den Listen74 ,76 auf die Zeile zeigen), verläuft die Steuerung von dem Schritt146 zu einem Schritt148 , bei dem der Cachestempel der neuen Zeile gesetzt wird, und zwar durch Setzen des Passwortes auf den vorbestimmten Wert, Setzen des Sequenznummerfeldes auf N und Setzen des Zeigerfeldes auf Null. Bei anderen Ausführungsformen kann das Zeigerfeld so gesetzt werden, dass es auf die Zeile selbst zeigt. - Auf Schritt
148 folgt ein Schritt152 , bei dem ein zu der neuen Zeile weisender Zeiger zu der aktiven der Zeigerlisten74 ,76 hinzugefügt wird. Bei einer hier beschriebenen Ausführungsform bestehen die Listen74 ,76 aus ringförmig doppelt verketteten Listen und der neue Zeiger wird zu der ringförmig doppelt verketteten Liste auf herkömmliche Weise hinzugefügt. Natürlich können auch andere geeignete Datenstrukturen zum Managen der Listen74 ,76 verwendet werden. Nachfolgend dem Schritt152 wird ein Schritt154 durchgeführt, bei dem Flags gesetzt werden. Bei dem Schritt154 wird das RDF_WP_Flag (Flag für ausstehenden RDF-Schreibvorgang) gesetzt, um anzugeben, dass die Zeile zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung von RDF übertragen werden soll. Zusätzlich bei dem Schritt154 wird das IN_CACHE-Flag gesetzt, um anzuzeigen, dass die Zeile zu der logischen Standardvorrichtung72 ausgelesen werden muss. Auf Schritt154 folgt ein Schritt156 , bei dem die durch den Host22 und durch HA28 geschriebenen Daten in die Zeile eingeschrieben werden. Auf Schritt156 folgt ein Schritt158 , bei dem die Zeile entsperrt wird. Nach dem Schritt158 ist dann die Verarbeitung vollendet. - Wenn bei dem Testschritt
146 bestimmt wird, dass das Passwortfeld der Zeile gültig ist (wobei angezeigt wird, dass auf die Zeile bereits durch wenigstens einen Zeiger der Listen74 ,76 gezeigt wird), dann geht die Steuerung von dem Schritt146 zu einem Testschritt162 über, bei dem bestimmt wird, ob das Sequenzzahlenfeld der Zeile gleich der momentanen SequenznummerN ist. Es sei hervorgehoben, dass es zwei gültige Möglichkeiten für das Sequenznummernfeld einer Zeile mit einem gültigen Passwort gibt. Es ist möglich, dass das Sequenznummernfeld gleichN , der momentanen Sequenznummer, ist. Dies ist der Fall, wenn die Zeile einem früheren Schreibeintrag mit der SequenznummerN entspricht. Die andere Möglichkeit ist, dass das Sequenznummernfeld gleichN-1 ist. Dies ist der Fall, wenn die Zeile einem früheren Schreibeintrag mit der Sequenznummer N-1 entspricht. Jeder andere Wert für das Sequenznummernfeld ist ungültig. Es kann somit für einige Ausführungsformen möglich sein, eine Fehler-/Gültigkeitsüberprüfung in Schritt162 aufzunehmen oder eine Fehler-/Gültigkeitsüberprüfung in einem getrennten Schritt vorzunehmen. Solch ein Fehler kann auf jede geeignete Weise gehandhabt werden, die auch das Liefern einer Nachricht zu einem Anwender enthalten kann. - Wenn bei dem Schritt
162 bestimmt wird, dass der Wert des Sequenznummernfeldes der Zeile gleich der momentanen SequenznummerN ist, dann ist keine spezielle Verarbeitung erforderlich und die Steuerung geht von dem Schritt162 auf den Schritt156 über, der oben erläutert wurde, bei dem die Daten in die Zeile geschrieben werden. Wenn ansonsten der Wert des SequenznummernfeldesN-1 lautet (der einzige andere gültige Wert), dann geht die Steuerung von dem Schritt162 zu einem Schritt164 über, bei dem eine neue Zeile erhalten wird. Die neue Zeile, die bei dem Schritt164 erhalten wird, kann zum Speichern der Daten, die geschrieben werden sollen, verwendet werden. - Auf Schritt
164 folgt ein Schritt166 , bei dem die Daten von der alten Zeile zu der neuen Zeile kopiert werden, die bei dem Schritt164 erhalten wurde. Es sei erwähnt, dass die kopierten Daten das RDF_WP-Flag enthalten, welches bei dem Schritt154 bei einem früheren Schreibvorgang gesetzt worden sein sollte, wenn die Zeile zum ersten Mal erzeugt wurde. Auf Schritt166 folgt ein Schritt168 , bei dem der Cachestempel für die neue Zeile gesetzt wird, indem das Passwortfeld auf den geeigneten Wert gesetzt wird, das Sequenznummernfeld auf die momentane SequenznummerN gesetzt wird und das Zeigerfeld gesetzt wird, so dass es auf die alte Zeile zeigt. Auf Schritt168 folgt ein Schritt172 , bei dem ein zu der neuen Zeile weisender Zeiger zu der aktiven Liste der verketteten Listen74 ,76 hinzugefügt wird. Auf Schritt172 folgt der oben erläuterte Schritt156 , bei dem die Daten in die Zeile geschrieben werden, die in diesem Fall die neue Zeile ist. - Gemäß
6 veranschaulicht ein Flussdiagramm200 die Schritte, die in Verbindung mit dem Abtasten der inaktiven Liste der Listen72 ,74 durch die den RAs30a -30c durchgeführt werden, um die RDF-Daten von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 zu übertragen. Wie oben erläutert ist, zeigt die inaktive Liste der Listen72 ,74 zu Zeilen, die demN-1 -Zyklus für dieR1 -Vorrichtung entsprechen, wenn der N-Zyklus durch den Host auf dieR1 -Vorrichtung unter Verwendung der aktiven Liste von den Listen72 ,74 geschrieben wird. - Die Verarbeitung beginnt bei einem ersten Schritt
202 , bei welchem bestimmt wird, ob irgendwelche Einträge in der inaktiven Liste der Listen72 ,74 vorhanden sind. Wenn Daten übertragen werden, werden die entsprechenden Einträge aus der inaktiven Liste der Listen72 ,74 entfernt. Zusätzlich werden neue Schreibeinträge in die aktive Liste der Listen72 ,74 vorgenommen und allgemein nicht zu der inaktiven Liste der Listen72 ,74 . Es wird somit möglich (und ist wünschenswert, wie hier an anderer Stelle beschrieben wird), dass die inaktive Liste der Listen72 ,74 keine Daten zu bestimmten Zeitpunkten enthält. Wenn bei dem Schritt202 bestimmt wurde, dass keine Daten zu übertragen sind, wird die inaktive Liste der Listen72 ,74 kontinuierlich abgefragt, bis Daten verfügbar werden. Daten zum Senden werden in Verbindung mit einem Zyklusschalter (der hier an anderer Stelle erläutert wird) verfügbar, wobei die inaktive Liste der Listen72 ,74 zur aktiven Liste der Listen72 ,74 wird und umgekehrt. - Wenn bei dem Schritt
202 bestimmt wird, dass Daten zum Senden verfügbar sind, geht die Steuerung von dem Schritt202 zu einem Schritt204 über, bei dem die Zeile als korrekt verifiziert wird. Die bei dem Schritt204 durchgeführte Verarbeitung besteht aus einer optionalen „Plausibilitätsprüfung“, die das Verifizieren, dass das Passwortfeld korrekt ist, und das Verifizieren, dass das Sequenzzahlenfeld korrekt ist, enthalten kann. Wenn sich in der Zeile unkorrekte (unerwartete) Daten befinden, kann eine Fehlerverarbeitung durchgeführt werden, die eine Unterrichtung eines Anwenders über den Fehler enthalten kann und auch möglicherweise einen Feh lerbeseitigungsprozess. - Auf Schritt
204 folgt Schritt212 , bei dem die Daten über RDF in einer herkömmlichen Weise versendet werden. Bei einer hier beschriebenen Ausführungsform wird die gesamte Zeile nicht übertragen. Vielmehr werden lediglich Aufzeichnungen innerhalb der Zeile, bei denen die geeigneten Spiegelungsbits gesetzt sind (was anzeigt, dass die Aufzeichnungen geändert wurden), zu der entfernt gelegenen Speichervorrichtung26 übertragen. Bei anderen Ausführungsformen kann es jedoch möglich sein, die gesamte Zeile zu übertragen, vorausgesetzt, dass die entfernt gelegene Speichervorrichtung26 lediglich Daten schreibt, die Aufzeichnungen entsprechen, bei denen die geeigneten Spiegelungsbits gesetzt sind, und andere Daten für die Spur ignoriert, die gültig oder auch nicht gültig sein können. Auf Schritt212 folgt ein Testschritt214 , bei dem bestimmt wird, ob die Daten, die übertragen wurden, durch dieR2 -Vorrichtung bestätigt worden sind. Wenn dies nicht der Fall ist, werden die Daten erneut gesendet, wie dies durch den Fluss von dem Schritt214 zurück zu dem Schritt212 angezeigt ist. Bei anderen Ausführungsformen kann eine abweichende und mehr involvierte Verarbeitung dazu verwendet werden, um Daten zu senden und den Empfang derselben zu bestätigen. Solche Verarbeitung kann Fehlerberichte enthalten und auch alternative Verarbeitungen, die ausgeführt wird, nachdem eine bestimmte Anzahl von Versuchen zum Senden der Daten fehlgeschlagen ist. - Sobald bei dem Testschritt
214 bestimmt worden ist, dass die Daten erfolgreich gesendet worden sind, geht die Steuerung von dem Schritt214 zu einem Schritt216 über, um das RDF_WP-Flag zu löschen (da die Daten erfolgreich über RDF gesendet worden sind). Auf Schritt216 folgt ein Testschritt218 , bei dem bestimmt wird, ob die Zeile eine Duplikatzeile ist, die in Verbindung mit einem Schreibeintrag in eine Zeile erzeugt wurde, die bereits einen existierenden Eintrag in der inaktiven Liste der Listen72 ,74 besitzt. Diese Möglichkeit wurde weiter oben in Verbindung mit den Schritten162 ,164 ,166 ,168 ,172 erläutert. Wenn bei dem Schritt218 bestimmt wird, dass die Zeile aus einer Duplikatzeile besteht, geht die Steuerung von dem Schritt218 zu einem Schritt222 über, bei dem die Zeile zu einem Pool von verfügbaren Zeilen zurückgeführt wird (für die neue Verwendung). Zusätzlich kann die Zeile alt gemacht werden (oder es kann ein anderer geeigneter Mechanismus bei diesem angewendet werden), um für eine unmittelbare Wiederverwendung vor anderen Zeilen zu sorgen, da die Daten, die in der Zeile vorhanden sind, für keinen anderen Zweck gültig sind. Auf Schritt222 oder dem Schritt218 , wenn die Zeile nicht aus einer Duplikatzeile besteht, folgt ein Schritt224 , bei dem das Passwortfeld des Zeilenheaders gelöscht wird, so dass dann, wenn die Zeile wieder verwendet wird, der Test bei dem Schritt146 von5 die Zeile zutreffend als eine neue Zeile klassifiziert. - Auf Schritt
224 folgt ein Schritt226 , bei dem der Eintrag in der inaktiven Liste der Listen72 ,74 entfernt wird. Auf Schritt226 folgend geht die Steuerung zurück zu dem Schritt202 , der oben erläutert wurde, bei dem bestimmt wird, ob zusätzliche Einträge in der inaktiven Liste der Listen72 ,74 vorhanden sind, entsprechend den Daten, die übertragen werden müssen. - Gemäß
7 veranschaulicht ein Diagramm240 die Erzeugung und die Manipulation der Datenpakete56 ,58 , die durch die entfernt gelegene Speichervorrichtung26 verwendet werden. Die Daten, die durch die entfernt gelegene Speichervorrichtung26 über die Verbindung29 empfangen werden, werden zu einem Cachespeicher242 der entfernt gelegenen Speichervorrichtung26 geliefert. Der Cachespeicher242 kann beispielsweise in dem Speicher38 der entfernt gelegenen Speichervorrichtung26 vorgesehen sein. Der Cachespeicher242 enthält eine Vielzahl an Cachezeilen244 -246 , von denen jede einer Spur einer logischen Standard-Speichervorrichtung252 zugeordnet werden kann. Der Cachespeicher242 ist ähnlich dem Cachespeicher88 von3 ausgebildet und kann Daten enthalten, die zu der logischen Standard-Speichervorrichtung252 der entfernt gelegenen Speichervorrichtung26 ausgelesen werden. Die logische Standard-Speichervorrichtung252 entspricht dem Datenelement62 , welches in2 gezeigt ist, und den Platten64a -64c , die in1 gezeigt sind. - Die entfernt gelegene Speichervorrichtung
26 enthält auch ein Paar von virtuellen Nur-Cache-Vorrichtungen [cache only virtual devices]254 ,256 . Virtuelle Nur-Cache-Vorrichtungen (COVD)254 ,256 entspricht Vorrichtungstabellen, die beispielsweise in dem Speicher38 der entfernt gelegenen Speichervorrichtung26 gespeichert sein können. Jeder Spureintrag der Tabellen jeder der virtuellen Nur-Cache-Vorrichtungen254 ,256 zeigt zu entweder einer Spur der logischen Standardvorrichtung252 oder zu einer Zeile des Cachespeichers242 . Virtuelle Nur-Cache-Vorrichtungen sind in der parallel laufenden US-Patentanmeldung mit dem Titel CACHE-ONLY VIRTUAL DEVICES, eingereicht am 25. März 2003, mit der Seriennummer10 /396 ,800 beschrieben, die hier unter Bezugnahme voll mit einbezogen wird. - Die Vielzahl der Cachezeilen
244 -246 können in Verbindung mit Schreibeinträgen in die logische Standardvorrichtung252 verwendet werden und können gleichzeitig in Verbindung mit den virtuellen Nur-Cache-Vorrichtungen254 ,256 verwendet werden. Bei einer hier beschriebenen Ausführungsform enthält jede der Spurtabelleneinträge der virtuellen Nur-Cache-Vorrichtungen254 ,256 eine Null, um anzuzeigen, dass die Daten für diese Spur in einer entsprechenden Spur der logischen Standardvorrichtung252 gespeichert sind. Ansonsten enthält ein Eintrag in der Spurtabelle für jeden der virtuellen Nur-Cache-Vorrichtungen254 ,256 einen Zeiger zu einer der Zeilen244 -246 in dem Cache242 . - Jede der virtuellen Nur-Cache-Vorrichtungen
254 ,256 entspricht einem der Datenpakete56 ,58 . So kann beispielsweise die virtuelle Nur-Cache-Vorrichtung254 dem Datenpaket56 entsprechen, während die virtuelle Nur-Cache-Vorrichtung256 dem Datenpaket58 entsprechen kann. Bei einer hier beschriebenen Ausführungsform kann eine der virtuellen Nur-Cache-Vorrichtungen254 ,256 als „aktiv“ betrachtet werden, während die andere der virtuellen Nur-Cache-Vorrichtungen254 ,256 als „inaktiv“ betrachtet werden kann. Die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 kann Daten entsprechen, die von der logischen Speichervorrichtung24 empfangen werden (das heißt dem Datenpaket56 ), während die andere der virtuellen Nur-Cache-Vorrichtungen254 ,256 Daten entspricht, die zu der logischen Standardvorrichtung252 wiederhergestellt (geschrieben) werden. - Die Daten von der logischen Speichervorrichtung
24 , die über die Verbindung29 empfangen werden, können in eine der Zeilen244 -246 des Cachespeichers242 platziert werden. Ein entsprechender Zeiger der inaktiven der virtuellen Nur-Cache-Vorrichtungen254 ,256 kann so gesetzt werden, dass dieser auf die empfangenen Daten zeigt. Nachfolgende Daten mit der gleichen Sequenznummer können in ähnlicher Weise verarbeitet werden. An einer bestimmten Stelle liefert die logische Speichervorrichtung24 eine Nachricht, welche alle unter Verwendung der gleichen Sequenznummer gesendeten Daten festschreibt. Wenn die Daten für eine bestimmte Sequenznummer einmal festgeschrieben sind, wird die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zur aktiven und umgekehrt. An dieser Stelle werden Daten von der nunmehr aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu der logischen Standardvorrichtung252 kopiert, während die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 dazu verwendet wird, um neue Daten zu empfangen (mit einer neuen Sequenznummer), die von der logischen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen werden. - Wenn Daten von der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen
254 ,256 entfernt werden (was hier an anderer Stelle erläutert wird), kann der entsprechende Eintrag in der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 auf Null gesetzt werden. Zusätzlich können auch die Daten aus dem Cachespeicher244 entfernt werden (das heißt, die Zeile wird zu dem Pool von freien Zeilen für eine spätere Verwendung zurückgeführt), unter der Voraussetzung, dass die Daten in der Zeile nicht anderweitig für einen anderen Zweck benötigt werden (z. B. zum Auslesen zu der logischen Standardvorrichtung252 ). Es kann ein Mechanismus dafür verwendet werden, sicherzustellen, dass Daten nicht aus dem Cachespeicher242 entfernt werden, bis alle Spiegelungen (inklusive den virtuellen Nur-Cache-Vorrichtungen254 ,256 ) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in demUS-Patent Nr. 5,537,568 , ausgegeben am 16. Juli 1996, und in demUS-Patent Nr. 6,594,742 , ausgegeben am 15. Juli 2003, beschrieben, die hier beide unter Bezugnahme mit einbezogen werden. - Bei einigen Ausführungsformen, die hier an anderer Stelle erläutert werden, kann die entfernt gelegene Speichervorrichtung
26 verkettete Listen258 ,262 unterhalten, ähnlich den Listen74 ,76 , die durch die logische Speichervorrichtung24 verwendet werden. Die Listen258 ,262 können Informationen enthalten, welche die Zeilen der entsprechenden virtuellen Nur-Cache-Vorrichtungen254 ,256 identifizieren, die modifiziert worden sind, wobei eine der Listen258 ,262 einer Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 entspricht, und die andere Liste der Listen258 ,262 der anderen Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 entspricht. Wie hier an anderer Stelle erläutert werden wird, können die Listen258 ,262 dazu verwendet werden, um das Wiederabspeichern der Daten aus den virtuellen Nur-Cache-Vorrichtungen254 ,256 in die logische Standardvorrichtung252 zu vereinfachen. - Gemäß
8 veranschaulicht ein Flussdiagramm270 Schritte, die durch die entfernt gelegene Speichervorrichtung26 in Verbindung mit der Verarbeitung von Daten für eine Sequenznummer-Festschreibung durchgeführt werden, die durch die lokale Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen wird. Wie hier an anderer Stelle erläutert werden wird, inkrementiert die lokale Speichervorrichtung24 periodisch die Sequenznummern. Wenn dies stattfindet, beendet die logische Speichervorrichtung24 das Übertragen von all den Daten für die frühere Sequenznummer und sendet dann eine Festschreibungsnachricht für die frühere Sequenznummer. - Die Verarbeitung beginnt bei einem ersten Schritt
272 , bei dem die Festschreibung empfangen wird. Auf den Schritt272 folgt ein Testschritt274 , bei dem bestimmt wird, ob die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 der entfernt gelegenen Speichervorrichtung26 leer ist. Wie hier an anderer Stelle erläutert wird, wird die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 der entfernt gelegenen Speichervorrichtung26 dazu verwendet, um Daten von der logischen Speichervorrichtung24 zu sammeln, die unter Verwendung von RDF gesendet werden, während die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 auf die logische Standardvorrichtung252 wiederhergestellt wird. - Wenn bei dem Testschritt
274 bestimmt wird, dass die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 nicht leer ist, geht die Steuerung von dem Testschritt274 zu einem Schritt276 über, bei dem die Wiederherstellung der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 vollendet wird, bevor eine weitere Verarbeitung durchgeführt wird. Das Wiederherstellen der Daten aus der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 wird hier an anderer Stelle detaillierter beschrieben werden. Es ist nützlich, dass die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 leer ist, bevor die Festschreibung gehandhabt wird und mit der Wiederherstellung der Daten für die nächste Sequenznummer begonnen wird. - Auf den Schritt
276 oder auf den Schritt274 , wenn die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 als leer bestimmt wurde, folgt ein Schritt278 , bei dem die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 inaktiv gemacht wird. Auf den Schritt278 folgt ein Schritt282 , bei dem die zuvor inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 inaktiv gemacht wird (das heißt die Vorrichtung, die vor der Ausführung des Schrittes278 inaktiv war). Das Vertauschen der aktiven und der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 bei den Schritten278 ,282 bereitet die nun inaktive (und leere) Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 darauf vor, mit dem Empfang von Daten von der lokalen Speichervorrichtung24 für die nächste Sequenznummer zu beginnen. - Auf den Schritt
282 folgt ein Schritt284 , bei dem die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu der logischen Standardvorrichtung252 der entfernt gelegenen Speichervorrichtung26 wiederhergestellt wird. Das Wiederherstellen der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu der logischen Standardvorrichtung252 wird im Folgenden detaillierter beschrieben. Es sei jedoch darauf hingewiesen, dass bei einigen Ausführungsformen der Wiederherstellungsprozess bei dem Schritt284 begonnen wird, jedoch nicht notwendigerweise vollendet wird. Auf den Schritt284 folgt ein Schritt286 , bei dem die von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 gesendete Festschreibung zur lokalen Speichervorrichtung24 zurückbestätigt wird, so dass die lokale Speichervorrichtung24 darüber informiert wird, dass die Festschreibung erfolgreich war. Nach dem Schritt286 ist die Verarbeitung vollendet. - Gemäß
9 veranschaulicht ein Flussdiagramm300 detaillierter die Schritte276 ,284 von8 , bei denen die entfernt gelegene Speichervorrichtung26 die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 wiederherstellt. Die Verarbeitung beginnt bei einem ersten Schritt302 , bei dem ein Zeiger gesetzt wird, um auf die erste Zeile der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu zeigen. Der Zeiger wird dazu verwendet, um durch jeden Spurtabelleneintrag der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 hindurch zu laufen, von denen jeder individuell verarbeitet wird. Auf den Schritt302 folgt ein Testschritt304 , bei dem bestimmt wird, ob die Spur der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 , die verarbeitet wird, zu der logischen Standardvorrichtung252 zeigt. Wenn dies der Fall ist, gibt es nichts, was wiederhergestellt werden könnte. Im anderen Fall geht die Steuerung von dem Schritt304 zu einem Schritt306 über, bei dem die entsprechende Zeile der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 gesperrt wird. - Auf den Schritt
306 folgt ein Testschritt308 , bei dem bestimmt wird, ob die entsprechende Zeile der logischen Standardvorrichtung252 bereits in dem Cachespeicher der entfernt gelegenen Speichervorrichtung26 vorhanden ist. Wenn dies der Fall ist, geht die Steuerung von dem Testschritt308 zu einem Schritt312 über, bei dem die Zeile der logischen Standardvorrichtung gesperrt wird. Auf den Schritt312 folgt ein Schritt314 , bei dem die Daten von der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 mit den Daten in dem Cache für die logische Standardvorrichtung252 zusammengeführt werden. Das Zusammenführen der Daten bei dem Schritt314 involviert das Überschreiben der Daten für die logische Standardvorrichtung mit den neuen Daten der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 . Es sei erwähnt, dass es bei Ausführungsformen, die Aufzeichnungswertflags vorsehen, möglich sein kann, die neuen Aufzeichnungen aus der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 mit einer ODER-Funktion mit den Aufzeichnungen der logischen Standardvorrichtung252 in dem Cache zu verknüpfen. Das heißt, wenn die Aufzeichnungen verschachtelt sind, ist es lediglich erforderlich, die Aufzeichnungen von der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu verwenden, die sich geändert haben, und die Aufzeichnungen zu der Cachezeile der logischen Standardvorrichtung252 zu liefern. Auf den Schritt314 folgt ein Schritt316 , bei dem die Zeile der logischen Standardvorrichtung252 entsperrt wird. Auf den Schritt316 folgt ein Schritt318 , bei dem die Zeile der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 , der verarbeitet wird, ebenfalls entsperrt wird. - Wenn bei dem Testschritt
308 bestimmt wird, dass die entsprechende Zeile der logischen Standardvorrichtung252 nicht in dem Cache vorhanden ist, geht die Steuerung von dem Testschritt308 zu einem Schritt322 über, bei dem der Spureintrag für die Zeile der logischen Standardvorrichtung252 geändert wird, um anzuzeigen, dass die Zeile der logischen Standardvorrichtung252 in dem Cache ist (z. B. ein IN_CACHE-Flag kann gesetzt werden) und ausgelesen werden muss. Wie hier an anderer Stelle erläutert wird, kann es bei einigen Ausführungsformen erforderlich sein, lediglich Aufzeichnungen der Spur, welche einen geeigneten Spiegelungsbitsatz aufweist, ausgelesen [destaged] zu werden. Auf den Schritt322 folgt ein Schritt324 , bei dem ein Flag für die Spur gesetzt werden kann, um anzuzeigen, dass die Daten für die Spur in dem Cache sind. - Auf den Schritt
324 folgt ein Schritt326 , bei dem der Zeilenzeiger für die logische Standardvorrichtung252 geändert wird, um auf die Zeile in dem Cache zu zeigen. Auf den Schritt326 folgt ein Testschritt328 , bei dem bestimmt wird, ob die Operationen, die bei den Schritten322 ,324 ,326 durchgeführt wurden, erfolgreich waren. In einigen Fällen kann eine einzelne Operation, die als „vergleichen und austauschen“-Operation bezeichnet wird, dazu verwendet werden, um die Schritte322 ,324 ,326 durchzuführen. Wenn diese Operationen aus irgendeinem Grund nicht erfolgreich sind, geht die Steuerung von dem Schritt328 zurück zu dem Schritt308 über, um erneut zu prüfen, ob die entsprechende Spur der logischen Standardvorrichtung262 in dem Cache vorhanden ist. Ansonsten geht, wenn bei dem Testschritt328 bestimmt wurde, dass die vorangehenden Operationen erfolgreich waren, die Steuerung von dem Testschritt328 zu dem Schritt318 über, der weiter oben erläutert wurde. - Auf den Schritt
318 folgt ein Testschritt332 , bei dem bestimmt wird, ob die Cachezeile der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,258 (der wiederhergestellt wird) noch in Verwendung ist. In einigen Fällen kann es möglich sein, dass die Zeile für die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 noch durch eine andere Spiegelung verwendet wird. Wenn bei dem Testschritt332 bestimmt wird, dass die Zeile der virtuellen Nur-Cache-Vorrichtung nicht durch eine andere Spiegelung verwendet wird, geht die Steuerung von dem Testschritt332 zu einem Schritt334 über, bei dem die Zeile für die Verwendung durch andere Prozesse freigegeben wird (z. B. in den Pool an verfügbaren Zeilen zurückgeführt wird, wie dies hier an anderer Stelle erläutert ist). Auf den Schritt334 folgt ein Schritt336 , um auf die nächste Zeile zu zeigen, um die nächste Zeile der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu verarbeiten. Es sei hervorgehoben, dass der Schritt336 auch von dem Testschritt332 erreicht wird, wenn bei dem Schritt332 bestimmt wurde, dass die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 weiterhin durch eine andere Spiegelung verwendet wird. Es sei auch hervorgehoben, dass der Schritt336 von dem Testschritt304 aus erreicht wird, wenn bei dem Schritt304 bestimmt wird, dass für die in Bearbeitung befindliche Zeile die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 auf die logische Standardvorrichtung252 zeigt. Auf den Schritt336 folgt ein Testschritt338 , bei dem bestimmt wird, ob mehr Zeilen der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 zu verarbeiten sind. Wenn dies nicht der Fall ist, ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Testschritt338 zurück zu dem Schritt304 . - Bei einer anderen Ausführungsform ist es möglich, Listen von modifizierten Zeilen für das empfangene Datenpaket
56 entsprechend dem N-1-Zyklus an der entfernt gelegenen Speichervorrichtung26 ähnlich den Listen256 ,262 , die in7 gezeigt sind, zu konstruieren. Wenn die Daten empfangen werden, konstruiert die entfernt gelegene Speichervorrichtung26 eine verkettete Liste modifizierter Zeilen. Die Listen, die konstruiert werden, können ringförmig sein, linear (mit einer NULL-Beendigung) oder können irgendein anderes geeignetes Design aufweisen. Die Listen können dazu verwendet werden, die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen254 ,256 wiederherzustellen. - Das Flussdiagramm
300 von9 zeigt zwei alternative Pfade342 ,344 , welche den Betrieb von Ausführungsformen veranschaulichen, bei denen eine Liste von modifizierten Zeilen verwendet wird. Bei dem Schritt302 wird ein Zeiger (für das Hindurchlaufen durch die Liste der modifizierten Zeilen verwendet) dazu gebracht, auf das erste Element der Liste zu zeigen. Auf den Schritt302 folgt ein Schritt306 , der über den alternativen Pfad342 erreicht wird. Bei den Ausführungsformen, welche die Listen der modifizierten Zeilen verwenden, ist der Testschritt304 nicht notwendig, da keine Zeilen auf der Liste zur der logischen Standardvorrichtung252 zeigen sollten. - Nach Schritt
306 wird die Verarbeitung in der oben in Verbindung mit der vorangehenden Ausführungsform erläuterten Weise fortgesetzt, mit der Ausnahme, dass bei dem Schritt336 die Liste der modifizierten Zeilen durchlaufen wird, anstatt auf die nächste Zeile in der COVD (virtuellen Nur-Cache-Vorrichtung) zu zeigen. In ähnlicher Weise wird durch den Test bei Schritt338 bestimmt, ob der Zeiger am Ende der Liste ist (oder zurück zum Anfang im Falle einer ringförmig verketteten Liste gelangt ist). Wenn ferner bei dem Schritt338 bestimmt wird, dass mehrere Zeilen zum Verarbeiten vorhanden sind, geht die Steuerung von dem Schritt338 zu dem Schritt306 über, wie dies durch den alternativen Pfad344 veranschaulicht ist. Wie oben erläutert wurde, kann für Ausführungsformen, die eine Liste von modifizierten Zeilen verwenden, der Schritt304 eliminiert werden. - Gemäß
10 veranschaulicht ein Flussdiagramm350 die Schritte, die in Verbindung mit dem Erhöhen der Sequenzzahl durch die logische Speichervorrichtung24 ausgeführt werden. Die Verarbeitung beginnt bei einem ersten Schritt352 , bei welchem die lokale Speichervorrichtung24 wenigstens M Sekunden vor einer Erhöhung der Sequenzzahl wartet. Bei einer hier beschriebenen Ausführungsform liegt M bei dreißig, jedoch kann M natürlich auch irgendeine andere Zahl sein. Größere Werte für M erhöhen die Datenmenge, die verloren gehen kann, wenn die Kommunikation zwischen den Speichervorrichtungen24 ,26 unterbrochen wird. Jedoch erhöhen kleinere Werte für M die Gesamtmenge des Overhead auf Grund einer häufigeren Inkrementierung der Sequenzzahl. - Auf den Schritt
352 folgt ein Testschritt354 , bei dem bestimmt wird, ob alle die HAs der lokalen Speichervorrichtung24 ein Bit gesetzt haben, welches anzeigt, dass die HAs alle die Ein-/Ausgaben [I/Os] für eine frühere Sequenzzahl vollendet haben. Wenn sich die Sequenzzahl ändert, stellt jeder der HAs die Änderung fest und setzt ein Bit, welches anzeigt, dass alle Ein-/Ausgaben der früheren Sequenzzahl vollendet worden sind. Wenn sich beispielsweise die Sequenzzahl vonN-1 nach N ändert, setzt ein HA das Bit, wenn der HA alle Ein-/Ausgaben für die SequenzzahlN-1 vollendet hat. Es sei darauf hingewiesen, dass in einigen Fällen eine einzelne Ein-/Ausgabe für einen HA eine lange Zeit benötigen kann und sich noch im Ablauf befindet, selbst nachdem sich die Sequenzzahl geändert hat. Es sei auch hervorgehoben, dass für einige Systeme ein anderer Mechanismus verwendet werden kann, um zu bestimmen, ob alle HAs ihreN-1 Ein-/Ausgaben vollendet haben. Der abweichende Mechanismus kann Prüfvorrichtungstabellen in dem Speicher37 enthalten. - Wenn bei dem Testschritt
354 bestimmt wird, dass die Ein-/Ausgaben von der früheren Sequenzzahl vollendet wurden, geht die Steuerung von dem Schritt354 zu einem Testschritt356 über, bei dem bestimmt wird, ob die inaktive Liste der Listen74 ,76 leer ist. Es sei darauf hingewiesen, dass eine Sequenzzahlumschaltung nicht ausgeführt werden kann, wenn nicht und bis alle die Daten entsprechend der inaktiven der Listen74 ,76 von der logischen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung des RDF-Protokolls vollständig übertragen wurden. Sobald die inaktive Liste der Listen74 ,76 als leer bestimmt worden ist, geht die Steuerung von dem Schritt356 zu einem Schritt358 über, bei welchem eine Festschreibung für die frühere Sequenzzahl von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 gesendet wird. Wie oben erläutert worden ist, veranlasst der Empfang einer Festschreibungsnachricht für eine bestimmte Sequenzzahl durch die entfernt gelegene Speichervorrichtung26 die entfernt gelegene Speichervorrichtung26 dazu, damit zu beginnen, die Daten entsprechend der Sequenzzahl wiederherzustellen. - Auf den Schritt
358 folgt ein Schritt362 , bei dem das Kopieren der Daten für die inaktive Liste von den Listen74 ,76 ausgesetzt wird. Wie hier an anderer Stelle erläutert werden wird, wird die inaktive Liste von den Listen abgetastet, um entsprechende Daten von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 zu senden. Es nützlich, das Kopieren der Daten solange auszusetzen, bis die Sequenzzahlumschaltung vollendet ist. Bei einer hier beschriebenen Ausführungsform wird das Aussetzen dadurch erzeugt, dass eine Nachricht zu den RAs30a -30c gesendet wird. Es kann jedoch von Fachleuten ohne weiteres erkannt werden, dass bei Ausführungsformen, die andere Komponenten zum Vereinfachen des Sendevorgangs von Daten unter Benutzung des hier beschriebenen Systems verwenden, das Aussetzen des Kopiervorgangs dadurch realisiert werden kann, dass geeignete Nachrichten/Befehle zu den anderen Komponenten gesendet werden. - Auf den Schritt
362 folgt ein Schritt364 , bei dem die Sequenzzahl inkrementiert wird. Auf den Schritt364 folgt ein Schritt366 , bei dem die Bits für die HAs, die bei dem Testschritt354 verwendet wurden, alle gelöscht werden, so dass die Bits erneut in Verbindung mit dem Inkrementiervorgang der Sequenzzahl gesetzt werden können. Auf den Schritt366 folgt ein Testschritt372 , bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung26 die Festschreibungsnachricht, die bei dem Schritt358 gesendet wurde, bestätigt hat. Das Bestätigen der Festschreibungsnachricht wurde weiter oben in Verbindung mit8 erläutert. Wenn einmal bestimmt worden ist, dass die entfernt gelegene Speichervorrichtung26 die Festschreibungsnachricht bestätigt hat, die bei dem Schritt385 ausgesendet wurde, geht die Steuerung von dem Schritt372 zu einem Schritt374 über, bei welchem das Aussetzen des Kopiervorgangs, was bei dem Schritt362 erzeugt wurde, gelöscht wird, so dass der Kopiervorgang wieder aufgenommen werden kann. Nach dem Schritt374 ist die Verarbeitung vollendet. Es sei darauf hingewiesen, dass es möglich ist, von dem Schritt374 zurück zu dem Schritt352 zu gelangen, um einen neuen Zyklus zu beginnen, um kontinuierlich die Sequenzzahl zu inkrementieren. - Es ist auch möglich, COVDs an der
R1 -Vorrichtung zum Sammeln von Zeilen zu verwenden, die aktiven Daten und inaktiven Datenpaketen zugeordnet sind. In diesem Fall kann genauso wie bei derR2 -Vorrichtung eine COVD der inaktiven Sequenzzahl zugeordnet werden und eine andere COVD kann der aktiven Sequenzzahl zugeordnet werden. Dies wird noch weiter unten beschrieben. - Gemäß
11 veranschaulicht ein Diagramm400 Elemente, die zum Konstruieren und Unterhalten von Datenpaketen [chunks]52 ,54 verwendet werden. Eine logische Standardvorrichtung402 enthält Daten, die durch den Host22 geschrieben wurden, und entspricht dem Datenelement51 von2 und den Platten33a -33c von1 . Die logische Standardvorrichtung402 enthält Daten, die durch den Host22 zu der lokalen Speichervorrichtung24 geschrieben wurden. - Es werden zwei virtuelle Nur-Cache-Vorrichtungen
404 ,406 in Verbindung mit der logischen Standardvorrichtung402 verwendet. Die virtuellen Nur-Cache-Vorrichtungen404 ,406 bzw. die entsprechenden Vorrichtungstabellen können beispielsweise in dem Speicher37 der lokalen Speichervorrichtung24 gespeichert werden. Jeder Spureintrag der Tabellen von jeder der virtuellen Nur-Cache-Vorrichtungen404 ,406 zeigt auf entweder eine Spur der logischen Standardvorrichtung402 oder zeigt auf eine Zeile eines Cachespeichers408 , der in Verbindung mit der logischen Speichervorrichtung24 verwendet wird. Bei einigen Ausführungsformen kann der Cachespeicher408 in dem Speicher37 der lokalen Speichervorrichtung24 vorgesehen sein. - Der Cachespeicher
408 enthält eine Vielzahl an Cachezeilen412 -414 , die in Verbindung mit Schreibeinträgen auf die logische Standardvorrichtung402 verwendet werden können, und die gleichzeitig in Verbindung mit den virtuellen Nur-Cache-Vorrichtungen404 ,406 verwendet werden können. Bei einer hier beschriebenen Ausführungsform enthält jeder Spurtabelleneintrag der virtuellen Nur-Cache-Vorrichtungen404 ,406 eine Null, um auf eine entsprechende Spur der logischen Standardvorrichtung402 zu zeigen. Ansonsten enthält ein Eintrag in der Spurtabelle für jede der virtuellen Nur-Cache-Vorrichtungen404 ,406 einen Zeiger zu einer der Zeilen412 -414 in dem Cachespeicher408 . - Jede der virtuellen Nur-Cache-Vorrichtungen
404 ,406 kann für eines der Datenpakete52 ,54 verwendet werden, so dass beispielsweise die virtuelle Nur-Cache-Vorrichtung404 dem Datenpaket52 für die Sequenzzahl N entsprechen kann, während die virtuelle Nur-Cache-Vorrichtung406 dem Datenpaket54 für die SequenzzahlN-1 entsprechen kann. Wenn somit Daten durch den Host22 zu der lokalen Speichervorrichtung24 geschrieben werden, werden die Daten zu dem Cachespeicher408 geliefert und ein geeigneter Zeiger der virtuellen Nur-Cache-Vorrichtung404 wird eingestellt. Es sei darauf hingewiesen, dass die Daten aus dem Cachespeicher408 solange nicht entfernt werden, bis die Daten zu der logischen Standardvorrichtung402 ausgelesen worden sind und die Daten ebenfalls durch die virtuelle Nur-Cache-Vorrichtung404 freigegeben werden, wie hier an anderer Stelle beschrieben wird. - Bei einer hier beschriebenen Ausführungsform wird eine der virtuellen Nur-Cache-Vorrichtungen
404 ,406 als „aktiv“ betrachtet, während die andere Vorrichtung als „inaktiv“ betrachtet wird. Wenn somit beispielsweise die Sequenzzahl N geradzahlig ist, kann die virtuelle Nur-Cache-Vorrichtung404 die aktive sein, während die virtuelle Nur-Cache-Vorrichtung406 die inaktive ist. Die aktive Cachevorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 handhabt Schreibeinträge von dem Host22 , während die inaktive Cachevorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 den Daten entspricht, die von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen werden. - Während die Daten, die durch den Host
22 geschrieben werden, gesammelt werden, und zwar unter Verwendung der aktiven Cachevorrichtung von den virtuellen Cachevorrichtungen404 ,406 (für die Sequenzzahl N), werden die Daten entsprechend der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 (für die frühere SequenzzahlN-1 ) von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen. Für diese und damit in Beziehung stehende Ausführungsformen handhaben die DAs35a -35c der lokalen Speichervorrichtung den Abtastvorgang der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 , um Kopieranfragen zu einer oder zu mehreren der RAs30a -30c zu senden, um die Daten von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 zu senden. Somit können die Schritte362 ,374 , die oben in Verbindung mit dem Aussetzen und Wiederaufnehmen des Kopiervorganges erläutert wurden, auch das Liefern von Nachrichten/Befehlen zu den DAs35a -35c enthalten. - Nachdem die Daten einmal zu der entfernt gelegenen Speichervorrichtung
26 übertragen worden sind, kann der entsprechende Eintrag in der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 auf Null gesetzt werden. Zusätzlich können auch Daten von dem Cachespeicher408 entfernt werden (das heißt die Zeile wird zu dem Pool an Zeilen für spätere Verwendung zurückgeführt), wenn die Daten in der Zeile nicht anderweitig für einen anderen Zweck benötigt werden (z. B. zum Auslesen zu der logischen Standardvorrichtung402 hin). Es kann ein Mechanismus verwendet werden, um sicherzustellen, dass die Daten nicht aus dem Cachespeicher408 entfernt werden, bis alle Spiegelungen (inklusive den virtuellen Nur-Cache-Vorrichtungen404 ,406 ) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in demUS-Patent Nr. 5,537,568 , ausgegeben am 16. Juli 1996, und in demUS-Patent Nr. 6,594,742 , ausgegeben am 15. Juli 2003, beschrieben, die beide hier unter Bezugnahme mit einbezogen werden. - Gemäß
12 veranschaulicht ein Flussdiagramm440 die Schritte, die durch den HA28 in Verbindung mit der Durchführung einer Schreiboperation durch den Host22 ausgeführt werden, und zwar für Ausführungsformen, bei denen zwei COVDs durch dieR1 -Vorrichtung verwendet werden, um das hier beschriebene System zu bilden. Die Verarbeitung beginnt bei einem ersten Schritt442 , bei welchem eine Zeile entsprechend dem Schreibeintrag gesperrt wird. Bei einer hier beschriebenen Ausführungsform entspricht jede der Zeilen412 ,414 des Cachespeichers408 einer Datenspur auf der logischen Standardvorrichtung402 . Das Sperren der Zeile bei dem Schritt442 verhindert den Ablauf zusätzlicher Verarbeitungen auf der betroffenen Zeile während der durch den HA28 ausgeführten Verarbeitung entsprechend den Schritten des Flussdiagramms440 . - Auf den Schritt
442 folgt ein Schritt444 , bei dem ein Wert von N, also der Sequenzzahl, gesetzt wird. Genauso wie bei der Ausführungsform, welche die Listen verwendet anstelle der COVDs auf derR1 -Seite, wird der Wert für die Sequenzzahl, die bei dem Schritt444 erhalten wird, während der gesamten Schreiboperation beibehalten, die durch die HA28 ausgeführt wird, während die Zeile gesperrt ist. Wie hier an anderer Stelle erläutert wird, wird die Sequenzzahl jedem Schreibeintrag zugeordnet, um eines der Datenpakete52 ,54 zu setzen, zu dem der Schreibeinträge gehört. Schreibeinträge, die durch den Host22 ausgeführt werden, werden der momentanen Sequenzzahl zugeordnet. Es ist nützlich, dass eine einzelne Schreiboperation die gleiche Sequenzzahl durchgehend beibehält. - Auf den Schritt
444 folgt ein Testschritt446 , bei dem bestimmt wird, ob die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 bereits auf die Zeile zeigt, die bei dem Schritt442 gesperrt wurde (die Zeile, die bearbeitet wird). Dies kann auftreten, wenn ein Schreibeintrag zu der gleichen Zeile geliefert wurde, als die Sequenzzahl um eins niedriger als die momentane Sequenzzahl war. Die Daten entsprechend dem Schreibeintrag für die frühere Sequenzzahl sind möglicherweise noch nicht zu der entfernt gelegenen Speichervorrichtung26 übertragen worden. - Wenn bei dem Testschritt
446 wird bestimmt, dass die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 nicht auf die Zeile zeigt, geht die Steuerung von dem Testschritt446 zu einem anderen Testschritt448 über, bei welchem bestimmt wird, ob die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 auf die Zeile zeigt. Es ist für die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 möglich, auf die Zeile zu zeigen, wenn ein früherer Schreibeintrag zu der Zeile vorhanden war, während die Sequenzzahl die gleiche war, wie die momentane Sequenzzahl. Wenn bei dem Testschritt448 bestimmt wird, dass die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 nicht auf die Zeile zeigt, dann geht die Steuerung von dem Testschritt448 zu einem Schritt452 über, bei welchem eine neue Zeile für die Daten erhalten wird. Auf den Schritt452 folgt ein Schritt454 , bei welchem die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 dazu gebracht wird, auf die Zeile zu zeigen. - Auf den Schritt
454 oder auf den Schritt448 , wenn die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 auf die Zeile zeigt, folgt ein Schritt456 , bei welchem Flags gesetzt werden. Bei dem Schritt456 wird das RDF_WP-Fiag (das RDF-Anstehender-Schreibvorgang-Flag) gesetzt, um anzuzeigen, dass die Zeile zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung von RDF übertragen werden muss. Zusätzlich wird bei dem Schritt456 das IN_CACHE-Flag gesetzt, um anzuzeigen, dass die Zeile zu der logischen Standardvorrichtung402 ausgelesen werden muss. Es sei darauf hingewiesen, dass in einigen Fällen dann, wenn die aktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 bereits auf die Zeile zeigt (wie bei dem Schritt448 bestimmt wird), es möglich ist, dass die RDF_WP- und IN_CACHE-Flags bereits gesetzt worden sind, und zwar vor der Ausführung des Schrittes456 . Jedoch stellt das Setzen der Flags bei dem Schritt456 sicher, dass die Flags in richtiger Weise gesetzt werden, und zwar ungeachtet davon, wie der früherer Zustand war. - Auf den Schritt
456 folgt ein Schritt458 , bei dem ein indirektes Flag in der Spurtabelle, welches auf die Zeile zeigt, gelöscht wird, wodurch angezeigt wird, dass die relevanten Daten in der Zeile vorgesehen sind und nicht in einer verschiedenen Zeile, auf die indirekt gezeigt wird. Auf den Schritt458 folgt ein Schritt462 , bei dem die durch den Host22 und den HA28 geschriebenen Daten in die Zeile geschrieben werden. Auf den Schritt462 folgt ein Schritt464 , bei dem die Zeile entsperrt wird. Nach dem Schritt464 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
446 bestimmt wird, dass die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 auf die Zeile zeigt, dann geht die Steuerung von dem Schritt446 zu einem Schritt472 über, bei welchem eine neue Zeile erhalten wird. Die neue Zeile, die bei dem Schritt472 erhalten wird, kann für die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 verwendet werden, um die RDF-Übertragung zu bewirken, während die alte Zeile der aktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 zugeordnet werden kann, wie weiter unten noch beschrieben wird. - Auf den Schritt
472 folgt ein Schritt474 , bei dem die Daten von der alten Zeile zu der neuen Zeile kopiert werden, die bei dem Schritt472 erhalten wurde. Auf den Schritt474 folgt ein Schritt476 , bei dem das indirekte Flag (weiter oben erläutert) gesetzt wird, um anzuzeigen, dass der Spurtabelleneintrag für die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 auf die alte Zeile zeigt, dass jedoch Daten in der neuen Zeile vorhanden sind, auf die durch die alte Zeile gezeigt wird. Somit beeinflusst das Setzen des indirekten Flags bei dem Schritt476 die Spurtabelle der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 , um zu bewirken, dass der Spurtabelleneintrag anzeigt, dass die Daten in der neuen Zeile vorhanden sind. - Auf den Schritt
476 folgt ein Schritt478 , bei dem Spiegelungsbits für die Aufzeichnungen in der neuen Zeile gesetzt werden. Sämtliche lokalen Spiegelungsbits, die kopiert wurden, wenn die Daten von der alten Zeile zu der neuen Zeile bei dem Schritt474 kopiert wurden, werden gelöscht, da der Zweck der neuen Zeile darin besteht, lediglich die RDF-Übertragung für die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen zu bewirken. Die alte Zeile wird zur Handhabung von beliebigen lokalen Spiegelungen verwendet. Auf den Schritt478 folgt ein Schritt462 , bei dem die Daten zu der Zeile geschrieben werden. Auf den Schritt462 folgt ein Schritt464 , bei welchem die Zeile entsperrt wird. Nach dem Schritt464 ist die Verarbeitung vollendet. - Gemäß
13 veranschaulicht ein Flussdiagramm500 Schritte, die in Verbindung mit der Übertragung des Datenpakets54 zu der entfernt gelegenen Speichervorrichtung26 durch die lokale Speichervorrichtung24 durchgeführt werden. Die Übertragung involviert im Wesentlichen das Abtasten der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 hinsichtlich Spuren, die auf diese geschrieben wurden, und zwar während einer früheren Iteration, als die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 aktiv war. Bei dieser Ausführungsform tasten die DAs35a -35c der lokalen Speichervorrichtung24 die inaktive Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 ab, um die Daten für die Übertragung zu der entfernt gelegenen Speichervorrichtung26 durch einen oder mehrere RAs30a -30c unter Verwendung des RDF-Protokolls zu kopieren. - Die Verarbeitung beginnt bei einem ersten Schritt
502 , bei dem auf die erste Spur der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 gezeigt wird, um den Prozess der Iteration durch all die Spuren hindurch zu beginnen. Auf den ersten Schritt502 folgt ein Testschritt504 , bei dem bestimmt wird, ob das RDF_WP-Flag gesetzt ist. Wie hier an anderer Stelle erläutert wird, wird das RDF_WP-Flag dazu verwendet, um anzuzeigen, dass eine Zeile (Spur) Daten enthält, die über dieRDF -Verbindung übertragen werden müssen. Das RDF_WP-Flag zeigt im gesetzten Zustand an, dass wenigstens einige Daten für die Zeile (Spur) unter Verwendung vonRDF zu übertragen sind. Bei einer hier beschriebenen Ausführungsform wird nicht die gesamte Zeile übertragen. Vielmehr werden lediglich Aufzeichnungen innerhalb der Zeile, bei denen die entsprechenden Spiegelungsbits gesetzt sind (was anzeigt, dass die Aufzeichnungen geändert wurden), zu der entfernt gelegenen Speichervorrichtung26 übertragen. Jedoch kann es bei anderen Ausführungsformen möglich sein, die gesamte Zeile zu übertragen, unter der Voraussetzung, dass die entfernt gelegene Speichervorrichtung26 lediglich Daten entsprechend den Aufzeichnungen schreibt, bei denen die entsprechenden Spiegelungsbits gesetzt sind, und andere Daten für die Spur ignoriert, die gültig oder auch nicht gültig sein können. - Wenn bei dem Testschritt
504 bestimmt wird, dass bei der Cachezeile, die bearbeitet wird, das RDF_WP-Flag gesetzt ist, geht die Steuerung von dem Schritt504 zu einem Testschritt505 über, bei dem bestimmt wird, ob die Zeile Daten enthält oder ob die Zeile eine indirekte Zeile ist, die auf eine andere Zeile zeigt, welche die relevanten Daten enthält. In einigen Fällen kann eine Zeile die Daten für den Abschnitt der Platte nicht enthalten, welcher der Zeile entspricht. Stattdessen kann die Zeile eine indirekte Zeile sein, die auf eine andere Zeile zeigt, welche die Daten enthält. Wenn bei dem Schritt505 bestimmt wird, dass die Zeile eine indirekte Zeile ist, geht die Steuerung von dem Schritt505 auf einen Schritt506 über, bei dem die Daten (von der Zeile, auf die durch die indirekte Zeile gezeigt wird) erhalten werden. Wenn die Zeile eine direkte Zeile ist, werden folglich die durch RDF zu sendenden Daten in der Zeile gespeichert, wogegen dann, wenn die Zeile eine indirekte Zeile ist, die durch RDF zu sendenden Daten in einer anderen Zeile vorhanden sind, auf die durch die indirekte Zeile gezeigt wird. - Auf den Schritt
506 oder den Schritt505 , wenn die Zeile eine direkte Zeile ist, folgt ein Schritt507 , bei dem Daten, die gesendet werden (direkt oder indirekt von der Zeile), durch eine der DAs35a -35c kopiert werden, um von der lokalen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung des RDF-Protokolls gesendet zu werden. Auf den Schritt507 folgt ein Testschritt508 , bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung26 den Empfang der Daten bestätigt hat. Wenn dies nicht der Fall ist, geht die Steuerung von dem Schritt508 zurück zu dem Schritt507 , um die Daten erneut zu senden. Bei anderen Ausführungsformen kann eine abweichende und mehr involvierte Verarbeitung verwendet werden, um Daten zu senden und den Empfang derselben zu bestätigen. Solch eine Verarbeitung kann das Berichten von Fehlern enthalten und eine alternative Verarbeitung, die durchgeführt wird, nachdem eine bestimmte Zahl an Versuchen zum Senden der Daten fehlgeschlagen sind. - Nachdem bei dem Testschritt
508 festgestellt worden ist, dass die Daten erfolgreich gesendet worden sind, geht die Steuerung von dem Schritt508 zu einem Schritt512 über, um das RDF_WP-Flag zu löschen (da die Daten erfolgreich über RDF gesendet worden sind). Auf den Schritt512 folgt ein Schritt514 , bei dem geeignete Spiegelungsflags gelöscht werden, um anzuzeigen, dass wenigstens die RDF-Spiegelung (R2 ) nicht länger die Daten benötigt. Bei einer hier beschriebenen Ausführungsform besitzt jede Aufzeichnung, die Teil einer Zeile (Spur) ist, individuelle Spiegelungsflags, die angeben, welche Spiegelungen die bestimmte Aufzeichnung verwenden. DieR2 -Vorrichtung ist eine der Spiegelungen für jede der Aufzeichnungen und es sind die Flags entsprechend derR2 -Vorrichtung, die bei dem Schritt514 gelöscht werden. - Auf den Schritt
514 folgt ein Testschritt516 ausgeführt, bei dem bestimmt wird, ob irgendwelche Aufzeichnungen der Spur, die verarbeitet werden, irgendwelche gesetzten anderen Spiegelungsflags aufweisen (für andere Spiegelungsvorrichtungen). Wenn dies nicht der Fall ist, geht die Steuerung von dem Schritt516 zu einem Schritt518 über, bei dem die Zeile freigegeben wird (das heißt nicht länger verwendet wird). Bei einigen Ausführungsformen werden unverwendete Zeilen in einem Pool von Zeilen aufbewahrt, die für eine Verwendung verfügbar sind. Es sei darauf hingewiesen, dass dann, wenn zusätzliche Flags für einige der Aufzeichnungen der Zeile weiterhin gesetzt sind, dies bedeuten kann, dass die Aufzeichnungen zu der logischen Standardvorrichtung402 hin ausgelesen werden müssen oder durch eine andere Spiegelungsvorrichtung verwendet werden (inklusive einer anderenR2 -Vorrichtung). Auf den Schritt518 oder auf den Schritt516 , wenn mehr Spiegelungflags vorhanden sind, folgt ein Schritt522 , bei dem der Zeiger, der dazu verwendet wird, um durch jeden Spureintrag der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 hindurch zu iterieren, dazu gebracht wird, auf die nächste Spur zu zeigen. Auf den Schritt522 folgt ein Testschritt524 , bei dem bestimmt wird, ob mehr Spuren der inaktiven Vorrichtung der virtuellen Nur-Cache-Vorrichtungen404 ,406 vorhanden sind, die zu verarbeiten sind. Wenn dies nicht der Fall ist, ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung zurück zu dem Testschritt504 über, der oben erläutert wurde. Es sei erwähnt, dass der Schritt522 auch von dem Testschritt504 aus erreicht wird, wenn bestimmt wird, dass das RDF_WP-Fiag nicht für die in Bearbeitung befindliche Spur gesetzt ist. - Gemäß
14 veranschaulicht ein Diagramm700 einen Host702 , der an eine Vielzahl an lokalen Speichervorrichtungen703 -705 gekoppelt ist. Das Diagramm700 zeigt auch eine Vielzahl an entfernt gelegenen Speichervorrichtungen706 -708 . Obwohl lediglich drei lokale Speichervorrichtungen703 -705 und drei entfernt gelegene Speichervorrichtungen706 -708 in dem Diagramm700 gezeigt ist, kann das hier beschriebene System auch auf die Verwendung einer beliebigen Zahl von lokalen und entfernt gelegenen Speichervorrichtungen erweitert werden. - Jede der lokalen Speichervorrichtungen
703 -705 ist an eine entsprechende der entfernt gelegenen Speichervorrichtungen706 -708 gekoppelt, so dass beispielsweise die lokale Speichervorrichtung703 an die entfernt gelegene Speichervorrichtung706 gekoppelt ist, die lokale Speichervorrichtung704 an die entfernt gelegene Speichervorrichtung707 gekoppelt ist und die lokale Speichervorrichtung705 an die entfernt gelegene Speichervorrichtung708 gekoppelt ist. Die lokalen Speichervorrichtungen703 -705 und die entfernt gelegenen Speichervorrichtungen706 -708 können unter Verwendung von geordneten Schreibmechanismen gekoppelt sein, die hier beschrieben werden, so dass beispielsweise die lokale Speichervorrichtung703 an die entfernt gelegene Speichervorrichtung706 unter Verwendung des geordneten Schreibmechanismus [ordered writes mechanism] gekoppelt sein kann. Wie hier an anderer Stelle erläutert wird, erlaubt der geordnete Schreibmechanismus die Datenwiederherstellung unter Verwendung der entfernt gelegenen Speichervorrichtung in Fällen bei denen die lokale Speichervorrichtung und/oder der Host mit der Arbeit anhält und/oder Daten verliert. - In einigen Fällen kann der Host
702 eine einzelne Anwendung ausführen, die gleichzeitig mehr als eine der lokalen Speichervorrichtungen703 -705 verwendet. In einem solchen Fall kann die Anwendung so konfiguriert sein, dass sichergestellt wird, dass die Anwendungsdaten an den lokalen Speichervorrichtungen703 -705 konsistent (wiederherstellbar) sind, wenn der Host702 zu einem beliebigen Zeitpunkt die Arbeit einstellen sollte und/oder wenn eine der lokalen Speichervorrichtungen703 -705 ausfallen sollte. Da jedoch jede der geordneten Schreibverbindungen zwischen den lokalen Speichervorrichtungen703 -705 und den entfernt gelegenen Speichervorrichtungen706 -708 zu den anderen Verbindungen asynchron sind, gibt es keine Gewähr dafür, dass Daten für die Anwendung an den entfernt gelegenen Speichervorrichtungen706 -708 konsistent bleiben (und somit wiederherstellbar). Das heißt, obwohl beispielsweise die Datenverbindung zwischen der lokalen Speichervorrichtung703 und der entfernt gelegenen Speichervorrichtung706 (einem ersten Lokal-/Fernpaar) konsistent ist und die Datenverbindung zwischen der lokalen Speichervorrichtung704 und der entfernt gelegenen Speichervorrichtung707 (einem zweiten Lokal-/Fernpaar) konsistent ist, ist es nicht notwendigerweise der Fall, dass die Daten an den entfernt gelegenen Speichervorrichtungen706 ,707 immer konsistent sind, wenn keine Synchronisation zwischen dem ersten und dem zweiten Lokal-/Fernpaar erfolgt. - Für Anwendungen an dem Host
702 , die gleichzeitig eine Vielzahl der lokalen Speichervorrichtungen703 -705 verwenden, ist es wünschenswert, dass die Daten an den entfernt gelegenen Speichervorrichtungen706 -708 konsistent und wiederherstellbar sind. Dies kann mit Hilfe eines Mechanismus realisiert werden, bei dem der Host702 den Zyklusschaltvorgang an jeder der lokalen Speichervorrichtungen703 ,705 steuert, so dass die Daten von der auf dem Host702 ablaufenden Anwendung an den entfernt gelegenen Speichervorrichtungen706 -708 konsistent und wiederherstellbar sind. Diese Funktionsfähigkeit wird durch eine spezielle Anwendung realisiert, die auf dem Host702 abläuft und die eine Vielzahl der lokalen Speichervorrichtungen703 -705 in einem Multiboxmodus schaltet, was detaillierter weiter unten beschrieben wird. - Gemäß
15 besitzt eine Tabelle 730 eine Vielzahl an Einträgen732 -734 . Jeder der Einträge732 -734 entspricht einem einzelnen Lokal-/ Fernpaar der Speichervorrichtungen, so dass beispielsweise der Eintrag732 dem Paar der lokalen Speichervorrichtung703 und der entfernt gelegenen Speichervorrichtung706 entspricht, der Eintrag733 dem Paar der lokalen Speichervorrichtung704 und der entfernt gelegenen Speichervorrichtung707 entspricht und der Eintrag734 dem Paar der lokalen Speichervorrichtung705 und der entfernt gelegenen Speichervorrichtung708 entspricht. Jeder der Einträge732 -734 umfasst eine Vielzahl an Feldern, wobei ein erstes Feld736a -736c eine Seriennummer der entsprechenden lokalen Speichervorrichtung repräsentiert, ein zweites Feld738a -738c eine Sessionsnummer repräsentiert, die durch die Multiboxgruppe verwendet wird, ein drittes Feld742a -742c die Seriennummer der entsprechenden, entfernt gelegenen Speichervorrichtung des Lokal-/Fernpaares repräsentiert, und ein viertes Feld744a -744c eine Sessionsnummer für die Multiboxgruppe repräsentiert. Die Tabelle 730 wird durch den Host702 konstruiert und unterhalten, und zwar in Verbindung mit dem Betrieb in dem Multiboxmodus. Zusätzlich wird die Tabelle 730 zu jeder der lokalen Speichervorrichtungen und der entfernt gelegenen Speichervorrichtungen verbreitet, die Teil der Multiboxgruppe sind. Die Tabelle 730 kann dazu verwendet werden, um die Wiederherstellung zu vereinfachen, was unten detaillierter erläutert wird. - Unterschiedliche Lokal-/Fernpaare können in den Multiboxmodus eintreten und aus diesem auch austreten, und zwar unabhängig, in irgendeiner Reihenfolge und zu jedem Zeitpunkt. Der Host
702 managt den Eintritt und das Austreten der Paare aus lokaler Speichervorrichtung/entfernt gelegener Speichervorrichtung in und aus dem Multiboxmodus. Dies wird weiter unten detaillierter beschrieben. - Gemäß
16 veranschaulicht ein Flussdiagramm750 die Schritte, die durch den Host702 in Verbindung mit dem Eintreten oder Austreten eines Lokal-/Fernpaares in und aus einem Multiboxmodus ausgeführt werden. Die Verarbeitung beginnt bei einem ersten Schritt752 , bei dem der Multiboxmodusbetrieb temporär ausgesetzt wird. Das temporäre Aussetzen des Multiboxbetriebes bei dem Schritt752 ist nützlich, um die Änderungen zu vereinfachen, die in Verbindung mit dem Eintreten oder Austreten eines Fern-/Ortspaares in und aus dem Multiboxmodus ausgeführt werden. Auf den Schritt752 folgt ein Schritt754 , bei dem eine Tabelle ähnliche der Tabelle 730 von15 modifiziert wird, um entweder einen Eintrag hinzuzufügen oder weg zu lassen, wie dies zweckmäßig ist. Auf den Schritt754 folgt ein Schritt756 , bei dem die modifizierte Tabelle zu den lokalen Speichervorrichtungen und den entfernt gelegenen Speichervorrichtungen der Multiboxgruppe verbreitet wird. Das Verbreiten der Tabelle bei dem Schritt756 vereinfacht die Wiederherstellung, wie hier an anderer Stelle detaillierter erläutert wird. - Auf den Schritt
756 folgt ein Schritt758 , bei dem eine Nachricht zu der betroffenen lokalen Speichervorrichtung gesendet wird, um die Änderung vorzusehen. Die lokale Speichervorrichtung kann sich selbst konfigurieren, um in dem Multiboxmodus zu arbeiten oder auch nicht, was hier an anderer Stelle detaillierter beschrieben wird. Wie unten detaillierter erläutert wird, arbeitet eine lokale Speichervorrichtung, die geordnete Schreibeinträge handhabt, unterschiedlich, abhängig davon, ob diese als Teil einer Multiboxgruppe betrieben wird oder nicht. Wenn die lokale Speichervorrichtung zu einer Multiboxgruppe hinzugefügt wird, zeigt eine Nachricht, die bei dem Schritt758 gesendet wird, für die lokale Speichervorrichtung an, dass diese zu einer Multiboxgruppe hinzugefügt wird, so dass die lokale Speichervorrichtung sich selbst konfigurieren sollte, um in dem Multiboxmodus zu laufen. Wenn alternativ eine lokale Speichervorrichtung aus einer Multiboxgruppe entfernt wird, zeigt die bei dem Schritt758 gesendete Nachricht der lokalen Speichervorrichtung an, dass sie aus der Multiboxgruppe entfernt wird, so dass sich die lokale Speichervorrichtung selbst konfigurieren sollte, um nicht mehr in dem Multiboxmodus zu laufen. - Auf den Schritt
758 folgt ein Testschritt762 , bei dem bestimmt wird, ob ein Lokal-/Fernpaar zu der Multiboxgruppe hinzugefügt wird (im Gegensatz zu dem Entfernungsvorgang). Wenn dies der Fall ist, geht die Steuerung von dem Testschritt762 zu einem Schritt764 über, bei dem Tag-Werte zu der lokalen Speichervorrichtung gesendet werden, die hinzugefügt wird. Die Tag-Werte [tag values] werden mit den Daten geliefert, die von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung übertragen werden, und zwar in einer ähnlichen Weise wie das Liefern der Sequenznummern mit den Daten. Die Tag-Werte werden durch den Host gesteuert und werden gesetzt, so dass all die Lokal-/Fernpaare während des gleichen Zyklus Daten senden, welche den gleichen Tag-Wert haben. Die Verwendung der Tag-Werte wird unten detaillierter erläutert. Auf den Schritt764 oder auf den Schritt762 , falls ein neues Lokal-/Fernpaar nicht hinzugefügt wird, folgt ein Schritt766 , bei dem der Multiboxbetrieb wieder aufgenommen wird. Nach dem Schritt766 ist die Verarbeitung vollendet. - Gemäß
17 veranschaulicht ein Flussdiagramm780 Schritte, die in Verbindung mit dem durch den Host verwalteten Zyklusschaltvorgang ausgeführt werden, und zwar für mehrere Lokal-/Fernpaare, die als eine Gruppe in dem Multiboxmodus laufen. Wie hier an anderer Stelle erläutert wird, involviert der Multiboxmodus, dass der Host die Zyklusschaltvorgänge für mehr als ein Fern-/Lokalpaar synchronisiert, um die Datenkonsistenz unter den entfernt gelegenen Speichervorrichtungen aufrecht zu erhalten. Der Zyklusschaltvorgang wird durch den Host koordiniert, anstatt intern durch die lokalen Speichervorrichtungen generiert zu werden. Dies wird unten detaillierter erläutert. - Die Verarbeitung auf der Grundlage des Flussdiagramms
780 beginnt bei einem Testschritt782 , bei dem bestimmt wird, ob M Sekunden verstrichen sind. Genauso wie bei dem Nicht-Multiboxbetrieb, erfolgen Zyklusschaltvorgänge nicht eher als alle M Sekunden, wobei M eine Zahl ist, die zum Optimieren verschiedener Performanceparameter ausgewählt wird. Wenn die Zahl M erhöht wird, nimmt die Menge an Overhead, die mit dem Schaltvorgang assoziiert ist, ab. Ein Anheben von M bewirkt jedoch auch, dass die Menge an Daten, die potenziell in Verbindung mit einem Ausfall verloren gehen kann, zunimmt. Bei einer hier beschriebenen Ausführungsform wird M so gewählt, dass es 30 Sekunden beträgt, obwohl offensichtlich andere Werte für M ebenfalls verwendet werden können. - Wenn bei dem Testschritt
782 bestimmt wird, dass M Sekunden noch nicht verstrichen sind, geht die Steuerung zurück zu dem Schritt782 , um das Warten bis zum Verstreichen der M Sekunden fortzusetzen. Sobald bei dem Testschritt782 bestimmt worden ist, dass M Sekunden verstrichen sind, geht die Steuerung von dem Schritt782 zu einem Schritt784 über, bei dem der Host bei allen lokalen Speichervorrichtungen in der Multiboxgruppe abfragt, um festzustellen, ob alle Lokal-/Fernpaare für das Umschalten bereit sind. Das Bereitsein der Lokal-/Fernpaare für das Umschalten wird weiter unten detaillierter erläutert. - Auf den Schritt
784 folgt ein Testschritt786 , bei dem bestimmt wird, ob alle die Lokal-/Fernpaare für das Umschalten bereit sind. Wenn dies nicht der Fall ist, geht die Steuerung zurück zu dem Schritt784 , um die Abfrage wieder aufzunehmen. Bei einer hier beschriebenen Ausführungsform ist es lediglich erforderlich, die Lokal-/Fernpaare abzufragen, die zuvor noch nicht zum Umschalten bereit waren, da ein Lokal-/Fernpaar, wenn es einmal zum Umschalten bereit ist, dieses Paar so bleibt, bis der Schaltvorgang dann auftritt. - Sobald bei dem Testschritt
786 bestimmt worden ist, dass all die Lokal-/Fernpaare in der Multiboxgruppe zum Umschalten bereit sind, geht die Steuerung von dem Schritt786 zu einem Schritt788 über, bei dem eine Indexvariable N gleich Eins gesetzt wird. Die Indexvariable N wird dazu verwendet, durch all die Lokal-/Fernpaare hindurch zu iterieren (das heißt durch alle die Einträge732 -734 der Tabelle 730 von15 ). Auf den Schritt788 folgt ein Testschritt792 , bei dem bestimmt wird, ob die Indexvariable N größer ist als die Zahl der Lokal-/Fernpaare in der Multiboxgruppe. Wenn dies nicht der Fall ist, geht die Steuerung von dem Schritt792 auf einen Schritt794 über, bei dem ein offenes Fenster für die N-te lokale Speichervorrichtung des N-ten Paares durch den Host realisiert wird, der einen Befehl zu der N-ten lokalen Speichervorrichtung sendet (z.B. einen geeigneten Systembefehl). Das Öffnen des Fensters für die N-te lokale Speichervorrichtung bei dem Schritt794 bewirkt, dass die N-te lokale Speichervorrichtung die Schreibvorgänge aussetzt, so dass jeglicher Schreibvorgang durch einen Host, der nicht vor dem Öffnen des Fensters bei dem Schritt794 begonnen wurde, nicht vollendet wird, bis das Fenster geschlossen wird (weiter unten beschrieben). Das Nicht-Vollenden einer Schreiboperation verhindert das Auftreten eines zweiten abhängigen Schreibvorgangs vor der Vollendung des Zyklusschaltvorganges. Jegliche ablaufenden Schreibvorgänge, die vor dem Öffnen des Fensters begonnen wurden, können vor dem Schließen des Fensters vollendet werden. - Auf den Schritt
794 folgt ein Schritt796 , bei dem ein Zyklusschaltvorgang für die N-te lokale Speichervorrichtung ausgeführt wird. Das Ausführen des Zyklusschaltvorganges bei dem Schritt796 involviert das Senden eines Befehls von dem Host702 zu der N-ten lokalen Speichervorrichtung. Die Verarbeitung des Befehls von dem Host durch die N-te lokale Speichervorrichtung wird weiter unten detaillierter erläutert. Teil der Verarbeitung, die bei dem Schritt796 durchgeführt wird, kann enthalten, dass der Host neue Werte für die Tags liefert, die den Daten zugeordnet werden. Die Tags [tags] werden detaillierter hier an anderer Stelle erläutert. Bei einer alternativen Ausführungsform können die Operationen, die bei den Schritte794 ,796 ausgeführt werden, in Form eines einzelnen integrierten Schrittes797 ausgeführt werden, was durch das Kästchen angezeigt ist, welches um die Schritte794 ,796 herum gezeichnet ist. - Auf den Schritt
796 folgt ein Schritt798 , bei welchem die Indexvariable N inkrementiert wird. Nach dem Schritt798 geht die Steuerung zurück zu dem Testschritt792 , um zu bestimmen, ob die Indexvariable N größer ist als die Zahl der Lokal-/Fernpaare. - Wenn bei dem Testschritt
792 bestimmt wird, dass die Indexvariable N größer ist als die Zahl der Lokal-/Fernpaare, geht die Steuerung von dem Testschritt792 auf einen Schritt802 über, bei welchem die Indexvariable N gleich Eins gesetzt wird. Auf Schritt802 folgt ein Testschritt804 , der bestimmt, ob die Indexvariable N größer ist als die Zahl der Lokal-/Fernpaare. Wenn dies nicht der Fall ist, geht die Steuerung von dem Schritt804 auf einen Schritt806 über, bei dem das Fenster für die N-te lokale Speichervorrichtung geschlossen wird. Das Schließen des Fensters bei dem Schritt806 wird dadurch ausgeführt, dass der Host einen Befehl zu der N-ten lokalen Speichervorrichtung sendet, um die N-te lokale Speichervorrichtung zu veranlassen, Schreiboperationen wieder aufzunehmen. Somit können jegliche ablaufenden Schreibvorgänge, die durch das Öffnen des Fensters bei dem Schritt794 ausgesetzt wurden, nun vollendet werden, und zwar nach der Ausführung des Schrittes806 . Nach dem Schritt806 geht die Steuerung zu einem Schritt808 über, bei welchem die Indexvariable N inkrementiert wird. Nach dem Schritt808 geht die Steuerung zurück zu dem Testschritt804 , um zu bestimmen, ob die Indexvariable N größer ist als die Zahl der Lokal-/Fernpaare. Wenn dies der Fall ist, geht die Steuerung von dem Testschritt804 zurück zu dem Schritt782 , um mit der Verarbeitung für den nächsten Zyklusschaltvorgang zu beginnen. - Gemäß
18 veranschaulicht ein Flussdiagramm830 Schritte, die durch eine lokale Speichervorrichtung in Verbindung mit dem Zyklusschaltvorgang ausgeführt werden. Das Flussdiagramm830 von18 ersetzt das Flussdiagramm350 von10 in Fällen, bei denen die lokale Speichervorrichtung sowohl den Multiboxmodus als auch den Nicht-Multiboxmodus unterstützt. Das heißt, das Flussdiagramm830 zeigt Schritte, die ähnlich denjenigen des Flussdiagramms350 von10 ausgeführt werden, um den Nicht-Multiboxmodus zu unterstützen, und zusätzlich sind Schritte enthalten, um den Multiboxmodus zu unterstützen. - Die Verarbeitung beginnt bei einem ersten Testschritt
832 , bei dem bestimmt wird, ob die lokale Speichervorrichtung im Multiboxmodus betrieben wird. Es sei darauf hingewiesen, dass das Flussdiagramm750 von16 den Schritt758 zeigt, bei dem der Host eine Nachricht zu der lokalen Speichervorrichtung sendet. Die bei dem Schritt758 gesendete Nachricht zeigt der lokalen Speichervorrichtung an, ob sich die lokale Speichervorrichtung in dem Multiboxmodus befindet oder nicht. Nach dem Empfang der Nachricht, die durch den Host bei dem Schritt758 gesendet wird, setzt die lokale Speichervorrichtung eine interne Variable, um anzuzeigen, ob die lokale Speichervorrichtung in dem Multiboxmodus betrieben wird oder nicht. Die interne Variable kann bei dem Testschritt832 geprüft werden. - Wenn bei dem Testschritt
832 bestimmt wird, dass die lokale Speichervorrichtung sich nicht in dem Multiboxmodus befindet, geht die Steuerung von dem Testschritt832 zu einem Schritt834 über, um M Sekunden auf den Zyklusschaltvorgang zu warten. Wenn die lokale Speichervorrichtung nicht in dem Multiboxmodus betrieben wird, steuert die lokale Speichervorrichtung ihren eigenen Zyklusschaltvorgang und führt somit den Schritt834 aus, um M Sekunden zu warten, bevor der nächste Zyklusschaltvorgang eingeleitet wird. - Auf den Schritt
834 oder auf den Schritt832 , wenn die lokale Speichervorrichtung sich in dem Multiboxmodus befindet, folgt ein Testschritt836 , bei dem bestimmt wird, ob alle die HAs der lokalen Speichervorrichtung ein Bit gesetzt haben, welches anzeigt, dass die HAs alle die Ein-/Ausgaben für eine frühere Sequenzzahl vollendet haben. Wenn sich die Sequenzzahl ändert, nimmt jede der HAs dies wahr und setzt ein Bit, welches anzeigt, dass alle Ein-/Ausgaben der früheren Sequenzzahl vollendet worden sind. Wenn sich beispielsweise die Sequenzzahl vonN-1 auf N ändert, setzt ein HA das Bit, wenn der HA alle Ein-/Ausgaben für die SequenzzahlN-1 vollendet hat. Es sei darauf hingewiesen, dass in einigen Fällen eine einzelne Ein-/Ausgabe für einen HA eine lange Zeit benötigen kann und noch ablaufen kann, selbst wenn sich die Sequenzzahl geändert hat. Es sei auch darauf hingewiesen, dass bei einigen Systemen ein unterschiedlicher Mechanismus dazu verwendet werden kann, um zu bestimmen, ob alle HAs ihreN-1 Ein-/Ausgaben vollendet haben. Der unterschiedliche Mechanismus kann das Prüfen von Vorrichtungstabellen umfassen. Sobald bei dem Testschritt836 bestimmt worden ist, dass alle HAs das geeignete Bit gesetzt haben, geht die Steuerung von dem Testschritt836 zu einem Schritt888 über, bei dem bestimmt wird, ob das inaktive Paket für die lokale Speichervorrichtung leer ist. Sobald bei dem Testschritt888 bestimmt worden ist, dass das inaktive Paket leer ist, geht die Steuerung von dem Schritt888 zu einem Schritt899 über, bei dem das Kopieren von Daten von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung ausgesetzt wird. Es ist nützlich, den Kopiervorgang von Daten auszusetzen, bis die Sequenzzahlumschaltung vollendet worden ist. - Auf den Schritt
899 folgt ein Testschritt892 , um zu bestimmen, ob die lokale Speichervorrichtung sich in dem Multiboxmodus befindet. Wenn bei dem Testschritt892 bestimmt wird, dass sich die lokale Speichervorrichtung in dem Multiboxmodus befindet, geht die Steuerung von dem Testschritt892 zu einem Testschritt894 über, um zu bestimmen, ob das aktive Paket [chunk] der entsprechenden, entfernt gelegenen Speichervorrichtung leer ist. Wie weiter unten detaillierter erläutert wird, sendet die entfernt gelegene Speichervorrichtung eine Nachricht zu der lokalen Speichervorrichtung, wenn sie einmal ihr aktives Paket geleert hat. Im Ansprechen auf die Nachricht setzt die lokale Speichervorrichtung eine interne Variable, die bei dem Testschritt894 geprüft wird. - Sobald bei dem Testschritt
894 bestimmt worden ist, dass das aktive Paket der entfernt gelegenen Speichervorrichtung leer ist, geht die Steuerung von dem Testschritt894 zu einem Schritt896 über, bei dem eine interne Variable bei einer lokalen Speichervorrichtung gesetzt wird, die anzeigt, dass die lokale Speichervorrichtung für die Zyklusumschaltung bereit ist. Wie weiter oben in Verbindung mit dem Flussdiagramm780 von17 erläutert wurde, fragt der Host jede lokalen Speichervorrichtung ab, um zu bestimmen, ob jede der lokalen Speichervorrichtungen für einen Umschaltvorgang bereit ist. Im Ansprechen auf die Anfrage, die durch den Host vorgesehen wird, überprüft die lokale Speichervorrichtung die interne Variable, die bei dem Schritt896 gesetzt wurde und schickt das Ergebnis zu dem Host zurück. - Auf den Schritt
896 folgt ein Testschritt898 , bei welchem die lokale Speichervorrichtung darauf wartet, einen Befehl von dem Host zur Durchführung des Zyklusschaltvorganges zu empfangen. Wie oben in Verbindung mit dem Flussdiagramm780 von17 erläutert worden ist, liefert der Host einen Befehl zur Zyklusumschaltung an die lokale Speichervorrichtung, wenn die lokale Speichervorrichtung in dem Multiboxmodus betrieben wird. Somit wartet die lokale Speichervorrichtung auf den Befehl bei dem Schritt898 , der lediglich dann erreicht wird, wenn die lokale Speichervorrichtung in dem Multiboxmodus betrieben wird. - Sobald die lokale Speichervorrichtung den Umschaltbefehl von dem Host einmal empfangen hat, geht die Steuerung von dem Schritt
898 auf einen Schritt902 über, um eine Festschreibungsnachricht zu der entfernt gelegenen Speichervorrichtung zu senden. Es sei erwähnt, dass der Schritt902 auch von dem Testschritt892 aus erreicht werden kann, wenn bei dem Testschritt892 bestimmt wird, dass sich die lokale Speichervorrichtung nicht in dem Multiboxmodus befindet. Bei dem Schritt902 sendet die lokale Speichervorrichtung eine Festschreibungsnachricht zu der entfernt gelegenen Speichervorrichtung. Im Ansprechen auf den Empfang einer Festschreibungsnachricht für eine bestimmte Sequenzzahl, beginnt die entfernt gelegene Speichervorrichtung mit der Wiederherstellung der Daten entsprechend der Sequenzzahl, wie dies oben erläutert wurde. - Auf den Schritt
902 folgt ein Schritt906 , bei welchem die Sequenzzahl inkrementiert wird und ein neuer Wert für das Tag [tag] (von dem Host) gespeichert wird. Die Sequenzzahl ist so beschaffen, wie dies oben dargelegt wurde. Das Tag ist das Tag, welches an die lokale Speichervorrichtung bei dem Schritt764 und bei dem Schritt796 geliefert wird, wie dies oben erläutert wurde. Das Tag wird dazu verwendet, die Wiederherstellung von Daten zu vereinfachen, wie dies hier an anderer Stelle erläutert wurde. - Auf den Schritt
906 folgt ein Schritt907 , bei dem die Vollendung des Zyklusschaltvorganges von der lokalen Speichervorrichtung an den Host bestätigt wird, indem eine Nachricht von der lokalen Speichervorrichtung zu dem Host gesendet wird. Bei einigen Ausführungsformen ist es möglich, den Schritt907 bedingt auszuführen, abhängig davon, ob die lokale Speichervorrichtung im Multiboxmodus ist oder nicht, da dann, wenn die lokale Speichervorrichtung nicht im Multiboxmodus ist, der Host nicht notwendigerweise daran interessiert ist, wann Zyklusschaltvorgänge auftreten. - Auf den Schritt
907 folgt ein Schritt908 , bei dem die Bits für die HAs, die bei dem Testschritt836 verwendet werden, alle gelöscht werden, so dass die Bits erneut in Verbindung mit einer Inkrementierung der Sequenzzahl gesetzt werden können. Auf den Schritt908 folgt ein Testschritt912 , bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung die Festschreibungsnachricht bestätigt hat. Es sei darauf hingewiesen, dass dann, wenn das Lokal-/Fernpaar im Multiboxmodus betrieben wird und das aktive Paket der entfernt gelegenen Speichervorrichtung bei dem Schritt894 als leer bestimmt wurde, dann die entfernt gelegene Speichervorrichtung die Festschreibungsnachricht nahezu unmittelbar bestätigen sollte, da die entfernt gelegene Speichervorrichtung unmittelbar für den Zyklusschaltvorgang bereit sein wird, weil das aktive Paket derselben bereits leer ist. - Sobald bei dem Testschritt
912 bestimmt wurde, dass die Festschreibungsnachricht durch die entfernt gelegene Speichervorrichtung bestätigt worden ist, geht die Steuerung von dem Schritt912 zu einem Schritt914 über, bei dem das Aussetzen des Kopiervorganges, was bei dem Schritt899 realisiert wurde, aufgehoben wird, so dass der Kopiervorgang von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung wieder aufgenommen werden kann. Nach dem Schritt914 ist die Verarbeitung vollendet. - Gemäß
19 veranschaulicht ein Flussdiagramm940 Schritte, die in Verbindung mit dem Abtasten der inaktiven Puffer durch die RAs ausgeführt werden, um RDF-Daten von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu übertragen. Das Flussdiagramm940 von19 ist ähnlich dem Flussdiagramm200 von6 und es sind ähnliche Schritt mit den gleichen Bezugszeichen versehen. Jedoch enthält das Flussdiagramm940 zwei zusätzliche Schritte942 ,944 , die in dem Flussdiagramm200 von6 nicht gefunden werden können. Die zusätzlichen Schritt942 ,944 werden dazu verwendet, um die Multiboxverarbeitung zu vereinfachen. Nachdem Daten bei dem Schritt212 gesendet worden sind, geht die Steuerung von dem Schritt212 zu einem Testschritt942 über, bei dem bestimmt wird, ob die gesendeten Daten die letzten Daten in dem inaktiven Paket der lokalen Speichervorrichtung sind. Wenn dies nicht der Fall ist, geht die Steuerung von dem Schritt942 zu dem Schritt214 über und die Verarbeitung wird fortgesetzt, und zwar in der oben erläuterten Weise in Verbindung mit dem Flussdiagramm200 von6 . Wenn im anderen Fall bei dem Testschritt942 bestimmt wird, dass die Daten, die gesendet werden, die letzten Daten des Paketes sind, dann geht die Steuerung von dem Schritt942 zu dem Schritt944 über, um eine Spezialnachricht von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden, die anzeigt, dass die letzten Daten gesendet worden sind. Nach dem Schritt944 geht die Steuerung zu einem Schritt214 über, und es wird die Verarbeitung fortgeführt, und zwar in der oben erläuterten Weise, entsprechend dem Flussdiagramm200 von6 . Bei einigen Ausführungsformen können die Schritte942 ,944 durch einen getrennten Prozess (und/oder eine getrennte Hardwarevorrichtung) durchgeführt werden, der von dem Prozess und/oder Hardwarevorrichtung verschieden ist, welche die Daten überträgt. - Gemäß
20 veranschaulicht ein Flussdiagramm950 Schritte, die in Verbindung mit dem Abtasten der inaktiven Puffer durch die RAs ausgeführt werden, um RDF-Daten von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu übertragen. Das Flussdiagramm950 von20 ist ähnlich dem Flussdiagramm500 von13 aufgebaut und ähnliche Schritte sind mit gleichen Bezugszeichen versehen. Jedoch enthält das Flussdiagramm950 einen zusätzlichen Schritt952 , der in dem Flussdiagramm500 von13 nicht enthalten ist. Der zusätzliche Schritt952 wird dazu verwendet, um die Multiboxverarbeitung zu vereinfachen und er ist ähnlich dem zusätzlichen Schritt944 des Flussdiagramms940 von19 . Nachdem bei dem Testschritt524 bestimmt worden ist, dass keine Zeilen mehr verblieben sind, die von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden sind, geht die Steuerung von dem Schritt524 zu dem Schritt952 über, um eine Spezialnachricht von der lokalen Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung zu senden, die anzeigt, dass die letzten Daten für das Paket gesendet worden sind. Nach dem Schritt952 ist die Verarbeitung vollendet. - Gemäß
21 veranschaulicht ein Flussdiagramm960 Schritte, die bei der entfernt gelegenen Speichervorrichtung ausgeführt werden, und zwar in Verbindung mit dem Liefern einer Anzeige, dass das aktive Datenpaket der entfernt gelegenen Speichervorrichtung, leer ist. Das Flussdiagramm960 ist ähnlich dem Flussdiagramm300 von9 mit der Ausnahme, dass das Flussdiagramm960 einen neuen Schritt962 enthält, der ausgeführt wird, nachdem das aktive Paket der entfernt gelegenen Speichervorrichtung wiederhergestellt worden ist. Bei dem Schritt962 sendet die entfernt gelegene Speichervorrichtung eine Nachricht zu der lokalen Speichervorrichtung, die anzeigt, dass das aktive Datenpaket der entfernt gelegenen Speichervorrichtung leer ist. Nach dem Empfang der Nachricht, die bei dem Schritt962 gesendet wird, setzt die lokale Speichervorrichtung eine interne Variable, die anzeigt, dass der inaktive Puffer der entfernt gelegenen Speichervorrichtung leer ist. Die lokale Variable wird in Verbindung mit dem Testschritt894 des Flussdiagramms830 von18 in der oben geschilderten Weise geprüft. - Gemäß
22 veranschaulicht ein Diagramm980 den Host702 , die lokalen Speichervorrichtungen703 -705 und die entfernt gelegenen Speichervorrichtungen706 -708 , die in dem Diagramm700 von14 gezeigt sind. Das Diagramm980 enthält auch einen ersten alternativen Host982 , der an den Host702 und die lokalen Speichervorrichtungen703 -705 gekoppelt ist. Das Diagramm980 enthält auch einen zweiten alternativen Host984 , der mit den entfernt gelegenen Speichervorrichtungen706 -708 gekoppelt ist. Die alternativen Hosts982 ,984 können für die Datenwiederherstellung verwendet werden, wie dies weiter unten detaillierter beschrieben wird. - Wenn eine Wiederherstellung von Daten an dem fernen Ort erforderlich ist, kann die Wiederherstellung durch den Host
702 oder durch den Host982 vorgenommen werden unter der Voraussetzung, dass die Verbindungen zwischen den lokalen Speichervorrichtungen703 -705 und den entfernt gelegenen Speichervorrichtungen706 -708 noch in Betrieb sind. Wenn sich die Verbindungen nicht im Betrieb befinden, dann kann die Datenwiederherstellung durch den zweiten alternativen Host984 durchgeführt werden, der an die entfernt gelegenen Speichervorrichtungen706 -708 gekoppelt ist. Der zweite alternative Host984 kann an dem gleichen Ort wie eine oder mehrere der entfernt gelegenen Speichervorrichtungen706 -708 vorgesehen sein. Alternativ kann der zweite alternative Host984 von allen entfernt gelegenen Speichervorrichtungen706 -708 entfernt gelegen sein. Die Tabelle 730, die über das System verbreitet wird, wird in Verbindung mit der Datenwiederherstellung zugegriffen, um die Mitglieder der Multiboxgruppe zu bestimmen. - Gemäß
23 veranschaulicht ein Flussdiagramm1000 Schritt, die durch jede der entfernt gelegenen Speichervorrichtungen706 -708 in Verbindung mit der Datenwiederherstelloperation ausgeführt werden. Die Schritte des Flussdiagramms1000 können durch jede der entfernt gelegenen Speichervorrichtungen706 -708 bei Empfang eines Signals oder einer Nachricht ausgeführt werden, die anzeigt, dass die Datenwiederherstellung erforderlich ist. Bei einigen Ausführungsformen kann es möglich sein, dass eine entfernt gelegene Speichervorrichtung automatisch erkennt, dass die Datenwiederherstellung erforderlich ist, und zwar unter Verwendung von beispielsweise herkömmlichen Kriterien, wie beispielsweise die Länge der Zeitdauer seit dem letzten Schreibvorgang. - Die Verarbeitung beginnt bei einem ersten Schritt
1002 , bei dem die entfernt gelegene Speichervorrichtung das Wiederherstellen des aktiven Pakets in einer Weise beendigt, die hier an anderer Stelle erläutert wurde. Auf den Schritt1002 folgt ein Testschritt1004 , bei dem bestimmt wird, ob das inaktive Datenpaket der entfernt gelegenen Speichervorrichtung vollständig ist (das heißt alle Daten dorthin geschrieben worden sind). Es sei erwähnt, dass eine entfernt gelegene Speichervorrichtung bestimmen kann, ob das inaktive Datenpaket vollständig ist, und zwar unter Verwendung der Nachricht, die durch die logische Speichervorrichtung bei dem Schritt944 ,952 gesendet wurde, was weiter oben erläutert worden ist. Das heißt, wenn die lokale Speichervorrichtung die Nachricht bei dem Schritt944 oder bei dem Schritt952 gesendet hat, kann die entfernt gelegene Speichervorrichtung den Empfang dieser Nachricht dazu verwenden, um zu bestätigen, dass das inaktive Paket vollständig ist. - Wenn bei dem Testschritt
1004 bestimmt wird, dass das inaktive Paket der entfernt gelegenen Speichervorrichtung nicht vollständig ist, geht die Steuerung von dem Testschritt1004 zu einem Schritt1006 über, bei dem Daten von dem inaktiven Paket gelöscht werden. Es wird keine Datenwiederherstellung unter Verwendung unvollständiger inaktiver Pakete durchgeführt, da die dort vorhandenen Daten inkonsistent mit entsprechenden aktiven Datenpaketen sein können. Demzufolge wird die Datenwiederherstellung unter Verwendung von aktiven Datenpaketen durchgeführt und in einigen Fällen auch mit inaktiven Paketen, die vollständig sind. Nach dem Schritt1006 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1004 bestimmt wird, dass das inaktive Paket vollständig ist, dann verläuft die Steuerung von dem Schritt1004 zu dem Schritt1008 , bei welchem die entfernt gelegene Speichervorrichtung auf eine Intervention durch den Host wartet. Bei einem inaktiven Datenpaket muss einer der Hosts702 ,982 ,984 , je nach Situation, den Zustand von allen entfernt gelegenen Speichervorrichtungen in der Multiboxgruppe prüfen, um zu bestimmen, wie die Wiederherstellung durchzuführen ist. Dies wird unten detaillierter erläutert. - Auf den Schritt
1008 folgt ein Testschritt1012 , bei dem bestimmt wird, ob der Host einen Befehl an alle Speichervorrichtungen gesendet hat, um das inaktive Datenpaket zu löschen. Wenn dies der Fall ist, geht die Steuerung von dem Schritt1012 zu einem Schritt1006 über, um das inaktive Datenpaket zu löschen. Nach dem Schritt1006 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1002 bestimmt wird, dass der Host einen Befehl ausgegeben hat, um das vollständige inaktive Datenpaket wiederherzustellen, geht die Steuerung von dem Schritt1012 zu einem Schritt1014 über, bei dem das inaktive Datenpaket zu der entfernt gelegenen Speichervorrichtung wiederhergestellt wird. Das Wiederherstellen des inaktiven Datenpaketes in der entfernt gelegenen Speichervorrichtung involviert, dass das inaktive Datenpaket zu einem aktiven Datenpaket gemacht wird und dass dann das aktive Datenpaket auf die Platte geschrieben wird, wie dies hier an anderer Stelle erläutert ist. Nach dem Schritt1014 ist die Verarbeitung vollendet. - Gemäß
24 einzugehen veranschaulicht ein Flussdiagramm1030 Schritte, die in Verbindung mit einem der Hosts702 ,982 ,984 durchgeführt werden, der bestimmt, ob jedes der inaktiven Pakete von jeder der entfernt gelegenen Speichervorrichtungen gelöscht oder wiederhergestellt werden soll. Der eine der Hosts702 ,982 ,984 , der die Wiederherstellung ausführt, kommuniziert mit den entfernt gelegenen Speichervorrichtungen706 -708 , um dort Befehle hin zu leiten und um Informationen von diesen zu empfangen, und zwar unter Verwendung von Tags, die durch den Host in der erläuterten Weise zugeordnet werden. - Die Verarbeitung beginnt bei einem ersten Schritt
1032 , bei dem bestimmt wird, ob irgendeine der entfernt gelegenen Speichervorrichtungen ein komplettes inaktives Paket aufweist. Wenn dies nicht der Fall ist, erfolgt auch keine weitere Verarbeitung mehr und die entfernt gelegenen Speichervorrichtungen werden in der oben erläuterten Weise die unvollständigen Datenpakete selbst löschen, und zwar ohne Intervention des Hosts. Im anderen Fall geht die Steuerung von dem Testschritt1032 zu einem Testschritt1034 über, bei dem der Host bestimmt, ob alle entfernt gelegenen Speichervorrichtungen vollständige inaktive Datenpakete haben. Wenn dies der Fall ist, geht die Steuerung von dem Testschritt1034 zu einem Testschritt1036 über, bei welchem bestimmt wird, ob alle die vollständigen inaktiven Pakete von allen entfernt gelegenen Speichervorrichtungen die gleiche Tag-Zahl haben. Wie hier an anderer Stelle erläutert ist, werden Tags durch den Host zugeordnet und werden durch das System dazu verwendet, um Daten in einer Weise zu identifizieren, ähnlich der Sequenzzahl, mit der Ausnahme, dass die Tags durch den Host gesteuert werden, so dass sie den gleichen Wert für den gleichen Zyklus haben. - Wenn bei dem Testschritt
1036 bestimmt wird, dass alle entfernt gelegenen Speichervorrichtungen die gleichen Tags für die inaktiven Datenpakete haben, geht die Steuerung von dem Schritt1036 zu einem Schritt1038 über, bei dem alle inaktiven Datenpakete wiederhergestellt werden. Das Ausführen des Schrittes1038 stellt sicher, dass all die entfernt gelegenen Speichervorrichtungen Daten von dem gleichen Zyklus aufweisen. Nach dem Schritt1038 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1034 bestimmt wird, dass alle inaktiven Pakete nichtvollständig sind, oder wenn bei dem Schritt1036 bestimmt wird, dass alle kompletten inaktiven Pakete nicht das gleiche Tag haben, geht die Steuerung zu einem Schritt1042 über, bei dem der Host einen Befehl zu den entfernt gelegenen Speichervorrichtungen übermittelt, um die kompletten inaktiven Datenpakete wiederherzustellen, welche die niedrigere Tag-Zahl haben. Zum Zwecke der Erläuterung sei angenommen, dass die Tag-Zahlen inkrementiert werden, so dass eine niedrigere Tag-Zahl ältere Daten repräsentiert. Wenn als Beispiel eine erste entfernt gelegenen Speichervorrichtung ein komplettes inaktives Datenpaket mit einem Etikettenwert von drei aufweisen würde und eine zweite entfernt gelegene Speichervorrichtung ein komplettes inaktives Datenpaket mit einem Etikettenwert von vier aufweisen würde, bewirkte der Schritt1042 , dass die erste entfernt gelegene Speichervorrichtung (jedoch nicht die zweite) ihr inaktives Datenpaket wiederherstellt. Auf den Schritt1042 folgt ein Schritt1044 , bei dem der Host Befehle zu den entfernt gelegenen Speichervorrichtungen liefert, um die kompletten inaktiven Puffer mit einer höheren Tag-Zahl zu löschen (z.B. von der zweiten entfernt gelegenen Speichervorrichtung in dem vorangehenden Beispiel). Nach dem Schritt1044 ist die Verarbeitung vollendet. - Nach der Ausführung des Schrittes
1044 enthält jede der entfernt gelegenen Speichervorrichtungen Daten, denen der gleiche Tag-Wert zugeordnet ist, wie den Daten der anderen der entfernt gelegenen Speichervorrichtungen. Demzufolge sollten die wiederhergestellten Daten auf den entfernt gelegenen Speichervorrichtungen706 -708 konsistent sein. - Gemäß
25 veranschaulicht ein Diagramm1120 eine Ausführungsform, bei der eine Speichervorrichtung1124 , die ähnlich der Speichervorrichtung24 und/oder der Speichervorrichtung26 ist, eine Vielzahl an Directors1152a -1152c enthält, die an einen Speicher1126 gekoppelt sind, ähnlich dem Speicher37 und/oder dem Speicher38 der Speichervorrichtungen24 ,26 . Jeder der Directors1152a -1152c repräsentiert einen HA, DA und/oder RA ähnlich dem HA28 , den DAs35a -35c ,36a -36c und/oder den RAs30a ,30c ,32a -32c der Speichervorrichtungen. Bei einer hier offenbarten Ausführungsform können bis zu sechzehn Directors an den Speicher1126 gekoppelt sein. Natürlich kann bei anderen Ausführungsformen eine höhere oder eine niedrigere maximale Zahl der Directors verwendet werden. - Das Diagramm
1120 zeigt auch einen optionalen Kommunikationsmodul (CM)1154 , der einen alternativen Kommunikationspfad zwischen den Directors1152a -1152c vorsieht. Jeder der Directors1152a -1152c kann an den CM1154 gekoppelt sein, so dass jeder der Directors1152a -1152c eine Nachricht und/oder Daten jeden anderen der Directors1152a -1152c senden kann, ohne dabei durch den Speicher1126 laufen zu müssen. Der CM1154 kann unter Verwendung einer herkömmlichen MUX/Router-Technologie implementiert werden, wobei einer der Directors1152a -1152c , der sendet, eine geeignete Adresse liefert, um zu bewirken, dass eine Nachricht und/oder Daten durch einen beabsichtigten empfangenden Director der Directors1152a -1152c empfangen wird bzw. werden. Zusätzlich kann bei einer der Directors1152a -1152c , der sendet, auch dazu in der Lage sein, eine Nachricht zu allen anderen Directors1152a -1152c zur gleichen Zeit zu übertragen. - Gemäß
26 veranschaulicht ein Diagramm1200 ein System, welches eine Quellgruppe1202 , ein lokales Ziel1204 und ein entfernt gelegenes Ziel1206 enthält. Die Quellgruppe1202 kommuniziert mit sowohl dem lokalen Ziel1204 als auch mit dem entfernt gelegenen Ziel1206 . Die Quellgruppe1202 kann eine einzelne Speichervorrichtung repräsentieren, eine Vielzahl an Speichervorrichtungen repräsentieren, eine einzelne oder eine Vielzahl an Speichervorrichtungen mit einem einzelnen Host oder eine einzelne oder eine Vielzahl an Speichervorrichtungen mit vielen Host repräsentieren. Die Daten werden an der Quellgruppe1202 generiert und an der Quellgruppe1202 gespeichert und werden zu dem lokalen Ziel1204 und dem entfernt gelegenen Ziel1206 übertragen. Bei einigen Ausführungsformen kann die lokale Gruppe in gewissen Beziehungen so arbeiten, wie dies oben in Verbindung mit der Ausführungsform erläutert wurde, die in Verbindung mit14 weiter oben beschrieben ist. - Bei einer hier offenbarten Ausführungsform repräsentiert das lokale Ziel
1204 eine einzelne oder eine Vielzahl an Speichervorrichtungen, die sich in relativ enger Nachbarschaft zu der Quellgruppe1202 befinden, um ein synchrones Datenspiegeln von der Quellgruppe1202 zu dem lokalen Ziel1204 zu ermöglichen. Bei einer hier beschriebenen Ausführungsform befindet sich das lokale Ziel1204 in dem gleichen Gebäude, in der gleichen Einrichtung und/oder an dem gleichen Firmensitz wie die Quellgruppe1202 . Beispielsweise kann das lokale Ziel1204 eine Backup-Speichervorrichtung repräsentieren (oder eine Vielzahl an Speichervorrichtungen), die durch die gleiche Gruppe von Individuen gemanagt wird bzw. werden, die auch die Quellgruppe1202 managt. - Das entfernt gelegene Ziel
1206 repräsentiert eine Speichervorrichtung und/oder eine Vielzahl an Speichervorrichtungen an einem Ort, die geografisch von der Quellgruppe1202 entfernt gelegen ist. Beispielsweise kann das entfernt gelegene Ziel1206 eine Speichervorrichtung oder eine Gruppe von Speichervorrichtungen an der Westküste der Vereinigten Staaten repräsentieren, während die Quellgruppe1202 an der Ostküste der Vereinigten Staaten gelegen ist. Auf Grund des relativ großen geografischen Abstandes zwischen der Quellgruppe1202 und dem entfernt gelegenen Ziel1206 kann es unpraktisch sein, einen synchronen oder halbsynchronen Datenübertragungsmodus zu verwenden, um die Daten an dem entfernt gelegenen Ziel1206 von der Quellgruppe1202 aus zu spiegeln. Das heißt, dass es auf Grund der langen Umlaufzeit von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 und zurück zu der Quellgruppe1202 nicht durchführbar sein kann, ein synchrones oder halbsynchrones Datenspiegeln zu verwenden, das eine Bestätigung von Daten an dem entfernt gelegenen Ziel1206 vorsieht, bevor ein Schreibvorgang gegenüber einem Host der lokalen Gruppe1202 bestätigt wird. In solch einem Fall kann es möglich sein, geordnete Schreibvorgänge zwischen der Quellgruppe1202 und dem entfernt gelegenen Ziel1206 zu verwenden, so dass das entfernt gelegene Ziel1206 eine konsistente, wenn auch etwas zeitlich verzögerte Spiegelung der Quellgruppe1202 bildet. - Ein Kommunikationspfad
1208 kann zwischen dem lokalen Ziel1204 und dem entfernt gelegenen Ziel1206 existieren. Solange die Quellgruppe1202 in Betrieb ist, braucht der Kommunikationspfad1208 nicht verwendet zu werden. Jedoch in Fällen, in denen die Quellgruppe1202 nicht betriebsfähig ist, und/oder in Fällen, in denen die Kommunikationsverbindungen zwischen der Quellgruppe1202 und mindestens einem der beiden Ziele, nämlich dem lokalen Ziel1204 und dem entfernt gelegenen Ziel1206 , nicht betriebsfähig ist, kann dann der Kommunikationspfad1208 dazu verwendet werden, um die Daten zwischen dem lokalen Ziel1204 und dem entfernt gelegenen Ziel1206 zu synchronisieren, wie dies hier an anderer Stelle detaillierter beschrieben wird. Darüber hinaus kann auch ein Host an einem der Ziele, nämlich dem lokalen Ziel1204 oder dem entfernt gelegenen Ziel1206 , vorgesehen sein, der den Betrieb des Systems nach der Synchronisation aufnimmt, wie dies hier an anderer Stelle detaillierter beschrieben wird. Es sei darauf hingewiesen, dass dann, wenn der Betrieb mit einem Host wieder aufgenommen wird, der an das lokale Ziel1204 gekoppelt ist, die Kommunikationsverbindung1208 verwendet werden kann, so dass das entfernt gelegene Ziel1206 eine Spiegelung des lokalen Zieles1204 ist. Wenn umgekehrt der Betrieb wieder aufgenommen wird, indem ein Host an dem entfernt gelegenen Ziel1206 vorgesehen wird, dann kann die Kommunikationsverbindung1206 so verwendet werden, dass das lokale Ziel1204 eine Spiegelung des entfernt gelegenen Zieles1206 ist. - Gemäß
27 veranschaulicht ein Flussdiagramm1230 Schritte, die in Verbindung mit der Initialisierung von Parametern an dem lokalen Ziel1204 ausgeführt werden, um den hier beschriebenen Wiederherstellmechanismus zu realisieren. Der hier beschriebene Wiederherstellmechanismus verwendet eine Symmetrix-Differenzial-Datenausrüstung (SDDF), die die Möglichkeit für eine Vielzahl von Sessionen [sessions] schafft, jede mit einer Bitmap [bitmap], welche dieser zugeordnet ist, mit Bits, die immer dann auf Eins gesetzt werden, wenn ein Schreibeintrag an einer entsprechenden Datenstelle während einer bestimmten Zeitperiode erfolgt. Wenn kein Schreibeintrag an einer bestimmten Stelle auftritt, bleibt das entsprechende Bit gelöscht (das heißt es bleibt auf Null). Bei einer hier beschriebenen Ausführungsform kann jedes Bit einer Spur von Daten entsprechen. Bei anderen Ausführungsformen ist es jedoch möglich, dass jedes Bit größeren oder kleineren Inkrementen von Daten entspricht und es ist ebenso möglich, dass unterschiedliche Bits und/oder unterschiedliche Sätze der Bits unterschiedlichen Datenmengen entsprechen. - Die Operationen, die einer
SDDF -Session zugeordnet sind, umfassen die Erzeugung einer SDDF-Session, Aktivieren einer SDDF-Session, Löschen von Bits die Bitmap für eineSDDF -Session, Deaktivieren einerSDDF -Session und Beenden einerSDDF -Session. Das Erzeugen einerSDDF -Session, das Löschen der Bits derselben und die Beendigung einerSDDF -Session sind weitgehend selbsterklärend. Das Aktivieren einerSDDF -Session bewirkt, dass ein Bit derSDDF -Sessionsbitmap immer dann gesetzt wird, wenn eine entsprechende Spur (oder ein anderes geeignetes Dateninkrement) geschrieben wird. Das Deaktivieren einerSDDF -Session setzt das Setzen von Bits aus. DerSDDF -Mechanismus, der hier erläutert wird, kann implementiert werden unter Verwendung der Anleitung, wie sie in demUS-Patent Nr. 6,366,986 geliefert wird, die hier unter Bezugnahme mit einbezogen wird. - Die Verarbeitung für das Flussdiagramm
123 beginnt bei einem ersten Schritt1232 , bei dem eine erste SDDF-Session SDDF_1 erzeugt wird. Bei einer Ausführungsform, die hier beschrieben wird, bewirkt die Erzeugung einer SDDF-Session nicht eine automatische Aktivierung der Session. Auf den Schritt1232 folgt ein Schritt1234 , bei dem Bits der Bitmap derSDDF -Session, die bei dem Schritt1232 erzeugt wurde, gelöscht werden. Auf den Schritt1234 folgt ein Schritt1236 , bei dem eine zweiteSDDF -SessionSDDF_2 erzeugt wird. Auf den Schritt1236 folgt ein Schritt1238 , bei dem die Bits der Bitmap derSDDF -Session, die bei dem Schritt1236 erzeugt wurde, gelöscht werden. - Auf den Schritt
1238 folgt ein Schritt1242 , bei dem ein Zustand initialisiert wird. Der Zustand, der bei dem Schritt1242 initialisiert wird, kann dazu verwendet werden, zu bestimmen, welche derSDDF -SessionenSDDF_1 oderSDDF_2 aktiviert wird. Wie hier an anderer Stelle detaillierter beschrieben wird, können zwei mögliche Zustände existieren, und der Zustand, der bei dem Schritt1242 gesetzt wird, kann hin- und hergeschaltet werden, um zu bewirken, dass dieSDDF_1 -Session und dieSDDF_2 -Session alternativ aktiviert werden. Bei anderen Ausführungsformen kann ein Token oder irgendein anderer Typ einer Variablen dazu verwendet werden, um die Auswahl von entwederSDDF_1 oderSDDF_1 anzuzeigen. Auf den Schritt1242 folgt ein Schritt1244 , bei demSDDF_1 aktiviert wird. Das Aktivieren vonSDDF_1 bei dem Schritt1244 bewirkt, dass die Bits der Bitmap derSDDF_1 -Session immer dann gesetzt werden, wenn eine Spur (oder ein anderes Dateninkrement) des lokalen Zieles1204 modifiziert wird. - Die
SDDF_1- undSDDF_2- Sessionen werden durch das lokale Ziel1204 verwendet, um die aktiven und inaktiven Puffer nachzuverfolgen, die durch die Quellgruppe1202 in Verbindung mit geordneten Schreibvorgängen durch die Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 hin verwendet werden. Wie hier an anderer Stelle detaillierter erläutert wird, sendet jedes Mal, wenn die Quellgruppe1202 einen Zyklusschaltvorgang in Verbindung mit den geordneten Schreibvorgängen von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 hin ausführt, die Quellgruppe1202 eine Nachricht zu dem lokalen Ziel1204 , die anzeigt, dass ein Zyklusschaltvorgang durchgeführt worden ist, so dass das lokale Ziel1204 den Zustand umschalten kann (initialisiert bei dem Schritt1242 , wie oben erläutert wurde). Die Verwendung der Zyklusschaltinformationen durch das lokale Ziel1204 wird hier an anderer Stelle detaillierter erläutert. - Gemäß
28A veranschaulicht ein Flussdiagramm1250 die Schritte, die durch das lokale Ziel1204 in Verbindung mit dem Empfangen einer Ein-/Ausgabe von der Quellgruppe1202 während des normalen (das heißt ausfallsfreien) Betriebes ausgeführt werden. Die Verarbeitung beginnt bei einem ersten Schritt1252 , bei dem die Ein-/Ausgabe durch das lokale Ziel1204 empfangen wird. Auf den Schritt1252 folgt ein Testschritt1254 , bei dem bestimmt wird, ob die von der Quellgruppe1202 empfangene Ein-/Ausgabe angibt, dass die lokale Gruppe1202 bereit ist, in Verbindung mit den geordneten Schreibvorgängen zwischen der lokalen Gruppe1202 und dem entfernt gelegenen Ziel1206 zu schalten. Die Bereitschaft der lokalen Gruppe1202 für den Schaltvorgang wird hier an anderer Stelle detaillierter beschrieben. - Wenn die empfangenen Daten anzeigen, dass die lokale Gruppe
1202 für den Schaltvorgang bereit ist, geht die Steuerung von dem Schritt1254 auf einen Schritt1256 über, bei dem bestimmt wird, ob die inaktive derSDDF -Sessionen (SDDF_1 oderSDDF_2 ) gelöscht ist. Bei einigen Ausführungsformen können dieSDDF -Sessionen bei dem Schritt1256 gelöscht werden. In anderen Fällen kann der Zeitbetrag, der zum Löschen einerSDDF -Session bei dem Schritt1256 benötigt wird, inakzeptabel sein, in welchem Fall mehr als zweiSDDF -Sessionen fürSDDF_1 undSDDF_2 verwendet werden können und so rotiert werden können, dass eine SDDF-Session, die dabei ist, aktiviert zu werden, immer asynchron gelöscht wird. Auf jeden Fall betrifft die Verarbeitung, die bei dem Schritt1256 ausgeführt wird, das Löschen der inaktiven derSDDF_1 undSDDF_2 , so dass nach der Ausführung des Schrittes1256 die inaktive Session gelöscht ist. - Auf den Schritt
1256 folgt ein Schritt1258 , bei dem die inaktive derSDDF -Sessionen aktiviert wird, so dass dann beideSDDF_1 undSDDF 2nach der Durchführung der Verarbeitung bei dem Schritt1258 aktiviert sind. Es werden daher nachfolgende Schreibvorgänge in den Bitmaps für sowohlSDDF_1 als auchSDDF_2 wiedergegeben. Nach dem Schritt1258 ist die Verarbeitung vollendet. - Wenn bei dem Schritt
1254 bestimmt wird, dass die empfangenen Daten nicht einem Schaltvorgang-Bereitschaftsignal entsprechen, geht die Steuerung von dem Schritt1254 zu einem Testschritt1262 über, bei dem bestimmt wird, ob die empfangenen Daten der Durchführung eines Zyklusschaltvorgangs entsprechen. Wenn dies der Fall ist, geht die Steuerung von dem Schritt1262 zu einem Schritt1264 über, bei dem der Zustand, der bei dem Schritt1242 des Flussdiagramms1230 von27 initialisiert wurde, umgeschaltet wird. Wie hier an anderer Stelle erläutert wird, wird der Zustand dazu verwendet, zu bestimmen, welche derSDDF_1 undSDDF_2 aktiviert und deaktiviert wird. Auf den Schritt1264 folgt ein Schritt1266 , bei dem eine derSDDF -Sessionen, alsoSDDF_1 oderSDDF_2 , deaktiviert wird, und zwar abhängig von dem speziellen Wert des Zustandes, der bei dem Schritt1264 gesetzt wurde. Es sei darauf hingewiesen, dass, obwohl eineSDDF -Session bei dem Schritt1266 deaktiviert wird, diese SDDF-Session solange nicht gelöscht wird, bis das nächste Schaltvorgang-Bereitschaftsignal empfangen wird. Wenn natürlich mehr als zweiSDDF -Sessionen fürSDDF_1 undSDDF_2 verwendet werden, wie dies oben erläutert wurde, dann kann die bei dem Schritt1266 deaktiviertSDDF -Session auch beibehalten werden, während eine andereSDDF -Session gelöscht wird, um für die Aktivierung bei dem Schritt1258 vorbereitet zu sein, wie weiter oben erläutert ist. - Wenn bei dem Schritt
1262 bestimmt wird, dass die empfangenen Daten nicht einem Zyklusschaltvorgang entsprechen, geht die Steuerung von dem Testschritt1262 zu einem Schritt1268 über, bei dem die Ein-/Ausgabe durchgeführt wird. Wenn die Ein-/Ausgabe beispielsweise eine Schreiboperation ist, werden bei dem Schritt1268 Daten zu dem Speicherbereich des lokalen Zieles1204 geschrieben. Auf den Schritt1268 folgt ein Schritt1272 , bei dem bestimmt wird, ob die Ein-/Ausgabe-Operation eine Schreiboperation ist. Wenn dies nicht der Fall ist (z.B. die Ein-/Ausgabe-Operation ist eine Leseoperation), ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Schritt1272 zu einem Schritt1274 über, bei dem in einer geeigneten derSDDF -Sessionen, und zwarSDDF_1 ,SDDF_2 oder in beiden, ein Bit gesetzt wird, abhängig davon, welche derSDDF -Sessionen aktiviert ist. Nach Schritt1274 ist die Verarbeitung vollendet. - In einigen Fällen kann es nicht wünschenswert sein, auf das Löschen einer
SDDF -Bitmap unmittelbar vor dem Zeigen auf die gleicheSDDF -Bitmap zu warten. In solchen Fällen kann es nützlich sein, mehr als zweiSDDF -Bitmaps zur Verfügung zu haben, wobei zwei zur gleichen Zeit verwendet werden, ähnlichSDDF_1 undSDDF_2 , während der Rest derSDDF -Bitmaps bereits gelöscht sein und eine Verwendung warten kann oder unter Verwendung eines Hintergrund-Prozesses gelöscht wird. Wenn man beispielsweise drei BitmapsSDDF_A ,SDDF_B undSDDF_C verwendet, kannSDDF_1 demSDDF_A entsprechen, währendSDDF_2 demSDDF_C entsprechen kann. In solch einem Fall kann dannSDDF_B gelöscht werden, während die Verarbeitung aufSDDF_A undSDDF_C ausgeführt wird. Wenn der Zyklus weiter schaltet, kannSDDF_B (welches bereits gelöscht ist) verwendet werden, währendSDDF_C unter Verwendung eines Hintergrund-Prozesses gelöscht wird, der selbst dann laufen kann, nachdem der Zyklusschaltvorgang vollendet worden ist und neue Daten aufSDDF_B registriert werden. - Gemäß
28B veranschaulicht ein Flussdiagramm1280 eine alternative Ausführungsform, die eine Vielzahl anSDDF -Bitmaps SDDF[0], SDDF[1],... SDDF[NMAPS-1] verwendet, wobei NMAPS die Zahl der SDDF-Maps ist. Bei einer hier erläuterten Ausführungsform ist NMAPS größer als zwei (z. B. drei). Viele der Schritte des Flussdiagramms1280 sind ähnlich den Schritten des Flussdiagramms1250 von28A . - Die Verarbeitung beginnt bei einem ersten Schritt
1282 , bei dem Ein-/Ausgabe durch das lokale Ziel1204 empfangen wird. Auf den Schritt1282 folgt ein Testschritt1283 , bei dem bestimmt wird, ob die von der Quellgruppe1202 empfangene Ein-/Ausgabe anzeigt, dass die lokale Gruppe1202 für den Schaltvorgang in Verbindung mit geordneten Schreibvorgängen zwischen der lokalen Gruppe1202 und dem entfernt gelegenen Ziel1206 bereit ist. Das Bereitsein der lokalen Gruppe1202 für den Schaltvorgang wird hier an anderer Stelle beschrieben. - Wenn die empfangenen Daten anzeigen, dass die lokale Gruppe
1202 für den Schaltvorgang bereit ist, geht die Steuerung von dem Schritt1283 zu einem Schritt1284 über, bei dem ein Index K inkrementiert wird und sein Ergebnis auf den Restwert bezüglichNMAPS gesetzt wird [set to moduloNMAPS ]. Auf den Schritt1284 folgt ein Schritt1285 , bei dem bestätigt wird, dassSDDF[K] gelöscht ist. Auf den Schritt1285 folgt ein Schritt1286 , bei demSDDF[K] aktiviert wird, so dass sowohlSDDF[K] als auchSDDF[K-1] nach der Durchführung der Verarbeitung bei dem Schritt1286 aktiviert werden. Es werden somit nachfolgende Schreibvorgänge in den Bitmaps für sowohlSDDF[K] undSDDF[K-1] wiedergegeben. Nach dem Schritt1286 ist die Verarbeitung vollendet. Es sei darauf hingewiesen, dass dann, wenn K gleich Null ist,SDDF[K-1] tatsächlich aufSDDF[NMAPS-1] verweist. - Wenn bei dem Schritt
1283 bestimmt wird, dass die empfangenen Daten nicht einem Schaltvorgang-Bereitschaftsignal entsprechen, geht die Steuerung von dem Schritt1283 zu einem Testschritt1287 über, bei dem bestimmt wird, ob die empfangenen Daten einem Zyklusschaltvorgang entsprechen. Wenn bei dem Schritt1287 bestimmt wird, dass die empfangenen Daten einem Zyklusschaltvorgang entsprechen (siehe die obige Erläuterung in Verbindung mit dem Flussdiagramm1250 von28A) , dann geht die Steuerung von dem Schritt1287 zu einem Schritt1288 über, bei dem der Zustand (oben erläutert) umgeschaltet wird. Auf den Schritt1288 folgt ein Schritt1289 , bei dem eine Variable J gesetzt wird, und zwar gleich (K-2) Modulo-NMAPS. Da K eine Indexvariable ist, die zum Nachverfolgen der zuletzt aktiviertenSDDF -Bitmap verwendet wird, führt das Setzen von J bei dem Schritt1289 dazu, dass J auf die drittletzte aktivierte SDDF-Bitmap zeigt. Auf den Schritt1289 folgt ein Schritt1292 , bei dem ein Prozess gestartet wird, um die SDDF[J]-Bitmap zu löschen. Wie hier an anderer Stelle erläutert wird, ist es nicht erforderlich, dass der Prozess, der bei dem Schritt1292 begonnen wurde, vollendet wird, um den Zyklusschaltvorgang zu vollenden und um damit zu beginnen, neue Daten zu sammeln. - Auf den Schritt
1292 folgt ein Schritt1294 , bei dem eine Variable J gleich gesetzt wird mit (K-1) Modulo-NMAPS. Da K eine Indexvariable ist, die dazu verwendet wird, um die zuletzt aktivierteSDDF -Bitmap nachzuverfolgen, führt das Setzen von J bei dem Schritt1294 dazu, dass J auf die zweitletzte aktivierteSDDF -Bitmap zeigt. Auf den Schritt1294 folgt ein Schritt1296 , bei demSDDF[J] deaktiviert wird. Obwohl jedochSDDF[J] bei dem Schritt1296 deaktiviert wird, werden die Daten für Wiederherstellungszwecke solange aufbewahrt, bis der nächste Zyklusschaltvorgang erfolgt. Nach dem Schritt1296 ist die Verarbeitung vollendet. - Gemäß
28C veranschaulicht ein Flussdiagramm1300 noch eine andere Ausführungsform der Verarbeitung in Verbindung mit dem lokalen Ziel1204 , der eine Ein-/Ausgabe von der Quellgruppe1202 während eines normalen (das heißt ausfallsfreien) Betriebes empfängt. Die Verarbeitung beginnt bei einem ersten Schritt1302 , bei dem die Ein-/Ausgabe durch das lokale Ziel1204 empfangen wird. Auf den Schritt1302 folgt ein Testschritt1304 , bei dem bestimmt wird, ob die empfangenen Daten der Durchführung eines Zyklusschaltvorgangs entsprechen. Wenn dies der Fall ist, geht die Steuerung von dem Schritt1304 auf einen Testschritt1306 über, bei dem bestimmt wird, ob zwei oder mehrere Zyklusschaltvorgänge aufgetreten sind, und zwar seit dem letzten Mal, als der Zustand umgeschaltet wurde. Wenn dies nicht der Fall ist, ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Schritt1306 zu einem Schritt1307 über, bei dem bestimmt wird, ob die momentan inaktive SDDF-Session, das heißtSDDF_X gelöscht ist. Wenn dies der Fall ist geht die Steuerung von dem Schritt1307 zu einem Schritt1308 über, bei dem der Zustand, welcher bei dem Schritt1242 des Flussdiagramms1230 von27 initialisiert wurde, umgeschaltet wird. Wie hier an anderer Stelle erläutert wird, wird der Zustand dazu verwendet, zu bestimmen, welche derSDDF_1 undSDDF_2 aktiviert und deaktiviert wird. - Auf den Schritt
1308 folgt ein Schritt1309 , bei dem eine der SDDF-Sessionen,SDDF_1 oderSDDF_2 , wie dies durch den Zustand angezeigt wird, aktiviert wird. Auf den Schritt1309 folgt ein Schritt1312 , bei dem die andere der SDDF-Sessionen deaktiviert wird. Nach dem Schritt1312 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1307 bestimmt wird, dassSDDF_X nicht gelöscht ist, geht die Steuerung von dem Schritt1307 zu einem Schritt1313 über, bei dem bestimmt wird, ob das Löschen vonSDDF_X bereits gestartet worden ist (das heißt in einer früheren Iteration). Wenn dies der Fall ist, ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Schritt1313 zu einem Schritt1314 über, bei dem ein Prozess zum Löschen vonSDDF_X begonnen wird. Nach dem Schritt1314 ist die Verarbeitung vollendet. - Wenn bei dem Schritt
1304 bestimmt wird, dass die empfangenen Daten nicht einem Zyklusschaltvorgang entsprechen, geht die Steuerung von dem Testschritt1304 zu einem Schritt1316 über, bei dem die Ein-/Ausgabe ausgeführt wird. Wenn beispielsweise die Ein-/Ausgabe aus einer Schreiboperation besteht, dann werden bei dem Schritt1316 Daten in den Speicherbereich des lokalen Zieles1204 geschrieben. Auf den Schritt1316 folgt ein Schritt1317 , bei dem bestimmt wird, ob die Ein-/Ausgabe-Operation aus einem Schreibvorgang besteht. Wenn dies nicht der Fall ist (z. B. besteht die Ein-/Ausgabe-Operation aus einer Leseoperation), ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Schritt1317 zu einem Schritt1318 über, bei dem ein Bit in einer geeigneten einen der SDDF-Sessionen, nämlichSDDF_1 oderSDDF_2 (SDDF_X oderSDDF_Y ), gesetzt wird, abhängig davon, welche der SDDF-Sessionen aktiviert ist. Nach dem Schritt1318 ist die Verarbeitung vollendet. - Gemäß
29 veranschaulicht ein Flussdiagramm1320 Schritte, die in Verbindung mit dem Sammeln von Wiederherstelldaten an dem entfernt gelegenen Ziel1206 durchgeführt werden. Im Gegensatz zu dem lokalen Ziel1204 , das immer Wiederherstelldaten während eines Dauerzustandsbetriebes sammelt, kann das entfernt gelegene Ziel1206 Wiederherstelldaten nicht sammeln, wenn sie nicht und bis sie ein Signal empfängt, dieses zu tun. Bei einer hier beschriebenen Ausführungsform kann die Quellgruppe1202 solch ein Signal zu dem entfernt gelegenen Ziel1206 liefern, wenn die Quellgruppe1202 beispielsweise detektiert, dass die Verbindung(en) zwischen der Quellgruppe1202 und dem lokalen Ziel1204 nicht arbeitet bzw. arbeiten und/oder wenn die Quellgruppe1202 detektiert, dass das lokale Ziel1204 Daten nicht richtig empfängt oder verarbeitet. Bei anderen Ausführungsformen oder bei anderen Situationen kann das entfernt gelegene Ziel1206 ein geeignetes Signal von einem anderen Ort oder Element als von der Quellgruppe1202 empfangen. - Die Verarbeitung beginnt bei einem ersten Schritt
1322 , bei dem eine dritte SDDF-SessionSDDF_3 erzeugt wird. Auf den Schritt1332 folgt ein Schritt1324 , bei dem die Bitmap der SDDF-Session, die bei dem Schritt1322 erzeugt wurde, gelöscht wird. Auf den Schritt1324 folgt ein Schritt1326 , bei dem ein Tokenwert (hier an anderer Stelle detaillierter beschrieben) auf Null gesetzt wird. Nach dem Schritt1326 ist die Verarbeitung vollendet. - Gemäß
30 veranschaulicht ein Flussdiagramm1330 Schritte, die durch das entfernt gelegene Ziel1206 in Verbindung mit dem Sammeln von Wiederherstelldaten ausgeführt werden. Die Verarbeitung beginnt bei einem ersten Schritt1331 , bei dem das entfernt gelegene Ziel1206 auf eine Ausfallnachricht von der Quellgruppe1202 wartet oder von irgendeiner anderen Quelle her, je nachdem. Sobald eine Ausfallnachricht empfangen worden ist, geht die Steuerung von dem Schritt1331 zu einem Schritt1332 über, bei dem dieSDDF_3 -Session aktiviert wird und damit beginnt, Daten zu sammeln, welche die Spuren (oder andere geeigneten Dateninkremente) des entfernt gelegenen Zieles1206 betreffen, auf welche ein Schreibvorgang ausgeführt worden ist. Es sei jedoch darauf hingewiesen, dassSDDF_3 die Schreibvorgänge wiedergibt, die festgeschrieben worden sind (das heißt um eines hinter dem momentanen empfangenen Zyklus liegen). - Auf den Schritt
1332 folgt ein Schritt1333 , bei dem ein Tokenwert (weiter unten beschrieben) auf Null initialisiert wird. Auf den Schritt1333 folgt ein Schritt1334 , bei dem das entfernt gelegene Ziel1206 eine Ein-/Ausgabe von der Quellgruppe1202 empfängt. Es sei darauf hingewiesen, dass die bei dem Schritt1334 empfangene Ein-/Ausgabe geordnete Schreibvorgangsdaten repräsentieren kann, welche die lokale Gruppe1202 zu dem entfernt gelegenen Ziel1206 in einem ausfallfreien Modus sendet. - Auf den Schritt
1334 folgt ein Testschritt1336 , bei dem bestimmt wird, ob die von der Quellgruppe1202 bei dem Schritt1334 empfangene Ein-/Ausgabe einen Zyklusschaltvorgang durch die Quellgruppe1202 indiziert. Wenn dies nicht der Fall ist (das heißt die Daten bestehen aus konventionell geordneten Schreibdaten, die auf das entfernt gelegene Ziel1206 geschrieben werden sollen, oder aus irgendeinem anderen Datentyp), geht die Steuerung von dem Testschritt1336 zurück zu dem Schritt1334 über, um die nächste Ein-/Ausgabe zu empfangen. - Wenn bei dem Testschritt
1336 bestimmt wird, dass die Daten von der Quellgruppe1202 einen Zyklusschaltvorgang anzeigen, dann geht die Steuerung von dem Testschritt1336 zu einem Schritt1338 über, um den Token zu inkrementieren, der die Anzahl der Zyklusschaltvorgänge seit Beginn der Sammlung von Wiederherstelldaten nachverfolgt. Auf den Schritt1338 folgt ein Schritt1342 , bei dem die Bitmap vonSDDF_3 gesetzt wird, um Daten des festgeschriebenen Zyklus wiederzugeben, die geschrieben worden sind. Es sei darauf hingewiesen, dass die Verarbeitung bei dem Schritt1342 automatisch in Verbindung mit dem Betrieb der aktivierten SDDF-Sessionen ausgeführt werden kann, in welchem Fall es nicht erforderlich sein kann, den Schritt1342 zu einem Teil des Wiederherstellprozesses zu machen, der in30 gezeigt ist. - Es sei erwähnt, dass der festgeschriebene Zyklus der Zyklus ist, der zum Sammeln von Daten vor dem Zyklusschaltvorgang verwendet wird. Auf den Schritt
1342 folgt ein Testschritt1344 , bei dem bestimmt wird, ob die Verarbeitung vollendet ist (das heißt der Sammelvorgang von Fehler-Wiederherstelldaten vollendet ist). Die Verarbeitung kann vollendet werden, wenn die Fehlersituation (z. B. eine ausgefallene Verbindung von der lokalen Gruppe1202 zu dem lokalen Ziel1204 ) wieder in Ordnung gebracht worden ist oder wenn beispielsweise das lokale Ziel1204 und das entfernt gelegene Ziel1206 synchronisiert sind (weiter unten noch erläutert). Wenn bei dem Schritt1344 bestimmt wird, dass die Verarbeitung nicht vollendet ist, dann geht die Steuerung von dem Testschritt1344 zurück zu dem Schritt1334 über, um eine andere Ein-/Ausgabe zu empfangen. Im anderen Fall geht die Steuerung von dem Schritt1344 zurück zu dem Schritt1331 über, um auf eine neue Ausfallnachricht zu warten. Es sei darauf hingewiesen, dass bei einigen Ausführungsformen das Vollenden der Verarbeitung bei dem Schritt1344 auch die Rückstellung bestimmter Wiederherstellparameter bewirken kann, wie weiter unten detaillierter erläutert wird. - Gemäß
31 zeigt ein Flussdiagramm1360 Schritte an, die in Verbindung mit der Synchronisation des lokalen Zieles1204 und des entfernt gelegenen Zieles1206 ausgeführt werden. Wie weiter oben erläutert ist, können das lokale Ziel1204 und das entfernt gelegene Ziel1206 synchronisiert werden, indem Daten zwischen diesen übertragen werden, und zwar unter Verwendung der Kommunikationsverbindung1208 . Nach der Synchronisation kann das System an dem lokalen Ziel1204 oder an dem entfernt gelegenen Ziel1206 unter Verwendung des anderen als eine Spiegelung neu gestartet werden. - In Verbindung mit der Synchronisation kann es nützlich sein, eine Entscheidung zu treffen, welches der Ziele, das lokale Ziel
1204 oder das entfernt gelegene Ziel1206 , die letzten (das heißt auf dem neusten Stand befindlichen) Daten enthält, so dass die Daten von demjenigen Ziel, dem entfernt gelegenen Ziel1206 oder dem lokalen Ziel1204 , welches die Daten auf dem neusten Stand enthält, aus auf das andere Ziel übertragen werden. - Die Verarbeitung für das Flussdiagramm
1360 beginnt bei einem ersten Schritt1362 , bei dem die Verbindungen zwischen der Quellgruppe1202 und dem lokalen Ziel1204 und die Verbindungen zwischen der Quellgruppe1202 und dem entfernt gelegenen Ziel1206 abgebaut werden. Das Abbauen der Verbindungen bei dem Schritt1362 trägt dazu bei, sicherzustellen, dass der Synchronisationsprozess nicht korrumpiert wird. Auf den Schritt1362 folgt ein Schritt1364 , bei dem die SDDF-Pläne [maps], die während des Sammelvorganges der Wiederherstellinformationen erzeugt wurde, aufbewahrt werden. Auf den Schritt1364 folgt ein Schritt1366 , bei dem die geordneten Schreibvorgänge zwischen der Quellgruppe1202 und dem lokalen Ziel1204 beendet werden, und zwar aus Gründen ähnlich dem Abbauen der Verbindungen bei dem Schritt1362 . - Auf den Schritt
1366 folgt ein Testschritt1368 , bei dem bestimmt wird, ob der Tokenwert (weiter oben erläutert) größer ist als ein vorbestimmter Wert N. Es sei erwähnt, dass der Tokenwert die Zahl der Zyklusschaltvorgänge angibt, die aufgetreten sind, seit das Sammeln der Fehler-Wiederherstelldaten an dem entfernt gelegenen Ziel1206 begonnen hat. Wenn die Verbindung zwischen der Quellgruppe1202 und dem lokalen Ziel1204 nicht gearbeitet hat und das entfernt gelegene Ziel1206 mit dem Sammeln von Wiederherstelldaten begonnen hat, dann kann das entfernt gelegene Ziel1206 mehr Daten auf dem neuesten Stand enthalten, als das lokale Ziel1204 . Dies wird dadurch ermittelt, dass man auf den Wert des Token blickt, der die Zahl der Zyklusschaltvorgänge angibt, die aufgetreten sind, seit das entfernt gelegene Ziel1206 ein Signal empfangen hat, um mit dem Sammeln von Wiederherstelldaten zu beginnen. Wenn somit bei dem Testschritt1368 bestimmt wird, dass der Token größer ist als ein gewisser vorbestimmter Wert N (z. B. zwei), geht die Steuerung von dem Testschritt1368 zu einem Schritt1371 über, bei dem die Bitmaps für alle die SDDF-Sessionen (SDDF_1 ,SDDF_2 undSDDF_3 ) einer ODER-Funktion unterworfen werden (unter Verwendung eines inklusiven ODER-Gliedes), um die Spuren (oder andere Datenmengen) des entfernt gelegenen Zieles1206 und möglicherweise des lokalen Ziels1204 zu bestimmen, die den Daten für die aktiven und inaktiven Puffer entsprechen, die gesendet wurden oder sich in der Übermittlung befinden zwischen der Quellgruppe1202 und dem entfernt gelegenen Ziel1206 , bevor der Ausfall der Quellgruppe aufgetreten ist, als auch um mögliche Daten zu bestimmen, die an dem lokalen Ziel1204 abweichend sein können. - Auf den Schritt
1371 folgt ein Schritt1372 , bei dem das entfernt gelegene Ziel1206 Daten von den Spuren sendet, entsprechend den gesetzten Bits der Bitmap, die das Ergebnis der ODER-Verknüpfung der drei Bitmaps fürSDDF_1 ,SDDF_2 undSDDF_3 war. Die Daten von diesen Spuren können zu dem lokalen Ziel1204 kopiert werden, so dass das entfernt gelegene Ziel1206 und das lokale Ziel1204 synchronisiert werden. Nach dem Schritt1372 ist die Verarbeitung vollendet. Bei einer hier beschriebenen Ausführungsform kann N so gesetzt werden, dass es nicht kleiner ist als Zwei. Es sei auch darauf hingewiesen, dass es möglich ist, den Betrieb mit einem Host wieder aufzunehmen, der an ein geeignetes Ziel, das lokale Ziel1204 oder das entfernt gelegene Ziel1206 gekoppelt ist, und zwar vor der Vollendung der Kopien, die bei dem Schritt1376 oder bei dem Schritt1372 eingeleitet wurden. - Wenn bei dem Testschritt
1368 bestimmt wird, dass der Token keinen Wert größer als N aufweist (z. B. der Token Null ist), dann geht die Steuerung von dem Testschritt1368 zu einem Schritt1374 über, bei dem die Bitmaps für alle die SDDF-Sessionen (SDDF_1 ,SDDF_2 und, wenn vorhanden,SDDF_3 ) einer ODER-Funktion unterworfen werden (unter Verwendung eines Inklusiv-ODER-Gliedes), um die Spuren (oder andere Datenmengen) des lokalen Zieles1204 zu bestimmen, die den Daten für die aktiven und inaktiven Puffer entsprechen, die gesendet wurden oder sich in der Übermittlung befinden zwischen der Quellgruppe1202 und dem entfernt gelegenen Ziel1206 , und zwar vor dem Ausfall der Quellgruppe1202 . Auf den Schritt1374 folgt ein Schritt1376 , bei dem die Daten entsprechend der ODER-Verknüpfung der Bitmaps von dem lokalen Ziel1204 zu dem entfernt gelegenen Ziel1206 über die Kommunikationverbindung1208 gesendet werden. Sobald die Daten von dem lokalen Ziel1204 zu dem entfernt gelegenen Ziel1206 gesendet worden sind, sind das lokale Ziel1204 und das entfernt gelegene Ziel1206 synchronisiert. Nach dem Schritt1376 ist die Verarbeitung vollendet. - Die Schritte
1372 ,1374 ,1376 können unter Verwendung einer beliebigen Anzahl von geeigneten Techniken realisiert werden. Beispielsweise kann ein Hintergrund-Kopiervorgang eingeleitet werden, um die Daten unter Verwendung der Bits zu kopieren, die durch das Ergebnis derODER -Verknüpfung der Bitmaps derSDDF -Sessionen angezeigt werden. Bei einer hier beschriebenen Ausführungsform werden die Schritte1372 ,1374 ,1376 unter Verwendung vonRDF ausgeführt, wobei ein R1/R2-Paar zuerst erstellt wird, und zwar unter Verwendung von beispielsweise dem dynamischen RDF-Mechanismus, der in derUS-Patentanmeldung Nr. 09/997,810 1204 und/oder dem entfernt gelegenen Ziel1206 , um den RDF-Mechanismus zu veranlassen, einen Hintergrund-Kopiervorgang durchzuführen. - Gemäß
32 veranschaulicht ein Flussdiagramm1380 detaillierter die Schritte, die in Verbindung mit dem Schritt1366 zur Beendigung der geordneten Schreibvorgänge des Flussdiagramms1360 von31 durchgeführt werden. Es sei darauf hingewiesen, dass die Verarbeitung gemäß32 ein Aufräumen [clean-up] veranschaulicht, wenn die Quellgruppe1202 eine einzelne Speichervorrichtung verwendet. In Fällen, bei denen die Quellgruppe1202 mehr als eine Speichervorrichtung enthält, kann stattdessen die Verarbeitung verwendet werden, die in23 veranschaulicht ist. - Die Verarbeitung beginnt bei einem ersten Testschritt
1382 , bei dem bestimmt wird, ob alle geordneten Schreibvorgangsdaten, die durch das entfernt gelegene Ziel1206 von der Quellgruppe1202 empfangen wurden, vollständig verarbeitet worden sind (durch das entfernt gelegene Ziel gesichert worden sind). Das heißt, bei dem Testschritt1382 wird bestimmt, ob irgendwelche Daten an dem entfernt gelegenen Ziel1206 , die den geordneten Schreibvorgangszyklen entsprechen, auf dem Plattenraum des entfernt gelegenen Zieles1206 gespeichert worden sind oder wenigstens in einem Cachespeicher vorhanden sind und für ein Schreiben zu dem Plattenraum markiert sind. Wenn bei dem Testschritt1382 festgestellt wird, dass alle geordneten Schreibvorgangsdaten an dem entfernt gelegenen Ziel1206 verarbeitet worden sind, ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1382 bestimmt wird, dass einige der geordneten Schreibvorgangsdaten von der Quellgruppe1202 noch nicht verarbeitet worden sind, geht die Steuerung von dem Testschritt1382 zu einem Testschritt1384 über, bei dem bestimmt wird, ob die empfangenen, jedoch unbehandelten geordneten Schreibvorgangsdaten an dem entfernt gelegenen Ziel1206 einem vollständigen geordneten Schreibvorgangszyklus entsprechen. Es sei erwähnt, dass, wenn die Quellgruppe1202 Daten entsprechend einem bestimmten Zyklus zu dem entfernt gelegenen Ziel1206 sendet, der Zyklus an dem entfernt gelegenen Ziel1206 nicht vollendet ist, wenn nicht und bis eine Festschreibungsnachricht von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 gesendet wird. Wenn bei dem Testschritt1384 bestimmt wird, dass die nicht verarbeiteten Daten einem vollständigen geordneten Schreibzyklus entsprechen, geht die Steuerung von dem Testschritt1384 zu einem Schritt1385 über, bei dem die Daten für den Zyklus gespeichert werden, indem die Daten auf der Platte des entfernt gelegenen Zieles1206 gesichert werden und/oder die Daten in dem Cachespeicher der entfernt gelegenen Speichervorrichtung1206 zum Schreiben auf die Platte derselben markiert werden. Nach dem Schritt1385 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1384 bestimmt wird, dass die unverarbeiteten, geordneten Schreibvorgangsdaten von der Quellgruppe1202 nicht einem kompletten Zyklus entsprechen, dann geht die Steuerung von dem Testschritt1384 zu einem Schritt1386 über, bei dem Ungültigkeits-Bits in der Vorrichtungstabelle des entfernt gelegenen Zieles1206 gesetzt werden. Die Ungültigkeits-Bits, die bei dem Schritt1386 gesetzt werden, zeigen an, dass Spuren (oder ein anderes Dateninkrement) des entfernt gelegenen Zieles1206 ungültige Daten enthalten und daher von einer anderen Vorrichtung her kopiert werden müssen, um auf den neusten Stand zu gelangen. In diesem Fall kann die andere Vorrichtung aus dem lokalen Ziel1204 bestehen, abhängig davon, welches der Ziele, das lokale Ziel1204 oder das entfernt gelegene Ziel1206 , die auf dem neusten Stand befindlichen Informationen enthält. Die speziellen Spuren (oder andere Datenelemente), die auf ungültig in der Vorrichtungstabelle des entfernt gelegenen Zieles1206 gesetzt werden, entsprechen den Spuren, die durch die unverarbeiteten, geordneten Schreibvorgangsdaten angezeigt werden, welche von der Quellgruppe1202 empfangen werden. Auf den Schritt1386 folgt ein Schritt1387 , bei dem die unbehandelten, geordneten Schreibvorgangsdaten für den unvollständigen Zyklus gelöscht werden. Nach dem Schritt1387 ist die Verarbeitung vollendet. - Gemäß
33 veranschaulicht ein Flussdiagramm1390 detaillierter Schritte, die in Verbindung mit dem Schritt1376 ausgeführt werden, wobei Daten von dem lokalen Ziel1204 zu dem entfernt gelegenen Ziel1206 kopiert werden, oder in Verbindung mit dem Schritt1372 , bei dem Daten von dem entfernt gelegenen Ziel1206 zu dem lokalen Ziel1204 kopiert werden. Die Verarbeitung beginnt bei einem ersten Schritt1392 , bei welchem die ODER-Verknüpfung vonSDDF_1 ,SDDF_2 undSDDF_3 (von dem Schritt1374 ) dazu verwendet wird, eine Vorrichtungstabelle bei demjenigen der Ziele, dem lokalen Ziel1204 oder dem entfernt gelegenen Ziel1206 , zu setzen, das dieR1 -Vorrichtung nach der Wiederherstellung sein wird. Wenn Daten von derR1 -Vorrichtung zu derR2 -Vorrichtung kopiert werden sollen, dann werden die Vorrichtungstabellenorte, welche den entfernt gelegenen Spuren entsprechen, bei dem Schritt1392 gesetzt. Wenn im anderen Fall Daten von derR2 -Vorrichtung zu derR1 -Vorrichtung kopiert werden sollen, werden die Vorrichtungstabellenorte, welche den lokalen Spuren entsprechen, bei dem Schritt1392 gesetzt. In vielen Fällen werden die Spuren, die einer Modifikation der Tabelle bei dem Schritt1392 entsprechen, die gleichen oder ein übergeordneter Satz der Modifikation für die Tabelle aus dem Schritt1386 sein, wie oben erläutert wurde. - Auf den Schritt
1392 folgt ein Schritt1396 , bei dem ein Hintergrund-Kopierprozess begonnen wird. Der Hintergrund-Kopierprozess, der bei dem Schritt1396 begonnen wurde, bewirkt, dass Daten in einem Hintergrundprozess kopiert werden. Nach dem Schritt1396 ist die Verarbeitung vollendet. - Gemäß
34 veranschaulicht ein Flussdiagramm1450 Schritte, die in Verbindung mit der Wiederinitialisierung der Wiederherstellparameter ausgeführt werden, sobald der normale Betrieb wiederhergestellt worden ist, und zwar zwischen der Quellgruppe1202 , dem lokalen Ziel1204 und dem entfernt gelegenen Ziel1206 . Die Verarbeitung beginnt bei einem ersten Schritt1452 , bei dem beide SDDF-Sessionen, nämlichSDDF_1 undSDDF_2 , deaktiviert werden. Auf den Schritt1452 folgt ein Schritt1454 , bei demSDDF_1 gelöscht wird. Auf den Schritt1454 folgt ein Schritt1456 , bei demSDDF_2 gelöscht wird. Auf den Schritt1456 folgt ein Schritt1458 mit einem Zeiger, der zu einer derSDDF -Sessionen zeigt und dazu gebracht wird, aufSDDF_1 zu zeigen. Auf den Schritt1458 folgt ein Schritt1462 , bei demSDDF_1 aktiviert wird. Nach dem Schritt1462 ist die Verarbeitung vollendet. - Gemäß
35 veranschaulicht ein Flussdiagramm1470 Schritte, die in Verbindung mit der Rückstellung der Wiederherstellparameter ausgeführt werden, die durch das entfernt gelegene Ziel1206 verwendet werden. Die Verarbeitung beginnt bei einem ersten Schritt1472 , bei demSDDF_3 deaktiviert wird. Auf den Schritt1472 folgt ein Schritt1474 , bei demSDDF_3 gelöscht wird. Auf den Schritt1474 folgt ein Schritt1476 , bei dem der Token, der durch das entfernt gelegene Ziel1206 verwendet wird, gelöscht wird (auf Null gesetzt wird). Nach dem Schritt1476 ist die Verarbeitung vollendet. Es sei darauf hingewiesen, dass bei einigen Ausführungsformen es möglich ist, auchSDDF_3 bei oder nach dem Schritt1472 zu beenden, so dassSDDF_3 bei dem Schritt1322 des Flussdiagramms1320 von29 wieder erzeugt werden kann, wie oben dargelegt worden ist. - Gemäß
36 zeigt ein Diagramm eine mögliche Konfiguration der Quellgruppe1202 . In dem Diagramm von36 enthält die Quellgruppe1202 einen Host1502 , der an eine einzelne lokale Speichervorrichtung1504 gekoppelt ist. Die lokale Speichervorrichtung1202 ist sowohl an das lokale Ziel1204 als auch das entfernt gelegene Ziel1206 gekoppelt. Bei der in36 gezeigten Konfiguration kann die gesamte Verarbeitung, die hier beschrieben wird, durch die lokale Speichervorrichtung1504 durchgeführt werden, oder alternativ kann ein Teil der Verarbeitung durch den Host1502 durchgeführt werden, wenn dies geeignet ist. - Gemäß
37 zeigt ein Diagramm eine andere Konfiguration der Quellgruppe1202 , bei der ein Host1512 an eine Vielzahl von lokalen Speichervorrichtungen1514 -1516 gekoppelt ist. Jede der lokalen Speichervorrichtungen1514 -1516 ist sowohl an das lokalen Ziel1204 als auch das entfernt gelegene Ziel1206 gekoppelt. Bei der in37 gezeigten Konfiguration kann der Host1512 einen Teil der hier beschriebenen Verarbeitung handhaben, wie beispielsweise den Zyklusschaltvorgang für alle lokalen Speichervorrichtungen1514 -1516 in Verbindung mit geordneten Schreibvorgängen. - In einigen Fällen kann es wünschenswert sein, einen Zyklusschaltvorgang zu verhindern, wenn in Verbindung mit Datenübertragungen zwischen der Quellgruppe
1202 und dem lokalen Ziel1204 eine Schwierigkeit auftritt. Natürlich kann in Fällen eines vollständigen Ausfalls des lokalen Zieles1204 oder eines vollständigen Ausfalls der Verbindungen zwischen der Quellgruppe1202 und dem lokalen Ziel1204 das System vollständig aufhören zu arbeiten und eine Wiederherstellung erfolgt dann in der oben beschriebenen Weise. Jedoch kann es in anderen Fällen, bei denen ein intermittierender Ausfall auftritt (z. B. vorübergehender Verbindungsverlust für die Verbindungen zwischen der Quellgruppe1202 und dem lokalen Ziel1204 ), wünschenswert sein, einfach keinen Zyklusschaltvorgang an der Quellgruppe1202 in Verbindung mit der Kommunikation zwischen der Quellgruppe1202 und dem entfernt gelegenen Ziel1206 durchzuführen, wenn nicht und bis entsprechende Daten zuerst erfolgreich von der Quellgruppe1202 zu dem lokalen Ziel1204 übertragen worden sind. Diese Verbesserung wird weiter unten beschrieben. - Gemäß
38 veranschaulicht ein Flussdiagramm200' einen modifizierten Abschnitt des Flussdiagramms200 von6 , welcher Schritte darstellt, die in Verbindung mit der Übertragung von Daten von einer inaktiven Liste der Listen72 ,74 (in3 gezeigt) zu einer anderen Speichervorrichtung durchgeführt werden. Das Flussdiagramm200' zeigt den Schritt204 und den Schritt212 , die auch in dem Flussdiagramm200 enthalten sind und weiter oben in Verbindung mit dem Text erläutert wurden, der6 erklärt. Wie jedoch noch weiter unten detaillierter erläutert werden wird, enthält das Flussdiagramm200' zusätzliche neue Schritte, die in dem Flussdiagramm200 von6 nicht vorhanden sind. - Auf den Schritt
204 folgt ein Testschritt1602 , bei dem bestimmt wird, ob die Daten, die zu einer anderen Speichervorrichtung übertragen werden, aus speziellen Daten bestehen. Wie in Verbindung mit dem Flussdiagramm200' verwendet wird, betreffen spezielle Daten bei dem Schritt1602 Daten, die von der Quellgruppe1202 zu sowohl dem lokalen Ziel1204 als auch dem entfernt gelegenen Ziel1206 übertragen werden. Bei einer hier beschriebenen Ausführungsform können die speziellen Daten unter Verwendung eingebauter Mechanismen identifiziert werden, um zu ermitteln, ob die Daten in einer Warteschlange zur Übertragung sowohl zu dem lokalen Ziel1204 als auch zu dem entfernt gelegenen Ziel1206 eingereiht werden. Natürlich können auch andere Mechanismen zum Identifizieren und zum Testen der speziellen Daten verwendet werden. - Wenn bei dem Testschritt
1602 bestimmt wird, dass die Daten nicht aus speziellen Daten bestehen, geht die Steuerung von dem Schritt1602 zu dem Schritt212 über, um Daten in der oben beschriebenen Weise in Verbindung mit dem Flussdiagramm200 von6 zu senden. Nach dem Schritt212 wird die Verarbeitung fortgeführt, wie dies in dem Flussdiagramm200 von6 gezeigt ist und hier an anderer Stelle beschrieben wurde. Wenn bei dem Testschritt1602 bestimmt wird, dass die zu sendenden Daten aus speziellen Daten bestehen (also von der Quellgruppe1202 sowohl zu der lokalen Speichervorrichtung1204 als auch der entfernt gelegenen Speichervorrichtung1206 übertragen werden sollen), geht die Steuerung von dem Testschritt1602 zu einem Testschritt1604 über, bei dem bestimmt wird, ob die spezielle Übertragung, die überprüft wird, aus einer Übertragung der speziellen Daten von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 besteht. Wie hier an anderer Stelle erläutert worden ist, ist es wünschenswert zu vermeiden, dass Daten von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 gesendet werden, wenn nicht und bis die Daten zunächst erfolgreich von der Quellgruppe1202 zu dem lokalen Ziel1204 übertragen worden sind. Somit wird bei dem Test bei dem Schritt1604 bestimmt, ob die bestimmte überprüfte Datenübertragung eine Übertragung von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 ist. Wenn dies nicht der Fall ist, geht die Steuerung von dem Testschritt1604 zu dem Schritt212 über, um die Verarbeitung in der hier an anderer Stelle beschriebenen Weise fortzusetzen. Im anderen Fall, wenn bei dem Testschritt1604 bestimmt wird, dass die überprüften Daten einer Übertragung von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 entsprechen, geht die Steuerung von dem Testschritt1604 zu einem Testschritt1606 über, bei dem bestimmt wird, ob die entsprechende Übertragung der Daten von der Quellgruppe1202 zu dem lokalen Ziel1204 an früherer Stelle erfolgreich vollendet worden ist. Das heißt, für eine/n gegebene/n Zeile oder Abschnitt der Daten, die sowohl zu dem entfernt gelegenen Ziel1206 als auch zu dem lokalen Ziel1204 übertragen werden, wird bei dem Test entsprechend dem Schritt1606 bestimmt, ob die Übertragung von der Quellgruppe1202 zu dem lokalen Ziel1204 erfolgreich ausgeführt worden ist. Wenn dies nicht der Fall ist, geht die Steuerung von dem Testschritt1606 zu einem Schritt1607 über, bei welchem eine Fehlerverarbeitung/Testverarbeitung durchgeführt wird. - In einigen Fällen bewirkt die Unfähigkeit, Daten von der Quellgruppe
1202 zu dem lokalen Ziel1204 zu übertragen, dass das System Daten an dem entfernt gelegenen Ziel1206 zu sammeln beginnt, indem beispielsweise veranlasst wird, dass eine Ausfallnachricht zu dem entfernt gelegenen Ziel gesendet wird (siehe hierzu das Flussdiagramm1330 von30 und die zugeordnete Beschreibung) und indem aus der Verarbeitung ausgestiegen wird, die durch das Flussdiagramm200' von38 veranschaulicht ist, so dass die Daten von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 ungeachtet davon gesendet werden, ob die Daten jemals erfolgreich von der Quellgruppe1202 zu dem lokalen Ziel1204 gesendet wurden. Es kann auch eine andere Verarbeitung auftreten, wie beispielsweise das Setzen von Ungültigkeits-Bits in einer Vorrichtungstabelle für Daten, die nicht von der Quellgruppe1202 zu dem lokalen Ziel1204 übertragen werden. Es sei darauf hingewiesen, dass dann, wenn die Verbindung zwischen der Quellgruppe1202 und dem lokalen Ziel1204 wiederhergestellt wird, es möglich ist, das entfernt gelegene Ziel1204 zu synchronisieren und einen Dauerzustandsbetrieb wiederherzustellen, wie dies hier beschrieben wurde (z. B. die Schritte des Flussdiagramms200' ). - Ein Kriterium zum Bestimmen, ob die oben beschriebene Fehlerverarbeitung durchzuführen ist oder nicht, kann entsprechend einer Zahl von funktionellen Faktoren eingestellt werden, wie dies von Fachleuten ohne weiteres erkannt werden kann. Bei einer hier beschriebenen Ausführungsform werden die Kriterien entsprechend der Wahrscheinlichkeit eingestellt, dass ein Ausfall der Verbindung zwischen der Quellgruppe
1202 und dem lokalen Ziel1204 und/oder ein Ausfall des lokalen Zieles1204 vorhanden ist. Beispielsweise kann die Fehlerverarbeitung bei dem Schritt1607 festlegen, dass ein Ausfall aufgetreten ist, wenn eine bestimmte Zeitdauer verstrichen ist, ohne dass Daten erfolgreich von der Quellgruppe1202 zu dem lokalen Ziel1204 übertragen wurden. Wenn bei der Fehlerbearbeitung bei dem Schritt1607 bestimmt wird, dass kein Ausfall aufgetreten ist (und somit die Verarbeitung fortgesetzt werden sollte), geht die Steuerung von dem Schritt1607 zu einem Testschritt1608 über, bei dem bestimmt wird, ob mehr inaktive Daten von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 gesendet werden sollen. Wenn dies der Fall ist, geht die Steuerung von dem Testschritt1608 zu einem Schritt1612 über, bei dem ein Zeiger, der durch die Daten iteriert (z. B. durch die Elemente der inaktiven der Listen74 ,76 hindurch iteriert), so eingestellt wird, dass er auf den nächsten inaktiven Block der Daten, die gesendet werden sollen, zeigt. Nach dem Schritt1612 geht die Steuerung zurück zu dem Schritt204 , um die Verarbeitung wie hier an anderer Stelle erläutert fortzusetzen. - Wenn bei dem Testschritt
1608 bestimmt wird, dass nicht mehr inaktive Daten gesendet werden sollen, geht die Steuerung von dem Testschritt1608 zu einem Schritt1614 über, bei welchem der Prozess wartet. Da bereits bestimmt worden ist, dass die gesendeten Daten einer Übertragung von der Quellgruppe1202 zu dem entfernt gelegenen Ziel1206 entsprechen (bei dem Testschritt1604 ) und bereits festgestellt worden ist, dass die entsprechende Übertragung von der Quellgruppe1202 zu dem lokalen Ziel1204 noch nicht vollendet worden ist (entsprechend dem Test bei dem Schritt1606 ), ist es dann, wenn bei dem Testschritt1608 bestimmt worden ist, dass nicht mehr Daten gesendet werden sollen, angemessen, bei dem Schritt1614 zu warten, so dass entweder mehr inaktive Daten verfügbar gemacht werden, um sie zu senden, oder solange zu warten, bis ein anderer Prozess erfolgreich entsprechende Daten von der Quellgruppe1202 zu dem lokalen Ziel1204 überträgt, so dass dadurch das Ergebnis bei dem Testschritt1606 für die nächste Iteration geändert wird. Nach dem Schritt1614 geht die Steuerung zurück zu dem Schritt204 , um die Verarbeitung fortzusetzen, die hier an anderer Stelle beschrieben worden ist. - Wenn bei dem Testschritt
1606 bestimmt wird, dass die entsprechende Übertragung zu dem lokalen Ziel1204 an früherer Stelle erfolgreich vollendet worden ist, geht die Steuerung von dem Testschritt1606 zu einem anderen Testschritt1616 über, um zu bestimmen, ob den zu übertragenden Daten in Verbindung mit der Übertragung mehr als eine Zeile zugeordnet ist (z. B. eine aktive Zeile und eine inaktive Zeile). Wie hier an anderer Stelle erläutert, ist es unter gewissen Umständen möglich, dass mehr als eine Zeile zugeordnet ist, was sonst eine einzige Zeile wäre. Siehe beispielsweise die obige Erläuterung in Verbindung mit dem Flussdiagramm440 von12 und den Schritten446 ,472 ,474 ,476 ,478 . Wenn somit bei dem Testschritt1616 bestimmt wird, dass nicht mehr als eine Zeile vorhanden ist, geht die Steuerung von dem Testschritt1616 zu dem Schritt212 über, um die Verarbeitung in der hier an anderer Stelle beschriebenen Weise fortzusetzen. Wenn im anderen Fall bei dem Testschritt161 bestimmt wird, dass mehr als eine entsprechende Zeile vorhanden ist, geht die Steuerung von dem Testschritt1616 zu einem Testschritt1618 über, bei dem bestimmt wird, ob die Übertragung der anderen Zeilen zu der lokalen Speichervorrichtung1204 erfolgreich gewesen ist, ähnlich dem Test in Verbindung mit der Zeile bei dem Schritt1606 . Wenn bei dem Testschritt1618 bestimmt wird, dass alle anderen entsprechenden Zeilen in richtiger Weise zu der lokalen Speichervorrichtung1204 übertragen worden sind, geht die Steuerung von dem Testschritt1618 zu dem Schritt212 über, um die Verarbeitung in der hier an anderer Stelle beschriebenen Weise fortzusetzen. Im anderen Fall geht die Steuerung von dem Testschritt1618 zu dem Schritt1608 über, was ebenfalls hier an anderer Stelle beschrieben wurde. - Bei einer anderen Ausführungsform des hier beschriebenen Systems ist es möglich, keine COVDs für die
R2 -Vorrichtung zu verwenden, wie diejenigen, die in dem Diagramm240 von7 gezeigt sind. Das heißt, es ist möglich, denR2 -Empfang von asynchronen Daten ohne Verwendung von COVDs bei derR2 -Vorrichtung zu implementieren. - Gemäß
39 zeigt ein Diagramm1640 einen Cachespeicher1642 , der in der entfernt gelegenen Speichervorrichtung26 vorgesehen ist, welche Daten empfängt. Der Cachespeicher1642 enthält eine Vielzahl von Zeilen1652 -1654 , in welchen asynchrone Daten, die von der lokalen Speichervorrichtung24 empfangen werden, platziert werden. Auch ist eine erste ringförmig verkettete Liste (Ringliste)1674 und eine zweite Ringliste1676 gezeigt, welche Zeiger zu den Zeilen1652 -1654 des Cachespeichers1642 enthält. Beispielsweise enthält die Ringliste1674 eine Vielzahl an Zeigern1681 -1685 , von denen jeder auf eine der Zeilen1652 -1654 in dem Cachespeicher1642 zeigt. In ähnlicher Weise enthält die Ringliste1676 eine Vielzahl an Zeigern1691 -1695 , von denen jeder auf eine der Zeilen1652 -1654 des Cachespeichers1642 zeigt. Eine logische Standardvorrichtung1698 ist auch an Abschnitten des Cachespeichers1642 abgebildet [mapped]. - Bei einer hier beschriebenen anderen Ausführungsform entspricht eine der Listen
1674 -1676 einem inaktiven Datenpaket (z. B. ähnlich dem Paket56 , welches in2 gezeigt ist), während eine andere der Listen1674 ,1676 einem aktiven Datenpaket entspricht (z. B. ähnlich dem Paket58 von2 ). Es werden empfangene Daten unter Verwendung eines inaktiven Datenpakets der Datenpakete gesammelt, während das aktive Paket der Datenpakete zum Speichern von Daten an der logischen Standardvorrichtung1698 verwendet wird, wie hier an anderer Stelle in Verbindung mit dem Diagramm240 von7 und dem dazugehörigen Text beschrieben ist. Wenn somit neue Daten ankommen, werden sie in den Cachespeicher1642 platziert und es wird ein neuer Zeiger zu derjenigen der Ringlisten1674 ,1676 hinzugefügt, die dem inaktiven Datenpaket entspricht, wenn die Daten empfangen werden. - In einigen Fällen kann es nützlich sein, dazu befähigt zu sein, zu bestimmen, ob einem Abschnitt der logischen Standardvorrichtung
1698 (oder irgendeiner anderen logischen Vorrichtung) eine Zeile in dem Cache1642 entsprechend den empfangenen Daten zugeordnet ist. Es ist natürlich immer möglich, beide Listen1674 ,1676 durchzugehen, um zu bestimmen, ob eine entsprechende Zeile in dem Cachespeicher1642 vorhanden ist. Es wäre jedoch nützlicher, wenn es einen Weg zur Verwendung spezieller Vorrichtungs-, Zylinder- und von Kopf-Werte einer logischen Vorrichtung geben würde, um zu bestimmen, ob eine entsprechende der Zeilen1652 ,1654 in dem Cachespeicher1642 vorhanden ist und darauf wartet, zu der Vorrichtung hin ausgelesen zu werden. - Gemäß
40 zeigt ein Diagramm1700 eine Hash-Tabelle1702 , die eine Vielzahl von Einträgen1704 -1706 enthält. Bei einer hier beschriebenen Ausführungsform enthält jeder der Einträge1704 -1706 entweder einen Null-Zeiger oder zeigt auf eine der Cachezeilen1652 -1654 , die Daten entspricht, welche empfangen worden sind, jedoch noch nicht an der logischen Standardvorrichtung1698 gespeichert wurden (oder einer anderen logischen Standardvorrichtung). Die Tabelle1702 wird unter Verwendung einer Hash-Funktion indexiert, die eine mathematische Operation durchführt, und zwar unter Verwendung der speziellen Werte der Vorrichtung, des Zylinders und des Kopfes, um einen Index in der Tabelle1702 zu generieren, um den entsprechenden Eintrag zu finden. Wenn somit von derR2 -Vorrichtung Daten empfangen werden, wird die Hash-Funktion auf die Vorrichtung, den Zylinder und den Kopf angewendet, um deren Indexwert in der Tabelle1702 zu finden und es wird dann ein Zeiger zu dem entsprechenden der Einträge1704 -1706 geschrieben, der auf die spezielle Zeile1652 -1654 in dem Cachespeicher1642 zeigt. Sobald die empfangenen Daten in geeigneter Weise zu der logischen Standardvorrichtung1698 hin ausgelesen worden sind (oder zu einer anderen Vorrichtung), wird der entsprechende Eintrag der Einträge1704 -1706 auf Null gesetzt. Auf diese Weise ermöglicht es die Hash-Tabelle1702 , schnell bestimmen zu können, ob ein bestimmter Abschnitt einer logischen Standardvorrichtung empfangenen Daten entspricht, die noch nicht ausgelesen worden sind. Bei dem hier beschriebenen System kann jede geeignete Hash-Funktion dazu verwendet werden, um den Index in der Tabelle1702 zu erzeugen. - In einigen Fällen kann es für bestimmte Vorrichtungs-, Zylinder- und Kopf-Werte möglich sein, einen Index in der Tabelle
1702 zu generieren, welcher der gleiche ist wie ein Index, der durch andere Werte für die Vorrichtung, Zylinder und Kopf generiert wurde. Dies wird als „Kollision“ bezeichnet. In Fällen, bei denen Kollisionen auftreten, wird ein zweiter Eintrag in die Tabelle1702 entsprechend dem gleichen Index vorgesehen und der zweite Eintrag wird mit dem ersten Eintrag verkettet, so dass ein spezieller Index mehr als nur einem Eintrag entsprechen würde. Dies ist durch ein Element1708 veranschaulicht, welches mit dem Element1705 der Tabelle1702 verkettet ist. Somit werden erste Vorrichtung, Zylinder und Kopf gehashed, um zu dem Eintrag1705 zu erzeugen und indexieren, während andere Vorrichtung, Zylinder und Kopf in die Hash-Funktion eingegeben werden, um den gleichen Wert für den Index zu erzeugen. Bei einer hier beschriebenen Ausführungsform wird der Eintrag1705 dazu verwendet, um auf Daten in dem Cachespeicher1642 zu zeigen, entsprechend der ersten Vorrichtung, Zylinder und Kopf, während der Eintrag1708 dazu verwendet wird, um auf Daten in dem Cachespeicher1642 zu zeigen, entsprechend der zweiten Vorrichtung, Zylinder und Kopf. Natürlich kann dann, wenn Daten zu einer geeigneten Vorrichtung ausgelesen werden, der entsprechende der Einträge1705 ,1708 aus der Tabelle1700 beseitigt werden. - Es sei darauf hingewiesen, dass eine beliebige Zahl von Einträgen einem einzelnen Index entsprechen kann, so dass beispielsweise wenn Kollisionen auftreten, die drei getrennte Sätze von Werten für die Vorrichtung, Zylinder und den Kopf dazu veranlassen, den gleichen Index zu erzeugen, dann wären drei (oder mehr) miteinander verkettete Einträge an einem bestimmten Index in der Tabelle
1702 . Es sei auch erwähnt, dass andere geeignete Techniken angewendet werden können, um Kollisionen zu handhaben, inklusive dem Vorsehen von zusätzlichen Tabellen (z. B. einer zweiten Tabelle, einer dritten Tabelle, einer vierten Tabelle usw.). - Gemäß
41 zeigt ein Diagramm1720 eine alternative Ausführungsform einer Hash-Tabelle1722 , die eine Vielzahl an Einträgen1724 -1726 enthält. Die Ausführungsform gemäß41 ist ähnlich der Ausführungsform gemäß40 mit einigen hier beschriebenen Unterschieden. Jeder der Einträge1724 -1726 enthält entweder einen Null-Zeiger oder zeigt zu einer der Cachezeilen1728 ,1732 ,1734 , die in dem Diagramm1720 gezeigt sind und die Daten entsprechen, die empfangen worden sind, jedoch noch nicht an der logischen Standardvorrichtung1698 gespeichert worden sind (oder einer anderen logischen Standardvorrichtung). Die Tabelle1722 wird unter Verwendung einer Hash-Funktion indexiert, die eine mathematische Operation unter Verwendung der speziellen Werte für die Vorrichtung, den Zylinder und den Kopf ausführt, um einen Index in der Tabelle1722 zum Auffinden des entsprechenden Eintrages zu generieren. Wenn somit Daten durch dieR2 -Vorrichtung empfangen werden, wird die Hash-Funktion auf die Vorrichtung, den Zylinder und den Kopf angewendet, um deren Indexwert in Tabelle1722 zu finden und es wird dann ein Zeiger zu dem entsprechenden der Einträge1724 -1726 geschrieben, der zu der bestimmten Zeile1728 ,1732 ,1734 zeigt. Sobald die empfangenen Daten in geeigneter Weise zu der logischen Standardvorrichtung1698 (oder einer anderen Vorrichtung) ausgelesen wurden, wird der entsprechende Eintrag der Einträge1724 -1726 in geeigneter Weise angepasst. Auf diese Weise ermöglicht es die Hash-Tabelle1722 , in schneller Weise zu bestimmen, ob ein bestimmter Abschnitt einer logischen Standardvorrichtung empfangenen Daten entspricht, die noch nicht ausgelesen worden sind. Für das hier beschriebene System kann jede geeignete Hash-Funktion dazu verwendet werden, um den Index in der Tabelle1722 zu erzeugen. - Bei der Ausführungsform, die in
41 gezeigt ist, zeigt in Fällen, bei denen Kollisionen auftreten, die erste Zeile, auf die durch einen Tabelleneintrag gezeigt wird, auf eine zweite Zeile, welche die Kollision verursacht hat. Wenn somit beispielsweise die Zeile1732 und eine Zeile1736 eine Kollision an dem Tabelleneintrag1725 verursachen, zeigt der Tabelleneintrag1725 auf die Zeile1732 , während die Zeile1732 auf die Zeile1736 zeigt. Somit bewirkt eine Kollision keine Änderung in der Tabelle1722 , wenn nachfolgend eine Zeile hinzugefügt wird, da das Hinzufügen der nachfolgenden Zeile einfach eine Änderung des Zeigerwertes für eine frühere Zeile involviert. Natürlich kann eine beliebige Anzahl an Zeilen einem einzelnen Tabelleneintrag entsprechen. - Es sei darauf hingewiesen, dass eine beliebige Anzahl an Einträgen einem einzelnen Index entsprechen kann, so dass beispielsweise dann, wenn Kollisionen auftreten, die bewirken, dass drei getrennte Sitze von Werten für eine Vorrichtung, einen Zylinder und einen Kopf den gleichen Index erzeugen, dann drei (oder mehrere) Einträge miteinander verkettet werden, und zwar bei einem bestimmten Index in der Tabelle
1702 . Es sei auch erwähnt, dass andere geeignete Techniken zur Handhabung von Kollisionen verwendet werden können, inklusive dem Vorsehen von zusätzlichen Tabellen (z. B. einer zweiten Tabelle, einer dritten Tabelle, einer vierten Tabelle usw.). - In einigen Fällen kann es vorteilhaft sein, etwas anderes als das in Diagramm
1200 von26 gezeigte lokale Ziel1204 verwenden zu können. Wenn natürlich das lokale Ziel1204 nicht eine vollständige Spiegelung der Quellgruppe darstellt, wird eine Wiederherstellung an dem entfernt gelegenen Ziel1206 ausgeführt. Jedoch kann das entfernt gelegene Ziel1206 keine Daten enthalten, die auf dem gleichen neuesten Stand sind wie Daten, die synchron von der Quellgruppe1202 zu dem lokalen Ziel1204 geschrieben wurden. Es ist demzufolge wünschenswert, an dem entfernt gelegenen Ziel1206 wiederherstellen zu können, aber Daten zur Verfügung zu haben, die auf dem gleichen neuesten Stand sind, wie Daten, die synchron von der Quellgruppe1202 zu dem lokalen Ziel1204 geschrieben wurden. - Gemäß
42 zeigt ein Diagramm1780 ein System, welches eine Quellgruppe1782 ähnlich der Quellgruppe1202 des Diagramms1200 von26 enthält. Das Diagramm1780 zeigt auch ein entfernt gelegenes Ziel1786 ähnlich dem entfernt gelegenen Ziel1206 des Diagramms1200 von26 . - Das Diagramm
1780 zeigt auch ein lokales Minimal-Speicher-Ziel1788 , das dazu verwendet wird, um synchrone Dateneinträge von der Quellgruppe1782 zu empfangen. Bei einer hier beschriebenen Ausführungsform erscheint das lokale Minimal-Speicher-Ziel1788 für die Quellgruppe1782 als eine Speichervorrichtung ähnlich dem lokalen Ziel1204 des Diagramms1200 von26 . Jedoch ist bei einer hier beschriebenen Ausführungsform das lokale Minimal-Speicher-Ziel1788 keine Spiegelung der Quellgruppe1782 . Stattdessen wird das lokale Minimal-Speicher-Ziel1788 dazu verwendet, um Daten zu speichern, die zu dem entfernt gelegenen Ziel1786 in einem Fall übertragen werden, dass eine Wiederherstellung erforderlich wird. Bei einer hier beschriebenen Ausführungsform werden alle Wiederherstellungsvorgänge an dem entfernt gelegenen Ziel1786 durchgeführt. Bei anderen Ausführungsformen ist es möglich, dass die Quellgruppe1782 weiß, dass sie mit dem lokalen Minimal-Speicher-Ziel1788 verbunden ist. - Die Quellgruppe
1782 kann ähnlich der Quellgruppe1202 des Diagramms1200 von26 arbeiten. Somit liefert die Quellgruppe1782 synchrone Schreibeinträge zu dem lokalen Minimal-Speicher-Ziel1788 und liefert geordnete Schreibeinträge zu dem entfernten Ziel1786 . Anstatt eine Spiegelung für die Quellgruppe1782 zu sein, speichert das lokale Minimal-Speicher-Ziel1788 lediglich die letzten synchronen Schreibeinträge von der Quellgruppe1782 , so dass für den Fall, dass eine Wiederherstellung erforderlich wird, das lokale Minimal-Speicher-Ziel1788 die letzten Schreibeinträge zu dem entfernten Ziel1786 übertragen kann. Wenn Daten von der Quellgruppe1782 zu dem entfernt gelegenen Ziel1786 übertragen werden, werden entsprechende Daten aus dem lokalen Minimal-Speicher-Ziel1788 entfernt, so dass das lokale Minimal-Speicher-Ziel1788 beispielsweise lediglich die letzten zwei Zyklen der geordneten Schreibeintragsdaten zurück behält, da jegliche Zyklen, die älter als die zwei letzten Zyklen sind, bereits an der entfernt gelegenen Speichervorrichtung1786 gespeichert sind. - Gemäß
43 veranschaulicht eine Datenstruktur1800 den Speichervorgang von Daten an dem lokalen Minimal-Speicher-Ziel1788 . Bei einer hier beschriebenen Ausführungsform ist die Datenstruktur1800 eine verkettete Liste mit einer Vielzahl an Elementen1802 -1805 . Ein Anfangs-Zeiger der Liste zeigt zu dem ersten Element1802 . Das erste Element zeigt zu dem zweiten Element1803 , das zweite Element zeigt zu dem dritten Element1804 usw. Die verkettete Liste1800 enthält auch ein letztes Element1805 , welches auf einen Null-Zeiger als ein nächstes Element zeigt, um das Ende der Liste anzuzeigen. Natürlich können andere geeignete Datenstrukturen verwendet werden. - Bei einer hier beschriebenen Ausführungsform ist die Liste
1800 gemäß der Spur und der Header-Lage auf einer logischen Standardvorrichtung sortiert, so dass beispielsweise das Element1802 das erste Element in einer Sequenz von Elementen auf der logischen Standardspeichervorrichtung ist, das zweite Element1803 auf das erste Element1802 folgt usw. Bei einer anderen Ausführungsform ist die Liste1800 gemäß der Reihenfolge sortiert, in welcher die Datenschreibeinträge von der Quellgruppe1782 zu der lokalen Minimal-Speicherstelle1788 geliefert werden. Beide Ausführungsformen werden weiter unten detaillierter beschrieben. - Gemäß
44 zeigt ein Diagramm detaillierter ein Datenelement1820 der verketteten Liste1800 . Das Datenelement1820 enthält ein TRACK-Feld1822 , welches eine Spurzahl anzeigt, die zum Speichern der Daten auf der entsprechenden logischen Standardvorrichtung verwendet wird. Andere Datenspeicherstellen können anstelle der Spurzahl verwendet werden, wie beispielsweise die Sektorzahl, der Versatz [Offset] vom Anfang der logischen Standardvorrichtung oder jeder andere geeignete Indikator. - Das Datenelement
1820 enthält auch eine Zykluszahl1824 (CYCNO), welche die Zyklen anzeigt, die für die Übertragung der Daten von der Quellgruppe1782 zu dem entfernt gelegenen Ziel1786 verwendet werden, wie dies hier an anderer Stelle beschrieben wird. Wenn Daten von der Quellgruppe1782 zu dem lokalen Minimal-Speicher-Ziel1788 übertragen werden, verfolgt das lokale Minimal-Speicher-Ziel1788 Zyklusänderungen nach entsprechend den Übertragungen zwischen der Quellgruppe1782 und dem entfernt gelegenen Ziel1786 und ordnet eine geeignete Zykluszahl dem Datenelement1820 zu, wie dies hier an anderer Stelle detaillierter beschrieben wird. - Das Datenelement
1820 enthält auch ein Datenfeld1826 (DATA), welches den Daten entspricht, die von der Quellgruppe1782 zu dem lokalen Minimal-Speicher-Ziel1788 übertragen wurden. Das Datenelement1820 enthält auch ein nächstes Feld1828 (NEXT), welches dazu verwendet wird, um auf das nächste Datenelement in der verketteten Liste1800 zu zeigen. - Gemäß
45 veranschaulicht ein Flussdiagramm1850 die Schritte, die durch das lokale Minimal-Speicher-Ziel1788 in Verbindung mit dem Empfang von Daten durchgeführt werden, die von der Quellgruppe1782 zu dem lokalen Minimal-Speicher-Ziel1788 geliefert werden. Wie hier an anderer Stelle erläutert wird, kann das lokale Minimal-Speicher-Ziel1788 für die Quellgruppe1782 als eine Spiegelung der Quellgruppe1782 erscheinen. Wie jedoch hier beschrieben, ist das lokale Minimal-Speicher-Ziel1788 nicht notwendigerweise eine Spiegelung der Quellgruppe1782 , sondern enthält stattdessen die letzten Daten von der Quellgruppe1782 . Für den Fall, dass eine Wiederherstellung erforderlich ist, überträgt das lokale Minimal-Speicher-Ziel1788 die dort gespeicherten Daten zu dem entfernt gelegenen Ziel1786 , um die Wiederherstellung zu vereinfachen. - Die Verarbeitung entsprechend dem Flussdiagramm
1850 beginnt bei einem Schritt1852 , bei dem eine lokale Zykluszahl CYCNO auf Null gesetzt wird. Die lokale Zykluszahl, die bei dem Schritt1852 gesetzt wird, wird dazu verwendet, Zyklusänderungen der Quellgruppe1782 nachzuverfolgen. Es sei darauf hingewiesen, dass es nicht erforderlich ist, dass die lokale Zykluszahl exakt der bestimmten Zykluszahl entspricht, die an der Quellgruppe1782 verwendet wird. Vielmehr ist es ausreichend, dass die bei dem Schritt1852 gesetzte Zykluszahl die Zyklusschaltvorgänge der Quellgruppe1782 nachverfolgt. - Auf den Schritt
1852 folgt ein Schritt1854 , bei dem Daten von der Quellgruppe1782 empfangen werden. Auf den Schritt1854 folgt ein Testschritt1856 , bei dem bestimmt wird, ob die empfangenen Daten einem Zyklusschaltvorgang entsprechen, der durch die Quellgruppe1782 vorgesehen wird. Der Testschritt1856 ist ähnlich dem Testschritt1262 von28A , wie weiter oben erläutert wurde. - Wenn bei dem Testschritt
1856 bestimmt wird, dass die empfangenen Daten nicht einem Zyklusschaltvorgang entsprechen, geht die Steuerung von dem Testschritt1856 zu einem Schritt1858 über, bei dem die empfangenen Daten zu dem Speicher des lokalen Minimal-Speicher-Ziels1788 hinzugefügt werden. Das Hinzufügen der Daten zum Speicher des lokalen Minimal-Speicher-Zieles1788 bei dem Schritt1858 wird hier an anderer Stelle detaillierter erläutert. Auf den Schritt1858 folgt ein Schritt1862 , bei dem die empfangenen Daten gegenüber der Quellgruppe1782 durch das lokale Minimal-Speicher-Ziel1788 bestätigt werden. Die Bestätigung der Daten bei dem Schritt1862 kann dazu verwendet werden, dass der lokale Minimal-Speicher-Ziel1788 für die Quellgruppe1782 als eine vollständige synchrone Spiegelung erscheint (das heißt die Bestätigung, die bei dem Schritt1862 geliefert wird, ist die gleiche Bestätigung, die durch eine vollständig synchrone Spiegelung geliefert wird). Nach dem Schritt1862 geht die Steuerung zurück zu dem Schritt1854 , um mehr Daten zu empfangen. - Wenn bei dem Testschritt
1856 bestimmt wird, dass die bei dem Schritt1854 empfangenen Daten einem Zyklusschaltvorgang entsprechen, dann geht die Steuerung von dem Schritt1856 zu einem Schritt1864 über, bei dem die interne Zykluszahl CYCNO, die bei dem lokalen Minimal-Speicher-Ziel1788 verwendet wird, inkrementiert wird. Bei einer hier beschriebenen Ausführungsform gibt es eine maximale Zykluszahl MAXCYCNO, so dass die Zykluszahl bei dem Schritt1864 dadurch inkrementiert wird, dass Eins zu CYCNO addiert wird und dann das Ergebnis davon als Modulo MAXCYCNO genommen wird. - Auf den Schritt
1864 folgt ein Schritt1866 , bei dem Daten entsprechend früherer Zykluszahlen gelöscht werden. Wie hier an anderer Stelle erläutert wird, speichert das lokale Minimal-Speicher-Ziel1788 die Daten entsprechend den letzten zwei Zykluszahlen. Jegliche Daten, die älter als zwei Zykluszahlen sind, sollten bereits erfolgreich von der Quellgruppe172 zu dem entfernt gelegenen Ziel1786 übertragen worden sein. Demzufolge braucht dann, wenn die Wiederherstellung an dem entfernt gelegenen Ziel1786 vorgesehen wird, das lokale Minimal-Speicher-Ziel1788 lediglich Daten entsprechend der momentanen Zykluszahl zu speichern und Daten entsprechend der vorangehenden Zykluszahl zu speichern. Bei anderen Ausführungsformen kann es möglich sein, unterschiedliche Daten beizubehalten (das heißt drei oder vier letzten Zyklen). Das Löschen der Daten bei dem Schritt1866 wird hier an anderer Stelle detaillierter erläutert. Nach dem Schritt1866 geht die Steuerung zurück zu dem Schritt1854 , der bereits oben erläutert worden ist, um zusätzliche Daten zu empfangen. - Gemäß
46 veranschaulicht ein Flussdiagramm1900 detaillierter Schritte, die durch das lokale Minimal-Speicher-Ziel1788 in Verbindung mit dem Schritt1858 durchgeführt werden, bei dem empfangene Daten zu den Daten hinzugefügt werden, die an dem lokalen Minimal-Speicher-Ziel1788 gespeichert sind. Die Verarbeitung beginnt bei einem ersten Schritt1902 , bei dem eine temporäre VariableP1 gleich dem Listen-Anfang gesetzt wird, dem Zeiger, der auf die verkettete Liste1800 der in dem lokalen Minimal-Speicher-Ziel1788 gespeicherten Daten zeigt. - Auf den Schritt
1902 folgt ein Testschritt1904 , bei dem bestimmt wird, ob die temporäre VariableP1 gleich ist Null. Wenn dies der Fall ist, sind keine Daten in der verketteten Liste1800 gespeichert und die gemäß den Schritten des Flussdiagramms1900 gespeicherten Daten entsprechen den ersten an dem lokalen Minimal-Speicher-Ziel1788 gespeicherten Daten. Wenn bei dem Testschritt1904 bestimmt wird, dassP1 gleich ist Null, dann geht die Steuerung von dem Testschritt1904 zu einem Testschritt1906 über, bei dem Speicher von einem Heap (oder einer anderen geeigneten Einrichtung) unter Verwendung eines Malloc-Befehls (oder eines geeigneten anderen Befehls) für eine temporäre Variable T zur temporären Datenspeicherung erhalten wird. Auf den Schritt1906 folgt ein Schritt1908 , bei dem ein Spurzahlenfeld der Datenaufzeichnung T (T.TRACK) gleichgesetzt wird zu der Spur der logischen Standardvorrichtung, auf der die Daten an der Quellgruppe1782 gespeichert sind. Auf den Schritt1908 folgt ein Schritt1912 , bei dem T.CYCNO gleichgesetzt wird zu der momentanen lokalen Zykluszahl an dem lokalen Minimal-Speicher-Ziel1778 . - Auf den Schritt
1912 folgt ein Schritt1914 , bei dem die empfangenen Daten zu dem Datenfeld von T (das heißt T.DATA) kopiert werden. Auf den Schritt1914 folgt ein Schritt1916 , bei dem das nächste Feld (T.NEXT) gleich Null gesetzt wird. Auf den Schritt1916 folgt ein Schritt1918 , bei dem der Listen-Anfang gleich T gesetzt wird. Nach dem Schritt1918 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1904 bestimmt wird, dass die VariableP1 nicht gleich Null ist, dann geht die Steuerung von dem Testschritt1904 zu einem Testschritt1922 über, bei dem bestimmt wird, ob die Spurzahl entsprechend den Daten, die empfangen worden sind, gleich ist der Spurzahl des Datenelements, auf die durchP1 gezeigt wird. Wenn dies der Fall ist, geht die Steuerung von dem Testschritt1922 zu einem Schritt1924 über, bei dem die empfangenen Daten zu dem Datenfeld beiP1 .DATA geschrieben werden (möglicherweise mit Überschreibung existierender Daten). Auf den Schritt1924 folgt ein Schritt1926 , bei dem das Zykluszahlenfeld des Elements, auf welches durchP1 (P1 .CYCNO) gezeigt wird, mit der momentanen lokalen Zykluszahl (CYCNO) überschrieben wird, die an dem lokalen Minimal-Speicher-Ziel1778 gespeichert ist. Nach dem Schritt1926 ist die Verarbeitung vollendet. - Wenn bei dem Testschritt
1922 bestimmt wird, dass die Spurzahl des Elements, auf welches durchP1 gezeigt wird, nicht gleich der Spurzahl entsprechend den empfangenen Daten ist, dann geht die Steuerung von dem Testschritt1922 zu einem Schritt1928 über, bei dem eine andere temporäre VariableP2 gleichgesetzt wird zuP1 .NEXT. Auf den Schritt1928 folgt ein Testschritt1932 , bei dem bestimmt wird, obP2 gleich Null ist (das heißtP1 zeigt auf ein Element an dem Ende der verketteten Liste1800 ). Wenn dies nicht der Fall ist, geht die Steuerung von dem Testschritt1932 zu einem Testschritt1934 über, bei dem bestimmt wird, ob die Spurzahl, die dem Element entspricht, auf welches durchP2 gezeigt wird, kleiner ist als die Spurzahl entsprechend den Daten, die empfangen wurden. Bei dem Test entsprechend dem Schritt1934 wird bestimmt, ob die empfangenen Daten ein neues Element bilden sollen, welches zwischenP1 undP2 zwischengefügt wird. Wenn bei dem Testschritt1934 bestimmt wird, dass die Spurzahl des Elements, auf welches durchP2 gezeigt ist, nicht kleiner ist als eine Spurzahl entsprechend den empfangenen Daten, geht die Steuerung von dem Testschritt1934 zu einem Schritt1936 über, bei welchem die temporäre VariableP1 gleichgesetzt wird mitP2 , um die nächste Iteration vorzubereiten. Nach dem Schritt1936 geht die Steuerung zurück zu dem Testschritt bei1922 , was bereits oben erläutert wurde. - Wenn bei dem Test gemäß dem Schritt
1932 bestimmt wird, dassP2 auf Null zeigt oder wenn bei dem Testschritt1934 bestimmt wird, dass die Spurzahl des Datenelements, auf welches durchP2 gezeigt wird, kleiner ist als die Spurzahl entsprechend den empfangenen Daten, geht die Steuerung zu dem Schritt1938 über, bei dem ein neues Element (für die Liste1800 ) unter Verwendung einer temporären Variablen T zugewiesen wird. Auf den Schritt1938 folgt ein Schritt1942 , bei dem die Spurzahl von T (T.TRACK) gleichgesetzt wird zu der Spurzahl entsprechend den empfangenen Daten. Auf den Schritt1942 folgt ein Schritt1944 , bei welchem das Zykluszahlenfeld von T (T.CYCNO) gleichgesetzt wird zu der lokalen Zykluszahl bei dem lokalen Minimal-Speicher-Ziel1788 . - Auf den Schritt
1944 folgt ein Schritt1946 , bei dem die empfangenen Daten zu dem Datenfeld des temporären Speicherbereiches T.DATA geschrieben werden. Auf den Schritt1946 folgt ein Schritt1948 , bei dem das nächste Feld von T (T.NEXT) gleichgesetzt wird zuP2 . Auf den Schritt1948 folgt ein Schritt1952 , bei dem das nächste Feld des Elements, auf welches durchP1 (P1 .NEXT) gezeigt wird, so gesetzt wird, dass es auf TT zeigt. Nach dem Schritt1952 ist die Verarbeitung vollendet. - Das Flussdiagramm
1900 von46 veranschaulicht eine Ausführungsform, bei der die verkettete Liste1800 an dem lokalen Minimal-Speicher-Ziel1788 entsprechend der Spurzahl sortiert wird, die den empfangenen Daten entspricht. Es ist auch möglich, die empfangenen Daten entsprechend der Reihenfolge des Empfangs der Daten an dem lokalen Minimal-Speicher-Ziel1788 zu sortieren. - Gemäß
47 veranschaulicht ein Flussdiagramm2000 die Schritte, die durch das lokale Minimal-Speicher-Ziel1788 bei dem Schritt1858 ausgeführt werden, wo Daten hinzugefügt werden. Bei der alternativen Ausführungsform, die durch das Flussdiagramm2000 veranschaulicht ist, werden die Daten in der verketteten Liste1800 entsprechend der Reihenfolge des Empfangs der Daten an dem lokalen Minimal-Speicher-Ziel1788 gespeichert. - Die Verarbeitung beginnt bei einem ersten Schritt
2002 , bei dem ein neues Datenelement T zugewiesen wird. Auf den Schritt2002 folgt ein Schritt2004 , bei dem das Spurzahlfeld des zugewiesenen Elements (T.TRACK) gleichgesetzt wird zu der Spurzahl entsprechend den empfangenen Daten. Auf den Schritt2004 folgt ein Schritt2006 , bei dem das Zykluszahlfeld des zugewiesenen Elements (T.CYCNO) gleichgesetzt wird zu der lokalen Zykluszahl, die an dem lokalen Minimal-Speicher-Ziel1788 (CYCNO) vorgesehen ist. - Auf den Schritt
2006 folgt ein Schritt2008 , bei dem die empfangenen Daten zu dem Datenfeld des zugewiesenen Elements (T.DATA) geschrieben werden. Auf den Schritt2008 folgt ein Schritt2012 , bei dem das nächste Feld des zugewiesenen Elements (T.NEXT) gleich Null gesetzt wird. Bei einer hier beschriebenen Ausführungsform werden die unmittelbar letzten empfangenen Daten zu dem Ende der verketteten Liste1800 hinzugefügt. Auf den Schritt2012 folgt ein Testschritt2014 , bei dem bestimmt wird, ob der Listen-Anfang (der Zeiger zum Kopf der verketteten Liste1800 ) gleich ist Null. Es sei darauf hingewiesen, dass dann, wenn die ersten Daten in die verkettete Liste1800 geschrieben werden oder wenn alle Daten aus der verketteten Liste1800 entfernt worden sind, der Listen-Anfang gleich Null sein kann. Wenn bei dem Testschritt2014 bestimmt wird, dass der Listen-Anfang gleich Null ist, geht die Steuerung von dem Testschritt2014 zu einem Schritt2016 über, bei dem der Listen-Anfang so gesetzt wird, dass er auf das neu zugewiesene Datenelement T zeigt. Auf den Schritt2016 folgt ein Schritt2018 , bei dem ein Listen-Ende-Element LE, welches das Ende der Liste1800 nachverfolgt, ebenso so gesetzt wird, dass es auf das neu zugewiesene Datenelement T zeigt. Nach dem Schritt2018 ist die Verarbeitung dann vollendet. - Wenn bei dem Testschritt
2014 bestimmt wird, dass der Listen-Anfang nicht gleich Null ist, geht die Steuerung von dem Testschritt2014 zu einem Schritt2022 über, bei dem das nächste Feld des Datenelements, auf welches durch den Listen-Ende-Zeiger (LE.NEXT) gezeigt wird, so gesetzt wird, dass er auf das neue zugewiesene Datenelement T zeigt. Auf den Schritt2022 folgt ein Schritt2024 , bei dem der Listen-Ende-Zeiger LE so gesetzt wird, dass er gleich ist dem neu zugewiesenen Datenelement T. Nach dem Schritt2024 ist die Verarbeitung dann vollendet. - Gemäß
48 veranschaulicht ein Flussdiagramm2050 Schritte, die durch das lokale Minimal-Speicher-Ziel1788 in Verbindung mit dem Löschschritt1866 des Flussdiagramms1850 von45 ausgeführt werden. Bei einer hier beschriebenen Ausführungsform kann die gleiche Verarbeitung zum Löschen verwendet werden, und zwar ungeachtet davon, ob die Daten in der verketteten Liste1800 gemäß der Spurzahl (Ausführungsform von46 ) oder gemäß der Reihenfolge des Empfangs (Ausführungsform von47 ) gespeichert werden. Es sei darauf hingewiesen, dass eine Technik, die zum Löschen der Daten verwendet wird, von einer Technik unabhängig sein kann, die zum Hinzufügen von Daten verwendet wird. - Die Verarbeitung bei dem Flussdiagramm
2050 beginnt bei einem ersten Schritt2052 , bei dem eine temporäre VariableP1 gleichgesetzt wird zu einer Listen-Anfangs-Variablen, die auf das erste Element der verketteten Liste1800 zeigt. Auf den Schritt2052 folgt ein Testschritt2054 , bei dem bestimmt wird, obP1 gleich ist Null. Wenn dies der Fall ist, ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Testschritt2054 zu einem Schritt2056 über, bei dem eine andere temporären VariableP2 gleichgesetzt wird zu dem nächsten Feld des Datenelements, auf welches durchP1 gezeigt wird (das heißt gleichgesetzt wird mitP1 .NEXT). Auf den Schritt2056 folgt ein Testschritt2058 , bei dem bestimmt wird, obP2 auf Null zeigt. Wenn dies der Fall ist, ist die Verarbeitung vollendet. Im anderen Fall geht die Steuerung von dem Testschritt2058 auf einen Testschritt2062 über, bei dem bestimmt wird, ob die Zykluszahl des Feldes des Datenelements, auf das durchP2 gezeigt wird, (P2 .CYCNO) gleich ist zu der Zykluszahl für die zu löschenden Daten (z. B. (CYCNO-2 ) modulo MAXCYCNO). Wenn dies der Fall ist, geht die Steuerung von dem Testschritt2062 zu einem Schritt2064 über, bei dem das nächste Feld des Elements, auf welches durchP1 gezeigt wird (P1 .NEXT), gleichgesetzt wird zu dem nächsten Feld des Elements, auf das durchP2 gezeigt wird (P2 .NEXT), so dass das Element, auf welches durchP2 gezeigt wird, aus der verketteten Liste1800 entfernt wird. Auf den Schritt2064 folgt ein Schritt2066 , bei dem das Element, auf welches durchP2 gezeigt wird, freigegeben wird (das heißt, zu einem Heap zurückgeführt wird). Auf den Schritt2066 folgt ein Schritt2068 , bei demP1 gleichgesetzt wird zu dem nächsten Feld, auf welches durchP1 gezeigt wird (das heißtP1 =P1 .NEXT). Nach dem Schritt2068 geht die Steuerung zurück zu dem Schritt2056 für die nächste Iteration. Es sei erwähnt, dass dann, wenn bei dem Testschritt2062 bestimmt wird, dass das Zykluszahlenfeld des Elements, auf welches durchP1 gezeigt wird, nicht gleich ist einer Zykluszahl der Daten, die gelöscht werden sollen, dann die Steuerung von dem Testschritt2062 zu dem Schritt2068 übertragen wird, wie dies oben erläutert wurde. - Es sei darauf hingewiesen, dass für die Ausführungsformen, die in Verbindung mit den
42 -48 erläutert wurden, es nicht erforderlich ist, die SDDF-Pläne zu unterhalten, da die Wiederherstellung immer an dem entfernt gelegenen Ziel1786 durchgeführt wird und alle gespeicherten Daten von dem lokalen Minimal-Speicher-Ziel1788 zu dem entfernt gelegenen Ziel1786 zur Wiederherstellung übertragen werden. Es ist somit nicht erforderlich, spezifische Daten nachzuverfolgen, die zu übertragen sind. Darüber hinaus ist es nicht erforderlich, einen Token oder irgendeinen anderen Mechanismus zur Verfügung zu haben, um nachzuverfolgen, welche Vorrichtung für die Wiederherstellung verwendet wird, da das entfernt gelegene Ziel1786 immer für die Wiederherstellung in Verbindung mit den Ausführungsformen nach den42 -48 verwendet wird. Ferner ist es auch nicht erforderlich, die Verarbeitung gemäß den29 und30 an dem entfernt gelegenen Ziel durchzuführen, da keine Token oder SDDF-Pläne vorhanden sind. - Gemäß
49 veranschaulicht ein Flussdiagramm2100 Schritte, die in Verbindung mit der Wiederherstellung an dem entfernt gelegenen Ziel1786 ausgeführt werden, wenn beispielsweise die Quellgruppe1782 mit ihrem Betrieb aufhört. Die Verarbeitung beginnt bei einem ersten Schritt2102 , bei dem die Verbindungen zwischen der Quellgruppe1782 , dem entfernt gelegenen Ziel1786 und dem lokalen Minimal-Speicher-Ziel1788 abgebaut werden. Das Abbauen der Verbindungen bei dem Schritt2102 erfolgt ähnlich dem Abbauen der Verbindungen bei dem Schritt1362 des Flussdiagramms1360 von31 . Auf den Schritt2102 folgt ein Schritt2104 , bei dem die geordneten Schreibeinträge beendet werden. Das Beenden der geordneten Schreibeinträge bei dem Schritt2104 erfolgt ähnlich der Beendigung der geordneten Schreibeinträge bei dem Schritt1366 des Flussdiagramms1360 von31 . - Auf den Schritt
2104 folgt ein Schritt2106 , bei dem alle Daten von dem lokalen Minimal-Speicher-Ziel1788 zu dem entfernt gelegenen Ziel1786 übertragen werden. Die Daten können entsprechend der Reihenfolge der Datenelemente in der verketteten Liste1800 übertragen werden. Wenn somit beispielsweise die verkettete Liste1800 entsprechend der Zeitsequenz der Schreibeinträge zu dem lokalen Minimal-Speicher-Ziel1788 (Ausführungsform, die in47 gezeigt ist) gespeichert wird, werden die Daten von dem lokalen Minimal-Speicher-Ziel1788 zu dem entfernt gelegenen Ziel1786 gemäß der Zeitfolge der Schreibeinträge übertragen. Wenn alternativ Daten in der verketteten Liste1800 in der Reihenfolge der Speicherstellen auf der entsprechenden logischen Standardvorrichtung (Ausführungsform gemäß46 ) gespeichert sind, dann werden die Daten in dieser Reihenfolge von dem lokalen Minimal-Speicher-Ziel1788 zu dem entfernt gelegenen Ziel1786 übertragen. Nach dem Schritt2106 ist die Verarbeitung vollendet und der Betrieb kann wieder aufgenommen werden, und zwar unter Verwendung der entfernt gelegenen Speichervorrichtung1786 , welche die neuesten Daten enthält. - Gemäß
50 veranschaulicht ein Diagramm2120 das gemeinsame Benutzen der Ressourcen. Das Diagramm2120 enthält eine Quellgruppe2122 und ein entfernt gelegenes Ziel2126 , die ähnlich der Quellgruppe1782 und dem entfernt gelegenen Ziel1786 von42 sind. Das Diagramm2120 zeigt auch ein lokales Minimal-Speicher-Ziel2128 , das ähnlich dem lokalen Minimal-Speicher-Ziel1788 von42 ist, mit der Ausnahme, dass das lokale Minimal-Speicher-Ziel2128 durch nicht in Beziehung stehende Speichersysteme gemeinsam verwendet werden kann. Es sei darauf hingewiesen, dass das lokale Minimal-Speicher-Ziel2128 von jeglicher Typ einer Speichervorrichtung sein kann, inklusive einer Symmetrics-Vorrichtung, durch die EMC Corporation geliefert wird, einem PersonalComputer oder jeglicher anderen Vorrichtung, die dazu befähigt ist, Daten zu speichern und die hier beschriebene Funktionalität zu bieten. - Das Diagramm zeigt auch eine zweite Quellgruppe
2126' und ein zweites entfernt gelegenes Ziel2122' . Jedoch überträgt die Quellgruppe2122' Daten zu dem lokalen Minimal-Speicher-Ziel2128 , das auch durch die Quellgruppe2122 verwendet wird. Sollte eine Wiederherstellung für irgendeine oder für beide der Quellgruppen2122 ,2122' erforderlich werden, werden die Wiederherstelldaten durch das lokale Minimal-Speicher-Ziel2128 zu einem oder zu beiden der entfernt gelegenen Ziele2126 ,2126' geliefert. Bei einer hier beschriebenen Ausführungsform speichert das lokale Minimal-Speicher-Ziel2128 Daten von der Quellgruppe2122 an einer getrennten Stelle von den Daten, die für die Quellgruppe2122' gespeichert werden. - Das Diagramm
2120 zeigt auch eine dritte Quellgruppe2122" und ein drittes entfernt gelegenes Ziel2126" . Die dritte Quellgruppe2122" überträgt auch Daten zu dem lokalen Minimal-Speicher-Ziel2128 . Zusätzlich kann das lokale Minimal-Speicher-Ziel2128 , sollte eine Wiederherstellung erforderlich werden, Wiederherstelldaten zu dem entfernt gelegenen Ziel2126" übertragen. - Die Anzahl der an ein lokales Minimal-Speicher-Ziel gekoppelten Quellgruppen und entfernt gelegenen Ziele kann durch die Speicherungs- und die Verarbeitungsfähigkeit des lokalen Minimal-Speicher-Zieles begrenzt sein. Es sei darauf hingewiesen, dass auch eine einzelne Speichervorrichtung als entfernt gelegenes Ziel für mehrere Quellgruppen verwendet werden kann.
- Obwohl die Erfindung in Verbindung mit verschiedenen Ausführungsformen offenbart wurde, sind Abwandlungen für Fachleute offenkundig. Entsprechend ergibt sich der Rahmen und Umfang der Erfindung aus den nachfolgenden Ansprüchen.
Claims (10)
- Verfahren zum Speichern von Wiederherstelldaten in einem System mit • einer ersten Speichervorrichtung (1202) zum Speichern dorthin geschriebener Daten, wobei die erste Speichervorrichtung (1202) in eine Vielzahl von logischen Speichervorrichtungen unterteilt ist, • einer zweiten Speichervorrichtung (1206), welche eine Kopie der auf der ersten Speichervorrichtung (1202) gespeicherten Daten enthält, • wobei die zweite Speichervorrichtung (1206) eine Spiegelung der Daten auf der ersten Speichervorrichtung (1202) ist, wobei Schreibeinträge auf die erste Speichervorrichtung (1202) zur zweiten Speichervorrichtung (1206) in einem asynchronen Datenübertragungsmodus übertragen werden, bei dem auf die erste Speichervorrichtung (1202) geschriebene Daten durch die erste Speichervorrichtung (1202) bestätigt werden, bevor sie auf der zweiten Speichervorrichtung (1206) gespeichert sind, gekennzeichnet durch die folgenden Schritte: • Liefern der Daten von Schreibeinträgen auf die erste Speichervorrichtung (1202) in einer Vielzahl von Datenpaketen [chunks of data] (52) von der ersten Speichervorrichtung (1202) zur zweiten Speichervorrichtung (1206), wobei jedes Datenpaket (52) eine Vielzahl von getrennten Schreibeinträgen repräsentiert, wobei für ein erstes Datenpaket (52) und ein zweites Datenpaket (54) jeder Schreibeintrag für das zweite Datenpaket (54) vor dem Beginn irgendeines der Schreibeinträge für das erste Paket (52) begonnen wurde, wobei das Sammeln der Daten eines bestimmten Datenpakets auf der ersten Speichervorrichtung einem bestimmten Zyklus entspricht und wobei ein Zyklusschaltvorgang (1262) in Verbindung mit der Erzeugung eines neuen Datenpakets durchgeführt wird; • Liefern von den Datenpaketen entsprechenden Synchrondaten zu einer lokalen Ziel-Speichervorrichtung (1204), wobei Synchrondaten zu der lokalen Ziel-Speichervorrichtung (1204) in einem synchronen Datenübertragungsmodus übertragen werden, bei dem Schreibeinträge von Synchrondaten auf die erste Speichervorrichtung (1202) nicht bestätigt werden, bis die Daten erfolgreich auf die lokale Ziel-Speichervorrichtung (1204) übertragen sind; und • die erste Speichervorrichtung (1202) liefert an die lokale Ziel-Speichervorrichtung (1204) Mapping-Daten entsprechend der Durchführung eines Zyklusschaltvorgangs (1262) in Verbindung mit der Erzeugung eines neuen Datenpakets zum Speichern an der zweiten Speichervorrichtung (1206), wobei die Mapping-Daten zur lokalen Ziel-Speichervorrichtung (1204) gelieferte Synchrondaten bestimmten an die zweite Speichervorrichtung (1206) gelieferten Datenpaketen zuordnen, • wobei Daten, die an der lokalen Ziel-Speichervorrichtung (1204) und der zweiten Speichervorrichtung (1206) gespeichert sind, wie folgt wiederhergestellt werden können: o das Bestimmen, welche von diesen Speichervorrichtungen die neuesten Daten enthält, o Verwendung der Mapping-Daten zur Bestimmung der Datenpakete, die nicht als auf die andere Speichervorrichtung, die nicht die neuesten Daten enthält, geschrieben bestätigt wurden, o Kopieren dieser Datenpakete von der Speichervorrichtung mit den neuesten Daten zu der Speichervorrichtung, die nicht die neuesten Daten enthält.
- Verfahren nach
Anspruch 1 , bei dem die lokale Ziel-Speichervorrichtung (1204) eine Vielzahl an Maps unterhält, wobei jede der Maps Synchrondaten, die an diese geliefert werden, einem spezifischen Datenpaket zuordnet. - Verfahren nach
Anspruch 2 , bei dem im Ansprechen auf den Empfang von Daten entsprechend der Durchführung eines Zyklusschaltvorgangs die lokale Ziel-Speichervorrichtung (1204) auf eine neue Map zeigt. - Verfahren nach
Anspruch 1 , ferner mit den folgenden Schritten: die zweite Speichervorrichtung (1206) unterhält eine Map von auf diese geschriebenen Daten im Ansprechen auf das Ausfallen der Bestätigung dorthin gelieferter Synchrondaten durch die lokale Ziel-Speichervorrichtung (1204). - Verfahren nach
Anspruch 1 , bei dem ein Hostprozessor Daten zu der ersten Speichervorrichtung (1202) schreibt und bei dem der Hostprozessor die erste Speichervorrichtung (1202) dazu veranlasst, Datenpakete entsprechend den Schreibeinträgen durch den Hostprozessor zu sammeln. - Verfahren nach
Anspruch 5 , bei dem die lokale Ziel-Speichervorrichtung (1204) eine Vielzahl an Maps unterhält, wobei jede der Maps Synchrondaten, die an diese geliefert werden, einem spezifischen Datenpaket zuordnet. - Verfahren nach
Anspruch 6 , bei dem im Ansprechen auf den Empfang von Daten entsprechend der Durchführung eines Zyklusschaltvorgangs in Verbindung mit der Erzeugung eines neuen Datenpakets die lokale Ziel-Speichervorrichtung (1204) auf eine neue Map zeigt. - Verfahren zum Speichern von Wiederherstelldaten in einem System mit • einer ersten Speichervorrichtung (1782) zum Speichern dorthin geschriebener Daten, wobei die erste Speichervorrichtung (1782) in eine Vielzahl von logischen Speichervorrichtungen unterteilt ist, • einer zweiten Speichervorrichtung (1786) welche eine Kopie der auf der ersten Speichervorrichtung (1782) gespeicherten Daten enthält, • wobei die zweite Speichervorrichtung (1786) eine Spiegelung der Daten auf der ersten Speichervorrichtung (1782) ist, wobei Schreibeinträge auf die erste Speichervorrichtung (1782) zur zweiten Speichervorrichtung (1786) in einem asynchronen Datenübertragungsmodus übertragen werden, bei dem auf die erste Speichervorrichtung (1782) geschriebene Daten durch die erste Speichervorrichtung (1782) bestätigt werden, bevor sie auf der zweiten Speichervorrichtung (1786) gespeichert sind, gekennzeichnet durch die folgenden Schritte: • Liefern der Daten von Schreibeinträgen auf die erste Speichervorrichtung (1782) in einer Vielzahl von Datenpaketen [chunks of data] (52) von der ersten Speichervorrichtung (1782) zur zweiten Speichervorrichtung (1786), wobei jedes Datenpaket (52) eine Vielzahl von getrennten Schreibeinträgen repräsentiert, wobei für ein erstes Datenpaket und ein zweites Datenpaket jeder Schreibeintrag für das zweite Datenpaket (54) vor dem Beginn irgendeines der Schreibeinträge für das erste Paket (52) begonnen wurde und wobei das Sammeln der Daten eines bestimmten Datenpakets auf der ersten Speichervorrichtung einem bestimmten Zyklus entspricht; • Liefern von Synchrondaten entsprechend den Datenpaketen zu einer Minimal-Speichervorrichtung (1788), wobei die Synchrondaten auf die Minimal-Speichervorrichtung (1788) in einem synchronen Datenübertragungsmodus übertragen werden, bei dem Schreibeinträge von Synchrondaten zu der ersten Speichervorrichtung nicht bestätigt werden, bis die Daten erfolgreich auf die Minimal-Speichervorrichtung (1788) übertragen wurden, wobei die Minimal-Speichervorrichtung (1788) keine Spiegelung der ersten Speichervorrichtung (1782) ist sondern dazu verwendet wird, um Daten zu speichern, die zu der zweiten Speichervorrichtung (1786) in einem Fall übertragen werden, dass eine Wiederherstellung erforderlich wird, und wobei die Minimal-Speichervorrichtung (1788) Daten enthält, die nicht auf der zweiten Speichervorrichtung (1786) gespeichert sind und die zweite Speichervorrichtung (1786) Daten enthält, die nicht auf der Minimal-Speichervorrichtung (1788) gespeichert sind; und • die erste Speichervorrichtung (1782) liefert an die Minimal-Speichervorrichtung (1788) Daten entsprechend der Durchführung eines Zyklusschaltvorgangs (1262), wenn ein neues Datenpaket geliefert wird, • wobei die Minimal-Speichervorrichtung (1788) die dort gespeicherten Daten zu der zweiten Speichervorrichtung (1786) überträgt, wenn eine Wiederherstellung erforderlich ist.
- Verfahren nach
Anspruch 8 , bei dem die Daten, die auf der zweiten Speichervorrichtung (1786) enthalten sind, nicht jedoch auf der Minimal-Speichervorrichtung (1788) enthalten sind, älter sind als die Daten, die auf der Minimal-Speichervorrichtung (1788) enthalten sind, nicht jedoch auf dem der zweiten Speichervorrichtung (1786). - Verfahren nach
Anspruch 8 , ferner mit den folgenden Schritten: Bereitstellen einer lokalen Zykluszahl an die Minimal-Speichervorrichtung (1788); und Inkrementieren der lokalen Zykluszahl im Ansprechen auf den Empfang der Daten entsprechend der Durchführung eines Zyklusschaltvorgangs.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/955,470 US8078813B2 (en) | 2004-09-30 | 2004-09-30 | Triangular asynchronous replication |
US10/955,142 | 2004-09-30 | ||
US10/955,142 US8185708B2 (en) | 2004-09-30 | 2004-09-30 | Host implementation of triangular asynchronous replication |
US10/955,470 | 2004-09-30 | ||
US11/050,551 | 2005-02-03 | ||
US11/050,551 US20060069890A1 (en) | 2004-09-30 | 2005-02-03 | Triangular asynchronous replication with minimal synchronous storage |
Publications (3)
Publication Number | Publication Date |
---|---|
DE102005036291A1 DE102005036291A1 (de) | 2006-04-13 |
DE102005036291B4 DE102005036291B4 (de) | 2019-03-07 |
DE102005036291B9 true DE102005036291B9 (de) | 2019-08-29 |
Family
ID=35395065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102005036291.5A Active DE102005036291B9 (de) | 2004-09-30 | 2005-08-02 | Verfahren zum Speichern von Wiederherstelldaten in einem System |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP2006107450A (de) |
DE (1) | DE102005036291B9 (de) |
GB (2) | GB2434894B8 (de) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4916420B2 (ja) | 2007-11-16 | 2012-04-11 | 株式会社日立製作所 | ストレージシステム及びリモートコピー制御方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19900331A1 (de) * | 1998-01-07 | 1999-07-08 | Nat Semiconductor Corp | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung |
US20010000818A1 (en) * | 1997-01-08 | 2001-05-03 | Teruo Nagasawa | Subsystem replacement method |
EP1158409A2 (de) * | 2000-05-25 | 2001-11-28 | Hitachi, Ltd. | Speichersystem zur Bestätigung der Datensynchronisierung während des asynchronen Fernkopierens |
US6415292B1 (en) * | 2001-08-28 | 2002-07-02 | Emc Corporation | Shuttle-based mechanism for numbering concurrent chains of independent data transfers |
US6446175B1 (en) * | 1999-07-28 | 2002-09-03 | Storage Technology Corporation | Storing and retrieving data on tape backup system located at remote storage system site |
US20030051111A1 (en) * | 2001-08-08 | 2003-03-13 | Hitachi, Ltd. | Remote copy control method, storage sub-system with the method, and large area data storage system using them |
US20040073831A1 (en) * | 1993-04-23 | 2004-04-15 | Moshe Yanai | Remote data mirroring |
EP1507205A2 (de) * | 2003-08-11 | 2005-02-16 | Hitachi, Ltd. | Multi-site Fernkopiersystem |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5206939A (en) | 1990-09-24 | 1993-04-27 | Emc Corporation | System and method for disk mapping and data retrieval |
US5381539A (en) | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
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 |
US5857208A (en) | 1996-05-31 | 1999-01-05 | Emc Corporation | Method and apparatus for performing point in time backup operation in a computer system |
US5778394A (en) | 1996-12-23 | 1998-07-07 | Emc Corporation | Space reclamation system and method for use in connection with tape logging system |
JP3490266B2 (ja) * | 1997-09-26 | 2004-01-26 | 株式会社日立製作所 | ディスクシステムと磁気テープライブラリ装置によるバックアップシステム及びバックアップ方法 |
US6366986B1 (en) | 1998-06-30 | 2002-04-02 | Emc Corporation | Method and apparatus for differential backup in a computer storage system |
US6209002B1 (en) * | 1999-02-17 | 2001-03-27 | Emc Corporation | Method and apparatus for cascading data through redundant data storage units |
WO2002017055A1 (fr) * | 2000-08-18 | 2002-02-28 | Fujitsu Limited | Dispositif de commande de disque, procede de commande de disque, dispositif de commande a distance de disque, et procede de commande a distance de disque |
US6662281B2 (en) * | 2001-01-31 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Redundant backup device |
FR2820849B1 (fr) * | 2001-02-15 | 2003-05-16 | Cit Alcatel | Procede de stockage de donnees informatiques et dispositif de stockage correspondant |
US6594742B1 (en) | 2001-05-07 | 2003-07-15 | Emc Corporation | Cache management via statistically adjusted slot aging |
JP2005505819A (ja) * | 2001-09-28 | 2005-02-24 | マランティ ネットワークス インコーポレイテッド | 記憶システムにおけるパケットの分類 |
JP3983516B2 (ja) * | 2001-10-25 | 2007-09-26 | 株式会社日立製作所 | 記憶装置システム |
JP3730907B2 (ja) * | 2001-12-04 | 2006-01-05 | 日本電気株式会社 | ディスクアレイ装置間の遠隔データコピー方式 |
US6948089B2 (en) * | 2002-01-10 | 2005-09-20 | Hitachi, Ltd. | Apparatus and method for multiple generation remote backup and fast restore |
US8200921B2 (en) * | 2004-03-12 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Data synchronization for two data mirrors with sidefiles |
JP6133496B2 (ja) | 2014-03-26 | 2017-05-24 | 本田技研工業株式会社 | 電動車両 |
US9654225B2 (en) | 2015-09-18 | 2017-05-16 | Elenion Technologies, Llc | Optical link architecture based on wireline equalization techniques |
US10224918B2 (en) | 2016-12-07 | 2019-03-05 | Infineon Technologies Americas Corp. | Active gate bias driver |
-
2005
- 2005-06-29 JP JP2005189105A patent/JP2006107450A/ja active Pending
- 2005-08-02 DE DE102005036291.5A patent/DE102005036291B9/de active Active
- 2005-09-30 GB GB0702669A patent/GB2434894B8/en active Active
- 2005-09-30 GB GB0702668A patent/GB2434893B8/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073831A1 (en) * | 1993-04-23 | 2004-04-15 | Moshe Yanai | Remote data mirroring |
US20010000818A1 (en) * | 1997-01-08 | 2001-05-03 | Teruo Nagasawa | Subsystem replacement method |
DE19900331A1 (de) * | 1998-01-07 | 1999-07-08 | Nat Semiconductor Corp | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung |
US6446175B1 (en) * | 1999-07-28 | 2002-09-03 | Storage Technology Corporation | Storing and retrieving data on tape backup system located at remote storage system site |
EP1158409A2 (de) * | 2000-05-25 | 2001-11-28 | Hitachi, Ltd. | Speichersystem zur Bestätigung der Datensynchronisierung während des asynchronen Fernkopierens |
US20030051111A1 (en) * | 2001-08-08 | 2003-03-13 | Hitachi, Ltd. | Remote copy control method, storage sub-system with the method, and large area data storage system using them |
US6415292B1 (en) * | 2001-08-28 | 2002-07-02 | Emc Corporation | Shuttle-based mechanism for numbering concurrent chains of independent data transfers |
EP1507205A2 (de) * | 2003-08-11 | 2005-02-16 | Hitachi, Ltd. | Multi-site Fernkopiersystem |
Also Published As
Publication number | Publication date |
---|---|
DE102005036291B4 (de) | 2019-03-07 |
GB2434894B (en) | 2008-02-13 |
GB2434894B8 (en) | 2008-04-16 |
JP2006107450A (ja) | 2006-04-20 |
DE102005036291A1 (de) | 2006-04-13 |
GB2434894A8 (en) | 2008-04-16 |
GB0702669D0 (en) | 2007-03-21 |
GB2434893B8 (en) | 2008-04-16 |
GB2434893A (en) | 2007-08-08 |
GB0702668D0 (en) | 2007-03-21 |
GB2434894A (en) | 2007-08-08 |
GB2434893A8 (en) | 2008-04-16 |
GB2434893B (en) | 2008-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE602004005344T2 (de) | Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort | |
DE60018872T2 (de) | System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen | |
DE60317383T2 (de) | Datenwiederherstellungsvorrichtung unter Verwendung von Journaldaten und Identifikationsinformation | |
DE60312746T2 (de) | Wiederherstellung nach fehlern in datenverarbeitungsanlagen | |
US9753663B1 (en) | Triangular asynchronous replication | |
DE69917333T2 (de) | Übertragung einer Ressource von einem ersten Zwischenspeicher an einen zweiten Zwischenspeicher | |
DE60318687T2 (de) | Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz | |
DE602005002532T2 (de) | Cluster-datenbank mit ferndatenspiegelung | |
DE69911930T2 (de) | Hochverfügbare dateiprozessoren | |
DE112011100112B4 (de) | Pufferspeicher-platte in blitzkopie-kaskade | |
DE68928546T2 (de) | Dateisystem für eine vielzahl von speicherklassen | |
DE69724834T2 (de) | System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher | |
DE69923621T2 (de) | Verfahren und Vorrichtung zu korrekten und vollständigen Übertragungen in einem fehlertoleranten verteilten Datenbanksystem | |
DE602005001041T2 (de) | Speicherauszugssystem | |
DE60038364T2 (de) | Computersystem und Speicherauszugsdatenverwaltungsverfahren | |
DE19924822A1 (de) | Verfahren und Vorrichtung für Katastrophen-Behebung von Dateisystemen | |
DE602005000819T2 (de) | Aufrechterhaltung der konsistenz einer fernkopie unter verwendung von virtualisierung | |
DE60113586T2 (de) | Übertragen von miteinander verbundenen Datenobjekten in einer verteilten Datenspeicherumgebung | |
DE602005002024T2 (de) | Fernkopiersystem und Fernkopierverfahren | |
DE112016001295T5 (de) | Neusynchronisieren auf ein erstes Speichersystem durch Spiegeln des ersten Speichersystems nach einem Failover zu einem zweiten Speichersystem | |
DE19924900A1 (de) | Verfahren und Vorrichtung für Katastrophen-Behebung von Dateisystemen | |
US20060069890A1 (en) | Triangular asynchronous replication with minimal synchronous storage | |
US10095444B1 (en) | Tape emulation alternate data path | |
DE602004003327T2 (de) | Computersystem und Verfahren zum Wiederanlauf mittels entferntem Kopieren | |
EP0964335A2 (de) | Verfahren zum gesicherten Ändern von in einer Datenbank gespeicherten Daten, Datenbanksystem und damit ausgestattetes Netzelement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
R016 | Response to examination communication | ||
R082 | Change of representative |
Representative=s name: PATENTANWAELTE FREISCHEM, DE Representative=s name: FREISCHEM & PARTNER PATENTANWAELTE MBB, DE |
|
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 |