-
HINTERGRUND
DER ERFINDUNG
-
Technisches
Gebiet
-
Die
vorliegende Anmeldung betrifft Computerspeichervorrichtungen und
spezieller das Gebiet der Übertragung
von Daten zwischen Speichervorrichtungen.
-
Postprozessorsysteme
können
Daten speichern und wieder auffinden, und zwar unter Verwendung
einer Speichervorrichtung, die eine Vielzahl an Host-Interfaceeinheiten
(Hostadaptern), Plattenlaufwerken und Platten-Interfaceeinheiten
(Plattenadapter) enthält.
Solche Speichervorrichtungen werden beispielsweise durch die EMC
Corporation of Hopkinton, Mass. geliefert und sind in dem US-Patent
Nr. 5,206,939 von Ynai 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 die Speichervorrichtung über eine
Vielzahl von Kanälen
zu, die bei diesen vorgesehen sind. Die Hostsysteme liefern Daten
und Zugriffssteuerinformationen über
die Kanäle
zu der Speichervorrichtung und die Speichervorrichtung liefert Daten
zu den Hostsystemen ebenso über
die Kanäle.
Die Hostsysteme adressieren die Plattenlaufwerke der Speichervorrichtung
nicht direkt, sondern vielmehr greifen sie darauf zu, was bei den
Hostsystemen in Form einer Vielzahl von logischen Platteneinheiten
erscheint. Die logischen Platteneinheiten können oder können auch nicht den tatsächlichen
Plattenlaufwerken entsprechen. Damit viele Hostsysteme auf eine
einzelne Speichervorrichtungseinheit zugreifen können, erhalten die Hostsysteme
die Möglichkeit,
die darin gespeicherten Daten gemeinsam zu verwenden.
-
In
einigen Fällen
kann es wünschenswert sein,
Daten von einer Speichervorrichtung zu einer anderen zu kopieren.
Wenn beispielsweise ein Host Daten in eine erste 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, bei welchem die erste Speichervorrichtung
nicht mehr betriebsfähig ist,
der Host (oder auch ein anderer Host) den Betrieb wieder aufnehmen
kann, und zwar unter Verwendung der Daten der zweiten Speichervorrichtung. Solch
eine Fähigkeit
wird beispielsweise durch das Remote-Data-Facility-(RDF)-Produkt geliefert,
welches von der EMC Corporation of Hopkinton, Massachusetts, geliefert
wird. Bei dem RDF ist eine erste Speichervorrichtung, die als "primäre Speichervorrichtung" (oder "R1") bezeichnet wird,
an den Host gekoppelt. Eine oder mehrere andere Speichervorrichtungen,
die als "sekundäre Speichervorrichtungen" (oder "R2") bezeichnet werden,
empfangen Kopien der Daten, die in die primäre Speichervorrichtung durch
den Host geschrieben werden. Der Host interagiert direkt mit der
primären
Speichervorrichtung, jedoch werden irgendwelche Datenänderungen bei
der primären
Speichervorrichtung automatisch auch an eine oder mehrere sekundäre Speichervorrichtungen
unter Verwendung des RDF-Produktes geliefert. Die primäre und die
sekundäre
Speichervorrichtung können
an ein Datenverbindungsglied angeschlossen sein, wie beispielsweise
einem ESCON-Glied, einem Faserkanalglied und/oder einem Gigabit-Ethernet-Glied.
Die Funktionalität
des RDF-Produktes
kann mit einem RDF-Adapter (RA) vereinfacht werden, der an jeder
der Speichervorrichtungen vorgesehen ist.
-
Das
RDF-Produkt ermöglicht
einen synchronen Datentransfer, und zwar dort, wo nach dem Einschreiben
der Daten von einem Host in eine primäre Speichervorrichtung eine Übertragung
von der primären
Speichervorrichtung zu einer sekundären Speichervorrichtung unter
Verwendung des RDF-Produktes erfolgt, wobei der Empfang durch die sekundäre Speichervorrichtung
bestätigt
wird, und zwar für
die primäre Speichervorrichtung,
die dann eine Schreibbestätigungsrückmeldung
zu dem Host liefert. Somit empfängt
der Host in dem Synchronmodus keine Schreibbestätigung von der primären Speichervorrichtung,
bis das RDF-Produkt eine Übertragung
zu der zweiten Speichervorrichtung vervollständigt hat und durch die zweite
Speichervorrichtung bestätigt
wird.
-
Ein
Nachteil bei dem synchronen RDF-System besteht darin, dass die Latenz
von jeder der Schreiboperationen dadurch erhöht wird, indem auf die Bestätigung der
RDF-Übertragung
gewartet werden muss. Dieses Problem vergrößert sich, wenn eine lange
Strecke zwischen der primären
Speichervorrichtung und der sekundären Speichervorrichtung vorhanden
ist; auf Grund der Übertragungsverzögerungen
kann die zeitliche Verzögerung,
die für
den RDF-Transfer erforderlich ist und beim Warten auf eine Bestätigungsrückmeldung
nach der Vervollständigung
des Transfers erforderlich ist, akzeptabel sein.
-
Es
ist auch möglich,
das RDF-Produkt in einem halb synchronen Modus zu verwenden, in
welchem Fall die Daten von dem Host in die primäre Speichervorrichtung geschrieben
werden, die dann den Schreibvorgang bestätigt, und es beginnt dann zur
gleichen Zeit der Prozessor der Übertragung
der Daten zu der sekundären
Speichervorrichtung. Somit überwindet
dieses Schema für
einen einzelnen Datentransfer einige Nachteile, die bei Verwendung
des RDF-Produktes in dem Synchronmodus auftreten.
-
Jedoch
ermöglicht
der halb synchrone Transfermodus zum Zwecke der Datenintegrität nicht,
dass die primäre
Speichervorrichtung Daten zu der sekundären Speichervorrichtung überträgt, bis frühere Übertragung
durch die zweite Speichervorrichtung bestätigt worden ist. Somit werden
die Engpässe,
die bei Verwendung des RDF-Produktes
in dem Synchronmodus auftreten, einfach durch eine Iteration verzögert, da
die Übertragung
eines zweiten Betrages an Daten solange nicht erfolgen kann, bis der
Transfer der früheren
Daten durch die zweite Speichervorrichtung bestätigt worden ist.
-
Eine
andere Möglichkeit
besteht darin, den Host dafür
auszulegen, Daten in die primäre
Speichervorrichtung in einem Asynchronmodus zu schreiben und die
primäre
Speichervorrichtung zu veranlassen, Daten zu der zweiten Speichervorrichtung
im Hintergrund zu kopieren. Der Hintergrundkopiervorgang involviert
ein Durchlaufen durch jede der Spuren der primären Speichervorrichtung in
sequenzieller Form und, wenn bestimmt wird, dass ein bestimmter
Block modifiziert worden ist, und zwar seit dem letzten Mal, als
der Block kopiert wurde, wird der Block von der primären Speichervorrichtung
zu der sekundären
Speichervorrichtung übertragen.
Obwohl dieser Mechanismus das Latenzproblem lindern kann, welches
mit den synchronen und halbsynchronen Datentransfermodi auftritt,
existiert eine Schwierigkeit, da keine Garantie dafür gegeben
werden kann, dass eine Datenkonsistenz zwischen der primären und
der sekundären
Speichervorrichtung besteht. Wenn Probleme auftreten, wie beispielsweise ein
Ausfall des primären
Systems, kann das sekundäre
System nicht mehr arbeiten auf Grund von aus der Reihe fallenden Änderungen,
welche die Daten unverwendbar machen.
-
Eine
vorgeschlagene Lösung
für dieses
Problem bildet der Symmetrix-Automated-Replication-(SAR)-Prozess,
der in den schwebenden US-Patentanmeldungen 10/224,918 und 10/225,021
beschrieben ist, die beide am 21. August 2002 angemeldet wurden.
Der SAR-Prozess verwendet Vorrichtungen (BCVs), welche standardisierte
logische Vorrichtungen spiegeln können. Eine BCV-Vorrichtung
kann auch von ihrer standardisierten logischen Vorrichtung abgespalten
werden, nachdem sie gespiegelt wurde, und kann wieder vereint werden
(das heißt
als ein Spiegel wieder hergestellt werden), und zwar für die standardisierten
logischen Vorrichtungen nach dem Spaltvorgang. Darüber hinaus
kann eine BCV auch ferngespiegelt werden, und zwar unter Verwendung
des RDF-Prinzips, in welchem Fall die BCV Datenänderungen, die bei dieser vorgenommen wurden,
verbreiten kann (während
die BCV als ein Spiegel arbeitet), und zwar zu dem BCV-Fernspiegel, wenn
die BCV von der entsprechenden logischen Standardvorrichtung abgespalten
wurde.
-
Jedoch
erfordert die Anwendung des SAR-Prozesses einen signifikanten Überschuss
an kontinuierlich abgespaltenen und wieder vereinten BCVs. Der SAR-Prozess
verwendet auch ein Host-Steuer- und Managementverfahren, welches auf
der Steuerung des Hosts bzw. des Betriebes desselben basiert. Zusätzlich liegt
die Zykluszeit für
eine praktische Implementierung eines SAR-Prozesses in der Größenordnung
von 20 bis 30 Minuten und es kann der Betrag an Daten, der verloren
geht, wenn ein RDF-Verbindungsglied
und/oder primäre
Vorrichtung ausfällt,
zwischen 20 bis 30 Minuten an Daten betragen.
-
Es
ist daher wünschenswert,
ein RDF-System zur Verfügung
zu haben, welches einige vorteilhafte Qualitäten von jeder der unterschiedlichen Techniken
beinhaltet, die oben erläutert
wurden, und zwar unter gleichzeitiger Reduzierung der Nachteile derselben.
Solch ein System würde
eine niedrige Latenz für
jeden Host-Schreibvorgang bieten, und zwar ungeachtet der Entfernung
zwischen der primären Vorrichtung
und der sekundären
Vorrichtung, und würde
auch eine Konsistenz (Wiederherstellbarkeit) der sekundären Vorrichtung
im Falle eines Ausfalles bieten.
-
Es
wäre auch
wünschenswert,
dazu befähigt zu
sein, die Vorteile zu kombinieren, die aus den synchronen RDF-Übertragungen
und den asynchronen RDF-Übertragungen
resultieren, so dass auf dem neuesten Stand liegende Sicherungsdaten
an einer J0-Fernvorrichtung vorgesehen werden können, die relativ dicht (geografisch)
bei einer Quellenvorrichtung gelegen ist, während zur gleichen Zeit Sicherungsdaten
auch für
eine Sicherungsvorrichtung geliefert werden können, die relativ weit von
der Quellenvorrichtung entfernt liegt. Es wäre auch wünschenswert, wenn solch ein
System für
eine angemessene Datenwiederauffindung oder -wiederherstellung unter
den Sicherungsvorrichtungen vorgesehen werden könnte.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß der vorliegenden
Erfindung umfasst Speichern von Wiederherstelldaten das Vorsehen von
Paketen an Daten für
einen entfernt gelegenen Bestimmungsort, wobei jedes Paket der Daten
die Daten repräsentiert,
die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt
geschrieben werden und wobei der zweite Zeitpunkt für eines
von bestimmten Paketen einem ersten Zeitpunkt für einen nachfolgenden einen
bestimmter Pakete entspricht, Liefern von synchronen Daten entsprechend
den Paketen an Daten zu einem Minimal-Speicherstelle-Bestimmungsort,
wobei der Minimal-Speicherstelle-Bestimmungsort Daten enthält, die
nicht an dem fern gelegenen Bestimmungsort gespeichert sind, und wobei
der fern gelegene Bestimmungsort Daten enthält, die nicht an dem Minimal-Speicherstelle-Bestimmungsort
gespeichert sind, und Liefern eines Indikators, wenn ein neues Paket
an Daten geliefert wird. Die Daten, die an dem entfernt gelegenen
Bestimmungsort enthalten sind, jedoch nicht in dem Minimal-Speicherstelle-Bestimmungsort,
können älter sein
als die Daten, die an dem Minimal-Speicherstelle-Bestimmungsort
enthalten sind, nicht jedoch an dem entfernt gelegenen Bestimmungsort.
Die synchronen Daten, die durch den Minimal-Speicherstelle-Bestimmungsort empfangen
werden, können
in einer verketteten Liste von Elementen gespeichert werden. Die
Elemente können
entsprechend einer Quellenspeichervorrichtungsörtlichkeit der Daten sortiert
sein. Die Elemente können
auch entsprechend einer Reihenfolge des Empfangs der Daten an dem
Minimal-Speicherstelle-Bestimmungsort sortiert sein. Jedes der Elemente
kann einen Identifizierer für ein
bestimmtes eines der Pakete an Daten enthalten, entsprechend den
Synchrondaten von jedem der Elemente. Das Speichern der Wiederherstelldaten kann
auch das Liefern einer örtlichen
Zykluszahl an dem Minimal-Speicherstelle-Fern-Bestimmungsort enthalten
und kann im Ansprechen auf den Empfang des Indikators eine Inkrementierung
des örtlichen
Indikators herbeiführen,
dass ein neues Paket an Daten geliefert wird. Die Synchrondaten,
die von dem Minimal-Speicherstelle-Bestimmungsort empfangen werden,
können
in einer verketteten Liste an Elementen gespeichert werden. Jedes
der Elemente kann einen Identifizierer für ein bestimmtes eines der
Pakete an Daten enthalten, entsprechend den Synchrondaten von jedem
der Elemente, und der Identifizierer kann der örtlichen Zykluszahl entsprechen.
-
Ferner
enthält
gemäß der vorliegenden
Erfindung eine Computersoftware, die auf einem von einem Computer
lesbaren Medium vorgesehen ist, welches wiederher stellbare Daten
speichert, einen ausführbaren
Kode, der Pakete (chunks) an Daten zu einem entfernt gelegenen Bestimmungsort
liefert, wobei jedes Paket der Daten Daten repräsentiert, die vor einem ersten
Zeitpunkt geschrieben wurden und nach einem zweiten Zeitpunkt geschrieben
wurden, und wobei der zweite Zeitpunkt für eines der bestimmten Pakete
einem ersten Zeitpunkt für
ein nachfolgendes eines von bestimmten Paketen entspricht, wobei
der ausführbare
Kode Synchrondaten entsprechend den Paketen der Daten zu einem Minimal-Speicherstelle-Bestimmungsort
liefert, wobei der Minimal-Speicherstelle-Bestimmungsort Daten enthält, die
nicht an dem entfernt gelegenen Bestimmungsort gespeichert sind
und wobei der entfernt gelegene Bestimmungsort Daten enthält, die
nicht an dem Minimal-Speicherstelle-Bestimmungsort gespeichert sind
und wobei der ausführbare
Kode einen Indikator liefert, wenn ein neues Paket an Daten geliefert
wird. Die Daten, die in dem fern gelegenen Bestimmungsort enthalten
sind, nicht jedoch in dem Minimal-Speicherstelle-Bestimmungsort,
können älter sein
als die Daten, die an dem Minimal-Speicherstelle-Bestimmungsort
enthalten sind, jedoch nicht an dem entfernt gelegenen Bestimmungsort
enthalten sind. Die Synchrondaten, die durch den Minimal-Speicherstelle-Bestimmungsort
empfangen werden, können
in einer verketteten Liste von Elementen gespeichert werden. Die
Elemente können
entsprechend einer Quellenspeichervorrichtungsörtlichkeit der Daten sortiert
sein. Die Elemente können
entsprechend einer Reihenfolge des Empfangs der Daten an dem Minimal-Speicherstelle-Bestimmungsort sortiert
sein. Jedes der Elemente kann einen Identifizierer für ein bestimmtes
eines der Pakete an Daten enthalten, entsprechend den Synchrondaten
für jedes
der Elemente. Die Computersoftware kann auch einen ausführbaren
Kode enthalten, der eine örtliche Zykluszahl
an den Minimal-Speicherstelle-Bestimmungsort liefert, und einen
ausführbaren
Kode, der den örtlichen
Indikator im Ansprechen auf den Empfang des Indikators inkrementiert,
dass ein neues Paket an Daten geliefert wird. Die Synchrondaten,
die durch den Minimal-Speicherstelle-Bestimmungsort empfangen werden,
können
in einer verketteten Liste an Elementen gespeichert werden. Jedes
der Elemente kann einen Identifizierer für ein bestimmtes eines der
Pakete an Daten enthalten, entsprechend den Synchrondaten von jedem
der Elemente, wobei der Identifizierer der örtlichen Zykluszahl entspricht.
-
Ferner
enthält
gemäß der vorliegenden
Erfindung ein System zum Speichern von Wiederherstelldaten eine
Quellengruppe, einen entfernt gelegenen Bestimmungsort, der an die
Quellengruppe gekoppelt ist, um von dieser Pakete an Daten zu empfangen,
wobei jedes Datenpaket Daten wiedergibt, die geschrieben wurden,
und zwar vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt,
und wobei der zweite Zeitpunkt für
eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes
eines an bestimmten Paketen entspricht, und wobei ein Minimal-Speicherstelle-Bestimmungsort an
die Quellengruppe gekoppelt ist, um von dieser Synchrondaten zu
empfangen, wobei der Minimal-Speicherstelle-Bestimmungsort Daten
enthält,
die nicht in dem entfernt gelegenen Bestimmungsort gespeichert sind und
wobei der entfernt gelegene Bestimmungsort Daten enthält, die
nicht in dem Minimal-Speicherstelle-Bestimmungsort gespeichert sind
und wobei die Quellengruppe einen Indikator liefert, wenn ein neues
Paket an Daten geliefert wird. Die Daten, die an dem entfernt gelegenen
Bestimmungsort enthalten sind, nicht jedoch an dem Minimal-Speicherstelle-Bestimmungsort,
können älter sein
als die Daten, die in dem Minimal-Speicherstelle-Bestimmungsort
enthalten sind, nicht jedoch an dem entfernt gelegenen Bestimmungsort
enthalten sind.
-
Ferner
umfasst gemäß der vorliegenden
Erfindung das Speichern von Wiederherstelldaten das Liefern von
Paketen an Daten zu einem entfernt gelegenen Bestimmungsort, wobei
jedes Paket an Daten Daten wiedergibt, die vor einem ersten Zeitpunkt und
nach einem zweiten Zeitpunkt geschrieben wurden, und wobei der zweite
Zeitpunkt für
eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes
eines der bestimmten Pakete entspricht, ferner das Liefern von Synchrondaten
zu einem örtlichen
Bestimmungsort und das Liefern eines Indikators zu dem örtlichen
Bestimmungsort in Verbindung mit der Erzeugung eines neuen Paketes
an Daten zum Speichern an dem entfernt gelegenen Bestimmungsort
umfasst. Der örtliche
Bestimmungsort kann eine Vielzahl an Plänen oder Listen enthalten,
wobei jeder der Pläne
Synchrondaten zugeordnet ist, die für diese vorgesehen werden,
und zwar mit einem spezifischen Datenpaket. Im Ansprechen auf den
Empfang eines Indikators in Verbin dung mit der Erzeugung eines neuen
Paketes an Daten, kann der örtliche
Bestimmungsort auf einen neuen Plan (map) zeigen. Es können zwei
Pläne oder
mehr als zwei Pläne vorgesehen
sein. Im Ansprechen darauf, wenn der örtliche Bestimmungsort darin
fehlschlägt,
Bestätigungssynchrondaten
zu liefern, kann der entfernt gelegene Bestimmungsort einen Plan
der Daten aufbewahren oder halten, die an diesem eingeschrieben wurden.
Das Speichern der Wiederherstelldaten kann im Ansprechen auf das
Ausfallen des örtlichen Bestimmungsortes
Bestätigungssynchrondaten
zu liefern, einen Schritt umfassen entsprechend einer Beibehaltung
eines Zählwertes
einer Zahl von Malen, mit denen ein neues Paket an Daten erzeugt
wurde, an dem entfernt gelegenen Bestimmungsort.
-
Ferner
enthält
gemäß der vorliegenden
Erfindung die Wiedergewinnung der Daten, die an einem örtlichen
Bestimmungsort und einem entfernt gelegenen Bestimmungsort gespeichert
sind, das Bestimmen, welcher der Orte gemäß dem örtlichen Bestimmungsort und
dem entfernt gelegenen Bestimmungsort die neuesten Daten enthält, das
Kopieren der Daten von dem entfernt gelegenen Bestimmungsort zu
dem örtlichen
Bestimmungsort, wenn der entfernt gelegene Bestimmungsort die neuesten Daten
enthält,
und das Kopieren der Daten von dem örtlichen Bestimmungsort zu
dem entfernt gelegenen Bestimmungsort, wenn der örtliche Bestimmungsort die
neuesten Daten enthält.
Das Bestimmen, welcher der Bestimmungsorte entsprechend dem örtlichen Bestimmungsort
und dem entfernt gelegenen Bestimmungsort die neuesten Daten enthält, kann
das Überprüfen eines
Tokens umfassen, der durch den entfernt gelegenen Bestimmungsort
geliefert wird und der einen Betrag oder eine Menge an neuen Daten
anzeigt, die an dem entfernt gelegenen Bestimmungsort gespeichert
sind und die nicht an dem örtlichen
Bestimmungsort gespeichert sind. Der Token kann eine Anzahl von
neuen Paketen an Daten anzeigen, die zu der entfernt gelegenen Speichervolumen
geliefert wurden, und zwar nachfolgend dem Ausfall der örtlichen
Speichervorrichtung, um die Daten zu bestätigen, die dorthin geliefert
wurden, wobei jedes Paket der Daten Daten repräsentiert, die vor einem ersten
Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden und
wobei der zweite Zeitpunkt für
eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes
eines der bestimm ten Pakete entspricht. Das Kopieren der Daten von dem
entfernt gelegenen Bestimmungsort zu dem örtlichen Bestimmungsort kann
das Kopieren der Daten enthalten, die durch einen Plan angezeigt
werden, entsprechend den Daten, die zu dem entfernt gelegenen Bestimmungsort
geschrieben wurden und die nicht als in den örtlichen Bestimmungsort eingeschrieben
bestätigt
werden. Das Kopieren der Daten von dem örtlichen Bestimmungsort zu
dem entfernt gelegenen Bestimmungsort kann das Kopieren von Daten
enthalten, die durch eine Vielzahl an Plänen (maps) angezeigt werden,
entsprechend den Daten, die zu dem örtlichen Bestimmungsort geschrieben wurden
und die nicht als zu dem entfernt gelegenen Bestimmungsort geschrieben
bestätigt
wurden. Es können
zwei oder mehr als zwei Pläne
vorhanden sein.
-
Ferner
enthält
die Software gemäß der vorliegenden
Erfindung, welche Wiederherstelldaten speichert, einen ausführbaren
Kode, der Pakete an Daten zu einem entfernt gelegenen Bestimmungsort liefert,
wobei jedes Datenpaket Daten repräsentiert, die vor einem ersten
Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und
wobei der zweite Zeitpunkt für
eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes
eines der bestimmten Pakete entspricht und wobei die Software einen
ausführbaren
Kode aufweist, der Synchrondaten zu einem örtlichen Bestimmungsort liefert
und einen ausführbaren
Kode, der einen Indikator zu dem örtlichen Bestimmungsort liefert,
und zwar in Verbindung mit der Erzeugung eines neuen Paketes an
Daten zum Speichern an dem entfernt gelegenen Bestimmungsort. Der örtliche
Bestimmungsort kann einen ausführbaren
Kode enthalten, der eine Vielzahl von Plänen umfasst, wobei jeder der
Pläne Synchrondaten,
die zu diesem geliefert werden, einem spezifischen Paket an Daten
zuordnet. Im Ansprechen auf den Empfang eines Indikators in Verbindung mit
der Erzeugung eines neuen Paketes an Daten kann der örtliche
Bestimmungsort auf einen neuen Plan (map) zeigen. Es können zwei
Pläne oder
mehr als zwei Pläne
vorhanden sein. Die Software kann auch einen ausführbaren
Kode an dem entfernt gelegenen Bestimmungsort aufweisen, der im
Ansprechen auf den Ausfall eines örtlichen Bestimmungsortes zur
Bestätigung
des Empfangs der Synchrondaten, einen Plan an Daten hält, die
für diesen
vorgesehen wurden. Die Software kann auch einen ausführbaren
Kode an dem entfernt gelegenen Bestim mungsort aufweisen, der im
Ansprechen auf das Ausfallen des örtlichen Bestimmungsortes,
die diesem angebotenen Synchrondaten zu bestätigen, einen Zählwert einer
Anzahl von Malen hält,
mit denen neue Pakete an Daten erzeugt wurden.
-
Ferner
kann die Software gemäß der vorliegenden
Erfindung, welche die Daten wieder herstellt, die an einem örtlichen
Bestimmungsort gespeichert sind und die an einem entfernt gelegenen
Bestimmungsort gespeichert sind, einen ausführbaren Kode enthalten, der
bestimmt, welcher der Bestimmungsorte gemäß dem örtlichen Bestimmungsort und
dem entfernt gelegenen Bestimmungsort die neuesten Daten enthält, und
kann einen ausführbaren
Kode enthalten, der Daten von dem entfernt gelegenen Bestimmungsort
zu dem örtlichen
Bestimmungsort kopiert, wenn der entfernt gelegene Bestimmungsort die
neuesten Daten enthält,
und einen ausführbaren Kode,
der Daten von dem örtlichen
Bestimmungsort zu dem entfernt gelegenen Bestimmungsort kopiert, wenn
der örtliche
Bestimmungsort die neuesten Daten enthält. Der ausführbare Kode,
der bestimmt, welcher der Bestimmungsorte gemäß dem örtlichen Bestimmungsort und
dem entfernt gelegenen Bestimmungsort die neuesten Daten enthält, kann
einen ausführbaren
Kode enthalten, der einen Token prüft, welcher durch den entfernt
gelegenen Bestimmungsort geliefert wird, der einen Betrag an neuen Daten
anzeigt, welcher in dem entfernt gelegenen Bestimmungsort gespeichert
ist und der nicht an dem örtlichen
Bestimmungsort gespeichert ist. Der Token kann eine Anzahl von neuen
Paketen an Daten angeben, die der entfernt gelegenen Speichervorrichtung angeboten
werden, und zwar nachfolgend einem Fehler oder Ausfall der örtlichen
Speichervorrichtung, um Daten zu bestätigen, die zu diesem geliefert wurden,
wobei jedes Paket an Daten Daten enthält, die vor einem ersten Zeitpunkt
und nach einem zweiten Zeitpunkt geschrieben wurden und wobei der zweite
Zeitpunkt für
eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes
eines der bestimmten Pakete entspricht. Der ausführbare Kode, der Daten von
dem entfernt gelegenen Bestimmungsort zu dem örtlichen Bestimmungsort kopiert, kann
einen ausführbaren
Kode enthalten, mit dessen Hilfe Daten, die durch einen Plan angezeigt
werden, entsprechend den Daten, die zu dem entfernt gelegenen Bestimmungsort
geschrieben wurden und die nicht als geschrieben bestätigt wurden,
zu dem örtlichen Bestimmungsort
kopiert. Der ausführbare Kode,
der Daten von dem örtlichen
Bestimmungsort zu dem entfernt gelegenen Bestimmungsort kopiert, kann
einen ausführbaren
Kode umfassen, der Daten, die durch eine Vielzahl von Plänen oder
Listen angegeben werden, entsprechend Daten, die zu dem örtlichen
Bestimmungsort geschrieben wurden, welche nicht als geschrieben
bestätigt
wurden, zu dem entfernt gelegenen Bestimmungsort kopiert. Es können zwei
Pläne oder
Listen oder mehr als zwei Pläne
oder Listen vorhanden sein.
-
Ferner
enthält
ein System nach der vorliegenden Erfindung, welches zum Speichern
von Wiederherstelldaten dient, eine Quellengruppe, einen entfernt
gelegenen Bestimmungsort, der an die Quellengruppe gekoppelt ist,
um von dieser Pakete an Daten zu empfangen, wobei jedes Paket der
Daten Daten repräsentiert,
die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt
geschrieben wurden und wobei der zweite Zeitpunkt für eines
der bestimmten Pakete einen ersten Zeitpunkt für ein nachfolgendes eines der
bestimmten Pakete entspricht, und wobei ein örtlicher Bestimmungsort an
die Quellengruppe gekoppelt ist, um von dieser Synchrondaten zu
empfangen, wobei die Quellengruppe einen Indikator zu dem örtlichen
Bestimmungsort in Verbindung mit der Erzeugung eines neuen Paketes
an Daten zur Speicherung an dem entfernt gelegenen Bestimmungsort
liefert.
-
Ein
System gemäß der vorliegenden
Erfindung zum Wiederherstellen von Daten enthält eine Quellengruppe, die
Daten generiert, einen örtlichen Bestimmungsort,
der an die Quellengruppe gekoppelt ist, um von diesem Synchrondaten
zu empfangen, einen entfernten Bestimmungsort, der an die Quellengruppe
gekoppelt ist, um von dieser Asynchrondaten zu empfangen, Mittel
zum Bestimmen, welcher der Orte gemäß dem örtlichen Bestimmungsort und
dem entfernt gelegenen Bestimmungsort die neuesten Daten enthält, Mittel
zum Kopieren der Daten von dem entfernt gelegenen Bestimmungsort
zu dem örtlichen
Bestimmungsort, wenn der entfernt gelegene Bestimmungsort die neuesten
Daten enthält,
und Mittel zum Kopieren der Daten von dem örtlichen Bestimmungsort zu
dem entfernt gelegenen Bestimmungsort, wenn der örtliche Bestimmungsort die
neuesten Daten enthält.
-
Ferner
umfasst das Speichern der Wiedergewinnungsdaten nach der vorliegenden
Erfindung den Schritt, wonach ein Hostprozessor Daten zu einer örtlichen
Speichervorrichtung schreibt, der Hostprozessor die örtliche
Speichervorrichtung veranlasst, Pakete von Daten entsprechend den
Einschreibvorgängen
des Hostprozessors zu sammeln, wobei jedes Paket an Daten Daten
repräsentiert,
die vor einem ersten Zeitpunkt und nach einem zweiten Zeitpunkt
geschrieben wurden und wobei der zweite Zeitpunkt für eines
der bestimmten Pakete an Daten einem ersten Zeitpunkt für ein nachfolgendes
eines der bestimmten Pakete an Daten entspricht, umfasst ferner
die Übertragung
von Paketen an Daten von der örtlichen
Speichervorrichtung zu einem entfernt gelegenen Bestimmungsort,
Liefern von Synchrondaten von der örtlichen Speichervorrichtung
zu einem örtlichen
Bestimmungsort; und wobei der Hostprozessor einen Indikator veranlasst,
zu dem örtlichen
Bestimmungsort übertragen
zu werden, und zwar in Verbindung mit der Erzeugung eines neuen Paketes
an Daten zur Speicherung an dem entfernt gelegenen Bestimmungsort.
Der örtliche
Bestimmungsort kann eine Vielzahl an Plänen oder Listen enthalten,
wobei jeder der Pläne
oder Listen Synchrondaten zugeordnet ist, der für diese vorgesehen wurde, und
zwar mit einem spezifischen Datenpaket. Im Ansprechen auf den Empfang
eines Indikators in Verbindung mit der Erzeugung eines neuen Datenpakets
kann der örtliche
Bestimmungsort auf einen neuen Plan oder Liste zeigen. Es können zwei
Pläne oder
Listen oder mehr als zwei Pläne
oder Listen vorgesehen sein. Im Ansprechen auf ein Ausfallen eines örtlichen
Bestimmungsortes in Verbindung mit der Bestätigung der Synchrondaten, die
zu diesem geliefert wurden, kann der entfernt gelegene Bestimmungsort
einen Plan oder Listen an Daten enthalten, die in diesen geschrieben
wurden. Das Speichern von Wiederherstelldaten kann im Ansprechen
auf ein Ausfallen des örtlichen
Bestimmungsortes die zu diesem gelieferten Synchrondaten zu bestätigen, den Schritt
umfassen, dass der entfernt gelegene Bestimmungsort einen Zählwert einer
Anzahl von Malen hält,
gemäß welchen
ein neues Paket an Daten erzeugt wurde. Der Hostprozessor kann Daten
zu mehr als nur einer örtlichen
Speichervorrichtung übertragen
bzw. in diese einschreiben, welche Daten synchron zu mehr als einem örtlichen
Bestimmungsort übertragen.
-
Das
Wiedergewinnen von Daten, die an einem örtlichen Bestimmungsort und
an einem entfernt gelegenen Bestimmungsort gespeichert sind, kann erfindungsgemäß einen
Host veranlassen, örtlich
auf einen der folgenden Bestimmungsorte zuzugreifen: den örtlichen
Bestimmungsort und den entfernt gelegenen Bestimmungsort, wobei
der Host bestimmt, welcher der Bestimmungsorte gemäß dem örtlichen Bestimmungsort
und dem entfernt gelegenen Bestimmungsort die neuesten Daten enthält, der
Host ferner veranlasst, dass Daten von dem entfernt gelegenen Bestimmungsort
zu dem örtlichen
Bestimmungsort kopiert werden, wenn der entfernt gelegene Bestimmungsort
die neuesten Daten enthält,
und der Host bewirkt, dass Daten von dem örtlichen Bestimmungsort zu
dem entfernt gelegenen Bestimmungsort kopiert werden, wenn der örtliche
Bestimmungsort die neuesten Daten enthält. Der Host, welcher bestimmt,
welcher der Bestimmungsorte gemäß dem örtlichen
Bestimmungsort und dem entfernt gelegenen Bestimmungsort die neuesten
Daten enthält, kann
eine Hostprüfung
eines Tokens realisieren, der durch den entfernt gelegenen Bestimmungsort
geliefert wird, der einen Betrag an neuen Daten anzeigt, welche
an dem entfernt gelegenen Bestimmungsort gespeichert werden, die
nicht an dem örtlichen
Bestimmungsort gespeichert sind. Der Token kann eine Anzahl von
neuen Paketen an Daten anzeigen, die zu der entfernt gelegenen Speichervorrichtung
geliefert werden, und zwar nachfolgend einem Fehler oder Ausfall
der örtlichen
Speichervorrichtung hinsichtlich einer Bestätigung der dorthin gelieferten
Daten, wobei jedes Paket der Daten Daten repräsentiert, die vor einem ersten
Zeitpunkt und nach einem zweiten Zeitpunkt geschrieben wurden, und
wobei der zweite Zeitpunkt für
eines der bestimmten Pakete einem ersten Zeitpunkt für ein nachfolgendes
eines der bestimmten Pakete entspricht. Der Host, der Daten von dem
entfernt gelegenen Bestimmungsort zu dem örtlichen Bestimmungsort kopiert,
kann auch einen Host umfassen, der Daten kopiert, die durch einen
Plan oder Liste angezeigt werden, entsprechend den Daten, die zu
dem entfernt gelegenen Bestimmungsort geschrieben wurden, welche
nicht als zu dem örtlichen
Bestimmungsort eingeschrieben bestätigt wurden, kopiert. Der Host,
welcher Daten von dem örtlichen
Bestimmungsort zu dem entfernt gelegenen Bestimmungsort kopiert,
kann einen Host umfassen, welcher Daten, die durch eine Vielzahl
von Plänen oder
Listen angezeigt werden, entsprechend Daten, die zu dem örtlichen
Bestimmungsort geschrieben wurden und nicht als zu dem entfernt
gelegenen Bestimmungsort geschrieben bestätigt wurden, kopieren. Die
Zahl der Pläne
oder Listen kann zwei betragen oder kann auch mehr als zwei sein.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein schematisches Diagramm, welches einen Host, eine örtliche
Speichervorrichtung und eine entfernt gelegene Datenspeichervorrichtung
zeigt, die in Verbindung mit dem hier beschriebenen System verwendet
werden;
-
2 zeigt
ein schematisches Diagramm, welches einen Fluss von Daten zwischen
einem Host, einer örtlichen
Speichervorrichtung und einer entfernt gelegenen Datenspeichervorrichtung
veranschaulicht, die in Verbindung mit dem hier beschriebenen System
verwendet werden;
-
3 ein
schematisches Diagramm, welches die Elemente zum Konstruieren und
Manipulieren von Datenpaketen an einer örtlichen Speichervorrichtung
gemäß dem hier
beschriebenen System veranschaulicht;
-
4 ein
Diagramm, welches eine Datenstruktur für einen Schlitz veranschaulicht,
die in Verbindung mit dem hier beschriebenen System verwendet wird;
-
5 ein
Flussdiagramm, welches den Betrieb eines Hostadapters (HA) im Ansprechen
auf einen Schreibvorgang durch einen Host entsprechend dem hier
beschriebenen System wiedergibt;
-
6 ein
Flussdiagramm, welches das Übertragen
von Daten von einer örtlichen
Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung
gemäß dem hier
beschriebenen System darstellt;
-
7 ein
schematisches Diagramm, welches die Elemente zum Konstruieren und
Manipulieren von Datenpaketen an einer entfernt gelegenen Speichervorrichtung
entsprechend dem hier beschriebenen System veranschaulicht;
-
8 ein
Flussdiagramm, welches die Schritte veranschaulicht, die durch ein
Fern-Speichervorrichtung durchgeführt werden, und zwar in Verbindung
mit dem Empfang eines Transaktionsindikators von einer örtlichen
Speichervorrichtung entsprechend dem hier beschriebenen System;
-
9 ein
Flussdiagramm, welches den Speichervorgang veranschaulicht, und
zwar von gesendeten Daten an einer entfernt gelegenen Speichervorrichtung
bei dem hier beschriebenen System;
-
10 ein Flussdiagramm, welches die Schritte veranschaulicht,
die in Verbindung mit einer örtlichen
Speichervorrichtung durchgeführt
werden, die gemäß einer
Sequenzzahl inkrementiert, entsprechend einem hier beschriebenen
System;
-
11 ein schematisches Diagramm, welches die Elemente
zum Konstruieren und Manipulieren von Datenpaketen an einer örtlichen
Speichervorrichtung veranschaulicht, entsprechend einer alternativen
Ausführungsform
des hier beschriebenen Systems;
-
12 ein Flussdiagramm, welches den Betrieb eines
Hostadapters (HA) im Ansprechen auf einen Schreibvorgang durch einen
Host entspre chend einer alternativen Ausführungsform des hier beschriebenen
Systems wiedergibt;
-
13 ein Flussdiagramm, welches das Übertragen
von Daten von einer örtlichen
Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung
gemäß einer
alternativen Ausführungsform des
hier beschriebenen Systems darstellt;
-
14 ein schematisches Diagramm, welches eine Vielzahl
an örtlichen
und entfernt gelegenen Speichervorrichtungen mit einem Host entsprechend
dem hier beschriebenen System zeigt;
-
15 ein Diagramm, welches eine Multiboxmodustabelle
darstellt, die in Verbindung mit dem hier beschriebenen System verwendet
wird;
-
16 ein Flussdiagramm, welches eine Abwandlung
einer Multiboxmodustabelle entsprechend dem hier beschriebenen System
veranschaulicht;
-
17 ein Flussdiagramm, welches einen Zyklusschaltvorgang
durch den Host entsprechend dem hier beschriebenen System veranschaulicht;
-
18 ein Flussdiagramm, welches die Schritte veranschaulicht,
die in Verbindung mit einer örtlichen
Speichervorrichtung ausgeführt
werden, welche eine sequenzielle Zahl inkrementiert entsprechend
einem hier beschriebenen System;
-
19 ein Flussdiagramm, welches das Übertragen
von Daten von einer örtlichen
Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung
gemäß dem hier
beschriebenen System wiedergibt;
-
20 ein Flussdiagramm, welches das Übertragen
von Daten von einer örtlichen
Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung
gemäß einer
alternativen Ausführungsform des
hier beschriebenen Systems zeigt;
-
21 ein Flussdiagramm, welches das Liefern einer
Aktiv-Leer-Indikatornachricht
von einer entfernt gelegenen Speichervorrichtung zu einer entsprechenden örtlichen
Speichervorrichtung entsprechend dem hier beschriebenen System veranschaulicht;
-
22 ein schematisches Diagramm, welches eine Vielzahl
an örtlichen
und entfernt gelegenen Speichervorrichtungen mit einer Vielzahl
an Hosts gemäß dem hier
beschriebenen System veranschaulicht;
-
23 ein Flussdiagramm, welches einen Prozess darstellt,
der durch eine entfernt gelegene Speichervorrichtung in Verbindung
mit einer Datenwiederherstellung oder -wiederauffindung entsprechend
dem hier beschriebenen System ausgeführt wird;
-
24 ein Flussdiagramm, welches eine Verarbeitung
veranschaulicht, die durch einen Host in Verbindung mit einer Datenwiederherstellung
entsprechend dem hier beschriebenen System durchgeführt wird;
-
25 ein schematisches Diagramm, welches eine Speichervorrichtung,
einen Speicher, eine Vielzahl an Direktoren (directors) und einen
Kommunikationsmodul entsprechend dem hier beschriebenen System darstellt;
-
26 ein schematisches Diagramm, welches eine Quellengruppe,
einen örtlichen
Bestimmungsort und einen entfernt gelegenen Bestimmungsort entsprechend
dem hier beschriebenen System wiedergibt;
-
27 ein Flussdiagramm, welches einen Prozess veranschaulicht,
der durch einen örtlichen Bestimmungsort
ausgeführt
wird, um Datenwiederherstellparameter entsprechend dem hier beschriebenen
System zu initialisieren;
-
28A ein Flussdiagramm, welches einen Prozess wiedergibt,
der durch einen örtlichen
Bestimmungsort in Verbindung mit dem Empfangen von Daten während eines
Nicht-Ausfall-Modus entsprechend dem hier beschriebenen System durchgeführt wird;
-
28B ein Flussdiagramm, welches einen alternativen
Prozess wiedergibt, der durch einen örtlichen Bestimmungsort ausgeführt werden
kann, und zwar in Verbindung mit dem Empfangen von Daten während eines
nicht-fehlerbehafteten Modus entsprechend dem hier beschriebenen
System;
-
28C ein Flussdiagramm, welches einen alternativen
Prozess veranschaulicht, der durch einen lokalen Bestimmungsort
ausgeführt
werden kann, und zwar in Verbindung mit dem Empfang von Daten während eines
nicht-fehlerbehafteten Betriebsmodus des hier beschriebenen Systems;
-
29 ein Flussdiagramm, welches einen Prozess veranschaulicht,
der durch einen lokalen Bestimmungsort ausgeführt wird, um Datenwiederherstellparameter
zu initialisieren, entsprechend dem hier beschriebenen System;
-
30 ein Flussdiagramm, welches einen Prozess veranschaulicht,
der durch einen entfernt gelegenen Bestimmungsort in Verbindung
mit dem Sammeln von Fehlerwiederherstelldaten entsprechend dem hier
beschriebenen System durchgeführt wird;
-
31 ein Flussdiagramm, welches einen Prozess veranschaulicht,
der in Verbindung mit einer Fehlerwiederherstellung ausgeführt wird,
entsprechend dem hier beschriebenen System;
-
32 ein Flussdiagramm, welches einen Prozess darstellt,
der in Verbindung mit der Beendigung von geordneten Schreibvorgängen entsprechend
dem hier beschriebenen System durchgeführt wird;
-
33 ein Flussdiagramm, welches eine Verarbeitung
wiedergibt, die in Verbindung mit dem Senden von Daten von einer örtlichen
Bestimmungsstelle zu einer entfernt gelegenen Bestimmungsstelle entsprechend
dem hier beschriebenen System durchgeführt wird;
-
34 ein Flussdiagramm, welches einen Prozess veranschaulicht,
der durch einen lokalen Verbindungsort in Verbindung mit der Rückstellung von
Fehlerwiederherstellparametern entsprechend dem hier beschriebenen
System durchgeführt
wird;
-
35 ein Flussdiagramm, welches einen Prozess darstellt,
der durch einen entfernt gelegenen Bestimmungsort in Verbindung
mit der Rückstellung von
Fehlerwiederherstellparametern entsprechend dem hier beschriebenen
System durchgeführt
wird;
-
36 ein Diagramm, welches eine Konfiguration einer
Quellengruppe gemäß dem hier
beschriebenen System darstellt;
-
37 ein Diagramm, welches eine andere Konfiguration
einer Quellengruppe gemäß dem hier beschriebenen
System zeigt;
-
38 ein Flussdiagramm, welches eine alternative
Ausführungsform
zum Übertragen
von Daten von einer örtlichen
Speichervorrichtung zu einer entfernt gelegenen Speichervorrichtung
entsprechend dem hier beschriebenen System wiedergibt;
-
39 ein schematisches Diagramm, welches die Elemente
zum Konstruieren und Manipulieren von Datenpaketen an einer entfernt
gelegenen Speichervorrichtung entsprechend dem hier beschriebenen
System veranschaulicht;
-
40 ein Diagramm, welches eine Tabelle darstellt,
die zur Planbildung von logischen Vorrichtungsörtlichkeiten in Verbindung
mit Schlitzen verwendet wird, die Daten enthalten, die durch eine
entfernt gelegen Speichervorrichtung empfangen werden, entsprechend
dem hier beschriebenen System;
-
41 ein Diagramm, welches eine andere Ausführungsform
einer Tabelle wiedergibt, die zur Planerstellung von logischen Vorrichtungsorten
zu Schlitzen hin verwendet wird, welche Daten enthalten, die durch
eine entfernt gelegene Speichervorrichtung entsprechend dem hier
beschriebenen System empfangen werden;
-
42 ein schematisches Diagramm, welches eine Quellengruppe,
einen Minimal-Speicherort-Bestimmungsort und einen entfernt gelegenen Bestimmungsort
gemäß einer
Ausführungsform
des hier beschriebenen Systems zeigt;
-
43 ein schematisches Diagramm, welches die Datenspeicherung
an einer Minimal-Speicherstelle-Bestimmungsort gemäß einer
Ausführungsform
des hier beschriebenen Systems veranschaulicht;
-
44 ein Diagramm, welches ein Datenelement veranschaulicht,
welches für
eine Datenspeicherung an einem Minimal-Speicherstelle-Bestimmungsort verwendet
wird, entsprechend einer Ausführungsform
des hier beschriebenen Systems;
-
45 ein Flussdiagramm, welches die Schritte veranschaulicht,
die in Verbindung mit dem Empfangen von Daten an dem Minimal-Speicherstelle-Bestimmungsort
ausgeführt
werden, entsprechend einer Ausführungsform
des hier beschriebenen Systems;
-
46 ein Flussdiagramm, welches die Schritte veranschaulicht,
die in Verbindung mit dem Hinzufügen
von Daten bei einem Minimal-Speicherstelle-Bestimmungsort
ausgeführt
werden, entsprechend einer Ausführungsform
des hier beschriebenen Systems;
-
47 ein Flussdiagramm, welches die Schritte wiedergibt,
die in Verbindung mit dem Hinzufügen
von Daten bei einem Minimal-Speicherstelle-Bestimmungsort
durchgeführt
werden, entsprechend einer anderen Ausführungsform des hier beschriebenen
Systems;
-
48 ein Flussdiagramm, welches die Schritte darstellt,
die in Verbindung mit dem Entfernen von Daten bei einem Minimal-Speicherstelle-Bestimmungsort ausgeführt werden,
entsprechend einer Ausführungsform
des hier beschriebenen Systems;
-
49 ein Flussdiagramm, welches die Schritte veranschaulicht,
die in Verbindung mit einer Datenwiederherstellung entsprechend
einer Ausführungsform
des hier beschriebenen Systems durchgeführt werden;
-
50 ein schematisches Diagramm, welches eine Vielzahl
der Quellengruppen und entfernt gelegenen Bestimmungsorte zeigt,
die an einen Minimal-Speicherstelle-Bestimmungsort entsprechend einer
anderen Ausführungsform
des hier beschriebenen Systems gekoppelt sind.
-
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 und 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 darauf
hingewiesen, dass für
einen Fachmann eine Vielzahl an HAs verwendet werden kann und dass
einer oder mehrere HAs einen oder mehrere Hosts umfassen kann, an
die dieser bzw. diese gekoppelt sind.
-
Daten
von der örtlichen
Speichervorrichtung 24 werden zu der entfernt gelegenen
Speichervorrichtung 26 über
ein RDF-Verbindungsglied 29 kopiert, um zu erreichen, dass
die Daten an der entfernt gelegenen Speichervorrichtung 26 identisch
mit den Daten an der örtlichen
Speichervorrichtung 24 sind. Obwohl lediglich das eine
Verbindungsglied 29 gezeigt ist, ist es auch möglich, zusätzliche
Verbindungsglieder zwischen den Speichervorrichtungen 24, 26 vorzusehen
und auch Verbindungsglieder zwischen einer oder zwischen beiden
Speichervorrichtungen 24, 26 und anderen Speichervorrichtungen vorzusehen
(nicht gezeigt). Zusätzlich
kann das Verbindungsglied 29 so ausgeführt sein, dass es eine direkte
Verbindung (Verdrahtung, Funkverbindung oder Kombinationen daraus)
umfasst, ein Netzwerk (beispielsweise das Internet) oder irgendeine
andere geeignete Einrichtung zum Übertragen und Übermitteln
von Daten enthält.
Es sei darauf hingewiesen, dass auch eine zeitliche Verzögerung zwischen
der Übertragung
der Daten von der örtlichen
Speichervorrichtung 24 zu der entfernt gele genen 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 voll mit einbezogen wird.
-
Die örtliche
Speichervorrichtung 24 enthält eine erste Anzahl von RDF-Adaptereinheiten
(RAs) 30a, 30b, 30c und die entfernt
gelegene Speichervorrichtung 26 enthält eine zweite Anzahl von RAs 32a–32c.
Die RAs 30a–30c, 32a–32c sind
an das RDF-Verbindungsglied 29 gekoppelt und sind ähnlich dem
Hostadapter 28, werden jedoch zur Übertragung von Daten zwischen
den Speichervorrichtungen 24, 26 verwendet. Die
in Verbindung mit den RAs 30a–30c, 32a–32c verwendete
Software wird im Folgenden mehr in Einzelheiten erläutert.
-
Die
Speichervorrichtungen 24, 26 können ein oder mehrere Plattenlaufwerke
umfassen, von denen jedes einen unterschiedlichen Abschnitt an Daten
enthält,
die auf jeder der Speichervorrichtungen 24, 26 gespeichert
sind. 1 zeigt die Speichervorrichtung 24 mit
einer Vielzahl von Plattenlaufwerken 33a, 33b, 33c und
die Speichervorrichtung 26 enthält eine Vielzahl an Plattenlaufwerken 34a, 34b, 34c.
Die RDF-Funktionalität, die hier
beschrieben wird, kann so zum Einsatz gebracht werden, dass die
Daten für
wenigstens einen Abschnitt der Platten 33a–33c der örtlichen
Speichervorrichtung 24 unter Verwendung von RDF zu wenigstens
einem Abschnitt der Platten 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 diese somit nicht identisch sind.
-
Jede
der Platten 33a–33c ist
mit einer entsprechenden Plattenadaptereinheit (DA) 35a, 35b, 35c gekoppelt,
die Daten zu einer entsprechenden einen der Platten 33a–33c liefert
und die Daten von einer entsprechenden einen der Platten 33a–33c empfängt. In ähnlicher
Weise werden eine Vielzahl der DAs 36a, 36b, 36c der
entfernt gelegenen Speichervorrichtung 26 dazu verwendet,
um Daten zu entsprechenden Platten der Platten 34a–34c zu
liefern und um Daten von entsprechenden Platten der Platten 34a–34c zu
empfangen. Ein interner Datenpfad existiert zwischen den DAs 35a–35c,
der 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 hervorgehoben,
dass es in Verbindung mit anderen Ausführungsformen möglich ist,
dass mehr als nur ein Plattenlaufwerk durch eine DA bedient wird
und dass es auch möglich
ist, dass mehr als nur eine DA ein Plattenlaufwerk bedient.
-
Die örtliche
Speichervorrichtung 24 enthält einen Globalspeicher 37,
der dazu verwendet werden kann, um die Datenübertragung zwischen den DAs 35a–35c,
der HA 28 und den RAs 30a–30c zu vereinfachen.
Der Speicher 37 kann Tasks enthalten, die durch eine oder
durch mehrere der DAs 35a–35c, der HA 28 und
den RAs 30a–30c auszuführen sind, und
kann auch einen Cachespeicher enthalten, und zwar für Daten,
die von einer oder von mehreren der Plattenlaufwerke 33a–33c aufgenommen
wurden. In ähnlicher
Weise enthält
die entfernt gelegene Speichervorrichtung 26 einen Globalspeicher 38,
der Tasks enthalten kann, die durch eine oder durch mehrere der
DAs 36a–36c und
den RAs 32a–32c auszuführen sind,
und einen Cachespeicher für
Daten, die von einem oder von mehreren der Plattenlaufwerke 34a–34c aufgefangen
wurden. Die Verwendung der Speicher 37, 38 wird
mehr in Einzelheiten im Folgenden beschrieben.
-
Der
Speicherraum in der örtlichen
Speichervorrichtung 24, welcher den Platten 33a–33c entspricht,
kann in eine Vielzahl von Volumina oder logischen Vorrichtungen
unterteilt werden. Die logischen Vorrichtungen können dem physikalischen Speicherraum
der Platten 33a–33c entsprechen
oder auch nicht. Beispielsweise kann die Platte 33a eine
Vielzahl an logischen Vorrichtungen enthalten oder alternativ kann
eine einzelne logische Vorrichtung beide Platten 33a, 33b überspannen.
In ähnlicher
Weise kann der Speicherraum für
die entfernt gelegene Speichervorrichtung 26, welche die
Platten 34a–34c aufweist,
in eine Vielzahl an Volumina oder logischen Vorrichtungen unterteilt
werden, wobei jede der logischen Vorrichtungen einer oder mehreren
der Platten 34a–34c entsprechen
kann.
-
Das
Speicherabbilden eines RDF zwischen Abschnitten der örtlichen
Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 involviert
das Erstellen einer logischen Vorrichtung an der entfernt gelegenen
Speichervorrichtung 26, das ist ein Fernspiegel für eine örtliche
Vorrichtung an der örtlichen
Speichervorrichtung 24. Der Host 22 liest und
schreibt Daten von und zu der logischen Vorrichtung an der örtlichen
Speichervorrichtung 24 und das RDF-Speicherabbilden verursacht
modifizierte Daten, die von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 unter Verwendung
der RAs 30a–30c, 32a–32c und
des RDF-Verbindungsgliedes 29 übertragen werden. In einem
Dauerzustandsbetrieb enthält
die örtliche
Vorrichtung an der entfernt gelegenen Speichervorrichtung 26 Daten,
die identisch mit den Daten der logischen Vorrichtung an der örtlichen
Speichervorrichtung 24 sind. Die örtliche Vorrichtung an der örtlichen Speichervorrichtung 24,
die durch den Host 22 zugegriffen wird, wird als das "R1-Volumen" (oder lediglich als "R1 ") bezeichnet, 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 als "R2") bezeichnet wird.
Somit liest und schreibt der Host Daten von und zu dem R1-Volumen
und die RDF handhabt das automatische Kopieren und auf den neusten Stand
bringen der Daten von dem R1-Volumen zu dem R2-Volumen. Das hier
beschriebene System kann unter Verwendung einer Software, Hardware und/oder
einer Kombination aus Software und Hardware implementiert werden,
wobei die Software in einem geeigneten Speichermedium gespeichert
werden kann und durch einen oder mehrere Prozessoren ausgeführt werden
kann.
-
Um
nun auf 2 einzugehen, so ist in dieser
ein Datenpfad von dem Host 22 zu der örtlichen Speichervorrichtung 24 und
der entfernt gelegenen Speichervorrichtung 26 veranschaulicht.
Die von dem Host 22 zu der örtlichen Speichervorrichtung 24 geschriebenen
Daten werden örtlich
gespeichert, wie dies durch das Datenelement 51 der örtlichen
Speichervorrichtung 24 veranschaulicht ist. Die durch den Host 22 geschriebenen
Daten, und zwar zu der örtlichen
Speichervorrichtung 24 hin, werden auch durch die örtliche
Speichervorrichtung 24 gehalten, und zwar in Verbindung
mit einer Sendung durch die örtliche
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 hin,
und zwar über
das Verbindungsglied 29.
-
Bei
dem hier beschriebenen System werden allen Daten, die durch den
Host 22 geschrieben werden (beispielsweise eine Aufzeichnung,
eine Vielzahl an Aufzeichnungen, eine Spur usw.), einer Sequenzzahl
zugeordnet. Die Sequenzzahl kann in einem geeigneten Datenfeld vorgesehen
werden, welches mit dem Schreibvorgang assoziiert ist. In 2 sind
die Schreibvorgänge,
die durch den Host 22 ausgeführt werden, so gezeigt, dass
diesen die Sequenznummer N zugeordnet ist. Alle die Schreibvorgänge, die durch
den Host 22 ausgeführt
werden, denen die Sequenznummer N zugeordnet ist, sind in einem
einzelnen Datenpaket 52 gesammelt. Das Paket 25 repräsentiert
eine Vielzahl von getrennten Schreibvorgängen, die durch den Host 22 ausgeführt werden,
die angenähert
zur gleichen Zeit erfolgen.
-
Im
Allgemeinen sammelt die örtliche
Speichervorrichtung 24 Pakete von einer Sequenznummer,
während
sie ein früher
angesammeltes Paket zu der entfernt gelegenen Speichervorrichtung 26 sendet
(mit der früheren
Sequenznummer). Während
somit die örtliche
Speichervorrichtung 24 Schreibvorgänge von dem Host 22 ansammelt,
denen die Sequenznummer N zugeordnet wird, werden die Schreibvorgänge bzw.
Schreibeinträge,
die für
die früherer
Sequenznummer (N-1) aufgetreten sind, durch die örtliche Speichervorrichtung 24 zu
der entfernt gelegenen Speichervorrichtung 26 über das Verbindungsglied 29 gesendet.
Ein Paket 54 repräsentiert
Schreibvorgänge
bzw. Schreibeinträge
von dem Host 22, denen die Sequenznummer N-1 zugeordnet
wurde, die noch nicht zu der entfernt gelegenen Speichervorrichtung 26 übertragen
worden sind.
-
Die
entfernt gelegene Speichervorrichtung 26 empfängt die
Daten aus dem Paket 54 entsprechend den Schreibeinträgen, denen
eine Sequenznummer N-1 zugeordnet wurde, und konstruiert ein neues
Paket 56 der Host-Schreibeinträge mit der Se quenznummer N-1.
Die Daten können
unter Verwendung eines geeigneten RDF-Protokolls gesendet werden, welches
die Daten bestätigt,
die über
das Verbindungsglied 29 gesendet wurden. Wenn die entfernt
gelegene Speichervorrichtung 26 alle die Daten aus dem
Paket 54 empfangen hat, sendet die örtliche Speichervorrichtung 24 eine
Garantienachricht (commit message) zu der entfernt gelegenen Speichervorrichtung 26,
um zu garantieren, dass all die Daten, welche der Sequenznummer
N-1 zugeordnet sind, dem Paket 56 entsprechen. Im Allgemeinen
wird dann, wenn ein Paket, welches einer bestimmten Sequenznummer
entspricht, bestätigt
oder garantiert wird, das Paket in die logische Speichervorrichtung
geschrieben. Dies ist in 2 mit
Hilfe eines Paketes 58 (chunk) veranschaulicht, entsprechend
den Schreibeinträgen,
welchen die Sequenznummer N-2 zugeordnet ist (das heißt zwei
vor der momentanen Sequenznummer, die in Verbindung mit den Schreibeinträgen durch
den Host 22 an der örtlichen
Speichervorrichtung 26 verwendet wird). In 2 ist
das Paket 58 so gezeigt, 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 Paket 56 und
sammelt die Daten desselben entsprechend der Sequenznummer N-1,
während
das Datenpaket 58 entsprechend der früheren Sequenznummer (N-2) in den
Plattenspeicher der entfernt gelegenen Speichervorrichtung 26 geschrieben
wird, der durch das Datenausgangsleitung 62 veranschaulicht
ist. Bei einigen Ausführungsformen
sind die Daten für
ein Paket bzw. das Paket 58 für einen Schreibeintrag markiert
(werden jedoch nicht notwendigerweise unmittelbar geschrieben),
während
die Daten für
das Paket 56 nicht markiert sind.
-
Somit
schreibt der Host 22 im Betrieb Daten in die örtliche
Speichervorrichtung 24 ein, das heißt es erfolgt eine örtliche
Speicherung an dem Datenelement 51 und die Daten werden
in dem Paket 52 gesammelt. Wenn einmal all die Daten für eine bestimmte
Sequenznummer gesammelt worden sind (die hier irgendwo beschrieben
werden), inkrementiert die örtliche
Speichervorrichtung 24 die Sequenznummer. Daten von dem
Paket 54, die um eins weniger entsprechen als die momentane
Sequenznummer, werden von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 über das
Verbindungsglied 29 übertragen.
Das Paket 58 entspricht den Daten für eine Sequenznummer, die durch
die örtliche
Speichervorrichtung 24 bestätigt wurde oder garantiert
wurde, die eine Nachricht zu der entfernt gelegenen Speichervorrichtung 26 sendet.
Daten aus dem Paket 58 werden in dem Plattenspeicher der
entfernt gelegenen Speichervorrichtung 26 geschrieben.
-
Es
sei darauf hingewiesen, dass die Schreibeinträge innerhalb eines bestimmten
einen der Pakete 52, 54, 56, 58 nicht
notwendigerweise geordnet sind. Wie auch mehr in Einzelheiten im
Folgenden noch beschrieben wird, wurde jeder Schreibeintrag für das Paket 58 entsprechend
der Sequenznummer N-2 begonnen, und zwar vor dem Beginn von irgendwelchen
Schreibeinträgen
für die
Pakete 54, 56 entsprechend der Sequenznummer N-1.
Zusätzlich
wurde jeder Schreibeintrag für
die Pakete 54, 56 entsprechend der Sequenznummer
N-1 vor dem Beginn von irgendwelchen Schreibeinträgen oder
Schreibvorgängen
für das
Paket 52 begonnen, entsprechend der Sequenznummer N. Somit
kann in einem Fall eines Kommunikationsfehlschlages zwischen der örtlichen
Speichervorrichtung 24 und der entfernt gelegenen Speichervorrichtung 26 die
entfernt gelegene Speichervorrichtung 26 einfach den Schreibvorgang beenden,
und zwar in Verbindung mit dem letzten bestätigten Datenpaket (dem Paket 58 bei
dem Beispiel von 2) und es kann sichergestellt
werden, dass der Zustand der Daten an der entfernt gelegenen Speichervorrichtung 26 in
einem solchen Sinn geordnet wird, dass das Datenelement 62 alle
die Schreibeinträge
enthält,
die vor einem bestimmten Zeitpunkt begonnen wurden, und keine Schreibeinträge enthält, die
nach diesem Zeitpunkt begonnen wurden. Somit enthält R2 eine
zeitpunktgenaue Kopie von R1 und es wird möglich, ein konsistentes Bild
von der R2-Vorrichtung wieder herzustellen.
-
Um
nun auf 3 einzugehen, so veranschaulicht
ein Diagramm 70 Elemente, die zum Konstruieren und Aufrechterhalten
der Datenpakete 52, 54 verwendet werden. Eine
logische Standardvorrichtung 72 enthält Daten, die durch den Host 22 geschrieben
wurden, und entspricht dem Datenelement 51 von 2 und
den Platten 33a–33c von 1. Die
logische Standardvorrichtung 72 enthält Daten, die durch den Host 22 zu
der örtlichen
Speichervorrichtung 24 hin geschrieben wurden.
-
Es
werden zwei verkettete Listen von 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 werden können. Die
verkettete Liste 74 enthält eine Vielzahl an Zeigern 81–85,
von denen jeder auf einen 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,
von denen jeder auf einen Schlitz in dem Cachespeicher 88 zeigt.
Bei einigen Ausführungsformen
kann der Cachespeicher 88 in dem Speicher 37 der örtlichen
Speichervorrichtung 24 vorgesehen sein. Der Cachespeicher 88 enthält eine
Vielzahl an Cacheschlitzen 102–104, die in Verbindung
mit Schreibeinträgen
zu der logischen Standardvorrichtung 72 verwendet werden
können
und die zur gleichen Zeit in Verbindung mit den verketteten Listen 74, 76 verwendet
werden können.
-
Jede
der verketteten Listen 74, 76 kann für eines
der Datenpakete 52, 54 in solcher Weise verwendet
werden, dass beispielsweise die verkettete Liste 74 dem
Datenpaket 52 für
die Sequenznummer N entspricht, während die verkettete Liste 76 dem Datenpaket 54 für die Sequenznummer
N-1 entspricht. Wenn somit Daten durch den Host 22 zu der örtlichen
Speichervorrichtung 24 geschrieben werden, werden die Daten
zu dem Cachespeicher 88 geliefert und in einigen Fällen (die
hier noch weiter beschrieben werden) wird ein geeigneter Zeiger
der verketteten Liste 74 erzeugt. Es sei hervorgehoben, dass
die Daten nicht aus dem Cachespeicher 88 entfernt werden,
bis die Daten zu der logischen Standardvorrichtung 72 ausgelesen
wurden und auch auf die Daten durch keinen der Zeiger 81–85 der
verketteten Liste 74 gezeigt wird, wie dies hier beschrieben wird.
-
Bei
einer Ausführungsform
wird eine der verketteten Listen 74, 76 als "aktiv" betrachtet, während die
andere als "inaktiv" betrachtet wird.
Wenn somit beispiels weise die Sequenznummer N geradzahlig ist, kann
die verkettete Liste 74 aktiv sein, während jedoch 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 eine inaktive Liste 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 (für die Sequenznummer N), werden
die Daten entsprechend der inaktiven Liste von den verketteten Listen 74, 76 (die
frühere
Sequenznummer N-1) von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet.
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 zu übertragen
sind.
-
Nachdem
die Daten, die einem bestimmten einen der Zeiger in einer der verketteten
Listen 74, 76 entsprechen, zu der entfernt gelegenen
Speichervorrichtung 26 gesendet wurden, kann der spezielle
eine der Zeiger aus der geeigneten einen der verketteten Listen 74, 76 entfernt
werden. Zusätzlich
können
die Daten auch markiert werden, um sie aus dem Cachespeicher 88 zu
entfernen (das heißt,
es kann der Schlitz zu einem Pool von Schlitzen für eine spätere nicht
bezogene Verwendung zurückgeführt werden), unter
der Voraussetzung, dass die Daten in dem Schlitz nicht anderweitig
für andere
Zwecke benötigt werden
(z. B. zum Auslesen zu der logischen Standardvorrichtung 72).
Ein Mechanismus kann dafür verwendet
werden, um sicherzustellen, dass Daten nicht aus dem Cachespeicher 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 dem US-Patent Nr. 6,594,742, ausgegeben am
15. Juli 2003, beschrieben, die beide hier unter Bezugnahme mit
einbezogen werden.
-
Gemäß 4 enthält ein Schlitz 120 ähnlich einem
der Schlitze 102–104 des
Cachespeichers 88 einen Header 122 und Daten 124.
Der Header 122 entspricht Overhead-Informationen, die durch
das System zum Managen des Schlitzes 120 verwendet werden.
Die Daten 124 sind die entsprechenden Daten von der Platte,
die (zeitweilig) in dem Schlitz 120 gespeichert wird. Informationen
in dem Header 122 enthalten Zeiger zurück zur Platte, Zeitstempel
usw.
-
Der
Header 122 enthält
auch einen Cachestempel 126, der in Verbindung mit dem
hier beschriebenen System verwendet wird. Bei einer hier beschriebenen
Ausführungsform
umfasst der Cachestempel 126 acht Bytes. Zwei der Bytes
bilden ein "Passwort", welches anzeigt,
ob der Schlitz 120 durch das hier beschriebene System verwendet
wird. Bei anderen Ausführungsformen
kann das Passwort ein Byte umfassen, während das folgende Byte für ein Pad
verwendet wird. Wie hier noch beschrieben wird, zeige zwei Bytes
des Passwortes (oder ein Byte, je nach Fall), welches gleich ist
einem bestimmten Wert, an, dass auf den Schlitz 120 gezeigt
wird, und zwar durch wenigstens einen Eintrag in den verketteten
Listen 74, 76. Das Passwort, welches nicht dem
bestimmten Wert gleich ist, zeigt an, dass auf den Schlitz 120 nicht
durch einen Eintrag der verketteten Listen 74, 76 gezeigt
wird. Die Verwendung des Passwortes wird noch weiter beschrieben.
-
Der
Cachestempel 126 enthält
auch ein Zwei-Byte-Feld, welches die Sequenznummer angibt (z. B.
N, N-1, N-2 usw.) der Daten 124 des Schlitzes 120.
Wie noch beschrieben wird, kann das Sequenzzahlfeld des Cachestempels 126 dazu
verwendet werden, den hier beschriebenen Prozess zu vereinfachen.
Die verbleibenden vier Bytes des Cachestempels 126 können für einen
Zeiger beschrieben werden, wie dies noch weiter beschrieben wird.
Natürlich
sind die zwei Bytes der Sequenznummer und die vier Bytes des Zeigers
lediglich gültig,
wenn das Passwort dem bestimmten Wert entspricht oder diesem gleich
ist, der anzeigt, dass auf den Schlitz 120 durch wenigstens
ein 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, welcher eine Schreiboperation
ausführt.
Wenn natürlich der
Host 22 einen Schreibvorgang ausführt, erfolgt eine Verarbeitung
hinsichtlich der Handhabung des Schreibvorganges in einer normalen
Weise, und zwar ungeachtet davon, ob Daten Teil einer R1-, R2-RDF-Gruppe sind. Wenn
beispielsweise der Host 22 Daten für einen Abschnitt der Platte
schreibt, erfolgt der Schreibvorgang zu dem Cacheschlitz, der eventuell
zur Platte ausgelesen wurde. Der Cacheschlitz kann entweder aus
einem neuen Cacheschlitz bestehen oder kann aus einem bereits bestehenden Cacheschlitz
bestehen, der in Verbindung mit einem früheren Lese- und/oder Schreibvorgang
zur gleichen Spur erzeugt wurde.
-
Die
Verarbeitung beginnt zunächst
bei einem ersten Schritt 142, bei welchem ein Schlitz entsprechend
dem Schreibeintrag verriegelt wird. Bei einer hier beschriebenen
Ausführungsform
entspricht jeder der Schlitze 102–104 des Cachespeichers 88 einer Spur
an Daten auf der logischen Standardvorrichtung 72. Das
Verriegeln des Schlitzes bei dem Schritt 142 verhindert
zusätzliche
Verarbeitungsvorgänge,
die eine Verarbeitung in Verbindung mit dem relevanten Schlitz durchführen, und
zwar während
der Verarbeitung, die durch den HA 28 entsprechend den
Schritten des Flussdiagramms 140 durchgeführt werden.
-
Nachfolgend
dem Schritt 142 wird ein Schritt 144 ausgeführt, bei
dem ein Wert für
N, die Sequenzzahl, eingestellt wird. Wie noch erläutert wird,
wird der Wert für
die Sequenzzahl, die bei dem Schritt 144 erhalten wird,
während
der gesamten Schreiboperation beibehalten, die durch den HA 28 ausgeführt wird,
während
der Schlitz blockiert ist. Wie noch erläutert wird, wird die Sequenznummer
jedem Schreibeintrag zugeordnet, um das eine der Datenpakete 52, 54 zu
setzen oder einzustellen, zu welchem der Schreibvorgang gehört. Schreibeinträge, die
durch den Host 22 ausgeführt werden, werden einer momentanen
Sequenznummer zugeordnet. Es ist vorteilhaft, dass eine einzelne
Schreiboperation die gleiche Sequenznummer durchgehend beibehält.
-
Nachfolgend
dem Schritt 144 wird ein Testschritt 146 durchgeführt, bei
dem bestimmt wird, ob das Passwortfeld des Cacheschlitzes gültig ist.
Wie oben bereits erläutert
wurde, stellt das hier beschriebene System das Passwortfeld auf
einen vorbestimmten Wert ein, um anzuzeigen, dass der Cacheschlitz
bereits einer in den verketteten Zeigerlisten 74, 76 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 von 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 gesetzt wird, und zwar durch
Einstellen des Passwortes auf den vorbestimmten Wert, Einstellen
des Sequenznummerfeldes auf N und Einstellen des Zeigerfeldes auf
0. Bei anderen Ausführungsformen
kann das Zeigerfeld so eingestellt werden, dass es auf den eigenen
Schlitz zeigt.
-
Nachfolgend
dem Schritt 148 wird ein Schritt 152 ausgeführt, bei
dem ein Zeiger zu dem neuen Schlitz zu der aktiven einen der Zeigerlisten 74, 76 hinzu
addiert wird. Bei einer hier beschriebenen Ausführungsform bestehen die Listen 74, 76 aus
kreisförmigen,
doppelt verketteten Listen und der neue Zeiger wird zu der kreisförmigen,
doppelt verketteten Liste in einer herkömmlichen Weise hinzu addiert. Natürlich sind
auch andere geeignete Datenstrukturen zum Managen der Listen 74, 76 möglich. Nachfolgend
dem Schritt 152 wird ein Schritt 154 durchgeführt, bei
dem Flags gesetzt werden. Bei dem Schritt 154 wird das
RDF_WP_Flag (RDF-Schreibaussetz-Flag) so eingestellt, um anzugeben,
dass der Schlitz zu der entfernt gelegenen Speichervorrichtung 26 unter
Verwendung von RDF übertragen
werden soll. Zusätzlich
bei dem Schritt 154 wird das IN_CACHE-Flag gesetzt, um
anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung 72 ausgelesen
werden muss. Nachfolgend dem Schritt 154 wird ein Schritt 156 durchgeführt, bei
dem die Daten, die durch den Host 22 und durch HA 28 geschrieben wurden,
in den Schlitz eingeschrieben werden. Nachfolgend dem Schritt 156 wird
ein Schritt 158 ausgeführt,
bei dem der Schlitz entriegelt wird. Nachfolgend dem Schritt 158 ist
dann die Verarbeitung beendet oder vervollständigt.
-
Wenn
bei dem Testschritt 146 bestimmt wird, dass das Passwortfeld
des Schlitzes gültig
ist (wobei angezeigt wird, dass auf den Schlitz bereits durch wenigstens
einen Zeiger der Listen 74, 76 gezeigt wird),
dann verläuft
die Steuerung von dem Schritt 146 zu einem Testschritt 162,
bei dem bestimmt wird, ob das Sequenzzahlenfeld des Schlitzes gleich
ist mit der momentanen Sequenznummer N. Es sei hervorgehoben, dass
es zwei gültige
Möglichkeiten
für das Sequenznummernfeld
eines Schlitzes mit einem gültigen
Passwort gibt. Es ist für
das Sequenznummernfeld möglich,
dass dieses gleich ist mit N, das heißt der momentanen Sequenznummer.
Dies ereignet sich, wenn der Schlitz einem früheren Schreibeintrag mit der
Sequenznummer N entspricht. Die andere Möglichkeit für das Sequenznummernfeld ist
diejenige, dass dieses gleich ist N-1. Dies tritt auf, wenn der Schlitz
entsprechend einem früheren
Schreibeintrag mit der Sequenznummer N-1 entspricht. Irgendein anderer
Wert für
das Sequenznummernfeld ist ungültig.
Es kann somit für
einige Ausführungsformen möglich sein,
eine Fehler-/Gültigkeitsüberprüfung bei dem
Schritt 162 zu involvieren oder eine Fehler-/Gültigkeitsüberprüfung in
einem getrennten Schritt vorzunehmen. Solch ein Fehler kann in irgendeiner
geeigneten Weise gehandhabt werden, die auch das Liefern einer Nachricht
zu einem Anwender enthalten kann.
-
Bei
dem Schritt 162 wird bestimmt, dass der Wert des Sequenznummernfeldes
des Schlitzes gleich ist der momentanen Sequenznummer N und es ist
dann keine spezielle Verarbeitung erforderlich und die Steuerung
wird von dem Schritt 162 auf den Schritt 156 übertragen,
der oben erläutert
wurde, bei dem die Daten in den Schlitz geschrieben werden. Wenn
ansonsten der Wert des Sequenznummernfeldes N-1 lautet (der einzige
andere gültige
Wert), dann wird die Steuerung von dem Schritt 162 zu einem
Schritt 164 übertragen,
bei dem ein neuer Schlitz erhalten wird. Der neue Schlitz, der bei
dem Schritt 164 erhalten wird, kann zum Speichern der Daten,
die geschrieben werden sollen, verwendet werden.
-
Nachfolgend
dem Schritt 164 wird ein Schritt 166 ausgeführt, bei
dem die Daten von dem alten Schlitz zu dem neuen Schlitz kopiert
werden, der bei dem Schritt 164 erhalten wurde. Es sei
erwähnt,
dass die kopierten Daten das RDF_WP-Flag enthal ten, welches bei
dem Schritt 154 bei einem früheren Schreibvorgang gesetzt
worden sein sollte, wenn der Schlitz zum ersten Mal erzeugt wurde.
Nachfolgend dem Schritt 166 wird ein Schritt 168 ausgeführt, bei dem
der Cachestempel für
den neuen Schlitz eingestellt wird, indem das Passwortfeld auf den
geeigneten Wert eingestellt wird, das Sequenznummernfeld auf die
momentane Sequenznummer N gesetzt wird und das Zeigerfeld eingestellt
wird, so dass es auf den alten Schlitz zeigt. Nachfolgend dem Schritt 168 wird
ein Schritt 172 durchgeführt, bei dem ein Zeiger zu
dem neuen Schlitz zu der aktiven einen Liste der verketteten Listen 74, 76 hinzu
addiert wird. Nachfolgend dem Schritt 172 wird der Schritt 156 ausgeführt, der
oben erläutert
wurde, bei dem die Daten zu dem Schlitz geschrieben werden, der
in diesem Fall der neue Schlitz ist.
-
Gemäß 6 veranschaulicht
ein Flussdiagramm 200 die Schritte, die in Verbindung mit
den RAs 30a–30c beim
Abtasten der inaktiven einen der Listen 72, 74 durchgeführt werden,
um die RDF-Daten von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 zu übertragen.
Wie oben erläutert
ist, zeigt die inaktive eine Liste der Listen 72, 74 zu
Schlitzen, die dem N-1-Zyklus für
die R1-Vorrichtung entsprechen, wenn der N-Zyklus zu der R1-Vorrichtung
geschrieben wird, und zwar unter Verwendung der aktiven Liste von den
Listen 72, 74.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 202, bei
welchem 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
in die aktive Liste der Listen 72, 74 vorgenommen
und nicht allgemein zu der inaktiven einen Liste der Listen 72, 74.
Es wird somit möglich
(und ist wünschenswert,
wie noch weiter beschrieben wird), dass die inaktive Liste der Listen 72, 74 keine
Daten zu bestimmten Zeitpunkten enthält. Wenn bei dem Schritt 202 bestimmt
wurde, dass keine Daten zu übertragen
sind, wird die inaktive Liste der Listen 72, 74 kontinuierlich
abgefragt, bis Daten verfügbar
werden. Daten zum Senden werden in Verbindung mit einem Zyklusschalter
(der noch erläutert wird)
verfügbar,
wobei die inaktive Liste der Listen 72, 74 zur
aktiven Liste der Listen 72, 74 wird und umgekehrt.
-
Wenn
bei dem Schritt 202 bestimmt wird, dass keine 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. Der bei dem Schritt 204 durchgeführt Prozess
bzw. Verarbeitung besteht aus einer optionalen "Gesundheitsprüfung", die das Verifizieren dahingehend enthält, dass
das Passwortfeld korrekt ist und wobei verifiziert wird, dass das
Sequenzzahlenfeld korrekt ist. Wenn sich in dem Schlitz unkorrekte
(unerwartete) Daten befinden, kann eine Fehlerverarbeitung durchgeführt werden,
die auch eine Unterrichtung eines Anwenders über den Fehler enthalten kann
und auch möglicherweise
einen Fehlerbeseitigungsprozess.
-
Nachfolgend
dem Schritt 204 wird ein Schritt 212 ausgeführt, bei
dem die Daten über
RDF in einer herkömmlichen
Weise versendet werden. Bei einer hier beschriebenen Ausführungsform
wird der gesamte Schlitz nicht übertragen.
Vielmehr werden lediglich Aufzeichnungen innerhalb des Schlitzes,
die den geeigneten Spiegelbitsatz aufweisen (was anzeigt, dass die
Aufzeichnungen geändert
wurden), zu der entfernt gelegenen Speichervorrichtung 26 übertragen.
Bei anderen Ausführungsformen
kann es jedoch möglich
sein, den gesamten Schlitz bzw. Schlitzinhalt zu senden, vorausgesetzt,
dass die entfernt gelegene Speichervorrichtung 26 lediglich
Daten entsprechend den Aufzeichnungen schreibt, die einen geeigneten
Spiegelbitsatz aufweisen, und andere Daten für die Spur ignoriert, die gültig oder
auch nicht gültig
sein können.
Nachfolgend dem Schritt 212 wird ein Testschritt 214 ausgeführt, bei
dem bestimmt wird, ob die Daten, die übertragen wurden, durch die R2-Vorrichtung
bestätigt
worden sind. Wenn dies nicht der Fall ist, werden die Daten erneut
gesendet, wie dies durch den Fluss aus dem Schritt 214 zurück zu dem
Schritt 212 angezeigt ist. Bei anderen Ausführungsformen
kann eine abweichende und mehr involvierte Verarbeitung dazu verwendet
werden, um Daten zu senden und den Empfang derselben zu bestätigen. Solche
Verarbeitung kann einen Report über
einen Fehler enthalten und auch alternative Verarbeitungen, die
nach einer bestimmten Anzahl von Versuchen zum Senden der Daten,
die fehlgeschlagen sind, ausgeführt
werden.
-
Wenn
einmal bei dem Testschritt 214 bestimmt worden ist, dass
die Daten erfolgreich gesendet worden sind, verläuft die Steuerung von dem Schritt 214 zu
einem Schritt 216, um das RDF_WP-Flag zu löschen (da
die Daten erfolgreich über
RDF gesendet worden sind). Nachfolgend dem Schritt 216 wird
ein Testschritt 218 durchgeführt, bei dem bestimmt wird,
ob der Schlitz aus einem Duplikatschlitz besteht, der in Verbindung
mit einem Schreibvorgang in einen Schlitz erzeugt wurde, der bereits
einen existierenden Eintrag in der inaktiven einen Liste der Listen 72, 74 besitzt.
Diese Möglichkeit
wurde weiter oben in Verbindung mit den Schritten 162, 164, 166, 168, 172 erläutert. Wenn
bei dem Schritt 218 bestimmt wird, dass der Schlitz aus
einem Duplikatschlitz besteht, verläuft die Steuerung von dem Schritt 218 zu
einem Schritt 222, bei dem der Schlitz zu einem Pool von
verfügbaren
Schlitzen zurückgeführt wird
(für die
neue Verwendung). Zusätzlich
kann der Schlitz alt gemacht werden (oder es kann ein anderer geeigneter
Mechanismus bei diesem angewendet werden, um für eine unmittelbare Wiederverwendung
vor anderen Schlitzen zu sorgen, da die Daten, die in dem Schlitz
vorhanden sind, nicht für
irgendeinen anderen Zweck gültig
sind. Nachfolgend dem Schritt 222 oder dem Schritt 218,
wenn der Schlitz nicht aus einem Duplikatschlitz besteht, folgt ein
Schritt 224, bei dem das Passwortfeld des Schlitzheaders
gelöscht
wird, so dass dann, wenn der Schlitz wieder verwendet wird, der
Test bei dem Schritt 146 von 5 den
Schlitz in richtiger Weise als einen neuen Schlitz klassifiziert.
-
Nachfolgend
dem Schritt 224 folgt ein Schritt 226, bei dem
der Eintrag in der inaktiven einen 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, wobei bestimmt
wird, ob zusätzliche
Einträge
an der inaktiven einen Liste der Listen 72, 74 vorhanden
sind, entsprechend den Daten, die übertragen werden müssen.
-
Gemäß 7 veranschaulicht
ein Diagramm 240 die Erzeugung und die Manipulation der Datenpakete 56, 58,
die durch die entfernt gelegene Speichervorrichtung 26 verwendet
werden. Die Daten, die durch die entfernt gelegene Speichervorrichtung 26 über das
Verbindungsglied 29 empfangen werden, werden zu einem Cachespeicher 242 der entfernt
gelegenen Speichervorrichtung 26 geliefert. Der Cachespeicher 242 kann
beispielsweise in dem Speicher 38 der entfernt gelegenen
Speichervorrichtung 26 vorgesehen sein. Der Cachespeicher 242 enthält eine
Vielzahl an Cacheschlitzen 244–246, von denen jeder
zu einer Spur einer logischen Standard-Speichervorrichtung 252 kopiert
werden kann. Der Cachespeicher 242 ist ähnlich dem Cachespeicher 88 von 3 ausgebildet
und kann Daten enthalten, die zu der logischen Standard-Speichervorrichtung 252 der
entfernt gelegenen Speichervorrichtung 26 ausgelesen werden.
Die logische Standard-Speichervorrichtung 252 entspricht
dem Datenelement 62, welches in 2 gezeigt
ist, und den Platten 64a–64c, die in 1 gezeigt
sind.
-
Die
entfernt gelegene Speichervorrichtung 26 enthält auch
ein Paar von Cachespeichern, und zwar lediglich als virtuelle Vorrichtungen 254, 256. Der
Cachespeicher entsprechend lediglich der virtuellen Vorrichtungen 254, 256 entspricht
den Vorrichtungstabellen, die beispielsweise in dem Speicher 38 der
entfernt gelegenen Speichervorrichtung 26 gespeichert sein
können.
Jeder Spureintrag der Tabellen von jedem Cache bzw. virtuellen Vorrichtungen 254, 256 zeigt
zu entweder einer Spur der logischen Standardvorrichtung 252 oder
zu einem Schlitz des Cachespeichers 242. Die lediglich
virtuelle ausgebildeten Cachevorrichtungen sind in der parallel
laufenden US-Patentanmeldung mit dem Titel CACHE-ONLY VIRTUAL DEVICES,
eingereicht am 25. März 2003,
mit der Seriennummer 10/396,800 beschrieben, die hier unter Bezugnahme
voll mit einbezogen wird.
-
Die
Vielzahl der Cacheschlitze 244–246 können in
Verbindung mit Schreibeinträgen
in die logische Standardvorrichtung 252 verwendet werden und
können
gleichzeitig in Verbindung mit den lediglich vorhandenen Cachevorrichtungen 254, 256 verwendet
werden. Bei einer hier beschriebenen Ausführungsform enthält jede
der Spurtabelleneinträge der
lediglich virtuellen Cachevorrichtungen 254, 256 eine
Null, um anzuzeigen, dass die Daten für diese Spur in einer entsprechenden
Spur der logischen Standardvorrichtung 252 gespeichert
sind. Ansonsten enthält
ein Eintrag in der Spurtabelle für
jeden der nur virtuell vorhandenen Cachevorrichtungen 254, 256 einen
Zeiger zu einem der Schlitze 244–246 in dem Cache 242.
-
Jede
der lediglich virtuell vorhandenen Cachevorrichtungen 254, 256 entspricht
einem der Datenpakete 56, 58. So kann beispielsweise
der lediglich virtuelle Cachespeicher 254 dem Datenpaket 56 entsprechen,
während
der lediglich virtuelle Cachespeicher 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 eine lediglich virtuelle Cachevorrichtung der Cachevorrichtungen 254, 256 als "inaktiv" betrachtet werden
kann. Die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 kann
den Daten entsprechen, die von der logischen Speichervorrichtung 24 empfangen
werden (das heißt
dem Datenpaket 56), während
die andere Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 den Daten
entspricht, die in der logischen Standardvorrichtung 252 wieder
gespeichert (eingeschrieben) wird.
-
Die
Daten von der logischen 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 einen der lediglich virtuellen Cachevorrichtungen 254, 256 kann so
eingestellt werden, dass dieser auf die empfangenen Daten zeigt.
Nachfolgende Daten mit der gleichen Sequenznummer können in ähnlicher
Weise verarbeitet werden. An einer bestimmten Stelle liefert die
logische Speichervorrichtung 24 eine Bestätigungsnachricht
in Verbindung mit all den Daten, die gesendet wurden und welche
die gleiche Sequenznummer verwenden. Wenn die Daten für eine bestimmte
Sequenznummer einmal bestätigt
worden sind, wird die inaktive eine Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256 zur aktiven und umgekehrt.
An dieser Stelle werden Daten von der nunmehr aktiven einen Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 256 zu
der logischen Standardvorrichtung 252 kopiert, während die inaktive
eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 dazu
verwendet wird, um neue Daten zu empfangen (mit einer neuen Sequenznummer),
die von der logischen Speichervorrichtung 24 zu der entfernt
gelegenen Speichervorrichtung 26 gesendet werden.
-
Wenn
Daten von der inaktiven einen Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256 entfernt werden (was
noch erläutert
wird), kann der entsprechende Eintrag in der aktiven einen Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 256 auf
Null gestellt werden. Zusätzlich
können auch
die Daten aus dem Cachespeicher 244 entfernt werden (das
heißt
dem Schlitz, der zu dem Pool von freien Schlitzen für eine spätere Verwendung
zurückgeführt wird),
unter der Voraussetzung, dass die Daten in dem Schlitz nicht anderweitig
für einen
anderen Zweck benötigt
werden (z. B. zum Auslesen zu der logischen Standardvorrichtung 252).
Es kann ein Mechanismus dafür
verwendet werden, sicherzustellen, dass Daten nicht aus dem Cachespeicher 242 entfernt
werden, bis alle Spiegel (inklusive den 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 dem
US-Patent Nr. 6,594,742, ausgegeben am 15. Juli 2003, beschrieben,
die hier beide unter Bezugnahme mit einbezogen werden.
-
Bei
einigen Ausführungsformen,
die hier noch beschrieben werden, kann die entfernt gelegene Speichervorrichtung 26 verkettete
Listen 258, 262 ähnlich den Listen 74, 76 unterhalten,
die durch die logische 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 Wiederabspeichern der Daten aus den lediglich virtuellen Cachevorrichtungen 254, 256 in
die logische Standardvorrichtung 252 zu vereinfachen.
-
Um
nun auf 8 einzugehen, so veranschaulicht
ein Flussdiagramm 270 Schritt, die durch die entfernt gelegene
Speichervorrichtung 26 in Verbindung mit der Verarbeitung
von Daten für
eine Sequenznummer-Bestätigung
durchgeführt
werden, die durch die örtliche
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet wird.
Wie noch erläutert
werden wird, inkrementiert die logische Speichervorrichtung 24 periodisch
diese Grenznummern. Wenn dies stattfindet, beendet die logische
Speichervorrichtung 24 das Senden von all den Daten für die frühere Sequenznummer
und sendet dann eine Bestätigungsnachricht
für die
frühere Sequenznummer.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 272, bei
dem die Bestätigung
empfangen wird. Nachfolgend dem Schritt 272 ist ein Testschritt 274 eingefügt, bei
dem bestimmt wird, ob die aktive eine Vorrichtung der lediglich
virtuellen Cachevorrichtungen 254, 256 der entfernt
gelegenen Speichervorrichtung 26 leer ist. Wie weiter noch
erläutert
wird, wird die inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 der
entfernt gelegenen Speichervorrichtung 26 dazu verwendet,
um Daten von der logischen Speichervorrichtung 24 zu sammeln,
die gesendet werden, und zwar unter Verwendung von RDF, während die
aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 in
der logischen Standardvorrichtung 252 wieder hergestellt
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 der aktiven Vorrichtung der lediglich
virtuellen Cachevorrichtungen 254, 256 vervollständigt wird,
und zwar bevor eine weitere Verarbeitung durchgeführt wird. Das
Wiederherstellen der Daten aus der aktiven einen Vorrichtung der
lediglich virtuellen Cachevorrichtungen 254, 256 wird
noch mehr in Einzelheiten beschrieben werden. Es ist von Vorteil,
dass die aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 leer
ist, bevor die Bestätigung gehandhabt
wird und mit der Wiederherstellung der Daten für die nächste Sequenznummer begonnen wird.
-
Nachfolgend
dem Schritt 276 oder nachfolgend dem Schritt 274,
wenn eine aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 als
leer bestimmt wurde, folgt ein Schritt 278, bei dem die
aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 inaktiv
gemacht wird. Nachfolgend dem Schritt 278 ist ein Schritt 282 eingefügt, bei
dem die frühere
inaktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 inaktiv
gemacht wird (das heißt
eine Vorrichtung, die vor der Ausführung des Schrittes 278 inaktiv
war). Das Seitenwechseln der aktiven und der inaktiven Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 256 bei
den Schritten 278, 282 führt zur Vorbereitung einer
nun inaktiven (und leeren) einen Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256, um mit dem Empfang
von Daten von der örtlichen
Speichervorrichtung 24 für die nächste Sequenznummer zu beginnen.
-
Nachfolgend
dem Schritt 282 folgt ein Schritt 284, bei dem
die aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu
der logischen Standardvorrichtung 252 der entfernt gelegenen
Speichervorrichtung 26 wieder hergestellt wird. Das Wiederherstellen
der aktiven einen Vorrichtung 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 Wiederherstellungsprozess begonnen wird, jedoch nicht notwendigerweise
vervollständigt
wird, und zwar bei dem Schritt 284. Nachfolgend dem Schritt 284 folgt
ein Schritt 286, bei dem eine Bestätigung zur örtlichen Speichervorrichtung 24 zurückgesendet
wird, dass die Bestätigung
von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet
worden ist, so dass die örtliche
Speichervorrichtung 24 darüber informiert wird, dass die
Bestätigung
erfolgreich war. Nachfolgend dem Schritt 286 wird die Verarbeitung
vervollständigt.
-
Um
nun auf 9 einzugehen, so veranschaulicht
ein Flussdiagramm 300 mehr in Einzelheiten die Schritt 276, 284 von 8,
wobei die entfernt gelegene Speichervorrichtung 26 die
aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 wieder
herstellt. Die Verarbeitung beginnt bei einem ersten Schritt 302,
bei dem ein Zeiger eingestellt wird, um auf den ersten Schlitz der
aktiven einen Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu
zeigen. Der Zeiger wird dazu verwendet, um durch jeden Spurtabelleneintrag
der aktiven einen Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 hindurch
zu laufen, von denen jede individuell verarbeitet wird. Nachfolgend dem
Schritt 302 folgt ein Testschritt 304, bei dem
bestimmt wird, ob die Spur der aktiven einen Vorrichtung 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 werden
könnte.
Im anderen Fall wird die Steuerung von dem Schritt 304 zu einem
Schritt 306 übergeben,
bei dem ein entsprechender Schlitz der aktiven einen Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 256 blockiert
wird.
-
Nachfolgend
dem Schritt 306 folgt ein Testschritt 308, bei
dem bestimmt wird, ob der entsprechende Schlitz der logischen Standardvorrichtung 252 bereits
in dem Cachespeicher der entfernt gelegenen Speichervorrichtung 26 vorhanden
ist. Wenn dies der Fall ist, wird die Steuerung von dem Testschritt 308 zu
einem Schritt 312 übergeben,
bei dem der Schlitz der logischen Standardvorrichtung blockiert
wird. Nachfolgend dem Schritt 312 wird ein Schritt 314 ausgeführt, bei
dem die Daten von der aktiven einen Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256 mit den Daten kombiniert werden,
die in dem Cache für
die logische Standardvorrichtung 252 vorhanden sind. Das
Kombinieren oder Mischen der Daten bei dem Schritt 314 involviert das Überschreiben
der Daten für
die logische Standardvorrichtung mit neuen Daten der aktiven einen Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 256.
Es sei erwähnt,
dass es bei Ausführungsformen,
die Aufzeichnungswertflags vorsehen, möglich sein kann, die neuen
Aufzeichnungen aus der aktiven einen Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 mit einer
ODER-Funktion mit den Aufzeichnungen der logischen Standardvorrichtung 252 in
dem Cache zu verknüpfen.
Das heißt,
wenn die Aufzeichnungen verschachtelt sind, ist es lediglich erforderlich,
die Aufzeichnungen von der aktiven einen Vorrichtung der lediglich
virtuellen Cachevorrichtungen 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 wird ein Schritt 318 ausgeführt, bei
dem der Schlitz der aktiven einen Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256, der verarbeitet wird,
ebenfalls entriegelt wird.
-
Wenn
bei dem Testschritt 308 bestimmt wird, dass der entsprechende
Schlitz der logischen Standardvorrichtung 252 nicht in
dem Cache vorhanden ist, wird die Steuerung von dem Testschritt 308 zu
einem Schritt 322 übergeben,
bei dem der Spureintrag für
den Schlitz der logischen Standardvorrichtung 252 geändert wird,
um anzuzeigen, dass der Schlitz der logischen Standardvorrichtung 252 in
dem Cache ist (z. B. ein IN_CACHE-Flag kann gesetzt werden) und
ausgelesen werden muss. Wie noch erläutert wird, kann es bei einigen
Ausführungsformen
erforderlich sein, lediglich Aufzeichnungen der Spur, welche einen
geeigneten Spiegelbitsatz aufweist, ausgelesen zu werden (destaged).
Nachfolgend dem Schritt 322 wird ein Schritt 324 ausgeführt, 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 durchgeführt wurden,
erfolgreich waren. In einigen Fällen
kann eine einzelne Operation, die als "vergleichen und austauschen"-Operation bezeichnet
wird, dazu verwendet werden, um die Schritte 322, 324, 326 durchzuführen. Wenn
diese Operationen aus irgendeinem Grund nicht erfolgreich sind, wird
die Steuerung von dem Schritt 328 zurück zu dem Schritt 308 übertragen,
um erneut eine Überprüfung vorzunehmen,
wenn die entsprechende Spur der logischen Standardvorrichtung 262 in
dem Cache vorhanden ist. Ansonsten wird, wenn bei dem Testschritt 328 bestimmt
wurde, dass die früheren
Operationen erfolgreich waren, die Steuerung von dem Testschritt 328 zu
dem Schritt 318 übergeben,
der weiter oben erläutert
wurde.
-
Nachfolgend
dem Schritt 318 wird ein Testschritt 332 eingefügt, bei
dem bestimmt wird, ob der Cacheschlitz der aktiven einen Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 258 (der
wieder hergestellt wird) noch in Verwendung ist. In einigen Fällen kann
es möglich
sein, dass der Schlitz für die
aktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 noch
durch einen anderen Spiegel verwendet wird. Wenn bei dem Testschritt 332 bestimmt
wird, dass der Schlitz der lediglich virtuellen Cachevorrichtung
nicht durch einen anderen Spiegel verwendet wird, wird die Steuerung von
dem Testschritt 332 zu einem Schritt 334 überführt, bei
dem der Schlitz für
die Verwendung durch andere Prozesse freigegeben wird (z. B. in
dem Pool an verfügbaren
Schlitzen zurück übergeben
wird, wie dies schon 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 einen Vorrichtung der lediglich virtuellen Cachevorrichtungen 254, 256 zu
verarbeiten. Es sei hervorgehoben, dass der Schritt 336 auch
von dem Testschritt 332 erreicht wird, wenn bei dem Schritt 332 bestimmt
wurde, dass die aktive eine Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256 weiterhin durch irgendeinen
anderen Spiegel verwendet wird. Es sei auch hervorgehoben, dass der
Schritt 336 von dem Testschritt 304 aus erreicht wird,
wenn bei dem Schritt 304 bestimmt wird, dass für den in
Bearbeitung befindlichen Schlitz die aktive eine Vorrichtung der
lediglich virtuellen Cachevorrichtungen 254, 256 auf
die logische Standardvorrichtung 252 zeigt. Nachfolgend
dem Schritt 336 ist ein Testschritt 338 vorgesehen,
bei dem bestimmt wird, ob mehr Schlitze der aktiven Vorrichtung
der lediglich virtuellen Cachevorrichtungen 254, 256 zu verarbeiten
sind. Wenn dies nicht der Fall ist, wird die Verarbeitung 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 ähnlich den
Listen 256, 262, die in 7 gezeigt
sind, zu konstruieren. Wenn die Daten empfangen werden, konstruiert
die entfernt gelegene Speichervorrichtung 26 eine verkettete
Liste an modifizierten Schlitzen. Die Listen, die konstruiert werden,
können
kreisförmig
sein, linear (mit einer NULL-Beendigung) oder können irgendein anderes geeignetes
Design aufweisen. Die Listen können dazu
verwendet werden, die aktive eine Vorrichtung der lediglich virtuellen
Cachevorrichtungen 254, 256 wieder herzustellen.
-
Das
Flussdiagramm 300 von 9 zeigt zwei
alternative Pfade 342, 344, welche den Betrieb von
Ausführungsformen
veranschaulichen, bei denen eine Liste von modifizierten Schlitzen
verwendet wird. Bei dem Schritt 302 wird ein Zeiger (für das Hindurchlaufen
durch die Liste der modifizierten Schlitze verwendet) dazu gebracht,
auf das erste Element der Liste zu zeigen. Nachfolgend dem Schritt 302 folgt ein
Schritt 306, der über
den alternativen Pfad 342 erreicht wird. Bei den Ausführungsformen,
welche die Listen der modifizierten Schlitze verwenden, ist der Testschritt 304 nicht
notwendig, da keine Schlitze auf der Liste zur der logischen Standardvorrichtung 252 zeigen
sollten.
-
Anschließend an
den Schritt 306 wird die Verarbeitung in der oben erläuterten
Weise entsprechend der früheren
Ausführungsform
fortgesetzt, mit der Ausnahme, dass bei dem Schritt 336 die
Liste der modifizierten Schlitze durchgegangen wird, anstelle auf
den nächsten
Schlitz in der COVD zu zeigen. In ähnlicher Weise wird bei dem
Test entsprechend dem Schritt 338 bestimmt, ob der Zeiger
am Ende der Liste ist (oder zurück
zum Anfang im Falle einer kreisförmigen
verketteten Liste gelangt ist). Wenn ferner bei dem Schritt 338 bestimmt
wird, dass mehrere Schlitze zum Verarbeiten vorhanden sind, wird
die Steuerung von dem Schritt 338 zu dem Schritt 306 übergeben,
wie dies durch den alternativen Pfad 344 veranschaulicht
ist. Wie oben erläutert
wurde, kann für 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 logischen Speichervorrichtung 24 beim
Erhöhen
der Sequenzzahl ausgeführt
werden. Die Verarbeitung beginnt bei einem ersten Schritt 352,
bei welchem die örtliche
Speichervorrichtung 24 wenigstens M Sekunden vor einer
Erhöhung
der Sequenzzahl wartet. Bei einer hier beschriebenen Ausführungsform
liegt M bei dreißig,
jedoch kann M natürlich
auch irgendeine andere Zahl sein. Größere Werte für M erhöhen die
Datenmenge, die verloren gehen kann, wenn die Kommunikation zwischen
den Speichervorrichtungen 24, 26 unterbrochen
wird. Jedoch erhöhen
kleinere Werte für
M die Gesamtmenge des Overhead, und zwar auf Grund einer häufigeren
Inkrementierung der Sequenzzahl.
-
Nachfolgend
dem Schritt 352 wird ein Testschritt 354 ausgeführt, bei
dem bestimmt wird, ob alle die HAs der örtlichen Speichervorrichtung 24 ein
Bit gesetzt haben, welches anzeigt, dass die HAs alle die I/Os für eine frühere Sequenzzahl
vervollständigt haben.
Wenn sich die Sequenzzahl ändert,
notiert jede der HAs die Änderung
und setzt ein Bit, welches anzeigt, dass alle I/Os der früheren Sequenzzahl
vervollständigt
worden sind. Wenn sich beispielsweise die Sequenzzahl von N-1 nach
N ändert,
setzt ein HA das Bit, wenn die HA alle I/Os für die Sequenzzahl N-1 vervollständigt hat.
Es sei darauf hingewiesen, dass in einigen Fällen eine einzelne I/O für eine HA eine
lange Zeit benötigen
kann und sich noch im Voranschreiten bzw. in Arbeit befindet, selbst
nachdem sich die Sequenzzahl geändert
hat. Es sei auch hervorgehoben, dass für einige Systeme ein abweichender
Mechanismus verwendet werden kann, um zu bestimmen, ob alle die
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
wurden, wird die Steuerung von dem Schritt 354 zu ei nem
Testschritt 356 übergeben,
bei dem bestimmt wird, ob die inaktive Liste der Listen 74, 76 leer
ist. Es sei darauf hingewiesen, dass eine Sequenzzahlumschaltung
nicht ausgeführt
werden kann, wenn nicht und bis alle die Daten entsprechend der
inaktiven eine der Listen 74, 76 von der logischen Speichervorrichtung 24 zu
der entfernt gelegenen Speichervorrichtung 26 unter Verwendung
des RDF-Protokolls vollständig übertragen
wurden. Wenn einmal bestimmt worden ist, dass die inaktive Liste
der Listen 74, 76 als leer zu gelten hat, dann wird
die Steuerung von dem Schritt 356 zu einem Schritt 358 überführt, bei
welchem eine Bestätigung für die frühere Sequenzzahl
von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 gesendet
wird. Wie oben erläutert worden
ist, empfängt
die entfernt gelegene Speichervorrichtung 26 die Bestätigungsnachricht
für eine
bestimmte Sequenzzahl und veranlasst die entfernt gelegene Speichervorrichtung 26,
damit zu beginnen, die Daten entsprechend der Sequenzzahl wieder herzustellen.
-
Nachfolgend
dem Schritt 358 wird ein Schritt 362 ausgeführt, bei
dem das Kopieren der Daten für die
inaktive Liste von den Listen 74, 76 ausgesetzt wird.
Wie noch weiter erläutert
werden wird, wird die inaktive Liste von den 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 dadurch erzeugt, indem eine Nachricht zu den
RAs 30a–30c gesendet
wird. Es kann jedoch von Fachleuten ohne weiteres erkannt werden,
dass bei Ausführungsformen,
die andere Komponenten zum Vereinfachen des Sendevorgangs von Daten
verwenden, und zwar auf der Grundlage des hier beschriebenen Systems, das
Aussetzen des Kopiervorgangs dadurch realisiert werden kann, indem
geeignete Nachrichten/Befehle zu den anderen Komponenten gesendet
werden.
-
Nachfolgend
dem Schritt 362 wird ein Schritt 364 ausgeführt, bei
dem die Sequenzzahl inkrementiert wird. Nachfolgend dem Schritt 364 wird
ein Schritt 366 ausgeführt,
bei dem die Bits für
die HAs, die bei dem Testschritt 354 verwendet wurden, alle gelöscht werden,
so dass die Bits erneut in Verbindung mit dem Inkrementiervorgang
der Sequenzzahl gesetzt werden können.
Nachfolgend dem Schritt 366 wird ein Testschritt 372 eingefügt, bei
dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung 26 die
Bestätigungsnachricht,
die bei dem Schritt 358 gesendet wurde, anerkannt hat bzw.
bestätigt
hat. Das Bestätigen
der Bestätigungsnachricht wurde
weiter oben in Verbindung mit 8 erläutert. Wenn
einmal bestimmt worden ist, dass die entfernt gelegene Speichervorrichtung 26 die
Bestätigungsnachricht
anerkannt hat, die bei dem Schritt 385 ausgesendet wurde,
wird die Steuerung von dem Schritt 372 zu einem Schritt 374 übertragen,
bei welchem das Aussetzen des Kopiervorgangs, was bei dem Schritt 362 erzeugt
wurde, gelöscht
wird, so dass der Kopiervorgang wieder aufgenommen werden kann. Nachfolgend
dem Schritt 374 wird die Verarbeitung vervollständigt. Es
sei darauf hingewiesen, dass es möglich ist, von dem Schritt 374 zurück zu dem Schritt 352 zu
gelangen, um einen neuen Zyklus zu beginnen, um kontinuierlich die
Sequenzzahl zu inkrementieren.
-
Es
ist auch möglich,
COVDs an der R1-Vorrichtung zum Sammeln von Schlitzen zu verwenden, die
aktiven Daten und inaktiven Paketen der Daten zugeordnet sind. In
diesem Fall kann genauso wie in Verbindung mit der R2-Vorrichtung
eine COVD der inaktiven Sequenzzahl zugeordnet werden und eine andere
COVD kann der aktiven Sequenzzahl zugeordnet werden. Dies wird noch
weiter unten beschrieben.
-
Gemäß 11 veranschaulicht ein Diagramm 400 Elemente,
die zum Konstruieren und Aufrechterhalten von Datenpaketen (chunks) 52, 54 verwendet
werden. Eine logische Standardvorrichtung 402 enthält Daten,
die durch den Host 22 eingeschrieben wurden und entspricht
dem Datenelement 51 von 2 und
den Platten 33a–33c von 1. Die
logische Standardvorrichtung 402 enthält Daten, die durch den Host 22 zu
der örtlichen
Speichervorrichtung 24 hin geschrieben wurden.
-
Es
werden zwei lediglich virtuelle Cachevorrichtungen 404, 406 in
Verbindung mit der logischen Standardvorrichtung 402 verwendet.
Die lediglich virtuellen Cache vorrichtungen 404, 406 bzw.
die denen entsprechenden Vorrichtungstabellen können beispielsweise in dem
Speicher 37 der örtlichen
Speichervorrichtung 24 gespeichert werden. Jeder Spureintrag
der Tabellen von jedem der lediglich virtuellen Cachevorrichtungen 404, 406 zeigt
auf entweder 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 Cachespeicher 408 in dem Speicher 37 der örtlichen
Speichervorrichtung 24 vorgesehen sein.
-
Der
Cachespeicher 408 enthält
eine Vielzahl an Cacheschlitzen 412–414, die in Verbindung
mit Schreibeinträgen
der logischen Standardvorrichtung 402 verwendet werden
können,
und wird zur gleichen Zeit in Verbindung mit den lediglich virtuellen
Cachevorrichtungen 404, 406 verwendet. 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
ein Eintrag in der Spurtabelle für
jede der lediglich virtuellen Cachevorrichtungen 404, 406 einen
Zeiger zu einem der Schlitze 412–414 in dem Cachespeicher 408.
-
Jeder
der lediglich virtuellen Cachespeicher 404, 406 kann
für eines
der Datenpakete 52, 54 verwendet werden, so dass
beispielsweise die lediglich virtuelle Cachevorrichtung 404 dem
Datenpaket 52 für
die Sequenzzahl N entsprechen kann, während der lediglich virtuelle
Cachespeicher 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 Cachespeicher 408 geliefert
und ein geeigneter Zeiger der lediglich virtuellen Cachevorrichtung 404 wird
eingestellt. Es sei darauf hingewiesen, dass die Daten aus dem Cachespeicher 408 solange
nicht entfernt werden, bis die Daten zu der logischen Standardvorrichtung 402 ausgelesen
worden sind und es werden die Daten auch durch den lediglich virtuellen
Cachespeicher 404 in der noch zu beschreibenden Weise freigegeben.
-
Bei
einer hier beschriebenen Ausführungsform
wird eine der lediglich virtuellen Cachevorrichtungen 404, 406 als "aktiv" betrachtet, während die andere
Vorrichtung als "inaktiv" betrachtet wird. Wenn
somit beispielsweise die Sequenzzahl N geradzahlig ist, kann die
lediglich virtuelle Cachevorrichtung 404 die aktive sein,
während
die lediglich virtuelle Cachevorrichtung 406 die inaktive
ist. Die aktive Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 handhabt
Schreibeinträge von
dem Host 22, während
die inaktive Cachevorrichtung 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 werden, gesammelt
werden, und zwar unter Verwendung der aktiven Cachevorrichtung von den
virtuellen Cachevorrichtungen 404, 406 (für die Sequenzzahl
N), werden die Daten entsprechend der inaktiven Cachevorrichtung
der lediglich virtuellen Cachevorrichtungen 404, 406 (für die frühere Sequenzzahl
N-1) von der örtlichen
Speichervorrichtung 24 zu der entfernt gelegenen Speichervorrichtung 26 übertragen.
Für diese
und damit in Beziehung stehende Ausführungsformen handhaben die DAs 35a-35c der örtlichen
Speichervorrichtung den Abtastvorgang der inaktiven Cachevorrichtung
der lediglich virtuellen Cachevorrichtungen 404, 406,
um Kopieranfragen zu einer oder zu mehreren der RAs 30a–30c zu
senden, um die Daten von der örtlichen Speichervorrichtung 24 zu
der entfernt gelegenen Speichervorrichtung 26 zu senden.
Somit können
die Schritt 362, 374, die oben in Verbindung mit
dem Aussetzen und Wiederaufnehmen des Kopiervorganges erläutert wurden,
auch das Liefern von Nachrichten/Befehlen zu den DAs 35a–35c enthalten.
-
Nachdem
die Daten einmal zu der entfernt gelegenen Speichervorrichtung 26 übertragen
worden sind, kann der entsprechende Eintrag in der inaktiven einen
Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 auf
Null gestellt werden. Zusätzlich
können
auch Daten von dem Cachespeicher 408 entfernt werden (das
heißt
der Schlitz wird zu dem Pool an Schlitzen für spätere Verwendung zurückge führt), wenn
die Daten in dem Schlitz nicht anderweitig für einen anderen Zweck benötigt werden
(z. B. zum Auslesen zu der logischen Standardvorrichtung 402 hin).
Es kann ein Mechanismus verwendet werden, um sicherzustellen, dass
die Daten nicht aus dem Cachespeicher 408 entfernt werden, bis
alle Spiegel (inklusive den 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
dem US-Patent Nr. 6,594,742, ausgegeben am 15. Juli 2003, beschrieben,
die beide hier unter Hinweis 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 durchführt,
und zwar für
Ausführungsformen,
bei denen zwei COVDs durch die R1-Vorrichtung verwendet werden,
um das hier beschriebene System zu bilden. Die Verarbeitung beginnt
bei einem ersten Schritt 442, bei welchem ein Schlitz entsprechend
dem Schreibeintrag blockiert wird. Bei einer hier beschriebenen
Ausführungsform entspricht
jeder der Schlitze 412, 414 des Cachespeichers 408 einer
Spur an Daten auf der logischen Standardvorrichtung 402.
Das Blockieren des Schlitzes bei dem Schritt 442 verhindert
zusätzliche
Verarbeitungen am Betrieb in Verbindung mit dem relevanten Schlitz,
und zwar während
dem eine Verarbeitung durch den HA 28 ausgeführt wird,
entsprechend den Schlitzen des Flussdiagramms 440.
-
Nachfolgend
dem Schritt 442 wird ein Schritt 444 ausgeführt, bei
dem ein Wert von N, also der Sequenzzahl, eingestellt wird. Genauso
wie bei der Ausführungsform,
welche die Listen verwendet anstelle der COVDs auf der R1-Seite,
wird der Wert für die
Sequenzzahl, die bei dem Schritt 444 erhalten wird, während der
gesamten Schreiboperation aufrecht erhalten oder beibehalten, die
durch die HA 28 ausgeführt
wird, während
der Schlitz blockiert ist. Wie noch weiter erläutert werden wird, wird die
Sequenzzahl zu jedem Schreibeintrag zugeordnet, um eines der Datenpakete 52, 54 zu
setzen, zu dem der Schreibeinträge
gehört.
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 wird ein Testschritt 446 ausgeführt, bei
dem bestimmt wird, ob die inaktive Cachevorrichtung von den lediglich
virtuellen Cachevorrichtungen 404, 406 bereits
auf den Schlitz zeigt, der bei dem Schritt 442 blockiert
wurde (der Schlitz, der bearbeitet wurde). Dies kann auftreten, wenn
ein Schreibeintrag zu dem gleichen Schlitz geliefert wurde, wenn
die Sequenzzahl um eins niedriger war als die momentane Sequenzzahl.
Die Daten entsprechend dem Schreibeintrag für die frühere Sequenzzahl können noch
nicht zu der entfernt gelegenen Speichervorrichtung 26 übertragen
worden sein.
-
Bei
dem Testschritt 446 wird bestimmt, dass die inaktive Cachevorrichtung
von den lediglich virtuellen Cachevorrichtungen 404, 406 nicht
auf den Schlitz zeigt und in diesem Fall wird die Steuerung von
dem Testschritt 446 zu einem anderen Testschritt 448 übergeben,
bei welchem bestimmt wird, ob der aktive eine Cachespeicher der
lediglich virtuellen Cachevorrichtungen 404, 406 auf
den Schlitz zeigt. Es ist für
die aktive Cachevorrichtung 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
Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 nicht
auf den Schlitz zeigt, dann wird die Steuerung von dem Testschritt 448 zu
einem Schritt 452 übergeben,
bei welchem ein neuer Schlitz für
die Daten erhalten wird. Nachfolgend dem Schritt 452 wird
ein Schritt 454 ausgeführt,
bei welchem die aktive Cachevorrichtung der lediglich virtuellen
Cachevorrichtungen 404, 406 dazu gebracht wird,
auf den Schlitz zu zeigen.
-
Nachfolgend
dem Schritt 454 oder nachfolgend dem Schritt 448,
wenn der aktive Cachespeicher 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-Schreib-Pending-Flag) gesetzt, um anzuzeigen, dass der
Schlitz zu der entfernt gelegenen Speichervorrichtung 26 unter
Verwendung von RDF übertragen
werden muss. Zusätzlich
wird bei dem Schritt 456 das IN_CACHE-Flag gesetzt, um
anzuzeigen, dass der Schlitz zu der logischen Standardvorrichtung 402 hin ausgelesen
werden muss. Es sei darauf hingewiesen, dass in einigen Fällen dann,
wenn die aktive Vorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 bereits
auf den Schlitz zeigt (wie bei dem Schritt 448 bestimmt
wird), es möglich
ist, dass die RDF_WP- und IN_CACHE-Flags bereits gesetzt worden
sind, und zwar vor der Ausführung
des Schrittes 456. Jedoch stellt das Einstellen oder Setzen
der Flags bei dem Schritt 456 sicher, dass die Flags in
richtiger Weise gesetzt werden, und zwar ungeachtet davon, wie der
früherer
Zustand war.
-
Nachfolgend
dem Schritt 456 wird ein Schritt 458 ausgeführt, bei
dem ein indirektes Flag in der Spurtabelle, welches auf einen Schlitz
zeigt, gelöscht wird,
wodurch angezeigt wird, dass die relevanten Daten in dem Schlitz
vorgesehen sind und nicht in einem verschiedenen Schlitz, auf den
indirekt gezeigt wird. Nachfolgend dem Schritt 458 wird
ein Schritt 462 ausgeführt,
bei dem die durch den Host 22 und den HA 28 zu
schreibenden Daten in den Schlitz geschrieben werden. Nachfolgend
dem Schritt 462 wird ein Schritt 464 ausgeführt, bei
dem der Schlitz entriegelt wird. Nachfolgend dem Schritt 464 wird
die Verarbeitung beendet.
-
Bei
dem Testschritt 446 wird bestimmt, dass die inaktive Cachevorrichtung
der lediglich virtuellen Cachevorrichtungen 404, 406 auf
den Schlitz zeigt und die Steuerung wird dann von dem Schritt 446 zu einem
Schritt 472 übergeben,
bei welchem ein neuer Schlitz erhalten wird. Der neue Schlitz, der
bei dem Schritt 472 erhalten wird, kann für die inaktive
Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 verwendet
werden, um die RDF-Übertragung
zu bewirken, während
der alte Schlitz der aktiven Cachevorrichtung der lediglich virtuellen
Cachevorrichtungen 404, 406 zugeordnet wird, wie
weiter unten noch beschrieben wird.
-
Auf
den 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. Auf den Schritt 474 folgt
ein Schritt 476, bei dem das indirekte Flag (weiter oben
erläutert)
gesetzt wird, um anzuzeigen, dass der Spurtabelleneintrag für die inaktive
Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 auf
den alten Schlitz zeigt, dass jedoch Daten in dem neuen Schlitz vorhanden
sind, auf die durch den 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 zu bewirken, dass der Spurtabelleneintrag anzeigt, dass die Daten
in dem neuen Schlitz vorhanden sind.
-
Nachfolgend
dem Schritt 476 wird ein Schritt 478 ausgeführt, bei
dem Spiegelbits für
die Aufzeichnungen in den neuen Schlitz eingestellt werden. Irgendwelche örtlichen
Spiegelbits, die kopiert wurden, wenn die Daten von dem alten Schlitz
zu dem neuen Schlitz bei dem Schritt 474 kopiert wurden,
werden gelöscht,
da der Zweck des neuen Schlitzes darin besteht, lediglich die RDF-Übertragung
für die
inaktive eine Vorrichtung der lediglich virtuellen Cachevorrichtungen
zu bewirken. Der alte Schlitz wird zur Handhabung von irgendwelchen örtlichen
Spiegeln verwendet. Nachfolgend dem Schritt 478 wird ein Schritt 462 ausgeführt, bei
dem die Daten zu dem Schlitz geschrieben werden. Auf den Schritt 462 folgt ein
Schritt 464, bei welchem der Schlitz entriegelt wird. Nachfolgend
dem Schritt 464 wird die Verarbeitung vervollständigt.
-
Um
nun auf 13 einzugehen, so veranschaulicht
ein Flussdiagramm 500 die Schritte, die in Verbindung mit
der örtlichen
Speichervorrichtung 24 durchgeführt werden, welche das Datenpaket 54 zu der
entfernt gelegenen Speichervorrichtung 26 überträgt. Die Übertragung
involviert im Wesentlichen das Abtasten der inaktiven Vorrichtung
der virtuellen Cachevorrichtungen 404, 406 hinsichtlich
Spuren, die in diese geschrieben wurden, und zwar während einer früheren Iteration,
wenn die inaktive eine Cachevorrichtung der lediglich virtuellen
Cachevorrichtungen 404, 406 aktiv war. Bei dieser
Ausführungsform
tasten die DAs 35a–35c der örtlichen
Speichervor richtung 24 die inaktive Cachevorrichtung der
lediglich virtuellen Cachevorrichtungen 404, 406 ab,
um die Daten für
die Übertragung
zu der entfernt gelegenen Speichervorrichtung 26 durch
einen oder mehrere RAs 30a–30c unter Verwendung
des RDF-Protokolls zu
kopieren.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 502, bei
dem die erste Spur der inaktiven Cachevorrichtung der lediglich
virtuellen Cachevorrichtungen 404, 406 mit einem
Zeiger versehen wird, um den Prozess der Iteration durch all die
Spuren hindurch zu beginnen. Nachfolgend dem ersten Schritt 502 wird
ein Testschritt 504 durchgeführt, bei dem bestimmt wird,
ob das RDF_WP-Flag gesetzt ist. Wie hier erläutert wird, wird das RDF_WP-Flag
dazu verwendet, um anzuzeigen, dass ein Schlitz (Spur) Daten enthält, die über das
RDF-Verbindungsglied übertragen
werden müssen.
Das RDF_WP-Flag zeigt im gesetzten Zustand an, dass wenigstens einige
Daten für
den Schlitz (Spur) unter Verwendung von RDF zu übertragen sind. Bei einer hier
beschriebenen Ausführungsform
wird der gesamte Schlitz bzw. Schlitzinhalt übertragen. Dagegen werden lediglich
Aufzeichnungen innerhalb des Schlitzes, die den geeigneten Spiegelbitsatz
aufweisen (was anzeigt, dass die Aufzeichnungen geändert wurden),
zu der entfernt gelegenen Speichervorrichtung 26 übertragen.
Jedoch kann es bei anderen Ausführungsformen
möglich
sein, den gesamten Schlitz zu übertragen,
unter der Voraussetzung, dass die entfernt gelegene Speichervorrichtung 26 lediglich
Daten entsprechend den Aufzeichnungen schreibt, die einen geeigneten
oder richtigen Spiegelbitsatz haben 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 verarbeitet wird, das gesetzte RDF_WP-Flag besitzt, wird die
Steuerung von dem Schritt 504 zu einem Testschritt 505 übertragen, bei
dem bestimmt wird, ob der Schlitz Daten enthält oder ob der Schlitz ein
indirekter Schlitz ist, der auf einen anderen Schlitz zeigt, der
die relevanten Daten enthält.
In einigen Fällen
kann ein Schlitz Daten für den
Abschnitt der Platte enthalten oder auch nicht enthalten, welcher
dem Schlitz entspricht. Stattdessen kann der Schlitz auch ein indirekter
Schlitz sein, der auf einen anderen Schlitz zeigt, der 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 auf
einen Schritt 506 übergeben,
bei dem die Daten (von dem Schlitz, auf den durch den indirekten
Schlitz gezeigt wird) erhalten werden. Wenn somit der Schlitz aus
einem direkten Schlitz besteht, werden die Daten, die durch RDF zu
senden sind, in dem Schlitz gespeichert, während dann, wenn der Schlitz
ein indirekter Schlitz ist, die durch RDF zu sendenden Daten in
einem anderen Schlitz vorhanden sind, auf den durch den indirekten Schlitz
gezeigt wird.
-
Auf
den Schritt 506 oder den 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,
um von der örtlichen Speichervorrichtung 24 zu
der entfernt gelegenen Speichervorrichtung 26 unter Verwendung
des RDF-Protokolls gesendet zu werden. Nachfolgend dem Schritt 507 wird
ein Testschritt 508 eingefügt, bei dem bestimmt wird,
ob die entfernt gelegene Speichervorrichtung 26 den Empfang
der Daten bestätigt hat.
Wenn dies nicht der Fall ist, verläuft die Steuerung von dem Schritt 508 zurück zu dem
Schritt 507, um die Daten erneut zu senden. Bei anderen
Ausführungsformen
kann eine abweichende und mehr involvierte Verarbeitung verwendet
werden, um Daten zu senden und den Empfang derselben zu bestätigen. Solch
eine Verarbeitung kann einen Fehlerreport enthalten und eine alternative
Verarbeitung, die nach einer bestimmten Zahl zum Versuchen zum Senden der
Daten, die fehlgeschlagen sind, durchgeführt wird.
-
Nachdem
bei dem Testschritt 508 einmal festgelegt 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 wird
ein Schritt 514 ausgeführt,
bei dem geeignete Spiegelflags gelöscht werden, um anzuzeigen,
dass wenigstens der RDF-Spiegel (R2) nicht länger Daten benötigt. Bei
einer hier beschriebenen Ausführungsform
besitzt jede Aufzeichnung, die Teil eines Schlitzes (Spur) ist,
individuelle Spiegelflags, die angeben, welche Spiegel die bestimmte
Aufzeichnung ver wenden. Die R2-Vorrichtung ist einer 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 wird ein Testschritt 516 ausgeführt, bei
dem bestimmt wird, ob irgendwelche Aufzeichnungen der Spur, die
verarbeitet werden, irgendwelche gesetzten anderen Spiegelflags
aufweisen (für
andere 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
unverwendete Schlitze in einem Pool von Schlitzen aufbewahrt, die
für eine
Verwendung verfügbar
sind. Es sei darauf hingewiesen, dass dann, wenn zusätzliche
Flags weiterhin 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 eine andere Spiegelvorrichtung verwendet werden (inklusive
einer anderen R2-Vorrichtung).
Nachfolgend dem Schritt 518 oder nachfolgend dem Schritt 516,
wenn mehr Spiegelflags vorhanden sind, wird ein Schritt 522 ausgeführt, bei
dem ein Zeiger, der dazu verwendet wird, um durch jeden Spureintrag
der inaktiven Cachevorrichtung der lediglich virtuellen Cachevorrichtungen 404, 406 hindurch
zu iterieren, dazu gebracht wird, auf die nächste Spur zu zeigen. Nachfolgend
dem Schritt 522 wird ein Testschritt 524 ausgeführt, bei
dem bestimmt wird, ob mehr Spuren der inaktiven Cachevorrichtung
der lediglich virtuellen Cachevorrichtungen 404, 406 vorhanden
sind, die zu verarbeiten sind. Wenn dies nicht der Fall ist, wird
die Verarbeitung vervollständigt.
Im anderen Fall wird die Steuerung zurück zu dem Testschritt 504 übergeben,
der oben erläutert
wurde. Es sei erwähnt,
dass der Schritt 522 auch von dem Testschritt 504 aus
erreicht wird, wenn bestimmt wird, dass das RDF_WP-Flag nicht für die in
Bearbeitung befindliche Spur gesetzt ist.
-
Gemäß 14 veranschaulicht ein Diagramm 700 einen
Host 702, der an eine Vielzahl an örtlichen Speichervorrichtungen 703–705 gekoppelt ist.
Das Diagramm 700 zeigt auch eine Vielzahl an entfernt gelegenen
Speichervorrichtungen 706–708.
-
Obwohl
lediglich drei örtliche
Speichervorrichtungen 703–705 und drei entfernt
gelegene Speichervorrichtungen 706–708 in dem Diagramm 700 gezeigt
ist, kann das hier beschriebene System auch auf die Verwendung von
irgendeiner Zahl von örtlichen
und entfernt gelegenen Speichervorrichtungen erweitert werden.
-
Jede
der örtlichen
Speichervorrichtungen 703–705 ist an eine entsprechende
eine der entfernt gelegenen Speichervorrichtungen 706–708 gekoppelt,
so dass beispielsweise die örtliche
Speichervorrichtung 703 an die entfernt gelegene Speichervorrichtung 706 gekoppelt
ist, die örtliche
Speichervorrichtung 704 an die entfernt gelegene Speichervorrichtung 707 gekoppelt
ist und die örtliche
Speichervorrichtung 705 an die entfernt gelegene Speichervorrichtung 708 gekoppelt
ist. Die örtlichen
Speichervorrichtungen 703–705 und die entfernt
gelegenen Speichervorrichtungen 706–708 können unter
Verwendung von geordneten Schreibmechanismen gekoppelt sein, die
hier beschrieben werden, so dass beispielsweise die örtliche
Speichervorrichtung 703 an die entfernt gelegene Speichervorrichtung 706 unter
Verwendung des geordneten Schreibmechanismus (ordered writes mechanism)
gekoppelt sein kann. Wie hier noch erläutert wird, erlaubt der geordnete
Schreibmechanismus die Datenwiedergewinnung unter Verwendung der
entfernt gelegenen Speichervorrichtung in Fällen bei denen die örtliche
Speichervorrichtung und/oder der Host mit der Arbeit anhält und/oder
Daten verliert.
-
In
einigen Fällen
kann der Host 702 in einer einzelnen Anwendung laufen,
die gleichzeitig mehr als eine der örtlichen Speichervorrichtungen 703–705 verwendet.
In einem solchen Fall kann die Anwendung so konfiguriert sein, dass
sichergestellt wird, dass die Anwendungsdaten konsistent sind (wieder
gewinnbar), und zwar an den örtlichen
Speichervorrichtungen 703–705, wenn der Host 702 mit der
Arbeit aufhört,
und zwar zu irgendeinem Zeitpunkt, und/oder, wenn eine der örtlichen
Speichervorrichtungen 703–705 ausgefallen ist.
Da jedoch jede der geordneten Schreibverbindungen zwischen den örtlichen
Speichervorrichtungen 703–705 und den entfernt
gelegenen Speichervorrichtungen 706–708 von den anderen
Verbindungen her asynchron sind, gibt es keine Versicherung dafür, dass Daten
für die
Anwendung konsistent bleiben (und somit wieder gewinnbar sind),
und zwar an den entfernt gelegenen Speichervorrichtungen 706–708.
Das heißt,
obwohl beispielsweise die Datenverbindung zwischen der örtlichen
Speichervorrichtung 703 und der entfernt gelegenen Speichervorrichtung 706 (einem
ersten Orts-/Fernpaar) konsistent ist und die Datenverbindung zwischen
der örtlichen
Speichervorrichtung 704 und der entfernt gelegenen Speichervorrichtung 707 (einem
zweiten Orts-/Fernpaar) konsistent ist, ist es nicht notwendigerweise
der Fall, dass die Daten an den entfernt gelegenen Speichervorrichtungen 706, 707 immer
konsistent sind, wenn keine Synchronisation zwischen dem ersten
und dem zweiten Orts-/Fernpaar erfolgt.
-
Für Anwendungen
an dem Host 702, die gleichzeitig eine Vielzahl der örtlichen
Speichervorrichtungen 703–705 verwenden, ist
es wünschenswert,
dass Daten konsistent und wieder gewinnbar sind, und zwar an den
entfernt gelegenen Speichervorrichtungen 706–708.
Dies kann mit Hilfe eines Mechanismus realisiert werden, bei dem
der Host 702 einen zyklischen Schaltvorgang an jeder der örtlichen
Speichervorrichtungen 703, 705 steuert, so dass
die Daten von der Anwendung auf dem Host 702 laufen und
konsistent und wieder gewinnbar bleiben, und zwar an den entfernt
gelegenen Speichervorrichtungen 706–708. Diese Funktionsfähigkeit wird
durch eine spezielle Anwendung realisiert, die auf dem Host 702 läuft und
die eine Vielzahl der örtlichen
Speichervorrichtungen 703–705 in einem Multiboxmodus
schaltet, was noch mehr in Einzelheiten weiter unten beschrieben
wird.
-
Um
nun auf 15 einzugehen, so besitzt eine
Tabelle 730 eine Vielzahl an Einträgen 732–734. Jeder
der Einträge 732–734 entspricht
einem einzelnen Orts-/Fernpaar
der Speichervorrichtungen, so dass beispielsweise der Eintrag 732 dem
Paar gemäß der örtlichen
Speichervorrichtung 703 und der entfernt gelegenen Speichervorrichtung 706 entspricht,
der Eintrag 733 dem Paar gemäß der örtlichen Speichervorrichtung 704 und
der entfernt gelegenen Speichervorrichtung 707 entspricht
und der Eintrag 734 dem Paar gemäß der örtlichen Speichervorrichtung 705 und
der entfernt gelegenen Speichervorrichtung 708 entspricht.
Jeder der Einträge 732–734 umfasst
eine Vielzahl an Feldern, wobei ein erstes Feld 736a–736c eine
Seriennummer der entsprechenden örtlichen
Speichervorrichtung repräsentiert,
ein zweites Feld 738a–738c eine
Kommunikationssteuerungsnummer repräsentiert, die durch die Multiboxgruppe
verwendet wird, ein drittes Feld 742a–742c die Seriennummer
der entsprechenden, entfernt gelegenen Speichervorrichtung des Orts-/Fernpaares
repräsentiert,
und ein viertes Feld 744a–744c eine Kommunikationssteuerungsnummer
für die
Multiboxgruppe repräsentiert.
Die Tabelle 730 wird durch den Host 702 konstruiert
und gehalten, und zwar in Verbindung mit dem Betrieb in dem Multiboxmodus.
Zusätzlich
wird die Tabelle 730 zu jeder der örtlichen Speichervorrichtungen
und der entfernt gelegenen Speichervorrichtungen verbreitet, die
Teil der Multiboxgruppe sind. Die Tabelle 730 kann dazu
verwendet werden, um die Wiedergewinnung oder Wiederherstellung
zu vereinfachen, was noch weiter unten näher erläutert wird.
-
Unterschiedliche
Orts-/Fernpaare können
in den Multiboxmodus eintreten und aus diesem auch austreten, und
zwar unabhängig
in irgendeiner Sequenz und zu irgendeinem Zeitpunkt. Der Host 702 managt
den Eintritt und das Austreten der örtlichen Speichervorrichtung/entfernt
gelegenen Speichervorrichtungspaare in und aus dem Multiboxmodus. Dies
wird mehr in Einzelheiten weiter unten beschrieben.
-
Um
nun auf 16 einzugehen, so veranschaulicht
ein Flussdiagramm 750 die Schritte, die durch den Host 702 in
Verbindung mit dem Eintreten oder Austreten eines Orts-/Fernpaares
in und aus einem Multiboxmodus ausgeführt werden. Die Verarbeitung
beginnt bei einem ersten Schritt 752, bei dem der Multiboxmodusbetrieb
zeitweilig ausgesetzt wird. Das zeitweilige Aussetzen des Multiboxbetriebes
bei dem Schritt 752 ist vorteilhaft, um die Austauschvorgänge zu vereinfachen,
die in Verbindung mit dem Eintreten oder Austreten eines Fern-/Ortspaares
in und aus dem Multiboxmodus ausgeführt werden. Nachfolgend dem
Schritt 752 wird ein Schritt 754 ausgeführt, bei
dem eine Tabelle ähnliche
der Tabelle 730 von 15 modifiziert
wird, um entweder einen Eintrag hinzuzufügen oder weg zu lassen, wie
dies geeignet ist. Nachfolgend dem Schritt 754 wird ein Schritt 756 ausgeführt, bei
dem die modifizierte Tabelle zu den örtlichen Speichervorrichtungen
und den entfernt gelegenen Speichervorrichtungen der Multiboxgruppe
verbreitet wird. Das Verbreiten der Ta belle bei dem Schritt 756 vereinfacht
die Wiedergewinnung bzw. Wiederherstellung, wie dies noch weiter
in Einzelheiten erläutert
wird.
-
Auf
den Schritt 756 folgt ein Schritt 758, bei dem
eine Nachricht zu der beeinflussten örtlichen Speichervorrichtung
gesendet wird, um die Änderung vorzusehen.
Die örtliche
Speichervorrichtung kann sich selbst konfigurieren, um in dem Multiboxmodus zu
arbeiten oder auch nicht, was noch mehr in Einzelheiten weiter unten
beschrieben wird. Wie auch noch weiter mehr in Einzelheiten weiter
unten beschrieben wird, arbeitet eine örtliche Speichervorrichtung,
die geordnete Schreibeinträge
handhabt, unterschiedlich, abhängig
davon, ob diese als Teil einer Multiboxgruppe arbeitet oder nicht.
Wenn die örtliche
Speichervorrichtung zu einer Multiboxgruppe hinzu addiert wird,
zeigt eine Nachricht, die bei dem Schritt 758 gesendet
wird, für
die örtliche
Speichervorrichtung an, dass diese zu einer Multiboxgruppe hinzu addiert
worden ist, so dass die örtliche
Speichervorrichtung sich selbst konfigurieren sollte, um in dem Multiboxmodus
zu laufen. Wenn alternativ eine örtliche
Speichervorrichtung aus einer Multiboxgruppe entfernt wird, zeigt
die bei dem Schritt 758 gesendete Nachricht der örtlichen
Speichervorrichtung an, dass sie aus der Multiboxgruppe entfernt
worden ist, so dass sich die örtliche
Speichervorrichtung selbst konfigurieren sollte, um nicht mehr in
dem Multiboxmodus zu laufen.
-
Nachfolgend
dem Schritt 758 folgt ein Testschritt 762, bei
dem bestimmt wird, ob ein Orts-/Fernpaar zu der Multiboxgruppe hinzu
addiert wurde (entgegen gesetzt zu dem Entfernungsvorgang). Wenn dies
der Fall ist, wie die Steuerung von dem Testschritt 762 zu
einem Schritt 764 übergeben,
bei dem Etiketten Zeichenwerte zu der örtlichen Speichervorrichtung
gesendet werden, die hinzu addiert wird. Die Etikettenzeichenwerte
(tag values) werden mit den Daten geliefert, die von der örtlichen
Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung gesendet
werden, und zwar in einer Weise ähnlich dem
Vorsehen der Sequenznummern mit den Daten. Die Etikettenzeichenwerte
werden durch den Host gesteuert und werden gesetzt, so dass all
die Orts-/Fernpaare Daten senden, welche den gleichen Etikettenzeichenwert
haben, und zwar während
des gleichen Zyklus. Die Verwendung der Etikettenzei chenwerte wird
noch mehr in Einzelheiten weiter unten erläutert. Nachfolgend auf den
Schritt 764 oder nachfolgend auf den Schritt 762,
wenn ein neues Orts-/Fernpaar nicht hinzu addiert wird, folgt ein Schritt 766,
bei dem der Multiboxbetrieb wieder aufgenommen wird. Nachfolgend
dem Schritt 766 wird die Verarbeitung vervollständigt.
-
Gemäß 17 veranschaulicht ein Flussdiagramm 780 Schritte,
die in Verbindung mit dem Host-Management-Zyklusschaltvorgang ausgeführt werden,
und zwar für
Vielfach-Orts-/Fernpaare, die als eine Gruppe in dem Multiboxmodus
laufen. Wie noch erläutert
wird, involviert der Multiboxmodus, dass der Host die Zyklusschaltvorgänge für mehr als ein
Fern-/Ortspaar synchronisiert, um die Datenkonsistenz unter den
entfernt gelegenen Speichervorrichtungen aufrecht zu erhalten. Der
Zyklusschaltvorgang wird durch den Host koordiniert, anstatt intern durch
die örtlichen
Speichervorrichtungen generiert zu werden. Dies wird mehr in Einzelheiten
noch an späterer
Stelle erläutert.
-
Die
Verarbeitung auf der Grundlage des Flussdiagramms 780 beginnt
bei einem Testschritt 782, bei dem bestimmt wird, ob M
Sekunden verstrichen sind. Genauso wie mit dem Nicht-Multiboxbetrieb,
erfolgen Zyklusschaltvorgänge
nicht eher als bis alle M Sekunden verstrichen sind, wobei M eine Zahl
ist, die zum Optimieren verschiedener Performanceparameter ausgewählt wird.
Wenn die Zahl M erhöht
wird, nimmt die Menge an Overhead, die mit dem Schaltvorgang assoziiert
ist, ab. Ein Anheben von M bewirkt jedoch auch, dass die Menge an
Daten, die potenziell in Verbindung mit einem Ausfall verloren gehen
kann, zunimmt. Bei einer hier beschriebenen Ausführungsform wird M so gewählt, dass
es 30 Sekunden beträgt,
obwohl offensichtlich andere Werte für M ebenfalls verwendet werden
können.
-
Wenn
bei dem Testschritt 782 bestimmt wird, dass M Sekunden
noch nicht verstrichen sind, wird die Steuerung zurück zu dem
Schritt 782 übergeben, um
das Warten bis zum Verstreichen der M Sekunden fortzusetzen. Wenn
bei dem Testschritt 782 einmal bestimmt worden ist, dass
M Sekunden verstrichen sind, wird die Steuerung von dem Schritt 782 zu einem
Schritt 784 übertragen,
bei dem der Host bei allen örtli chen
Speichervorrichtungen in der Multiboxgruppe anfragt, um zu bestimmen,
ob alle Orts-/Fernpaare bereit sind, umgeschaltet zu werden. Die Orts-/Fernpaare,
die bereit sind, umgeschaltet zu werden, werden noch weiter unten
in Einzelheiten erläutert.
-
Nachfolgend
auf den Schritt 784 wird ein Testschritt 786 ausgeführt, bei
dem Bestimmt wird, ob alle die Orts-/Fernpaare bereit sind, umgeschaltet zu
werden. Wenn dies nicht der Fall ist, verläuft die Steuerung zurück zu dem
Schritt 784, um die Anfrage wieder aufzunehmen. Bei einer
Ausführungsform
ist es lediglich erforderlich, die Orts-/Fernpaare abzufragen, die
an früherer
Stelle noch nicht bereit waren, umzuschalten, da dann, wenn ein
Orts-/Fernpaar einmal bereit ist, umzuschalten, dieses Paar so bleibt,
bis der Schaltvorgang dann auftritt.
-
Wenn
bei dem Testschritt 786 einmal bestimmt worden ist, dass
all die Orts-/Fernpaare
in der Multiboxgruppe bereit sind, umgeschaltet zu werden, wird
die Steuerung von dem Schritt 786 zu einem Schritt 788 übergeben,
bei dem eine Indexvariable N gleich Eins gesetzt wird. Die Indexvariable
N wird dazu verwendet, durch all die Orts-/Fernpaare hindurch zu
iterieren (das heißt
durch alle die Einträge 732–734 der
Tabelle 730 von 15).
Nachfolgend dem Schritt 788 wird ein Testschritt 792 ausgeführt, bei
dem bestimmt wird, ob die Indexvariable N größer ist als die Zahl der Orts-/Fernpaare
in der Multiboxgruppe. Wenn dies nicht der Fall ist, wird die Steuerung
von dem Schritt 792 auf einen Schritt 794 übertragen,
bei dem ein offenes Fenster für
die N-te örtliche
Speichervorrichtung des N-ten Paares durch den Host realisiert wird,
der einen Befehl zu der N-ten örtlichen
Speichervorrichtung sendet (z.B. einen geeigneten Systembefehl).
Das Öffnen
des Fensters für die
N-te örtliche
Speichervorrichtung bei dem Schritt 794 bewirkt, dass die
N-te örtliche
Speichervorrichtung die Schreibvorgänge aussetzt, so dass jeglicher Schreibvorgang
durch einen Host, der nicht früher begonnen
wurde, um das Fenster bei dem Schritt 794 zu öffnen, nicht
vervollständigt
wird, bis das Fenster geschlossen wird (wird noch weiter unten beschrieben).
Das Nicht-Vervollständigen
einer Schreiboperation verhindert einen zweiten abhängigen Schreibvorgang
am Auftreten, und zwar vor der Vervollständigung des Zyklusschaltvorganges.
Jegliche Schreibvorgänge,
die im Begriff sind, aus geführt
zu werden, die vor dem Öffnen
des Fensters begonnen wurden, können
vervollständigt
werden, und zwar bevor das Fenster geschlossen wird.
-
Nachfolgend
dem Schritt 794 wird ein Schritt 796 ausgeführt, bei
dem ein Zyklusschaltvorgang für die
N-te örtliche
Speichervorrichtung ausgeführt
wird. Das Ausführen
des Zyklusschaltvorganges bei dem Schritt 796 involviert
das Senden eines Befehls von dem Host 702 zu der N-ten örtlichen
Speichervorrichtung. Die Verarbeitung des Befehls von dem Host durch
die N-te örtliche
Speichervorrichtung wird noch weiter unten mehr in Einzelheiten
erläutert.
Teil der Verarbeitung, die bei dem Schritt 796 durchgeführt wird,
kann enthalten, dass der Host neue Werte für die Etikettenzeichen liefert,
die den Daten zugeordnet werden. Die Etikettenzeichen (tags) werden
noch weiter unten näher
erläutert.
Bei einer alternativen Ausführungsform
können
die Operationen, die bei den Schritte 794, 796 ausgeführt werden,
in Form eines einzelnen integrierten Schrittes 797 ausgeführt werden,
was durch das Kästchen
angezeigt ist, welches um die Schritte 794, 796 herum
gezeichnet ist.
-
Nachfolgend
dem Schritt 796 wird ein Schritt 798 ausgeführt, bei
welchem die Indexvariable N inkrementiert wird. Nachfolgend dem
Schritt 798 wird die Steuerung zurück zu dem Testschritt 792 übergeben,
um zu bestimmen, ob die Indexvariable N größer ist als die Zahl der Orts-/Fernpaare.
-
Wenn
bei dem Testschritt 792 bestimmt wird, dass die Indexvariable
N größer ist
als die Zahl der Orts-/Fernpaare, wird die Steuerung von dem Testschritt 792 auf
einen Schritt 802 übergeben,
bei welchem die Indexvariable N gleich Eins gesetzt wird. Nachfolgend
des Schritt 802 wird ein Testschritt 804 eingefügt, der
bestimmt, ob die Indexvariable N größer ist als die Zahl der Orts-/Fernpaare.
Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 804 auf
einen Schritt 806 überführt, bei
dem das Fenster für
die N-te örtliche
Speichervorrichtung geschlossen wird. Das Schließen des Fensters bei dem Schritt 806 wird
dadurch ausgeführt,
indem der Host einen Befehl zu der N-ten örtlichen Speichervorrichtung
sendet, um die N-te örtliche
Speichervorrichtung zu veranlassen, Schreiboperationen wieder aufzunehmen.
Somit können
jegliche Schreibvorgänge, die
im Begriff sind, ausgeführt
zu werden und die durch das Öffnen
des Fensters bei dem Schritt 794 ausgesetzt wurden, nun
vervollständigt
werden, und zwar nach der Ausführung
des Schrittes 806. Nachfolgend dem Schritt 806 wird
die Steuerung zu einem Schritt 808 übergeben, bei welchem die Indexvariable 808 übergeben,
bei welchem die Indexvariable N inkrementiert wird. Nachfolgend
dem Schritt 808 verläuft
die Steuerung zurück
zu dem Testschritt 804, um zu bestimmen, ob die Indexvariable
N größer ist als
die Zahl der Orts-/Fernpaare. Wenn dies der Fall ist, wird die Steuerung
von dem Testschritt 804 zurück zu dem Schritt 782 übergeben,
um mit der Verarbeitung für
den nächsten
Zyklusschaltvorgang zu beginnen.
-
Gemäß 18 veranschaulicht ein Flussdiagramm 830 Schritte,
die durch eine örtliche
Speichervorrichtung in Verbindung mit dem Zyklusschaltvorgang ausgeführt werden.
Das Flussdiagramm 830 von 18 ersetzt
das Flussdiagramm 350 von 10 in
Fällen,
bei denen die örtliche
Speichervorrichtung sowohl den Multiboxmodus als auch den Nicht-Multiboxmodus
unterstützt.
Das heißt,
das Flussdiagramm 830 zeigt Schritte, die ähnlich denjenigen
des Flussdiagramms 350 von 10 ausgeführt werden,
um den Nicht-Multiboxmodus zu unterstützen und zusätzlich sind
Schritte enthalten, um den Multiboxmodus zu unterstützen.
-
Die
Verarbeitung beginnt bei einem ersten Testschritt 832,
bei dem bestimmt wird, ob die örtliche Speichervorrichtung
im Multiboxmodus arbeitet. Es sei darauf hingewiesen, dass das Flussdiagramm 750 von 16 den Schritt 758 zeigt, wobei der Host eine
Nachricht zu der örtlichen
Speichervorrichtung sendet. Die bei dem Schritt 758 gesendete
Nachricht zeigt der örtlichen
Speichervorrichtung an, ob sich die örtliche Speichervorrichtung
in dem Multiboxmodus befindet oder nicht. Nach dem Empfang der Nachricht,
die durch den Host bei dem Schritt 758 gesendet wird, setzt
die örtliche
Speichervorrichtung eine interne Variable, um anzuzeigen, ob die örtliche Speichervorrichtung
sich in dem Multiboxmodus befindet bzw. in diesem arbeitet oder
nicht. Die interne Variable kann bei dem Testschritt 832 geprüft werden.
-
Wenn
bei dem Testschritt 832 bestimmt wird, dass die örtliche
Speichervorrichtung sich nicht in dem Multiboxmodus befindet, wird
die Steuerung von dem Testschritt 832 zu einem Schritt 834 übertragen, um
M Sekunden auf den Zyklusschaltvorgang zu warten. Wenn die örtliche
Speichervorrichtung nicht in dem Multiboxmodus arbeitet, steuert
die örtliche Speichervorrichtung
ihren eigenen Zyklusschaltvorgang und führt somit den Schritt 834 aus,
um M Sekunden zu warten, bevor der nächste Zyklusschaltvorgang initialisiert
wird.
-
Nachfolgend
dem Schritt 834 oder nachfolgend dem Schritt 832,
wenn die örtliche
Speichervorrichtung sich in dem Multiboxmodus befindet, folgt ein
Testschritt 836, bei dem bestimmt wird, ob alle die HAs
der örtlichen
Speichervorrichtung ein Bit gesetzt haben, welches anzeigt, dass
die HAs alle die I/Os für
eine frühere
Sequenzzahl vervollständigt
haben. Wenn sich die Sequenzzahl ändert, nimmt jede der HAs dies
wahr und setzt ein Bit, welches anzeigt, dass alle I/Os der früherer Sequenzzahl
vervollständigt
worden sind. Wenn sich beispielsweise die Sequenzzahl von N-1 auf
N ändert,
setzt eine HA das Bit, wenn die HA alle I/Os für die Sequenzzahl N-1 vervollständigt hat.
Es sei darauf hingewiesen, dass in einigen Fällen eine einzelne I/O für eine HA
eine lange Zeit benötigen
kann und noch in der Entwicklung sein kann, selbst wenn sich die
Sequenzzahl geändert
hat. Es sei auch darauf hingewiesen, dass bei einigen Systemen ein
unterschiedlicher Mechanismus dazu verwendet werden kann, um zu
bestimmen, ob alle HAs ihr N-1 I/O vervollständigt haben. Der abweichende
Mechanismus kann das Prüfen von
Vorrichtungstabellen umfassen. Wenn einmal bei dem Testschritt 836 bestimmt
worden ist, dass alle HAs das geeignete Bit gesetzt haben, wird
die Steuerung von dem Testschritt 836 zu einem Schritt 888 übergeben,
bei dem bestimmt wird, ob das inaktive Paket für die örtliche Speichervorrichtung
leer ist. Wenn bei dem Testschritt 888 einmal bestimmt
worden ist, dass das inaktive Paket leer ist, wird die Steuerung
von dem Schritt 888 zu einem Schritt 899 übergeben,
bei dem das Kopieren von Daten von der örtlichen Speichervorrichtung
zu der entfernt gelegenen Speichervorrichtung ausgesetzt wird. Es
ist von Vorteil, den Kopiervorgang von Daten so lange auszusetzen,
bis die Sequenzzahlumschaltung vervollständigt worden ist.
-
Nachfolgend
dem Schritt 899 folgt ein Testschritt 892, um
zu bestimmen, ob die örtliche
Speichervorrichtung sich in dem Multiboxmodus befindet. Wenn bei
dem Testschritt 892 bestimmt wird, dass sich die örtliche
Speichervorrichtung in dem Multiboxmodus befindet, wird die Steuerung
von dem Testschritt 892 zu einem Testschritt 894 übertragen,
um zu bestimmen, ob das aktive Paket (chunk) der entsprechenden,
entfernt gelegenen Speichervorrichtung leer ist. Wie noch weiter
unten mehr in Einzelheiten erläutert
wird, sendet die entfernt gelegene Speichervorrichtung eine Nachricht
zu der örtlichen Speichervorrichtung,
wenn sie einmal ihr aktives Paket geleert hat. Im Ansprechen auf
die Nachricht setzt die örtliche
Speichervorrichtung eine interne Variable, die bei dem Testschritt 894 geprüft wird.
-
Wenn
bei dem Testschritt 894 einmal bestimmt worden ist, dass
das aktive Paket der entfernt gelegenen Speichervorrichtung leer
ist, wird die Steuerung von dem Testschritt 894 zu einem
Schritt 896 übertragen,
bei dem eine interne Variable bei einer örtlichen Speichervorrichtung
gesetzt wird, die anzeigt, dass die örtliche Speichervorrichtung
für Schaltzyklen
bereit ist. Wie weiter oben in Verbindung mit dem Flussdiagramm 780 von 17 erläutert
wurde, fragt der Host bei jeder örtlichen
Speichervorrichtung an, um zu bestimmen, ob jede der örtlichen
Speichervorrichtungen für
einen Umschaltvorgang bereit ist. Im Ansprechen auf die Anfrage,
die durch den Host vorgesehen wird, überprüft die örtliche Speichervorrichtung
die interne Variable, die bei dem Schritt 896 gesetzt wurde
und schickt das Ergebnis zu dem Host zurück.
-
Auf
den Schritt 896 folgt ein Testschritt 898, bei
welchem die örtliche
Speichervorrichtung darauf wartet, einen Befehl von dem Host zur
Durchführung des
Zyklusschaltvorganges zu empfangen. Wie in Verbindung mit dem Flussdiagramm 780 von 17 erläutert
worden ist, liefert der Host einen Befehl in Verbindung mit Schaltzyklen
zu der örtlichen
Speichervorrichtung, wenn die örtliche
Speichervorrichtung in dem Multiboxmodus arbeitet. Somit wartet
die örtliche
Speichervorrich tung bei dem Schritt 898 auf den Befehl,
der lediglich dann erreicht wird, wenn die örtliche Speichervorrichtung
in dem Multiboxmodus arbeitet.
-
Wenn
die örtliche
Speichervorrichtung den Umschaltbefehl von dem Host einmal empfangen hat,
wird die Steuerung von dem Schritt 898 auf einen Schritt 902 übergeben,
um eine Bestätigungsnachricht
zu der entfernt gelegenen Speichervorrichtung zu senden. Es sei
erwähnt,
dass der Schritt 902 auch von dem Testschritt 892 aus
erreicht werden kann, wenn bei dem Testschritt 892 bestimmt
wird, dass sich die örtliche
Speichervorrichtung nicht in dem Multiboxmodus befindet. Bei dem
Schritt 902 sendet die örtliche
Speichervorrichtung eine Bestätigungsnachricht
zu der entfernt gelegenen Speichervorrichtung. Im Ansprechen auf
den Empfang einer Bestätigungsnachricht
für eine
bestimmte Sequenzzahl, beginnt die entfernt gelegene Speichervorrichtung
mit der Wiederherstellung der Daten entsprechend der Sequenzzahl,
wie dies oben erläutert
wurde.
-
Nachfolgend
dem Schritt 902 wird ein Schritt 906 ausgeführt, bei
welchem die Sequenzzahl inkrementiert wird und ein neuer Wert für das Etikettenzeichen
(tag) (von dem Host) gespeichert wird. Die Sequenzzahl ist so beschaffen,
wie dies oben dargelegt wurde. Das Etikettenzeichen besteht aus
einem Etikettenzeichen, welches an die örtliche Speichervorrichtung
bei dem Schritt 764 und bei dem Schritt 796 geliefert
wird, wie dies oben erläutert
wurde. Das Etikettenzeichen wird dazu verwendet, die Wiederherstellung
von Daten zu vereinfachen, wie dies ebenfalls irgendwo erläutert wurde.
-
Auf
den Schritt 906 folgt ein Schritt 907, bei dem
die Vervollständigung
des Zyklusschaltvorganges bestätigt
wird, und zwar von der örtlichen
Speichervorrichtung zu dem Host hin, indem eine Nachricht von der örtlichen
Speichervorrichtung zu dem Host gesendet wird. Bei einigen Ausführungsformen ist
es möglich,
den Schritt 907 bedingt auszuführen, abhängig davon, ob die örtliche
Speichervorrichtung im Multiboxmodus ist oder nicht, da dann, wenn
die örtliche
Speichervorrichtung nicht im Multiboxmodus ist, der Host nicht notwendigerweise
daran interessiert ist, wenn Zyklusschaltvorgänge auftreten.
-
Nachfolgend
dem Schritt 907 folgt ein Schritt 908, bei dem
die Bits für
die HAs, die bei dem Testschritt 836 verwendet werden,
alle gelöscht
werden, so dass die Bits erneut in Verbindung mit einer Inkrementierung
der Sequenzzahl gesetzt werden können.
Nachfolgend dem Schritt 908 folgt ein Testschritt 912,
bei dem bestimmt wird, ob die entfernt gelegene Speichervorrichtung
die Bestätigungsnachricht
anerkannt hat. Es sei darauf hingewiesen, dass dann, wenn das Orts-/Fernpaar
im Multiboxmodus arbeitet und das aktive Paket der entfernt gelegenen
Speichervorrichtung bei dem Schritt 894 als leer bestimmt wurde,
dann die entfernt gelegene Speichervorrichtung die Bestätigungsnachricht
nahezu unmittelbar anerkennen sollte, da die entfernt gelegene Speichervorrichtung
dann bereit wird, für
den Zyklusschaltvorgang, und zwar in unmittelbarer Weise, da das
aktive Paket derselben bereits leer ist.
-
Wenn
bei dem Testschritt 912 einmal bestimmt wurde, dass die
Bestätigungsnachricht
durch die entfernt gelegene Speichervorrichtung anerkannt worden
ist, verläuft
die Steuerung von dem Schritt 912 zu einem Schritt 914,
bei dem das Aussetzen des Kopiervorganges, was bei dem Schritt 899 realisiert
wurde, gelöscht
wird, so dass der Kopiervorgang von der örtlichen Speichervorrichtung
zu der entfernt gelegenen Speichervorrichtung wieder aufgenommen
werden kann. Nachfolgend dem Schritt 914 ist die Verarbeitung
dann vollständig.
-
Gemäß 19 veranschaulicht ein Flussdiagramm 940 Schritte,
die in Verbindung mit RAs ausgeführt
werden, welche inaktive Pufferstufen abtasten, um RDF-Daten von der örtlichen
Speichervorrichtung zu der entfernt gelegenen Speichervorrichtung
zu übertragen.
Das Flussdiagramm 940 von 19 ist ähnlich dem
Flussdiagramm 200 von 6 und
es sind ähnliche
Schritt mit den gleichen Bezugszeichen versehen. Jedoch enthält das Flussdiagramm 940 zwei
zusätzliche
Schritte 942, 944, die in dem Flussdiagramm 200 von 6 nicht
gefunden werden können.
Die zusätzlichen
Schritt 942, 944 werden dazu verwendet, um die
Multiboxverarbeitung zu ver einfachen. Nachdem die Daten bei dem Schritt 212 gesendet
worden sind, verläuft
die Steuerung von dem Schritt 212 zu einem Testschritt 942, bei
dem bestimmt wird, ob die gesendeten Daten die letzten Daten in
dem inaktiven Paket der örtlichen Speichervorrichtung
sind. Wenn dies nicht der Fall ist, wird die Steuerung von dem Schritt 942 zu
dem Schritt 214 übertragen
und die Verarbeitung wird fortgesetzt, und zwar in der oben erläuterten
Weise in Verbindung mit dem Flussdiagramm 200 von 6. Wenn
im anderen Fall bestimmt wird, und zwar bei dem Testschritt 942,
dass Daten, die gesendet werden, die letzten Daten des Paketes sind,
dann wird die Steuerung von dem Schritt 942 zu dem Schritt 944 übertragen,
um eine Spezialnachricht von der örtlichen Speichervorrichtung
zu der entfernt gelegenen Speichervorrichtung zu senden, die anzeigt, dass
die letzten Daten gesendet worden sind. Nachfolgend dem Schritt 944 verläuft die
Steuerung zu einem Schritt 214 und es wird die Verarbeitung
fortgeführt,
und zwar in der oben erläuterten
Weise, entsprechend dem Flussdiagramm 200 von 6.
Bei einigen Ausführungsformen
können
die Schritte 942, 944 durch einen getrennten Prozess
(und/oder eine getrennte Hardwarevorrichtung) durchgeführt werden,
der von dem Prozess und/oder Hardwarevorrichtung verschieden ist,
welche Daten überträgt.
-
Gemäß 20 veranschaulicht ein Flussdiagramm 950 Schritte,
die in Verbindung mit den RAs ausgeführt werden, welche inaktive
Pufferstufen abtasten, um RDF-Daten von der örtlichen Speichervorrichtung
zu der entfernt gelegenen Speichervorrichtung zu übertragen.
Das Flussdiagramm 950 von 20 ist ähnlich dem
Flussdiagramm 500 von 13 aufgebaut
und ähnliche
Schritte sind mit gleichen Bezugszeichen versehen. Jedoch enthält das Flussdiagramm 950 einen
zusätzlichen
Schritt 952, der in dem Flussdiagramm 500 von 13 nicht enthalten ist. Der zusätzliche
Schritt 952 wird dazu verwendet, um die Multiboxverarbeitung
zu vereinfachen und er ist ähnlich
dem zusätzlichen
Schritt 944 des Flussdiagramms 940 von 19. Nachdem bei dem Testschritt 524 bestimmt
worden ist, dass nicht mehr Schlitze verblieben sind, die von der örtlichen Speichervorrichtung
zu der entfernt gelegenen Speichervorrichtung zu senden sind, verläuft die
Steuerung von dem Schritt 524 zu dem Schritt 952,
um eine Spezialnachricht von der örtlichen Speichervorrichtung
zu der entfernt gelegenen Speichervorrichtung zu senden, die anzeigt,
dass die letzten Daten für
das Paket gesendet worden sind. Nachfolgend dem Schritt 952 ist
die Verarbeitung vervollständigt.
-
Um
nun auf 21 einzugehen, so veranschaulicht
ein Flussdiagramm 960 Schritte, die bei der entfernt gelegenen
Speichervorrichtung ausgeführt
werden, und zwar in Verbindung mit dem Vorsehen einer Anzeige, dass
das aktive Datenpaket der entfernt gelegenen Speichervorrichtung,
leer ist. Das Flussdiagramm 960 ist ähnlich dem Flussdiagramm 300 von 9 mit
der Ausnahme, dass das Flussdiagramm 960 einen neuen Schritt 962 enthält, der ausgeführt wird,
nachdem das aktive Paket der entfernt gelegenen Speichervorrichtung
wieder hergestellt worden ist. Bei dem Schritt 962 sendet
die entfernt gelegene Speichervorrichtung eine Nachricht zu der örtlichen
Speichervorrichtung, die anzeigt, dass das aktive Datenpaket der
entfernt gelegenen Speichervorrichtung leer ist. Nach dem Empfang
der Nachricht, die bei dem Schritt 962 gesendet wird, setzt
die örtliche
Speichervorrichtung eine interne Variable, die angibt, dass die
inaktive Pufferstufe der entfernt gelegenen Speichervorrichtung
leer ist. Die örtliche
Variable wird in Verbindung mit dem Testschritt 894 des
Flussdiagramms 830 von 18 in der
oben geschilderten Weise geprüft.
-
Gemäß 22 veranschaulicht ein Diagramm 980 den
Host 702, die örtlichen
Speichervorrichtungen 703–705 und die entfernt
gelegenen Speichervorrichtungen 706–708, die in dem Diagramm 700 von 14 gezeigt sind. Das Diagramm 980 enthält auch
einen ersten alternativen Host 982, der an den Host 702 und
die örtlichen
Speichervorrichtungen 703–705 gekoppelt ist.
Das Diagramm 980 enthält
auch einen zweiten alternativen Host 984, der mit den entfernt
gelegenen Speichervorrichtungen 706–708 gekoppelt ist.
Die alternativen Hosts 982, 984 können für die Datenwiederherstellung
verwendet werden, wie dies noch mehr in Einzelheiten weiter unten
beschrieben wird.
-
Wenn
eine Wiederherstellung von Daten an dem fernen Ort erforderlich
ist, kann die Wiederherstellung durch den Host 702 oder
durch den Host 982 vorgenom men werden unter der Voraussetzung, dass
die Verbindungsglieder zwischen den örtlichen Speichervorrichtungen 703–705 und
den entfernt gelegenen Speichervorrichtungen 706–708 noch
in Betrieb sind. Wenn sich die Verbindungsglieder nicht im Betrieb
befinden, dann kann die Datenwiederherstellung durch den zweiten
alternativen Host 984 durchgeführt werden, der an die entfernt
gelegenen Speichervorrichtungen 706–708 gekoppelt ist.
Der zweite alternative Host 984 kann an der gleichen Stelle
oder Örtlichkeit
wie eine oder mehrere der entfernt gelegenen Speichervorrichtungen 706–708 vorgesehen sein.
Alternativ kann der zweite alternative Host 984 von allen
entfernt gelegenen Speichervorrichtungen 706–708 entfernt
gelegen sein. Die Tabelle 730, die über das System verbreitet wird,
wird in Verbindung mit der Datenwiederherstellung zugegriffen, um
die Mitglieder der Multiboxgruppe zu bestimmen.
-
Um
nun auf 23 einzugehen, so veranschaulicht
ein Flussdiagramm 1000 Schritt, die durch jede der entfernt
gelegenen Speichervorrichtungen 706–708 in Verbindung
mit der Datenwiederherstelloperation ausgeführt werden. Die Schritte des
Flussdiagramms 1000 können
durch jede der entfernt gelegenen Speichervorrichtungen 706–708 bei
Empfang eines Signals oder einer Nachricht ausgeführt werden,
die anzeigt, dass die Datenwiederherstellung erforderlich ist. Bei
einigen Ausführungsformen kann
es möglich
sein, dass eine entfernt gelegene Speichervorrichtung automatisch
erfüllt,
dass die Datenwiederherstellung erforderlich ist, und zwar unter Verwendung
von beispielsweise herkömmlichen
Kriterien, wie beispielsweise die Länge der Zeitdauer seit dem
letzten Schreibvorgang.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 1002, bei
dem die entfernt gelegene Speichervorrichtung das Wiederherstellen
des aktiven Pakets in einer Weise beendigt, die hier bereits erläutert wurde.
Nachfolgend dem Schritt 1002 folgt ein Testschritt 1004,
bei dem bestimmt wird, ob das inaktive Datenpaket der entfernt gelegenen
Speichervorrichtung vollständig
ist (das heißt
all die Daten dort hin geschrieben worden sind). Es sei erwähnt, dass
eine entfernt gelegene Speichervorrichtung bestimmen kann, ob das
inaktive Datenpaket vollständig
ist, und zwar unter Verwendung der Nachricht, die durch die logische
Speichervorrichtung bei dem Schritt 944, 952 gesendet
wurde, was weiter oben erläutert
worden ist. Das heißt,
wenn die örtliche
Speichervorrichtung die Nachricht bei dem Schritt 944 oder
bei dem Schritt 952 gesendet hat, kann die entfernt gelegene Speichervorrichtung
den Empfang dieser Nachricht dazu verwenden, um zu bestätigen, dass
das inaktive Paket vervollständigt
ist.
-
Wenn
bei dem Testschritt 1004 bestimmt wird, dass das inaktive
Paket der entfernt gelegenen Speichervorrichtung nicht vollständig ist,
wird die Steuerung von dem Testschritt 1004 zu einem Schritt 1006 übergeben,
bei dem Daten von dem inaktiven Paket gelöscht werden. Es wird keine
Datenwiederherstellung unter Verwendung des unvollständigen inaktiven
Pakets bzw. Pakete durchgeführt,
da die dort vorhandenen Daten inkonsistent mit entsprechenden aktiven
Datenpaketen sein können.
Demzufolge wird die Datenwiederherstellung unter Verwendung von
aktiven Datenpaketen durchgeführt
und in einigen Fällen
auch mit inaktiven Paketen, die vollständig sind. Nachfolgend dem
Schritt 1006 ist die Verarbeitung vervollständigt.
-
Wenn
bei dem Testschritt 1004 bestimmt wird, dass das inaktive
Paket vollständig
ist, dann verläuft
die Steuerung von dem Schritt 1004 zu dem Schritt 1008,
bei welchem die entfernt gelegene Speichervorrichtung auf eine Intervention
durch den Host wartet. Bei einem inaktiven Datenpaket muss einer der
Hosts 702, 982, 984, je nach Situation,
den Zustand von allen entfernt gelegenen Speichervorrichtungen in
der Multiboxgruppe prüfen,
um zu bestimmen, wie die Wiedergewinnung bzw. Wiederherstellung
durchzuführen
ist. Dies wird noch mehr in Einzelheiten weiter unten erläutert.
-
Nachfolgend
dem Schritt 1008 folgt ein Testschritt 1012, bei
dem bestimmt wird, ob der Host einen Befehl an alle Speichervorrichtungen
gesendet hat, um das inaktive Datenpaket zu löschen. Wenn dies der Fall ist,
wird die Steuerung von dem Schritt 1012 zu einem Schritt 1006 weitergegeben,
um das inaktive Datenpaket zu löschen.
Nachfolgend dem Schritt 1006 ist die Verarbeitung vollständig.
-
Wenn
bei dem Testschritt 1002 bestimmt wird, dass der Host einen
Befehl ausgegeben hat, um das vollständige inaktive Datenpaket wieder
herzustellen, verläuft
die Steuerung von dem Schritt 1012 zu einem Schritt 1014,
bei dem das inaktive Datenpaket für die entfernt gelegene Speichervorrichtung wieder
hergestellt wird. Das Wiederherstellen des inaktiven Datenpaketes
in der entfernt gelegenen Speichervorrichtung involviert, dass das
inaktive Datenpaket zu einem aktiven Datenpaket gemacht wird und
dass dann das aktive Datenpaket zu der Platte hin geschrieben wird,
wie dies in dieser Beschreibung erläutert ist. Nachfolgend dem
Schritt 1014 ist die Verarbeitung dann vervollständigt.
-
Um
auf 24 einzugehen, so veranschaulicht
ein Flussdiagramm 1030 Schritte, die in Verbindung mit
einem der Hosts 702, 982, 984 durchgeführt werden,
wobei bestimmt wird, ob jedes der inaktiven Pakete gelöscht oder
wieder hergestellt werden soll, und zwar von jeder der entfernt
gelegenen Speichervorrichtungen. Der eine der Hosts 702, 982, 984,
der die Wiederherstellung ausführt,
kommuniziert mit den entfernt gelegenen Speichervorrichtungen 706–708,
um dort Befehle hin zu leiten und um Informationen von diesen zu
empfangen, und zwar unter Verwendung von Etikettenzeichen (tags),
die durch den Host in der erläuterten
Weise zugeordnet werden.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 1032, bei
dem bestimmt wird, ob irgendeine der entfernt gelegenen Speichervorrichtungen
einen kompletten inaktiven Datensatz bzw. Datenpaket aufweist. Wenn
dies nicht der Fall ist, erfolgt auch keine weitere Verarbeitung
mehr und die entfernt gelegenen Speichervorrichtungen werden in
der oben erläuterten
Weise die unvollständigen
Datenpakete selbst löschen,
und zwar ohne Intervention des Hosts. Im anderen Fall wird die Steuerung
von dem Testschritt 1032 zu einem Testschritt 1034 übertragen,
bei dem der Host bestimmt, ob alle die entfernt gelegenen Speichervorrichtungen
die inaktiven Datenpakete vervollständigt haben. Wenn dies der
Fall ist, wird die Steuerung von dem Testschritt 1034 zu
einem Testschritt 1036 übertragen,
bei welchem bestimmt wird, ob alle die vollständigen inaktiven Pakete von
allen entfernt gelegenen Speichervorrichtungen das gleiche Etikettenzeichen
bzw. Etikettenzeichenzahl haben. Wie in dieser Beschrei bung erläutert ist,
werden Etikettenzeichen durch den Host zugeordnet und werden durch
das System dazu verwendet, um Daten in einer Weise zu identifizieren, ähnlich der
Sequenzzahl, mit der Ausnahme, dass die Etikettenzeichen durch den
Host gesteuert werden, so dass sie den gleichen Wert für den gleichen
Zyklus haben.
-
Wenn
bei dem Testschritt 1036 bestimmt wird, dass alle die entfernt
gelegenen Speichervorrichtungen die gleichen Etikettenzeichen für die inaktiven
Datenpakete haben, wird die Steuerung von dem Schritt 1036 zu
einem Schritt 1038 überführt, bei dem
all die inaktiven Datenpakete wieder hergestellt werden. Das Ausführen des
Schrittes 1038 stellt sicher, dass all die entfernt gelegenen
Speichervorrichtungen Daten aufweisen, und zwar Daten von dem gleichen
Zyklus. Nachfolgend dem Schritt 1038 ist die Verarbeitung
vervollständigt.
-
Wenn
bei dem Testschritt 1034 bestimmt wird, dass alle die inaktiven
Pakete nicht vollständig sind,
oder wenn bei dem Schritt 1036 bestimmt wird, dass alle
die kompletten inaktiven Pakete nicht das gleiche Etikettenzeichen
haben, wird die Steuerung zu einem Schritt 1042 überführt, bei
dem der Host einen Befehl zu den entfernt gelegenen Speichervorrichtungen übermittelt,
um die kompletten inaktiven Datenpakete wieder herzustellen, welche
die niedrigere Etikettenzeichenzahl haben. Zum Zwecke der Prüfung sei
angenommen, dass die Etikettenzeichenzahlen inkrementiert werden,
so dass eine niedrigere Etikettenzahl ältere Daten repräsentiert.
Wenn als Beispiel eine erste entfernt gelegenen Speichervorrichtung
einen kompletten inaktiven Datensatz bzw. Datenpaket mit einem Etikettenwert
von drei besaß und
eine zweite entfernt gelegene Speichervorrichtung einen kompletten
inaktiven Datensatz bzw. Datenpaket mit einem Etikettenwert von
vier besaß, bewirkt
der Schritt 1042, dass die erste entfernt gelegene Speichervorrichtung
(jedoch nicht die zweite) ihr inaktives Datenpaket wieder herstellt.
Auf den Schritt 1042 folgt ein Schritt 1044, bei
dem der Host Befehle zu den entfernt gelegenen Speichervorrichtungen
liefert, um die kompletten inaktiven Pufferstufen mit einer höheren Etikettenzahl
zu löschen
(z.B. von der zweiten entfernt gelegenen Speichervorrichtung in
dem früheren
Beispiel). Auf den Schritt 1044 hin ist die Verarbeitung
beendet bzw. vervollständigt.
-
Nachfolgend
der Ausführung
des Schrittes 1044 enthält
jede der entfernt gelegenen Speichervorrichtungen Daten, denen der
gleiche Etikettenzeichenwert zugeordnet ist, und zwar als Daten
für andere
der entfernt gelegenen Speichervorrichtungen. Demzufolge sind die
wieder gewonnenen Daten an den entfernt gelegenen Speichervorrichtungen 706–708 konsistent.
-
Gemäß 25 veranschaulicht ein Diagramm 1120 eine
Ausführungsform,
bei der eine Speichervorrichtung 1124, die ähnlich der
Speichervorrichtung 24 und/oder der Speichervorrichtung 26 ist,
eine Vielzahl an Directors 1152a–1152c enthält, die
an einen Speicher 1126 gekoppelt sind, ähnlich dem Speicher 37 und/oder
dem Speicher 38 der Speichervorrichtungen 24, 26.
Jeder der Directors 1152a–1152c repräsentiert
einen HA, DA und/oder RA ähnlich
dem HA 28, den DAs 35a–35c, 36a–36c und/oder
den RAs 30a, 30c, 32a–32c der Speichervorrichtungen.
Bei einer hier offenbarten Ausführungsform
können
bis zu sechzehn Directors an den Speicher 1126 gekoppelt
sein. Natürlich
kann bei anderen Ausführungsformen
eine höhere
oder eine niedrigere maximale Zahl der Directors verwendet werden.
-
Das
Diagramm 1120 zeigt auch einen optionalen Kommunikationsmodul
(CM) 1154, der einen alternativen Kommunikationspfad zwischen
den Directors 1152a–1152c vorsieht.
Jeder der Directors 1152a–1152c kann an den
CM 1154 gekoppelt sein, so dass irgendeiner der Directors 1152a–1152c eine Nachricht
und/oder Daten zur irgendeinem anderen einen der Directors 1152a–1152c senden
kann, ohne dabei durch den Speicher 1126 hindurch laufen
zu müssen.
Der CM 1154 kann unter Verwendung einer herkömmlichen
MUX/Router-Technologie implementiert werden, wobei das Senden von
einem der Directors 1152a–1152c eine geeignete
Adresse liefert, um zu bewirken, dass eine Nachricht und/oder Daten durch
einen beabsichtigten oder angepeilten empfangenden einen der Directoren 1152a–1152c empfangen
wird bzw. werden. Zusätzlich
kann bei dem Aussenden von einem der Directors 1152a–1152c auch
das Nachrichtenübermitteln
einer Nachricht zu allen den anderen Directors 1152a–1152c umfassen, und
zwar zur gleichen Zeit.
-
Um
nun auf 26 einzugehen, so veranschaulicht
ein Diagramm 1200 ein System, welches eine Quellengruppe 1202,
einen örtlichen
Bestimmungsort 1204 und einen entfernt gelegenen Bestimmungsort 1206 enthält. Die
Quellengruppe 1202 kommuniziert mit sowohl dem örtlichen
Bestimmungsort 1204 als auch mit dem entfernt gelegenen Bestimmungsort 1206.
Die Quellengruppe 1202 kann eine einzelne Speichervorrichtung
repräsentieren, eine
Vielzahl an Speichervorrichtungen repräsentieren, eine einzelne oder
eine Vielzahl an Speichervorrichtungen mit einem einzelnen Host
oder eine einzelne oder eine Vielzahl an Speichervorrichtungen mit
vielen Host repräsentieren.
Die Daten werden an der Quellengruppe 1202 generiert und
an der Quellengruppe 1202 gespeichert und werden zu dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206 übertragen.
Bei einigen Ausführungsformen
kann die örtliche
Gruppe in gewissen Beziehungen so arbeiten, wie dies oben in Verbindung
mit der Ausführungsform
erläutert
wurde, die in Verbindung mit 14 weiter
oben beschrieben ist.
-
Bei
einer hier offenbarten Ausführungsform repräsentiert
der örtliche
Bestimmungsort 1204 eine einzelne oder eine Vielzahl an
Speichervorrichtungen, die sich in relativ enger Nachbarschaft zu
der Quellengruppe 1202 befinden, um ein synchrones Datenspiegeln
von der Quellengruppe 1202 zu dem örtlichen Bestimmungsort 1204 zu
ermöglichen.
Bei einer hier beschriebenen Ausführungsform ist der örtliche
Bestimmungsort 1204 in dem gleichen Gebäude gelegen, in der gleichen
Firma und/oder an der gleichen Gesellschaftsörtlichkeit, und zwar als Quellengruppe 1202.
Beispielsweise kann der örtliche
Bestimmungsort 1204 eine Backup-Speichervorrichtung repräsentieren
(oder eine Vielzahl an Speichervorrichtungen), die durch die gleiche
Gruppe von Individuen gemanagt wird bzw. werden, die auch die Quellengruppe 1202 managt.
-
Der
entfernt gelegene Bestimmungsort 1206 repräsentiert
eine Speichervorrichtung und/oder eine Vielzahl an Speichervorrichtungen
an einer Stelle, die geografisch von der Quellengruppe 1202 entfernt gelegen
ist. Beispielsweise kann der entfernt gelegene Bestimmungsort 1206 eine
Speichervorrichtung oder eine Gruppe von Speichervorrichtungen an
der Westküste
der Vereinigten Staaten repräsentieren, während die
Quellengruppe 1202 an der Ostküste der Vereinigten Staaten
gelegen ist. Auf Grund des relativ großen geografischen Abstandes
zwischen der Quellengruppe 1202 und der entfernt gelegenen Stelle 1206 ist
es unpraktisch, einen synchronen oder halbsynchronen Datentransfermodus
zu verwenden, um die Daten an der entfernt gelegenen Stelle 1206 von
der Quellengruppe 1202 aus zu spiegeln. Das heißt, auf
Grund der langen Wanderungszeit von der Quellengruppe 1202 zu
dem entfernt gelegenen Bestimmungsort 1206 und zurück zu der
Quellengruppe 1202 kann es angemessen sein, ein synchrones
oder halbsynchrones Datenspiegeln zu verwenden, was zu einer Anerkennung
oder Bestätigung
von Daten an der entfernt gelegenen Bestimmungsstelle 1206 führen kann,
und zwar vor der Bestätigung
oder Anerkennung eines Schreibvorganges zu einem Host der örtlichen
Gruppe 1202 hin. In solch einem Fall kann es möglich sein,
geordnete Schreibvorgänge zwischen
der Quellengruppe 1202 und dem entfernt gelegenen Bestimmungsort 1206 zu
verwenden, so dass der entfernt gelegene Bestimmungsort 1206 einen
konsistenten, wenn auch etwas zeitlich verzögerten Spiegel der Quellengruppe 1202 bildet.
-
Ein
Kommunikationspfad 1208 kann zwischen dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206 existieren. Solange
die Quellengruppe 1202 in Betrieb ist, brauch der Kommunikationspfad 1208 nicht
verwendet zu werden. Jedoch in Fällen,
bei denen die Quellengruppe 1202 nicht betriebsfähig wird
und/oder in Fällen,
bei denen die Kommunikationsverbindungsglieder zwischen der Quellengruppe 1202 und
einem oder beiden Orten entsprechend dem örtlichen Bestimmungsort 1204 und
dem entfernt gelegenen Bestimmungsort 1206 nicht betriebsfähig ist,
kann der Kommunikationspfad 1208 dazu verwendet werden, um
die Daten zwischen dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206 zu
synchronisieren, wie dies noch mehr in Einzelheiten beschrieben
wird. Darüber
hinaus kann auch ein Host an einem der Orte gemäß dem örtlichen Bestimmungsort 1204 oder
dem entfernt gelegenen Bestimmungsort 1206 vorgesehen sein,
der den Betrieb des Systems nach der Synchronisation aufnimmt, wie
dies noch mehr in Einzelheiten beschrieben wird. Es sei darauf hingewiesen,
dass dann, wenn der Betrieb mit einem Host wieder aufgenommen wird,
der an den örtlichen
Bestimmungsort 1204 gekoppelt ist, das Kommunikationsverbindungsglied 1208 verwendet
werden kann, so dass der entfernt gelegene Bestimmungsort 1206 ein Spiegel
oder Spiegelbild des örtlichen
Bestimmungsortes 1204 ist. Wenn umgekehrt der Betrieb wieder aufgenommen
wird, indem ein Host an der entfernt gelegenen Stelle 1206 vorgesehen
wird, dann kann das Kommunikationsverbindungsglied 1206 so
verwendet werden, dass der örtliche
Bestimmungsort 1204 ein Spiegel oder Spiegelbild des entfernt
gelegenen Bestimmungsortes 1206 ist.
-
Gemäß 27 veranschaulicht ein Flussdiagramm 1230 Schritte,
die in Verbindung mit Initialisierungsparametern an dem örtlichen
Bestimmungsort 1204 ausgeführt werden, um den Wiederherstellmechanismus
zu realisieren, der hier noch erläutert wird. Der Wiederherstellmechanismus,
der hier beschrieben wird, verwendet eine Symmetrix-Differenzial-Datenausrüstung (SDDF),
die die Möglichkeit
für eine
Vielzahl von Kommunikationssteuerungen schafft, jede mit einem Bitplan,
der dieser zugeordnet ist, mit Bits, die auf Eins gesetzt werden,
und zwar immer dann, wenn ein Schreibeintrag an einer entsprechenden
Datenstelle erfolgt, und zwar während einer
bestimmten Zeitperiode. Wenn kein Schreibvorgang an einer bestimmten
Stelle auftritt, kann das entsprechende Bit gelöscht bleiben (das heißt es bleibt
auf Null). Bei einer hier beschriebenen Ausführungsform kann jedes Bit einer
Spur von Daten entsprechen. Bei anderen Ausführungsformen ist es jedoch
möglich,
dass jedes Bit größeren oder
kleineren Inkrementen von Daten entspricht und es ist ebenso möglich, dass
unterschiedliche Bits und/oder unterschiedliche Sätze der
Bits unterschiedlichen Mengen der Daten entsprechen.
-
Die
Operationen, die einer SDDF-Kommunikationssteuerung zugeordnet sind,
umfassen die Erzeugung einer SDDF-Kommunikationssteuerung (Session),
Aktivieren einer SDDF-Kommunikationssteuerung, Löschen von Bits des Bitplans
für eine SDDF-Kommunikationssteuerung,
Deaktivieren einer SDDF-Kommunikationssteuerung
und Beenden einer SDDF-Kommunikationssteuerung. Das Erzeugen einer
SDDF-Kommunikationssteuerung, das Löschen der Bits derselben und
die Beendigung einer SDDF-Kommunikationssteuerung (Session) sind
voll selbsterklärend.
Das Aktivieren einer SDDF-Kommunikationssteuerung bewirkt, dass
ein Bit des SDDF-Kommunikationssteuerungsbitplanes immer dann gesetzt
wird, wenn eine entsprechende Spur (oder ein anderes geeignetes
Dateninkrement) geschrieben wird. Das Deaktivieren einer SDDF-Kommunikationssteuerung
setzt das Setzen von Bits aus. Der SDDF-Mechanismus, der hier erläutert wird, kann
implementiert werden unter Verwendung der Anleitung, wie sie in
dem US-Patent Nr. 6,366,986 geliefert wird, die hier unter Bezugnahme
voll mit einbezogen wird.
-
Die
Verarbeitung für
das Flussdiagramm 123 beginnt bei einem ersten Schritt 1232,
bei dem eine erste SDDF-Kommunikationssteuerung SDDF_1 erzeugt wird.
Bei einer Ausführungsform,
die hier beschrieben wird, bewirkt die Erzeugung einer SDDF-Kommunikationssteuerung
nicht eine automatische Aktivierung der Session. Nachfolgend auf
den Schritt 1232 folgt ein Schritt 1234, bei dem
Bits des Bitplanes der SDDF-Kommunikationssteuerung, die bei dem
Schritt 1232 erzeugt wurde, gelöscht werden. Auf den Schritt 1234 folgt
ein Schritt 1236, bei dem eine zweite SDDF-Kommunikationssteuerung SDDF_2
erzeugt wird. Nachfolgend dem Schritt 1236 folgt ein Schritt 1238,
bei dem die Bits des Bitplanes der SDDF-Kommunikationssteuerung, die bei dem Schritt 1236 erzeugt
wurde, gelöscht
werden.
-
Nachfolgend
dem Schritt 1238 wird ein Schritt 1242 ausgeführt, bei
dem ein Zustand initialisiert wird. Der Zustand, der bei dem Schritt 1242 initialisiert
wird, kann dazu verwendet werden, zu bestimmen, welche der SDDF-Kommunikationssteuerungen
SDDF_1 oder SDDF_2 aktiviert wird. Wie noch mehr in Einzelheiten
weiter unten beschrieben wird, gibt es zwei mögliche Zustände, und der Zustand, der bei
dem Schritt 1242 gesetzt wird, kann übersprungen werden, um zu bewirken,
dass die SDDF_1-Session und die SDDF_2-Session alternativ aktiviert
werden. Bei anderen Ausführungsformen kann
ein Token oder irgendein anderer Typ einer Variablen dazu verwendet
werden, um die Auswahl von entweder SDDF_1 oder SDDF_1 anzuzeigen.
Nachfolgend dem Schritt 1242 folgt ein Schritt 1244,
bei dem SDDF_1 aktiviert wird. Das Aktivieren von SDDF_1 bei dem
Schritt 1244 bewirkt, dass die Bits des Bitplanes der SDDF_1-Session
gesetzt werden, und zwar immer dann, wenn eine Spur (oder ein anderes
Dateninkrement) des örtlichen
Bestimmungsortes 1204 modifiziert wird.
-
Dies
SDDF_1- und SDDF_2-Kommunikationssteuerungen bzw. -Sessionen werden
durch den örtlichen
Bestimmungsort 1204 verwendet, um mit den aktiven und inaktiven
Pufferstufen Spur zu halten, die durch die Quellengruppe 1202 in
Verbindung mit geordneten Schreibvorgängen durch die Quellengruppe 1202 zu
der entfernt gelegenen Bestimmungsstelle 1206 hin verwendet
werden. Wie noch weiter in Einzelheiten erläutert werden wird, sendet jedes
Mal, wenn die Quellengruppe 1202 einen Zyklusschaltvorgang
in Verbindung mit den geordneten Schreibvorgängen von der Quellengruppe 1202 zu dem
entfernt gelegenen Bestimmungsort 1206 hin ausführt, die
Quellengruppe 1202 eine Nachricht zu dem örtlichen
Bestimmungsort 1204, die anzeigt, dass ein Zyklusschaltvorgang
durchgeführt
worden ist, so dass der örtliche
Bestimmungsort 1204 den Zustand überspringen kann (initialisiert
bei dem Schritt 1242, wie oben erläutert wurde). Die Verwendung
der Zyklusschaltinformationen durch den örtlichen Bestimmungsort 1204 wird
noch weiter unten mehr in Einzelheiten erläutert.
-
Um
nun auf 28A einzugehen, so veranschaulicht
ein Flussdiagramm 1250 die Schritte, die durch den örtlichen
Bestimmungsort 1204 in Verbindung mit dem Empfangen eines
I/O von der Quellengruppe 1202 während des normalen Betriebes
(das heißt
ohne Ausfall) ausgeführt
werden. Die Verarbeitung beginnt bei einem ersten Schritt 1252,
bei dem I/O durch den örtlichen
Bestimmungsort 1204 empfangen wird. Nachfolgend dem Schritt 1252 folgt
ein Testschritt 1254, bei dem bestimmt wird, ob I/O, welches
von der Quellengruppe 1202 empfangen wurde, angibt, dass
die örtliche
Gruppe 1202 bereit ist, in Verbindung mit den geordneten
Schreibvorgängen zwischen
der örtlichen
Gruppe 1202 und dem entfernt gelegenen Bestimmungsort 1206 zu
schalten. Die örtliche
Gruppe 1202, die für
den Schaltvorgang bereit ist, wird noch mehr in Einzelheiten weiter
unten beschrieben.
-
Wenn
die empfangenen Daten anzeigen, dass die örtliche Gruppe 1202 für den Schaltvorgang bereit
ist, wird die Steuerung von dem Schritt 1254 auf einen
Schritt 1256 übertragen,
bei dem bestimmt wird, ob die inaktive eine der SDDF-Sessionen (SDDF_1
oder SDDF_2) gelöscht
wird. Bei einigen Ausführungsformen
können
die SDDF-Sessionen bei dem Schritt 1256 gelöscht werden.
In anderen Fällen kann
der Zeitbetrag, der zum Löschen
einer SDDF-Session bei dem Schritt 1256 benötigt wird, unakzeptabel
sein, in welchem Fall mehr als zwei SDDF-Sessionen bzw. -Kommunikationssteuerungen
für SDDF_1
und SDDF_2 verwendet werden können
und so gedreht werden können,
dass eine SDDF-Session, die dabei ist, aktiviert zu werden, immer
asynchron gelöscht
wird. Auf jeden Fall betrifft die Verarbeitung, die bei dem Schritt 1256 ausgeführt wird,
das Löschen
der inaktiven einen der SDDF_1 und SDDF_2, so dass nach der Ausführung des Schrittes 1256 die
inaktive Session gelöscht
wird.
-
Nachfolgend
dem Schritt 1256 wird ein Schritt 1258 ausgeführt, bei
dem die inaktive eine der SDDF-Sessionen aktiviert wird, so dass
dann beide SDDF_1 und SDDF_2 aktiviert sind, und zwar nach der Durchführung der
Verarbeitung bei dem Schritt 1258. Es werden daher nachfolgende
Schreibvorgänge
in den Bitplänen
für sowohl
SDDF_1 als auch SDDF_2 reflektiert. Nachfolgend dem Schritt 1258 wird
die Verarbeitung vervollständigt.
-
Wenn
bei dem Schritt 1254 bestimmt wird, dass die empfangenen
Daten nicht einem Signal entsprechend einer Bereitschaft zum Schalten
entsprechen, wird die Steuerung von dem Schritt 1254 zu
einem Testschritt 1262 übertragen,
bei dem bestimmt wird, ob die empfangenen Daten einem Zyklusschaltvorgang
entsprechen, der durchgeführt
wird. Wenn dies der Fall ist, wird die Steuerung von dem Schritt 1262 zu
einem Schritt 1264 übertragen,
bei dem der Zustand, der bei dem Schritt 1242 des Flussdiagramms 1230 von 27 initialisiert wurde, übersprungen wird. Wie noch
weiter in der Beschreibung erläutert
werden wird, wird der Zustand dazu verwendet, zu bestimmen, welche
eine der SDDF_1 und SDDF_2 aktiviert und deaktiviert wird.
-
Nachfolgend
dem Schritt 1264 folgt ein Schritt 1266, bei dem
eine der SDDF-Sessionen,
also SDDF_1 oder SDDF_2, deaktiviert wird, und zwar abhängig von
dem speziellen Wert des Zustandes, der bei dem Schritt 1264 eingestellt
wurde. Es sei darauf hingewiesen, dass, obwohl eine SDDF-Session
bei dem Schritt 1266 deaktiviert wird, diese SDDF-Session
solange nicht gelöscht
wird, bis das nächste
eine Bereitschaft zum Schalten angebende Signal empfangen wird.
Wenn natürlich
mehr als zwei SDDF-Sessionen für
SDDF_1 und SDDF_2 verwendet werden, wie dies oben auch erläutert wurde, dann
kann die bei dem Schritt 1266 deaktiviert SDDF-Session
auch beibehalten werden, während eine
andere SDDF-Session gelöscht
wird, um für
die Aktivierung bei dem Schritt 1258 vorbereitet zu sein, wie
weiter oben erläutert
ist.
-
Wenn
bei dem Schritt 1262 bestimmt wird, dass die empfangenen
Daten nicht einem Zyklusschaltvorgang entsprechen, wird die Steuerung
von dem Testschritt 1262 zu einem Schritt 1268 übertragen,
bei dem I/O durchgeführt
wird. Wenn beispielsweise I/O eine Schreiboperation darstellt, werden
bei dem Schritt 1268 Daten zu dem Speicherbereich des örtlichen
Bestimmungsortes 1204 geschrieben. Nachfolgend dem Schritt 1268 folgt
ein Schritt 1272, bei dem bestimmt wird, ob die I/O-Operation
aus einer Schreiboperation besteht. Wenn dies nicht der Fall ist
(z.B. die I/O-Operation besteht aus einer Leseoperation), wird die
Verarbeitung vervollständigt. Im
anderen Fall wird die Steuerung von dem Schritt 1272 zu
einem Schritt 1274 übertragen,
bei dem in einer geeigneten einen der SDDF-Sessionen, und zwar SDDF_1,
SDDF_2 oder in beiden, ein Bit gesetzt wird, abhängig davon, welche eine der SDDF-Sessionen aktiviert
ist. Nachfolgend des Schritt 1274 wird die Verarbeitung
vervollständigt.
-
In
einigen Fällen
kann es nicht wünschenswert
sein, auf das Löschen
eines SDDF-Bitplanes unmittelbar vor dem Zeigen auf den gleichen
SDDF-Bitplan zu warten. In solchen Fällen kann es nützlich sein,
mehr als zwei SDDF-Bitpläne
zur Verfügung
zu haben, wobei zwei zur gleichen Zeit verwendet werden, ähnlich SDDF_1
und SDDF_2, während
der Rest der SDDF-Bitpläne
bereits gelöscht
sein kann und diese auf eine Verwendung warten oder gelöscht werden
unter Verwendung eines Back ground-Prozesses. Wenn man beispielsweise
drei Bitpläne SDDF_A,
SDDF_B und SDDF_C verwendet, kann SDDF_1 dem SDDF_A entsprechen,
während SDDF_2
dem SDDF_C entsprechen kann. In solch einem Fall kann dann SDDF_B
gelöscht
werden, während
die Verarbeitung in Verbindung mit SDDF_A und SDDF_C ausgeführt wird.
Wenn der Zyklus weiter schaltet, kann SDDF_B (welches bereits gelöscht ist)
verwendet werden, während
SDDF_C während eines
Background-Prozesses gelöscht
wird, der selbst dann laufen kann, nachdem der Zyklusschaltvorgang
vervollständigt
worden ist und neue Daten zu SDDF_B registriert werden.
-
Gemäß 28B veranschaulicht ein Flussdiagramm 1280 eine
alternative Ausführungsform, die
eine Vielzahl an SDDF-Bitplänen
entsprechend SDDF[0], SDDF[1],... SDDF[NMAPS-1] verwendet, wobei
NMAPS die Zahl der SDDF-Pläne
ist. Bei einer hier erläuterten
Ausführungsform
ist NMAPS größer als
zwei (z. B. drei). Viele der Schritte des Flussdiagramms 1280 sind ähnlich den
Schritten des Flussdiagramms 1250 von 28A.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 1282, bei
dem I/O durch einen örtlichen
Bestimmungsort 1204 empfangen wird. Nachfolgend dem Schritt 1282 folgt
ein Testschritt 1283, bei dem bestimmt wird, ob I/O von
der Quellengruppe 1202 empfangen wurde und dann anzeigt,
dass die örtliche Gruppe 1202 für den Schaltvorgang
bereit ist, und zwar in Verbindung mit geordneten Schreibvorgängen zwischen
der örtlichen
Gruppe 1202 und dem entfernt gelegenen Bestimmungsort 1206.
Die örtliche
Gruppe 1202 kann für
den Schaltvorgang bereit sein, was auch noch mehr in Einzelheiten
weiter unten beschrieben wird.
-
Wenn
die empfangenen Daten anzeigen, dass die örtliche Gruppe 1202 für den Schaltvorgang bereit
ist, wird die Steuerung von dem Schritt 1283 zu einem Schritt 1284 übertragen,
bei dem ein Index K inkrementiert wird und das Ergebnis davon gesetzt wird,
und zwar für
ein Modulo-NMAPS (set to modulo NMAPS). Nachfolgend dem Schritt 1284 folgt
ein Schritt 1285, bei dem bestätigt wird, dass SDDF[K] gelöscht ist.
Nachfolgend dem Schritt 1285 folgt ein Schritt 1286,
bei dem SDDF[K] aktiviert wird, so dass sowohl SDDF[K] als auch
SDDF[K-1] aktiviert werden, und zwar nach der Durchführung der
Verarbeitung bei dem Schritt 1286. Es werden somit nachfolgende
Schreibvorgänge
in den Bitplänen
für sowohl SDDF[K]
und SDDF[K-1] reflektiert.
Nachfolgend dem Schritt 1286 wird die Verarbeitung vervollständigt. Es
sei darauf hingewiesen, dass dann, wenn K gleich Null ist, SDDF[K-1]
aktuell auf SDDF[NMAPS-1] verweist.
-
Wenn
bei dem Schritt 1283 bestimmt wird, dass die empfangenen
Daten nicht einem Signal entsprechend einer Bereitschaft zum Schalten
entsprechen, wird die Steuerung von dem Schritt 1283 zu
einem Testschritt 1287 übertragen,
bei dem bestimmt wird, ob die empfangenen Daten einem Zyklusschaltvorgang
entsprechen. Wenn bei dem Schritt 1287 bestimmt wird, dass
die empfangenen Daten einem Zyklusschaltvorgang entsprechen (siehe
die obige Erläuterung
in Verbindung mit dem Flussdiagramm 1250 von 28A), dann wird die Steuerung von dem Schritt 1287 zu
einem Schritt 1288 übertragen, bei
dem der Zustand (oben erläutert) übersprungen wird.
Nachfolgend dem Schritt 1288 wird ein Schritt 1289 ausgeführt, bei
dem eine Variable J gesetzt wird, und zwar gleich (K-2) Modulo-NMAPS.
Da K eine Indexvariable ist, die zum Spurhalten des zuletzt aufgetretenen
aktivierten SDDF-Bitplans verwendet wird, führt das Setzen von J bei dem
Schritt 1289 dazu, dass J auf den drittletzten aktivierten
SDDF-Bitplan zeigt. Nachfolgend dem Schritt 1289 folgt
ein Schritt 1292, bei dem ein Prozess gestartet wird, um den
SDDF[J]-Bitplan zu löschen.
Wie noch weiter erläutert
werden wird, ist es nicht erforderlich, dass der Prozess, der bei
dem Schritt 1292 begonnen wurde, vervollständigt wird,
um den Zyklusschaltvorgang zu vervollständigen und um damit zu beginnen,
neue Daten zu sammeln.
-
Nachfolgend
dem Schritt 1292 folgt ein Schritt 1294, bei dem
eine Variable J gleich gesetzt wird mit (K-1) Modulo-NMAPS. Da K
eine Indexvariable ist, die dazu verwendet wird, um mit dem zu allerletzt
verwendeten bzw. aktivierten SDDF-Bitplan Spur zu halten, führt das
Einstellen von J bei dem Schritt 1294 dazu, dass J auf
den zweiten, kürzlich aufgetretenen
aktivierten SDDF-Bitplan zeigt. Auf den Schritt 1294 folgt
ein Schritt 1296, bei dem SDDF[J] deaktiviert wird. Obwohl
jedoch SDDF[J] bei dem Schritt 1296 deaktiviert wird, werden
die Daten für
Wiederherstellungszwecke solange aufbewahrt, bis der nächste Zyklusschaltvorgang
erfolgt. Nachfolgend dem Schritt 1296 wird die Verarbeitung
vervollständigt.
-
Um
nun auf 28C einzugehen, so veranschaulicht
ein Flussdiagramm 1300 noch eine andere Ausführungsform
zum Verarbeiten, und zwar in Verbindung mit dem örtlichen Bestimmungsort 1204, der
ein I/O von der Quellengruppe 1202 während eines normalen Betriebes
(das heißt
Nicht-Ausfall) empfängt.
Die Verarbeitung beginnt bei einem ersten Schritt 1302,
bei dem I/O durch den örtlichen
Bestimmungsort 1204 empfangen wird. Nachfolgend dem Schritt 1302 folgt
ein Testschritt 1304, bei dem bestimmt wird, ob die empfangenen
Daten einem Zyklusschaltvorgang entsprechen, der durchgeführt wird.
Wenn dies der Fall ist, wird die Steuerung von dem Schritt 1304 auf
einen Testschritt 1306 übertragen,
bei dem bestimmt wird, ob zwei oder mehrere Zyklusschaltvorgänge aufgetreten
sind, und zwar seit dem letzten Mal, als der Zustand übersprungen
wurde. Wenn dies nicht der Fall ist, wird die Verarbeitung vervollständigt. Im
anderen Fall wird die Steuerung von dem Schritt 1306 zu
einem Schritt 1307 übertragen,
bei dem bestimmt wird, ob die momentan inaktive SDDF-Session, das
heißt
SDDF_X gelöscht
ist. Wenn dies der Fall ist wird die Steuerung von dem Schritt 1307 zu
einem Schritt 1308 übertragen,
bei dem der Zustand, welcher bei dem Schritt 1242 des Flussdiagramms 1230 von 27 initialisiert wurde, übersprungen wird. Wie noch
weiter erläutert
werden wird, wird der Zustand dazu verwendet, zu bestimmen, welche
eine der SDDF_1 und SDDF_2 aktiviert und deaktiviert wird.
-
Nachfolgend
dem Schritt 1308 folgt ein Schritt 1309, bei dem
eine der SDDF-Sessionen, SDDF_1
oder SDDF_2, wie dies durch den Zustand angezeigt wird, aktiviert
wird. Nachfolgend dem Schritt 1309 wird ein Schritt 1312 ausgeführt, wobei die
andere eine der SDDF-Sessionen deaktiviert wird. Nachfolgend dem
Schritt 1312 wird die Verarbeitung vervollständigt.
-
Wenn
bei dem Testschritt 1307 bestimmt wird, dass SDDF_X nicht
gelöscht
ist, wird die Steuerung von dem Schritt 1307 zu einem Schritt 1313 übertragen,
bei dem bestimmt wird, ob das Löschen von
SDDF_X bereits gestartet worden ist (das heißt in einer früheren Iteration).
Wenn dies der Fall ist, wird die Verarbeitung vervollständigt. Im
anderen Fall wird die Steuerung von dem Schritt 1313 zu
einem Schritt 1314 übertragen,
bei dem ein Prozess zum Löschen
von SDDF_X begonnen wird. Nachfolgend dem Schritt 1314 wird
die Verarbeitung vervollständigt.
-
Wenn
bei dem Schritt 1304 bestimmt wird, dass die empfangenen
Daten nicht einem Zyklusschaltvorgang entsprechen, wird die Steuerung
von dem Testschritt 1304 zu einem Schritt 1316 übergeben,
bei dem I/O ausgeführt
wird. Wenn beispielsweise I/O aus einer Schreiboperation besteht,
dann werden bei dem Schritt 1316 Daten in den Speicherbereich
des örtlichen
Bestimmungsortes 1204 geschrieben. Nachfolgend dem Schritt 1316 folgt
ein Schritt 1317, bei dem bestimmt wird, ob die I/O-Operation aus
einem Schreibvorgang besteht. Wenn dies nicht der Fall ist (z. B.
besteht die I/O-Operation
aus einer Leseoperation), wird die Verarbeitung vervollständigt. Im
anderen Fall wird die Steuerung von dem Schritt 1317 zu
einem Schritt 1318 übertragen,
bei dem ein Bit in einer geeigneten einen der SDDF-Sessionen, nämlich SDDF_1
oder SDDF_2 (SDDF_X oder SDDF_Y), gesetzt wird, abhängig davon,
welche eine der SDDF-Sessionen aktiviert ist. Nachfolgend dem Schritt 1318 wird
die Verarbeitung vervollständigt.
-
Gemäß 29 veranschaulicht ein Flussdiagramm 1320 Schritte,
die in Verbindung mit einem Sammelvorgang von Wiederherstelldaten
bei der entfernt gelegenen Station bzw. dem entfernt gelegenen Bestimmungsort 1206 durchgeführt werden.
Im Gegensatz zu dem örtlichen
Bestimmungsort 1204, der immer Wiederherstelldaten während eines
Dauerzustandsbetriebes sammelt, kann die entfernt gelegene Station 1206 Wiederherstelldaten
nicht sammeln, wenn nicht und bis sie ein Signal empfängt, dieses
zu tun. Bei einer hier beschriebenen Ausführungsform kann die Quellengruppe 1202 solch
ein Signal zu der entfernt gelegenen Stelle 1206 liefern, wenn
die Quellengruppe 1202 beispielsweise detektiert, dass
das Verbindungsglied oder die Verbin dungsglieder zwischen der Quellengruppe 1202 und dem örtlichen
Bestimmungsort 1204 nicht arbeitet bzw. arbeiten und/oder
wenn die Quellengruppe 1202 detektiert, dass der örtliche
Bestimmungsort 1204 nicht richtig empfangen kann oder Daten
verarbeitet. Bei anderen Ausführungsformen
oder bei anderen Situationen kann die entfernt gelegene Bestimmungsstelle 1206 ein
geeignetes Signal von einem Ort oder einem Element verschieden von
der Quellengruppe 1202 empfangen.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 1322, bei
dem eine dritte SDDF-Session bzw. -Kommunikationssteuerung SDDF_3
erzeugt wird. Nachfolgend dem Schritt 1332 wird ein Schritt 1324 ausgeführt, bei
dem der Bitplan der SDDF-Session, die
bei dem Schritt 1322 erzeugt wurde, gelöscht wird. Nachfolgend dem
Schritt 1324 wird ein Schritt 1326 ausgeführt, bei
dem ein Tokenwert (mehr in Einzelheiten noch weiter unten beschrieben)
auf Null gesetzt wird. Nachfolgend dem Schritt 1326 wird
die Verarbeitung vervollständigt.
-
Um
nun auf 30 einzugehen, so veranschaulicht
ein Flussdiagramm 1330 Schritte, die durch den entfernt
gelegenen Bestimmungsort 1206 in Verbindung mit dem Sammeln
von Wiederherstelldaten ausgeführt
werden. Die Verarbeitung beginnt bei einem ersten Schritt 1331,
bei dem der entfernt gelegene Bestimmungsort 1206 auf eine
Fehler- oder Ausfallnachricht von der Quellengruppe 1202 wartet
oder von irgendeiner anderen Quelle her, je nachdem. Wenn einmal
eine Fehlernachricht empfangen worden ist, wird die Steuerung von
dem Schritt 1331 zu einem Schritt 1332 übertragen,
bei dem die SDDF_3-Session aktiviert wird und damit beginnt, Daten
zu sammeln, welche die Spuren (oder andere geeigneten Dateninkremente)
des entfernt gelegenen Bestimmungsortes 1206 betreffen,
zu denen hin ein Schreibvorgang ausgeführt worden ist. Es sei jedoch
darauf hingewiesen, dass SDDF_3 die Schreibvorgänge reflektiert bzw. angibt,
die bestätigt worden
sind (das heißt
um eines hinter dem momentanen Zyklus liegen und empfangen wurden).
-
Nachfolgend
dem Schritt 1332 folgt ein Schritt 1333, bei dem
ein Tokenwert (weiter unten beschrieben) auf Null initialisiert
wird. Nachfolgend dem Schritt 133 folgt ein Schritt 1334,
bei dem der entfernt gelegene Bestimmungsort 1206 ein I/O
von der Quellengruppe 1202 empfängt. Es sei darauf hingewiesen,
dass I/O, welches bei dem Schritt 1334 empfangen wird,
geordnete Schreibvorgangdaten repräsentieren kann, welche die örtliche
Gruppe 1202 zu dem entfernt gelegenen Bestimmungsort 1206 in
einem fehlerfreien Modus sendet.
-
Nachfolgend
dem Schritt 1334 folgt ein Testschritt 1336, bei
dem bestimmt wird, wenn I/O von der Quellengruppe 1202 bei
dem Schritt 1334 bestimmt wurde, dass ein Zyklusschaltvorgang
durch die Quellengruppe 1202 hervorgerufen wird. Wenn dies
nicht der Fall ist (das heißt
die Daten bestehen aus konventionell geordneten Schreibdaten, die
zu dem entfernt gelegenen Bestimmungsort 1206 geschrieben
werden sollen, oder bestehend aus irgendeinem anderen Datentyp),
wird die Steuerung von dem Testschritt 1336 zurück zu dem
Schritt 1334 übergeben,
um die nächste
I/O zu empfangen.
-
Wenn
bei dem Testschritt 1336 bestimmt wird, dass die Daten
von der Quellengruppe 1202 einen Zyklusschaltvorgang anzeigen,
dann wird die Steuerung von dem Testschritt 1336 zu einem
Schritt 1338 übertragen,
um den Token zu inkrementieren, der mit der Zahl der Zyklusschaltvorgänge seit
Beginn der Sammlung von Wiederherstelldaten Spur hält. Nachfolgend
dem Schritt 1338 folgt ein Schritt 1342, bei dem
der Bitplan von SDDF_3 eingestellt wird, um die Daten des bestätigten Zyklus
wiederzugeben, die geschrieben worden sind. Es sei darauf hingewiesen,
dass die Verarbeitung bei dem Schritt 1342 automatisch
in Verbindung mit dem Betrieb der aktivierten SDDF-Sessionen ausgeführt werden kann,
in welchem Fall es nicht erforderlich sein kann, den Schritt 1342 als
Teil des Wiederherstellprozesses zu verwenden, der in 30 gezeigt ist.
-
Es
sei erwähnt,
dass der bestätigte
Zyklus der Zyklus ist, der zum Sammeln von Daten verwendet wird,
und zwar vor dem Zyklusschaltvorgang. Nachfolgend dem Schritt 1342 folgt
ein Testschritt 1344, bei dem bestimmt wird, ob die Verarbeitung vervollständigt ist
(das heißt
der Sammelvorgang von Fehler-Wiederherstelldaten ver vollständigt ist).
Die Verarbeitung kann vervollständigt
werden, wenn die Fehlersituation (z. B. ein ausgefallenes Verbindungsglied
von der örtlichen
Gruppe 1202 zu dem örtlichen Bestimmungsort 1204)
wieder in Ordnung gebracht worden ist oder wenn beispielsweise der örtliche
Bestimmungsort 1204 und der entfernt gelegene Bestimmungsort 1206 synchronisiert
sind (weiter unten noch erläutert).
Wenn bei dem Schritt 1344 bestimmt wird, dass die Verarbeitung
nicht vervollständigt
ist, dann wird die Steuerung von dem Testschritt 1344 zurück zu dem
Schritt 1334 übertragen,
um ein anderes I/O zu empfangen. Im anderen Fall wird die Steuerung
von dem Schritt 1344 zurück zu dem Schritt 1331 übertragen,
um auf eine neue Fehler- oder Ausfallnachricht zu warten. Es sei
darauf hingewiesen, dass bei einigen Ausführungsformen die Verarbeitung
bei dem Schritt 1344 vervollständigt sein kann und bestimmte
Wiederherstellparameter rückgestellt werden
können,
wie dies noch mehr in Einzelheiten weiter unten erläutert wird.
-
Gemäß 31 zeigt ein Flussdiagramm 1360 Schritte
an, die in Verbindung mit der Synchronisation des örtlichen
Bestimmungsortes 1204 und des entfernt gelegenen Bestimmungsortes 1206 ausgeführt werden.
Wie weiter oben erläutert
ist, können der örtliche
Bestimmungsort 1204 und der entfernt gelegenen Bestimmungsort 1206 synchronisiert
werden, indem Daten zwischen diesen übertragen werden, und zwar
unter Verwendung des Kommunikationsverbindungsgliedes 1208.
Nach der Synchronisation kann das System an dem örtlichen Bestimmungsort 1204 oder
an dem entfernt gelegenen Bestimmungsort 1206 unter Verwendung
des anderen als einen Spiegel neu gestartet werden.
-
In
Verbindung mit der Synchronisation kann es von Vorteil sein, eine
Entscheidung zu treffen, welche der Bestimmungsorte entsprechend
dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206 die
spätestens
(das heißt auf
dem neusten Stand befindlichen) Daten enthält, so dass die Daten von einem
Bestimmungsort entsprechend dem entfernt gelegenen Bestimmungsort 1206 und
dem örtlichen
Bestimmungsort 1204 aus übertragen werden, und zwar
zu dem jeweils anderen, welcher die Daten auf dem neusten Stand
enthält.
-
Die
Verarbeitung für
das Flussdiagramm 1360 beginnt bei einem ersten Schritt 1362,
bei dem die Verbindungsglieder zwischen der Quellengruppe 1202 und
dem örtlichen
Bestimmungsort 1204 und die Verbindungsglieder zwischen
der Quellengruppe 1202 und dem entfernt gelegenen Bestimmungsort 1206 aufgeteilt
werden. Das Aufteilen der Verbindungsglieder bei dem Schritt 1362 trägt dazu
bei, sicherzustellen, dass der Synchronisationsprozess nicht korrumpiert
wird. Nachfolgend dem Schritt 1362 folgt ein Schritt 1364,
bei dem die SDDF-Pläne (maps),
die während
des Sammelvorganges der Wiederherstellinformationen erzeugt wurde,
aufbewahrt werden. Nachfolgend dem Schritt 1364 folgt ein
Schritt 1366, bei dem die geordneten Schreibvorgänge zwischen
der Quellengruppe 1202 und dem örtlichen Bestimmungsort 1204 beendet
werden, und zwar aus Gründen ähnlich der
Aufteilung der Verbindungsglieder bei dem Schritt 1362.
-
Nachfolgend
dem Schritt 1366 folgt ein Testschritt 1368, bei
dem bestimmt wird, ob der Tokenwert (weiter oben erläutert) größer ist
als ein vorbestimmter Wert N. Es sei erwähnt, dass der Tokenwert die
Zahl der Zyklusschaltvorgänge
angibt, die seit dem Sammeln der Fehler-Wiederherstelldaten aufgetreten
sind, und zwar bei dem entfernt gelegenen Bestimmungsort 1206.
Wenn das Verbindungsglied zwischen der Quellengruppe 1202 und
dem örtlichen Bestimmungsort 1204 nicht
gearbeitet hat und der entfernt gelegene Bestimmungsort 1206 mit
dem Sammeln von Wiederherstelldaten begonnen hat, dann kann der
entfernt gelegene Bestimmungsort 1206 Daten enthalten,
die auf dem neuen Stand sind als bei dem örtlichen Bestimmungsort 1204.
Dies wird dadurch ermittelt, indem man auf den Wert des Token blickt,
der die Zahl der Zyklusschaltvorgänge angibt, die aufgetreten
sind, seit der entfernt gelegenen Bestimmungsort 1206 ein
Signal empfangen hat, um mit dem Sammeln von Wiederherstelldaten
zu beginnen. Wenn somit bei dem Testschritt 1368 bestimmt
wird, dass der Token größer ist
als ein gewisser vorher bestimmter Wert N (z. B. zwei), wird die Steuerung
von dem Testschritt 1368 zu einem Schritt 1371 übertragen,
bei dem die Bitpläne
für alle
die SDDF-Sessionen (SDDF_1, SDDF_2 und SDDF_3) einer ODER-Funktion
unterworfen werden (unter Verwendung eines inklusiven ODER- Gliedes), um die
Spuren (oder andere Datenmengen) des entfernt gelegenen Bestimmungsortes 1206 zu
bestimmen und möglicherweise
von dem örtlichen
Bestimmungsort 1204, die den Daten entsprechen, und zwar
für die
aktiven und inaktiven Pufferstufen, die gesendet wurden, oder im Übergang
vorhanden waren, und zwar zwischen der Quellengruppe 1202 und dem
entfernt gelegenen Bestimmungsort 1206, bevor der Fehler
der Quellengruppe aufgetreten ist, als auch mögliche Daten zu bestimmen,
die an dem örtlichen
Bestimmungsort 1204 verschieden oder abweichend sein können.
-
Nachfolgend
dem Schritt 1371 folgt ein Schritt 1372, bei dem
der entfernt gelegene Bestimmungsort 1206 Daten von den
Spuren sendet, entsprechend dem Satz der Bits des Bitplanes, welches das
Ergebnis war, oder der ODER-Verknüpfung der drei Bitpläne für SDDF_1,
SDDF_2 und SDDF_3 war. Die Daten von diesen Spuren können zu
dem örtlichen
Bestimmungsort 1204 kopiert werden, so dass der entfernt
gelegene Bestimmungsort 1206 und der örtliche Bestimmungsort 1204 synchronisiert
werden. Nachfolgend dem Schritt 1372 wird die Verarbeitung vervollständigt. Bei
einer hier beschriebenen Ausführungsform
kann N so eingestellt werden, dass es kleiner ist als Zwei. Es sei
auch darauf hingewiesen, dass es möglich ist, den Betrieb mit
einem Host wieder aufzunehmen, der an einen geeigneten Bestimmungsort
entsprechend dem örtlichen
Bestimmungsort 1204 oder dem entfernt gelegenen Bestimmungsort 1206 gekoppelt
ist, und zwar vor der Vervollständigung
der Kopien, die bei dem Schritt 1376 oder bei dem Schritt 1372 initialisiert
werden.
-
Wenn
bei dem Testschritt 1368 bestimmt wird, dass der Token
keinen Wert größer als
N aufweist (z. B. der Token Null ist), dann wird die Steuerung von
dem Testschritt 1368 zu einem Schritt 1374 übertragen,
bei dem die Bitpläne
für alle
die SDDF-Sessionen oder Kommunikationssteuerungen (SDDF_1, SDDF_2
und, wenn vorhanden, SDDF_3) einer ODER-Funktion unterworfen werden
(unter Verwendung eines Inklusiv-ODER-Gliedes), um die Spuren (oder
andere Datenmengen) des örtlichen Bestimmungsortes 1204 zu
bestimmen, die den Daten für
den aktiven und inaktiven Puffer entsprechen, die gesendet wurden
oder sich im Übergang
zwischen der Quellengruppe 1202 und dem entfernt gelegenen
Bestimmungsort 1206 befinden, und zwar vor dem Ausfall
der Quellengruppe 1202. Nachfolgend dem Schritt 1374 folgt
ein Schritt 1376, bei dem die Daten entsprechend der ODER-Verknüpfung der Bitpläne von dem örtlichen
Bestimmungsort 1204 zu dem entfernt gelegenen Bestimmungsort 1206 über das
Kommunikationsglied 1208 gesendet werden. Wenn die Daten
einmal von dem örtlichen
Bestimmungsort 1204 zu dem entfernt gelegenen Bestimmungsort 1206 gesendet
worden sind, sind der örtliche
Bestimmungsort 1204 und der entfernt gelegene Bestimmungsort 1206 synchronisiert.
Nachfolgend dem Schritt 1376 wird die Verarbeitung vervollständigt.
-
Die
Schritte 1372, 1374, 1376 können unter Verwendung
irgendeiner Anzahl von geeigneten Techniken realisiert werden. Beispielsweise
kann ein Hintergrund-Kopiervorgang
initialisiert werden, um die Daten unter Verwendung von Bits zu
kopieren, die durch das Ergebnis der ODER-Verknüpfung der Bitpläne der SDDF-Sessionen darstellen.
Bei einer hier beschriebenen Ausführungsform werden die Schritte 1372, 1374, 1376 unter
Verwendung von RDF ausgeführt,
wobei ein R1/R2-Paar
zuerst erstellt wird, und zwar unter Verwendung von beispielsweise dem
dynamischen RDF-Mechanismus, der in der US-Patentanmeldung Nr. 09/997,810
offenbart ist, die hier unter Bezugnahme mit einbezogen wird. Nachfolgend
darauf werden die Bitpläne
(Bitmaps) dazu verwendet, die Vorrichtungstabellenpläne zu modifizieren,
und zwar in einem oder in beiden Bestimmungsorten gemäß dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206,
um den RDF-Mechanismus
zu veranlassen, einen Hintergrund-Kopiervorgang durchzuführen.
-
Gemäß 32 veranschaulicht ein Flussdiagramm 1380 mehr
in Einzelheiten die Schritte, die in Verbindung mit der Beendigung
der geordneten Schreibvorgänge
des Schrittes 1336 des Flussdiagramms 1360 von 31 durchgeführt
werden. Es sei darauf hingewiesen, dass die Verarbeitung gemäß 32 ein Aufräumen
(clean-up) veranschaulicht, wenn die Quellengruppe 1202 eine
einzelne Speichervorrichtung verwendet. In Fällen, bei denen die Quellengruppe 1202 mehr
als eine Speichervor richtung enthält, kann stattdessen die Verarbeitung verwendet
werden, die in 23 veranschaulicht ist.
-
Die
Verarbeitung beginnt bei einem ersten Testschritt 1382,
bei dem bestimmt wird, ob alle geordneten Schreibvorgangsdaten,
die durch den entfernt gelegenen Bestimmungsort 1206 empfangen werden,
und zwar von der Quellengruppe 1202, vollständig verarbeitet
worden sind (durch den entfernt gelegenen Bestimmungsort gesichert
worden sind). Das heißt
bei dem Testschritt 1382 wird bestimmt, ob irgendwelche
Daten an dem entfernt gelegenen Bestimmungsort 1206, die
den geordneten Schreibvorgangszyklen entsprechen, auf dem Plattenraum
des entfernt gelegenen Bestimmungsortes 1206 gespeichert
worden sind oder wenigstens in einem Cachespeicher vorhanden sind
und für
ein Schreiben zu dem Plattenraum markiert sind. Wenn bei dem Testschritt 1382 festgestellt
wird, dass alle geordneten Schreibvorgangsdaten an dem entfernt
gelegenen Bestimmungsort 1206 verarbeitet worden sind,
wird die Verarbeitung vervollständigt.
-
Wenn
bei dem Testschritt 1382 bestimmt wird, dass einige der
geordneten Schreibvorgangsdaten von der Quellengruppe 1202 noch
nicht verarbeitet worden sind, wird die Steuerung von dem Testschritt 1382 zu
einem Testschritt 1384 übertragen, bei
dem bestimmt wird, ob die empfangenen, jedoch unbehandelten geordneten
Schreibvorgangsdaten an dem entfernt gelegenen Bestimmungsort 1206 einem
vollständigen
geordneten Schreibvorgangszyklus entsprechen. Es sei erwähnt, dass,
wenn die Quellengruppe 1202 Daten entsprechend einem bestimmten
Zyklus zu dem entfernt gelegenen Bestimmungsort 1206 sendet,
der Zyklus an dem entfernt gelegenen Bestimmungsort 1206 nicht
vollständig ist,
wenn nicht und bis eine Bestätigungsnachricht von
der Quellengruppe 1202 zu dem entfernt gelegenen Bestimmungsort 1206 gesendet
wird. Wenn bei dem Testschritt 1384 bestimmt wird, dass
die nicht verarbeiteten Daten einem vollständigen geordneten Schreibzyklus
entsprechen, wird die Steuerung von dem Testschritt 1384 zu
einem Schritt 1385 übertragen,
bei dem die Daten für
den Zyklus gespeichert werden, indem die Daten auf der Platte des
entfernt gelegenen Bestimmungsortes 1206 gesichert werden
und/oder die Daten in dem Cachespeicher der entfernt gelegenen Speichervorrichtung 1206 zum Schreiben
auf die Platte derselben markiert werden. Nachfolgend dem Schritt 1385 wird
die Verarbeitung vervollständigt.
-
Wenn
bei dem Testschritt 1384 bestimmt wird, dass die unverarbeiteten,
geordneten Schreibvorgangsdaten von der Quellengruppe 1202 nicht
einem kompletten Zyklus entsprechen, dann wird die Steuerung von
dem Testschritt 1384 zu einem Schritt 1386 übergeben,
bei dem ungültige
Bits an der Vorrichtungstabelle des entfernt gelegenen Bestimmungsortes 1206 gesetzt
werden. Die Ungültigkeitsbits,
die bei dem Schritt 1386 gesetzt werden, zeigen an, dass
Spuren (oder ein anderes Dateninkrement) des entfernt gelegenen
Bestimmungsortes 1206 ungültige Daten enthalten und daher
von einer anderen Vorrichtung her kopiert werden müssen, um
auf den neusten Stand zu gelangen. In diesem Fall kann die andere
Vorrichtung aus dem örtlichen
Bestimmungsort 1204 bestehen, abhängig davon, welche der Orte gemäß dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206 die
auf dem neusten Stand befindlichen Informationen enthält. Die
speziellen Spuren (oder andere Datenelemente), die als ungültig in
der Vorrichtungstabelle des entfernt gelegenen Bestimmungsortes 1206 eingestellt
sind, entsprechen den Spuren, die durch die unverarbeiteten, geordneten
Schreibvorgangsdaten angezeigt werden, welche von der Quellengruppe 1202 empfangen
werden. Nachfolgend dem Schritt 1386 folgt ein Schritt 1387,
bei dem die unbehandelten, geordneten Schreibvorgangsdaten für den unvollständigen Zyklus
gelöscht
werden. Nachfolgend dem Schritt 1387 wird die Verarbeitung
vervollständigt.
-
Um
nun auf 33 einzugehen, so veranschaulicht
ein Flussdiagramm 1390 mehr in Einzelheiten die Schritte,
die in Verbindung mit dem Schritt 1376 ausgeführt werden,
wobei Daten von dem örtlichen
Bestimmungsort 1204 zu dem entfernt gelegenen Bestimmungsort 1206 kopiert
werden, oder in Verbindung mit dem Schritt 1372, bei dem
Daten von dem entfernt gelegenen Bestimmungsort 1206 zu dem örtlichen
Bestimmungsort 1204 kopiert werden. Die Verarbeitung beginnt
bei einem ersten Schritt 1392, bei welchem eine ODER-Verknüpfung von SDDF_1,
SDDF_2 und SDDF_3 (von dem Schritt 1374) dazu verwendet
wird, eine Vorrichtungstabelle einzustellen, bei der auch immer
einer der Bestimmungsorte gemäß dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206 die
R1-Vorrichtung nach
der Wiederherstellung sein kann. Wenn Daten von der R1-Vorrichtung zu der
R2-Vorrichtung kopiert werden sollen, dann entsprechen die Vorrichtungstabellenorte
den entfernt gelegenen Spuren und werden bei dem Schritt 1392 eingestellt.
Wenn im anderen Fall Daten von der R2-Vorrichtung zu der R1-Vorrichtung kopiert
werden sollen, werden die Vorrichtungstabellenorte, welche den örtlichen
Spuren entsprechen, bei dem Schritt 1392 eingestellt. In
vielen Fällen
sind die Spuren, die einer Modifikation der Tabelle bei dem Schritt 1392 entsprechen,
die gleichen oder bestehen aus einem übergeordneten Satz der Modifikation
für die
Tabelle aus dem Schritt 1386, wie oben erläutert wurde.
-
Nachfolgend
dem Schritt 1392 folgt ein Schritt 1396, bei dem
ein Hintergrund-Kopierprozess begonnen
wird. Der Hintergrund-Kopierprozess, der bei dem Schritt 1396 begonnen
wurde, bewirkt, dass Daten in einem Hintergrundprozess kopiert werden. Nachfolgend
dem Schritt 1396 wird die Verarbeitung vervollständigt.
-
Gemäß 34 veranschaulicht ein Flussdiagramm 1450 Schritte,
die in Verbindung mit der Wiederinitialisierung der Wiederherstellparameter
ausgeführt
werden, wenn einmal der normale Betrieb wieder hergestellt worden
ist, und zwar zwischen der Quellengruppe 1202, dem örtlichen
Bestimmungsort 1204 und dem entfernt gelegenen Bestimmungsort 1206.
Die Verarbeitung beginnt bei einem ersten Schritt 1452,
bei dem beide SDDF-Sessionen, nämlich
SDDF_1 und SDDF_2, deaktiviert werden. Nachfolgend dem Schritt 1452 wird
ein Schritt 1454 ausgeführt,
bei dem SDDF_1 gelöscht
wird. Nachfolgend dem Schritt 1454 folgt ein Schritt 1456,
bei dem SDDF_2 gelöscht
wird. Nachfolgend dem Schritt 1456 folgt ein Schritt 1458 mit
einem Zeiger, der zu einer der SDDF-Sessionen zeigt und dazu gebracht wird,
auf SDDF_1 zu zeigen. Nachfolgend dem Schritt 1458 folgt
ein Schritt 1462, bei dem SDDF_1 aktiviert wird. Nachfolgend
dem Schritt 1462 wird die Verarbeitung vervollständigt.
-
Um
nun auf 35 einzugehen, so veranschaulicht
ein Flussdiagramm 1470 Schritte, die in Verbindung mit
der Rückstellung
der Wiederherstellparameter ausgeführt werden, die durch den entfernt gelegenen
Bestimmungsort 1206 verwendet werden. Die Verarbeitung
beginnt bei einem ersten Schritt 1472, bei dem SDDF_3 deaktiviert
wird. Nachfolgend dem Schritt 1472 folgt ein Schritt 1474,
bei dem SDDF_3 gelöscht
wird. Nachfolgend dem Schritt 1474 folgt ein Schritt 1476,
bei dem der Token, der durch den entfernt gelegenen Bestimmungsort 1206 verwendet
wird, gelöscht
wird (auf Null gestellt wird). Nachfolgend dem Schritt 1476 wird
die Verarbeitung vervollständigt.
Es sei darauf hingewiesen, dass bei einigen Ausführungsformen es möglich ist,
auch SDDF_3 bei oder nach dem Schritt 1472 zu beenden, so
dass SDDF_3 bei dem Schritt 1322 des Flussdiagramms 1320 von 29 wieder erzeugt werden kann, wie oben dargelegt
worden ist.
-
Gemäß 36 zeigt ein Diagramm eine mögliche Konfiguration der Quellengruppe 1202.
In dem Diagramm von 36 enthält die Quellengruppe 1202 einen
Host 1502, der an eine einzelne örtliche Speichervorrichtung 1504 gekoppelt
ist. Die örtliche
Speichervorrichtung 1202 ist sowohl an den örtlichen
Bestimmungsort 1204 als auch den entfernt gelegenen Bestimmungsort 1206 gekoppelt.
Bei der in 36 gezeigten Konfiguration
kann die gesamte Verarbeitung, die hier beschrieben wird, durch
die örtliche
Speichervorrichtung 1504 durchgeführt werden oder alternativ
kann ein Teil der Verarbeitung durch den Host 1502, je
nach geeignet sein, durchgeführt
werden.
-
Gemäß 37 zeigt ein Diagramm eine andere Konfiguration
der Quellengruppe 1202, bei der ein Host 1512 an
eine Vielzahl von örtlichen
Speichervorrichtungen 1514–1516 gekoppelt ist.
Jede der örtlichen
Speichervorrichtungen 1514–1516 ist sowohl an
den örtlichen
Bestimmungsort 1204 als auch den entfernt gelegenen Bestimmungsort 1206 gekoppelt.
Bei der in 37 gezeigten Konfiguration kann
der Host 1512 einen Teil der Verarbeitung handhaben, der
hier beschrieben wird, wie beispielsweise den Zyklusschaltvorgang
für all
die örtlichen
Speichervorrichtungen 1514–1516 in Verbindung
mit geordneten Schreibvorgängen.
-
In
einigen Fällen
kann es wünschenswert sein,
einen Zyklusschaltvorgang zu verhindern, wenn in Verbindung mit
Datentransfers zwischen der Quellengruppe 1202 und dem örtlichen
Bestimmungsort 1204 eine Schwierigkeit auftritt. Natürlich kann
in Fällen
eines vollständigen
Ausfalls des örtlichen
Bestimmungsortes 1204 oder eines vollständigen Ausfalls der Übertragungsglieder
zwischen der Quellengruppe 1202 und dem örtlichen
Bestimmungsort 1204 das System aufhören zu arbeiten, und zwar vollständig, und
eine Wiederherstellung oder Wiedergewinnung erfolgt dann in der
oben beschriebenen Weise. Jedoch kann es in anderen Fällen, bei
denen ein intermittierender Ausfall oder Fehler auftritt (z. B. Übergangsverbindungsverlust
für die
Verbindungsglieder zwischen der Quellengruppe 1202 und
dem örtlichen Bestimmungsort 1204),
wünschenswert
sein, einfach keine Zyklusschaltung bzw. keinen Zyklusschaltvorgang
an der Quellengruppe 1202 in Verbindung mit der Kommunikation
zwischen der Quellengruppe 1202 und dem entfernt gelegenen
Bestimmungsort 1206 durchzuführen, wenn nicht und bis entsprechende
Daten zuerst erfolgreich von der Quellengruppe 1202 zu
dem örtlichen
Bestimmungsort 1204 übertragen
worden sind. Diese Verbesserung wird weiter unten beschrieben.
-
Gemäß 38 veranschaulicht ein Flussdiagramm 200' einen modifizierten
Abschnitt des Flussdiagramms 200 von 6,
welcher Schritte darstellt, die in Verbindung mit der Übertragung
von Daten von einer inaktiven einen Liste der Listen 72, 74 (in 3 gezeigt)
zu einer anderen Speichervorrichtung durchgeführt werden. Das Flussdiagramm 200' zeigt den Schritt 204 und
den Schritt 212, die auch in dem Flussdiagramm 200 enthalten
sind und weiter oben in Verbindung mit dem Text erläutert wurden,
der 6 erklärt.
-
Wie
jedoch noch weiter unten mehr in Einzelheiten erläutert werden
wird, enthält
das Flussdiagramm 200' zusätzliche
neue Schritte, die in dem Flussdiagramm 200 von 6 nicht
vorhanden sind.
-
Nachfolgend
dem Schritt 204 folgt ein Testschritt 1602, bei
dem bestimmt wird, ob Daten zu einer anderen Speichervorrichtung übertragen
werden, die aus speziellen Daten bestehen. Wie in Verbindung mit
dem Flussdiagramm 200' verwendet
wird, betreffen die speziellen Daten bei dem Schritt 1602 Daten,
die von der Quellengruppe 1202 zu sowohl dem örtlichen
Bestimmungsort 1204 als auch dem entfernt gelegenen Bestimmungsort 1206 übertragen werden.
Bei einer hier beschriebenen Ausführungsform können die
speziellen Daten unter Verwendung eingebauter Mechanismen identifiziert
werden, um zu ermitteln, ob die Daten in einer Reihe angeordnet sind,
um sie sowohl zu dem örtlichen
Bestimmungsort 1204 als auch zu dem entfernt gelegenen
Bestimmungsort 1206 zu übertragen.
Natürlich
können
auch andere Mechanismen zum Identifizieren und zum Testen der speziellen
Daten verwendet werden.
-
Wenn
bei dem Testschritt 1602 bestimmt wird, dass die Daten
nicht aus speziellen Daten bestehen, wird die Steuerung von dem
Schritt 1602 zu dem Schritt 212 übertragen,
um Daten in der oben beschriebenen Weise in Verbindung mit dem Flussdiagramm 200 von 6 zu
senden. Nachfolgend dem Schritt 212 wird die Verarbeitung
fortgeführt,
und zwar so, wie dies in dem Flussdiagramm 200 von 6 gezeigt
ist und weiter oben beschrieben wurde. Wenn bei dem Testschritt 1602 bestimmt
wird, dass die zu sendenden Daten aus speziellen Daten bestehen
(also von der Quellengruppe 1202 sowohl zu der örtlichen
Speichervorrichtung 1204 als auch der entfernt gelegenen
Speichervorrichtung 1206 übertragen werden sollen), wird
die Steuerung von dem Testschritt 1602 zu einem Testschritt 1604 übertragen,
bei dem bestimmt wird, ob die spezielle Übertragung, die überprüft wird,
aus einer Übertragung der
speziellen Daten von der Quellengruppe 1202 zu dem entfernt
gelegenen Bestimmungsort 1206 besteht. Wie bereits erläutert worden
ist, ist es wünschenswert
zu vermeiden, dass Daten von der Quellengruppe 1202 zu
der entfernt gelegenen Stelle bzw. Bestimmungsort 1206 gesendet
werden, wenn nicht und bis die Daten zum ersten Mal erfolgreich
von der Quellengruppe 1202 zu dem örtlichen Bestimmungsort 1204 übertragen
worden sind. Somit wird bei dem Test entsprechend dem Schritt 1604 bestimmt,
ob der Transfer der spezifischen Daten, die überprüft werden, aus einem Transfer
von der Quellengruppe 1202 zu dem entfernt gelegenen Bestim mungsort 1206 besteht.
Wenn dies nicht der Fall ist, wird die Steuerung von dem Testschritt 1604 zu
dem Schritt 212 übertragen,
um die Verarbeitung in der weiter oben beschriebenen Weise fortzusetzen.
Im anderen Fall, wenn bei dem Testschritt 1604 bestimmt
wird, dass die zu überprüfenden Daten
einem Transfer von der Quellengruppe 1202 zu dem entfernt
gelegenen Bestimmungsort 1206 entsprechen, wird die Steuerung
von dem Testschritt 1604 zu einem Testschritt 1606 übertragen,
bei dem bestimmt wird, ob der entsprechende Transfer der Daten von
der Quellengruppe 1202 zu dem örtlichen Bestimmungsort 1204 an früherer Stelle
erfolgreich vervollständigt
worden ist. Das heißt,
für einen
gegebenen Schlitz oder Abschnitt der Daten, die sowohl zu dem entfernt
gelegenen Bestimmungsort 1206 als auch zu dem örtlichen Bestimmungsort 1204 zu übertragen
sind, wird bei dem Test entsprechend dem Schritt 1606 bestimmt, ob
der Transfer von der Quellengruppe 1202 zu dem örtlichen
Bestimmungsort 1204 erfolgreich ausgeführt worden ist. Wenn dies nicht
der Fall ist, wird die Steuerung von dem Testschritt 1606 zu
einem Schritt 1607 übertragen,
bei welchem eine Fehlerverarbeitung/Testverarbeitung durchgeführt wird.
-
In
einigen Fällen
bewirkt die Unfähigkeit,
Daten von der Quellengruppe 1202 zu dem örtlichen
Bestimmungsort 1204 zu übertragen,
dass das System Daten an der entfernt gelegenen Bestimmungsstelle 1206 zu
sammeln beginnt, indem beispielsweise veranlasst wird, dass eine
Fehlernachricht zu der entfernt gelegenen Bestimmungsstelle gesendet
wird (siehe hierzu das Flussdiagramm 1330 von 30 und die entsprechende zugeordnete Beschreibung) und
indem aus der Verarbeitung ausgestiegen wird, die durch das Flussdiagramm 200' von 38 veranschaulicht ist, so dass die Daten von
der Quellengruppe 1202 zu dem entfernt gelegenen Bestimmungsort 1206 ungeachtet
davon gesendet werden, ob Daten jemals erfolgreich von der Quellengruppe 1202 zu
dem örtlichen
Bestimmungsort 1204 gesendet wurden. Es kann auch eine
andere Verarbeitung auftreten, wie beispielsweise ein Einstellvorgang
von ungültigen
Bits in einer Vorrichtungstabelle für Daten, die nicht von der
Quellengruppe 1202 zu dem örtlichen Bestimmungsort 1204 übertragen
werden. Es sei darauf hingewiesen, dass dann, wenn die Verbindung
zwischen der Quellengruppe 1202 und dem örtlichen
Bestimmungsort 1204 wieder hergestellt wird, es möglich ist,
den entfernt gelegenen Bestimmungsort 1204 zu synchronisieren
und einen Dauerzustandsbetrieb wieder herzustellen, wie dies hier
beschrieben wurde (z. B. die Schritte des Flussdiagramms 200').
-
Ein
Kriterium zum Bestimmen, ob die oben beschriebene Fehlerverarbeitung
durchzuführen
ist oder nicht, kann entsprechend einer Zahl von funktionellen Faktoren
eingestellt werden, wie dies von Fachleuten ohne weiteres erkannt
werden kann. Bei einer hier beschriebenen Ausführungsform werden die Kriterien
entsprechend der Wahrscheinlichkeit eingestellt, dass ein Fehler
des Verbindungsgliedes zwischen der Quellengruppe 1202 und
dem örtlichen Bestimmungsort 1204 und/oder
ein Fehler oder Ausfall des örtlichen
Bestimmungsortes 1204 vorhanden ist. Beispielsweise kann
die Fehlerverarbeitung bei dem Schritt 1607 festlegen,
dass ein Fehler aufgetreten ist, wenn eine bestimmte Zeitdauer verstrichen ist,
ohne dass Daten erfolgreich von der Quellengruppe 1202 zu
dem örtlichen
Bestimmungsort 1204 übertragen
wurden. Wenn bei der Fehlerbearbeitung bei dem Schritt 1607 bestimmt
wird, dass kein Fehler aufgetreten ist (und somit die Verarbeitung
fortgesetzt werden sollte), wird die Steuerung von dem Schritt 1607 zu
einem Testschritt 1608 übertragen, bei
dem bestimmt wird, ob mehr aktive Daten von der Quellengruppe 1202 zu
dem entfernt gelegenen Bestimmungsort 1206 gesendet werden
sollen. Wenn dies der Fall ist, wird die Steuerung von dem Testschritt 1608 zu
einem Schritt 1612 übertragen,
bei dem ein Zeiger, der durch die Daten iteriert (z. B. durch die
Elemente der inaktiven einen der Listen 74, 76 hindurch
iteriert), so eingestellt wird, dass er auf den nächsten inaktiven
Block der Daten, die gesendet werden sollen, zeigt. Nachfolgend
dem Schritt 1612 wird die Steuerung zurück zu dem Schritt 204 übertragen,
um die Verarbeitung fortzusetzen, wie sie bereits beschrieben worden
ist.
-
Wenn
bei dem Testschritt 1608 bestimmt wird, dass nicht mehr
inaktive Daten gesendet werden sollen, wird die Steuerung von dem
Testschritt 1608 zu einem Schritt 1614 übertragen,
bei welchem der Prozess wartet. Da bereits bestimmt worden ist, dass
die Daten, die gesendet werden sollen, einer Übertragung von der Quellengruppe 1202 zu
dem entfernt gelegenen Bestimmungsort 1206 entsprechen
(bei dem Testschritt 1604) und bereits festgestellt worden
ist, dass der entsprechende Transfer von der Quellengruppe 1202 zu
dem örtlichen
Bestimmungsort 1204 noch nicht vervollständigt worden ist
(entsprechend dem Test bei dem Schritt 1606), ist es dann,
wenn bei dem Testschritt 1608 bestimmt worden ist, dass
nicht mehr Daten gesendet werden sollen, angemessen, bei dem Schritt 1614 zu
warten, so dass entweder mehr inaktive Daten verfügbar gemacht
werden, um sie zu senden, oder solange zu warten, bis ein anderer
Prozess erfolgreich entsprechende Daten von der Quellengruppe 1202 zu
dem örtlichen
Bestimmungsort 1204 überträgt, so dass dadurch
das Ergebnis bei dem Testschritt 1606 für die nächste Iteration geändert wird.
Nachfolgend dem Schritt 1614 wird die Steuerung zurück zu dem Schritt 204 übertragen,
um die Verarbeitung fortzusetzen, die bereits beschrieben worden
ist.
-
Wenn
bei dem Testschritt 1606 bestimmt wird, dass die entsprechende Übertragung
zu dem örtlichen
Bestimmungsort 1204 an früherer Stelle erfolgreich vervollständig worden
ist, wird die Steuerung von dem Testschritt 1606 zu einem
anderen Testschritt 1616 übertragen, um zu bestimmen,
ob die zu übertragenden
Daten mehr als einen Schlitz aufweisen, der diesen zugeordnet ist,
und zwar in Verbindung mit der Übertragung
(z. B. ein aktiver Schlitz und ein inaktiver Schlitz). Wie bereits
erläutert worden
ist, ist es unter gewissen Bedingungen oder Umständen möglich, dass mehr als ein Schlitz
vorhanden ist, der zugeordnet wird, und zwar zu etwas, was sonst
einem einzelnen Schlitz zugeordnet ist. Siehe beispielsweise die
obige Erläuterung
in Verbindung mit dem Flussdiagramm 440 von 12 und den Schritten 446, 472, 474, 476, 478.
Wenn somit bei dem Testschritt 1616 bestimmt wird, dass
nicht mehr als ein Schlitz vorhanden ist, wird die Steuerung von
dem Testschritt 1616 zu dem Schritt 212 übertragen,
um die Verarbeitung in der oben beschriebenen Weise fortzusetzen.
Wenn im anderen Fall bei dem Testschritt 161 bestimmt wird,
dass mehr als ein entsprechender Schlitz vorhanden ist, wird die
Steuerung von dem Testschritt 1616 zu einem Testschritt 1618 übertragen,
bei dem bestimmt wird, ob der Transfer der anderen Schlitze zu der örtlichen
Speichervorrichtung 1204 erfolgreich gewiesen ist, ähnlich dem
Test in Verbindung mit dem Schlitz bei dem Schritt 1606.
Wenn bei dem Testschritt 1618 bestimmt wird, dass alle
anderen entsprechenden Schlitze in richtiger Weise zu der örtlichen
Speichervorrichtung 1204 übertragen worden sind, wird
die Steuerung von dem Testschritt 1618 zu dem Schritt 212 übertragen,
um die Verarbeitung in der oben beschriebenen Weise fortzusetzen.
Im anderen Fall wird die Steuerung von dem Testschritt 1618 zu
dem Schritt 1608 übertragen,
was ebenfalls bereits beschrieben wurde.
-
Bei
einer anderen Ausführungsform
des hier beschriebenen Systems ist es möglich, eine COVDs für die R2-Vorrichtung
zu verwenden, wie diejenigen, die in dem Diagramm 240 von 7 gezeigt
sind. Das heißt,
es ist möglich,
den R2-Empfang von asynchronen Daten ohne Verwendung von COVDs bei der
R2-Vorrichtung zu implementieren.
-
Um
nun auf 39 einzugehen, so zeigt ein Diagramm 1640 einen
Cachespeicher 1642, der in der entfernt gelegenen Speichervorrichtung 26 vorgesehen
ist, welche Daten empfängt.
Der Caehespeicher 1642 enthält eine Vielzahl von Schlitzen 1652–1654,
in welchen asynchrone Daten platziert sind, die von der örtlichen
Speichervorrichtung 24 empfangen wurden. Auch ist eine
erste kreisförmige verkettete
Liste 1674 und eine zweite kreisförmige verkettete Liste 1676 gezeigt,
welche Zeiger zu den Schlitzen 1652–1654 des Cachespeichers 1642 enthält. Beispielsweise
enthält
die kreisförmige
verkettete Liste 1674 eine Vielzahl an Zeigern 1652–1654, von
denen jeder auf einen der Schlitze 1652–1654 in dem Cachespeicher 1642 zeigt.
In ähnlicher
Weise enthält
die kreisförmige
verkettete Liste 1676 eine Vielzahl an Zeigern 1691–1695,
von denen jeder auf einen der Schlitze 1652–1654 des
Cachespeichers 1642 zeigt. Eine logische Standardvorrichtung 1698 ist
auch an Abschnitten des Cachespeichers 1642 abgebildet
(mapped).
-
Bei
einer hier beschriebenen anderen Ausführungsform entspricht eine
der Listen 1674–1676 einem
inaktiven Datenpaket (z. B. ähnlich
dem Paket 56, welches in 2 gezeigt
ist), während
eine andere eine der Listen 1674, 1676 einem aktiven
Datenpaket entspricht (z. B. ähnlich
dem Paket 58 von 2). Es
werden empfangene Daten unter Verwendung eines inaktiven Datenpakets
der Datenpakete gesammelt, während
das aktive Paket der Datenpakete zum Speichern von Daten an der
logischen Standardvorrichtung 1698 verwendet wird, wie
dies bereits in Verbindung mit dem Diagramm 240 von 7 beschrieben
worden ist und sich aus dem entsprechenden Text ergibt. Wenn somit
neue Daten ankommen, werden sie in den Cachespeicher 1642 platziert
und es wird ein neuer Zeiger hinzu addiert, und zwar zu der einen
der kreisförmigen
verketteten Listen 1674, 1676 entsprechend dem
inaktiven Datenpaket, wenn die Daten empfangen werden.
-
In
einigen Fällen
kann es nützlich
sein, dazu befähigt
zu sein, zu bestimmen, ob ein Abschnitt der logischen Standardvorrichtung 1698 (oder
irgendeiner anderen logischen Vorrichtung) einen Schlitz besitzt,
der dieser in dem Cache 1642 entsprechend den empfangenen
Daten zugeordnet ist. Es ist natürlich
immer möglich,
beide Listen 1674, 1676 durchzugehen, um zu bestimmen,
ob ein entsprechender Schlitz in dem Cachespeicher 1642 vorhanden
ist. Es wäre
jedoch nützlicher,
wenn es einen Weg zur Verwendung einer speziellen Vorrichtung, eines
Zylinders und von Kopfwerten einer logischen Vorrichtung geben würde, um
zu bestimmen, ob ein entsprechender einer der Schlitze 1652, 1654 in
dem Cachespeicher 1642 vorhanden ist und darauf wartet,
zu der Vorrichtung hin ausgelesen zu werden.
-
Gemäß 40 zeigt ein Diagramm 1700 eine Hash-Tabelle 1702,
die eine Vielzahl von Einträgen 1704–1706 enthält. Bei
einer hier beschriebenen Ausführungsform
enthält
jeder der Einträge 1704–1706 entweder
einen Null-Zeiger oder zeigt auf einen der Cacheschlitze 1652–1654,
der den Daten entspricht, die empfangen worden sind, jedoch noch nicht
an der logischen Standardvorrichtung 1698 gespeichert wurden
(oder einer anderen logischen Standardvorrichtung). Die Tabelle 1702 wird
unter Verwendung einer Hash-Funktion durchgelesen, die eine mathematische
Operation durchführt,
und zwar unter Verwendung von speziellen Werten der Vorrichtung,
des Zylinders und des Kopfes, um einen Index in der Tabelle 1702 zu
generieren, um den entsprechenden Eintrag zu finden. Wenn somit
von der R2-Vorrichtung Daten empfangen werden, wird die Hash-Funktion
an der Vorrichtung, dem Zylinder und dem Kopf angewendet, um deren
Indexwert in der Tabelle 1702 zu finden und es wird dann
ein Zeiger zu dem entsprechenden einen der Einträge 1704–1706 geschrieben,
der auf den speziellen Schlitz 1652–1654 in dem Cachespeicher 1642 zeigt. Nachdem
die empfangenen Daten einmal in geeigneter Weise zu der logischen
Standardvorrichtung 1698 hin ausgelesen worden sind (oder
zu einer anderen Vorrichtung), wird der entsprechende eine Eintrag
der Einträge 1704–1706 auf
Null gesetzt. Auf diese Weise ermöglicht es die Hash-Tabelle 1702, schnell
bestimmen zu können,
ob ein bestimmter Abschnitt einer logischen Standardvorrichtung
empfangenen Daten entspricht, die noch nicht ausgelesen worden sind.
Bei dem hier beschriebenen System kann irgendeine geeignete Hash-Funktion
dazu verwendet werden, um den Index in der Tabelle 1702 zu erzeugen.
-
In
einigen Fällen
kann es für
eine bestimmte Vorrichtung, Zylinder und Kopfwerte möglich sein,
einen Index in der Tabelle 1702 zu generieren, welcher der
gleiche ist wie ein Index, der durch unterschiedliche Werte für die Vorrichtung,
Zylinder und Kopf generiert wurde. Dies wird als "Kollision" bezeichnet. In Fällen, bei
denen Kollisionen auftreten, wird ein zweiter Eintrag in die Tabelle 1702 entsprechend
dem gleichen Index vorgesehen und der zweite Eintrag wird mit dem
ersten Eintrag verkettet, so dass ein spezieller Index mehr als
nur einem Eintrag entsprechen würde.
Dies ist durch ein Element 1708 veranschaulicht, welches
mit dem Element 1705 der Tabelle 1702 verkettet
ist. Somit wird eine erste Vorrichtung, Zylinder und Kopf gehashed,
um zu dem Eintrag 1705 zu schalten, während eine abweichende oder
unterschiedliche Vorrichtung, Zylinder und Kopf zu der Hash-Funktion
eingegeben werden, um den gleichen Wert für den Index zu generieren.
Bei einer hier beschriebenen Ausführungsform wird der Eintrag 1705 dazu
verwendet, um auf Daten in dem Cachespeicher 1642 zu zeigen,
entsprechend der ersten Vorrichtung, Zylinder und Kopf, während der
Eintrag 1708 dazu verwendet wird, um auf Daten in dem Cachespeicher 1642 zu
zeigen, entsprechend der zweiten Vorrichtung, Zylinder und Kopf.
Natürlich kann
dann, wenn Daten zu einer geeigneten Vorrichtung ausgelesen werden,
der entsprechende eine der Einträge 1705, 1708 aus
der Tabelle 1700 beseitigt werden.
-
Es
sei darauf hingewiesen, dass irgendeine Zahl von Einträgen einem
einzelnen Index entsprechen kann, so dass beispielsweise Kollisionen
auftreten, die drei getrennte Sätze
von Werten für
die Vorrichtung, Zylinder und den Kopf verursachen, um den gleichen
Index zu generieren, zu drei (oder mehr) Einträgen führen würde, die an einem bestimmten
Index in der Tabelle 1702 miteinander verkettet sind. Es sei
auch erwähnt,
dass andere geeignete Techniken angewendet werden können, um
Kollisionen zu handhaben, inklusive Vorsehen von zusätzlichen
Tabellen (z. B. einer zweiten Tabelle, einer dritten Tabelle, einer
vierten Tabelle usw.).
-
Um
nun auf 41 einzugehen, so zeigt ein Diagramm 1720 eine
alternative Ausführungsform
einer Hash-Tabelle 1722, die eine Vielzahl an Einträgen 1724–1726 enthält. Die
Ausführungsform
gemäß 41 ist ähnlich
der Ausführungsform
gemäß 40 mit einigen Unterschieden, die noch beschrieben
werden. Jeder der Einträge 1724–1726 enthält entweder
einen Null-Zeiger oder Zeiger zu einem der Cacheschlitze 1728, 1732, 1734,
die in dem Diagramm 1720 gezeigt sind, die den Daten entsprechen,
die empfangen worden sind, jedoch noch nicht an der logischen Standardvorrichtung 1698 gespeichert
worden sind (oder einer anderen logischen Standardvorrichtung).
Die Tabelle 1722 wird unter Verwendung einer Hash-Funktion
durchgelesen (indexed), die eine mathematische Operation unter Verwendung
spezieller Werte für
die Vorrichtung, den Zylinder und den Kopf ausführt, um einen Index in der Tabelle 1722 zum
Auffinden des entsprechenden Eintrages zu generieren. Wenn somit
Daten durch die R2-Vorrichtung empfangen werden, wird die Hash-Funktion
auf die Vorrichtung, den Zylinder und den Kopf angewendet, um deren
Indexwert in der Tabelle 1722 zu finden und es wird dann
ein Zeiger geschrieben, und zwar zu dem entsprechenden einen der
Einträge 1724–1726,
der zu dem bestimmten Schlitz 1728, 1732, 1734 zeigt.
Wenn einmal die empfangenen Daten in geeigneter Weise zu der logischen
Standardvorrichtung 1698 (oder einer anderen Vorrichtung)
ausgelesen wurden, wird der entsprechende eine Eintrag der Einträge 1724–1726 in
geeigneter Weise eingestellt. Auf diese Weise ermöglicht es
die Hash-Tabelle 1722, in schneller Weise zu bestimmen,
ob ein bestimmter Abschnitt einer logischen Standardvorrichtung
den empfangenen Daten entspricht, die noch nicht ausgelesen worden
sind. Für das
hier beschriebene System kann irgendeine geeignete Hash-Funktion
dazu verwendet werden, um den Index in der Tabelle 1722 zu
generieren.
-
Bei
der Ausführungsform,
die in 41 gezeigt ist, zeigt in Fällen, bei
denen Kollisionen auftreten, ein Tabelleneintrag, der auf den ersten
Schlitz zeigt, auf einen zweiten Schlitz, der die Kollision verursacht
hat. Wenn somit beispielsweise der Schlitz 1732 und ein
Schlitz 1736 eine Kollision an dem Tabelleneintrag 1725 verursachen,
zeigt der Tabelleneintrag 1725 auf den Schlitz 1732,
während
der Schlitz 1732 auf den Schlitz 1736 zeigt. Somit
bewirkt eine Kollision keine Änderung
in der Tabelle 1722, wenn nachfolgend ein Schlitz hinzu
addiert wird, da das Hinzuaddieren des nachfolgenden Schlitzes einfach
eine Änderung
des Zeigerwertes für
einen früheren
Schlitz involviert. Natürlich
kann irgendeine Anzahl an Schlitzen einem einzelnen Tabelleneintrag entsprechen.
-
Es
sei darauf hingewiesen, dass irgendeine Anzahl an Einträgen einem
einzelnen Index entsprechen kann, so dass beispielsweise dann, wenn
Kollisionen auftreten, die bewirken, dass drei getrennte Sitze von
Werten für
eine Vorrichtung, einen Zylinder und einen Kopf den gleichen Index
erzeugen, dann drei (oder mehrere) Einträge miteinander verkettet werden,
und zwar bei einem bestimmten Index in der Tabelle 1702.
Es sei erwähnt,
dass andere geeignete Techniken zur Handhabung von Kollisionen verwendet
werden können,
inklusive Vorsehen von zusätzlichen
Tabellen (z. B. einer zweiten Tabelle, einer dritten Tabelle, einer
vierten Tabelle usw.).
-
In
einigen Fällen
kann es vorteilhaft sein, die Fähigkeit
zu haben, etwas anderes als den örtlichen Bestimmungsort 1204 zu
verwenden, der in dem Diagramm 1200 von 26 gezeigt ist. Wenn natürlich der örtliche Bestimmungsort 1204 nicht
einen vollständigen
Spiegel der Quellengruppe darstellt, wird eine Wiederherstellung
an dem entfernt gelegenen Bestimmungsort 1206 ausgeführt. Jedoch
kann der entfernt gelegene Bestimmungsort 1206 keine Daten enthalten,
die auf dem neuesten Stand sind, und zwar in Form von Daten, die
synchron von der Quellengruppe 1202 zu dem örtlichen
Bestimmungsort 1204 geschrieben wurden. Es ist demzufolge
wünschens wert,
dazu befähigt
zu sein, an dem entfernt gelegenen Bestimmungsort 1206 eine
Wiederherstellung oder Wiedergewinnung vorzunehmen, das heißt Daten
zur Verfügung
zu haben, die auf dem neuesten Stand sind, und zwar in Form von
Daten, die synchron von der Quellengruppe 1202 zu dem örtlichen
Bestimmungsort 1204 geschrieben wurden.
-
Gemäß 42 zeigt ein Diagramm 1780 ein System,
welches eine Quellengruppe 1782 ähnlich der Quellengruppe 1202 des
Diagramms 1200 von 26 enthält. Das
Diagramm 1780 zeigt auch einen entfernt gelegenen Bestimmungsort 1786 ähnlich dem
entfernt gelegenen Bestimmungsort 1206 des Diagramms 1200 von 26.
-
Das
Diagramm 1780 zeigt auch einen örtlichen Minimal-Speicherbestimmungsort 1788,
der dazu verwendet wird, um Synchrondaten zu empfangen, die von
der Quellengruppe 1782 ausgeschrieben werden. Bei einer
hier beschriebenen Ausführungsform
erscheint der örtliche
Minimal-Speicherbestimmungsort 1788 für die Quellengruppe 1782,
eine Speichervorrichtung ähnlich
dem örtlichen
Bestimmungsort 1204 des Diagramms 1200 von 26 zu sein. Jedoch ist bei einer Ausführungsform,
die hier beschrieben wird, der örtliche
Minimal-Speicherbestimmungsort 1788 kein Spiegel der Quellengruppe 1782.
Stattdessen wird der örtliche
Minimal-Speicherort 1788 dazu verwendet, um Daten zu speichern,
die zu dem entfernt gelegenen Bestimmungsort 1786 in einem
Fall übertragen
werden, dass eine Wiederherstellung erforderlich wird. Bei einer
hier beschriebenen Ausführungsform
werden alle Wiederherstellungsvorgänge an dem entfernt gelegenen Bestimmungsort 1786 durchgeführt. Bei
anderen Ausführungsformen
ist es möglich,
dass die Quellengruppe 1782 weiß, dass sie mit der örtlichen
Minimal-Speicherstelle
bzw. -Bestimmungsort 1788 verbunden ist.
-
Die
Quellengruppe 1782 kann ähnlich der Quellengruppe 1202 des
Diagramms 1200 von 26 arbeiten.
Somit liefert die Quellengruppe 1782 synchrone Schreibeinträge zu dem örtlichen Minimal-Speicherort 1788 und
liefert geordnete Schrei beinträge
zu dem entfernten Bestimmungsort 1786. Der örtliche
Minimal-Speicherbestimmungsort 1788 speichert,
anstelle ein Spiegel für
die Quellengruppe 1782 zu sein, lediglich die zu allerletzt
aufgetretenen synchronen Schreibeinträge von der Quellengruppe 1782,
so dass in einem Fall, bei dem eine Wiederherstellung erforderlich
wird, der örtliche
Minimal-Speicherort 1788 die allerletzten Schreibeinträge zu dem
entfernten Bestimmungsort 1786 transferieren kann. Wenn
Daten von der Quellengruppe 1782 zu dem entfernt gelegenen
Bestimmungsort 1786 übertragen
werden, werden entsprechende Daten aus dem örtlichen Minimal-Speicherbestimmungsort 1788 entfernt,
so dass der örtliche
Minimal-Speicherbestimmungsort 1788 beispielsweise lediglich
die letzten zwei Zyklen der geordneten Schreibeintragsdaten zurück behält, da irgendwelche Zyklen,
die älter
als zwei letzte Zyklen sind, bereits an der entfernt gelegenen Speichervorrichtung 1786 gespeichert
sind.
-
Um
nun auf 43 einzugehen, so veranschaulicht
eine Datenstruktur 1800 den Speichervorgang von Daten an
dem örtlichen
Minimal-Speicherbestimmungsort 1788. Bei der hier beschriebenen Ausführungsform
ist die Datenstruktur 1800 mit einer Liste verkettet, die
eine Vielzahl an Elementen 1802–1805 aufweist. Der
oberste Zeiger der Liste zeigt zu dem ersten Element 1802.
Das erste Element zeigt zu dem zweiten Element 1803, das
zweite Element zeigt zu dem dritten Element 104 usw. Die verkettete
Liste 1800 enthält
auch ein letztes Element 1805, welches auf einen Null-Zeiger als ein nächstes Element
zeigt, um das Ende der Liste anzuzeigen. Natürlich können andere geeignete Datenstrukturen verwendet
werden.
-
Bei
einer hier beschriebenen Ausführungsform
ist die Liste 1800 gemäß der Spur
und der Kopfstelle an einer logischen Standardvorrichtung sortiert,
so dass beispielsweise das Element 1802 das erste Element
in einer Sequenz von Elementen an der logischen Standardspeichervorrichtung
ist, das zweite Element 1803 auf das erste Element 1802 folgt
usw. Bei einer anderen Ausführungsform
ist die Liste 1800 gemäß der Reihenfolge
sortiert, in welcher die Datenschreibeinträge von der Quellengruppe 1782 zu
der örtlichen
Minimal-Speicherstelle 1788 geliefert werden. Beide Ausführungsformen
werden weiter unten noch mehr in Einzelheiten beschrieben.
-
Gemäß 44 zeigt ein Diagramm mehr in Einzelheiten ein
Datenelement 1820 der verketteten Liste 1800.
Das Datenelement 1820 enthält ein TRACK-Feld 1822,
welches eine Spurnummer anzeigt, die zum Speichern der Daten an
der entsprechenden logischen Standardvorrichtung verwendet wird.
Andere Datenspeicherstellen können
anstelle der Spurzahl verwendet werden, wie beispielsweise die Sektorzahl,
der Versatz (Offset) vom Anfang der logischen Standardvorrichtung
oder irgendein anderer geeigneter Indikator.
-
Das
Datenelement 1820 enthält
auch eine Zykluszahl 1824 (CYCNO), welche die Zyklen anzeigt,
die für
den Transfer der Daten von der Quellengruppe 1782 zu dem
entfernt gelegenen Bestimmungsort 1786 verwendet werden,
wie dies bereits beschrieben wurde. Wenn Daten von der Quellengruppe 1782 zu
der örtlichen
Minimal-Speicherstelle 1788 übertragen werden, hält die örtliche
Minimal-Speicherstelle 1788 Spur mit den Zyklusänderungen
entsprechend den Übertragungen
zwischen der Quellengruppe 1782 und dem entfernt gelegenen Bestimmungsort 1786 und
ordnet eine geeignete Zykluszahl dem Datenelement 1820 zu,
wie dies noch mehr in Einzelheiten beschrieben wird.
-
Das
Datenelement 1820 enthält
auch ein Datenfeld 1826 (DATA), welches den Daten entspricht, die
von der Quellengruppe 1782 zu dem örtlichen Minimal-Speicherbestimmungsort 1788 übertragen wurden.
Das Datenelement 1820 enthält auch ein nächstes Feld 1828 (NEXT),
welches dazu verwendet wird, um auf das nächste Datenelement in der Verkettungsliste 1800 zu
zeigen.
-
Gemäß 45 veranschaulicht ein Flussdiagramm 1850 die
Schritte, die durch die örtliche
Minimal-Speicherstelle 1788 in Verbindung mit dem Empfang
von Daten durchgeführt
werden, die von der Quellengruppe 1782 geliefert werden,
und zwar zu der örtlichen
Minimal-Speicherstelle 1788. Wie noch erläutert wird,
kann die örtliche Minimal-Speicherstelle 1788 der
Quellengruppe 1782 so erscheinen, dass sie ein Spiegel
der Quellengruppe 1782 ist. Wie jedoch bereits beschrieben
wurde, bildet der örtliche
Minimal-Speicherort 1788 nicht notwendigerweise einen Spiegel
der Quellengruppe 1782, sondern enthält stattdessen die letzten
Daten von der Quellengruppe 1782. In einem Fall, bei dem
eine Wiederherstellung erforderlich wird, überträgt der örtliche Minimal-Speicherbestimmungsort 1788 die
dort gespeicherten Daten zu dem entfernt gelegenen Bestimmungsort 1786,
um die Wiederherstellung zu vereinfachen.
-
Die
Verarbeitung entsprechend dem Flussdiagramm 1850 beginnt
bei einem Schritt 1852, bei dem eine örtliche Zykluszahl CYCNO auf
Null gesetzt wird. Die örtliche
Zykluszahl, die bei dem Schritt 1852 gesetzt wird, wird
dazu verwendet, um mit Zyklusänderungen
der Quellengruppe 1782 Schritt zu halten. Es sei darauf
hingewiesen, dass es nicht erforderlich ist, dass die örtliche
Zykluszahl exakt der bestimmten Zykluszahl entspricht, die an der
Quellengruppe 1782 verwendet wird. Vielmehr ist es ausreichend, dass
die bei dem Schritt 1852 eingestellte Zykluszahl mit den
Zyklusschaltvorgängen
der Quellengruppe 1782 Schritt hält.
-
Nachfolgend
dem Schritt 1852 folgt ein Schritt 1854, bei dem
Daten von der Quellengruppe 1782 empfangen werden. Nachfolgend
dem Schritt 1854 folgt ein Testschritt 1856, bei
dem bestimmt wird, ob die empfangenen Daten einem Zyklusschaltvorgang
entsprechen, der durch die Quellengruppe 1782 vorgesehen
wird. Der Testschritt 1856 ist ähnlich dem Testschritt 1262 von 28A, wie weiter oben erläutert wurde.
-
Wenn
bei dem Testschritt 1856 bestimmt wird, dass die empfangenen
Daten nicht einem Zyklusschaltvorgang entsprechen, wird die Steuerung von
dem Testschritt 1856 zu einem Schritt 1858 übertragen,
bei dem die empfangenen Daten zu dem örtlichen Minimal-Speicherbestimmungsort 1788 hinzugefügt werden.
Das Hinzufügen
der Daten zum Speicher des örtlichen
Minimal-Speicherbestimmungsortes 1788 bei dem Schritt 1858 wird
mehr in Einzelheiten noch an späterer
Stelle erläutert.
Auf den Schritt 1858 folgt ein Schritt 1862, bei
dem die empfangenen Daten zur Quellengrup pe 1782 von dem örtlichen
Minimal-Speicherbestimmungsort 1788 hin bestätigt werden.
Die Bestätigung
der Daten bei dem Schritt 182 kann dazu verwendet werden,
dass der örtliche Minimal-Speicherbestimmungsort 1788 zu
der Quellengruppe 1782 als ein vollständig synchroner Spiegel erscheint
(das heißt
die Bestätigung
oder Anerkennung, die bei dem Schritt 1862 vorgesehen wird, ist
die gleiche Bestätigung
oder Anerkennung, die durch einen vollen synchronen Spiegel geliefert wird).
Nachfolgend auf den Schritt 1862 wird die Steuerung zurück zu dem
Schritt 1854 übertragen, um
mehr Daten zu empfangen.
-
Wenn
bei dem Testschritt 1856 bestimmt wird, dass die bei dem
Schritt 1854 empfangenen Daten einem Zyklusschaltvorgang
entsprechen, dann wird die Steuerung von dem Schritt 1856 zu
einem Schritt 1864 übertragen,
bei dem die interne Zykluszahl CYCNO, die bei dem örtlichen
Minimal-Speicherbestimmungsort 1788 verwendet wird, inkrementiert
wird. Bei einer hier beschriebenen Ausführungsform gibt es eine maximale
Zykluszahl MAXCYCNO, so dass die Zykluszahl bei dem Schritt 1864 dadurch
inkrementiert wird, indem Eins zu CYCNO hinzu addiert wird und dann
das Ergebnis davon als Modulo MAXCYCNO genommen wird.
-
Nachfolgend
dem Schritt 1864 folgt ein Schritt 1866, bei dem
Daten entsprechend den früheren
Zykluszahlen gelöscht
werden. Wie bereits erläutert
worden ist, speichert der örtliche
Minimal-Speicherbestimmungsort 1788 Daten entsprechend
den letzten zwei Zykluszahlen. Irgendwelche Daten, die älter als
zwei Zykluszahlen sind, sollten bereits erfolgreich von der Quellengruppe 172 zu dem
entfernt gelegenen Bestimmungsort 1786 übertragen worden sein. Demzufolge
braucht dann, da die Wiederherstellung an dem entfernt gelegenen Bestimmungsort 1786 vorgesehen
wird, der örtliche Minimal-Speicherbestimmungsort 1788 lediglich
Daten entsprechend der momentanen Zykluszahl zu speichern und Daten
entsprechend der früheren
Zykluszahl zu speichern. Bei anderen Ausführungsformen kann es möglich sein,
unterschiedliche Daten beizubehalten (das heißt drei oder vier kürzlich aufgetretene
Zyklen). Die entfernten oder gelöschten Daten
bei dem Schritt 1866 werden noch mehr in Einzelheiten erläutert. Nachfolgend
dem Schritt 1866 wird die Steuerung zurück zu dem Schritt 1854 übertragen,
der bereits oben erläutert
worden ist, um zusätzliche
Daten zu empfangen.
-
Um
nun auf 46 einzugehen, so veranschaulicht
ein Flussdiagramm 1900 mehr in Einzelheiten Schritte, die
durch die örtliche
Minimal-Speicherbestimmungsstelle
oder -bestimmungsort 1788 in Verbindung mit dem Schritt 1858 durchgeführt werden,
wobei empfangene Daten zu den Daten hinzugefügt werden, die an dem örtlichen
Minimal-Speicherbestimmungsort 1788 gespeichert sind. Die
Verarbeitung beginnt bei einem ersten Schritt 1902, bei
dem eine zeitweilige Variable P1 gleich auf das obere Ende der Liste
gesetzt wird, entsprechend einem Zeiger, der auf die Verkettungsliste 1800 der Daten
zeigt, die in dem örtlichen
Minimal-Speicherbestimmungsort 1788 gespeichert sind.
-
Nachfolgend
dem Schritt 1902 folgt ein Testschritt 1904, bei
dem bestimmt wird, ob die zeitweilige Variable P1 gleich ist Null.
Wenn dies der Fall ist, gibt es keine Daten, die in der Verkettungsliste 1800 gespeichert
sind und die Daten, die gemäß den Schritten
des Flussdiagramms 1900 gespeichert werden, entsprechen
den ersten Daten, die an dem örtlichen
Minimal-Speicherbestimmungsort 1788 gespeichert wurden.
Wenn bei dem Testschritt 1904 bestimmt wird, dass P1 gleich
ist Null, dann wird die Steuerung von dem Testschritt 1904 zu
einem Testschritt 1906 übertragen,
bei dem Speicher von einem Heap (oder irgendeiner anderen geeigneten
Einrichtung) unter Verwendung eines Malloc-Befehls (oder irgendeinem
geeigneten anderen Befehl) für
eine zeitweilige Variable T erhalten wird, die für eine zeitweilige Speicherung
von Daten verwendet wird. Nachfolgend dem Schritt 1906 folgt
ein Schritt 1908, bei dem ein Spurzahlenfeld der Datenaufzeichnung
T (T.TRACK) gleichgesetzt wird der Spur der logischen Standardvorrichtung,
auf der die Daten an der Quellengruppe 1782 gespeichert
werden. Nachfolgend dem Schritt 1908 folgt ein Schritt 1912,
bei dem T.CYCNO gleichgesetzt wird der momentanen örtlichen Zykluszahl,
und zwar bei der örtlichen
Minimal-Speicherstelle oder -Bestimmungsort 1778.
-
Nachfolgend
dem Schritt 1912 folgt ein Schritt 1914, bei dem
die empfangenen Daten zu dem Datenfeld von T (das heißt T.DATA)
kopiert werden. Nachfolgend dem Schritt 1914 folgt ein
Schritt 1916, bei dem das nächste Feld (T.NEXT) gleich
Null gesetzt wird. Nachfolgend dem Schritt 1916 folgt ein Schritt 1019,
bei dem der obere Bereich bzw. das obere Listenende gleich T gesetzt
wird. Nachfolgend dem Schritt 1918 wird die Verarbeitung
vervollständigt.
-
Wenn
bei dem Testschritt 1904 bestimmt wird, dass die Variable
P1 nicht gleich Null ist, dann wird die Steuerung von dem Testschritt 1904 zu
einem Testschritt 1922 übertragen,
bei dem bestimmt wird, ob die Spurzahl entsprechend den Daten, die empfangen
worden sind, gleich ist der Spurzahl des Datenelements, auf die
durch P1 gezeigt wird. Wenn dies der Fall ist, wird die Steuerung
von dem Testschritt 1922 zu einem Schritt 1924 übertragen,
bei dem die empfangenen Daten zu dem Datenfeld bei P1.DATA geschrieben
werden (möglicherweise
mit Überschreibung
existierender Daten). Nachfolgend dem Schritt 1924 folgt
ein Schritt 1926, bei dem das Zykluszahlenfeld des Elements,
auf welches durch P1 (P1.CYCNO) gezeigt wird, mit der momentanen örtlichen
Zykluszahl (CYCNO) überschrieben
wird, die an dem örtlichen
Minimal-Speicherbestimmungsort 1778 gespeichert ist. Nachfolgend
dem Schritt 1926 wird die Verarbeitung vervollständigt.
-
Wenn
bei dem Testschritt 1922 bestimmt wird, dass die Spurzahl
des Elements, auf welches durch P1 gezeigt wird, nicht gleich der
Spurzahl ist entsprechend den empfangenen Daten, dann wird die Steuerung
von dem Testschritt 1922 zu einem Schritt 1928 übertragen,
bei dem eine andere zeitweilige Variable P2 gleichgesetzt wird P1.NEXT. Nachfolgend
dem Schritt 1928 folgt ein Testschritt 1932, bei
dem bestimmt wird, ob P2 gleich Null ist (das heißt P1 zeigt
auf ein Element an dem Ende der Verkettungsliste 1800).
Wenn dies nicht der Fall ist, wird die Steuerung von dem Testschritt 1932 zu
einem Testschritt 1934 übertragen,
bei dem bestimmt wird, ob die Spurzahl, die dem Element entspricht, auf
welches durch P2 gezeigt wird, kleiner ist als die Spurzahl entsprechend
den Daten, die empfangen wurden. Bei dem Test entsprechend dem Schritt 1934 wird
bestimmt, ob die empfangenen Daten ein neues Element bilden sollen,
welches zwischen P1 und P2 zwischengefügt wird. Wenn bei dem Testschritt 1934 bestimmt
wird, dass die Spurzahl des Elements, auf welches durch P2 gezeigt
ist, nicht kleiner ist als eine Spurzahl entsprechend den empfangenen
Daten, wird die Steuerung von dem Testschritt 1934 zu einem
Schritt 1936 übertragen,
bei welchem die zeitweilige Variable P1 gleichgesetzt wird mit P2,
um eine nächste
Iteration vorzubereiten. Nachfolgend dem Schritt 1936 wird
die Steuerung zurück
zu dem Testschritt bei 1922 übertragen, was bereits oben
erläutert
wurde.
-
Wenn
bei dem Test gemäß dem Schritt 1932 bestimmt
wird, dass P2 auf Null zeigt oder wenn bei dem Testschritt 1934 bestimmt
wird, dass die Spurzahl des Datenelements, auf welches durch P2
gezeigt wird, kleiner ist als die Spurzahl entsprechend den empfangenen
Daten, wird die Steuerung zu dem Schritt 1938 übertragen,
bei dem ein neues Element (für
die Liste 1800) zugeordnet wird, und zwar unter Verwendung
einer zeitweiligen Variablen T. Nachfolgend dem Schritt 1938 folgt
ein Schritt 1942, bei dem die Spurzahl von T (T.TRACK)
gleichgesetzt wird der Spurzahl entsprechend den empfangenen Daten. Nachfolgend
dem Schritt 1942 folgt ein Schritt 1944, bei welchem
das Zykluszahlenfeld von T (T.CYCNO) gleichgesetzt wird der örtlichen
Zykluszahl bei dem örtlichen
Minimal-Speicherbestimmungsort 1788.
-
Auf
den Schritt 1944 folgt ein Schritt 1946, bei dem
die empfangenen Daten zu dem Datenfeld des zeitweiligen Speicherbereiches
T.DATA geschrieben werden. Auf den Schritt 1946 folgt ein Schritt 1948,
bei dem das nächste
Feld von T (T.NEXT) gleichgesetzt wird P2. Nachfolgend dem Schritt 1948 folgt
ein Schritt 1952, bei dem das nächste Feld des Elements, auf
welches durch P1 (P1.NEXT) gezeigt wird, so eingestellt wird, dass
es auf TT zeigt. Nachfolgend dem Schritt 1952 wird die Verarbeitung
vervollständigt.
-
Das
Flussdiagramm 1900 von 46 veranschaulicht
eine Ausführungsform,
bei der die Verkettungsliste 1800 an dem örtlichen
Minimal-Speicherbestimmungsort 1788 entsprechend der Spurzahl sortiert
wird, die den empfangenen Daten entspricht. Es ist auch möglich, die
empfangenen Daten entsprechend der Reihenfolge des Emp fangs der
Daten an dem örtlichen
Minimal-Speicherbestimmungsort 1788 zu sortieren.
-
Gemäß 47 veranschaulicht ein Flussdiagramm 2000 die
Schritte, die durch den örtlichen
Minimal-Speicherbestimmungsort 1788 bei dem Schritt 1858 ausgeführt werden,
wo Daten hinzugefügt
werden. Bei der alternativen Ausführungsform, die durch das Flussdiagramm 2000 veranschaulicht
ist, werden die Daten in der Verkettungsliste 1800 entsprechend der
Reihenfolge des Empfangs der Daten an dem örtlichen Minimal-Speicherbestimmungsort 1788 geordnet.
-
Die
Verarbeitung beginnt bei einem ersten Schritt 2002, bei
dem ein neues Datenelement T zugeordnet wird. Nachfolgend dem Schritt 2002 folgt ein
Schritt 2004, bei dem das Spurzahlfeld des zugeordneten
Elements (T.TRACK) gleichgesetzt wird der Spurzahl entsprechend
den empfangenen Daten. Nachfolgend dem Schritt 2004 folgt
ein Schritt 2006, bei dem das Zykluszahlfeld des zugeordneten
Elements (T.CYCNO) gleichgesetzt wird der örtlichen Zykluszahl, die an
dem örtlichen
Minimal-Speicherbestimmungsort 1788 (CYCNO) vorgesehen
wird.
-
Nachfolgend
dem Schritt 2006 folgt ein Schritt 2008, bei dem
die empfangenen Daten zu dem Datenfeld des zugeordneten Elements
(T.DATA) geschrieben werden. Auf den Schritt 2008 folgt
ein Schritt 2012, bei dem das nächste Feld des zugeordneten
Elements (T.NEXT) gleichgesetzt wird Null. Bei einer hier beschriebenen
Ausführungsform
werden die unmittelbar letzten empfangenen Daten zu dem Ende der
Verkettungsliste 1800 hinzu addiert. Nachfolgend dem Schritt 2012 folgt
ein Testschritt 2014, bei dem bestimmt wird, ob der Listenoberteil
(der Zeiger des Kopfes der Verkettungsliste 1800) gleich
ist Null. Es sei darauf hingewiesen, dass dann, wenn die ersten
Daten in die Verkettungsliste 1800 geschrieben werden oder
wenn alle Daten aus der Verkettungsliste 1800 entfernt
worden sind, der Listenoberteil gleich Null sein kann. Wenn bei
dem Testschritt 2014 bestimmt wird, dass der obere Teil
der Liste gleich Null ist, wird die Steuerung von dem Testschritt 2014 zu
einem Schritt 2016 übertragen,
bei dem der Oberteil der Liste so eingestellt wird, dass er auf
das neu zu geordnete Datenelement T zeigt. Nachfolgend dem Schritt 2016 folgt
ein Schritt 2018, bei dem ein Listen-Ende-Element LE, welches
mit dem Ende der Liste 1800 Spur hält, ebenso so eingestellt wird,
dass es auf das neu zugeordnete Datenelement T zeigt. Nachfolgend
dem Schritt 2018 ist die Verarbeitung dann vervollständigt.
-
Wenn
bei dem Testschritt 2014 bestimmt wird, dass der Listenoberteil
nicht gleich Null ist, wird die Steuerung von dem Testschrit 2014 zu
einem Schritt 2022 übertragen,
bei dem das nächste
Feld des Datenelements, auf welches durch den Listen-Ende-Zeiger
(LE.NEXT) gezeigt wird, so eingestellt wird, dass er auf das neue
zugeordnete Datenelement T zeigt. Auf den Schritt 2022 folgt
ein Schritt 2024, bei dem der Listen-Ende-Zeiger LE so
eingestellt wird, dass er gleich ist dem neu zugeordneten Datenelement
T. Nachfolgend dem Schritt 2024 ist die Verarbeitung dann
beendet bzw. vervollständigt.
-
Gemäß 48 veranschaulicht ein Flussdiagramm 2050 die
Schritte, die durch den örtlichen
Minimal-Speicherbestimmungsort 1788 in Verbindung mit dem
Löschschritt 1866 des
Flussdiagramms 1850 von 45 ausgeführt werden.
Bei einer hier beschriebenen Ausführungsform kann die gleiche Verarbeitung
zum Löschen
verwendet werden, und zwar ungeachtet davon, ob die Daten in der
Verkettungsliste 1800 gemäß der Spurzahl (Ausführungsform
von 46) oder gemäß der Reihenfolge
des Empfangs (Ausführungsform
von 47) gespeichert werden. Es
sei darauf hingewiesen, dass eine Technik, die zum Löschen der
Daten verwendet wird, von einer Technik unabhängig sein kann, die zum Hinzufügen von
Daten verwendet wird.
-
Die
Verarbeitung bei dem Flussdiagramm 2050 beginnt bei einem
ersten Schritt 2052, bei dem eine zeitweilige Variable
P1 gleichgesetzt wird einer Listen-Oberende-Variablen, die auf das erste Element
der Verkettungsliste 1800 zeigt. Auf den Schritt 2052 folgt
ein Testschritt 2054, bei dem bestimmt wird, ob P1 gleich
ist Null. Wenn dies der Fall ist, wird die Verarbeitung vervollständigt. Im
anderen Fall wird die Steuerung von dem Testschritt 2054 zu
einem Schritt 2056 übertragen,
bei dem eine andere zeitweilige Variable P2 gleichgesetzt wird dem
nächsten Feld
des Datenele ments, auf welches durch P1 gezeigt wird (das heißt gleichgesetzt
wird mit P1.NEXT): Nachfolgend dem Schritt 2056 folgt ein Testschritt 2058,
bei dem bestimmt wird, ob P2 auf Null zeigt. Wenn dies der Fall
ist, wird die Verarbeitung vervollständigt. Im anderen Fall wird
die Steuerung von dem Testschritt 2058 auf einen Testschritt 2062 übertragen,
bei dem bestimmt wird, ob die Zykluszahl des Feldes des Datenelements,
auf das durch P2 (P2.CYCNO) gezeigt wird, gleich ist der Zykluszahl
für die
zu löschenden
Daten (z. B. (CYCNO-2) modulo MAXCYCNO). Wenn dies der Fall ist, wird
die Steuerung von dem Testschritt 2062 zu einem Schritt 2064 übertragen,
bei dem das nächste Feld
des Elements, auf welches durch P1 (P1.NEXT) gezeigt wird, gleichgesetzt
wird dem nächsten
Feld des Elements, auf das durch P2 (P2.NEXT) gezeigt wird, so dass
das Element entfernt wird, auf welches durch P2 gezeigt wird, und
zwar aus der Verkettungsliste 1800. Nachfolgend dem Schritt 2064 folgt
ein Schritt 2066, bei dem das Element, auf welches durch
P2 gezeigt wird, freigegeben wird (das heißt, zu einem Heap zurückgeführt wird).
-
Nachfolgend
dem Schritt 2066 folgt ein Schritt 2068, bei dem
P1 gleichgesetzt wird dem nächsten
Feld, auf welches durch P1 (das heißt P1 = P1.NEXT) gezeigt wird.
Nachfolgend dem Schritt 2068 wird die Steuerung zurück zu dem
Schritt 2056 für
die nächste
Iteration übergeben.
Es sei erwähnt, dass
dann, wenn bei dem Testschritt 2062 bestimmt wird, dass
das Zykluszahlenfeld des Elements, auf welches durch P1 gezeigt
wird, nicht gleich ist einer Zykluszahl der Daten, die gelöscht werden
sollen, dann die Steuerung von dem Testschritt 2062 zu
dem Schritt 2068 übertragen
wird, wie dies oben erläutert wurde.
-
Es
sei darauf hingewiesen, dass für
die Ausführungsformen,
die in Verbindung mit den 42-48 erläutert wurden,
es nicht erforderlich ist, die SDDF-Pläne beizubehalten oder aufrecht
zu erhalten, dass die Wiederherstellung immer an dem entfernt gelegenen
Bestimmungsort 1786 durchgeführt wird und alle die gespeicherten
Daten von dem örtlichen
Minimal-Speicherbestimmungsort 1788 zu dem entfernt gelegenen
Bestimmungsort 1786 zur Wiederherstellung übertragen
werden. Es ist somit nicht erforderlich, mit den spezifischen Daten
Spur zu halten, die übertragen
sind. Darüber hinaus
ist es nicht erforderlich, eine Token oder irgendeinen anderen Mechanismus
zur Verfügung
zu haben, um Spur mit der Vorrichtung zu halten, die für die Wiederherstellung
verwendet wird, da der entfernt gelegene Bestimmungsort 1786 immer
dazu verwendet wird, um eine Wiederherstellung durchzuführen, und
zwar in Verbindung mit den Ausführungsformen
nach den 42–48.
Ferner ist es auch nicht erforderlich, die Verarbeitung gemäß den 29 und 30 an dem
entfernt gelegenen Bestimmungsort durchzuführen, da keine Token oder SDDF-Pläne vorhanden sind.
-
Gemäß 49 veranschaulicht ein Flussdiagramm 2100 die
Schritte, die in Verbindung mit der Wiederherstellung an dem entfernt
gelegenen Bestimmungsort 1786 ausgeführt werden, und zwar wenn beispielsweise
die Quellengruppe 1782 mit ihrem Betrieb aufhört. Die
Verarbeitung beginnt bei einem ersten Schritt 2102, bei
dem die Verbindungsglieder zwischen der Quellengruppe 1782,
dem entfernt gelegenen Bestimmungsort 1786 und dem örtlichen
Minimal-Speicherbestimmungsort 1788 abgebaut werden. Das
Abbauen der Verbindungsglieder bei dem Schritt 2102 erfolgt ähnlich dem
Abbauen der Verbindungsglieder bei dem Schritt 1362 des Flussdiagramms 1360 von 31. Nachfolgend dem Schritt 2102 folgt
ein Schritt 2104, bei dem die geordneten Schreibeinträge beendet
werden. Das Beenden der geordneten Schreibeinträge bei dem Schritt 2104 erfolgt ähnlich der
Beendigung der geordneten Schreibeinträge bei dem Schritt 1366 des
Flussdiagramms 1360 von 31.
-
Nachfolgend
dem Schritt 2104 folgt ein Schritt 2106, bei dem
alle Daten von dem örtlichen Minimal-Speicherbestimmungsort 1788 zu
dem entfernt gelegenen Bestimmungsort 1786 übertragen werden.
Die Daten können
entsprechend der Reihenfolge der Datenelemente in der Verkettungsliste 1800 übertragen
werden. Wenn somit beispielsweise die Verkettungsliste 1800 entsprechend
der Zeitsequenz der Schreibeinträge
zu dem örtlichen
Minimal-Speicherbestimmungsort 1788 (Ausführungsform,
die in 47 gezeigt ist) gespeichert
wird, werden die Daten von dem örtlichen
Minimal-Speicherbestimmungsort 1788 zu dem entfernt gelegenen
Bestimmungsort 1786 gemäß der Zeitfolge
der Schreibeinträge übertragen.
Wenn alternativ Daten in der Verkettungsliste 1800 in der
Reihenfolge der Speicherstellen an der entsprechen den logischen
Standardvorrichtung (Ausführungsform
gemäß 46) gespeichert sind, dann werden die Daten in
dieser Reihenfolge von dem örtlichen
Minimal-Speicherbestimmungsort 1788 zu
dem entfernt gelegenen Bestimmungsort 1786 übertragen.
Nachfolgend dem Schritt 2106 wird die Verarbeitung vervollständigt und die
Operation kann wieder aufgenommen werden, und zwar unter Verwendung
der entfernt gelegenen Speichervorrichtung 1786, welche
die neuesten Daten enthält.
-
Gemäß 50 veranschaulicht ein Diagramm 2120 das
Mitbenutzen der Ressourcen. Das Diagramm 2120 enthält eine
Quellengruppe 2122 und einen entfernt gelegenen Bestimmungsort 2126, die ähnlich der
Quellengruppe 1782 und dem entfernt gelegenen Bestimmungsort 1786 von 42 sind. Das Diagramm 2120 zeigt auch
einen örtlichen
Minimal-Speicherbestimmungsort 2128, der ähnlich dem örtlichen
Minimal-Speicherbestimmungsort 1788 von 42 ist, mit der Ausnahme, dass der örtliche
Minimal-Speicherbestimmungsort 2128 durch nicht in Beziehung
stehende Speichersysteme mit verwendet werden kann. Es sei darauf
hingewiesen, dass der örtliche
Minimal-Speicherbestimmungsort 2128 von irgendeinem Typ
einer Speichervorrichtung sein kann, inklusive einer Symmetrics-Vorrichtung,
durch die EMC Corporation geliefert wird, einem Personal-Computer
oder irgendeiner anderen Vorrichtung bestehen kann, die dazu befähigt ist,
Daten zu speichern und die hier beschriebene Funktionalität zu bieten.
-
Das
Diagramm zeigt auch eine zweite Quellengruppe 2126' und einen zweiten
entfernt gelegenen Bestimmungsort 2122'. Jedoch überträgt die Quellengruppe 2122' Daten zu dem örtlichen
Minimal-Speicherbestimmungsort 2128, der auch durch die
Quellengruppe 2122 verwendet wird. Sollte eine Wiederherstellung
für irgendeine
oder für
beide der Quellengruppen 2122, 2122' erforderlich werden, werden die
Wiederherstelldaten durch den örtlichen Minimal-Speicherbestimmungsort 2128 zu
einem oder zu beiden der entfernt gelegenen Bestimmungsort 2126, 2126' geliefert.
Bei einer hier beschriebenen Ausführungsform speichert der örtliche
Minimal-Speicherbestimmungsort 2128 Daten
von der Quellengruppe 2122 an einer getrennten Stelle von den
Daten, die für
die Quellengruppe 2122' gespeichert
werden.
-
Das
Diagramm 2120 zeigt auch eine dritte Quellengruppe 2122'' und einen dritten entfernt gelegenen
Bestimmungsort 2126''. Die dritte
Quellengruppe 2122'' überträgt auch
Daten zu dem örtlichen Minimal-Speicherbestimmungsort 2128.
Zusätzlich kann
der örtliche
Minimal-Speicherbestimmungsort 2128, sollte eine Wiederherstellung
erforderlich werden, Wiederherstelldaten zu dem entfernt gelegenen Bestimmungsort 2126" übertragen.
-
Die
Nummern der Quellengruppen und des entfernt gelegenen Bestimmungsortes,
der an einen örtlichen
Minimal-Speicherbestimmungsort gekoppelt ist, kann durch die Speicherung
und die Verarbeitungsfähigkeit
des örtlichen
Minimal-Speicherbestimmungsortes
gebunden sein. Es sei darauf hingewiesen, dass auch eine einzelne
Speichervorrichtung als entfernt gelegener Bestimmungsort für Vielfach-Quellengruppen verwendet
werden kann.
-
Obwohl
die Erfindung in Verbindung mit verschiedenen Ausführungsformen
offenbart wurde, sind Abwandlungen für Fachleute offenkundig. Entsprechend
ergibt sich der Rahmen der Erfindung aus den nachfolgenden Ansprüchen.