DE112004000486T5 - Virtuell geordnete Schreibvorgänge - Google Patents

Virtuell geordnete Schreibvorgänge Download PDF

Info

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
Application number
DE112004000486T
Other languages
English (en)
Inventor
David Cambridge Meiri
Mark J. Watertown Halstead
Haim Newton Kopylovitz
Benjamin W. Framingham Yoder
Adi Wellesley Ofer
Hana Framingham Moreshet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/396,786 external-priority patent/US6898685B2/en
Priority claimed from US10/607,041 external-priority patent/US7051176B2/en
Priority claimed from US10/606,699 external-priority patent/US7380082B2/en
Application filed by EMC Corp filed Critical EMC Corp
Publication of DE112004000486T5 publication Critical patent/DE112004000486T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2064Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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.

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 und 16B 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 und 19B 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 Diagramm 20 eine Beziehung zwischen einem Host 22, einer örtlichen Speichervorrichtung 24 und einer entfernt gelegenen Speichervorrichtung 26. Der Host 22 liest und schreibt Daten von bzw. zu der örtlichen Speichervorrichtung 24, und zwar über einen Hostadapter (HA) 28, der die Kopplung zwischen dem Host 22 und der örtlichen Speichervorrichtung 24 vereinfacht. Obwohl das Diagramm 20 lediglich einen Host 22 und einen HA 28 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-Glied 29 zu der entfernt gelegenen Speichervorrichtung 26 kopiert, um zu bewirken, dass Daten in der entfernt gelegenen Speichervorrichtung 26 identisch sind mit den Daten in der örtlichen Speichervorrichtung 24. Obwohl lediglich ein Glied 29 gezeigt ist, ist es auch möglich, zusätzliche Verbindungsglieder zwischen den Speichervorrichtungen 24, 26 vorzusehen und auch Verbindungsglieder zwischen einer oder beiden Speichervorrichtungen 24, 26 und anderen Speichervorrichtungen (nicht gezeigt) vorzusehen. Es sei darauf hingewiesen, dass eine zeitliche Verzögerung zwischen dem Transfer der Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 auftreten kann, so dass die entfernt gelegene Speichervorrichtung 26 zu bestimmten Zeitpunkten Daten enthalten kann, die nicht identisch mit den Daten an der örtlichen Speichervorrichtung 24 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 Speichervorrichtung 26 enthält eine zweite Vielzahl an RAs 32a-32c. Die RAs 30a-30c, 32a-32c sind an das RDF-Verbindungsglied 29 gekoppelt und auch in ähnlicher Weise an den Hostadapter 28, werden jedoch für den Transfer von Daten zwischen den Speichervorrichtungen 24, 26 verwendet. Die Software, die in Verbindung mit den RAs 30a-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 Speichervorrichtungen 24, 26 gespeichert sind. 1 zeigt die Speichervorrichtung 24, die eine Vielzahl an Platten oder Plattenlaufwerken 33a, 33b, 33c enthält, und zeigt die Speichervorrichtung 26, die eine Vielzahl an Platten oder Laufwerken 34a, 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 Speicherplatten 33a-33c der örtlichen Speichervorrichtung 24 unter Verwendung von RDF zu wenigstens einem Abschnitt der Speicherplatten 34a-34c der entfernt gelegenen Speichervorrichtung 26 kopiert werden. Es ist möglich, dass andere Daten der Speichervorrichtungen 24, 26 nicht zwischen den Speichervorrichtungen 24, 26 kopiert werden und somit nicht identisch sind.
  • 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 Laufwerke 33a-33c liefert und Daten von einer entsprechenden einen Platte der Speicherplatten 33a-33c empfängt. In ähnlicher Weise wird eine Vielzahl der DAs 36a, 36b, 36c der entfernt gelegenen Speichervorrichtung 26 dafür verwendet, um Daten zu entsprechenden Platten der Speicherplatten 34a-34c zu liefern und um Daten von entsprechenden Platten der Speicherplatten 34a-34c zu empfangen. Es existiert ein interner Datenpfad zwischen den DAs 35a-35c, dem HA 28 und den RAs 30a-30c der örtlichen Speichervorrichtung 24. In ähnlicher Weise existiert ein interner Datenpfad zwischen den DAs 36a-36c und den RAs 32a-32c der entfernt gelegenen Speichervorrichtung 26. 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 Globalspeicher 37, der dazu verwendet werden kann, um den Datentransfer zwischen den DAs 35a-35c, dem HA 28 und den RAs 30a-30c zu vereinfachen. Der Speicher 37 enthält Tasks, die durch einen oder durch mehrere der DAs 35a-35c, den HA 28 und die RAs 30a-30c auszuführen sind, und auch einen Cachespeicher, um Daten von einer oder von mehreren der Platten 33a-33c aufzunehmen. In ähnlicher Weise enthält die entfernt gelegene Speichervorrichtung 26 einen Globalspeicher 38, der Tasks enthalten kann, die durch einen oder durch mehrere der DAs 36a-36c und die RAs 32a-32c auszuführen sind, und enthält einen Cachespeicher zum Aufnehmen von Daten von einer oder mehreren der Speicherplatten 34a-34c. Die Verwendung der Speicher 37, 38 wird im Folgenden noch mehr in Einzelheiten beschrieben.
  • Der Speicherraum in der örtlichen Speichervorrichtung 24, die den Speicherplatten 33a-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 Speicherplatten 33a-33c entsprechen. So kann beispielsweise die Speicherplatte 33a eine Vielzahl an logischen Vorrichtungen enthalten oder alternativ eine einzelne logische Vorrichtung, die beide Speicherplatten 33a, 33b überspannt. In ähnlicher Weise kann der Speicherraum für die entfernt gelegene Speichervorrichtung 26, welche die Speicherplatten 34a-34c enthält, in eine Vielzahl von Volumina oder logische Vorrichtungen unterteilt werden, wobei jede der logischen Vorrichtungen einer oder mehreren Speicherplatten 34a-34c entsprechen kann oder auch nicht entsprechen kann.
  • Das Vorsehen einer RDF-Speicherabbildung zwischen Abschnitten der logischen Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 involviert den Aufbau einer logischen Vorrichtung bei der entfernt gelegenen Speichervorrichtung 26, die ein entfernt gelegener Spiegel für eine logische Vorrichtung an der örtlichen Speichervorrichtung 24 ist. Der Host 22 liest und schreibt Daten von bzw. zu der logischen Vorrichtung an der örtlichen Speichervorrichtung 24 und die RDF-Speicherabbildung bewirkt, dass modifizierte Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen werden, und zwar unter Verwendung der RAs 30a-30c, 32a-32c und des RDF-Verbindungsgliedes 29. In einem Dauerzustandsbetrieb enthält die logische Vorrichtung an der entfernt gelegenen Speichervorrichtung 26 Daten, die identisch mit den Daten der logischen Vorrichtung bei der örtlichen Speichervorrichtung 24 sind. Die logische Vorrichtung an der örtlichen Speichervorrichtung 24, die durch den Host 22 zugegriffen werden, werden als "R1-Volumen" bezeichnet (oder lediglich als "R1"), während die logische Vorrichtung bei der entfernt gelegenen Speichervorrichtung 26, 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 Host 22 zu der örtlichen Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 veranschaulicht. Die Daten, die von dem Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement 51 der örtlichen Speichervorrichtung 24 veranschaulicht ist. Die Daten, die durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden auch durch die örtliche Speichervorrichtung 24 gehalten, und zwar in Verbindung mit einem Senden durch die örtliche Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 vermittels des Verbindungsgliedes 29.
  • 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. In 2 sind die Schreibeinträge durch den Host 22 so dargestellt, dass sie der Sequenzzahl N zugeordnet sind. Alle Schreibeinträge, die durch den Host 22 ausgeführt werden, welche der Sequenzzahl N zugeordnet sind, werden in einem einzigen Datenpaket 52 gesammelt. Das Datenpaket 52 repräsentiert eine Vielzahl von getrennten Schreibeinträgen durch den Host 22, 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 Speichervorrichtung 26 sendet. Während somit die örtliche Speichervorrichtung 24 Schreibeinträge von dem Host 22 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 Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 über das Verbindungsglied 29 gesendet. Ein Datenpaket 54 repräsentiert Schreibeinträge von dem Host 22, denen die Sequenzzahl N-1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung 26 gesendet worden sind.
  • Die entfernt gelegene Speichervorrichtung 26 empfängt Daten von dem Paket 54 entsprechend den Schreibeinträgen, denen eine Sequenzzahl N-1 zugeordnet ist, und konstruiert ein neues Datenpaket 56 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 Verbindungsglied 29 gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung 26 alle die Daten von dem Paket 54 empfangen hat, sendet die örtliche Speichervorrichtung 24 eine Zusagenachricht (commit message) zu der entfernt gelegenen Speichervorrichtung 26, um all den Daten zuzustimmen, denen die Sequenzzahl N-1 zugeordnet ist, entsprechend dem Paket 56. Im Allgemeinen wird dann, wenn ein Datenpaket, welches einer bestimmten Sequenzzahl entspricht, einmal zugestimmt wurde, dieses Datenpaket zu der örtlichen Speichervorrichtung geschrieben. Dies ist in 2 mit einem Datenpaket 58 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 Host 22 stammen und zu der örtlichen Speichervorrichtung 26 verlaufen). In 2 ist das Paket 28 so dargestellt, dass es zu einem Datenelement 62 geschrieben wird, welches einen Plattenspeicher für die entfernt gelegene Speichervorrichtung 26 repräsentiert. Somit empfängt die entfernt gelegene Speichervorrichtung 26 das Datenpaket 56 bzw. sammelt dieses entsprechend der Sequenzzahl N-1, während das Datenpaket 58 entsprechend der früheren Sequenzzahl (N-2) zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung 26 geschrieben wird, der durch das Datenelement 62 veranschaulicht ist. Bei einigen Ausführungsformen sind die Daten für das Datenpaket 58 für einen Schreibvorgang markiert (werden jedoch nicht notwendigerweise unmittelbar geschrieben), während die Daten für das Datenpaket 26 nicht markiert sind.
  • Somit schreibt der Host 22 im Betrieb Daten zu der örtlichen Speichervorrichtung 24, die örtlich in dem Datenelement 51 gespeichert sind und in dem Datenpaket 52 gesammelt sind. Wenn einmal all die Daten für eine bestimmte Sequenzzahl gesammelt worden sind (was bereits beschrieben worden ist), inkrementiert die örtliche Speichervorrichtung 24 die Sequenzzahl. Daten von dem Datenpaket 54, die um eines weniger als der momentanen oder gegenwärtigen Sequenzzahl entsprechen, werden von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 über das Verbindungsglied 29 übertragen. Das Datenpaket 58 entspricht den Daten für die Sequenzzahl, die durch die örtliche Speichervorrichtung 24 zugesagt wurde, die eine Nachricht zu der entfernt gelegenen Speichervorrichtung 26 sendet. Daten aus dem Datenpaket 58 werden in den Plattenspeicher der entfernt gelegenen Speichervorrichtung 26 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 Datenpaket 58 entsprechend der Sequenzzahl N-2 begonnen vor dem Beginn von irgendwelchen Schreibvorgängen für die Pakete 54, 56 entsprechend der Sequenzzahl N-1. Zusätzlich wurde jeder Schreibeintrag für die Datenpakete 54, 56 entsprechend der Sequenzzahl N-1 begonnen, und zwar vor dem Beginn von irgendwelchen Schreibeinträgen für das Datenpaket 52 entsprechend der Sequenzzahl N. Somit kann für den Fall eines Kommunikationsfehlers zwischen der örtlichen Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 die entfernt gelegene Speichervorrichtung 26 einfach den Schreibvorgang in Verbindung mit dem letzten zugesagten Datenpaket beenden (dem Paket 58 bei dem Beispiel von 2) und kann sicherstellen, dass der Zustand der Daten an der entfernt gelegenen Speichervorrichtung 26 geordnet ist, und zwar in einem solchen Sinn, dass das Datenelement 62 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 Diagramm 70 Elemente, die zum Konstruieren und aufrechterhalten der Pakete 52, 54 verwendet werden. Eine logische Standardvorrichtung 72 enthält Daten, die durch den Host 22 geschrieben wurden und dem Datenelement 51 von 2 entsprechen und den Platten 33a-33c von 1. Die logische Standardvorrichtung 72 enthält Daten, die durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben wurden.
  • Es werden zwei verkettete Listen an Zeigern 74, 76 in Verbindung mit der logischen Standardvorrichtung 72 verwendet. Die verketteten Listen 74, 76 entsprechen den Daten, die beispielsweise in dem Speicher 37 der örtlichen Speichervorrichtung 24 gespeichert sein können. Die verkettete Liste 74 enthält eine Vielzahl an Zeigern 81-85, wobei jeder Zeiger zu einem Schlitz eines Cachespeichers 88 zeigt, der in Verbindung mit der örtlichen Speichervorrichtung 24 verwendet wird. In ähnlicher Weise enthält die verkettete Liste 76 eine Vielzahl an Zeigern 91-95, wobei jeder der Zeiger auf einen Schlitz in dem Cache 88 zeigt. Bei einigen Ausführungsformen kann der Cache 88 in dem Speicher 37 der örtlichen Speichervorrichtung 24 vorgesehen sein. Der Cache 88 enthält eine Vielzahl an Cacheschlitzen 102-104, die in Verbindung mit Schreibeinträgen zu der örtlichen Standardvorrichtung 72 verwendet werden und gleichzeitig in Verbindung mit der verketteten Liste 74, 76 verwendet werden.
  • Jede der verketteten Listen 74, 76 kann für eines der Datenpakete 52, 54 verwendet werden, so dass beispielsweise die verkettete Liste 74 dem Datenpaket 52 für die Sequenzzahl N entsprechen kann, während die verkettete Liste 76 dem Datenpaket 54 für die Sequenzzahl N-1 entsprechen kann. Wenn Daten durch den Host 22 zu der örtlichen Speichervorrichtung 74 geschrieben werden, werden die Daten zu dem Cache 88 geliefert und in einigen Fällen (die noch beschrieben werden), wird ein geeigneter Zeiger der verketteten Liste 74 erzeugt. Es sei erwähnt, dass die Daten nicht aus dem Cache 88 entfernt werden, und zwar bis die Daten zu der logischen Standardvorrichtung 72 ausgelesen wurden, und nicht länger auf die Daten gezeigt wird, und zwar durch irgendeinen der Zeiger 81-85 der verketteten Liste 74, 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 Liste 74 aktiv sein, während die verkettete Liste 76 inaktiv ist. Die aktive eine Liste der verketteten Listen 74, 76 handhabt Schreibeinträge von dem Host 22, während die inaktive eine der verketteten Listen 74, 76 den Daten entspricht, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 ü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 Listen 74, 76 (beispielsweise die Sequenzzahl N), werden die Daten entsprechend der inaktiven Liste der verketteten Listen 74, 76 (für die frühere Sequenzzahl N-1) von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen. Die RAs 30a-30c verwenden die verketteten Listen 74, 76, um die Daten zu bestimmen, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen werden sollen.
  • Wenn einmal die Daten entsprechend einem bestimmten einen der Zeiger in einer der verketteten Listen 74, 76 zu der entfernt gelegenen Speichervorrichtung 26 übertragen worden sind, kann der entsprechende eine der Zeiger von der entsprechenden einen der verketteten Listen 74, 76 entfernt werden. Zusätzlich können die Daten auch für ein Entfernen aus dem Cache 33 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 Standardvorrichtung 72). Ein Mechanismus kann dabei verwendet werden, um sicherzustellen, dass die Daten nicht aus dem Cache 88 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 Schlitz 120 wie einer der Schlitze 102-104 des Caches 88 einen Kopfabschnitt (header) 122 und Daten 124. Der Kopfabschnitt 122 entspricht Overhead-Informationen, die von dem System dazu verwendet werden, um den Schlitz 120 zu managen. Die Daten 124 sind die entsprechenden Daten von der Platte oder dem Plattenlaufwerk, welche (zeitweilig) in dem Schlitz 120 gespeichert sind. Informationen in dem Kopfabschnitt 122 enthalten Zeiger zurück zu der Speicherplatte, Zeitstempel usw.
  • Der Kopfabschnitt 122 enthält auch einen Cachestempel 126, welcher in Verbindung mit dem hier beschriebenen System verwendet wird. Bei einer hier beschriebenen Ausführungsform umfasst der Cachestempel 126 acht Bytes. Zwei der Bytes sind ein "Passwort", welches anzeigt, ob der Schlitz 120 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 Schlitz 120 durch wenigstens einen Eintrag der verketteten Listen 74, 76 gezeigt wird. Das Passwort, welches nicht gleich ist dem bestimmten Wert, zeigt an, dass auf den Schlitz 120 nicht durch irgendeinen Eintrag der verketteten Listen 74, 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 Daten 124 des Schlitzes 120 angibt. Wie noch beschrieben wird, kann das Sequenzzahlfeld des Cachestempels 126 dazu verwendet werden, um die hier beschriebene Verarbeitung zu vereinfachen. Die verbleibenden vier Bytes des Cachestempels 126 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 Schlitz 120 durch wenigstens einen Eintrag in einer der Listen 74, 76 gezeigt wird.
  • Gemäß 5 veranschaulicht ein Flussdiagramm 140 die Schritte, die durch den HA 28 in Verbindung mit einem Host 22 durchgeführt werden, der eine Schreiboperation ausführt. Wenn natürlich der Host 22 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 Host 22 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 Schlitze 102-104 des Caches 88 einer Spur von Daten auf der logischen Standardvorrichtung 72. Das Verriegeln des Schlitzes bei dem Schritt 142 verhindert eine zusätzliche Verarbeitung an dem relevanten Schlitz, und zwar während der Verarbeitung, die durch den HA 28 durchgeführt wird, entsprechend den Schritten des Flussdiagramms 140.
  • Nachfolgend dem Schritt 142 folgt ein Schritt 144, 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 Schritt 144 erhalten und wird während der gesamten Schreiboperation beibehalten, die durch den HA 28 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 Datenpakete 52, 54 einzustellen, zu welchem der Schreibeintrag gehört. Schreibeinträge, die durch den Host 22 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 Testschritt 146, 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 Zeiger 74, 76 vorhanden ist. Wenn bei dem Testschritt 146 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 Listen 74, 76 auf den Schlitz zeigen), verläuft die Steuerung von dem Schritt 146 zu einem Schritt 148, 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 Schritt 152, bei dem ein Zeiger zu einem neuen Schlitz zu der aktiven einen Liste der Zeigerlisten 74, 76 hinzu addiert wird. Bei einer hier beschriebenen Ausführungsform bestehen die Listen 74, 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 Listen 74, 76 verwendet werden. Nachfolgend dem Schritt 152 folgt ein Schritt 154, bei dem Flags gesetzt werden. Bei dem Schritt 154 wird das RDF_WP-Flag (RDF-Schreibaussetzflag) gesetzt, um anzuzeigen, dass der Schlitz zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung von RDF übertragen werden muss. Zusätzlich bei dem Schritt 154 wird das IN_CACHE-Flag gesetzt, um anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung 72 hin ausgelesen werden muss. Nachfolgend dem Schritt 154 folgt ein Schritt 156, bei dem Daten, die durch den Host 22 und durch HA 28 geschrieben werden, zu dem Schlitz geschrieben werden. Nachfolgend dem Schritt 156 folgt ein Schritt 158, bei welchem der Schlitz entriegelt wird. Nachfolgend dem Schritt 158 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 Listen 74, 76 gezeigt wird), dann wird die Steuerung von dem Schritt 146 zu einem Testschritt 162 ü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 Schritt 162 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 Schritt 162 zu dem Schritt 156 ü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 Schritt 162 zu einem Schritt 164 übertragen, bei dem ein neuer Schlitz erhalten wird. Der neue Schlitz, der bei dem Schritt 164 erhalten wird, kann zum Speichern der zu schreibenden Daten verwendet werden.
  • Auf den Schritt 164 folgt ein Schritt 166, bei dem Daten von dem alten Schlitz zu dem neuen Schlitz kopiert werden, der bei dem Schritt 164 erhalten wurde. Es sei darauf hingewiesen, dass die kopierten Daten das RDF_WP-Flag enthalten, welches bei dem Schritt 154 gesetzt worden sein sollte, und zwar bei einem früheren Schreibeintrag, wenn der Schlitz zum ersten Mal erzeugt wurde. Nachfolgend dem Schritt 166 folgt ein Schritt 168, 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 Schritt 168 folgt ein Schritt 172, bei dem ein Zeiger zu dem neuen Schlitz zu der aktiven einen Liste der verketteten Liste 74, 76 hinzuaddiert wird. Auf den Schritt 172 folgt der oben erläuterte Schritt 156, bei dem Daten zu dem Schlitz geschrieben werden, welcher in dem vorliegenden Fall der neue Schlitz ist.
  • Gemäß 6 veranschaulicht ein Flussdiagramm 200 Schritt, die in Verbindung mit den RAs 30a-30c durchgeführt werden bzw. dem Abtasten der inaktiven Liste der Listen 72, 74, um RDF-Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 62 zu übertragen. Wie weiter oben erläutert wurde, zeigte die inaktive Liste der Listen 72, 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 Listen 72, 74.
  • Die Verarbeitung beginnt bei einem ersten Schritt 202, bei dem bestimmt wird, ob irgendwelche Einträge in der inaktiven Liste der Listen 72, 74 vorhanden sind. Wenn Daten übertragen werden, werden die entsprechenden Einträge aus der inaktiven Liste der Listen 72, 74 entfernt. Zusätzlich werden neue Schreibeinträge zu der aktiven einen Liste der Listen 72, 74 geliefert und nicht allgemein zu der inaktiven Liste der Listen 72, 74. Es ist somit möglich (und wie noch beschrieben wird, wünschenswert), dass die inaktive Liste der Listen 72, 74 keine Daten zu bestimmten Zeitpunkten enthält. Wenn bei dem Schritt 202 bestimmt wird, dass keine Daten zu übertragen sind, dann wird die inaktive Liste der Listen 72, 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 Listen 72, 74 zur aktiven Liste der Listen 72, 74 und umgekehrt wird.
  • Wenn bei dem Schritt 202 bestimmt wird, dass Daten zum Senden verfügbar sind, wird die Steuerung von dem Schritt 202 zu einem Schritt 204 übergeben, bei dem der Schlitz als korrekt verifiziert wird. Die Verarbeitung, die bei dem Schritt 204 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 Schritt 212, 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 Speichervorrichtung 26 gesendet. Bei anderen Ausführungsformen ist es jedoch auch möglich, den gesamten Schlitz zu senden, vorausgesetzt, dass die fern gelegene Speichervorrichtung 26 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 Schritt 212 folgt ein Testschritt 214, 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 Schritt 214 zurück zu dem Schritt 212 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 Schritt 214 zu einem Schritt 216, um das RDF_WP-Flag zu löschen (da die Daten über RDF erfolgreich gesendet worden sind). Nachfolgend dem Schritt 216 folgt ein Testschritt 218, 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 Listen 72, 74 enthält. Diese Möglichkeit ist weiter oben in Verbindung mit den Schritten 162, 164, 166, 168, 172 erläutert. Wenn bei dem Schritt 218 bestimmt wird, dass der Schlitz ein Duplikatschlitz ist, dann verläuft die Steuerung von dem Schritt 218 zu einem Schritt 222, 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 Schritt 222 oder dem Schritt 218, wenn der Schlitz kein Duplikatschlitz ist, folgt ein Schritt 224, bei dem das Passwortfeld des Schlitzkopfes gelöscht wird, so dass, wenn der Schlitz wieder verwendet wird, der Test bei dem Schritt 146 von 5 in richtiger Weise den Schlitz als einen neuen Schlitz klassifiziert.
  • Nachfolgend dem Schritt 224 folgt ein Schritt 226, bei dem der Eintrag in der inaktiven Liste der Listen 72, 74 entfernt wird. Nachfolgend dem Schritt 226 wird die Steuerung zurück zu dem Schritt 202 geleitet, der oben erläutert wurde, bei dem bestimmt wird, ob zusätzliche Einträge an der inaktiven Liste der Listen 72, 74 entsprechend Daten, die übertragen werden sollen, vorhanden sind.
  • Gemäß 7 veranschaulicht ein Diagramm 240 die Erzeugung und die Manipulation von Datenpaketen 56, 58, die bei der entfernt gelegenen Speichervorrichtung 26 verwendet werden. Die Daten, die durch die entfernt gelegene Speichervorrichtung 26 über das Verbindungsglied 29 empfangen werden, werden zu einem Cache 242 der entfernt gelegenen Speichervorrichtung 26 geliefert. Der Cache 242 kann beispielsweise in dem Speicher 38 der entfernt gelegenen Speichervorrichtung 26 vorgesehen sein. Der Cache 242 enthält eine Vielzahl an Cacheschlitzen 244-246, von denen jeder auf einer Spur der logischen Standardspeichervorrichtung 252 abgebildet ist. Der Cache 242 ist ähnlich dem Cache 88 von 3 und kann Daten enthalten, die zu der logischen Standardspeichervorrichtung 252 der entfernt gelegen Speichervorrichtung 26 hin ausgelesen werden. Die logische Standardspeichervorrichtung 252 entspricht dem Datenelement 62, welches in 2 gezeigt ist, und den Platten oder Laufwerken 34a-34c, die in 1 gezeigt sind.
  • Die entfernt gelegene Speichervorrichtung 26 enthält auch ein Paar von lediglich virtuellen Cachevorrichtungen 254, 256. Die lediglich virtuellen Cachevorrichtungen 254, 256 entsprechen Vorrichtungstabellen, die beispielsweise in dem Speicher 38 der entfernt gelegenen Speichervorrichtung 26 gespeichert sein können. Jeder Spureintrag der Tabellen von jeder lediglich virtuellen Cachevorrichtung 254, 256 zeigt entweder auf eine Spur der logischen Standardvorrichtung 252 oder zeigt zu einem Schlitz des Cachespeichers 242. 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 Standardvorrichtung 252 verwendet werden und gleichzeitig in Verbindung mit den lediglich virtuellen Cachevorrichtungen 254, 256 verwendet werden. Bei einer hier angesprochenen Ausführungsform enthält jeder Spurtabelleneintrag der lediglich virtuellen Cachevorrichtungen 254, 256 eine Null, um anzuzeigen, dass die Daten für diese Spur an einer entsprechenden Spur der logischen Standardvorrichtung 252 gespeichert sind. Ansonsten enthält ein Eintrag in der Spurtabelle für jede virtuelle Cachevorrichtung 254, 256 einen Zeiger zu einem der Schlitze 244-246 in dem Cachespeicher 242.
  • Jede der lediglich virtuellen Cachevorrichtungen 254, 256 entspricht einem der Datenpakete 56, 58. So kann beispielsweise die lediglich virtuelle Cachevorrichtung 254 dem Datenpaket 56 entsprechen, während die lediglich virtuelle Cachevorrichtung 256 dem Datenpaket 58 entsprechen kann. Bei einer hier beschriebenen Ausführungsform kann eine der lediglich virtuellen Cachevorrichtungen 254, 256 als "aktiv" betrachtet werden, während die andere Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 als "inaktiv" betrachtet werden kann. Die inaktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 kann den Daten entsprechen, die von der örtlichen Speichervorrichtung 24 empfangen werden (das heißt dem Datenpaket 56), während die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 den Daten entsprechen kann, die zu der logischen Standardvorrichtung 252 hin wieder hergestellt (geschrieben) werden.
  • Die Daten von der örtlichen Speichervorrichtung 24, die über das Verbindungsglied 29 empfangen werden, können in einen der Schlitze 244-246 des Cachespeichers 242 platziert werden. Ein entsprechender Zeiger der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 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 Speichervorrichtung 24 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 Cachevorrichtungen 254, 256 zu einer aktiven und umgekehrt. An dieser Stelle werden Daten von der nun aktiven Vorrichtung der lediglich virtuelle Cachevorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 hin kopiert, während die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 dazu verwendet wird, um neue Daten (mit einer neuen Sequenzzahl) zu empfangen, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 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 Cachevorrichtungen 254, 256 auf Null gestellt werden. Zusätzlich können Daten auch aus dem Cache 244 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 Standardvorrichtung 252 hin ausgelesen zu werden). Es kann ein Mechanismus verwendet werden, um sicherzustellen, dass die Daten nicht aus dem Cache 242 entfernt werden, bis alle Spiegel (inklusive der lediglich virtuellen Cachevorrichtungen 254, 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 Listen 258, 262 ähnlich den Listen 74, 76 aufrechterhalten, die durch die örtliche Speichervorrichtung 24 verwendet werden. Die Listen 258, 262 können Informationen enthalten, welche die Schlitze der entsprechenden, lediglich virtuellen Cachevorrichtungen 254, 256 identifizieren, die modifiziert worden sind, wobei eine der Listen 258, 262 einer Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 entspricht und die andere Liste der Listen 258, 262 der anderen einen Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 entspricht. Wie noch erläutert werden wird, können die Listen 258, 262 dazu verwendet werden, um das wieder Abspeichern von Daten von den lediglich virtuellen Cachevorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 zu vereinfachen.
  • Gemäß 8 veranschaulicht ein Flussdiagramm 270 Schritte, die durch die entfernt gelegene Speichervorrichtung 26 in Verbindung mit der Verarbeitung von Daten für eine Sequenznummernzusage ausgeführt werden, welche von der örtlichen Speichervorrichtung 25 zu der entfernt gelegenen Speichervorrichtung 26 gesendet werden. Wie dargelegt wird, inkrementiert die örtliche Speichervorrichtung 24 periodisch die Sequenzzahl. Wenn dies auftritt, beendet die örtliche Speichervorrichtung 24 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 Schritt 272 folgt ein Testschritt 274, bei dem bestimmt wird, ob die aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 der entfernt gelegenen Speichervorrichtung 26 leer ist. Wie bereits dargelegt wurde, wird die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 der entfernt gelegenen Speichervorrichtung 26 dazu verwendet, um Daten von der örtlichen Speichervorrichtung 24 zu sammeln, die unter Verwendung von RDF gesendet werden, während die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zurück zu der logischen Standardvorrichtung 252 gespeichert wird.
  • Wenn bei dem Testschritt 274 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 nicht leer ist, wird die Steuerung von dem Testschritt 274 zu einem Schritt 276 übertragen, bei dem die Wiederherstellung oder Wiederspeicherung für die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 vervollständigt wird, und zwar vor der Ausführung der weiteren Verarbeitung. Das Wiederspeichern der Daten von der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 wird noch mehr in Einzelheiten beschrieben. Es ist von Vorteil, dass die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 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 Schritt 274, folgt, wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 als leer bestimmt wurde, ein Schritt 278, bei dem die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 inaktiv gemacht wird. Nachfolgend dem Schritt 278 folgt ein Schritt 282, bei dem die früher inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 (das heißt die eine, die inaktiv vor der Ausführung des Schrittes 278 war) aktiv gemacht wird. Das Umwechseln oder Umverlagern der aktiven und der inaktiven Cachevorrichtungen der lediglich virtuellen Cachevorrichtungen 254, 256 bei den Schritten 278, 282 bereitet die nun inaktive (und leere) Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 dafür vor, um den Empfang der Daten von der örtlichen Speichervorrichtung 24 für die nächste Sequenzzahl zu beginnen.
  • Nachfolgend dem Schritt 282 folgt ein Schritt 284, bei dem die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu der logischen Standardvorrichtung der entfernt gelegenen Speichervorrichtung 26 hin wieder gespeichert wird. Das Wiederspeichern oder Wiederherstellen der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu der logischen Standardvorrichtung 252 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 Schritt 284 vervollständigt wird. Nachfolgend dem Schritt 284 folgt ein Schritt 286, bei dem die Zusage, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet wurde, zurück bestätigt wird, und zwar zu der örtlichen Speichervorrichtung 24 hin, so dass die örtliche Speichervorrichtung 24 darüber informiert wird, dass die Zusage erfolgreich war. Nachfolgend dem Schritt 286 wird die Verarbeitung vervollständig.
  • Gemäß 9 veranschaulicht ein Flussdiagramm 300 mehr in Einzelheiten die Schritt 276, 284 von 8, bei denen die entfernt gelegene Speichervorrichtung 26 die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 wieder herstellt. Der Prozess beginnt bei einem ersten Schritt 302, bei dem ein Zeiger gesetzt wird, um auf den ersten Schlitz der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu zeigen. Der Zeiger wird dazu verwendet, um durch jeden Spurtabelleneintrag der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 schrittweise hindurch zu gehen, von denen jeder individuell verarbeitet wird. Nachfolgend dem Schritt 302 folgt ein Testschritt 304, bei dem bestimmt wird, ob die Spur der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256, die verarbeitet wird, zu der logischen Standardvorrichtung 252 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 Schritt 304 zu einem Schritt 306 überführt, bei dem der entsprechende Schlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 verriegelt wird.
  • Nachfolgend dem Schritt 306 folgt ein Testschritt 308, bei dem bestimmt wird, ob der entsprechende Schlitz der logischen Standardvorrichtung 252 bereits in dem Cache der entfernt gelegenen Speichervorrichtung 26 vorhanden ist. Wenn dies der Fall ist, wird die Steuerung von dem Testschritt 308 zu einem Schritt 312 übertragen, bei dem der Schlitz der logischen Standardvorrichtung verriegelt wird. Nachfolgend dem Schritt 312 folgt ein Schritt 314, bei dem die Daten von der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 mit Daten in dem Cache für die logische Standardvorrichtung 252 gemischt werden. Das Mischen der Daten bei dem Schritt 314 involviert das Überschreiben der Daten für die logische Standardvorrichtung mit neuen Daten der aktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 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 Cachevorrichtungen 254, 256 gemäß einer ODER-Verknüpfung zu verknüpfen, und zwar mit Aufzeichnungen der logischen Standardvorrichtung 252 in dem Cache. Das heißt, wenn die Aufzeichnungen verschachtelt sind, ist es lediglich erforderlich, die Aufzeichnungen von der aktiven Vorrichtung der lediglich virtuellen Vorrichtungen 254, 256 zu verwenden, die sich geändert haben, und die Aufzeichnungen zu dem Cacheschlitz der logischen Standardvorrichtung 252 zu liefern. Nachfolgend dem Schritt 314 folgt ein Schritt 316, bei dem der Schlitz der logischen Standardvorrichtung 252 entriegelt wird. Nachfolgend dem Schritt 316 folgt ein Schritt 318, bei dem der Schlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256, die verarbeitet wird, ebenfalls entriegelt wird.
  • Wenn bei dem Testschritt 308 bestimmt wird, dass der entsprechende Schlitz der logischen Standardvorrichtung 252 nicht im Cache ist, dann wird die Steuerung von dem Testschritt 308 zu einem Schritt 322 übertragen, bei dem der Spureintrag für den Schlitz der logischen Standardvorrichtung 252 geändert wird, um anzuzeigen, dass der Schlitz der logischen Standardvorrichtung 252 im Cache ist (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 Schritt 322 folgt ein Schritt 324, 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 Schritt 326, bei dem der Schlitzzeiger für die logische Standardvorrichtung 252 geändert wird, um auf den Schlitz in dem Cache zu zeigen. Nachfolgend dem Schritt 326 folgt ein Testschritt 328, bei dem bestimmt wird, ob die Operationen, die bei den Schritten 322, 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 Schritte 322, 324, 326 auszuführen. Wenn diese Operationen aus irgendeinem Grund nicht erfolgreich sind, wird die Steuerung von dem Schritt 328 zurück zu dem Schritt 308 übergeben, um eine erneute Prüfung vorzunehmen, ob die entsprechende Spur der logischen Standardvorrichtung 252 in dem Cache ist. Wenn im anderen Fall bei dem Testschritt 328 bestimmt wird, dass die früheren Operationen erfolgreich verlaufen sind, wird die Steuerung von dem Testschritt 328 zu dem Schritt 318 übertragen, der oben erläutert wurde.
  • Nachfolgend dem Schritt 318 folgt ein Testschritt 332, bei dem bestimmt wird, ob der Cacheschlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 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 Cachevorrichtungen 254, 256 noch durch einen anderen Spiegel verwendet wird. Wenn bei dem Testschritt 332 bestimmt wird, dass der Schlitz des Caches der lediglich virtuellen Vorrichtung nicht durch einen anderen Spiegel verwendet wird, dann wird die Steuerung von dem Testschritt 332 zu einem Schritt 334 ü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 Schritt 334 folgt ein Schritt 336, um auf den nächsten Schlitz zu zeigen, um den nächsten Schlitz der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu verarbeiten. Es sei erwähnt, dass der Schritt 336 auch von dem Testschritt 332 aus erreicht wird, wenn bei dem Schritt 332 bestimmt wird, dass die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 noch durch einen anderen Spiegel verwendet wird. Es sei auch darauf hingewiesen, dass der Schritt 336 von dem Testschritt 304 aus erreicht wird, wenn bei dem Schritt 304 bestimmt wird, dass in Verbindung mit dem in Verarbeitung stehenden Schlitz die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 auf die logische Standardvorrichtung 252 zeigt. Nachfolgend dem Schritt 336 folgt ein Testschritt 338, bei dem bestimmt wird, ob mehrere Schlitze der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 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 Testschritt 338 zurück zu dem Schritt 304 ü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 Speichervorrichtung 26 zu konstruieren, wie beispielsweise die Listen 258, 262, die in 7 gezeigt sind. Wenn die Daten empfangen werden, konstruiert die entfernt gelegene Speichervorrichtung 26 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 Cachevorrichtungen 254, 256 wieder zu speichern.
  • Das Flussdiagramm 300 von 9 zeigt zwei alternative Pfade 342, 344, welche den Betrieb der Ausführungsformen veranschaulichen, bei denen eine Liste von modifizierten Schlitzen verwendet wird. Bei dem Schritt 302 wird ein Zeiger (der für den Iterationsvorgang durch die Liste der modifizierten Schlitze verwendet wird) dazu gebracht, auf das erste Element der Liste zu zeigen. Nachfolgend dem Schritt 302 folgt ein Schritt 306, der durch den alternativen Pfad 342 erreicht wird. Bei den Ausführungsformen, welche Listen von modifizierten Schlitzen verwenden, ist der Testschritt 304 nicht erforderlich, da keine Schlitze auf der Liste zu der logischen Standardvorrichtung 252 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 Schritt 336 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 Schritt 338, 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 Schritt 338 bestimmt wird, dass mehr Schlitze zum Verarbeiten vorhanden sind, wird die Steuerung von dem Schritt 338 zu dem Schritt 306 übertragen, wie dies durch den alternativen Pfad 344 veranschaulicht ist. Wie oben erläutert ist, kann bei Ausführungsformen, die eine Liste von modifizierten Schlitzen verwenden, der Schritt 304 eliminiert werden.
  • Gemäß 10 veranschaulicht ein Flussdiagramm 350 die Schritte, die in Verbindung mit der örtlichen Speichervorrichtung 24 ausgeführt werden, und zwar beim Erhöhen der Sequenzzahl. Die Verarbeitung beginnt bei einem ersten Schritt 352, bei dem die örtliche Speichervorrichtung 24 wenigstens M Sekunden vor der Erhöhung der Sequenzzahl wartet. Bei einer hier erläuterten Ausführungsform ist M gleich 30, 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 Speichervorrichtungen 24, 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 Testschritt 354, bei dem bestimmt wird, ob alle die HAs der örtlichen Speichervorrichtung 24 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 Speicher 37 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 Schritt 354 zu einem Testschritt 356 übertragen, bei dem bestimmt wird, ob die inaktive Liste der Listen 74, 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 Listen 74, 76 vollständig von der logischen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung des RDF-Protokolls übertragen worden sind. Wenn einmal die inaktive Liste der Listen 74, 76 als leer bestimmt wurde, wird die Steuerung von dem Schritt 356 zu einem Schritt 358 übertragen, bei dem die Zusage für die frühere Sequenzzahl von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet wird. Wie an früherer Stelle erläutert wurde, bewirkt die entfernt gelegene Speichervorrichtung 26, die eine Zusagenachricht für eine bestimmte Sequenzzahl empfängt, dass die entfernt gelegene Speichervorrichtung 26 mit dem Wiederspeichern der Daten entsprechend der Sequenzzahl beginnt.
  • Nachfolgend dem Schritt 358 folgt ein Schritt 362, bei dem das Kopieren von Daten für die inaktive Liste der Listen 74, 76 ausgesetzt wird. Wie bereits früher erläutert wurde, wird die inaktive Liste der Listen abgetastet, um entsprechende Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 zu senden. Es ist 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 RAs 30a-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 Schritt 364, bei dem Sequenzzahl inkrementiert wird. Nachfolgend dem Schritt 364 folgt ein Schritt 366, bei dem die Bits für die HAs, die in dem Testschritt 354 verwendet werden, alle gelöscht werden, so dass die Bits erneut in Verbindung mit dem Inkrementierungsvorgang der Sequenzzahl gesetzt werden können. Nachfolgend dem Schritt 366 folgt ein Testschritt 372, bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung 26 die Zusagenachricht, die bei dem Schritt 358 gesendet wurde, bestätigt hat. Die Bestätigung der Zusagenachricht wurde bereits weiter oben in Verbindung mit 8 erläutert. Wenn einmal bestimmt worden ist, dass die entfernt gelegen Speichervorrichtung 26 die Zusagenachricht, die bei dem Schritt 358 gesendet wurde, bestätigt hat, wird die Steuerung von dem Schritt 372 zu einem Schritt 374 übertragen, bei dem das Aussetzen des Kopiervorganges, was bei dem Schritte 362 realisiert wurde, gelöscht wird, so dass der Kopiervorgang wieder aufgenommen werden kann. Nachfolgend dem Schritt 374 wird die Verarbeitung beendet. Es sei darauf hingewiesen, dass es möglich ist, von dem Schritt 374 zurück zu dem Schritt 352 zu gehen, um einen neuen Zyklus zu beginnen, um 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 Diagramm 400 Elemente, die zum Konstruieren und Aufrechterhalten der Datenpakete 52, 54 verwendet werden. Eine logische Standardvorrichtung 404 enthält Daten, die durch den Host 22 geschrieben wurden und dem Datenelement 51 von 2 und den Platten oder Plattenlaufwerken 33a-33c von 1 entsprechen. Die logische Standardvorrichtung 402 enthält Daten, die durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben wurden.
  • Es werden zwei lediglich virtuelle Cachevorrichtungen 404, 406 in Verbindung mit der logischen Standardvorrichtung 402 verwendet. Die lediglich virtuellen Cachevorrichtungen 404, 406 bzw. die diesen entsprechende Vorrichtungstabellen können beispielsweise in dem Speicher 37 der logischen Speichervorrichtung 24 gespeichert werden. Jeder Spureintrag der Tabellen von jedem der lediglich virtuellen Cachevorrichtungen 404, 406 zeigt entweder auf eine Spur der logischen Standardvorrichtung 402 oder zeigt auf einen Schlitz eines Cachespeichers 408, der in Verbindung mit der logischen Speichervorrichtung 24 verwendet wird. Bei einigen Ausführungsformen kann der Cache 408 in dem Speicher 37 der örtlichen Speichervorrichtung 24 vorgesehen sein.
  • Der Cache 408 enthält eine Vielzahl an Cacheschlitzen 412-414, die in Verbindung mit Schreibeinträgen zu der logischen Standardvorrichtung 402 verwendet werden können und zur gleichen Zeit in Verbindung mit den lediglich virtuellen Cachevorrichtungen 404, 406 verwendet werden können. Bei einer hier beschriebenen Ausführungsform enthält jeder Spurtabelleneintrag der lediglich virtuellen Cachevorrichtungen 404, 406 eine Null, um auf eine entsprechende Spur der logischen Standardvorrichtung 402 zu zeigen. Ansonsten enthält irgendein Eintrag in der Spurtabelle für jede der lediglich virtuellen Cachevorrichtungen 404, 406 einen Zeiger zu einem der Schlitze 412-414 in dem Cache 408.
  • Jede der lediglich virtuellen Cachevorrichtungen 404, 406 kann für eines der Datenpakete 52, 54 verwendet werden, so dass beispielsweise die lediglich virtuelle Cachevorrichtung 404 dem Datenpaket 52 entsprechen kann, und zwar für die Sequenzzahl N, während die lediglich virtuelle Cachevorrichtung 406 dem Datenpaket 54 für die Sequenzzahl N-1 entsprechen kann. Wenn somit Daten durch den Host 22 zu der örtlichen Speichervorrichtung 24 geschrieben werden, werden die Daten zu dem Cache 408 geliefert und ein geeigneter Zeiger der lediglich virtuellen Cachevorrichtung 404 wird eingestellt. Es sei erwähnt, dass die Daten nicht aus dem Cache 408 entfernt werden, bis die Daten zu der logischen Standardvorrichtung 402 ausgelesen wurden und es werden die Daten auch durch die lediglich virtuelle Cachevorrichtung 404 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 Cachevorrichtung 404 aktiv sein, während die lediglich virtuelle Cachevorrichtung 406 inaktiv ist. Die aktive eine der lediglich virtuellen Cachevorrichtungen 404, 406 handhabt die Schreibeinträge von dem Host 22, während die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 den Daten entspricht, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 ü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 Cachevorrichtungen 404, 406 (für die Sequenzzahl N), werden die Daten entsprechend der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 (für frühere Sequenzzahl N-1) von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet. Zu diesem Zweck und in Verbindung mit den hier angesprochenen Ausführungsformen handhaben die DAs 35a-35c der örtlichen Speichervorrichtung den Abtastvorgang der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406, um Kopieranfragen zu einer oder zu mehreren der RAs 30a-30c zu senden, um Daten von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 zu senden. Somit können die Schritte 362, 374, die oben in Verbindung mit dem Aussetzen und wieder Aufnehmen des Kopiervorganges erläutert wurden, das Liefern von Nachrichten/Befehlen zu den DAs 35a-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 Cachevorrichtungen 404, 406 auf Null gesetzt werden. Zusätzlich können die Daten auch aus dem Cache 408 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 Standardvorrichtung 402 hin). Ein Mechanismus kann dabei eingesetzt werden, um sicherzustellen, dass Daten nicht aus dem Cache 408 entfernt werden, bis alle Spiegel (enthaltend die lediglich virtuellen Cachevorrichtungen 404, 406) nicht länger die Daten verwenden. Solch ein Mechanismus ist beispielsweise in dem US-Patent Nr. 5,537,568, ausgegeben am 16. Juli 1996, und in der US-Patentanmeldung Nr. 09/850,551, eingereicht am 7. Juli 2001, beschrieben, die beide hier unter Bezugnahme mit einbezogen werden.
  • Gemäß 12 veranschaulicht ein Flussdiagramm 440 die Schritte, die durch den HA 28 in Verbindung mit einem Host 22 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 Schritt 442, bei dem ein Schlitz entsprechend dem Schreibeintrag verriegelt wird. Bei einer anderen hier beschriebenen Ausführungsform entspricht jeder der Schlitze 412, 414 des Caches 404 einer Spur von Daten an der logischen Standardvorrichtung 402. Das Verriegeln des Schlitzes bei dem Schritt 442 verhindert eine zusätzliche Verarbeitung an dem relevanten Schlitz, während der Verarbeitung, die durch den HA 28 durchgeführt wird, und zwar entsprechend den Schlitzen des Flussdiagramms 440.
  • Nachfolgend dem Schritt 442 folgt ein Schritt 444, 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 Schritt 444, erhalten wird, während der gesamten Schreiboperation aufrechterhalten oder beibehalten, die durch den HA 28 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 Datenpakete 52, 54 zu setzen, zu dem der Schreibeintrag gehört. Schreibvorgänge oder Schreibeinträge, die durch den Host 22 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 Testschritt 446, bei dem bestimmt wird, ob die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 bereits auf den Schlitz zeigt, der bei dem Schritt 442 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 Speichervorrichtung 26 gesendet worden zu sein.
  • Wenn bei dem Testschritt 446 bestimmt wird, dass die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 nicht auf den Schlitz zeigt, wird die Steuerung von dem Testschritt 446 zu einem anderen Testschritt 448 übertragen, bei dem bestimmt wird, ob die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 auf den Schlitz zeigt. Es ist für die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 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 Testschritt 448 bestimmt wird, dass die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 nicht auf den Schlitz zeigt, wird die Steuerung von dem Testschritt 448 zu einem Schritt 452 übertragen, bei dem ein neuer Schlitz für die Daten abgeleitet wird. Nachfolgend dem Schritt 452 folgt ein Schritt 454, bei dem die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 dazu gebracht wird, auf den Schlitz zu zeigen.
  • Nachfolgend dem Schritt 454 oder nachfolgend dem Schritt 448, wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 auf den Schlitz zeigt, folgt ein Schritt 456, bei welchem Flags gesetzt werden. Bei dem Schritt 456 wird das RDF_WP-Flag (das RDF-Schreibaussetzflag) gesetzt, um anzuzeigen, dass der Schlitz zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung von RDF gesendet werden muss. Zusätzlich wird bei dem Schritt 456 das IN_CACHE-Flag gesetzt, um anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung 402 ausgelesen werden muss. Es sei darauf hingewiesen, dass in einigen Fällen, wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 bereits auf den Schlitz zeigt (wie dies bei dem Schritt 448 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 Schrittes 456. Jedoch sichert das Setzen der Flags bei dem Schritt 456, dass die Flags in richtiger Weise gesetzt werden, und zwar ungeachtet dem früher herrschenden Zustand.
  • Nachfolgend dem Schritt 456 folgt ein Schritt 458, bei dem ein indirektes Flag in der Spurtabelle, welches auf den Schlitz zeigt, gelöscht wird, wodurch angezeigt wird, dass die relevanten Daten in dem Schlitz vorgesehen sind, und nicht in einem anderen oder verschiedenen Schlitz, auf den indirekt gezeigt wird. Nachfolgend dem Schritt 458 folgt ein Schritt 462, bei dem Daten, die durch den Host 22 und HA 28 geschrieben wurden, in den Schlitz geschrieben werden. Nachfolgend dem Schritt 462 folgt ein Schritt 464, bei dem der Schlitz entriegelt wird. Nachfolgend dem Schritt 464 wird die Verarbeitung beendet oder vervollständigt.
  • Wenn bei dem Testschritt 446 bestimmt wird, dass die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 auf den Schlitz zeigt, wird die Steuerung von dem Schritt 446 zu einem Schritt 472 übertragen, bei dem ein neuer Schlitz erhalten wird. Der neue Schlitz, der bei dem Schritt 472 erhalten wird, kann für die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 verwendet werden, um den RDF-Transfer zu bewirken, währen der alte Schritt der aktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 zugeordnet wird, was weiter unten beschrieben wird.
  • Nachfolgend dem Schritt 472 folgt ein Schritt 474, bei dem die Daten von dem alten Schlitz zu dem neuen Schlitz kopiert werden, der bei dem Schritt 472 erhalten wurde. Nachfolgend dem Schritt 474 folgt ein Schritt 476, bei dem das indirekte Flag (oben erläutert) gesetzt wird, um anzuzeigen, dass der Spurtabelleneintrag für die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 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 Schritt 476 die Spurtabelle der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406, um den Spurtabelleneintrag zu veranlassen, anzuzeigen, dass die Daten sich im neuen Schlitz befinden.
  • Nachfolgend dem Schritt 476 folgt ein Schritt 478, 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 Schritt 474 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 Schritt 478 folgt ein Schritt 462, bei dem die Daten zu dem Schlitz geschrieben werden. Nachfolgend dem Schritt 462 folgt ein Schritt 464, bei welchem der Schlitz entriegelt wird. Nachfolgend dem Schritt 464 wird die Verarbeitung vervollständigt.
  • Gemäß 13 veranschaulicht ein Flussdiagramm 500 Schritte, die in Verbindung mit der örtlichen Speichervorrichtung 24 durchgeführt werden, welche das Datenpaket 54 zu der entfernt gelegenen Speichervorrichtung 26 sendet. Das Senden involviert im Wesentlichen das Abtasten der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 auf Spuren, die dorthin geschrieben worden sind, und zwar während einer früheren Iteration, wenn die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 aktiv war. Bei dieser Ausführungsform tasten die DAs 35a-35c der örtlichen Speichervorrichtung 24 die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 ab, um die Daten für die Übertragung zu der entfernt gelegenen Speichervorrichtung 26 durch einen oder durch mehrere RAs 30a-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 Cachevorrichtungen 404, 406 gezeigt wird, um den Prozess der Iteration durch all die Spuren zu beginnen. Nachfolgend dem ersten Schritt 502 folgt ein Testschritt 504, 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 Speichervorrichtung 26 gesendet. Bei anderen Ausführungsformen kann es jedoch möglich sein, den gesamten Schlitz zu senden, vorausgesetzt, dass die entfernt gelegene Speichervorrichtung 26 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 Schritt 504 zu dem Testschritt 505 ü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 Schritt 505 zu einem Schritt 506 ü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 Schritt 505, wenn der Schlitz ein direkter Schlitz ist, folgt ein Schritt 507, bei dem Daten, die gesendet werden (direkt oder indirekt von dem Schlitz) durch eine der DAs 35a-35c kopiert werden, die von der örtlichen Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung des RDF-Protokolls gesendet werden sollen. Nachfolgend dem Schritt 507 folgt ein Testschritt 508, bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung 26 den Empfang der Daten bestätigt hat. Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 508 zurück zu dem Schritt 507 ü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 Schritt 508 zu einem Schritt 512, um das RDF_WP-Flag zu löschen (da die Daten erfolgreich über RDF gesendet worden sind). Nachfolgend dem Schritt 512 folgt ein Schritt 514, 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 Schritt 514 gelöscht werden.
  • Nachfolgend dem Schritt 514 folgt ein Testschritt 516, 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 Schritt 516 zu einem Schritt 518, 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 Standardvorrichtung 402 hin ausgelesen werden müssen oder durch irgendeinen anderen Spiegel verwendet werden (inklusive einer anderen R2-Vorrichtung). Nachfolgend dem Schritt 518 oder nachfolgend dem Schritt 516, wenn mehr Spiegelflags vorhanden sind, folgt ein Schritt 522, bei dem der Zeiger, der dazu verwendet wird, um durch jeden der Spureinträge zu iterieren, und zwar der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406, dazu gebracht wird, auf die nächste Spur zu zeigen. Nachfolgend dem Schritt 522 folgt ein Testschritt 524, bei dem bestimmt wird, ob mehr Spuren der inaktiven Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 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 Testschritt 504 übertragen, der an früherer Stelle erläutert wurde. Es sei darauf hingewiesen, dass der Schritt 522 auch von dem Testschritt 504 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 Host 602 zu einer örtlichen Speichervorrichtung 604 und einer entfernt gelegenen Speichervorrichtung 606 über ein Verbindungsglied 608. Das System von 14 ist ähnlich dem System aufgebaut, welches in 2 gezeigt ist und oben erläutert wurde. Die Daten, die von dem Host 602 zu der örtlichen Speichervorrichtung 604 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement 612 der örtlichen Speichervorrichtung 604 veranschaulicht ist. Die Daten, die durch den Host 602 zu der örtlichen Speichervorrichtung 604 geschrieben werden, werden auch durch die örtliche Speichervorrichtung 604 beibehalten oder aufrechterhalten, und zwar in Verbindung damit, dass sie durch die örtliche Speichervorrichtung 604 zu der entfernt gelegenen Speichervorrichtung 606 über das Verbindungsglied 608 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. In 14 sind die Schreibeinträge des Host 602 so gezeigt, dass diesen die Sequenzzahl N zugeordnet ist. Alle die Schreibeinträge, die von dem Host 602 ausgeführt werden, sind der Sequenzzahl N zugeordnet und sind in einem einzelnen Datenpaket 614 gesammelt. Das Datenpaket 614 repräsentiert eine Vielzahl von getrennten Schreibeinträgen oder Schreibvorgängen durch den Host 602, 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 Speichervorrichtung 606 sendet. Während somit die örtliche Speichervorrichtung 606 Schreibeinträge von dem Host 602 ansammelt, denen die Sequenzzahl N zugeordnet ist, werden Schreibeinträge, die für die frühere Sequenzzahl (N-1) aufgetreten sind, durch die örtliche Speichervorrichtung 604 zu der entfernt gelegenen Speichervorrichtung 606 über das Verbindungsglied 608 gesendet. Das Datenpaket 616 repräsentiert Schreibeinträge von dem Host 602, denen die Sequenzzahl N-1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung 606 gesendet wurden.
  • Die entfernt gelegene Speichervorrichtung 606 empfängt Daten von dem Datenpaket 616 entsprechend den Schreibeinträgen, die einer Sequenzzahl N-1 zugeordnet sind, und konstruiert ein neues Datenpaket 618 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 Verbindungsglied 608 gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung 606 alle die Daten von dem Datenpaket 616 empfangen hat, sendet die örtliche Speichervorrichtung 604 eine Zusagenachricht zu der entfernt gelegenen Speichervorrichtung 606, um all die Daten zuzusagen, die der Sequenzzahl N-1 zugeordnet sind, entsprechend dem Datenpaket 618. Im Allgemeinen kann, wenn ein Datenpaket entsprechend einer bestimmten Sequenzzahl zugesagt wurde, das Datenpaket zu der logischen Speichervorrichtung geschrieben werden. Dies ist in 14 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 Host 602 stammen und zur örtlichen Speichervorrichtung 606 verlaufen).
  • In 14 ist das Paket 622 so gezeigt, dass es zu einem Datenelement 624 geschrieben wird, welches einen Plattenspeicher (logische Standardvorrichtung) für die entfernt gelegene Speichervorrichtung 606 repräsentiert. Somit empfängt die entfernt gelegene Speichervorrichtung 606 das Datenpaket 618 und sammelt dasselbe entsprechend der Sequenzzahl N-1, während das Datenpaket 622 entsprechend der früheren Sequenzzahl N-2 zu der Plattenspeichervorrichtung der entfernt gelegenen Speichervorrichtung 606 geschrieben wird, was durch das Datenelement 624 veranschaulicht ist. Bei einigen Ausführungsformen werden die Daten für das Paket 622 für den Schreibvorgang markiert (die nicht notwendigerweise unmittelbar geschrieben werden), während die Daten für das Datenpaket 618 nicht markiert werden. Die Daten, die bei dem Datenelement 624 gespeichert werden, sind so dargestellt, dass sie die Sequenzzahl N-3 haben, was anzeigt, dass die Daten an dem Datenelement 624 um eine (oder mehrere) Generationen hinter den zugesagten Daten liegen, die durch das Datenpaket 622 repräsentiert werden.
  • Somit schreibt der Host 602 im Betrieb Daten zu der örtlichen Speichervorrichtung 604, die örtlich in dem Datenelement 612 gespeichert werden und in dem Datenpaket 614 gesammelt werden. Wenn einmal all die Daten für die spezielle Sequenzzahl gesammelt worden sind (wie bereits beschrieben wurde), inkrementiert die örtliche Speichervorrichtung 604 die Sequenzzahl. Daten von dem Datenpaket 616 entsprechend um eins weniger als die momentane Sequenzzahl werden von der örtlichen Speichervorrichtung 604 zu der entfernt gelegenen Speichervorrichtung 606 über das Verbindungsglied 608 übertragen. Das Datenpaket 622 entsprechend den Daten für eine Sequenzzahl, die durch die örtliche Speichervorrichtung 604 zugesagt wurde, führt zum Senden einer Nachricht zu der entfernt gelegenen Speichervorrichtung 606. Daten von dem Paket 622 werden zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung 264 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 Speichervorrichtung 606 gekoppelt zu sein, um Daten von der entfernt gelegenen Speichervorrichtung 606 zu lesen, die zu Beginn durch den Host 602 zu der örtlichen Speichervorrichtung 604 geliefert wurden und von der örtlichen Speichervorrichtung 604 über das Verbindungsglied 608 zu der entfernt gelegenen Speichervorrichtung 606 übertragen wurden. Es sei darauf hingewiesen, dass Daten entsprechend dem Datenpaket 618 nicht notwendigerweise konsistent sind, da diese noch von der örtlichen Speichervorrichtung 604 vorgesehen werden. Die Daten aus dem Datenpaket 622 sind jedoch konsistent, da dem Paket 622 zugestimmt wurde. Wenn demzufolge der R2-Host 626 wünscht, Daten von der entfernt gelegenen Speichervorrichtung 606 zu lesen, werden die Daten entweder aus dem Datenpaket 622 geliefert oder wenn die Daten nicht in dem Paket vorhanden sind, dann werden sie aus dem Datenelement 624 geliefert, was noch mehr in Einzelheiten weiter unten beschrieben wird.
  • Gemäß 15 veranschaulicht ein Flussdiagramm 650 die Schritt, die in Verbindung mit dem R2-Host 626 durchgeführt werden, der Daten von der entfernt gelegenen Speichervorrichtung 606 liest. Die Verarbeitung beginnt bei einem ersten Schritt 652, bei dem bestimmt wird, ob der COVD-Schlitz entsprechend den Daten, die durch den R2-Host 626 gelesen werden, auf die logische Standardvorrichtung zeigt (das heißt auf das Datenelement 624 zeigt). Wenn dies der Fall ist, befinden sich die Daten, die von dem R2-Host 626 gewünscht werden, an dem Datenelement 624 und die Steuerung wird dann von dem Schritt 652 auf einen Schritt 654 übertragen, bei dem die gewünschten Daten aus der logischen Standardvorrichtung entsprechend dem Datenelement 624 gelesen werden. Es sei erwähnt, dass das Lesen aus der logischen Standardvorrichtung bei dem Schritt 654 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 Schritt 654 wird die Verarbeitung beendet.
  • Wenn bei dem Testschritt 652 bestimmt wird, dass der COVD-Schlitz entsprechend den Daten, die durch den R2-Host 626 gelesen werden, nicht auf die logische Standardvorrichtung zeigt, wird die Steuerung von dem Testschritt 652 zu einem Schritt 656 überführt, bei dem der Schlitz der COVD verriegelt wird. Das Verriegeln des Schlitzes bei dem Schritt 656 verhindert ein Zugreifen auf den Schlitz durch andere Operationen, wie beispielsweise durch eine Operation, welche Daten aus dem Datenpaket 622 zu dem Datenelement 624 wieder speichert oder umspeichert.
  • Nachfolgend dem Schritt 656 folgt ein Testschritt 658, bei dem bestimmt wird, ob der COVD-Schlitz auf die logische Standardvorrichtung zeigt. Der Testschritt bei dem Schritt 658 ist identisch mit dem Testschritt bei dem Schritt 652. Der Test bei dem Schritt 658 ist vorteilhaft, da es möglich wird, und zwar für einen anderen Prozess (wie beispielsweise den Prozess, bei dem Daten von dem Datenpaket 622 zu dem Datenelement 624 umgespeichert werden), den COVD zugegriffen zu haben und die Daten zu der logischen Standardvorrichtung umgespeichert zu haben, und zwar nach dem Testschritt 652, jedoch bevor der COVD-Schlitz bei dem Schritt 656 verriegelt wurde. Ein erneutes Testen bei dem Schritt 658 schützt gegen solch einen seltenen Fall oder Zustand.
  • Wenn bei dem Testschritt 658 bestimmt wird, dass der COVD-Schlitz bei dem Schritt 656 verriegelt war und nun auf die logische Standardvorrichtung zeigt, dann wird die Steuerung von dem Schritt 658 zu einem Schritt 662 übertragen, bei welchem der COVD-Schlitz entriegelt wird. Auf den Schlitz 662 folgt ein Schritt 654, bei dem Daten, die von dem R2-Host 626 gewünscht werden, von dem Datenelement 624 gelesen werden. Nachfolgend dem Schritt 654 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-Host 626 gewünscht werden, nicht auf die logische Standardvorrichtung zeigt, verläuft die Steuerung von dem Schritt 658 zu einem Schritt 664, bei dem die Daten in den COVD zu der logischen Standardvorrichtung umgespeichert werden. Das Umspeichern der Daten bei dem Schritt 664 wird unter Verwendung der Schritte ähnlich den Schritten 608, 312, 314, 316, 318, 322, 324, 326, 328, 332, 334 durchgeführt, die oben in Verbindung mit dem Flussdiagramm von 9 erläutert wurden. Nachfolgend auf den Schritt 664 fließt die Steuerung zu dem Schritt 654, der oben erläutert wurde, wobei die Daten von der logischen Standardvorrichtung gelesen werden. Nachfolgend auf den Schritt 654 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-Vorrichtung 606 verursacht werden und auftreten, nachdem der R2-Host 626 einige der Spuren gelesen hat, jedoch bevor der R2-Host 626 all die Spuren gelesen hat. Bei anderen Ausführungsformen ist es für den R2-Host 626 möglich, vielfache Spuren zu lesen, wenn geeignete Schritte unternommen werden.
  • Gemäß 16A veranschaulicht ein Flussdiagramm 700 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 Schritt 702, 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 Schritt 702 zu einem Schritt 704, bei welchem die Leseoperation in der bereits beschriebenen Weise ausgeführt wird. Nachfolgend auf den Schritt 704 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 Schritt 702 zu einem Schritt 706, um die laufende oder momentane Sequenzzahl für die R2-Vorrichtung 606 zu erhalten (das heißt die Sequenzzahl für das Datenpaket 622). Nachfolgend auf den Schritt 706 folgt ein Schritt 708, bei dem das Lesen durchgeführt wird. Es sei darauf hingewiesen, dass das Lesen bei dem Schritt 708 aus einem Lesen von nur mehr als einer Spur besteht. Nachfolgend dem Schritt 708 folgt ein Schritt 712, bei dem die momentane Sequenzzahl für die R2-Vorrichtung 606 erneut erhalten wird. Nachfolgend dem Schritt 712 folgt ein Schritt 714, bei dem bestimmt wird, ob die Sequenzzahl, die bei dem Schritt 712 erhalten wurde, die gleiche ist wie die Sequenzzahl, die bei dem Schritt 706 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 Schritt 714 zu einem Schritt 716, bei dem Daten, die bereits gelesen worden sind, zurückgeleitet werden. Nachfolgend auf den Schritt 716 wird die Verarbeitung vervollständigt. Wenn im anderen Fall die Sequenzzahlen bei dem Schritt 714 verschieden sind, verläuft die Steuerung von dem Schritt 714 zurück zu dem Schritt 706, 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 Schritt 714.
  • Gemäß 16B veranschaulicht ein Flussdiagramm 720 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 Flussdiagramm 700 von 16A veranschaulicht ist. Die Verarbeitung beginnt bei einem ersten Schritt 722, bei dem bestimmt wird, ob eine Leseoperation mehr als eine Spur umfasst. Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt 722 zu einem Schritt 724, bei dem die Leseoperation in der bereits beschriebenen Weise ausgeführt wird. Nachfolgend auf den Schritt 724 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 Schritt 722 zu einem Schritt 726, um die momentane Sequenzzahl für die R2-Vorrichtung 606 zu erhalten (das heißt die Sequenzzahl für das Datenpaket 622). Nachfolgend dem Schritt 726 folgt ein Schritt 728, bei dem das Lesen durchgeführt wird. Es sei darauf hingewiesen, dass das Lesen bei dem Schritt 728 aus einem Lesen von mehr als einer Spur besteht. Nachfolgend dem Schritt 728 folgt ein Schritt 732, bei dem die momentane Sequenzzahl für die R2-Vorrichtung 606 erneut erhalten wird. Nachfolgend dem Schritt 732 folgt ein Schritt 734, bei dem bestimmt wird, ob die bei dem Schritt 732 erhaltene Sequenzzahl die gleiche ist wie die Sequenzzahl, die bei dem Schritt 726 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 Schritt 734 zu einem Schritt 736, bei dem die Daten, die gelesen wurden, zurückgeleitet werden. Nachfolgend dem Schritt 736 wird die Verarbeitung vervollständigt. Wenn im anderen Fall die Sequenzzahlen bei dem Schritt 734 abweichen bzw. verschieden sind, verläuft die Steuerung von dem Schritt 734 zu einem Schritt 738, 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 Schritt 738 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 Host 802 zu einer örtlichen Speichervorrichtung 804 und einer entfernt gelegenen Speichervorrichtung 806 über ein Verbindungsglied 808. Das System von 17 ist ähnlich dem System aufgebaut, welches in 2 veranschaulicht ist und oben erläutert wurde. Daten, die von dem Host 802 zu der örtlichen Speichervorrichtung 804 geschrieben werden, werden örtlich gespeichert, wie dies durch das Datenelement 812 der örtlichen Speichervorrichtung 804 veranschaulicht ist. Die Daten, die durch den Host 802 zu der örtlichen Speichervorrichtung 804 geschrieben werden, werden auch durch die örtliche Speichervorrichtung 804 gehalten, und zwar in Verbindung mit dem Senden durch die örtliche Speichervorrichtung 804 zu der entfernt gelegenen Speichervorrichtung 806 vermittels des Verbindungsgliedes 808.
  • 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. In 17 sind die Schreibeinträge oder Schreibvorgänge durch den Host 802 so gezeigt, dass diesen die Sequenzzahl N zugeordnet ist. Alle die Schreibeinträge, die durch den Host 802 durchgeführt werden, sind der Sequenzzahl N zugeordnet und werden in einem einzigen Datenpaket 814 gesammelt. Das Datenpaket 814 repräsentiert eine Vielzahl von getrennten Schreibeinträgen durch den Host 802, 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 Speichervorrichtung 806 sendet. Während somit die örtliche Speichervorrichtung 804 Schreibeinträge sammelt, und zwar von dem Host 802, die der Sequenzzahl N zugeordnet sind, werden die Schreibeinträge, die vor der früheren Sequenzzahl (N-1) aufgetreten sind, durch die örtliche Speichervorrichtung 804 über das Verbindungsglied 808 zu der entfernt gelegenen Speichervorrichtung 806 gesendet. Das Datenpaket 816 repräsentiert Schreibeinträge von dem Host 802, denen die Sequenzzahl N-1 zugeordnet ist, die noch nicht zu der entfernt gelegenen Speichervorrichtung 806 gesendet worden sind.
  • Die entfernt gelegene Speichervorrichtung 806 empfängt Daten von dem Datenpaket 816 entsprechend den Schreibeinträgen, denen eine Sequenzzahl N-1 zugeordnet ist, und konstruiert ein neues Datenpaket 818 von Host-Schreibeinträgen mit der Sequenzzahl N-1. Die Daten können unter Verwendung des geeigneten RDF-Protokolls über das Verbindungsglied 808 gesendet werden, welches Protokoll die Daten bestätigen kann, die gesendet wurden. Wenn die entfernt gelegene Speichervorrichtung 806 all die Daten von dem Datenpaket 816 empfangen hat, sendet die örtliche Speichervorrichtung 804 eine Zusagenachricht zu der entfernt gelegenen Speichervorrichtung 806, um all den Daten zuzusagen, welchen die Sequenzzahl N-1 zugeordnet ist, entsprechend dem Datenpaket 818. Im Allgemeinen wird, wenn ein Datenpaket entsprechend einer bestimmten Sequenzzahl einmal zugestimmt worden ist, das Datenpaket zu der örtlichen Speichervorrichtung geschrieben. Dies ist in 17 mit einem Datenpaket 822 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 Host 802 zu der örtlichen Speichervorrichtung 806 verlaufen).
  • In 17 ist das Datenpaket 822 so gezeigt, dass es zu einem Datenelement 824 geschrieben wird, welches einen Plattenspeicher repräsentiert (logische Standardvorrichtung), und zwar für die entfernt gelegene Speichervorrichtung 806. Somit empfängt die entfernt gelegene Speichervorrichtung 806 das Datenpaket 818 und sammelt dasselbe entsprechend der Sequenzzahl N-1, während das Datenpaket 822 (entsprechend der früheren Sequenzzahl N-2) zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung 806 geschrieben wird, was durch das Datenelement 824 veranschaulicht ist. Bei einigen Ausführungsformen werden die Daten für das Datenpaket 822 für das Schreiben markiert (werden jedoch nicht notwendigerweise unmittelbar geschrieben), während Daten für das Datenpaket 818 nicht markiert werden. Die an dem Datenelement 824 gespeicherten Daten sind so gezeigt, dass sie die Sequenzzahl N-3 haben, was anzeigt, dass die Daten an dem Datenelement 824 eine (oder mehrere) Generationen hinter den zugesagten Daten liegen, die durch das Datenpaket 822 repräsentiert werden.
  • Somit schreibt der Host 802 im Betrieb Daten zu der örtlichen Speichervorrichtung 804, die örtlich in dem Datenelement 812 gespeichert werden und in dem Datenpaket 814 gesammelt sind. Wenn einmal all die Daten für eine bestimmte Sequenzzahl gesammelt worden sind (bereits beschrieben), inkrementiert die örtliche Speichervorrichtung 804 die Sequenzzahl. Daten von dem Datenpaket 816, entsprechend eins weniger als die momentane Sequenzzahl, werden von der örtlichen Speichervorrichtung 804 zu der entfernt gelegenen Speichervorrichtung 806 über das Verbindungsglied 808 übertragen. Das Datenpaket 822 entsprechend den Daten für eine Sequenzzahl, die durch die örtliche Speichervorrichtung 804 zugesagt wurde, führt zum Senden einer Nachricht zu der entfernt gelegenen Speichervorrichtung 806. Daten von dem Datenpaket 822 werden zu dem Plattenspeicher der entfernt gelegenen Speichervorrichtung 806 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 Speichervorrichtung 804 gekoppelt zu sein, um Daten von der entfernt gelegenen Speichervorrichtung 806 zu lesen, die zu Beginn durch den Host 802 zu der örtlichen Speichervorrichtung 804 geliefert wurden und von der örtlichen Speichervorrichtung 804 über das Verbindungsglied 808 zu der entfernt gelegenen Speichervorrichtung 806 übertragen wurden. Es kann auch für den Host 802 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 Hosts 802, 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 Platteneinheit 812 aufweisen können, und zwar in dem N-Datenpaket 814, in den N-1-Datenpaketen 816, 818 und in dem N-2-Datenpaket 822, und auf der Platteneinheit 824 der entfernt gelegenen Speichervorrichtung 806. Die hier gegebene Beschreibung zum Lesen der Daten trifft auch sowohl für den Host 802 zu, der Daten liest, als auch/oder für den Host 826, der Daten liest.
  • Gemäß 18 veranschaulicht ein Flussdiagramm 850 die Schritt, die in Verbindung mit entweder einem oder mit beiden Hosts 802, 826 durchgeführt werden, der bzw. die Daten von der R2-Vorrichtung 806 lesen. Die Verarbeitung beginnt bei einem ersten Schritt 852, 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-Vorrichtung 804 vorhanden sind, es dann nicht erforderlich ist, irgendwelche Daten von der R2-Vorrichtung 806 zu erhalten. Wenn bei dem Schritt 852 bestimmt wird, dass die Daten in dem Cache der R1-Vorrichtung sind, verläuft die Steuerung von dem Schritt 852 zu einem Schritt 854, bei dem die Daten in dem Cache der R1-Vorrichtung 804 im Ansprechen auf eine Leseanfrage zurückgeleitet werden. Nach dem Schritt 854 wird die Verarbeitung vervollständigt.
  • Wenn bei dem Testschritt 852 bestimmt wird, dass alle die angefragten Daten nicht in dem Cache der R1-Vorrichtung 804 vorhanden sind, verläuft die Steuerung von dem Schritt 852 zu einem Testschritt 856, bei dem bestimmt wird, ob einige der Daten in einem Schlitz für eine Spur entsprechend einem oder beiden der Pakete entsprechend dem N Paket 814 und dem N-1 Paket 815 vorhanden sind. Wenn dies der Fall ist, verläuft die Steuerung von dem Schritt 856 zu einem Schritt 862, bei dem ein Arbeitsschlitz erzeugt wird, um Daten zu empfangen, die von der R2-Vorrichtung (weiter unten beschrieben) gelesen werden. Nachfolgend dem Schritt 862 folgt ein Schritt 864, bei dem die Schlitze entsprechend einem der Datenpakete oder beiden Datenpaketen gemäß den N und N-1 Paketen 814, 816 verriegelt werden. Das Verriegeln der Schlitze bei dem Schritt 864 verhindert, dass die Daten geändert werden, und zwar während des Leseprozesses, wenn dieser durchgeführt wird.
  • Nachfolgend dem Schritt 864 folgt ein Testschritt 874, bei dem bestimmt wird, ob all die gewünschten Daten in einem oder in beiden der N-Datenpakete 814, 816 vorhanden sind. Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt 874 zu einem Schritt 876, bei welchem die R1-Vorrichtung 804 eine Leseanfrage zu der R2-Vorrichtung 806 sendet. Die Verarbeitung der Leseanfrage bei der R2-Vorrichtung 806 wird mehr in Einzelheiten weiter unten erläutert. Nachfolgend dem Schritt 876 folgt ein Schritt 878, bei dem Daten von der R2-Vorrichtung 806 durch die R1-Vorrichtung 804 gelesen werden. Wenn ein Arbeitsschlitz bei dem Schritt 862 erzeugt worden ist, werden die Daten von der R2-Vorrichtung 806 in den Arbeitsschlitz gelesen. Ansonsten können die Daten direkt von der R1-Vorrichtung 804 empfangen werden.
  • Nachfolgend dem Schritt 878 oder nachfolgend dem Schritt 874, wenn alle die gewünschten Daten in einem oder in beiden der N- und N-1-Datenpakete 814, 816 gefunden wurden, folgt ein Schritt 882, bei dem das N-Datenpaket 814, das N-1-Datenpaket 816 an der R1-Vorrichtung 804 und die Daten, die durch die R2-Vorrichtung 806 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 Mischungsschritt 814 des Flussdiagramms 300 von 9. 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-Vorrichtung 804 und/oder der R2-Vorrichtung 806 vorhanden zu sein. Demzufolge handhabt der Schritt 882 das Mischen von all den Daten in all den Cacheschlitzen, um einen einzelnen Spurdatensatz in dem Arbeitsschlitz vorzusehen.
  • Nachfolgend dem Schritt 882 folgt ein Schritt 884, bei dem die gemischten Daten zu dem Host zurückgeleitet werden, welcher den Lesebefehl ausgegeben hat. Nachfolgend dem Schritt 884 folgt ein Schritt 886, bei dem irgendwelche Schlitze, die während des Leseprozesses verriegelt worden sind, entriegelt werden. Nachfolgend dem Schritt 886 folgt ein Schritt 888, bei dem die Arbeitsschlitze, die während des Leseprozesses zugeordnet wurden, in ihrer Zuordnung aufgehoben werden. Nachfolgend dem Schritt 888 wird die Verarbeitung vervollständigt.
  • Bei einigen Ausführungsformen ist es möglich, den Testschritt 874 zu übergehen und immer den Schritt 876 nach dem Schritt 864 auszuführen oder nachfolgend dem Testschritt 856 auszuführen, wenn keine Daten in irgendeinem oder beiden der N- und N-1-Datenpakete 814, 816 vorhanden sind. Dies ist in dem Flussdiagramm 850 durch den alternativen Pfad 892 von dem Schritt 864 zu dem Schritt 876 veranschaulicht.
  • Gemäß 19A veranschaulicht ein Flussdiagramm eine Ausführungsform zur Handhabung der Leseanfrage bei der R2-Vorrichtung 806, die durch die R1-Vorrichtung 804 vorgesehen wird. Die Verarbeitung beginnt bei einem ersten Schritt 902, bei welchem irgendwelche Daten in dem N-2-Datenpaket 822 (dem bereits zugestimmt worden ist) auf die Platteneinheit 824 umgeschrieben wird. Das heißt, wenn irgendwelche Daten in dem N-2-Datenpaket 822 vorhanden sind, die gelesen werden sollen, werden die Daten zu der Platteneinheit 824 bei dem Schritt 902 umgespeichert.
  • Nachfolgend dem Schritt 902 folgt ein Schritt 903, bei dem bestimmt wird, ob irgendwelche Daten in dem N-1-Datenpaket 818 vorhanden sind, die gelesen werden sollen. Wenn dies der Fall ist, verläuft die Steuerung von dem Schritt 903 zu einem Schritt 904, bei welchem ein Arbeitsschlitz an der R2-Vorrichtung 806 zugeordnet wird. Nachfolgend dem Schritt 904 folgt ein Schritt 906, bei dem Daten von der Platteneinheit 824 zu dem Arbeitsschlitz kopiert werden, der bei dem Schritt 904 zugeordnet wurde. Nachfolgend dem Schritt 906 folgt ein Schritt 908, bei dem die Daten in dem Arbeitsschlitz mit irgendwelchen entsprechenden Daten in dem N-1-Datenpaket 818 an der R2-Vorrichtung 806 gemischt werden.
  • Nachfolgend dem Schritt 908 folgt ein Schritt 912, bei dem das Mischergebnis der Daten bei dem Schritt 908 zu der R1-Vorrichtung 804 zurückgeleitet wird. Es sei jedoch darauf hingewiesen, dass der Schritt 912 auch erreicht werden kann, wenn bei dem Schritt 903 bestimmt wurde, dass keine Daten in dem N-1-Datenpaket 818 vorhanden sind, die gelesen werden sollen, in welchem Fall die Daten von der Speicherplatte bei dem Schritt 912 zurückgeleitet werden. Nachfolgend dem Schritt 912 folgt ein Schritt 914, bei dem die Zuordnung des Schlitzes, der bei dem Schritt 904 zugeordnet wurde (wenn der Schritt 904 ausgeführt worden ist), aufgehoben wird. Nachfolgend dem Schritt 914 ist die Verarbeitung vervollständigt.
  • Gemäß 19B veranschaulicht ein Flussdiagramm 920 eine alternative Ausführungsform zur Handhabung der Leseanfrage bei der R2-Vorrichtung 806. Die Verarbeitung beginnt bei einem ersten Schritt 921, bei welchem bestimmt wird, ob irgendwelche Daten in einer oder in beiden der N-1- und N-2-Datenpakete 818, 822 vorhanden sind, die gelesen werden sollen. Wenn dies der Fall ist, verläuft die Steuerung von dem Schritt 921 zu einem Schritt 922, bei dem ein Arbeitsschlitz zugeordnet wird. Nachfolgend dem Schritt 922 folgt ein Schritt 924, bei dem Daten von der Platteneinheit 824 zu dem Arbeitsschlitz kopiert werden, der bei dem Schritt 922 zugeordnet wurde, auf den Schritt 924 folgt ein Schritt 926, bei dem die Daten aus dem N-2-Datenpaket 822 mit Daten in dem Arbeitsschlitz gemischt werden. Nachfolgend dem Schritt 926 folgt ein Schritt 928, bei dem Daten aus dem N-1-Datenpaket 818 an der R2-Vorrichtung 806 mit Daten in dem Arbeitsschlitz gemischt werden.
  • Nachfolgend dem Schritt 928 folgt ein Schritt 932, bei dem das Ergebnis von all den Mischvorgängen in dem Arbeitsschlitz von der R2-Vorrichtung 806 zu der R1-Vorrichtung 804 zurückgeleitet wird. Es sei jedoch erwähnt, dass der Schritt 932 auch dann erreicht werden kann, wenn bei dem Schritt 921 bestimmt wurde, dass keine Daten, die gelesen werden sollen, in einem oder in beiden der N-1- und N-2-Datenpakete 818, 822 vorhanden sind, in welchem Fall die Daten von der Platte bei dem Schritt 932 zurückgeleitet werden. Auf den Schritt 932 folgt ein Schritt 934, bei welchem der Arbeitsschlitz, der bei dem Schritt 922 zugeordnet wurde (wenn der Schritt 922 ausgeführt wurde), in seiner Zuordnung aufgehoben wird. Nachfolgend dem Schritt 934 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Verfahren nach Anspruch 1, bei dem die Datenschreibeinträge Cacheschlitzen der primären Speichervorrichtung zugeführt werden.
  8. 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.
  9. 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.
  10. 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.
  11. Verfahren nach Anspruch 10, bei dem das Cachestempelfeld auch ein Passwortfeld enthält, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird.
  12. Verfahren nach Anspruch 11, bei dem im Ansprechen auf einen nicht mehr länger verwendeten Schlitz das Passwortfeld gelöscht wird.
  13. 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.
  14. 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.
  15. Verfahren nach Anspruch 14, bei dem ferner die Nachricht bestätigt wird.
  16. 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.
  17. 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.
  18. Verfahren nach Anspruch 1, bei dem der Empfangsvorgang einer Vielzahl von Datenschreibeinträgen das Empfangen einer Vielzahl von Datenschreibeinträgen von einem Host umfasst.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. Computersoftware nach Anspruch 20, ferner mit: einem ausführbaren Kode, der Datenschreibeinträge zu Cacheschlitzen liefert.
  25. 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.
  26. 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.
  27. 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.
  28. Computersoftware nach Anspruch 27, bei dem das Cachestempelfeld auch ein Passwortfeld enthält, welches geschrieben wird, wenn der Schlitz zum ersten Mal verwendet wird.
  29. 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.
  30. 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.
  31. 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.
  32. 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.
  33. Computersoftware nach Anspruch 32, ferner mit: einem ausführbaren Kode, der die Nachricht bestätigt.
  34. 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.
  35. 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.
  36. 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.
DE112004000486T 2003-03-25 2004-02-06 Virtuell geordnete Schreibvorgänge Ceased DE112004000486T5 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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