DE112004000486T5 - Virtuell geordnete Schreibvorgänge - Google Patents
Virtuell geordnete Schreibvorgänge Download PDFInfo
- Publication number
- DE112004000486T5 DE112004000486T5 DE112004000486T DE112004000486T DE112004000486T5 DE 112004000486 T5 DE112004000486 T5 DE 112004000486T5 DE 112004000486 T DE112004000486 T DE 112004000486T DE 112004000486 T DE112004000486 T DE 112004000486T DE 112004000486 T5 DE112004000486 T5 DE 112004000486T5
- Authority
- DE
- Germany
- Prior art keywords
- data
- storage device
- data packet
- cache
- slot
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2064—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2074—Asynchronous techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
Verfahren
zum Ordnen von Datenschreibeinträgen,
wonach:
eine primäre Speichervorrichtung eine Vielzahl von Datenschreibeinträgen empfängt;
die primäre Speichervorrichtung Datenschreibeinträge, die nach einem ersten Zeitpunkt begonnen wurden und vor einem zweiten Zeitpunkt begonnen wurden, einem ersten Datenpaket zuordnet;
die primäre Speichervorrichtung Datenschreibeinträge, die nach dem zweiten Zeitpunkt beginnen, einem zweiten Datenpaket zuordnet, welches von dem ersten Datenpaket verschieden ist; und
nach der Vervollständigung aller Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, die primäre Speichervorrichtung den Transfer der Schreibeinträge zu der sekundären Speichervorrichtung, die dem ersten Datenpaket zugeordnet sind, einleitet.
eine primäre Speichervorrichtung eine Vielzahl von Datenschreibeinträgen empfängt;
die primäre Speichervorrichtung Datenschreibeinträge, die nach einem ersten Zeitpunkt begonnen wurden und vor einem zweiten Zeitpunkt begonnen wurden, einem ersten Datenpaket zuordnet;
die primäre Speichervorrichtung Datenschreibeinträge, die nach dem zweiten Zeitpunkt beginnen, einem zweiten Datenpaket zuordnet, welches von dem ersten Datenpaket verschieden ist; und
nach der Vervollständigung aller Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, die primäre Speichervorrichtung den Transfer der Schreibeinträge zu der sekundären Speichervorrichtung, die dem ersten Datenpaket zugeordnet sind, einleitet.
Description
- HINTERGRUND DER ERFINDUNG
- 1. Gebiet der Erfindung
- Die Erfindung betrifft Computer-Speichervorrichtungen und spezieller das Gebiet der Übertragung von Daten zwischen Speichervorrichtungen.
- 2. Beschreibung des Standes der Technik
- Hostprozessorsysteme können Daten speichern und wieder aufsuchen, und zwar unter Verwendung einer Speichervorrichtung, die eine Vielzahl von Hostinterfaceeinheiten (Hostadaptern), Plattenlaufwerken und Platteninterfaceeinheiten (Plattenadaptern) enthält. Solche Speichervorrichtungen werden beispielsweise von der EMC Corporation of Hopkinton, Mass., geliefert und sind in dem US-Patent Nr. 5,206,939 von Yanai et al., dem US-Patent Nr. 5,778,394 von Galtzur et al., dem US-Patent Nr. 5,845,147 von Vishlitzky et al. und dem US-Patent Nr. 5,857,208 von Ofek offenbart. Die Hostsysteme greifen auf eine Speichervorrichtung über eine Vielzahl von dafür vorgesehene Kanäle zu. Die Hostsysteme liefern Daten und Zugriffssteuerinformationen über die Kanäle zu der Speichervorrichtung und die Speichervorrichtung liefert Daten zu den Hostsystemen ebenfalls über die Kanäle. Die Hostsysteme adressieren die Plattenlaufwerke der Speichervorrichtung nicht direkt, sondern vielmehr erfolgt ein Zugriff darauf, was für die Hostsysteme vorhanden zu sein scheint, und zwar auf eine Vielzahl von logischen Diskeinheiten. Die logischen Diskeinheiten können den tatsächlichen Plattenlaufwerken entsprechen oder auch nicht. Indem man vielen Hostsystemen erlaubt, auf eine einzelne Speichervorrichtungseinheit zuzugreifen, ermöglicht den Hostsystemen, Daten gemeinsam zu verwenden, die darin gespeichert sind.
- In einigen Fällen kann es wünschenswert sein, von einer Speichervorrichtung zu einer anderen zu kopieren. Wenn beispielsweise ein Host Daten zu einer ersten Speichervorrichtung schreibt, kann es wünschenswert sein, diese Daten zu einer zweiten Speichervorrichtung zu kopieren, die an einer unterschiedlichen Stelle vorgesehen ist, so dass dann, wenn ein Desaster auftritt, welches die erste Speichervorrichtung außer Betrieb setzt, der Host (oder ein anderer Host) den Betrieb unter Verwendung der Daten aufnehmen kann, welche in der zweiten Speichervorrichtung gespeichert sind. Eine solche Fähigkeit wird beispielsweise durch das Remote-Data-Facility-(RDF)-Produkt realisiert, welches von der EMC Corporation of Hopkinton, Massachusetts. Mit der RDF ist eine erste Speichervorrichtung mit dem Host gekoppelt, die als "primäre Speichervorrichtung" (oder "R1") bezeichnet wird. Eine oder mehrere andere Speichervorrichtungen, die als "sekundäre Speichervorrichtungen" (oder "R2") bezeichnet werden, kopieren die Daten, die in die primäre Speichervorrichtung geschrieben wurden, mit Hilfe des Hosts. Der Host interagiert direkt mit der primären Speichervorrichtung, jedoch werden irgendwelche Datenänderungen, die bei der primären Speichervorrichtung vorgenommen werden, auch automatisch zu einer oder mehreren sekundären Speichervorrichtungen unter Verwendung von RDF geliefert. Die primären und die sekundären Speichervorrichtungen können mit einem Datenverbindungsglied verbunden sein, wie beispielsweise einem ESCON-Link, einem Faserkanallink und/oder einem Gigabit-Ethernet-Link. Die RDF-Funktionalität kann mit Hilfe eines RDF-Adapters (RA) vereinfacht werden, der bei jeder der Speichervorrichtungen vorgesehen ist.
- RDF ermöglicht einen synchronen Datentransfer dort, wo ein Empfang durch die sekundäre Speichervorrichtung zur primären Speichervorrichtung bestätigt wird, nachdem Daten von einem Host in eine primäre Speichervorrichtung geschrieben wurden und von der primären Speichervorrichtung zu einer sekundären Speichervorrichtung unter Verwendung von RDF transferiert wurden, wobei die primäre Speichervorrichtung eine Schreibbestätigung zu dem Host zurückschickt. Somit empfängt in einem synchronen Modus der Host keine Schreibbestätigung von der primären Speichervorrichtung, bis der RDF-Transfer zu der sekundären Speichervorrichtung vervollständigt worden ist und durch die sekundäre Speichervorrichtung bestätigt worden ist.
- Ein Nachteil des synchronen RDF-Systems liegt darin, dass die Latenz von jeder der Schreiboperationen erhöht wird, indem man nämlich auf die Bestätigung des RDF-Transfers warten muss. Dieses Problem wird schwerwiegend, wenn eine lange Strecke zwischen der primären Speichervorrichtung und der sekundären Speichervorrichtung vorhanden ist; auf Grund der Übertragungsverzögerungen, und zwar der Verzögerungszeit, die erforderlich ist, um den RDF-Transfer durchzuführen, und um dann auf eine Rückbestätigung zu warten, nachdem der Transfer vervollständigt worden ist, sind unakzeptabel.
- Es ist auch möglich, RDF in einem halbsynchronen Modus zu verwenden, in welchem Fall Daten von dem Host zu der primären Speichervorrichtung geschrieben werden, die den Schreibvorgang unmittelbar bestätigt und dann zu gleichen Zeit mit dem Prozess der Übertragung der Daten zu der sekundären Speichervorrichtung beginnt. Daher überwindet für einen einzelnen Transfer von Daten dieses Schema einige Nachteile der Verwendung von RDF in dem Synchronmodus. Jedoch zum Zwecke der Datenintegrität erlaubt der halbsynchrone Transfermodus nicht, dass die primäre Speichervorrichtung Daten zu der sekundären Speichervorrichtung überträgt, bis eine frühere Übertragung durch die sekundäre Speichervorrichtung bestätigt worden ist. Daher werden die Flaschenhälse, die der Verwendung von RDF zugeordnet sind, und zwar in dem Synchronmodus, einfach um eine Iteration verzögert, da der Transfer einer zweiten Menge an Daten nicht stattfinden kann, bis der Transfer der früheren Daten durch die sekundäre Speichervorrichtung bestätigt worden ist.
- Eine andere Möglichkeit besteht darin, einen Host zu veranlassen, Daten zu der primären Speichervorrichtung in einem asynchronen Modus zu schreiben, und dann die primäre Speichervorrichtung zu veranlassen, Daten zu der sekundären Speichervorrichtung im Hintergrund zu kopieren. Der Hintergrundkopiervorgang involviert einen Zyklusablauf durch jede der Spuren der primären Speichervorrichtung in sequenzieller Form und, wenn bestimmt wird, dass ein bestimmter Block modifiziert worden ist, und zwar seit dem letzten Mal, als der Block kopiert wurde, wird der Block von der primären Speichervorrichtung zu der sekundären Speichervorrichtung transferiert. Obwohl dieser Mechanismus das Latenzproblem dämpfen kann, welches dem synchronen und dem halbsynchronen Datentransfermodus zugeordnet ist, existiert dennoch eine Schwierigkeit, da keine Garantie hinsichtlich der Datenkonsistenz zwischen der primären und der sekundären Speichervorrichtung gegeben werden kann. Wenn Probleme auftreten, wie beispielsweise ein Ausfallen des primären Systems, kann das sekundäre System am Ende sein, und zwar mit Änderungen, die außer der Reihe liegen, was dann die Daten unverwendbar macht.
- Eine vorgeschlagene Lösung für dieses Problem besteht aus einem Symmetrix Autmated Replication Process (SAR), welcher in den schwebenden US-Patentanmeldungen 10/224,918 und 10/225,021 beschrieben ist, welche beide am 21. August 2002 eingereicht wurden. Der SAR verwendet Vorrichtungen (BCVs), welcher Standard-Logikvorrichtungen spiegeln kann. Eine BCV-Vorrichtung kann auch von ihrer Standard-Logikvorrichtung abgespalten werden, nachdem sie gespiegelt worden ist, und kann wieder in die Synchronisation mit einbezogen werden (das heißt als ein Spiegel wieder hergestellt), und zwar zu den logischen Standardvorrichtungen nach der Abspaltung. Jedoch erfordert die Verwendung des SAR-Prozesses einen signifikanten Überhang von kontinuierlichen Splitvorgängen und Resynchronisationsvorgängen der BCVs. Der SAR-Prozess verwendet auch eine Hoststeuerung und -management, die auf der Steuerung des in Betrieb befindlichen Hosts basieren. Zusätzlich liegt die Zykluszeit für eine praktische Implementierung eines SAR-Prozesses in der Größenordnung von 20 bis 30 Minuten und somit kann die Menge an Daten, die verloren gehen kann, wenn ein RDF-Link und/oder eine primäre Vorrichtung ausfällt, 20 bis 30 Minuten an Daten betragen.
- Es ist somit wünschenswert, ein RDF-System zur Verfügung zu haben, welches einige der vorteilhaften Qualitäten von jeder der unterschiedlichen Techniken in sich vereint, die oben erläutert wurden, wobei aber gleichzeitig die Nachteile beseitigt sein sollen. Solch ein System zeitigt eine geringe Latenz für jeden Hostschreibvorgang, und zwar ungeachtet dem Abstand zwischen der primären Vorrichtung und der sekundären Vorrichtung, und würde auch zu einer Konsistenz (Wiederherstellbarkeit) der sekundären Vorrichtung im Falle eines Ausfalls führen.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Gemäß der vorliegenden Erfindung enthält das Ordnen der Datenschreibvorgänge eine primäre Speichervorrichtung, die eine Vielzahl von Datenschreibeinträgen empfängt, wobei die primäre Speichervorrichtung Datenschreibeinträge zuordnet, die begonnen wurden nach einem ersten Zeitpunkt und vor einem zweiten Zeitpunkt mit einem Paket an Daten (chunk of data), wobei die primäre Speichervorrichtung Datenschreibvorgänge zuordnet, die nach dem zweiten Zeitpunkt begonnen wurden, und zwar mit einem zweiten Datenpaket, welches von dem ersten Datenpaket verschieden ist, und wobei nach der Vervollständigung von allen Schreibvorgängen, die dem ersten Datenpaket zugeordnet sind, die primäre Speichervorrichtung den Transfer von Schreibvorgängen initiiert, welche den ersten Datenpaketen zugeordnet sind, und zwar Schreibvorgängen zur sekundären Speichervorrichtung. Das Ordnen der Datenschreibvorgänge kann auch nachfolgend dem Transfer der primären Speichervorrichtung von allen Schreibvorgängen, die dem ersten Datenpaket zugeordnet sind, zur sekundären Speichervorrichtung, die primäre Speichervorrichtung veranlassen, eine Nachricht zu der sekundären Speichervorrichtung zu senden, und als Antwort auf den Empfang der Nachricht von der primären Speichervorrichtung speichert die sekundäre Speichervorrichtung die Datenschreibeinträge, welche dem ersten Datenpaket zugeordnet sind. Das Ordnen der Datenschreibvorgänge kann auch enthalten, dass nach dem Speichern von all den Datenschreibvorgängen, die dem ersten Datenpaket zugeordnet sind, die zweite Speichervorrichtung eine Bestätigung zu der primären Speichervorrichtung sendet. Das Ordnen der Datenschreibvorgänge kann auch enthalten, dass nachfolgend dem Senden einer Nachricht zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung den Transfer von Daten zu der sekundären Speichervorrichtung aussetzt. Das Ordnen der Datenschreibvorgänge kann auch enthalten, dass nachfolgend dem Aussetzen der Übertragung der Daten, die primäre Speichervorrichtung, welche Datenschreibvorgänge einem dritten Datenpaket zuordnet, die verschieden von den ersten und zweiten Datenpaketen sind, und zwar nachfolgend den Datenschreibvorgängen. Das Ordnen der Datenschreibvorgänge kann auch enthalten, dass im Ansprechen darauf, dass die sekundäre Speichervorrichtung eine Bestätigung zu der primären Speichervorrichtung sendet, die primäre Speichervorrichtung die Übertragung von Daten zu der sekundären Speichervorrichtung wieder aufnimmt. Das Ordnen der Datenschreibvorgänge kann auch umfassen, dass Datenschreibvorgänge zu Cacheschlitzen der primären Speichervorrichtung geliefert werden. Das Ordnen von Datenschreibvorgängen kann auch umfassen, dass im Ansprechen auf einen Datenschreibvorgang, welcher einem zweiten Datenpaket zugeordnet ist, und zwar entsprechend einem Cacheschlitz, der bereits dem ersten Datenpaket zugeordnet ist, Daten zu einem neuen Cacheschlitz kopiert werden. Das Ordnen der Datenschreibvorgänge kann auch enthalten, dass die primäre Speichervorrichtung, die eine erste Liste an Zeigern zu den Cacheschlitzen für die Datenschreibvorgänge verwendet, die dem ersten Datenpaket zugeordnet sind, um die primäre Speichervorrichtung eine zweite Liste von Zeigern zu Cacheschlitzen für Datenschreibvorgänge verwendet, die dem zweiten Datenpaket zugeordnet sind. Das Ordnen von Datenschreibvorgängen kann auch umfassen, dass ein Cachestempelfeld (cache stamp field) in einem Kopfabschnitt von jedem der Schlitze vorgesehen wird, wobei das Cachestempelfeld eine Sequenznummer enthält, welche dem Schlitz zugeordnet ist, wobei die Sequenznummer einem bestimmten einen der Pakete der Daten entspricht. Das Cachestempelfeld kann auch ein Passwortfeld umfassen, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird. Das Ordnen der Datenschreibvorgänge kann auch umfassen, dass im Ansprechen auf einen Schlitz, der nicht länger verwendet wird, das Passwortfeld gelöscht wird. Das Ordnen der Datenschreibvorgänge kann auch enthalten, dass die primäre Speichervorrichtung lediglich einen ersten Cache als virtuelle Vorrichtung für die Cacheschlitze verwendet, die den Datenschreibvorgängen entsprechen, welche dem ersten Datenpaket zugeordnet sind, und dass die primäre Speichervorrichtung einen zweiten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze entsprechend den Datenschreibvorgängen verwendet, welche dem zweiten Datenpaket zugeordnet sind.
- Ferner umfasst gemäß der vorliegenden Erfindung das Speichern von geordneten Schreibvorgänge zu einer entfernt gelegenen Speichervorrichtung das Empfangen einer Nachricht für Daten, die einem ersten Datenpaket zugeordnet sind, und zwar im Ansprechen auf Daten, die einem zweiten Datenpaket zugeordnet sind, welches verschieden von dem ersten Datenpaket ist, welches noch nicht gespeichert worden ist, Warten auf die Daten, welche dem zweiten Datenpaket zugeordnet sind, welches gespeichert werden soll, und Initiieren des Speichervorgangs der Daten, die dem ersten Datenpaket zugeordnet sind. Das Speichern der geordneten Schreibvorgänge zu einer fern gelegenen Speichervorrichtung, kann auch das Bestätigen der Nachricht umfassen. Das Speichern der geordneten Schreibvorgänge zu einer entfernt gelegenen Speichervorrichtung kann auch umfassen, dass eine Liste von modifizierten Schlitzen in Verbindung mit dem Empfangen von Daten konstruiert wird, die dem ersten Datenpaket zugeordnet sind. Das Initiieren des Speichervorganges der Daten, welche dem ersten Datenpaket zugeordnet sind, umfasst das Durchsuchen der Liste von modifizierten Schlitzen. Das Empfangen einer Vielzahl von Datenschreibvorgängen kann auch das Empfangen einer Vielzahl von Datenschreibvorgängen von einem Host umfassen. Das Speichern der geordneten Schreibeinträge zu einer entfernt gelegenen Speichervorrichtung kann auch umfassen, dass nachfolgend dem Vorgang, bei dem die primäre Speichervorrichtung alle Schreibeinträge transferiert hat, die dem ersten Datenpaket zugeordnet sind, und zwar zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung eine Nachricht zu der sekundären Speichervorrichtung sendet.
- Ferner enthält gemäß der vorliegenden Erfindung eine Computersoftware, welche Datenschreibeinträge ordnet, einen ausführbaren Kode, mit dem Datenschreibeinträge nach einem ersten Zeitpunkt und vor einem zweiten Zeitpunkt mit einem ersten Datenpaket zugeordnet werden, und mit einem ausführbaren Kode, durch den Datenschreibeinträge, die nach dem zweiten Zeitpunkt begonnen haben, mit einem zweiten Datenpaket zugeordnet werden, welches verschieden von dem ersten Datenpaket ist, und mit einem ausführbaren Kode, welcher den Transfer von Schreibeinträgen initiiert, die dem ersten Datenpaket zugeordnet sind, und zwar zu einer Speichervorrichtung nach der Vervollständigung aller Schreibeinträge, welche dem ersten Datenpaket zugeordnet sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, mit dem eine Nachricht zu der Speichervorrichtung gesendet wird, und zwar nachdem alle Schreibeinträge übertragen wurden, die dem ersten Datenpaket zugeordnet sind, und kann einen ausführbaren Kode enthalten, welcher den Transfer von Daten zu der Speichervorrichtung nach dem Senden der Nachricht zu derselben aussetzt. Die Computersoftware kann auch einen ausführbaren Kode enthalten, welcher Datenschreibeinträge einem dritten Datenpaket zuordnet, welches von dem ersten und dem zweiten Datenpaket verschieden ist, und zwar zu nachfolgenden Datenschreibeinträgen, die auf das Aussetzen des Transfers der Daten nachfolgen. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der den Transfer der Daten zu der Speichervorrichtung im Ansprechen auf eine Bestätigung der Speichervorrichtung, welche die Nachricht handhabt, wieder aufgenommen wird. Die Computersoftware kann auch einen ausführbaren Kode aufweisen, der Datenschreibeinträge zu Cacheschlitzen liefert. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den Daten zu einem neuen Cacheschlitz im Ansprechen auf einen Datenschreibeintrag, welcher dem zweiten Datenpaket zugeordnet ist, und zwar entsprechend einem Cacheschlitz, der bereits dem ersten Datenpaket zugeordnet wurde, kopiert. Die Computersoftware kann ferner auch einen ausführbaren Kode enthalten, der eine erste Liste an Zeigern zu den Cacheschlitzen verwendet, und zwar für Daten, die dem ersten Datenpaket zugeordnet sind, und es kann ein ausführbarer Kode vorhanden sein, welcher eine zweite Liste an Zeigern zu Cacheschlitzen für Datenschreibeinträge verwendet, die dem zweiten Datensatz zugeordnet sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der ein Cachestempelfeld in einem Kopfabschnitt von jedem der Schlitze liefert, wobei das Cachestempelfeld eine Sequenzzahl enthält, welche dem Schlitz zugeordnet ist, wobei die Sequenzzahl einem bestimmten einen der Datenpakete entspricht. Das Cachestempelfeld kann auch ein Passwortfeld umfassen, welches geschrieben wird, wenn der Schlitz zum ersten Mal benutzt wird. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der das Passwortfeld im Ansprechen auf einen Schlitz, der nicht länger verwendet wird, löscht. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze entsprechend den Datenschreibeinträgen verwendet, die dem ersten Datenpaket zugeordnet sind, und kann einen ausführbaren Kode enthalten, der einen zweiten Cache in Form einer virtuellen Vorrichtung für Cacheschlitze verwendet, die Datenschreibeinträgen entsprechen, welche dem zweiten Datenpaket zugeordnet sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine Nachricht zu der Speichervorrichtung sendet, nachdem alle Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, übertragen worden sind.
- Ferner wird erfindungsgemäß eine Computersoftware eingesetzt, welche geordnete Schreibeinträge zu einer entfernt gelegenen Speichervorrichtung liefert bzw. dort speichert, mit einem ausführbaren Kode, durch den eine Nachricht über Daten empfangen wird, die einem ersten Datenpaket zugeordnet sind, mit einem ausführbaren Kode, durch den auf Daten gewartet wird, die einem zweiten Datenpaket zugeordnet sind, welches von dem ersten Datenpaket verschieden ist, um gespeichert zu werden, und kann einen ausführbaren Kode enthalten, der einen Speichervorgang der Daten initiiert, die dem ersten Datenpaket zugeordnet sind, nachdem das zweite Datenpaket gespeichert worden ist. Die Computersoftware kann auch einen ausführbaren Kode enthalten, welcher die Nachricht bestätigt. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine Liste von modifizierten Schlitzen in Verbindung mit empfangenen Daten konstruiert, welche dem ersten Datenpaket zugeordnet sind. Der ausführbare Kode, der das Speichern der Daten initiiert, die dem ersten Datenpaket zugeordnet sind, kann auch einen ausführbaren Kode umfassen, mit dem die Liste der modifizierten Schlitze durchgegangen wird.
- Ferner umfasst die vorliegende Erfindung eine Datenspeichervorrichtung mit wenigstens einem Plattenlaufwerk, welches Daten enthält, wenigstens einem Hostadapter, der an wenigstens ein Plattenlaufwerk gekoppelt ist, welches Daten empfängt, die an dem ersten Plattenlaufwerk gespeichert werden sollen, und mit wenigstens einem fern gelegenen Adapter, welcher mit wenigstens einem Plattenlaufwerk gekoppelt ist, und mit dem wenigstens einen Hostadapter, welcher Daten zu der entfernt gelegenen Speichervorrichtung sendet, wobei im Ansprechen auf den Empfang der Daten durch den wenigstens einen Hostadapter Datenschreibeinträge, die nach einem ersten Zeitpunkt begonnen wurden und vor einem zweiten Zeitpunkt begonnen wurden, einem ersten Datenpaket zugeordnet werden, Datenschreibeinträge, die nach dem zweiten Zeitpunkt begonnen wurden, einem zweiten Datenpaket zugeordnet werden, welches von dem ersten Datenpaket verschieden ist, und nach der Vervollständigung aller Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, ein Transfer der Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, zu der entfernt gelegenen Speichervorrichtung initialisiert wird.
- Ferner umfasst die vorliegende Erfindung auch das Ordnen von Datenschreibeinträgen unter Verwendung eines Hostcomputers, der eine Vielzahl von Datenschreibeinträgen zu einer primären Speichervorrichtung liefert, wobei die primäre Speichervorrichtung eine erste Sequenzzahl den Datenschreibeinträgen zuordnet, die nach einem ersten Zeitpunkt begonnen werden und vor einem zweiten Zeitpunkt begonnen werden, die primäre Speichervorrichtung eine zweite Sequenzzahl, welche von der ersten Sequenzzahl verschieden ist, den Datenschreibeinträgen zuordnet, die nach dem zweiten Zeitpunkt begonnen werden, und zwar im Ansprechen auf die Vervollständigung aller Schreibeinträge, die der ersten Sequenzzahl zugeordnet sind, wobei die primäre Speichervorrichtung die Schreibeinträge, die der ersten Sequenzzahl zugeordnet sind, zu einer sekundären Speichervorrichtung überträgt und im Ansprechen darauf, dass die primäre Speichervorrichtung alle Schreibeinträge, die der ersten Sequenzzahl zugeordnet sind, zu der zweiten Speichereinrichtung transferiert hat, die primäre Speichervorrichtung eine Bestätigungsnachricht zu der sekundären Speichervorrichtung sendet. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass im Ansprechen auf den Empfang einer Bestätigungsnachricht von der primären Speichervorrichtung, die sekundäre Speichervorrichtung Datenschreibeinträge mit der ersten Sequenznummer speichert. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass im Ansprechen auf den Speichervorgang von all den Datenschreibeinträgen, welche die erste Sequenzzahl aufweisen, die sekundäre Speichereinrichtung eine Bestätigung zu der primären Speichervorrichtung sendet. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass nachfolgend dem Senden einer Bestätigungsnachricht zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung den Transfer der Daten zu der sekundären Speichervorrichtung aussetzt. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass nachfolgend dem Aussetzen des Transfers der Daten die primäre Speichervorrichtung eine dritte Sequenzzahl, die von der ersten und der zweiten Sequenzzahl verschieden ist, den nachfolgenden Datenschreibeinträgen zuordnet. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass im Ansprechen auf das Senden einer Bestätigung zu der primären Speichervorrichtung durch die sekundäre Speichervorrichtung die primäre Speichervorrichtung den Transfer der Daten zu der sekundären Speichervorrichtung wieder aufnimmt. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass Datenschreibeinträge zu Cacheschlitzen der primären Speichervorrichtung geliefert werden. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass im Ansprechen auf einen Datenschreibeintrag, welcher einer zweiten Sequenzzahl zugeordnet ist, und zwar entsprechend einem Cacheschlitz, welcher bereits einer ersten Sequenzzahl zugeordnet wurde, ein Kopiervorgang der Daten zu einem neuen Cacheschlitz erfolgt. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass die primäre Speichervorrichtung eine erste Liste von Zeigern zu Cacheschlitzen für Datenschreibeinträge verwendet, die der ersten Sequenzzahl zugeordnet sind, und die primäre Speichervorrichtung eine zweite Liste an Zeigern zu Cacheschlitzen verwendet, und zwar für Datenschreibeinträge, die der zweiten Sequenzzahl zugeordnet sind. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass ein Cachestempelfeld in einem Kopfabschnitt von jedem der Schlitze vorgesehen wird, wobei das Cachestempelfeld eine Sequenzzahl enthält, die dem Schlitz zugeordnet ist. Das Cachestempelfeld kann auch ein Passwortfeld enthalten, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass im Ansprechen auf die Tatsache, dass ein Schlitz nicht länger benutzt wird, das Passwortfeld gelöscht wird. Das Ordnen der Datenschreibeinträge kann auch umfassen, dass die primäre Speichervorrichtung einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, und zwar entsprechend den Datenschreibeinträgen, die der ersten Sequenzzahl zugeordnet sind, und dass die primäre Speichervorrichtung einen zweiten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, die den Datenschreibeinträgen entsprechen, denen die zweite Sequenzzahl zugeordnet wurde.
- Ferner umfasst gemäß der vorliegenden Erfindung das Speichern von geordneten Schreibeinträgen an einer entfernt gelegenen Speichervorrichtung das Empfangen einer Zusagenachricht für Daten, die einer ersten Sequenznummer zugeordnet sind, im Ansprechen auf Daten, die einer zweiten Sequenznummer zugeordnet sind, welche von der ersten Sequenznummer, die noch nicht gespeichert worden ist, verschieden ist, Warten auf Daten, die der zweiten Sequenznummer, die gespeichert werden sollen, zugeordnet ist, und Initiieren eines Speichervorganges der Daten, die der ersten Sequenznummer zugeordnet sind. Das Speichern von geordneten Schreibeinträgen kann auch eine Bestätigung der Zusagenachricht umfassen. Das Speichern von geordneten Schreibeinträgen kann auch das Konstruieren einer Liste von modifizierten Schlitzen in Verbindung mit dem Empfangen von Daten umfassen, die der ersten Sequenznummer zugeordnet sind. Das Initiieren des Speichervorganges von Daten, die der ersten Sequenznummer zugeordnet sind, kann auch das Durchgehen der Liste von modifizierten Schlitzen enthalten.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung enthält eine Computersoftware, welche Datenschreibeinträge ordnet, einen ausführbaren Kode, der eine erste Sequenznummer Datenschreibeinträgen zuordnet, die nach einem ersten Zeitpunkt begonnen wurden und vor einem zweiten Zeitpunkt begonnen wurden, Ausführen eines Kodes, gemäß welchem eine zweite Sequenznummer, die von der ersten Sequenznummer verschieden ist, Datenschreibeinträgen zugeordnet wird, welche nach dem zweiten Zeitpunkt begonnen wurden, Ausführen eines Kodes, durch den Schreibeinträge, die der ersten Sequenznummer zugeordnet sind, zu einer Speichervorrichtung übertragen werden, und zwar im Ansprechen auf die Vervollständigung aller Schreibeinträge, die der ersten Sequenznummer zugeordnet sind, und mit einem ausführbaren Kode, der eine Zusagenachricht zu der Speichervorrichtung sendet, nachdem alle Schreibeinträge, die der ersten Sequenznummer zugeordnet worden sind, übertragen worden sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den das Übertragen von Daten zu der Speichervorrichtung ausgesetzt wird, nachdem eine Zusagenachricht zu derselben gesendet wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine dritte Sequenznummer, die von der ersten und von der zweiten Sequenznummer verschieden ist, nachfolgenden Datenschreibeinträgen zuordnet, die auf das Aussetzen des Übertragens von Daten folgen. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den das Übertragen von Daten zu der Speichervorrichtung im Ansprechen auf eine Bestätigung der Speichervorrichtung, welche die Zusage handhabt, wieder aufgenommen wird. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der Datenschreibeinträge zu Cacheschlitzen liefert. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den Daten zu einem neuen Cacheschlitz im Ansprechen auf Datenschreibeinträge kopiert werden, die der zweiten Sequenznummer zugeordnet sind, entsprechend einem Cacheschlitz, der bereits der ersten Sequenznummer zugeordnet wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine Liste von ersten Zeigern zu Cacheschlitzen für Datenschreibeinträge verwendet, die der ersten Sequenznummer zugeordnet sind, einen ausführbaren Kode, der eine zweite Liste von Zeigern zu Cacheschlitzen der Datenschreibeinträge verwendet, die der zweiten Sequenznummer zugeordnet sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der ein Cachestempelfeld in einem Kopfabschnitt von jedem der Schlitze liefert, wobei das Cachestempelfeld eine Sequenzzahl enthält, welche dem Schlitz zugeordnet ist. Das Cachestempelfeld kann auch ein Passwortfeld enthalten, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der das Passwortfeld im Ansprechen auf einen Schlitz löscht, der nicht länger verwendet wird. Die Computersoftware kann ferner auch einen ausführbaren Kode enthalten, der einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, und zwar entsprechend Datenschreibeinträgen, die der ersten Sequenznummer zugeordnet ist, und einen ausführbaren Kode enthalten, der einen zweiten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, die den Datenschreibeinträgen entsprechen, welche der zweiten Sequenznummer zugeordnet sind.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung ist eine Computersoftware vorgesehen, die geordnete Schreibeinträge zu einer entfernt gelegenen Speichervorrichtung überträgt bzw. dort speichert, mit einem ausführbaren Kode, durch den eine Zusagenachricht für Daten empfangen wird, die einer ersten Sequenzzahl zugeordnet sind, mit einem ausführbaren Kode, der auf Daten wartet, die der zweiten Sequenzzahl zugeordnet sind, die im Ansprechen auf Daten gespeichert werden sollen, welche einer zweiten Sequenzzahl zugeordnet sind, die von der ersten Sequenzzahl, die noch nicht gespeichert worden ist, verschieden ist, und einen ausführbaren Kode enthalten, der das Speichern der Daten initiiert, welche der ersten Sequenzzahl zugeordnet sind. Die Computersoftware kann ferner einen ausführbaren Kode enthalten, der die Zusagenachricht bestätigt. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine Liste von modifizierten Schlitzen in Verbindung mit dem Empfangen von Daten konstruiert, welche der ersten Sequenzzahl bzw. ersten Sequenznummer zugeordnet sind. Der ausführbare Kode, der das Speichern von Daten initiiert, die der ersten Sequenzzahl zugeordnet sind, kann einen ausführbaren Kode umfassen, durch den die Liste der modifizierten Schlitze durchgesehen wird.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung umfasst das Lesen von gewünschten Daten von einer entfernt gelegenen Speichervorrichtung, die Datenpakete von einer anderen Speichervorrichtung empfängt, das Bestimmen, ob die gewünschten Daten Teil eines Datenpaketes ist, welches durch die andere Speichervorrichtung zugesagt wurde, und, wenn die gewünschten Daten nicht Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, Lesen der gewünschten Daten aus einer entsprechenden logischen Standardvorrichtung, und, wenn die gewünschten Daten Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, Übertragen der gewünschten Daten zu der logischen Standardvorrichtung und Ableiten der gewünschten Daten von einer der folgenden Vorrichtungen: der logischen Standardvorrichtung nach dem Transfer der gewünschten Daten dorthin und des Datenpaketes, welches durch die andere Speichervorrichtung zugesagt wurde. Das Lesen der gewünschten Daten von einer entfernten Speichervorrichtung kann auch umfassen, wenn die gewünschten Daten Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, Verriegeln eines entsprechenden Schlitzes eines Cache in Form von lediglich einer virtuellen Vorrichtung, die auf die gewünschten Daten zeigt. Das Lesen der gewünschten Daten von einer entfernt gelegenen Speichervorrichtung kann auch umfassen, dass nach der Verriegelung des entsprechenden Schlitzes eine Wiederbestimmung erfolgt, wenn die gewünschten Daten Teil eines Datenpaketes sind, die durch die andere Speichervorrichtung zugesagt wurden. Das Lesen der gewünschten Daten von einer entfernt gelegenen Speichervorrichtung kann auch umfassen, dass dann, wenn das Ergebnis der Wiederbestimmung anzeigt, dass die gewünschten Daten nicht Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, eine Entriegelung des entsprechenden Schlitzes vorgenommen wird und die gewünschten Daten von einer entsprechenden logischen Standardvorrichtung gelesen werden. Das Lesen der gewünschten Daten von einer entfernt gelegenen Speichervorrichtung kann auch umfassen, dass ein entsprechender Schlitz der logischen Standardvorrichtung verriegelt wird, die entsprechenden Cacheschlitze gemischt werden und bewirkt wird, dass der entsprechende Schlitz des Caches lediglich in Form einer virtuellen Vorrichtung auf die logische Standardvorrichtung zeigt.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung liest ein Host, der an eine entfernt gelegene Speichervorrichtung gekoppelt ist, gewünschte Daten, die durch eine örtliche Speichervorrichtung übertragen werden, indem ein kürzlicher konsistenter Satz an Daten identifiziert wird, welcher die gewünschten Daten enthält, und indem die gewünschten Daten von dem kürzlich aufgetretenen konsistenten Satz der Daten erhalten wird. Der Satz der Daten kann aus einem Datenpaket bestehen, der durch die logische Speichervorrichtung zugesagt wurde. Das Datenpaket kann einer Sequenzzahl zugeordnet sein, die kleiner ist als eine Sequenzzahl für andere Datenpakete, die andere Daten enthalten, wenn ein anderer Hostcomputer damit begonnen hat, einen Schreibvorgang vorzunehmen, und zwar nach dem Starten des Schreibvorganges der gewünschten Daten. Der an eine entfernt gelegene Speichervorrichtung gekoppelte Host, der die gewünschten Daten, die durch eine logische Speichervorrichtung gesendet werden, liest, kann auch eine Bestimmung durchführen, ob Vielfachspuren der entfernt gelegenen Speichervorrichtung gelesen werden, und, wenn vielfache Spuren gelesen werden, eine Bestimmung einer ersten momentanen Sequenzzahl vor dem Lesen der Spuren festlegen, Lesen der Spuren und dann Bestimmen einer zweiten momentanen Sequenzzahl und, wenn die erste momentane Sequenzzahl nicht gleich ist der zweiten momentanen Sequenzzahl, erneutes Lesen der Spuren. Der an eine entfernt gelegene Speichervorrichtung gekoppelte Host, der die gewünschten Daten liest, die durch eine örtliche Speichervorrichtung gesendet werden, kann auch das Merkmal umfassen, eine Bestimmung durchzuführen, ob vielfache Spuren der entfernt gelegenen Speichervorrichtung gelesen werden und, wenn vielfache Spuren gelesen werden, Durchführen einer Bestimmung oder Festlegung einer ersten momentanen Sequenzzahl vor dem Lesen der Spuren, Lesen der Spuren und dann Durchführen einer Bestimmung einer zweiten momentanen Sequenzzahl und, wenn die erste momentane Sequenzzahl nicht gleich ist der zweiten momentanen Sequenzzahl, Rückleiten eines Fehlers.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung enthält eine Computersoftware, welche die gewünschten Daten von einer entfernt gelegenen Speichervorrichtung liest, welche Datenpakete von einer anderen Speichervorrichtung empfängt, einen ausführbaren Kode, durch den bestimmt wird, ob die gewünschten Daten Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, mit einem ausführbaren Kode, der die gewünschten Daten von einer entsprechenden logischen Standardvorrichtung liest, wenn die gewünschten Daten nicht Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, und einen ausführbaren Kode umfassen, der die gewünschten Daten zu der logischen Standardvorrichtung überträgt und die gewünschten Daten von einer der folgenden Vorrichtungen empfängt: der logischen Standardvorrichtung nach dem Transfer der gewünschten Daten dort hin, und das Datenpaket, welches von der anderen Speichervorrichtung zugesagt wurde, wenn die gewünschten Daten Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der einen entsprechenden Schlitz eines Cache lediglich in Form einer virtuellen Vorrichtung verriegelt, der auf gewünschte Daten zeigt, wenn die gewünschten Daten Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den eine erneute Bestimmung durchgeführt wird, wenn die gewünschten Daten Teil eines Datenpaketes sind, welches durch die andere Speichervorrichtung zugesagt wurde, und zwar nach der Verriegelung des entsprechenden Schlitzes. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den der entsprechende Schlitz entriegelt wird und die gewünschten Daten von einer entsprechenden logischen Standardvorrichtung gelesen werden, wenn das Ergebnis der erneuten Bestimmung anzeigt, dass die gewünschten Daten nicht Teil eines Datenpaketes sind, welches von der anderen Speichervorrichtung zugesagt wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den ein entsprechender Schlitz einer logischen Standardvorrichtung verriegelt wird, ferner einen ausführbaren Kode, durch den entsprechende Cacheschlitze gemischt werden, und einen ausführbaren Kode, durch den bewirkt wird, dass der entsprechende Schlitz des Caches lediglich in Form einer virtuellen Vorrichtung auf die logische Standardvorrichtung zeigt.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung enthält die Computersoftware für einen Host, der an eine entfernt gelegene Speichervorrichtung gekoppelt ist, um gewünschte Daten zu lesen, die durch eine logische Speichervorrichtung gesendet werden, einen ausführbaren Kode, der einen kürzlichen konsistenten Datensatz identifiziert, welcher die gewünschten Daten enthält, und einen ausführbaren Kode, durch die gewünschten Daten von dem kürzlich aufgetretenen konsistenten Datensatz erhalten werden. Der Datensatz kann ein Datenpaket enthalten, welches durch die logische Speichervorrichtung zugesagt wurde. Das Datenpaket kann einer Sequenzzahl zugeordnet sein, die kleiner ist als eine Sequenzzahl für andere Datenpakete, welche andere Daten enthalten, die ein anderer Hostcomputer begonnen hat, zu schreiben, und zwar nach dem Starten des Schreibvorganges der gewünschten Daten. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den bestimmt wird, ob vielfache Spuren der entfernt gelegenen Speichervorrichtung gelesen werden, einen ausführbaren Kode enthalten, durch den eine erste momentane Sequenzzahl vor dem Lesen der Spuren bestimmt wird oder festgelegt wird, Lesen der Spuren und dann Bestimmen einer zweiten momentanen Sequenzzahl, wenn die vielen Spuren gelesen werden, und einen ausführbaren Kode enthalten, durch den die Spuren erneut gelesen werden, wenn die erste momentane Sequenzzahl nicht gleich ist der zweiten momentanen Sequenzzahl. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den bestimmt wird, ob vielfache Spuren der entfernt gelegenen Speichervorrichtung gelesen werden, einen ausführbaren Kode, der eine erste momentane Sequenzzahl vor dem Lesen der Spuren festlegt, die Spuren dann liest, und eine zweite momentane Sequenzzahl bestimmt oder festlegt, wenn die vielen Spuren gelesen werden, und einen ausführbaren Kode enthalten, durch den ein Fehler zurückgeleitet wird, wenn die erste momentane Sequenzzahl nicht gleich ist der zweiten momentanen Sequenzzahl.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung umfasst das Ordnen der Datenschreibvorgänge einen Hostcomputer, der eine Vielzahl an Datenschreibeinträgen zu einer primären Speichervorrichtung liefert, wobei die primäre Speichervorrichtung eine erste Sequenzzahl den Datenschreibeinträgen zuordnet, die nach einem ersten Zeitpunkt begonnen haben und vor einem zweiten Zeitpunkt begonnen haben, wobei die primäre Speichervorrichtung eine zweite Sequenzzahl, die von der ersten Sequenzzahl verschieden ist, den Datenschreibeinträgen zuordnet, die nach dem zweiten Zeitpunkt begonnen haben, im Ansprechen auf eine Vervollständigung von allen Schreibeinträgen, die der ersten Sequenzzahl zugeordnet sind, wobei die primäre Speichervorrichtung die Schreibeinträge, welche der ersten Sequenzzahl zugeordnet sind, zu einer zweiten Speichervorrichtung überträgt und im Ansprechen auf die primäre Speichervorrichtung alle Schreibeinträge, die der ersten Sequenzzahl zugeordnet sind, zu der zweiten Speichervorrichtung überträgt, die primäre Speichervorrichtung eine Zusagenachricht zu der zweiten Speichervorrichtung sendet. Die geordneten Datenschreibeinträge können auch umfassen, dass im Ansprechen auf den Empfang einer Zusagenachricht von der primären Speichervorrichtung, die sekundäre Speichervorrichtung Datenschreibeinträge speichert, welche die erste Sequenzzahl aufweisen. Die geordneten Datenschreibeinträge können auch das Merkmal umfassen, das im Ansprechen auf das Speichern von allen Datenschreibeinträgen, welche die erste Sequenzzahl besitzen, die sekundäre Speichervorrichtung eine Bestätigung zu der primären Speichervorrichtung sendet. Das Ordnen der Datenschreibeinträge kann auch das Merkmal umfassen, dass nachfolgend dem Aussenden einer Zusagenachricht zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung den Transfer der Daten zu der sekundären Speichervorrichtung aussetzt. Das Ordnen der Datenschreibeinträge kann auch das Merkmal umfassen, dass nachfolgend dem Aussetzen des Datentransfers die primäre Speichervorrichtung eine dritte Sequenzzahl, die von der ersten und der zweiten Sequenzzahl verschieden ist, den nachfolgenden Datenschreibeinträgen zuordnet. Das Ordnen der Datenschreibeinträge kann auch das Merkmal umfassen, dass im Ansprechen auf die zweite Speichervorrichtung, die eine Bestätigung zu der primären Speichervorrichtung sendet, die primäre Speichervorrichtung den Datentransfer zu der zweiten Speichervorrichtung wieder aufnimmt. Das Ordnen der Datenschreibeinträge kann auch das Vorsehen von Datenschreibeinträgen zu Cacheschlitzen der primären Speichervorrichtung enthalten. Das Ordnen der Datenschreibeinträge kann auch das Merkmal umfassen, dass im Ansprechen auf einen Datenschreibeintrag, der einer zweiten Sequenzzahl zugeordnet ist, entsprechend einem Cacheschlitz, der bereits der ersten Sequenzzahl zugeordnet wurde, Daten zu einem neuen Cacheschlitz kopiert werden. Das Ordnen der Schreibeinträge kann auch umfassen, dass die primäre Speichervorrichtung eine erste Liste von Zeigern zu Cacheschlitzen für Datenschreibeinträge verwendet, welche der ersten Sequenzzahl zugeordnet sind, und die primäre Speichervorrichtung eine zweite Liste an Zeigern zu Cacheschlitzen für Datenschreibeinträge verwendet, welche der zweiten Sequenzzahl zugeordnet sind. Das Ordnen der Datenschreibeinträge kann auch das Liefern eines Cachestempelfeldes in einem Kopfabschnitt von jedem der Schlitze enthalten, wobei das Cachestempelfeld eine Sequenzzahl enthält, die dem Schlitz zugeordnet ist. Das Cachestempelfeld (cache stamp field) kann auch ein Passwortfeld enthalten, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird. Das Ordnen der Datenschreibeinträge kann auch das Merkmal umfassen, dass im Ansprechen darauf, dass ein Schlitz nicht länger verwendet wird, das Passwortfeld gelöscht wird. Das Ordnen der Datenschreibeinträge kann auch das Merkmal umfassen, dass die primäre Speichervorrichtung einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, und zwar entsprechend den Datenschreibeinträgen, die der ersten Sequenzzahl zugeordnet sind, und die primäre Speichervorrichtung einen zweiten Cache lediglich in Form einer virtuellen Vorrichtung für Cacheschlitze verwendet, die den Datenschreibeinträgen entsprechen, welche der zweiten Sequenzzahl zugeordnet sind.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung kann das Speichern von geordneten Schreibeinträgen zu einer entfernt gelegenen Speichervorrichtung das Merkmal enthalten, entsprechend Empfangen einer Zusagenachricht für Daten, die einer ersten Sequenzzahl zugeordnet sind, und zwar im Ansprechen auf Daten, die einer zweiten Sequenzzahl zugeordnet sind, die von der ersten Sequenzzahl verschieden ist, die noch nicht gespeichert wurde, Warten auf Daten, die der zweiten Sequenzzahl zugeordnet sind, welche gespeichert werden sollen, und Initiieren eines Speichervorganges der Daten, die der ersten Sequenzzahl zugeordnet sind. Das Speichern der geordneten Schreibeinträge kann auch eine Bestätigung der Zusagenachricht enthalten. Das Speichern der geordneten Schreibeinträge kann auch das Konstruieren einer Liste von modifizierten Schlitzen in Verbindung mit dem Empfang von Daten enthalten, die der ersten Sequenzzahl zugeordnet sind. Das Initiieren des Speichervorganges der Daten, die der ersten Sequenzzahl zugeordnet sind, kann auch ein Durchgehen oder Durchsehen der Liste der modifizierten Schlitze umfassen.
- Gemäß einem noch weiteren Merkmal der vorliegenden Erfindung enthält die Computersoftware, welche die Datenschreibeinträge ordnet, einen ausführbaren Kode, durch den eine erste Sequenzzahl Datenschreibeinträgen zugeordnet wird, die nach einem ersten Zeitpunkt beginnen und vor einem zweiten Zeitpunkt beginnen, einen ausführbaren Kode, durch eine zweite Sequenzzahl, die von der ersten Sequenzzahl verschieden ist, Dateneinträgen zugeordnet wird, die nach dem zweiten Zeitpunkt beginnen, einen ausführbaren Kode, der Schreibeinträge, welche der ersten Sequenzzahl zugeordnet sind, zu einer Speichervorrichtung im Ansprechen auf die Vervollständigung aller Schreibeinträge, die der ersten Sequenzzahl zugeordnet sind, überträgt, einen ausführbaren Kode, der eine Zusagenachricht zu der Speichervorrichtung sendet, nachdem alle Schreibeinträge, die ersten Sequenzzahl zugeordnet sind, übertragen worden sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den das Übertragen der Daten zu der Speichervorrichtung ausgesetzt wird, nachdem eine Zusagenachricht zu dieser gesendet wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine dritte Sequenzzahl, die von der ersten und der zweiten Sequenzzahl verschieden ist, nachfolgend den Datenschreibeinträgen zu ordnet, die auf das Aussetzen der Übertragung der Daten folgen. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den das Übertragen der Daten zu der Speichervorrichtung im Ansprechen auf eine Bestätigung der Speichervorrichtung, welche die Zusage handhabt, wieder aufgenommen wird. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den Datenschreibeinträge zu Cacheschlitzen geliefert werden. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den Daten zu einem neuen Cacheschlitz kopiert werden, und zwar im Ansprechen auf einen Datenschreibeintrag, welcher einer Sequenzzahl zugeordnet ist, entsprechend zu einem Cacheschlitz, der bereits der ersten Sequenzzahl zugeordnet wurde. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine erste Liste an Zeigern zu Cacheschlitzen verwendet, und zwar für Datenschreibeinträge, die der ersten Sequenzzahl zugeordnet sind, mit einem ausführbaren Kode, der eine zweite Liste von Zeigern zu Cacheschlitzen verwendet, und zwar für Datenschreibeinträge, die der zweiten Sequenzzahl zugeordnet sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den ein Cachestempelfeld in einem Kopfabschnitt von jedem der Schlitze erzeugt wird, wobei das Cachestempelfeld eine Sequenzzahl enthält, die einem Schlitz zugeordnet ist. Das Cachestempelfeld kann auch ein Passwortfeld umfassen, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird. Die Computersoftware kann auch einen ausführbaren Kode enthalten, durch den das Passwortfeld gelöscht wird, und zwar im Ansprechen darauf, dass ein Schlitz nicht länger verwendet wird. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, entsprechend den Datenschreibeinträgen, die der ersten Sequenzzahl zugeordnet sind, und mit einem ausführbaren Kode, der einen zweiten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, entsprechend den Datenschreibeinträgen, die der zweiten Sequenzzahl zugeordnet sind.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung kann die Computersoftware, die geordnete Schreibeinträge zu einer entfernt gelegenen Speichervorrichtung überträgt bzw. dort speichert, einen ausführbaren Kode enthalten, der eine Zusagenachricht für Daten empfängt, die einer ersten Sequenzzahl zugeordnet sind, einen ausführbaren Kode enthalten, der auf Daten wartet, die der zweiten Sequenzzahl zugeordnet sind, die im Ansprechen auf Daten gespeichert werden sollen, die einer zweiten Sequenzzahl zugeordnet sind, welche von der ersten Sequenzzahl verschieden ist, die noch nicht gespeichert wurde, und einen ausführbaren Kode enthalten, der den Speichervorgang von Daten initiiert, die der ersten Sequenzzahl zugeordnet sind. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der die Zusagenachricht bestätigt. Die Computersoftware kann auch einen ausführbaren Kode enthalten, der eine Liste von modifizierten Schlitzen in Verbindung mit dem Empfang von Daten konstruiert, die der ersten Sequenzzahl zugeordnet sind. Der ausführbare Kode, der den Speichervorgang von Daten initiiert, die der ersten Sequenzzahl zugeordnet sind, kann auch einen ausführbaren Kode umfassen, der die Liste der modifizierten Schlitze durchgeht oder durchsieht.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung umfasst das Verwenden einer örtlichen Speichervorrichtung, um gewünschte Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, die Pakete von Daten von der örtlichen Speichervorrichtung empfängt, das Merkmal, dass dann, wenn die gewünschten Daten vollständig in einem Cache der örtlichen Speichervorrichtung enthalten sind, die örtliche Speichervorrichtung die Daten von dem Cache zurückleitet und, wenn die gewünschten Daten nicht vollständig in einem Cache der örtlichen Speichervorrichtung vorhanden sind, ein Lesevorgang von Daten von der entfernt gelegenen Speichervorrichtung zu der örtlichen Speichervorrichtung erfolgt und die örtliche Speichervorrichtung die Daten von der entfernt gelegenen Speichervorrichtung mit Daten von der örtlichen Speichervorrichtung an der örtlichen Speichervorrichtung mischt. Die Verwendung einer örtlichen Speichervorrichtung zum Lesen von gewünschten Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, die Datenpakete von der örtlichen Speichervorrichtung empfängt, kann auch das Merkmal umfassen, dass vor dem Lesen von Daten von der entfernt gelegenen Speichervorrichtung zu der örtlichen Speichervorrichtung hin, ein zeitweiliger Speicherbereich an der örtlichen Speichervorrichtung erzeugt wird, wenn Daten von der örtlichen Speichervorrichtung vorhanden sind, die gelegen werden sollen. Der zeitweilige Speicherbereich kann aus einem Arbeitsschlitz bestehen. Das Verwenden einer örtlichen Speichervorrichtung zum Lesen gewünschter Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, welche Datenpakete von der örtlichen Speichervorrichtung empfängt, kann auch das Merkmal umfassen, dass vor der Erzeugung eines zeitweiligen Speicherbereiches die Schlitze der örtlichen Speichervorrichtung verriegelt werden, die den Daten von der örtlichen Speichervorrichtung entsprechen, welche gelesen werden sollen. Die Verwendung einer örtlichen Speichervorrichtung zum Lesen gewünschter Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, die Datenpakete von der örtlichen Speichervorrichtung empfängt, kann auch das Merkmal umfassen, dass nach dem Mischen der Daten die Schlitze der örtlichen Speichervorrichtung entriegelt werden, die den Daten von der örtlichen Speichervorrichtung, die gelesen werden sollen, entsprechen. Die Daten von dem örtlichen Speicherbereich können mit dem oberen Bereich von Daten von dem Fern-Speicherbereich gemischt werden. Das Verwenden einer örtlichen Speichervorrichtung zum Lesen gewünschter Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, welche Datenpakete von der örtlichen Speichervorrichtung empfängt, kann auch das Merkmal enthalten, dass die entfernt gelegene Speichervorrichtung einen zeitweiligen Speicherbereich im Ansprechen auf Daten, die gelesen werden sollen, einem Cacheschlitz der entfernt gelegenen Speichervorrichtung zuordnet. Die Verwendung einer örtlichen Speichervorrichtung zum Lesen gewünschter Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, welche Datenpakete von der örtlichen Speichervorrichtung empfängt, kann auch das Lesen von Daten von der Platte des entfernt gelegenen Speicherbereiches in dem zeitweiligen Speicherbereich enthalten, und ferner auch das Mischen der Daten, die gelesen werden sollen und in dem Cacheschlitz gespeichert sind, mit Daten von einer Platte in dem zeitweiligen Speicherbereich. Die Verwendung einer örtlichen Speichervorrichtung zum Lesen gewünschter Daten, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, welche Datenpakete von der örtlichen Speichervorrichtung empfängt, kann auch das Merkmal umfassen, dass vor dem Festlegen des entfernt gelegenen Speicherbereiches, wenn Daten, die gelesen werden sollen, in einem Cacheschlitz der entfernt gelegenen Speichervorrichtung gespeichert werden, die entfernt gelegene Speichervorrichtung wenigstens einen Teil der Daten von wenigstens einem Cacheschlitz der entfernt gelegenen Speichervorrichtung zu einer Platte der entfernt gelegenen Speichervorrichtung hin schreibt.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung enthält die Computersoftware, welche gewünschte Daten liest, die an einer entfernt gelegenen Speichervorrichtung gespeichert sind, die Datenpakete von einer örtlichen Speichervorrichtung empfängt, einen ausführbaren Kode, durch den Daten von dem Cache zurückgeleitet werden, wenn die gewünschten Daten vollständig in einem Cache der örtlichen Speichervorrichtung enthalten sind, und enthält einen ausführbaren Kode, der Daten von der entfernt gelegenen Speichervorrichtung zu der örtlichen Speichervorrichtung liest und die Daten von der entfernt gelegenen Speichervorrichtung mit Daten von der örtlichen Speichervorrichtung bei der örtlichen Speichervorrichtung mischt, wenn die gewünschten Daten nicht vollständig in einem Cache der örtlichen Speichervorrichtung enthalten sind. Die Software kann auch einen ausführbaren Kode enthalten, der einen zeitweiligen Speicherbereich bei der örtlichen Speichervorrichtung erzeugt, wenn Daten von der örtlichen Speichervorrichtung vorhanden sind, die gelesen werden sollen, und zwar vor dem Lesen der Daten von der entfernt gelegenen Speichervorrichtung zu der örtlichen Speichervorrichtung hin. Der zeitweilige Speicherbereich kann aus einem Arbeitsschlitz bestehen. Die Software kann auch einen ausführbaren Kode enthalten, welcher die Schlitze der örtlichen Speichervorrichtung verriegelt, die Daten von der örtlichen Speichervorrichtung entsprechen, die gelesen werden sollen, und zwar vor dem Erzeugen eines zeitweiligen Speicherbereiches. Die Software kann auch einen ausführbaren Kode enthalten, der die Schlitze der örtlichen Speichervorrichtung entriegelt, die den Daten von der örtlichen Speichervorrichtung entsprechen, die gelesen werden sollen, und zwar nach dem Mischen der Daten. Die Daten von dem örtlichen Speicherbereich können am oberen Bereich der Daten von dem entfernt gelegenen Speicherbereich gemischt werden. Die Software kann auch einen ausführbaren Kode enthalten, welcher einen zeitweiligen Speicherbereich bei der entfernt gelegenen Speichervorrichtung im Ansprechen auf Daten, die gelesen werden sollen, und in einem Cacheschlitz der entfernt gelegenen Speichervorrichtung gespeichert sind, zuordnet. Die Software kann auch einen ausführbaren Kode enthalten, durch den Daten von der Platte des entfernt gelegenen Speicherbereiches in den zeitweiligen Speicherbereich gelesen werden, und einen Kode enthalten, der die zu lesenden Daten, die in dem Cacheschlitz gespeichert sind, mit Daten zu mischen, die von einer Platte in dem zeitweiligen Speicherbereich kommen. Die Software kann auch einen ausführbaren Kode enthalten, der wenigstens einen Abschnitt der Daten von wenigstens einem Cacheschlitz der entfernt gelegenen Speichervorrichtung zu einer Platte der entfernt gelegenen Speichervorrichtung schreibt, und zwar vor der Festlegung des entfernt gelegenen Speicherbereiches, wenn zu lesende Daten vorhanden sind, die in einem Cacheschlitz der entfernt gelegenen Speichervorrichtung gespeichert sind.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein schematisches Diagramm eines Hosts, einer örtlichen Speichervorrichtung und einer entfernt gelegenen Speichervorrichtung, die in Verbindung mit dem hier beschriebenen System verwendet werden; -
2 ist ein schematisches Diagramm, welches einen Fluss der Daten zwischen einem Host, einer örtlichen Speichervorrichtung und einer entfernt gelegenen Speichervorrichtung darstellt, die in Verbindung mit dem hier beschriebenen System verwendet werden; -
3 ist ein schematisches Diagramm, welches Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer örtlichen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht; -
4 zeigt ein Diagramm, welches eine Datenstruktur für einen Schlitz veranschaulicht, die in Verbindung mit dem hier beschriebenen System verwendet wird; -
5 ist ein Flussdiagramm, welches den Betrieb eines Hostadapters (HA) im Ansprechen auf einen Schreibvorgang durch einen Host gemäß dem hier beschriebenen System veranschaulicht; -
6 ist ein Flussdiagramm, welches das Transferieren von Daten von einer örtlichen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System veranschaulicht; -
7 zeigt ein schematisches Diagramm, welches Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System wiedergibt; -
8 zeigt ein Flussdiagramm, welches die Schritte veranschaulicht, die durch eine entfernt gelegene Speichervorrichtung in Verbindung mit dem Empfang eines Zustimmungsindikators von einer örtlichen Speichervorrichtung gemäß dem hier beschriebenen System ausgeführt werden; -
9 ist 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 einer örtlichen Speichervorrichtung ausgeführt werden, die eine Sequenzzahl gemäß einem hier beschriebenen System inkrementiert; -
11 zeigt ein schematisches Diagramm, welches die Elemente zum Konstruieren und Manipulieren von Datenpaketen an einer örtlichen Speichervorrichtung gemäß einer alternativen Ausführungsform des hier beschriebenen Systems wiedergibt; -
12 zeigt ein Flussdiagramm, welches den Betrieb eines Hostadapters (HA) im Ansprechen auf einen Schreibvorgang durch einen Host gemäß einer alternativen Ausführungsform des hier beschriebenen Systems veranschaulicht; -
13 ist ein Flussdiagramm, welches das Transferieren von Daten von einer örtlichen Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung gemäß einer alternativen Ausführungsform des hier beschriebenen Systems darstellt; -
14 zeigt ein schematisches Diagramm, welches einen Fluss der Daten zwischen einem ersten Host, einer örtlichen Speichervorrichtung, einer entfernt gelegenen Datenspeichervorrichtung und einem zweiten Host darstellt, der an die entfernt gelegene Speichervorrichtung gekoppelt ist, die in Verbindung mit dem hier beschriebenen System verwendet werden; -
15 gibt ein Flussdiagramm wieder, welches die Schritte veranschaulicht, die in Verbindung mit einem Host ausgeführt werden, der virtuell geordnete Schreibeinträge von einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System liest; -
16A und16B sind Flussdiagramme, welche die Schritte veranschaulichen, die in Verbindung mit unterschiedlichen Ausführungsformen eines Hosts ausgeführt werden, der Vielfachspuren von virtuell geordneten Schreibeinträgen von einer entfernt gelegenen Speichervorrichtung gemäß dem hier beschriebenen System liest; -
17 zeigt ein schematisches Diagramm, welches einen Fluss von Daten zwischen einem ersten Host, einer örtlichen Speichervorrichtung, einer entfernt gelegenen Datenspeichervorrichtung und einem anderen Host zeigt, der an die örtliche Speichervorrichtung gekoppelt ist, welche in Verbindung mit dem hier beschriebenen System verwendet werden; -
18 ist ein Flussdiagramm, welches die Schritte veranschaulicht, die in Verbindung mit einem Host ausgeführt werden, der an eine örtliche Speichervorrichtung gekoppelt ist und virtuell geordnete Schreibeinträge von einer entfernt gelegenen Speichervorrichtung liest, entsprechend dem hier beschriebenen System; -
19A und19B sind Flussdiagramme, welche die Schritte veranschaulichen, die durch eine entfernt gelegene Speichervorrichtung im Ansprechen auf eine Leseanfrage von einer örtlichen Speichervorrichtung ausgeführt werden, die an einen Host gekoppelt ist, der virtuell geordnete Schreibeinträge von einer entfernt gelegenen Speichervorrichtung liest, entsprechend dem hier beschriebenen System. - DETAILLIERTE BESCHREIBUNG DER VERSCHIEDENEN AUSFÜHRUNGSFORMEN
- Gemäß
1 zeigt ein Diagramm20 eine Beziehung zwischen einem Host22 , einer örtlichen Speichervorrichtung24 und einer entfernt gelegenen Speichervorrichtung26 . Der Host22 liest und schreibt Daten von bzw. zu der örtlichen Speichervorrichtung24 , und zwar über einen Hostadapter (HA)28 , der die Kopplung zwischen dem Host22 und der örtlichen Speichervorrichtung24 vereinfacht. Obwohl das Diagramm20 lediglich einen Host22 und einen HA28 zeigt, sei für Fachleute darauf hingewiesen, dass eine Vielzahl an HAs verwendet werden kann und dass einer oder mehrere HAs einen daran angekoppelten oder auch mehrere Host, die daran angekoppelt sind, enthalten kann. - Daten von der örtlichen Speichervorrichtung
24 werden über ein RDF-Glied29 zu der entfernt gelegenen Speichervorrichtung26 kopiert, um zu bewirken, dass Daten in der entfernt gelegenen Speichervorrichtung26 identisch sind mit den Daten in der örtlichen Speichervorrichtung24 . Obwohl lediglich ein Glied29 gezeigt ist, ist es auch möglich, zusätzliche Verbindungsglieder zwischen den Speichervorrichtungen24 ,26 vorzusehen und auch Verbindungsglieder zwischen einer oder beiden Speichervorrichtungen24 ,26 und anderen Speichervorrichtungen (nicht gezeigt) vorzusehen. Es sei darauf hingewiesen, dass eine zeitliche Verzögerung zwischen dem Transfer der Daten von der örtlichen 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 örtlichen Speichervorrichtung24 sind. Eine Kommunikation unter Verwendung von RDF ist beispielsweise in dem US-Patent Nr. 5,742,792 beschrieben, welches hier unter Bezugnahme mit einbezogen wird. - Die örtliche Speichervorrichtung
24 enthält eine erste Vielzahl an RDF-Adaptereinheiten (RAs)30a ,30b ,30c und die entfernt gelegene Speichervorrichtung26 enthält eine zweite Vielzahl an RAs32a -32c . Die RAs30a -30c ,32a -32c sind an das RDF-Verbindungsglied29 gekoppelt und auch in ähnlicher Weise an den Hostadapter28 , werden jedoch für den Transfer von Daten zwischen den Speichervorrichtungen24 ,26 verwendet. Die Software, die in Verbindung mit den RAs30a -30c ,32a -32c verwendet wird, wird im Folgenden mehr in Einzelheiten erläutert. - Die Speichervorrichtungen
24 ,26 können eine oder mehrere Speicherplatten enthalten, die je einen unterschiedlichen Abschnitt der Daten enthalten, die in jeder der Speichervorrichtungen24 ,26 gespeichert sind.1 zeigt die Speichervorrichtung24 , die eine Vielzahl an Platten oder Plattenlaufwerken33a ,33b ,33c enthält, und zeigt die Speichervorrichtung26 , die eine Vielzahl an Platten oder Laufwerken34a ,34b ,34c enthält. Die RDF-Funktionalität, die hier beschrieben wird, kann so eingesetzt werden, dass die Daten für wenigstens einen Abschnitt der Speicherplatten33a -33c der örtlichen Speichervorrichtung24 unter Verwendung von RDF zu wenigstens einem Abschnitt der Speicherplatten34a -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 somit nicht identisch sind. - Jede der Speicherplatte oder Laufwerke
33a ,33c ist an eine entsprechende Plattenadaptereinheit (DA)35a ,35b ,35c gekoppelt, die Daten zu einer entsprechenden einen Platte der Speicherplatten oder Laufwerke33a -33c liefert und Daten von einer entsprechenden einen Platte der Speicherplatten33a -33c empfängt. In ähnlicher Weise wird eine Vielzahl der DAs36a ,36b ,36c der entfernt gelegenen Speichervorrichtung26 dafür verwendet, um Daten zu entsprechenden Platten der Speicherplatten34a -34c zu liefern und um Daten von entsprechenden Platten der Speicherplatten34a -34c zu empfangen. Es existiert ein interner Datenpfad zwischen den DAs35a -35c , dem HA28 und den RAs30a -30c der örtlichen Speichervorrichtung24 . In ähnlicher Weise existiert ein interner Datenpfad zwischen den DAs36a -36c und den RAs32a -32c der entfernt gelegenen Speichervorrichtung26 . Es sei darauf hingewiesen, dass bei anderen Ausführungsformen die Möglichkeit besteht, dass mehr als nur eine Platte durch eine DA bedient wird und es auch möglich ist, dass mehr als eine DA eine Platte bedienen. - Die örtliche Speichervorrichtung
24 enthält auch einen Globalspeicher37 , der dazu verwendet werden kann, um den Datentransfer zwischen den DAs35a -35c , dem HA28 und den RAs30a -30c zu vereinfachen. Der Speicher37 enthält Tasks, die durch einen oder durch mehrere der DAs35a -35c , den HA28 und die RAs30a -30c auszuführen sind, und auch einen Cachespeicher, um Daten von einer oder von mehreren der Platten33a -33c aufzunehmen. In ähnlicher Weise enthält die entfernt gelegene Speichervorrichtung26 einen Globalspeicher38 , der Tasks enthalten kann, die durch einen oder durch mehrere der DAs36a -36c und die RAs32a -32c auszuführen sind, und enthält einen Cachespeicher zum Aufnehmen von Daten von einer oder mehreren der Speicherplatten34a -34c . Die Verwendung der Speicher37 ,38 wird im Folgenden noch mehr in Einzelheiten beschrieben. - Der Speicherraum in der örtlichen Speichervorrichtung
24 , die den Speicherplatten33a -33c entspricht, kann in eine Vielzahl von Volumina oder logischen Vorrichtungen unterteilt werden. Die logischen Vorrichtungen können oder können auch nicht dem physikalischen Speicherraum der Speicherplatten33a -33c entsprechen. So kann beispielsweise die Speicherplatte33a eine Vielzahl an logischen Vorrichtungen enthalten oder alternativ eine einzelne logische Vorrichtung, die beide Speicherplatten33a ,33b überspannt. In ähnlicher Weise kann der Speicherraum für die entfernt gelegene Speichervorrichtung26 , welche die Speicherplatten34a -34c enthält, in eine Vielzahl von Volumina oder logische Vorrichtungen unterteilt werden, wobei jede der logischen Vorrichtungen einer oder mehreren Speicherplatten34a -34c entsprechen kann oder auch nicht entsprechen kann. - Das Vorsehen einer RDF-Speicherabbildung zwischen Abschnitten der logischen Speichervorrichtung
24 und der entfernt gelegenen Speichervorrichtung26 involviert den Aufbau einer logischen Vorrichtung bei der entfernt gelegenen Speichervorrichtung26 , die ein entfernt gelegener Spiegel für eine logische Vorrichtung an der örtlichen Speichervorrichtung24 ist. Der Host22 liest und schreibt Daten von bzw. zu der logischen Vorrichtung an der örtlichen Speichervorrichtung24 und die RDF-Speicherabbildung bewirkt, dass modifizierte Daten von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen werden, und zwar unter Verwendung der RAs30a -30c ,32a -32c und des RDF-Verbindungsgliedes29 . In einem Dauerzustandsbetrieb enthält die logische Vorrichtung an der entfernt gelegenen Speichervorrichtung26 Daten, die identisch mit den Daten der logischen Vorrichtung bei der örtlichen Speichervorrichtung24 sind. Die logische Vorrichtung an der örtlichen Speichervorrichtung24 , die durch den Host22 zugegriffen werden, werden als "R1-Volumen" bezeichnet (oder lediglich als "R1"), während die logische Vorrichtung bei der entfernt gelegenen Speichervorrichtung26 , die eine Kopie der Daten in dem R1-Volumen enthält, als "R2-Volumen" (oder lediglich mit "R2") bezeichnet wird. Somit liest der Host Daten von und schreibt Daten zu dem R1-Volumen und RDF handhabt automatisch den Kopiervorgang und den Erneuerungsvorgang der Daten von dem R1-Volumen zu dem R2-Volumen. - Gemäß
2 ist ein Datenpfad von dem Host22 zu der örtlichen Speichervorrichtung24 und der entfernt gelegenen Speichervorrichtung26 veranschaulicht. Die Daten, die von dem Host22 zu der örtlichen Speichervorrichtung24 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement51 der örtlichen Speichervorrichtung24 veranschaulicht ist. Die Daten, die durch den Host22 zu der örtlichen Speichervorrichtung24 geschrieben werden, werden auch durch die örtliche Speichervorrichtung24 gehalten, und zwar in Verbindung mit einem Senden durch die örtliche Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 vermittels des Verbindungsgliedes29 . - Bei dem hier beschriebenen System wird jeder Datenschreibeintrag durch den Host
22 (von beispielsweise einer Aufzeichnung, einer Vielzahl von Aufzeichnungen, einer Spur usw.) einer Sequenzzahl zugeordnet. Die Sequenzzahl kann in einem geeigneten Datenfeld vorgesehen sein, welches dem Schreibeintrag zugeordnet ist. In2 sind die Schreibeinträge durch den Host22 so dargestellt, dass sie der Sequenzzahl N zugeordnet sind. Alle Schreibeinträge, die durch den Host22 ausgeführt werden, welche der Sequenzzahl N zugeordnet sind, werden in einem einzigen Datenpaket52 gesammelt. Das Datenpaket52 repräsentiert eine Vielzahl von getrennten Schreibeinträgen durch den Host22 , die angenähert zur gleichen Zeit auftreten. - Im Allgemeinen sammelt die örtliche Speichervorrichtung
24 die Datenpakete von einer Sequenzzahl, während sie ein früher gesammeltes Datenpaket (mit der früheren Sequenzzahl) zu der entfernt gelegenen Speichervorrichtung26 sendet. Während somit die örtliche Speichervorrichtung24 Schreibeinträge von dem Host22 sammelt, denen die Sequenzzahl N zugeordnet ist, werden die Schreibeinträge, die für die frühere Sequenzzahl (N-1) aufgetreten sind, durch die örtliche Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 über das Verbindungsglied29 gesendet. Ein Datenpaket54 repräsentiert Schreibeinträge von dem Host22 , denen die Sequenzzahl N-1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung26 gesendet worden sind. - Die entfernt gelegene Speichervorrichtung
26 empfängt Daten von dem Paket54 entsprechend den Schreibeinträgen, denen eine Sequenzzahl N-1 zugeordnet ist, und konstruiert ein neues Datenpaket56 der Host-Schreibeinträge mit der Sequenzzahl N-1. Die Daten können unter Verwendung eines geeigneten RDF-Protokolls übertragen werden, welches Daten bestätigt, die über das Verbindungsglied29 gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung26 alle die Daten von dem Paket54 empfangen hat, sendet die örtliche Speichervorrichtung24 eine Zusagenachricht (commit message) zu der entfernt gelegenen Speichervorrichtung26 , um all den Daten zuzustimmen, denen die Sequenzzahl N-1 zugeordnet ist, entsprechend dem Paket56 . Im Allgemeinen wird dann, wenn ein Datenpaket, welches einer bestimmten Sequenzzahl entspricht, einmal zugestimmt wurde, dieses Datenpaket zu der örtlichen Speichervorrichtung geschrieben. Dies ist in2 mit einem Datenpaket58 veranschaulicht, entsprechend den Schreibeinträgen, denen die Sequenzzahl N-2 zugeordnet ist (das heißt zwei vor der momentanen Sequenzzahl, die in Verbindung mit Schreibeinträgen verwendet wird, die von dem Host22 stammen und zu der örtlichen Speichervorrichtung26 verlaufen). In2 ist das Paket28 so dargestellt, dass es zu einem Datenelement62 geschrieben wird, welches einen Plattenspeicher für die entfernt gelegene Speichervorrichtung26 repräsentiert. Somit empfängt die entfernt gelegene Speichervorrichtung26 das Datenpaket56 bzw. sammelt dieses entsprechend der Sequenzzahl N-1, während das Datenpaket58 entsprechend der früheren Sequenzzahl (N-2) zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung26 geschrieben wird, der durch das Datenelement62 veranschaulicht ist. Bei einigen Ausführungsformen sind die Daten für das Datenpaket58 für einen Schreibvorgang markiert (werden jedoch nicht notwendigerweise unmittelbar geschrieben), während die Daten für das Datenpaket26 nicht markiert sind. - Somit schreibt der Host
22 im Betrieb Daten zu der örtlichen Speichervorrichtung24 , die örtlich in dem Datenelement51 gespeichert sind und in dem Datenpaket52 gesammelt sind. Wenn einmal all die Daten für eine bestimmte Sequenzzahl gesammelt worden sind (was bereits beschrieben worden ist), inkrementiert die örtliche Speichervorrichtung24 die Sequenzzahl. Daten von dem Datenpaket54 , die um eines weniger als der momentanen oder gegenwärtigen Sequenzzahl entsprechen, werden von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 über das Verbindungsglied29 übertragen. Das Datenpaket58 entspricht den Daten für die Sequenzzahl, die durch die örtliche Speichervorrichtung24 zugesagt wurde, die eine Nachricht zu der entfernt gelegenen Speichervorrichtung26 sendet. Daten aus dem Datenpaket58 werden in den Plattenspeicher der entfernt gelegenen Speichervorrichtung26 geschrieben. - Es sei darauf hingewiesen, dass Schreibeinträge in einem bestimmten einen der Datenpakete
52 ,54 ,56 ,58 nicht notwendigerweise geordnet sein müssen. Wie jedoch bereits an früherer Stelle mehr in Einzelheiten beschrieben worden ist, wurde jeder Schreibeintrag für das Datenpaket58 entsprechend der Sequenzzahl N-2 begonnen vor dem Beginn von irgendwelchen Schreibvorgängen für die Pakete54 ,56 entsprechend der Sequenzzahl N-1. Zusätzlich wurde jeder Schreibeintrag für die Datenpakete54 ,56 entsprechend der Sequenzzahl N-1 begonnen, und zwar vor dem Beginn von irgendwelchen Schreibeinträgen für das Datenpaket52 entsprechend der Sequenzzahl N. Somit kann für den Fall eines Kommunikationsfehlers zwischen der örtlichen Speichervorrichtung24 und der entfernt gelegenen Speichervorrichtung26 die entfernt gelegene Speichervorrichtung26 einfach den Schreibvorgang in Verbindung mit dem letzten zugesagten Datenpaket beenden (dem Paket58 bei dem Beispiel von2 ) und kann sicherstellen, dass der Zustand der Daten an der entfernt gelegenen Speichervorrichtung26 geordnet ist, und zwar in einem solchen Sinn, dass das Datenelement62 alle die Schreibeinträge enthält, die begonnen wurden, und zwar vor einem bestimmten Zeitpunkt, und keine Schreibeinträge enthält, die nach diesem Zeitpunkt begonnen wurden. Somit enthält R2 immer eine Zeitpunktkopie von R1 und es ist möglich, ein konsistentes Bild von R2-Vorrichtung wieder herzustellen. - Gemäß
3 veranschaulicht ein Diagramm70 Elemente, die zum Konstruieren und aufrechterhalten der Pakete52 ,54 verwendet werden. Eine logische Standardvorrichtung72 enthält Daten, die durch den Host22 geschrieben wurden und dem Datenelement51 von2 entsprechen und den Platten33a -33c von1 . Die logische Standardvorrichtung72 enthält Daten, die durch den Host22 zu der örtlichen Speichervorrichtung24 geschrieben wurden. - Es werden zwei verkettete Listen an Zeigern
74 ,76 in Verbindung mit der logischen Standardvorrichtung72 verwendet. Die verketteten Listen74 ,76 entsprechen den Daten, die beispielsweise in dem Speicher37 der örtlichen Speichervorrichtung24 gespeichert sein können. Die verkettete Liste74 enthält eine Vielzahl an Zeigern81 -85 , wobei jeder Zeiger zu einem Schlitz eines Cachespeichers88 zeigt, der in Verbindung mit der örtlichen Speichervorrichtung24 verwendet wird. In ähnlicher Weise enthält die verkettete Liste76 eine Vielzahl an Zeigern91 -95 , wobei jeder der Zeiger auf einen Schlitz in dem Cache88 zeigt. Bei einigen Ausführungsformen kann der Cache88 in dem Speicher37 der örtlichen Speichervorrichtung24 vorgesehen sein. Der Cache88 enthält eine Vielzahl an Cacheschlitzen102 -104 , die in Verbindung mit Schreibeinträgen zu der örtlichen Standardvorrichtung72 verwendet werden und gleichzeitig in Verbindung mit der verketteten Liste74 ,76 verwendet werden. - Jede der verketteten Listen
74 ,76 kann für eines der Datenpakete52 ,54 verwendet werden, so dass beispielsweise die verkettete Liste74 dem Datenpaket52 für die Sequenzzahl N entsprechen kann, während die verkettete Liste76 dem Datenpaket54 für die Sequenzzahl N-1 entsprechen kann. Wenn Daten durch den Host22 zu der örtlichen Speichervorrichtung74 geschrieben werden, werden die Daten zu dem Cache88 geliefert und in einigen Fällen (die noch beschrieben werden), wird ein geeigneter Zeiger der verketteten Liste74 erzeugt. Es sei erwähnt, dass die Daten nicht aus dem Cache88 entfernt werden, und zwar bis die Daten zu der logischen Standardvorrichtung72 ausgelesen wurden, und nicht länger auf die Daten gezeigt wird, und zwar durch irgendeinen der Zeiger81 -85 der verketteten Liste74 , wie dies bereits beschrieben wurde. - Bei einer hier beschriebenen Ausführungsform wird eine verkettete Liste
74 ,76 als "aktiv" bezeichnet, während die andere als "inaktiv" bezeichnet wird. Wenn somit beispielsweise die Sequenzzahl N gegeben ist, kann die verkettete Liste74 aktiv sein, während die verkettete Liste76 inaktiv ist. Die aktive eine Liste der verketteten Listen74 ,76 handhabt Schreibeinträge von dem Host22 , während die inaktive eine der verketteten Listen74 ,76 den Daten entspricht, die von der örtlichen 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 einen Liste der verketteten Listen74 ,76 (beispielsweise die Sequenzzahl N), werden die Daten entsprechend der inaktiven Liste der verketteten Listen74 ,76 (für die frühere Sequenzzahl N-1) von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen. Die RAs30a -30c verwenden die verketteten Listen74 ,76 , um die Daten zu bestimmen, die von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen werden sollen. - Wenn einmal die Daten entsprechend einem bestimmten einen der Zeiger in einer der verketteten Listen
74 ,76 zu der entfernt gelegenen Speichervorrichtung26 übertragen worden sind, kann der entsprechende eine der Zeiger von der entsprechenden einen der verketteten Listen74 ,76 entfernt werden. Zusätzlich können die Daten auch für ein Entfernen aus dem Cache33 markiert werden (das heißt der Schlitz wird zu einem Pool an Schlitzen für eine spätere unbezogene Verwendung zurückgeführt), vorausgesetzt, dass die Daten in dem Schlitz nicht anderweit für einen anderen Zweck benötigt werden (z. B. zum Auslesen zu der logischen Standardvorrichtung72 ). Ein Mechanismus kann dabei verwendet werden, um sicherzustellen, dass die Daten nicht aus dem Cache88 entfernt werden, bis alle Vorrichtungen nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US-Patent Nr. 5,537,568, ausgegeben am 16. Juli 1996, und in der US-Patentanmeldung Nr. 09/850,551, eingereicht am 7. Juli 2001, beschrieben, die beide hier unter Bezugnahme mit einbezogen werden. - Gemäß
4 enthält ein Schlitz120 wie einer der Schlitze102 -104 des Caches88 einen Kopfabschnitt (header)122 und Daten124 . Der Kopfabschnitt122 entspricht Overhead-Informationen, die von dem System dazu verwendet werden, um den Schlitz120 zu managen. Die Daten124 sind die entsprechenden Daten von der Platte oder dem Plattenlaufwerk, welche (zeitweilig) in dem Schlitz120 gespeichert sind. Informationen in dem Kopfabschnitt122 enthalten Zeiger zurück zu der Speicherplatte, Zeitstempel usw. - Der Kopfabschnitt
122 enthält auch einen Cachestempel126 , welcher in Verbindung mit dem hier beschriebenen System verwendet wird. Bei einer hier beschriebenen Ausführungsform umfasst der Cachestempel126 acht Bytes. Zwei der Bytes sind ein "Passwort", welches anzeigt, ob der Schlitz120 durch das hier beschriebene System verwendet wird. Bei anderen Ausführungsformen kann das Wort ein Byte umfassen, während das folgende Byte für ein Pad verwendet wird. Wie bereits beschrieben worden ist, zeigen die zwei Bytes des Passwortes (oder ein Byte je nach Fall), die gleich einem bestimmten Wert sind, an, dass das auf den Schlitz120 durch wenigstens einen Eintrag der verketteten Listen74 ,76 gezeigt wird. Das Passwort, welches nicht gleich ist dem bestimmten Wert, zeigt an, dass auf den Schlitz120 nicht durch irgendeinen Eintrag der verketteten Listen74 ,76 gezeigt wird. Die Verwendung des Passwortes wird noch näher beschrieben. - Der Cachestempel
126 enthält auch ein Zwei-Byte-Feld, welches die Sequenzzahl (z. B. N, N-1, N-2 usw.) der Daten124 des Schlitzes120 angibt. Wie noch beschrieben wird, kann das Sequenzzahlfeld des Cachestempels126 dazu verwendet werden, um die hier beschriebene Verarbeitung zu vereinfachen. Die verbleibenden vier Bytes des Cachestempels126 können für einen Zeiger verwendet werden, wie dies noch beschrieben wird. Natürlich sind die zwei Bytes der Sequenzzahl und die vier Bytes des Zeigers lediglich gültig, wenn das Passwort gleich ist einem bestimmten Wert, der anzeigt, dass auf den Schlitz120 durch wenigstens einen 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, der eine Schreiboperation ausführt. Wenn natürlich der Host22 einen Schreibvorgang ausführt, erfolgt eine Verarbeitung für die Handhabung des Schreibeintrags in einer normalen Weise, und zwar ungeachtet, ob die Daten Teil einer R1/R2 RDF-Gruppe sind. Wenn beispielsweise der Host22 Daten für einen Abschnitt der Speicherplatte schreibt, tritt der Schreibeintrag an einem Cacheschlitz auf, der eventuell zu der Platte ausgelesen wurde. Der Cacheschlitz kann entweder ein neuer Cacheschlitz sein oder kann ein bereits existierender Cacheschlitz sein, der in Verbindung mit einer früheren Lese- und/oder Schreiboperation zu der gleichen Spur erzeugt worden ist. - Der Prozess beginnt bei einem ersten Schritt
142 , bei dem ein Schlitz entsprechend dem Schreibeintrag verriegelt wird. Bei einer Ausführungsform, die hier beschrieben wird, entspricht jeder der Schlitze102 -104 des Caches88 einer Spur von Daten auf der logischen Standardvorrichtung72 . Das Verriegeln des Schlitzes bei dem Schritt142 verhindert eine zusätzliche Verarbeitung an dem relevanten Schlitz, und zwar während der Verarbeitung, die durch den HA28 durchgeführt wird, entsprechend den Schritten des Flussdiagramms140 . - Nachfolgend dem Schritt
142 folgt ein Schritt144 , bei dem ein Wert für N, die Sequenzzahl, eingestellt wird. Wie noch beschrieben werden wird, wird der Wert für die Sequenzzahl bei dem Schritt144 erhalten und wird während der gesamten Schreiboperation beibehalten, die durch den HA28 ausgeführt wird, während der Schlitz verriegelt ist. Wie noch erläutert werden wird, wird die Sequenzzahl jedem Schreibeintrag zugeordnet, um das eine der Datenpakete52 ,54 einzustellen, zu welchem der Schreibeintrag gehört. Schreibeinträge, die durch den Host22 ausgeführt werden, werden einer momentanen Sequenzzahl zugeordnet. Es ist von Vorteil, dass eine einzelne Schreiboperation die gleiche Sequenzzahl durchgehend beibehält. - Nachfolgend dem Schritt
144 folgt ein Testschritt146 , bei dem bestimmt wird, ob das Passwortfeld des Cacheschlitzes gültig ist. Wie oben dargelegt wurde, wird bei dem hier beschriebenen System das Passwortfeld auf einen vorbestimmten Wert eingestellt, um anzuzeigen, dass der Cacheschlitz bereits in einer der verketteten Listen der Zeiger74 ,76 vorhanden ist. Wenn bei dem Testschritt146 bestimmt wird, dass das Passwortfeld nicht gültig ist (wobei angezeigt wird, dass der Schlitz ein neuer Schlitz ist und dass keine Zeiger aus den Listen74 ,76 auf den Schlitz zeigen), verläuft die Steuerung von dem Schritt146 zu einem Schritt148 , bei dem der Cachestempel des neuen Schlitzes eingestellt wird, indem das Passwort auf den bestimmten Wert gesetzt wird, das Sequenzzahlenfeld auf N gesetzt wird und das Zeigerfeld auf Null gesetzt wird. Bei anderen Ausführungsformen kann das Zeigerfeld so eingestellt werden, dass es auf den Schlitz selbst zeigt. - Nachfolgend dem Schritt
148 folgt ein Schritt152 , bei dem ein Zeiger zu einem neuen Schlitz zu der aktiven einen Liste der Zeigerlisten74 ,76 hinzu addiert wird. Bei einer hier beschriebenen Ausführungsform bestehen die Listen74 ,76 aus kreisförmig doppelt verketteten Listen und der neue Zeiger wird zu der kreisförmig doppelt verketteten Liste in einer herkömmlichen Weise hinzu addiert. Natürlich kann eine andere geeigneten Datenstruktur zum Managen der Listen74 ,76 verwendet werden. Nachfolgend dem Schritt152 folgt ein Schritt154 , bei dem Flags gesetzt werden. Bei dem Schritt154 wird das RDF_WP-Flag (RDF-Schreibaussetzflag) gesetzt, um anzuzeigen, dass der Schlitz zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung von RDF übertragen werden muss. Zusätzlich bei dem Schritt154 wird das IN_CACHE-Flag gesetzt, um anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung72 hin ausgelesen werden muss. Nachfolgend dem Schritt154 folgt ein Schritt156 , bei dem Daten, die durch den Host22 und durch HA28 geschrieben werden, zu dem Schlitz geschrieben werden. Nachfolgend dem Schritt156 folgt ein Schritt158 , bei welchem der Schlitz entriegelt wird. Nachfolgend dem Schritt158 ist dann die Verarbeitung vervollständigt. - Wenn bei dem Testschritt
146 bestimmt wird, dass das Passwortfeld des Schlitzes gültig ist (es wird angezeigt, dass auf den Schlitz bereits durch wenigstens einen Zeiger der Listen74 ,76 gezeigt wird), dann wird die Steuerung von dem Schritt146 zu einem Testschritt162 übertragen, bei dem bestimmt wird, ob das Sequenzzahlfeld des Schlitzes gleich ist der momentanen Sequenzzahl N. Es sei darauf hingewiesen, dass es zwei gültige Möglichkeiten für Sequenzzahlfeld eines Schlitzes mit einem gültigen Passwort gibt. Es ist für das Sequenzzahlfeld möglich, dass es gleich N ist, der momentanen Sequenzzahl. Dies ereignet sich, wenn der Schlitz einem früheren Schreibeintrag mit der Sequenzzahl N entspricht. Die andere Möglichkeit für das Sequenzzahlfeld besteht darin, dass dieses gleich ist N-1. Dies ereignet sich, wenn der Schlitz, der einem früheren Eintrag mit der Sequenzzahl N-1 entspricht. Irgendein anderer Wert für die Sequenzzahl ist ungültig. Es kann somit bei einigen Ausführungsformen möglich sein, eine Fehler-/Gültigkeitsüberprüfung bei dem Schritt162 einzuschließen, um möglicherweise eine Fehler-/Gültigkeitsüberprüfung bei einem getrennten Schritt durchzuführen. Solch ein Fehler kann in irgendeiner geeigneten Weise gehandhabt werden und kann das Vorsehen einer Nachricht zu einem Anwender enthalten. - Wenn bei dem Schritt
162 bestimmt wird, dass der Wert in dem Sequenzzahlenfeld des Schlitzes gleich ist der momentanen Sequenzzahl N, dann ist keine spezielle Verarbeitung erforderlich und die Steuerung wird von dem Schritt162 zu dem Schritt156 übertragen, der oben erläutert wurde, bei dem Daten zu dem Schlitz geschrieben werden. Wenn ansonsten der Wert des Sequenzzahlenfeldes N-1 beträgt (der einzige andere gültige Wert), wird die Steuerung von dem Schritt162 zu einem Schritt164 übertragen, bei dem ein neuer Schlitz erhalten wird. Der neue Schlitz, der bei dem Schritt164 erhalten wird, kann zum Speichern der zu schreibenden Daten verwendet werden. - Auf den Schritt
164 folgt ein Schritt166 , bei dem Daten von dem alten Schlitz zu dem neuen Schlitz kopiert werden, der bei dem Schritt164 erhalten wurde. Es sei darauf hingewiesen, dass die kopierten Daten das RDF_WP-Flag enthalten, welches bei dem Schritt154 gesetzt worden sein sollte, und zwar bei einem früheren Schreibeintrag, wenn der Schlitz zum ersten Mal erzeugt wurde. Nachfolgend dem Schritt166 folgt ein Schritt168 , bei dem der Cachestempel für den neuen Schlitz eingestellt wird, indem das Passwortfeld auf einen geeigneten Wert eingestellt wird, ferner das Sequenzzahlenfeld auf die momentane Sequenzzahl N eingestellt wird und das Zeigerfeld so eingestellt wird, dass es auf den alten Schlitz zeigt. Nachfolgend dem Schritt168 folgt ein Schritt172 , bei dem ein Zeiger zu dem neuen Schlitz zu der aktiven einen Liste der verketteten Liste74 ,76 hinzuaddiert wird. Auf den Schritt172 folgt der oben erläuterte Schritt156 , bei dem Daten zu dem Schlitz geschrieben werden, welcher in dem vorliegenden Fall der neue Schlitz ist. - Gemäß
6 veranschaulicht ein Flussdiagramm200 Schritt, die in Verbindung mit den RAs30a -30c durchgeführt werden bzw. dem Abtasten der inaktiven Liste der Listen72 ,74 , um RDF-Daten von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung62 zu übertragen. Wie weiter oben erläutert wurde, zeigte die inaktive Liste der Listen72 ,74 auf Schlitze, die dem N-1-Zyklus für die R1-Vorrichtung entsprechen, wenn der N-Zyklus zu der R1-Vorrichtung geschrieben wird, und zwar durch den Host, unter Verwendung der aktiven Liste der Listen72 ,74 . - Die Verarbeitung beginnt bei einem ersten Schritt
202 , bei dem 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 zu der aktiven einen Liste der Listen72 ,74 geliefert und nicht allgemein zu der inaktiven Liste der Listen72 ,74 . Es ist somit möglich (und wie noch beschrieben wird, wünschenswert), dass die inaktive Liste der Listen72 ,74 keine Daten zu bestimmten Zeitpunkten enthält. Wenn bei dem Schritt202 bestimmt wird, dass keine Daten zu übertragen sind, dann wird die inaktive Liste der Listen72 ,74 fortlaufend abgesucht, bis Daten verfügbar werden. Daten zum Senden werden in Verbindung mit einem Zyklusschalter verfügbar (was noch erläutert wird), wobei die inaktive Liste der Listen72 ,74 zur aktiven Liste der Listen72 ,74 und umgekehrt wird. - Wenn bei dem Schritt
202 bestimmt wird, dass Daten zum Senden verfügbar sind, wird die Steuerung von dem Schritt202 zu einem Schritt204 übergeben, bei dem der Schlitz als korrekt verifiziert wird. Die Verarbeitung, die bei dem Schritt204 durchgeführt wird, besteht aus einer optionalen "Sanitärüberprüfung", die einen Verifizierungsvorgang enthalten kann, dass das Passwortfeld korrekt ist, und einen Verifizierungsvorgang enthalten kann, dass das Sequenzzahlenfeld korrekt ist. Wenn in dem Schlitz nicht korrekte (unerwartete) Daten enthalten sind, kann eine Fehlerverarbeitung durchgeführt werden, die eine Benachrichtigung eines Anwenders über den Fehler beinhaltet und auch möglicherweise eine Fehlerbehebungsverarbeitung beinhaltet. - Nachfolgend dem Schritt
204 folgt ein Schritt212 , bei dem Daten über RDF in einer herkömmlichen Weise gesendet werden. Bei einer hier beschriebenen Ausführungsform wird nicht der gesamte Schlitz gesendet. Vielmehr werden Aufzeichnungen innerhalb des Schlitzes, die den geeigneten Spiegelbitsatz aufweisen (wird durch Änderung der Aufzeichnungen angezeigt), zu der entfernt gelegenen Speichervorrichtung26 gesendet. Bei anderen Ausführungsformen ist es jedoch auch möglich, den gesamten Schlitz zu senden, vorausgesetzt, dass die fern gelegene Speichervorrichtung26 lediglich Daten entsprechend den Aufzeichnungen mit dem geeigneten Spiegelbitsatz schreibt und andere Daten für die Spur ignoriert, die gültig oder nicht gültig sein kann. Nachfolgend dem Schritt212 folgt ein Testschritt214 , bei dem bestimmt wird, ob Daten, die gesendet wurden, durch die R2-Vorrichtung anerkannt 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 stärker involvierte Verarbeitung verwendet werden, um Daten zu senden und den Empfang derselben zu bestätigen. Solch eine Verarbeitung kann einen Fehlerbericht und auch eine alternative Verarbeitung enthalten, die nach einer bestimmten Anzahl von fehlgeschlagenen Versuchen, die Daten zu senden, ausgeführt werden. - Wenn bei dem Testschritt
214 einmal bestimmt worden ist, dass die Daten erfolgreich gesendet worden sind, verläuft die Steuerung von dem Schritt214 zu einem Schritt216 , um das RDF_WP-Flag zu löschen (da die Daten über RDF erfolgreich gesendet worden sind). Nachfolgend dem Schritt216 folgt ein Testschritt218 , bei dem bestimmt wird, ob der Schlitz ein Duplikatschlitz ist, der in Verbindung mit einem Schreibeintrag zu einem Schlitz erzeugt wurde, der bereits einen existierenden Eintrag in der inaktiven Liste der Listen72 ,74 enthält. Diese Möglichkeit ist weiter oben in Verbindung mit den Schritten162 ,164 ,166 ,168 ,172 erläutert. Wenn bei dem Schritt218 bestimmt wird, dass der Schlitz ein Duplikatschlitz ist, dann verläuft die Steuerung von dem Schritt218 zu einem Schritt222 , bei dem der Schlitz zu dem Pool der verfügbaren Schlitze (zur Wiederverwendung) zurückgeleitet wird. Zusätzlich kann der Schlitz auch gealtert werden (oder es kann irgendein anderer geeigneter Mechanismus an diesem angewendet werden), um für eine unmittelbare Wiederverwendung vor anderen Schlitzen vorzusehen, da die Daten, die in dem Schlitz vorgesehen sind, für irgendwelche anderen Zwecke oder einen anderen Zweck nicht gültig sind. Nachfolgend dem Schritt222 oder dem Schritt218 , wenn der Schlitz kein Duplikatschlitz ist, folgt ein Schritt224 , bei dem das Passwortfeld des Schlitzkopfes gelöscht wird, so dass, wenn der Schlitz wieder verwendet wird, der Test bei dem Schritt146 von5 in richtiger Weise den Schlitz als einen neuen Schlitz klassifiziert. - Nachfolgend dem Schritt
224 folgt ein Schritt226 , bei dem der Eintrag in der inaktiven Liste der Listen72 ,74 entfernt wird. Nachfolgend dem Schritt226 wird die Steuerung zurück zu dem Schritt202 geleitet, der oben erläutert wurde, bei dem bestimmt wird, ob zusätzliche Einträge an der inaktiven Liste der Listen72 ,74 entsprechend Daten, die übertragen werden sollen, vorhanden sind. - Gemäß
7 veranschaulicht ein Diagramm240 die Erzeugung und die Manipulation von Datenpaketen56 ,58 , die bei der entfernt gelegenen Speichervorrichtung26 verwendet werden. Die Daten, die durch die entfernt gelegene Speichervorrichtung26 über das Verbindungsglied29 empfangen werden, werden zu einem Cache242 der entfernt gelegenen Speichervorrichtung26 geliefert. Der Cache242 kann beispielsweise in dem Speicher38 der entfernt gelegenen Speichervorrichtung26 vorgesehen sein. Der Cache242 enthält eine Vielzahl an Cacheschlitzen244 -246 , von denen jeder auf einer Spur der logischen Standardspeichervorrichtung252 abgebildet ist. Der Cache242 ist ähnlich dem Cache88 von3 und kann Daten enthalten, die zu der logischen Standardspeichervorrichtung252 der entfernt gelegen Speichervorrichtung26 hin ausgelesen werden. Die logische Standardspeichervorrichtung252 entspricht dem Datenelement62 , welches in2 gezeigt ist, und den Platten oder Laufwerken34a -34c , die in1 gezeigt sind. - Die entfernt gelegene Speichervorrichtung
26 enthält auch ein Paar von lediglich virtuellen Cachevorrichtungen254 ,256 . Die lediglich virtuellen Cachevorrichtungen254 ,256 entsprechen Vorrichtungstabellen, die beispielsweise in dem Speicher38 der entfernt gelegenen Speichervorrichtung26 gespeichert sein können. Jeder Spureintrag der Tabellen von jeder lediglich virtuellen Cachevorrichtung254 ,256 zeigt entweder auf eine Spur der logischen Standardvorrichtung252 oder zeigt zu einem Schlitz des Cachespeichers242 . Die lediglich virtuellen Cachevorrichtungen sind in der schwebenden US-Patentanmeldung beschrieben, die den Titel trägt "CACHE-ONLY VIRTUAL DEVICES", eingereicht am 25. März 2003 mit der Seriennummer 10/396,800, die hier unter Bezugnahme mit einbezogen wird. - Die Vielzahl der Cacheschlitze
244 -246 kann in Verbindung mit den Schreibeinträgen zu der logischen Standardvorrichtung252 verwendet werden und gleichzeitig in Verbindung mit den lediglich virtuellen Cachevorrichtungen254 ,256 verwendet werden. Bei einer hier angesprochenen Ausführungsform enthält jeder Spurtabelleneintrag der lediglich virtuellen Cachevorrichtungen254 ,256 eine Null, um anzuzeigen, dass die Daten für diese Spur an einer entsprechenden Spur der logischen Standardvorrichtung252 gespeichert sind. Ansonsten enthält ein Eintrag in der Spurtabelle für jede virtuelle Cachevorrichtung254 ,256 einen Zeiger zu einem der Schlitze244 -246 in dem Cachespeicher242 . - Jede der lediglich virtuellen Cachevorrichtungen
254 ,256 entspricht einem der Datenpakete56 ,58 . So kann beispielsweise die lediglich virtuelle Cachevorrichtung254 dem Datenpaket56 entsprechen, während die lediglich virtuelle Cachevorrichtung256 dem Datenpaket58 entsprechen kann. Bei einer hier beschriebenen Ausführungsform kann eine der lediglich virtuellen Cachevorrichtungen254 ,256 als "aktiv" betrachtet werden, während die andere Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 als "inaktiv" betrachtet werden kann. Die inaktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 kann den Daten entsprechen, die von der örtlichen Speichervorrichtung24 empfangen werden (das heißt dem Datenpaket56 ), während die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 den Daten entsprechen kann, die zu der logischen Standardvorrichtung252 hin wieder hergestellt (geschrieben) werden. - Die Daten von der örtlichen Speichervorrichtung
24 , die über das Verbindungsglied29 empfangen werden, können in einen der Schlitze244 -246 des Cachespeichers242 platziert werden. Ein entsprechender Zeiger der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 kann so eingestellt werden, dass er auf die empfangenen Daten zeigt. Nachfolgend können Daten, welche die gleiche Sequenzzahl haben, in einer ähnlichen Weise verarbeitet werden. An einer bestimmten Stelle liefert die örtliche Speichervorrichtung24 eine Nachricht, die alle Daten bestätigt oder eine Zusage für alle Daten liefert, die gesendet wurden, und zwar unter Verwendung der gleichen Sequenzzahl. Wenn die Daten für eine bestimmte Sequenzzahl einmal zugesagt wurden oder bestätigt wurden, wird die inaktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 zu einer aktiven und umgekehrt. An dieser Stelle werden Daten von der nun aktiven Vorrichtung der lediglich virtuelle Cachevorrichtungen254 ,256 zu der logischen Standardvorrichtung252 hin kopiert, während die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 dazu verwendet wird, um neue Daten (mit einer neuen Sequenzzahl) zu empfangen, die von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 gesendet werden. - Wenn Daten aus der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen
254 ,256 entfernt werden (was bereits erläutert wurde), kann der entsprechende Eintrag in der aktiven einen Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 auf Null gestellt werden. Zusätzlich können Daten auch aus dem Cache244 entfernt werden (das heißt der Schlitz wird zu dem Pool freier Schlitze für eine spätere Verwendung zurückgeführt), vorausgesetzt, dass die Daten in dem Schlitz nicht anderweitig für einen anderen Zweck benötigt werden (z. B., um zu der logischen Standardvorrichtung252 hin ausgelesen zu werden). Es kann ein Mechanismus verwendet werden, um sicherzustellen, dass die Daten nicht aus dem Cache242 entfernt werden, bis alle Spiegel (inklusive der lediglich virtuellen Cachevorrichtungen254 ,256 ) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US-Patent Nr. 5,537,568, ausgegeben am 16. Juli 1996, und in der US-Patentanmeldung Nr. 09/850,551, eingereicht am 7. Juli 2001, beschrieben, die beide hier unter Bezugnahme mit einbezogen werden. - Bei einigen hier erläuterten Ausführungsformen kann die entfernt gelegene Speichervorrichtung
26 verkettete Listen258 ,262 ähnlich den Listen74 ,76 aufrechterhalten, die durch die örtliche Speichervorrichtung24 verwendet werden. Die Listen258 ,262 können Informationen enthalten, welche die Schlitze der entsprechenden, lediglich virtuellen Cachevorrichtungen254 ,256 identifizieren, die modifiziert worden sind, wobei eine der Listen258 ,262 einer Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 entspricht und die andere Liste der Listen258 ,262 der anderen einen Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 entspricht. Wie noch erläutert werden wird, können die Listen258 ,262 dazu verwendet werden, um das wieder Abspeichern von Daten von den lediglich virtuellen Cachevorrichtungen254 ,256 zu der logischen 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 Sequenznummernzusage ausgeführt werden, welche von der örtlichen Speichervorrichtung25 zu der entfernt gelegenen Speichervorrichtung26 gesendet werden. Wie dargelegt wird, inkrementiert die örtliche Speichervorrichtung24 periodisch die Sequenzzahl. Wenn dies auftritt, beendet die örtliche Speichervorrichtung24 die Übertragung von all den Daten für die frühere Sequenzzahl und sendet dann eine Zusagenachricht für die frühere Sequenzzahl. - Die Verarbeitung beginnt bei einem Schritt
272 , bei dem Zusage (commit) empfangen wird. Nachfolgend dem Schritt272 folgt ein Testschritt274 , bei dem bestimmt wird, ob die aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 der entfernt gelegenen Speichervorrichtung26 leer ist. Wie bereits dargelegt wurde, wird die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 der entfernt gelegenen Speichervorrichtung26 dazu verwendet, um Daten von der örtlichen Speichervorrichtung24 zu sammeln, die unter Verwendung von RDF gesendet werden, während die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 zurück zu der logischen Standardvorrichtung252 gespeichert wird. - Wenn bei dem Testschritt
274 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 nicht leer ist, wird die Steuerung von dem Testschritt274 zu einem Schritt276 übertragen, bei dem die Wiederherstellung oder Wiederspeicherung für die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 vervollständigt wird, und zwar vor der Ausführung der weiteren Verarbeitung. Das Wiederspeichern der Daten von der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 wird noch mehr in Einzelheiten beschrieben. Es ist von Vorteil, dass die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 leer ist, bevor die Zusage gehandhabt wird und mit dem Wiederspeichern der Daten für die nächste Sequenzzahl begonnen wird. - Nachfolgend dem Schritt
276 oder nachfolgend dem Schritt274 , folgt, wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 als leer bestimmt wurde, ein Schritt278 , bei dem die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 inaktiv gemacht wird. Nachfolgend dem Schritt278 folgt ein Schritt282 , bei dem die früher inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 (das heißt die eine, die inaktiv vor der Ausführung des Schrittes278 war) aktiv gemacht wird. Das Umwechseln oder Umverlagern der aktiven und der inaktiven Cachevorrichtungen der lediglich virtuellen Cachevorrichtungen254 ,256 bei den Schritten278 ,282 bereitet die nun inaktive (und leere) Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 dafür vor, um den Empfang der Daten von der örtlichen Speichervorrichtung24 für die nächste Sequenzzahl zu beginnen. - Nachfolgend dem Schritt
282 folgt ein Schritt284 , bei dem die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 zu der logischen Standardvorrichtung der entfernt gelegenen Speichervorrichtung26 hin wieder gespeichert wird. Das Wiederspeichern oder Wiederherstellen der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 zu der logischen Standardvorrichtung252 wird noch mehr in Einzelheiten im Folgenden beschrieben. Es sei jedoch darauf hingewiesen, dass bei einigen Ausführungsformen der Wiederabspeicherprozess begonnen wird, jedoch nicht notwendigerweise bei dem Schritt284 vervollständigt wird. Nachfolgend dem Schritt284 folgt ein Schritt286 , bei dem die Zusage, die von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 gesendet wurde, zurück bestätigt wird, und zwar zu der örtlichen Speichervorrichtung24 hin, so dass die örtliche Speichervorrichtung24 darüber informiert wird, dass die Zusage erfolgreich war. Nachfolgend dem Schritt286 wird die Verarbeitung vervollständig. - Gemäß
9 veranschaulicht ein Flussdiagramm300 mehr in Einzelheiten die Schritt276 ,284 von8 , bei denen die entfernt gelegene Speichervorrichtung26 die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 wieder herstellt. Der Prozess beginnt bei einem ersten Schritt302 , bei dem ein Zeiger gesetzt wird, um auf den ersten Schlitz der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 zu zeigen. Der Zeiger wird dazu verwendet, um durch jeden Spurtabelleneintrag der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 schrittweise hindurch zu gehen, von denen jeder individuell verarbeitet wird. Nachfolgend dem Schritt302 folgt ein Testschritt304 , bei dem bestimmt wird, ob die Spur der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 , die verarbeitet wird, zu der logischen Standardvorrichtung252 zeigt. Wenn dies der Fall ist, gibt es nichts, was wieder hergestellt bzw. wieder gespeichert werden kann. Im anderen Fall wird die Steuerung von dem Schritt304 zu einem Schritt306 überführt, bei dem der entsprechende Schlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 verriegelt wird. - Nachfolgend dem Schritt
306 folgt ein Testschritt308 , bei dem bestimmt wird, ob der entsprechende Schlitz der logischen Standardvorrichtung252 bereits in dem Cache der entfernt gelegenen Speichervorrichtung26 vorhanden ist. Wenn dies der Fall ist, wird die Steuerung von dem Testschritt308 zu einem Schritt312 übertragen, bei dem der Schlitz der logischen Standardvorrichtung verriegelt wird. Nachfolgend dem Schritt312 folgt ein Schritt314 , bei dem die Daten von der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 mit Daten in dem Cache für die logische Standardvorrichtung252 gemischt werden. Das Mischen der Daten bei dem Schritt314 involviert das Überschreiben der Daten für die logische Standardvorrichtung mit neuen Daten der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 . Es sei darauf hingewiesen, dass bei einigen Ausführungsformen, welche die Aufzeichnungsebenenflags liefern, es möglich ist, die neuen Aufzeichnungen von der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 gemäß einer ODER-Verknüpfung zu verknüpfen, und zwar mit Aufzeichnungen der logischen Standardvorrichtung252 in dem Cache. Das heißt, wenn die Aufzeichnungen verschachtelt sind, ist es lediglich erforderlich, die Aufzeichnungen von der aktiven Vorrichtung der lediglich virtuellen Vorrichtungen254 ,256 zu verwenden, die sich geändert haben, und die Aufzeichnungen zu dem Cacheschlitz der logischen Standardvorrichtung252 zu liefern. Nachfolgend dem Schritt314 folgt ein Schritt316 , bei dem der Schlitz der logischen Standardvorrichtung252 entriegelt wird. Nachfolgend dem Schritt316 folgt ein Schritt318 , bei dem der Schlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 , die verarbeitet wird, ebenfalls entriegelt wird. - Wenn bei dem Testschritt
308 bestimmt wird, dass der entsprechende Schlitz der logischen Standardvorrichtung252 nicht im Cache ist, dann wird die Steuerung von dem Testschritt308 zu einem Schritt322 übertragen, bei dem der Spureintrag für den Schlitz der logischen Standardvorrichtung252 geändert wird, um anzuzeigen, dass der Schlitz der logischen Standardvorrichtung252 im Cache ist (z. B. ein IN_CACHE-Flag kann gesetzt werden) und nicht ausgelesen werden muss. Wie bereits früher erläutert wurde, brauchen bei einigen Ausführungsformen lediglich Aufzeichnungen der Spur, die einen geeigneten Spiegelbildsatz aufweist, nicht ausgelesen zu werden. Nachfolgend dem 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. - Nachfolgend dem Schritt
324 folgt ein Schritt326 , bei dem der Schlitzzeiger für die logische Standardvorrichtung252 geändert wird, um auf den Schlitz in dem Cache zu zeigen. Nachfolgend dem Schritt326 folgt ein Testschritt328 , bei dem bestimmt wird, ob die Operationen, die bei den Schritten322 ,324 ,326 ausgeführt wurden, erfolgreich gewesen sind. In einigen Fällen kann eine Operation, die als "Vergleichs- und Umlagerungs-"Operation bezeichnet wird, dafür verwendet werden, um die Schritte322 ,324 ,326 auszuführen. Wenn diese Operationen aus irgendeinem Grund nicht erfolgreich sind, wird die Steuerung von dem Schritt328 zurück zu dem Schritt308 übergeben, um eine erneute Prüfung vorzunehmen, ob die entsprechende Spur der logischen Standardvorrichtung252 in dem Cache ist. Wenn im anderen Fall bei dem Testschritt328 bestimmt wird, dass die früheren Operationen erfolgreich verlaufen sind, wird die Steuerung von dem Testschritt328 zu dem Schritt318 übertragen, der oben erläutert wurde. - Nachfolgend dem Schritt
318 folgt ein Testschritt332 , bei dem bestimmt wird, ob der Cacheschlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 (der wieder gespeichert wird) noch in Benutzung ist. In einigen Fällen kann es möglich sein, dass der Schlitz für die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 noch durch einen anderen Spiegel verwendet wird. Wenn bei dem Testschritt332 bestimmt wird, dass der Schlitz des Caches der lediglich virtuellen Vorrichtung nicht durch einen anderen Spiegel verwendet wird, dann wird die Steuerung von dem Testschritt332 zu einem Schritt334 übertragen, bei welchem der Schlitz für die Verwendung durch andere Prozesse freigegeben wird (z. B. zu einem Pool von verfügbaren Schlitzen zurück übertragen wird, wie dies bereits an früherer Stelle erläutert wurde). Nachfolgend dem Schritt334 folgt ein Schritt336 , um auf den nächsten Schlitz zu zeigen, um den nächsten Schlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 zu verarbeiten. Es sei erwähnt, dass der Schritt336 auch von dem Testschritt332 aus erreicht wird, wenn bei dem Schritt332 bestimmt wird, dass die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 noch durch einen anderen Spiegel verwendet wird. Es sei auch darauf hingewiesen, dass der Schritt336 von dem Testschritt304 aus erreicht wird, wenn bei dem Schritt304 bestimmt wird, dass in Verbindung mit dem in Verarbeitung stehenden Schlitz die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 auf die logische Standardvorrichtung252 zeigt. Nachfolgend dem Schritt336 folgt ein Testschritt338 , bei dem bestimmt wird, ob mehrere Schlitze der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 , die verarbeitet werden sollen, vorhanden sind. Wenn dies nicht der Fall ist, wird der Verarbeitungsprozess vervollständigt. Im anderen Fall wird die Steuerung von dem Testschritt338 zurück zu dem Schritt304 übertragen. - Bei einer anderen Ausführungsform ist es möglich, Listen von modifizierten Schlitzen für das empfangene Datenpaket
56 entsprechend dem N-1-Zyklus an der entfernt gelegenen Speichervorrichtung26 zu konstruieren, wie beispielsweise die Listen258 ,262 , die in7 gezeigt sind. Wenn die Daten empfangen werden, konstruiert die entfernt gelegene Speichervorrichtung26 eine Verkettungsliste der modifizierten Schlitze. Die Listen, die konstruiert werden, können vom kreisförmigen, linearen (mit einer NULL-Beendigung) oder von irgendeiner anderen Konstruktion oder Design sein. Die Listen können auch dazu verwendet werden, um die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen254 ,256 wieder zu speichern. - Das Flussdiagramm
300 von9 zeigt zwei alternative Pfade342 ,344 , welche den Betrieb der Ausführungsformen veranschaulichen, bei denen eine Liste von modifizierten Schlitzen verwendet wird. Bei dem Schritt302 wird ein Zeiger (der für den Iterationsvorgang durch die Liste der modifizierten Schlitze verwendet wird) dazu gebracht, auf das erste Element der Liste zu zeigen. Nachfolgend dem Schritt302 folgt ein Schritt306 , der durch den alternativen Pfad342 erreicht wird. Bei den Ausführungsformen, welche Listen von modifizierten Schlitzen verwenden, ist der Testschritt304 nicht erforderlich, da keine Schlitze auf der Liste zu der logischen Standardvorrichtung252 zeigen sollte. - Nachfolgend dem Schritt
306 wird die Verarbeitung in der oben erläuterten Weise fortgesetzt, und zwar in Verbindung mit der früheren Ausführungsform, mit der Ausnahme, dass der Schritt336 darauf verweist, die Liste der modifizierten Schlitze durchzugehen, anstatt auf den nächsten Schlitz in der COVD zu zeigen. In ähnlicher Weise bestimmt der Test bei dem Schritt338 , ob der Zeiger sich an dem Ende der Liste befindet (oder zurück zum Anfang im Falle einer kreisförmig verketteten Liste zeigt). Auch wenn bei dem Schritt338 bestimmt wird, dass mehr Schlitze zum Verarbeiten vorhanden sind, wird die Steuerung von dem Schritt338 zu dem Schritt306 übertragen, wie dies durch den alternativen Pfad344 veranschaulicht ist. Wie oben erläutert ist, kann bei Ausführungsformen, die eine Liste von modifizierten Schlitzen verwenden, der Schritt304 eliminiert werden. - Gemäß
10 veranschaulicht ein Flussdiagramm350 die Schritte, die in Verbindung mit der örtlichen Speichervorrichtung24 ausgeführt werden, und zwar beim Erhöhen der Sequenzzahl. Die Verarbeitung beginnt bei einem ersten Schritt352 , bei dem die örtliche Speichervorrichtung24 wenigstens M Sekunden vor der Erhöhung der Sequenzzahl wartet. Bei einer hier erläuterten Ausführungsform ist M gleich30 , jedoch kann natürlich M irgendeine Zahl sein. Größere Werte für M erhöhen die Menge der Daten, die verloren gehen können, wenn die Kommunikation zwischen den Speichervorrichtungen24 ,26 unterbrochen wird. Jedoch erhöhen kleinere Werte für M die Gesamtmenge des Overheads, der durch Inkrementieren der Sequenzzahl in einer häufigeren Weise verursacht wird. - Nachfolgend dem Schritt
352 folgt ein Testschritt354 , bei dem bestimmt wird, ob alle die HAs der örtlichen Speichervorrichtung24 ein Bit gesetzt haben, welches anzeigt, dass die HAs alle I/Os für die frühere Sequenzzahl vervollständigt haben. Wenn sich die Sequenzzahl ändert, nimmt jeder der HAs die Änderung wahr und setzt ein Bit, was anzeigt, dass alle I/Os der früheren Sequenzzahl vervollständigt worden sind. Wenn beispielsweise die Sequenzzahl sich von N-1 nach N ändert, setzt ein HA das Bit, wenn das HA alle I/Os für die Sequenzzahl N-1 vervollständigt hat. Es sei darauf hingewiesen, dass in einigen Fällen ein einzelnes I/Os für einen HA eine sehr lange Zeit beanspruchen kann und noch in Entwicklung stehen kann, und zwar selbst nachdem die Sequenzzahl geändert worden ist. Es sei auch erwähnt, dass bei einigen Systemen ein abweichender Mechanismus verwendet werden kann, um zu bestimmen, ob alle HAs ihre N-1 I/Os vervollständigt haben. Der abweichende Mechanismus kann Prüfvorrichtungstabellen in dem Speicher37 enthalten. - Wenn bei dem Testschritt
354 bestimmt wird, dass die I/Os von der früheren Sequenzzahl vervollständigt worden ist, wird die Steuerung von dem Schritt354 zu einem Testschritt356 übertragen, bei dem bestimmt wird, ob die inaktive Liste der Listen74 ,76 leer ist. Es sei darauf hingewiesen, dass ein Sequenzzahlumschaltvorgang nicht ausgeführt wird, wenn nicht und bis alle die Daten entsprechend der inaktiven Liste der Listen74 ,76 vollständig von der logischen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung des RDF-Protokolls übertragen worden sind. Wenn einmal die inaktive Liste der Listen74 ,76 als leer bestimmt wurde, wird die Steuerung von dem Schritt356 zu einem Schritt358 übertragen, bei dem die Zusage für die frühere Sequenzzahl von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 gesendet wird. Wie an früherer Stelle erläutert wurde, bewirkt die entfernt gelegene Speichervorrichtung26 , die eine Zusagenachricht für eine bestimmte Sequenzzahl empfängt, dass die entfernt gelegene Speichervorrichtung26 mit dem Wiederspeichern der Daten entsprechend der Sequenzzahl beginnt. - Nachfolgend dem Schritt
358 folgt ein Schritt362 , bei dem das Kopieren von Daten für die inaktive Liste der Listen74 ,76 ausgesetzt wird. Wie bereits früher erläutert wurde, wird die inaktive Liste der Listen abgetastet, um entsprechende Daten von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 zu senden. Es ist von Vorteil, das Kopieren der Daten solange auszusetzen, bis die Sequenzzahlumschaltung vervollständigt ist. Bei einer hier beschriebenen Ausführungsform wird das Aussetzen durch das Senden einer Nachricht zu den RAs30a -30c vorgesehen. Es kann jedoch von Fachleuten erkannten werden, dass bei Ausführungsformen, welche andere Komponenten zum Vereinfachen des Sendevorgangs von Daten verwenden, und zwar unter Verwendung des hier beschriebenen Systems, das Aussetzen des Kopiervorganges dadurch vorgesehen werden kann, indem geeignete Nachrichten/Befehle zu anderen Komponenten gesendet werden. - Nachfolgend dem Schritt
362 folgt ein Schritt364 , bei dem Sequenzzahl inkrementiert wird. Nachfolgend dem Schritt364 folgt ein Schritt366 , bei dem die Bits für die HAs, die in dem Testschritt354 verwendet werden, alle gelöscht werden, so dass die Bits erneut in Verbindung mit dem Inkrementierungsvorgang der Sequenzzahl gesetzt werden können. Nachfolgend dem Schritt366 folgt ein Testschritt372 , bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung26 die Zusagenachricht, die bei dem Schritt358 gesendet wurde, bestätigt hat. Die Bestätigung der Zusagenachricht wurde bereits weiter oben in Verbindung mit8 erläutert. Wenn einmal bestimmt worden ist, dass die entfernt gelegen Speichervorrichtung26 die Zusagenachricht, die bei dem Schritt358 gesendet wurde, bestätigt hat, wird die Steuerung von dem Schritt372 zu einem Schritt374 übertragen, bei dem das Aussetzen des Kopiervorganges, was bei dem Schritte362 realisiert wurde, gelöscht wird, so dass der Kopiervorgang wieder aufgenommen werden kann. Nachfolgend dem Schritt374 wird die Verarbeitung beendet. Es sei darauf hingewiesen, dass es möglich ist, von dem Schritt374 zurück zu dem Schritt352 zu gehen, um einen neuen Zyklus zu beginnen, um kontinuierlich die Sequenzzahl zu inkrementieren. - Es ist auch möglich, die COVDs an der R1-Vorrichtung zu verwenden, um Schlitze zu sammeln, die aktiven Daten und inaktiven Datenpaketen zugeordnet sind. In diesem Fall kann genau wie bei der R2-Vorrichtung eine COVD der inaktiven Sequenzzahl zugeordnet werden und eine andere COVD kann der aktiven Sequenzzahl zugeordnet werden. Dies wird weiter unten noch beschrieben.
- Gemäß
11 veranschaulicht ein Diagramm400 Elemente, die zum Konstruieren und Aufrechterhalten der Datenpakete52 ,54 verwendet werden. Eine logische Standardvorrichtung404 enthält Daten, die durch den Host22 geschrieben wurden und dem Datenelement51 von2 und den Platten oder Plattenlaufwerken33a -33c von1 entsprechen. Die logische Standardvorrichtung402 enthält Daten, die durch den Host22 zu der örtlichen Speichervorrichtung24 geschrieben wurden. - Es werden zwei lediglich virtuelle Cachevorrichtungen
404 ,406 in Verbindung mit der logischen Standardvorrichtung402 verwendet. Die lediglich virtuellen Cachevorrichtungen404 ,406 bzw. die diesen entsprechende Vorrichtungstabellen können beispielsweise in dem Speicher37 der logischen Speichervorrichtung24 gespeichert werden. Jeder Spureintrag der Tabellen von jedem der lediglich virtuellen Cachevorrichtungen404 ,406 zeigt entweder auf eine Spur der logischen Standardvorrichtung402 oder zeigt auf einen Schlitz eines Cachespeichers408 , der in Verbindung mit der logischen Speichervorrichtung24 verwendet wird. Bei einigen Ausführungsformen kann der Cache408 in dem Speicher37 der örtlichen Speichervorrichtung24 vorgesehen sein. - Der Cache
408 enthält eine Vielzahl an Cacheschlitzen412 -414 , die in Verbindung mit Schreibeinträgen zu der logischen Standardvorrichtung402 verwendet werden können und zur gleichen Zeit in Verbindung mit den lediglich virtuellen Cachevorrichtungen404 ,406 verwendet werden können. Bei einer hier beschriebenen Ausführungsform enthält jeder Spurtabelleneintrag der lediglich virtuellen Cachevorrichtungen404 ,406 eine Null, um auf eine entsprechende Spur der logischen Standardvorrichtung402 zu zeigen. Ansonsten enthält irgendein Eintrag in der Spurtabelle für jede der lediglich virtuellen Cachevorrichtungen404 ,406 einen Zeiger zu einem der Schlitze412 -414 in dem Cache408 . - Jede der lediglich virtuellen Cachevorrichtungen
404 ,406 kann für eines der Datenpakete52 ,54 verwendet werden, so dass beispielsweise die lediglich virtuelle Cachevorrichtung404 dem Datenpaket52 entsprechen kann, und zwar für die Sequenzzahl N, während die lediglich virtuelle Cachevorrichtung406 dem Datenpaket54 für die Sequenzzahl N-1 entsprechen kann. Wenn somit Daten durch den Host22 zu der örtlichen Speichervorrichtung24 geschrieben werden, werden die Daten zu dem Cache408 geliefert und ein geeigneter Zeiger der lediglich virtuellen Cachevorrichtung404 wird eingestellt. Es sei erwähnt, dass die Daten nicht aus dem Cache408 entfernt werden, bis die Daten zu der logischen Standardvorrichtung402 ausgelesen wurden und es werden die Daten auch durch die lediglich virtuelle Cachevorrichtung404 freigegeben, wie bereits beschrieben worden ist. - Bei einer hier beschriebenen Ausführungsform wird eine der lediglich virtuellen Cachevorrichtungen
404 ,406 als "aktiv" angenommen, während die andere als "inaktiv" angenommen wird. Wenn somit beispielsweise die Sequenzzahl N geradzahlig ist, kann die lediglich virtuelle Cachevorrichtung404 aktiv sein, während die lediglich virtuelle Cachevorrichtung406 inaktiv ist. Die aktive eine der lediglich virtuellen Cachevorrichtungen404 ,406 handhabt die Schreibeinträge von dem Host22 , während die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 den Daten entspricht, die von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 übertragen werden. - Während die Daten, die durch den Host
22 geschrieben wurden, gesammelt werden, und zwar unter Verwendung der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 (für die Sequenzzahl N), werden die Daten entsprechend der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 (für frühere Sequenzzahl N-1) von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 gesendet. Zu diesem Zweck und in Verbindung mit den hier angesprochenen Ausführungsformen handhaben die DAs35a -35c der örtlichen Speichervorrichtung den Abtastvorgang der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 , um Kopieranfragen zu einer oder zu mehreren der RAs30a -30c zu senden, um Daten von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 zu senden. Somit können die Schritte362 ,374 , die oben in Verbindung mit dem Aussetzen und wieder Aufnehmen des Kopiervorganges erläutert wurden, das Liefern von Nachrichten/Befehlen zu den DAs35a -35c enthalten. - Wenn die Daten einmal zu der entfernt gelegenen Speichervorrichtung
26 gesendet worden sind, kann der entsprechende Eintrag in der aktiven einen Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 auf Null gesetzt werden. Zusätzlich können die Daten auch aus dem Cache408 entfernt werden (das heißt dem Schlitz, der zu dem Pool der Schlitze für eine spätere Verwendung zurückgeführt wird), wenn die Daten in dem Schlitz nicht anderweitig für einen anderen Zweck verwendet werden (z. B. zum Auslesen zu der logischen Standardvorrichtung402 hin). Ein Mechanismus kann dabei eingesetzt werden, um sicherzustellen, dass Daten nicht aus dem Cache408 entfernt werden, bis alle Spiegel (enthaltend die lediglich virtuellen Cachevorrichtungen404 ,406 ) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US-Patent Nr. 5,537,568, ausgegeben am 16. Juli 1996, und in der US-Patentanmeldung Nr. 09/850,551, eingereicht am 7. Juli 2001, beschrieben, die beide hier unter Bezugnahme mit einbezogen werden. - Gemäß
12 veranschaulicht ein Flussdiagramm440 die Schritte, die durch den HA28 in Verbindung mit einem Host22 ausgeführt werden, der eine Schreiboperation bei den Ausführungsformen durchführt, bei denen zwei COVDs durch die R1-Vorrichtung verwendet werden, um das hier beschriebene System zu realisieren. Die Verarbeitung beginnt bei einem ersten Schritt442 , bei dem ein Schlitz entsprechend dem Schreibeintrag verriegelt wird. Bei einer anderen hier beschriebenen Ausführungsform entspricht jeder der Schlitze412 ,414 des Caches404 einer Spur von Daten an der logischen Standardvorrichtung402 . Das Verriegeln des Schlitzes bei dem Schritt442 verhindert eine zusätzliche Verarbeitung an dem relevanten Schlitz, während der Verarbeitung, die durch den HA28 durchgeführt wird, und zwar entsprechend den Schlitzen des Flussdiagramms440 . - Nachfolgend dem Schritt
442 folgt ein Schritt444 , bei dem ein Wert für N, die Sequenzzahl, gesetzt wird. Ebenso wie bei der Ausführungsform, welche die Listen anstelle der COVDs auf der R1-Seite verwendet, wird der Wert für die Sequenzzahl, die bei dem Schritt444 , erhalten wird, während der gesamten Schreiboperation aufrechterhalten oder beibehalten, die durch den HA28 ausgeführt wird, während der Schlitz verriegelt ist. Wie bereits erläutert worden ist, wird die Sequenzzahl jedem Schreibeintrag zugeordnet, um das eine der Datenpakete52 ,54 zu setzen, zu dem der Schreibeintrag gehört. Schreibvorgänge oder Schreibeinträge, die durch den Host22 ausgeführt werden, werden der momentanen Sequenzzahl zugeordnet. Es ist von Vorteil, dass eine einzelne Schreiboperation die gleiche Sequenzzahl durchgehend beibehält. - Nachfolgend dem Schritt
444 folgt ein Testschritt446 , bei dem bestimmt wird, ob die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 bereits auf den Schlitz zeigt, der bei dem Schritt442 verriegelt wurde (der Schlitz, der bearbeitet wird). Dies kann dann auftreten, wenn ein Schreibeintrag zu dem gleichen Schritt vorgesehen wurde, wenn die Sequenzzahl um 1 kleiner war als die momentane Sequenzzahl. Die Daten entsprechend dem Schreibeintrag für die frühere Sequenzzahl brauchen noch nicht zu der entfernt gelegenen Speichervorrichtung26 gesendet worden zu sein. - Wenn bei dem Testschritt
446 bestimmt wird, dass die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 nicht auf den Schlitz zeigt, wird die Steuerung von dem Testschritt446 zu einem anderen Testschritt448 übertragen, bei dem bestimmt wird, ob die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 auf den Schlitz zeigt. Es ist für die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 möglich, auf den Schlitz zu zeigen, wenn ein früherer Schreibeintrag zu dem Schlitz vorhanden war, während die Sequenzzahl die gleiche war wie die momentane Sequenzzahl. Wenn bei dem Testschritt448 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 nicht auf den Schlitz zeigt, wird die Steuerung von dem Testschritt448 zu einem Schritt452 übertragen, bei dem ein neuer Schlitz für die Daten abgeleitet wird. Nachfolgend dem Schritt452 folgt ein Schritt454 , bei dem die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 dazu gebracht wird, auf den Schlitz zu zeigen. - Nachfolgend dem Schritt
454 oder nachfolgend dem Schritt448 , wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 auf den Schlitz zeigt, folgt ein Schritt456 , bei welchem Flags gesetzt werden. Bei dem Schritt456 wird das RDF_WP-Flag (das RDF-Schreibaussetzflag) gesetzt, um anzuzeigen, dass der Schlitz zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung von RDF gesendet werden muss. Zusätzlich wird bei dem Schritt456 das IN_CACHE-Flag gesetzt, um anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung402 ausgelesen werden muss. Es sei darauf hingewiesen, dass in einigen Fällen, wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 bereits auf den Schlitz zeigt (wie dies 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 sichert das Setzen der Flags bei dem Schritt456 , dass die Flags in richtiger Weise gesetzt werden, und zwar ungeachtet dem früher herrschenden Zustand. - Nachfolgend dem Schritt
456 folgt ein Schritt458 , bei dem ein indirektes Flag in der Spurtabelle, welches auf den Schlitz zeigt, gelöscht wird, wodurch angezeigt wird, dass die relevanten Daten in dem Schlitz vorgesehen sind, und nicht in einem anderen oder verschiedenen Schlitz, auf den indirekt gezeigt wird. Nachfolgend dem Schritt458 folgt ein Schritt462 , bei dem Daten, die durch den Host22 und HA28 geschrieben wurden, in den Schlitz geschrieben werden. Nachfolgend dem Schritt462 folgt ein Schritt464 , bei dem der Schlitz entriegelt wird. Nachfolgend dem Schritt464 wird die Verarbeitung beendet oder vervollständigt. - Wenn bei dem Testschritt
446 bestimmt wird, dass die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 auf den Schlitz zeigt, wird die Steuerung von dem Schritt446 zu einem Schritt472 übertragen, bei dem ein neuer Schlitz erhalten wird. Der neue Schlitz, der bei dem Schritt472 erhalten wird, kann für die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 verwendet werden, um den RDF-Transfer zu bewirken, währen der alte Schritt der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 zugeordnet wird, was weiter unten beschrieben wird. - Nachfolgend dem Schritt
472 folgt ein Schritt474 , bei dem die Daten von dem alten Schlitz zu dem neuen Schlitz kopiert werden, der bei dem Schritt472 erhalten wurde. Nachfolgend dem Schritt474 folgt ein Schritt476 , bei dem das indirekte Flag (oben erläutert) gesetzt wird, um anzuzeigen, dass der Spurtabelleneintrag für die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 auf den alten Schlitz zeigt, sich jedoch die Daten in dem neuen Schlitz befinden, auf die im alten Schlitz gezeigt wird. Somit beeinflusst das Setzen des indirekten Flags bei dem Schritt476 die Spurtabelle der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 , um den Spurtabelleneintrag zu veranlassen, anzuzeigen, dass die Daten sich im neuen Schlitz befinden. - Nachfolgend dem Schritt
476 folgt ein Schritt478 , bei dem Spiegelbits für die Aufzeichnungen in dem neuen Schlitz eingestellt werden. Irgendwelche örtlichen Spiegelbits, die kopiert wurden, wenn Daten von dem alten Schlitz zu dem neuen Schlitz bei dem Schritt474 kopiert wurden, werden gelöscht, da der Zweck des neuen Schlitzes einfach darin besteht, den RDF-Transfer für die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen zu bewirken. Der alte Schlitz wird zum Handhaben von irgendwelchen örtlichen Spiegeln verwendet. Nachfolgend dem Schritt478 folgt ein Schritt462 , bei dem die Daten zu dem Schlitz geschrieben werden. Nachfolgend dem Schritt462 folgt ein Schritt464 , bei welchem der Schlitz entriegelt wird. Nachfolgend dem Schritt464 wird die Verarbeitung vervollständigt. - Gemäß
13 veranschaulicht ein Flussdiagramm500 Schritte, die in Verbindung mit der örtlichen Speichervorrichtung24 durchgeführt werden, welche das Datenpaket54 zu der entfernt gelegenen Speichervorrichtung26 sendet. Das Senden involviert im Wesentlichen das Abtasten der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 auf Spuren, die dorthin geschrieben worden sind, und zwar während einer früheren Iteration, wenn die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 aktiv war. Bei dieser Ausführungsform tasten die DAs35a -35c der örtlichen Speichervorrichtung24 die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 ab, um die Daten für die Übertragung zu der entfernt gelegenen Speichervorrichtung26 durch einen oder durch 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 lediglich virtuellen Cachevorrichtungen404 ,406 gezeigt wird, um den Prozess der Iteration durch all die Spuren zu beginnen. Nachfolgend dem ersten Schritt502 folgt ein Testschritt504 , bei dem bestimmt wird, ob das RDF_WP-Flag gesetzt worden ist. Wie bereits an früherer Stelle erläutert worden ist, wird das RDF_WP-Flag dazu verwendet, um anzuzeigen, dass ein Schlitz (Spur) Daten enthält, die über das RDF-Verbindungsglied gesendet werden sollen. Das gesetzte RDF_WP-Flag zeigt an, dass wenigstens einige Daten für den Schlitz (Spur) unter Verwendung von RDF zu senden sind. Bei einer hier beschriebenen Ausführungsform wird nicht der gesamte Schlitz gesendet. Vielmehr werden lediglich Aufzeichnungen innerhalb des Schlitzes, die den geeigneten Spiegelbitsatz aufweisen (die anzeigen, dass die Aufzeichnungen geändert wurden), zu der entfernt gelegenen Speichervorrichtung26 gesendet. Bei anderen Ausführungsformen kann es jedoch möglich sein, den gesamten Schlitz zu senden, vorausgesetzt, dass die entfernt gelegene Speichervorrichtung26 lediglich Daten schreibt, die den Aufzeichnungen entsprechen, welche den geeigneten Spiegelbitsatz aufweisen, 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 der Cacheschlitz, der bearbeitet wird, ein gesetztes RDF_WP-Flag aufweist, wird die Steuerung von dem Schritt504 zu dem Testschritt505 übertragen, bei welchem bestimmt wird, ob der Schlitz Daten enthält oder ob der Schlitz ein indirekter Schlitz ist, auf den durch einen anderen Schlitz gezeigt wird, der relevante Daten enthält. In einigen Fällen kann ein Schlitz keine Daten für den Abschnitt der Platte haben, die dem Schlitz entsprechen. - Stattdessen kann der Schlitz ein indirekter Schlitz sein, der auf einen anderen Schlitz zeigt, welcher die Daten enthält. Wenn bei dem Schritt
505 bestimmt wird, dass der Schlitz ein indirekter Schlitz ist, wird die Steuerung von dem Schritt505 zu einem Schritt506 überführt, bei dem Daten (von dem Schlitz, auf den durch den indirekten Schlitz gezeigt wird) erhalten werden. Wenn somit der Schlitz ein direkter Schlitz ist, werden Daten, die durch RDF gesendet werden sollen, in dem Schlitz gespeichert, während dann, wenn der Schlitz ein indirekter Schlitz ist, die Daten, die zum Senden durch RDF bestimmt sind, in dem anderen Schlitz vorhanden sind, auf den durch den indirekten Schlitz gezeigt wird. - Nachfolgend dem Schritt
506 oder dem Schritt505 , wenn der Schlitz ein direkter Schlitz ist, folgt ein Schritt507 , bei dem Daten, die gesendet werden (direkt oder indirekt von dem Schlitz) durch eine der DAs35a -35c kopiert werden, die von der örtlichen Speichervorrichtung24 zu der entfernt gelegenen Speichervorrichtung26 unter Verwendung des RDF-Protokolls gesendet werden sollen. Nachfolgend dem 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, wird die Steuerung von dem Schritt508 zurück zu dem Schritt507 übertragen, um die Daten erneut zu senden. Bei anderen Ausführungsformen kann eine abweichende und stärker involvierte Verarbeitung verwendet werden, um Daten zu senden und um deren Empfang zu bestätigen. Solch eine Verarbeitung kann einen Fehlerbericht und alternative Verarbeitung umfassen, die nach einer bestimmten Anzahl von Versuchen Daten zu senden, die fehlgeschlagen sind, durchgeführt wird. - Wenn bei dem Testschritt
508 einmal bestimmt worden ist, dass die Daten erfolgreich gesendet worden sind, verläuft die Steuerung von dem Schritt508 zu einem Schritt512 , um das RDF_WP-Flag zu löschen (da die Daten erfolgreich über RDF gesendet worden sind). Nachfolgend dem Schritt512 folgt ein Schritt514 , bei dem geeignete Spiegelflags gelöscht werden, um anzuzeigen, dass zumindest der RDF-Spiegel (R2) nicht länger die Daten benötigt. Bei einer hier beschriebenen Ausführungsform besitzt jede Aufzeichnung, die Teil eines Schlitzes (Spur) ist, individuelle Spiegelflags, die anzeigen, welche Spiegel die spezielle Aufzeichnung verwenden. Die R2-Vorrichtung ist eine der Spiegel für jede der Aufzeichnungen und es sind die Flags entsprechend der R2-Vorrichtung, die bei dem Schritt514 gelöscht werden. - Nachfolgend dem Schritt
514 folgt ein Testschritt516 , bei dem bestimmt wird, ob irgendwelche Aufzeichnungen der Spur, die verarbeitet werden, irgendwelche anderen Spiegelflags gesetzt haben (für die anderen Spiegelvorrichtungen). Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt516 zu einem Schritt518 , bei dem der Schlitz freigegeben wird (das heißt nicht länger verwendet wird). Bei einigen Ausführungsformen werden nicht verwendete Schlitze in einem Pool an Schlitzen aufbewahrt, die für eine Verwendung verfügbar sind. Es sei darauf hingewiesen, dass dann, wenn zusätzliche Flags noch gesetzt sind, und zwar für einige der Aufzeichnungen des Schlitzes, dies bedeuten kann, dass die Aufzeichnungen zu der logischen Standardvorrichtung402 hin ausgelesen werden müssen oder durch irgendeinen anderen Spiegel verwendet werden (inklusive einer anderen R2-Vorrichtung). Nachfolgend dem Schritt518 oder nachfolgend dem Schritt516 , wenn mehr Spiegelflags vorhanden sind, folgt ein Schritt522 , bei dem der Zeiger, der dazu verwendet wird, um durch jeden der Spureinträge zu iterieren, und zwar der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 , dazu gebracht wird, auf die nächste Spur zu zeigen. Nachfolgend dem Schritt522 folgt ein Testschritt524 , bei dem bestimmt wird, ob mehr Spuren der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen404 ,406 , die zu verarbeiten sind, vorhanden sind. Wenn dies nicht der Fall ist, wird die Verarbeitung vervollständigt. Im anderen Fall wird die Steuerung zurück zu dem Testschritt504 übertragen, der an früherer Stelle erläutert wurde. Es sei darauf hingewiesen, dass der Schritt522 auch von dem Testschritt504 aus erreicht wird, wenn bestimmt wird, dass das RDF_WP-Flag nicht für die Spur gesetzt ist, die verarbeitet wird. - In einigen Fällen kann es von Vorteil sein, dazu befähigt zu sein, die Daten von einer R2-Vorrichtung unter Verwendung eines Hosts zu lesen, der an eine entfernt gelegene Speichervorrichtung gekoppelt ist, während das System arbeitet, und virtuell geordnete Schreibvorgänge von einer örtlichen Speichervorrichtung (R1) zu der entfernt gelegenen Speichervorrichtung durchführt. In diesem Zusammenhang ist es von Vorteil, wenn der Host an die entfernt gelegene Speichervorrichtung gekoppelt ist und dazu befähigt ist, die auf den allerneusten Stand gebrachten Daten zu lesen, die konsistent sind (das heißt Teil eines zugesagten Datenpaketes auf der R2-Seite).
-
14 veranschaulicht einen Pfad für die Daten von einem Host602 zu einer örtlichen Speichervorrichtung604 und einer entfernt gelegenen Speichervorrichtung606 über ein Verbindungsglied608 . Das System von14 ist ähnlich dem System aufgebaut, welches in2 gezeigt ist und oben erläutert wurde. Die Daten, die von dem Host602 zu der örtlichen Speichervorrichtung604 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement612 der örtlichen Speichervorrichtung604 veranschaulicht ist. Die Daten, die durch den Host602 zu der örtlichen Speichervorrichtung604 geschrieben werden, werden auch durch die örtliche Speichervorrichtung604 beibehalten oder aufrechterhalten, und zwar in Verbindung damit, dass sie durch die örtliche Speichervorrichtung604 zu der entfernt gelegenen Speichervorrichtung606 über das Verbindungsglied608 gesendet werden. - Jeder Datenschreibvorgang durch den Host
602 (beispielsweise von einer Aufzeichnung, einer Vielzahl von Aufzeichnungen, einer Spur usw.) wird einer Sequenzzahl zugeordnet. Die Sequenzzahl kann in einem geeigneten Datenfeld vorgesehen werden, welches dem Schreibvorgang oder Schreibeintrag zugeordnet ist. In14 sind die Schreibeinträge des Host602 so gezeigt, dass diesen die Sequenzzahl N zugeordnet ist. Alle die Schreibeinträge, die von dem Host602 ausgeführt werden, sind der Sequenzzahl N zugeordnet und sind in einem einzelnen Datenpaket614 gesammelt. Das Datenpaket614 repräsentiert eine Vielzahl von getrennten Schreibeinträgen oder Schreibvorgängen durch den Host602 , die nahezu zur gleichen Zeit auftreten. - Im Allgemeinen sammelt die örtliche Speichervorrichtung
604 Datenpakete von einer Sequenzzahl, während sie ein früher angesammeltes Datenpaket (mit der früheren Sequenzzahl) zu der entfernt gelegenen Speichervorrichtung606 sendet. Während somit die örtliche Speichervorrichtung606 Schreibeinträge von dem Host602 ansammelt, denen die Sequenzzahl N zugeordnet ist, werden Schreibeinträge, die für die frühere Sequenzzahl (N-1) aufgetreten sind, durch die örtliche Speichervorrichtung604 zu der entfernt gelegenen Speichervorrichtung606 über das Verbindungsglied608 gesendet. Das Datenpaket616 repräsentiert Schreibeinträge von dem Host602 , denen die Sequenzzahl N-1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung606 gesendet wurden. - Die entfernt gelegene Speichervorrichtung
606 empfängt Daten von dem Datenpaket616 entsprechend den Schreibeinträgen, die einer Sequenzzahl N-1 zugeordnet sind, und konstruiert ein neues Datenpaket618 der Host-Schreibeinträge mit der Sequenzzahl N-1. Die Daten können unter Verwendung des geeigneten RDF-Protokolls gesendet werden, welches Daten bestätigt, die über das Verbindungsglied608 gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung606 alle die Daten von dem Datenpaket616 empfangen hat, sendet die örtliche Speichervorrichtung604 eine Zusagenachricht zu der entfernt gelegenen Speichervorrichtung606 , um all die Daten zuzusagen, die der Sequenzzahl N-1 zugeordnet sind, entsprechend dem Datenpaket618 . Im Allgemeinen kann, wenn ein Datenpaket entsprechend einer bestimmten Sequenzzahl zugesagt wurde, das Datenpaket zu der logischen Speichervorrichtung geschrieben werden. Dies ist in14 mit einem Datenpaket (chunk)622 veranschaulicht, welches den Schreibeinträgen entspricht, denen die Sequenzzahl N-2 zugeordnet ist (das heißt zwei vor der momentanen Sequenzzahl, die in Verbindung mit den Schreibeinträgen verwendet wird, die von dem Host602 stammen und zur örtlichen Speichervorrichtung606 verlaufen). - In
14 ist das Paket622 so gezeigt, dass es zu einem Datenelement624 geschrieben wird, welches einen Plattenspeicher (logische Standardvorrichtung) für die entfernt gelegene Speichervorrichtung606 repräsentiert. Somit empfängt die entfernt gelegene Speichervorrichtung606 das Datenpaket618 und sammelt dasselbe entsprechend der Sequenzzahl N-1, während das Datenpaket622 entsprechend der früheren Sequenzzahl N-2 zu der Plattenspeichervorrichtung der entfernt gelegenen Speichervorrichtung606 geschrieben wird, was durch das Datenelement624 veranschaulicht ist. Bei einigen Ausführungsformen werden die Daten für das Paket622 für den Schreibvorgang markiert (die nicht notwendigerweise unmittelbar geschrieben werden), während die Daten für das Datenpaket618 nicht markiert werden. Die Daten, die bei dem Datenelement624 gespeichert werden, sind so dargestellt, dass sie die Sequenzzahl N-3 haben, was anzeigt, dass die Daten an dem Datenelement624 um eine (oder mehrere) Generationen hinter den zugesagten Daten liegen, die durch das Datenpaket622 repräsentiert werden. - Somit schreibt der Host
602 im Betrieb Daten zu der örtlichen Speichervorrichtung604 , die örtlich in dem Datenelement612 gespeichert werden und in dem Datenpaket614 gesammelt werden. Wenn einmal all die Daten für die spezielle Sequenzzahl gesammelt worden sind (wie bereits beschrieben wurde), inkrementiert die örtliche Speichervorrichtung604 die Sequenzzahl. Daten von dem Datenpaket616 entsprechend um eins weniger als die momentane Sequenzzahl werden von der örtlichen Speichervorrichtung604 zu der entfernt gelegenen Speichervorrichtung606 über das Verbindungsglied608 übertragen. Das Datenpaket622 entsprechend den Daten für eine Sequenzzahl, die durch die örtliche Speichervorrichtung604 zugesagt wurde, führt zum Senden einer Nachricht zu der entfernt gelegenen Speichervorrichtung606 . Daten von dem Paket622 werden zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung264 geschrieben, die Daten von einer früheren Generation enthält, entsprechend der Sequenzzahl N-3. - Es kann für einen R2-Host
626 wünschenswert sein, an die entfernt gelegene Speichervorrichtung606 gekoppelt zu sein, um Daten von der entfernt gelegenen Speichervorrichtung606 zu lesen, die zu Beginn durch den Host602 zu der örtlichen Speichervorrichtung604 geliefert wurden und von der örtlichen Speichervorrichtung604 über das Verbindungsglied608 zu der entfernt gelegenen Speichervorrichtung606 übertragen wurden. Es sei darauf hingewiesen, dass Daten entsprechend dem Datenpaket618 nicht notwendigerweise konsistent sind, da diese noch von der örtlichen Speichervorrichtung604 vorgesehen werden. Die Daten aus dem Datenpaket622 sind jedoch konsistent, da dem Paket622 zugestimmt wurde. Wenn demzufolge der R2-Host626 wünscht, Daten von der entfernt gelegenen Speichervorrichtung606 zu lesen, werden die Daten entweder aus dem Datenpaket622 geliefert oder wenn die Daten nicht in dem Paket vorhanden sind, dann werden sie aus dem Datenelement624 geliefert, was noch mehr in Einzelheiten weiter unten beschrieben wird. - Gemäß
15 veranschaulicht ein Flussdiagramm650 die Schritt, die in Verbindung mit dem R2-Host626 durchgeführt werden, der Daten von der entfernt gelegenen Speichervorrichtung606 liest. Die Verarbeitung beginnt bei einem ersten Schritt652 , bei dem bestimmt wird, ob der COVD-Schlitz entsprechend den Daten, die durch den R2-Host626 gelesen werden, auf die logische Standardvorrichtung zeigt (das heißt auf das Datenelement624 zeigt). Wenn dies der Fall ist, befinden sich die Daten, die von dem R2-Host626 gewünscht werden, an dem Datenelement624 und die Steuerung wird dann von dem Schritt652 auf einen Schritt654 übertragen, bei dem die gewünschten Daten aus der logischen Standardvorrichtung entsprechend dem Datenelement624 gelesen werden. Es sei erwähnt, dass das Lesen aus der logischen Standardvorrichtung bei dem Schritt654 das Lesen der Daten aus dem Cache enthält, oder, wenn die Daten zu Beginn nicht in dem Cache vorhanden waren, das Lesen der Daten von der Platte umfasst und optional die Daten von der Platte zu dem Cache bewegt werden. Nachfolgend dem Schritt654 wird die Verarbeitung beendet. - Wenn bei dem Testschritt
652 bestimmt wird, dass der COVD-Schlitz entsprechend den Daten, die durch den R2-Host626 gelesen werden, nicht auf die logische Standardvorrichtung zeigt, wird die Steuerung von dem Testschritt652 zu einem Schritt656 überführt, bei dem der Schlitz der COVD verriegelt wird. Das Verriegeln des Schlitzes bei dem Schritt656 verhindert ein Zugreifen auf den Schlitz durch andere Operationen, wie beispielsweise durch eine Operation, welche Daten aus dem Datenpaket622 zu dem Datenelement624 wieder speichert oder umspeichert. - Nachfolgend dem Schritt
656 folgt ein Testschritt658 , bei dem bestimmt wird, ob der COVD-Schlitz auf die logische Standardvorrichtung zeigt. Der Testschritt bei dem Schritt658 ist identisch mit dem Testschritt bei dem Schritt652 . Der Test bei dem Schritt658 ist vorteilhaft, da es möglich wird, und zwar für einen anderen Prozess (wie beispielsweise den Prozess, bei dem Daten von dem Datenpaket622 zu dem Datenelement624 umgespeichert werden), den COVD zugegriffen zu haben und die Daten zu der logischen Standardvorrichtung umgespeichert zu haben, und zwar nach dem Testschritt652 , jedoch bevor der COVD-Schlitz bei dem Schritt656 verriegelt wurde. Ein erneutes Testen bei dem Schritt658 schützt gegen solch einen seltenen Fall oder Zustand. - Wenn bei dem Testschritt
658 bestimmt wird, dass der COVD-Schlitz bei dem Schritt656 verriegelt war und nun auf die logische Standardvorrichtung zeigt, dann wird die Steuerung von dem Schritt658 zu einem Schritt662 übertragen, bei welchem der COVD-Schlitz entriegelt wird. Auf den Schlitz662 folgt ein Schritt654 , bei dem Daten, die von dem R2-Host626 gewünscht werden, von dem Datenelement624 gelesen werden. Nachfolgend dem Schritt654 wird die Verarbeitung vervollständigt. - Wenn bei dem Testschritt
658 bestimmt wird, dass der COVD-Schlitz, der die Daten enthält, die von dem R2-Host626 gewünscht werden, nicht auf die logische Standardvorrichtung zeigt, verläuft die Steuerung von dem Schritt658 zu einem Schritt664 , bei dem die Daten in den COVD zu der logischen Standardvorrichtung umgespeichert werden. Das Umspeichern der Daten bei dem Schritt664 wird unter Verwendung der Schritte ähnlich den Schritten608 ,312 ,314 ,316 ,318 ,322 ,324 ,326 ,328 ,332 ,334 durchgeführt, die oben in Verbindung mit dem Flussdiagramm von9 erläutert wurden. Nachfolgend auf den Schritt664 fließt die Steuerung zu dem Schritt654 , der oben erläutert wurde, wobei die Daten von der logischen Standardvorrichtung gelesen werden. Nachfolgend auf den Schritt654 wird die Verarbeitung vervollständigt. - Für einige Ausführungsformen ist es von Vorteil, jede Leseoperation einzuschränken, die durch den R2-Host
626 ausgeführt wird, und zwar an eine Spur zu einem Zeitpunkt. Dies reduziert die Wahrscheinlichkeit von inkonsistenten Daten, die durch einen Zyklusschaltvorgang an der R2-Vorrichtung606 verursacht werden und auftreten, nachdem der R2-Host626 einige der Spuren gelesen hat, jedoch bevor der R2-Host626 all die Spuren gelesen hat. Bei anderen Ausführungsformen ist es für den R2-Host626 möglich, vielfache Spuren zu lesen, wenn geeignete Schritte unternommen werden. - Gemäß
16A veranschaulicht ein Flussdiagramm700 die Schritte, die in Verbindung mit dem R2-Host ausgeführt werden, der die Fähigkeit hat, mehr als eine Spur zu einem Zeitpunkt zu lesen. Die Verarbeitung beginnt bei einem ersten Schritt702 , bei dem bestimmt wird, ob eine Leseoperation mehr als eine Spur umschließt. Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt702 zu einem Schritt704 , bei welchem die Leseoperation in der bereits beschriebenen Weise ausgeführt wird. Nachfolgend auf den Schritt704 wird die Verarbeitung vervollständigt. - Wenn bei dem Schritt
702 bestimmt wird, dass mehr als eine Spur vorhanden ist, die gelesen wird, verläuft die Steuerung von dem Schritt702 zu einem Schritt706 , um die laufende oder momentane Sequenzzahl für die R2-Vorrichtung606 zu erhalten (das heißt die Sequenzzahl für das Datenpaket622 ). Nachfolgend auf den Schritt706 folgt ein Schritt708 , bei dem das Lesen durchgeführt wird. Es sei darauf hingewiesen, dass das Lesen bei dem Schritt708 aus einem Lesen von nur mehr als einer Spur besteht. Nachfolgend dem Schritt708 folgt ein Schritt712 , bei dem die momentane Sequenzzahl für die R2-Vorrichtung606 erneut erhalten wird. Nachfolgend dem Schritt712 folgt ein Schritt714 , bei dem bestimmt wird, ob die Sequenzzahl, die bei dem Schritt712 erhalten wurde, die gleiche ist wie die Sequenzzahl, die bei dem Schritt706 erhalten wurde. Wenn dies der Fall ist, dann hat sich die Sequenzzahl während des Vielfachspurlesevorganges nicht geändert und die Steuerung verläuft dann von dem Schritt714 zu einem Schritt716 , bei dem Daten, die bereits gelesen worden sind, zurückgeleitet werden. Nachfolgend auf den Schritt716 wird die Verarbeitung vervollständigt. Wenn im anderen Fall die Sequenzzahlen bei dem Schritt714 verschieden sind, verläuft die Steuerung von dem Schritt714 zurück zu dem Schritt706 , um die oben erläuterte Sequenz zu wiederholen. Es sei erwähnt, dass, wenn die Zeit zwischen Sequenzzahländerungen ausreichend lang ist (z. B. 30 Sekunden), dann erwartet werden kann, dass die Sequenzzahlen verschieden sind, und zwar zweimal in einer Reihe bei dem Schritt714 . - Gemäß
16B veranschaulicht ein Flussdiagramm720 die Schritte, die in Verbindung mit dem R2-Host durchgeführt werden, der die Fähigkeit hat, mehr als eine Spur zu einem Zeitpunkt zu lesen, entsprechend einer alternativen Ausführungsform gegenüber derjenigen, die in Verbindung mit dem Flussdiagramm700 von16A veranschaulicht ist. Die Verarbeitung beginnt bei einem ersten Schritt722 , bei dem bestimmt wird, ob eine Leseoperation mehr als eine Spur umfasst. Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt722 zu einem Schritt724 , bei dem die Leseoperation in der bereits beschriebenen Weise ausgeführt wird. Nachfolgend auf den Schritt724 wird die Verarbeitung vervollständigt. - Wenn bei dem Schritt
722 bestimmt wird, dass mehr als eine Spur vorhanden ist, die gelesen wird, verläuft die Steuerung von dem Schritt722 zu einem Schritt726 , um die momentane Sequenzzahl für die R2-Vorrichtung606 zu erhalten (das heißt die Sequenzzahl für das Datenpaket622 ). Nachfolgend dem Schritt726 folgt ein Schritt728 , bei dem das Lesen durchgeführt wird. Es sei darauf hingewiesen, dass das Lesen bei dem Schritt728 aus einem Lesen von mehr als einer Spur besteht. Nachfolgend dem Schritt728 folgt ein Schritt732 , bei dem die momentane Sequenzzahl für die R2-Vorrichtung606 erneut erhalten wird. Nachfolgend dem Schritt732 folgt ein Schritt734 , bei dem bestimmt wird, ob die bei dem Schritt732 erhaltene Sequenzzahl die gleiche ist wie die Sequenzzahl, die bei dem Schritt726 erhalten wurde. Wenn dies der Fall ist, hat sich die Sequenzzahl während des Vielfachspurlesevorgangs nicht geändert und die Steuerung verläuft von dem Schritt734 zu einem Schritt736 , bei dem die Daten, die gelesen wurden, zurückgeleitet werden. Nachfolgend dem Schritt736 wird die Verarbeitung vervollständigt. Wenn im anderen Fall die Sequenzzahlen bei dem Schritt734 abweichen bzw. verschieden sind, verläuft die Steuerung von dem Schritt734 zu einem Schritt738 , bei dem eine Fehlernachricht zurückgeleitet wird. - Nachfolgend dem Schritt
738 wird die Verarbeitung vervollständigt. Es sei darauf hingewiesen, dass ein Host, der die Fehlernachricht empfängt, die bei dem Schritt738 geliefert wird, einfach die Leseoperation erneut initialisieren kann. Daher kann der Host weiter versuchen, die Leseoperation durchzuführen, bis ein erfolgreiches Ergebnis erzielt ist. - In einigen Fällen kann es von Vorteil sein, dazu befähigt zu sein, Daten von einer R2-Vorrichtung unter Verwendung eines Hosts zu lesen, der an eine logische Speichervorrichtung gekoppelt ist, während das System arbeitet und virtuell geordnete Schreibeinträge vornimmt, und zwar von der örtlichen Speichervorrichtung (R1) zu einer entfernt gelegenen Speichervorrichtung. In Verbindung damit ist es nützlich, dass der Host an die örtliche Speichervorrichtung gekoppelt ist, um dazu befähigt zu sein, die auf den neuesten Stand gebrachten Daten zu lesen, die konsistent sind (das heißt Teil eines zugesagten Datenpaketes auf der R2-Seite).
-
17 veranschaulicht einen Pfad von Daten von einem Host802 zu einer örtlichen Speichervorrichtung804 und einer entfernt gelegenen Speichervorrichtung806 über ein Verbindungsglied808 . Das System von17 ist ähnlich dem System aufgebaut, welches in2 veranschaulicht ist und oben erläutert wurde. Daten, die von dem Host802 zu der örtlichen Speichervorrichtung804 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement812 der örtlichen Speichervorrichtung804 veranschaulicht ist. Die Daten, die durch den Host802 zu der örtlichen Speichervorrichtung804 geschrieben werden, werden auch durch die örtliche Speichervorrichtung804 gehalten, und zwar in Verbindung mit dem Senden durch die örtliche Speichervorrichtung804 zu der entfernt gelegenen Speichervorrichtung806 vermittels des Verbindungsgliedes808 . - Jedem Datenschreibeintrag oder -schreibvorgang durch den Host
802 (von beispielsweise einer Aufzeichnung, einer Vielzahl von Aufzeichnungen, einer Spur usw.) wird eine Sequenzzahl zugeordnet. Die Sequenzzahl kann in einem geeigneten Datenfeld vorgesehen sein, welches dem Schreibvorgang zugeordnet ist. In17 sind die Schreibeinträge oder Schreibvorgänge durch den Host802 so gezeigt, dass diesen die Sequenzzahl N zugeordnet ist. Alle die Schreibeinträge, die durch den Host802 durchgeführt werden, sind der Sequenzzahl N zugeordnet und werden in einem einzigen Datenpaket814 gesammelt. Das Datenpaket814 repräsentiert eine Vielzahl von getrennten Schreibeinträgen durch den Host802 , die angenähert zur gleichen Zeit aufgetreten sind. - Im Allgemeinen sammelt die örtliche Speichervorrichtung
804 die Pakete von einer Sequenzzahl, während sie ein früher angesammeltes Datenpaket (mit der früheren Sequenzzahl) zu der entfernt gelegenen Speichervorrichtung806 sendet. Während somit die örtliche Speichervorrichtung804 Schreibeinträge sammelt, und zwar von dem Host802 , die der Sequenzzahl N zugeordnet sind, werden die Schreibeinträge, die vor der früheren Sequenzzahl (N-1) aufgetreten sind, durch die örtliche Speichervorrichtung804 über das Verbindungsglied808 zu der entfernt gelegenen Speichervorrichtung806 gesendet. Das Datenpaket816 repräsentiert Schreibeinträge von dem Host802 , denen die Sequenzzahl N-1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung806 gesendet worden sind. - Die entfernt gelegene Speichervorrichtung
806 empfängt Daten von dem Datenpaket816 entsprechend den Schreibeinträgen, denen eine Sequenzzahl N-1 zugeordnet ist, und konstruiert ein neues Datenpaket818 von Host-Schreibeinträgen mit der Sequenzzahl N-1. Die Daten können unter Verwendung des geeigneten RDF-Protokolls über das Verbindungsglied808 gesendet werden, welches Protokoll die Daten bestätigen kann, die gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung806 all die Daten von dem Datenpaket816 empfangen hat, sendet die örtliche Speichervorrichtung804 eine Zusagenachricht zu der entfernt gelegenen Speichervorrichtung806 , um all den Daten zuzusagen, welchen die Sequenzzahl N-1 zugeordnet ist, entsprechend dem Datenpaket818 . Im Allgemeinen wird, wenn ein Datenpaket entsprechend einer bestimmten Sequenzzahl einmal zugestimmt worden ist, das Datenpaket zu der örtlichen Speichervorrichtung geschrieben. Dies ist in17 mit einem Datenpaket822 veranschaulicht, entsprechend Schreibeinträgen, welchen die Sequenzzahl N-2 zugeordnet ist (das heißt zwei vor der momentanen Sequenzzahl, die in Verbindung mit den Schreibeinträgen verwendet wird, die von dem Host802 zu der örtlichen Speichervorrichtung806 verlaufen). - In
17 ist das Datenpaket822 so gezeigt, dass es zu einem Datenelement824 geschrieben wird, welches einen Plattenspeicher repräsentiert (logische Standardvorrichtung), und zwar für die entfernt gelegene Speichervorrichtung806 . Somit empfängt die entfernt gelegene Speichervorrichtung806 das Datenpaket818 und sammelt dasselbe entsprechend der Sequenzzahl N-1, während das Datenpaket822 (entsprechend der früheren Sequenzzahl N-2) zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung806 geschrieben wird, was durch das Datenelement824 veranschaulicht ist. Bei einigen Ausführungsformen werden die Daten für das Datenpaket822 für das Schreiben markiert (werden jedoch nicht notwendigerweise unmittelbar geschrieben), während Daten für das Datenpaket818 nicht markiert werden. Die an dem Datenelement824 gespeicherten Daten sind so gezeigt, dass sie die Sequenzzahl N-3 haben, was anzeigt, dass die Daten an dem Datenelement824 eine (oder mehrere) Generationen hinter den zugesagten Daten liegen, die durch das Datenpaket822 repräsentiert werden. - Somit schreibt der Host
802 im Betrieb Daten zu der örtlichen Speichervorrichtung804 , die örtlich in dem Datenelement812 gespeichert werden und in dem Datenpaket814 gesammelt sind. Wenn einmal all die Daten für eine bestimmte Sequenzzahl gesammelt worden sind (bereits beschrieben), inkrementiert die örtliche Speichervorrichtung804 die Sequenzzahl. Daten von dem Datenpaket816 , entsprechend eins weniger als die momentane Sequenzzahl, werden von der örtlichen Speichervorrichtung804 zu der entfernt gelegenen Speichervorrichtung806 über das Verbindungsglied808 übertragen. Das Datenpaket822 entsprechend den Daten für eine Sequenzzahl, die durch die örtliche Speichervorrichtung804 zugesagt wurde, führt zum Senden einer Nachricht zu der entfernt gelegenen Speichervorrichtung806 . Daten von dem Datenpaket822 werden zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung806 geschrieben, die Daten für eine frühere Generator entsprechend der Sequenzzahl N-3 enthält. - Es kann für einen anderen Host
826 wünschenswert sein, an die örtliche Speichervorrichtung804 gekoppelt zu sein, um Daten von der entfernt gelegenen Speichervorrichtung806 zu lesen, die zu Beginn durch den Host802 zu der örtlichen Speichervorrichtung804 geliefert wurden und von der örtlichen Speichervorrichtung804 über das Verbindungsglied808 zu der entfernt gelegenen Speichervorrichtung806 übertragen wurden. Es kann auch für den Host802 wünschenswert sein, die Daten zu lesen. Beispielsweise kann in einigen Fällen die R1-Vorrichtung ausfallen oder fehlerhaft sein und es ist für einen oder beide Hosts802 ,826 wünschenswert, den Betrieb mit der allerneuesten Version der Daten fortzusetzen, und zwar unter Beibehaltung der Konsistenz der R2-Seite. Es sei erwähnt, dass die gewünschten Daten einige Komponenten an der örtlichen Platteneinheit812 aufweisen können, und zwar in dem N-Datenpaket814 , in den N-1-Datenpaketen816 ,818 und in dem N-2-Datenpaket822 , und auf der Platteneinheit824 der entfernt gelegenen Speichervorrichtung806 . Die hier gegebene Beschreibung zum Lesen der Daten trifft auch sowohl für den Host802 zu, der Daten liest, als auch/oder für den Host826 , der Daten liest. - Gemäß
18 veranschaulicht ein Flussdiagramm850 die Schritt, die in Verbindung mit entweder einem oder mit beiden Hosts802 ,826 durchgeführt werden, der bzw. die Daten von der R2-Vorrichtung806 lesen. Die Verarbeitung beginnt bei einem ersten Schritt852 , bei dem bestimmt wird, ob die gewünschten Daten (die gelesenen Daten) in dem Cache der R1-Vorrichtung sind. Es sei darauf hingewiesen, dass dann, wenn all die gewünschten Daten in dem Cache der R1-Vorrichtung804 vorhanden sind, es dann nicht erforderlich ist, irgendwelche Daten von der R2-Vorrichtung806 zu erhalten. Wenn bei dem Schritt852 bestimmt wird, dass die Daten in dem Cache der R1-Vorrichtung sind, verläuft die Steuerung von dem Schritt852 zu einem Schritt854 , bei dem die Daten in dem Cache der R1-Vorrichtung804 im Ansprechen auf eine Leseanfrage zurückgeleitet werden. Nach dem Schritt854 wird die Verarbeitung vervollständigt. - Wenn bei dem Testschritt
852 bestimmt wird, dass alle die angefragten Daten nicht in dem Cache der R1-Vorrichtung804 vorhanden sind, verläuft die Steuerung von dem Schritt852 zu einem Testschritt856 , bei dem bestimmt wird, ob einige der Daten in einem Schlitz für eine Spur entsprechend einem oder beiden der Pakete entsprechend dem N Paket814 und dem N-1 Paket815 vorhanden sind. Wenn dies der Fall ist, verläuft die Steuerung von dem Schritt856 zu einem Schritt862 , bei dem ein Arbeitsschlitz erzeugt wird, um Daten zu empfangen, die von der R2-Vorrichtung (weiter unten beschrieben) gelesen werden. Nachfolgend dem Schritt862 folgt ein Schritt864 , bei dem die Schlitze entsprechend einem der Datenpakete oder beiden Datenpaketen gemäß den N und N-1 Paketen814 ,816 verriegelt werden. Das Verriegeln der Schlitze bei dem Schritt864 verhindert, dass die Daten geändert werden, und zwar während des Leseprozesses, wenn dieser durchgeführt wird. - Nachfolgend dem Schritt
864 folgt ein Testschritt874 , bei dem bestimmt wird, ob all die gewünschten Daten in einem oder in beiden der N-Datenpakete814 ,816 vorhanden sind. Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt874 zu einem Schritt876 , bei welchem die R1-Vorrichtung804 eine Leseanfrage zu der R2-Vorrichtung806 sendet. Die Verarbeitung der Leseanfrage bei der R2-Vorrichtung806 wird mehr in Einzelheiten weiter unten erläutert. Nachfolgend dem Schritt876 folgt ein Schritt878 , bei dem Daten von der R2-Vorrichtung806 durch die R1-Vorrichtung804 gelesen werden. Wenn ein Arbeitsschlitz bei dem Schritt862 erzeugt worden ist, werden die Daten von der R2-Vorrichtung806 in den Arbeitsschlitz gelesen. Ansonsten können die Daten direkt von der R1-Vorrichtung804 empfangen werden. - Nachfolgend dem Schritt
878 oder nachfolgend dem Schritt874 , wenn alle die gewünschten Daten in einem oder in beiden der N- und N-1-Datenpakete814 ,816 gefunden wurden, folgt ein Schritt882 , bei dem das N-Datenpaket814 , das N-1-Datenpaket816 an der R1-Vorrichtung804 und die Daten, die durch die R2-Vorrichtung806 zurückgeleitet wurden, gemischt werden. Es sei erwähnt, dass die N-1-Daten (wenn vorhanden) oben mit irgendwelchen Daten in dem Arbeitsschlitz (der älter ist) gemischt werden und das Ergebnis dieser Mischung oben von irgendwelchen N-Daten gemischt wird, welche die neuesten sind. Das Mischen wird zuerst mit den Daten im oberen Bereich des zweiten Satzes der Datenmittel vorgenommen, bei dem der ersten Satz der Daten vorherrschend über den zweiten Satz der Daten sind, so dass Daten von dem ersten Satz die entsprechenden Daten aus dem zweiten Satz überschreiben. - Das Mischen der Daten bei dem Schritt
882 erfolgt analog dem Mischungsschritt814 des Flussdiagramms300 von9 . Es sei erwähnt, dass es für die Daten von unterschiedlichen Teilen einer Spur, die unterschiedlichen Sequenzzahlen zugeordnet sind, möglich ist, an einer der Vorrichtungen gemäß der R1-Vorrichtung804 und/oder der R2-Vorrichtung806 vorhanden zu sein. Demzufolge handhabt der Schritt882 das Mischen von all den Daten in all den Cacheschlitzen, um einen einzelnen Spurdatensatz in dem Arbeitsschlitz vorzusehen. - Nachfolgend dem Schritt
882 folgt ein Schritt884 , bei dem die gemischten Daten zu dem Host zurückgeleitet werden, welcher den Lesebefehl ausgegeben hat. Nachfolgend dem Schritt884 folgt ein Schritt886 , bei dem irgendwelche Schlitze, die während des Leseprozesses verriegelt worden sind, entriegelt werden. Nachfolgend dem Schritt886 folgt ein Schritt888 , bei dem die Arbeitsschlitze, die während des Leseprozesses zugeordnet wurden, in ihrer Zuordnung aufgehoben werden. Nachfolgend dem Schritt888 wird die Verarbeitung vervollständigt. - Bei einigen Ausführungsformen ist es möglich, den Testschritt
874 zu übergehen und immer den Schritt876 nach dem Schritt864 auszuführen oder nachfolgend dem Testschritt856 auszuführen, wenn keine Daten in irgendeinem oder beiden der N- und N-1-Datenpakete814 ,816 vorhanden sind. Dies ist in dem Flussdiagramm850 durch den alternativen Pfad892 von dem Schritt864 zu dem Schritt876 veranschaulicht. - Gemäß
19A veranschaulicht ein Flussdiagramm eine Ausführungsform zur Handhabung der Leseanfrage bei der R2-Vorrichtung806 , die durch die R1-Vorrichtung804 vorgesehen wird. Die Verarbeitung beginnt bei einem ersten Schritt902 , bei welchem irgendwelche Daten in dem N-2-Datenpaket822 (dem bereits zugestimmt worden ist) auf die Platteneinheit824 umgeschrieben wird. Das heißt, wenn irgendwelche Daten in dem N-2-Datenpaket822 vorhanden sind, die gelesen werden sollen, werden die Daten zu der Platteneinheit824 bei dem Schritt902 umgespeichert. - Nachfolgend dem Schritt
902 folgt ein Schritt903 , bei dem bestimmt wird, ob irgendwelche Daten in dem N-1-Datenpaket818 vorhanden sind, die gelesen werden sollen. Wenn dies der Fall ist, verläuft die Steuerung von dem Schritt903 zu einem Schritt904 , bei welchem ein Arbeitsschlitz an der R2-Vorrichtung806 zugeordnet wird. Nachfolgend dem Schritt904 folgt ein Schritt906 , bei dem Daten von der Platteneinheit824 zu dem Arbeitsschlitz kopiert werden, der bei dem Schritt904 zugeordnet wurde. Nachfolgend dem Schritt906 folgt ein Schritt908 , bei dem die Daten in dem Arbeitsschlitz mit irgendwelchen entsprechenden Daten in dem N-1-Datenpaket818 an der R2-Vorrichtung806 gemischt werden. - Nachfolgend dem Schritt
908 folgt ein Schritt912 , bei dem das Mischergebnis der Daten bei dem Schritt908 zu der R1-Vorrichtung804 zurückgeleitet wird. Es sei jedoch darauf hingewiesen, dass der Schritt912 auch erreicht werden kann, wenn bei dem Schritt903 bestimmt wurde, dass keine Daten in dem N-1-Datenpaket818 vorhanden sind, die gelesen werden sollen, in welchem Fall die Daten von der Speicherplatte bei dem Schritt912 zurückgeleitet werden. Nachfolgend dem Schritt912 folgt ein Schritt914 , bei dem die Zuordnung des Schlitzes, der bei dem Schritt904 zugeordnet wurde (wenn der Schritt904 ausgeführt worden ist), aufgehoben wird. Nachfolgend dem Schritt914 ist die Verarbeitung vervollständigt. - Gemäß
19B veranschaulicht ein Flussdiagramm920 eine alternative Ausführungsform zur Handhabung der Leseanfrage bei der R2-Vorrichtung806 . Die Verarbeitung beginnt bei einem ersten Schritt921 , bei welchem bestimmt wird, ob irgendwelche Daten in einer oder in beiden der N-1- und N-2-Datenpakete818 ,822 vorhanden sind, die gelesen werden sollen. Wenn dies der Fall ist, verläuft die Steuerung von dem Schritt921 zu einem Schritt922 , bei dem ein Arbeitsschlitz zugeordnet wird. Nachfolgend dem Schritt922 folgt ein Schritt924 , bei dem Daten von der Platteneinheit824 zu dem Arbeitsschlitz kopiert werden, der bei dem Schritt922 zugeordnet wurde, auf den Schritt924 folgt ein Schritt926 , bei dem die Daten aus dem N-2-Datenpaket822 mit Daten in dem Arbeitsschlitz gemischt werden. Nachfolgend dem Schritt926 folgt ein Schritt928 , bei dem Daten aus dem N-1-Datenpaket818 an der R2-Vorrichtung806 mit Daten in dem Arbeitsschlitz gemischt werden. - Nachfolgend dem Schritt
928 folgt ein Schritt932 , bei dem das Ergebnis von all den Mischvorgängen in dem Arbeitsschlitz von der R2-Vorrichtung806 zu der R1-Vorrichtung804 zurückgeleitet wird. Es sei jedoch erwähnt, dass der Schritt932 auch dann erreicht werden kann, wenn bei dem Schritt921 bestimmt wurde, dass keine Daten, die gelesen werden sollen, in einem oder in beiden der N-1- und N-2-Datenpakete818 ,822 vorhanden sind, in welchem Fall die Daten von der Platte bei dem Schritt932 zurückgeleitet werden. Auf den Schritt932 folgt ein Schritt934 , bei welchem der Arbeitsschlitz, der bei dem Schritt922 zugeordnet wurde (wenn der Schritt922 ausgeführt wurde), in seiner Zuordnung aufgehoben wird. Nachfolgend dem Schritt934 ist dann die Verarbeitung vervollständigt. - Obwohl die Erfindung in Verbindung mit verschiedenen Ausführungsformen offenbart wurde, sind für Fachleute abgewandelte Ausführungsformen offensichtlich. Demzufolge ergibt sich der Rahmen der Erfindung anhand der nachfolgenden Ansprüche.
- Zusammenfassung
- Virtuell geordnete Schreibvorgänge
- Eine primäre Speichervorrichtung ordnet eine Vielzahl von Datenschreibeinträgen durch Zuordnen der Schreibeinträge, die nach einem ersten Zeitpunkt beginnen und vor einem zweiten Zeitpunkt beginnen, zu einem ersten Datenpaket, ordnet Datenschreibeinträge, die nach dem zweiten Zeitpunkt begonnen werden, einem zweiten Datenpaket zu, welches von dem ersten Datenpaket verschieden ist, und zwar nach der Vervollständigung von allen Schreibvorgängen, die dem ersten Datenpaket zugeordnet sind, initiiert den Transfer von Schreibeinträgen, die dem ersten Datenpaket zugeordnet sind, zu einer sekundären Speichervorrichtung hin. Das Ordnen der Schreibeinträge kann auch das Merkmal umfassen, dass nachfolgend dem Transfer der primären Speichervorrichtung von allen Schreibeinträgen, die dem ersten Datenpaket zugeordnet sind, zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung eine Nachricht zu der sekundären Speichervorrichtung sendet und im Ansprechen auf den Empfang der Nachricht von der primären Speichervorrichtung, die sekundäre Speichervorrichtung die Datenschreibeinträge speichert, die dem ersten Datenpaket zugeordnet sind. Die entfernt gelegene Speichervorrichtung speichert die geordneten Schreibeinträge durch Empfangen einer Nachricht für die Daten, die dem ersten Datenpaket zugeordnet sind, im Ansprechen auf Daten, die einem zweiten Datenpaket zugeordnet sind, welches von dem ersten Datenpaket verschieden ist, das noch nicht gespeichert worden ist, und wartet auf Daten, die dem zweiten Datenpaket zugeordnet sind, um diese zu speichern, und initiiert das Speichern der Daten, die dem ersten Datenpaket zugeordnet sind. Die entfernt gelegene Speichervorrichtung kann auch die Nachricht bestätigen.
Claims (36)
- Verfahren zum Ordnen von Datenschreibeinträgen, wonach: eine primäre Speichervorrichtung eine Vielzahl von Datenschreibeinträgen empfängt; die primäre Speichervorrichtung Datenschreibeinträge, die nach einem ersten Zeitpunkt begonnen wurden und vor einem zweiten Zeitpunkt begonnen wurden, einem ersten Datenpaket zuordnet; die primäre Speichervorrichtung Datenschreibeinträge, die nach dem zweiten Zeitpunkt beginnen, einem zweiten Datenpaket zuordnet, welches von dem ersten Datenpaket verschieden ist; und nach der Vervollständigung aller Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, die primäre Speichervorrichtung den Transfer der Schreibeinträge zu der sekundären Speichervorrichtung, die dem ersten Datenpaket zugeordnet sind, einleitet.
- Verfahren nach Anspruch 1, ferner mit den folgenden Schritten: nachfolgend der Übertragung aller Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, von der primären Speichervorrichtung zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung eine Nachricht an die sekundäre Speichervorrichtung sendet; und die sekundäre Speichervorrichtung im Ansprechen auf den Empfang der Nachricht von der primären Speichervorrichtung, die Datenschreibeinträge, die dem ersten Datenpaket zugeordnet sind, speichert.
- Verfahren nach Anspruch 2, bei dem die sekundäre Speichervorrichtung nach dem Speichern von all den Datenschreibeinträgen, die dem ersten Datenpaket zugeordnet sind, eine Bestätigung zu der primären Speichervorrichtung sendet.
- Verfahren nach Anspruch 3, ferner mit den folgenden Schritten: die primäre Speichervorrichtung nachfolgend dem Senden einer Nachricht zu der sekundären Speichervorrichtung den Transfer der Daten zu der sekundären Speichervorrichtung aussetzt.
- Verfahren nach Anspruch 4, ferner mit den folgenden Schritten: die primäre Speichervorrichtung nachfolgend dem Aussetzen des Transfers Daten Datenschreibeinträge eines dritten Datenpaketes, welches von dem ersten und dem zweiten Datenpaket verschieden ist, nachfolgenden Datenschreibeinträgen zuordnet.
- Verfahren nach Anspruch 5, ferner mit den folgenden Schritten: im Ansprechen auf das Senden einer Bestätigung durch die sekundäre Speichervorrichtung zu der primären Speichervorrichtung die primäre Speichervorrichtung den Transfer der Daten zu der sekundären Speichervorrichtung wieder aufnimmt.
- Verfahren nach Anspruch 1, bei dem die Datenschreibeinträge Cacheschlitzen der primären Speichervorrichtung zugeführt werden.
- Verfahren nach Anspruch 7, bei dem: im Ansprechen auf einen Datenschreibeintrag, der dem zweiten Datenpaket zugeordnet ist, und einem Cacheschlitz entspricht, der bereits dem ersten Datenpaket zugeordnet ist, ein Kopieren der Daten zu einem neuen Cacheschlitz durchgeführt wird.
- Verfahren nach Anspruch 7, ferner mit den folgenden Schritten: die primäre Speichervorrichtung eine erste Liste an Zeigern zu Cacheschlitzen verwendet, und zwar für Datenschreibeinträge, die dem ersten Datenpaket zugeordnet sind; und die primäre Speichervorrichtung eine zweite Liste an Zeigern zu Cacheschlitzen für Datenschreibeinträge verwendet, die dem zweiten Datenpaket zugeordnet sind.
- Verfahren nach Anspruch 9, ferner mit den folgenden Schritten: Vorsehen eines Cachestempelfeldes in einem Kopfabschnitt von jedem der Schlitze, wobei das Cachestempelfeld eine Sequenzzahl enthält, die dem Schlitz zugeordnet ist und wobei die Sequenzzahl einem bestimmten einen der Datenpakete entspricht.
- Verfahren nach Anspruch 10, bei dem das Cachestempelfeld auch ein Passwortfeld enthält, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird.
- Verfahren nach Anspruch 11, bei dem im Ansprechen auf einen nicht mehr länger verwendeten Schlitz das Passwortfeld gelöscht wird.
- Verfahren nach Anspruch 7, mit den folgenden Schritten: die primäre Speichervorrichtung einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze entsprechend den Datenschreibeinträgen verwendet, die dem ersten Datenpaket zugeordnet sind; und die primäre Speichervorrichtung einen zweiten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze entsprechend den Datenschreibeinträgen verwendet, die dem zweiten Datenpaket zugeordnet sind.
- Verfahren zum Speichern von geordneten Schreibeinträgen zu einer entfernt gelegenen Speichervorrichtung, mit den folgenden Schritten: Empfangen einer Nachricht hinsichtlich Daten, die einem ersten Datenpaket zugeordnet sind; im Ansprechen auf die Daten, die einem zweiten Datenpaket zugeordnet sind, welches von dem ersten Datenpaket verschieden ist, welches noch nicht gespeichert worden ist, warten auf Daten, die dem zweiten Datenpaket zugeordnet sind, welche gespeichert werden sollen; und Initiieren eines Speichervorganges der Daten, die dem ersten Datenpaket zugeordnet sind.
- Verfahren nach Anspruch 14, bei dem ferner die Nachricht bestätigt wird.
- Verfahren nach Anspruch 14, bei dem eine Liste von modifizierten Schlitzen in Verbindung mit dem Empfangen von Daten konstruiert wird, die dem ersten Datenpaket zugeordnet sind.
- Verfahren nach Anspruch 16, bei dem das Initiieren des Speichervorganges von Daten, die dem ersten Datenpaket zugeordnet sind, das Durchgehen (traversing) der Liste der modifizierten Schlitze enthält.
- Verfahren nach Anspruch 1, bei dem der Empfangsvorgang einer Vielzahl von Datenschreibeinträgen das Empfangen einer Vielzahl von Datenschreibeinträgen von einem Host umfasst.
- Verfahren nach Anspruch 1, mit den folgenden Schritten: nachfolgend dem Transfervorgang durch die primäre Speichervorrichtung von allen Schreibeinträgen, die dem ersten Datenpaket zugeordnet sind, zu der sekundären Speichervorrichtung, die primäre Speichervorrichtung eine Nachricht zu der sekundären Speichervorrichtung sendet.
- Computersoftware, welche Datenschreibeinträge ordnet, mit: einem ausführbaren Kode der Datenschreibeinträge, die nach einem ersten Zeitpunkt begonnen haben und vor einem Zeitpunkt begonnen haben, einem ersten Datenpaket zuordnet; einem ausführbaren Kode, der Datenschreibeinträge, die nach dem zweiten Zeitpunkt begonnen haben, einem zweiten Datenpaket zuordnet, welches von dem ersten Datenpaket verschieden ist; und einem ausführbaren Kode, der den Transfer der Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, zu einer Speichervorrichtung initiiert, und zwar nach der Vervollständigung aller Schreibvorgänge, die dem ersten Datenpaket zugeordnet sind.
- Computersoftware nach Anspruch 20, ferner mit: einem ausführbaren Kode, der eine Nachricht zu der Speichervorrichtung sendet, und zwar nachdem alle Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, übertragen wurden; und einem ausführbaren Kode, der das Übertragen der Daten zu der Speichervorrichtung nach dem Senden der Nachricht dort hin aussetzt.
- Computersoftware nach Anspruch 21, ferner mit: einem ausführbaren Kode, der Datenschreibeinträge mit einem dritten Datenpaket, welches von dem ersten Datenpaket und von dem zweiten Datenpaket verschieden ist, nachfolgenden Datenschreibeinträgen zuordnet, die auf das Aussetzen des Transfers der Daten folgen.
- Computersoftware nach Anspruch 22, ferner mit: einem ausführbaren Kode, der die Übertragung der Daten zu der Speichervorrichtung im Ansprechen auf eine Bestätigung der Speichervorrichtung zum Handhaben der Nachricht wieder aufnimmt.
- Computersoftware nach Anspruch 20, ferner mit: einem ausführbaren Kode, der Datenschreibeinträge zu Cacheschlitzen liefert.
- Computersoftware nach Anspruch 24, ferner mit: einem ausführbaren Kode, der Daten zu einem neuen Cacheschlitz im Ansprechen auf einen Datenschreibeintrag kopiert, welcher dem zweiten Datenpaket zugeordnet ist, entsprechend einem Cacheschlitz, der bereits dem ersten Datenpaket zugeordnet wurde.
- Computersoftware nach Anspruch 24, ferner mit: einem ausführbaren Kode, der eine erste Liste an Zeigern zu Cacheschlitzen verwendet, und zwar für Datenschreibeinträge, die dem ersten Datenpaket zugeordnet sind; und einem ausführbaren Kode, der eine zweite Liste an Zeigern zu Cacheschlitzen verwendet, und zwar für Datenschreibeinträge, die dem zweiten Datenpaket entsprechen.
- Computersoftware nach Anspruch 26, ferner mit: einem ausführbaren Code, der ein Cachestempelfeld in einem Kopfabschnitt von jedem der Schlitze vorsieht, wobei das Cachestempelfeld eine Sequenzzahl enthält, die dem Schlitz zugeordnet ist, wobei die Sequenzzahl einer bestimmten einen der Datenpakete entspricht.
- Computersoftware nach Anspruch 27, bei dem das Cachestempelfeld auch ein Passwortfeld enthält, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird.
- Computersoftware nach Anspruch 28, ferner mit: einem ausführbaren Kode, der das Passwortfeld im Ansprechen auf einen nicht mehr länger verwendeten Schlitz löscht.
- Computersoftware nach Anspruch 24, ferner mit: einem ausführbaren Kode, der einen ersten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, entsprechend Datenschreibeinträgen, die dem ersten Datenpaket zugeordnet sind; und einem ausführbaren Kode, der einen zweiten Cache lediglich als virtuelle Vorrichtung für die Cacheschlitze verwendet, entsprechend Datenschreibeinträgen, die dem zweiten Datenpaket zugeordnet sind.
- Computersoftware nach Anspruch 20, ferner mit: einem ausführbaren Kode, der eine Nachricht zu der Speichervorrichtung sendet, nachdem alle Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, übertragen worden sind.
- Computersoftware, die geordnete Schreibeinträge zu einer entfernt gelegenen Speichervorrichtung liefert, mit: einem ausführbaren Kode, der eine Nachricht über Daten empfängt, die dem ersten Datenpaket zugeordnet sind; einem ausführbaren Kode, der auf Daten wartet, die einem zweiten Datenpaket zugeordnet sind, welche von dem ersten Datenpaket verschieden sind, um gespeichert zu werden; und einem ausführbaren Kode, der das Speichern der Daten initiiert, die dem ersten Datenpaket zugeordnet sind, nachdem das zweite Datenpaket gespeichert worden ist.
- Computersoftware nach Anspruch 32, ferner mit: einem ausführbaren Kode, der die Nachricht bestätigt.
- Computersoftware nach Anspruch 32, ferner mit: einem ausführbaren Kode, der eine Liste von modifizierten Schlitzen konstruiert, und zwar in Verbindung mit dem Empfangen von Daten, die dem ersten Datenpaket zugeordnet sind.
- Computersoftware nach Anspruch 34, bei der der ausführbare Kode, der das Speichern der Daten initiiert, die dem ersten Datenpaket zugeordnet sind, einen ausführbaren Kode umfasst, der eine Liste der modifizierten Schlitze durchgeht oder durchsieht.
- Datenspeichervorrichtung, mit: wenigstens einem Plattenlaufwerk, welches Daten enthält; wenigstens einem Hostadapter, der an das wenigstens eine Plattenlaufwerk gekoppelt ist, welcher Daten empfängt, die auf dem wenigstens einen Plattenlaufwerk gespeichert werden sollen; und wenigstens einem fern gelegenen Adapter, der an wenigstens ein Plattenlaufwerk gekoppelt ist und auch an den wenigstens einen Hostadapter gekoppelt ist, welcher Daten zu der fern gelegenen Speichervorrichtung sendet, wobei im Ansprechen auf den Empfang von Daten durch den wenigstens einen Hostadapter, Datenschreibeinträge, die nach einem ersten Zeitpunkt begonnen haben und vor einem zweiten Zeitpunkt begonnen haben, einem ersten Datenpaket zugeordnet werden, Datenschreibeinträge, die nach dem zweiten Zeitpunkt begonnen werden, einem zweiten Datenpaket zugeordnet werden, welches von dem ersten Datenpaket verschieden ist, und zwar nach der Vervollständigung von allen Schreibvorgängen, die dem ersten Datenpaket zugeordnet sind, wobei ein Transfer der Schreibeinträge, die dem ersten Datenpaket zugeordnet sind, zu der fern gelegenen Speichervorrichtung initiiert wird.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/396,786 US6898685B2 (en) | 2003-03-25 | 2003-03-25 | Ordering data writes from a local storage device to a remote storage device |
US10/396,786 | 2003-03-25 | ||
US10/607,041 US7051176B2 (en) | 2003-03-25 | 2003-06-26 | Reading data provided to a remote storage device |
US10/606,699 US7380082B2 (en) | 2003-03-25 | 2003-06-26 | Reading virtual ordered writes at local storage device |
US10/606,699 | 2003-06-26 | ||
US10/607,041 | 2003-06-26 | ||
PCT/US2004/003498 WO2004095289A1 (en) | 2003-03-25 | 2004-02-06 | Virtual ordered writes |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112004000486T5 true DE112004000486T5 (de) | 2006-01-26 |
Family
ID=33314178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112004000486T Ceased DE112004000486T5 (de) | 2003-03-25 | 2004-02-06 | Virtuell geordnete Schreibvorgänge |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP2006523890A (de) |
DE (1) | DE112004000486T5 (de) |
GB (1) | GB2413670B (de) |
WO (1) | WO2004095289A1 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7114033B2 (en) * | 2003-03-25 | 2006-09-26 | Emc Corporation | Handling data writes copied from a remote data storage device |
GB0616257D0 (en) | 2006-08-16 | 2006-09-27 | Ibm | Storage management system for preserving consistency of remote copy data |
JP4774085B2 (ja) | 2008-07-31 | 2011-09-14 | 富士通株式会社 | ストレージシステム |
Family Cites Families (2)
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 |
US5857208A (en) * | 1996-05-31 | 1999-01-05 | Emc Corporation | Method and apparatus for performing point in time backup operation in a computer system |
-
2004
- 2004-02-06 DE DE112004000486T patent/DE112004000486T5/de not_active Ceased
- 2004-02-06 JP JP2006508685A patent/JP2006523890A/ja active Pending
- 2004-02-06 GB GB0517063A patent/GB2413670B/en not_active Expired - Lifetime
- 2004-02-06 WO PCT/US2004/003498 patent/WO2004095289A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
GB2413670A (en) | 2005-11-02 |
JP2006523890A (ja) | 2006-10-19 |
GB2413670B (en) | 2006-05-03 |
WO2004095289A1 (en) | 2004-11-04 |
GB0517063D0 (en) | 2005-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69831944T2 (de) | Vorrichtung und verfahren zur sicherung eines plattenspeichersystem | |
DE60317383T2 (de) | Datenwiederherstellungsvorrichtung unter Verwendung von Journaldaten und Identifikationsinformation | |
DE60318687T2 (de) | Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz | |
DE69938378T2 (de) | Kopieren von Daten in Speichersystemen | |
DE69636330T2 (de) | Verfahren für On-line- und Echzeit-Datenmigration | |
DE112010004947B4 (de) | Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten | |
DE60113586T2 (de) | Übertragen von miteinander verbundenen Datenobjekten in einer verteilten Datenspeicherumgebung | |
DE60213867T2 (de) | Vorrichtung zur verwaltung von datenreplikation | |
DE69918470T2 (de) | Verwalten einer Ressource, welche von einer Mehrzahl von Knoten verwendet wird | |
DE69724846T2 (de) | Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus | |
DE69730449T2 (de) | Erzeugung einer spiegeldatenkopie (bild) unter verwendung von referenzetiketten | |
DE4216871C2 (de) | Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen | |
DE69911930T2 (de) | Hochverfügbare dateiprozessoren | |
DE4497149B4 (de) | Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung | |
DE602005000819T2 (de) | Aufrechterhaltung der konsistenz einer fernkopie unter verwendung von virtualisierung | |
JP5133260B2 (ja) | 連続バックアップ方法 | |
DE60112462T2 (de) | Wiederherstellung von dateisystemdaten in dateiservern mit gespiegelten dateisystemvolumen | |
DE19982999B4 (de) | Computersystem und Verfahren zum Transferieren von Daten | |
DE60316776T2 (de) | Auf netzwerkdatenspeicherung bezogene operationen | |
DE112011100534B4 (de) | Mehrstufiger Sicherungsprozess | |
DE602004002216T2 (de) | Verfahren, system und programm für eine inkrementelle virtuelle kopie | |
DE602005004166T2 (de) | Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen | |
DE19924822A1 (de) | Verfahren und Vorrichtung für Katastrophen-Behebung von Dateisystemen | |
DE102012201154B4 (de) | Transaktionsspeicher | |
DE19600081C2 (de) | Sicherung der Datenintegrität bei Datenträgerkarten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 112004000486 Country of ref document: DE Date of ref document: 20060126 Kind code of ref document: P |
|
8131 | Rejection |