-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung
zum Beibehalten einer Konsistenz von Daten, die in einer Gruppe
von Spiegelungsvorrichtungen gespeichert sind.
-
Beschreibung
des zugehörigen
Standes der Technik
-
Eine
Anzahl von Computersystemkonfigurationen spiegelt Information, die
in Quellenspeichervorrichtungen gespeichert ist, zu Zielspeichervorrichtungen,
die an Stellen angeordnet sein können,
die von den Quellenspeichervorrichtungen entfernt sind. Ein Beispiel
für ein
solches Computersystem ist ein Datenspiegelungssystem 100,
das nachfolgend in Zusammenhang mit 1 diskutiert
wird.
-
Bei
dem Datenspiegelungssystem 100 der 1 ist eine
Host-CPU oder sind
mehrere Host-CPUs 102 (über
eine oder mehrere Kommunikationsverbindungen 114) mit einem
Quellenspeichersystem 104 gekoppelt. Bei dem gezeigten
Beispiel enthält
das Quellenspeichersystem 104 eine Vielzahl von "Quellen"-Speichervorrichtungen 110a–f.
Die Quellenspeichervorrichtungen 110a–f können in einem einzigen Quellenspeichersystem 104 enthalten
sein, wie es in 1 gezeigt ist, oder mehrere
Quellenspeichersysteme 104 können verwendet werden, und
die Quellenspeichervorrichtungen 110a–f können über die mehreren Quellenspeichersysteme
verteilt sein. Jedes Quellenspeichersystem 104 kann beispielsweise
ein Speichersystem aus der SYMMETRIX-Reihe von Plattenanordnungen aufweisen,
die von EMC Corporation, Hopkinton, MA erhältlich sind.
-
Die
in den Quellenspeichervorrichtungen 100a–f gespeicherten Daten
können
entscheidend für
den Betrieb der Host-CPU(s) 102 sein. Daher ist in dem
Fall eine Zufallslösung
wünschenswert,
in welchem ein Problem bei irgendeiner der Quellenspeichervorrichtungen 110a–f erfahren
wird, um sicherzustellen, dass die dadurch gespeicherten Daten nicht
verloren werden, und um das Risiko zu minimieren, dass die Host-CPU(s) 102 aufgrund
von Problemen mit den Quellenspeichervorrichtungen 110a–f ruiniert
werden bzw. kaputtgehen. Potenzielle Probleme bei den Quellenspeichervorrichtungen 110a–f können beispielsweise
Hardware- oder Softwarefehler enthalten, die veranlassen können, dass
gespeicherte Daten nicht wiedergewinnbar sind. Zusätzlich könnten Katastrophenereignisse,
wie beispielsweise ein Erdbeben oder eine andere Naturkatastrophe
in der Zerstörung
von einer oder mehreren der Quellenspeichervorrichtungen 110a–f resultieren.
-
Eine
Lösung
zum Schützen
der in den Quellenspeichervorrichtungen 110a–f gespeicherten Daten
besteht im Spiegeln der Daten in einer entsprechenden Gruppe von "Ziel"-Speichervorrichtungen. Das
Datenspiegelungssystem 100 der 1 ist ein Beispiel
für ein
solches System, wobei das Quellenspeichersystem 104 (über Verbindungen 112a–f)
mit einem Zielspeichersystem 106 gekoppelt ist. Das Zielspeichersystem 106 enthält eine
Vielzahl von Zielspeichervorrichtungen 116a–f, die jeweils den Quellenspeichervorrichtungen 110a–f im
Quellenspeichersystem 104 entsprechen. Da Daten zu irgendeiner
der Quellenspeichervorrichtungen 110a–f geschrieben sind, sind
sie auch zu einer entsprechenden der Zielspeichervorrichtung 116a–f im
Zielspeichersystem 106 geschrieben. Wenn eine der Quellenspeichervorrichtungen 110a–f zerstört wird oder
ein Fehler erfahren wird, der gespeicherte Daten nicht wiederherstellbar
werden lässt,
können
die Daten aus der entsprechenden der Zielspeichervorrichtungen 116a–f ausgelesen
werden. Die Zielspeichervorrichtungen 116a–f können in einem einzelnen Zielspeichersystem 106 enthalten
sein, wie es in 1 gezeigt ist, oder mehrere
Zielspeichersysteme 106 können verwendet werden, und
die Zielspeichervorrichtungen 116a–f können über die mehreren Zielspeichersysteme 106 verteilt
sein. Wie bei dem (den) Quellenspeichersystem(en) 104 kann
jedes der Zielspeichersysteme 106 beispielsweise ein Speichersystem
aus der SYMMETRIX-Reihe von Plattenanordnungen sein, die von EMC
Corporation, Hopkinton, MA erhältlich
sind.
-
Wenn
jedes der Quellen- und Zielspeichersysteme 104 und 106 unter
Verwendung von einer oder mehreren der SYMMETRIX-Reihe von Plattenanordnungen
implementiert ist, die von EMC Corporation erhältlich sind, kann eine Eigenschaft,
die SYMMETRIX-Ferndateneinrichtung (SRDF = SYMMETRIX Remote Data
Facility) genannt wird, zum Implementieren der Verbindung dazwischen
verwendet werden. SRDF ist in zahlreichen Publikationen beschrieben,
die von EMC Corporation erhältlich sind,
einschließlich
SYMMETRIX Remote Data Facility Product Manual, P/M 200-999-554,
rev. B, Juni 1995. SRDF ist auch im US-Patent Nr. 5,544,347 (Yanai)
beschrieben.
-
Bei
dem illustrativen Datenspiegelungssystem 100 der 1 sind
eine erste, eine zweite und eine dritte Gruppe von Quellenspeichervorrichtungen 110a–b, 110c–d und 110e–f jeweils
in dem Quellenspeichersystem 104 (jeweils über Verbindungen 112a–b, 112c–d und 112e–f)
in Kommunikation mit entsprechenden ersten, zweiten und dritten
Gruppen von Zielspeichervorrichtungen 116a–b, 116c–d und 116e–f im
Zielspeichersystem 106. Die Verbindungen 112 werden
hierin "Spiegelungsverbindungen" genannt, und der
Ausdruck "Spiegelungskommunikation" wird hierin zur
Bezugnahme auf eine Kommunikation zwischen Quellen- und Zielspeichersystemen 104 und 106 über die
Spiegelungsverbindungen 112 verwendet, die zulässt, dass
die Zielspeichervorrichtungen 116a–f durch die Quellenspeichervorrichtungen 110a–f gespeicherte
Daten spiegeln. Wie es in 1 gezeigt
ist, bilden die Quellenspeichervorrichtungen 110a–b,
die Spiegelungsverbindungen 112a–b und die Zielspeichervorrichtungen 116a–b eine
erste Spiegelungsgruppe 108a; die Quellenspeichervorrichtungen 110c–d,
die Spiegelungsverbindungen 112c–d und die Zielspeichervorrichtungen 116c–d bilden
eine zweite Spiegelungsgruppe 108b; und die Quellenspeichervorrichtungen 110e–f,
die Spiegelungsverbindungen 112e–f und die Zielspeichervorrichtungen 116e–f bilden
eine dritte Spiegelungsgruppe 108c. Eine "Spiegelungsgruppe" ist eine Gruppe
von Speichervorrichtungen in den Quellen- und Zielspeichersystemen 104 und 106,
zwischen welchen Daten über
eine gemeinsame Gruppe von Spiegelungsverbindungen 112 transferiert
werden können.
Allgemein nutzen Speichervorrichtungen 110 und 116 keine
Spiegelungsverbindungen 112 gemeinsam mit Speichervorrichtungen 110 und 116 in
anderen Spiegelungsgruppen 108.
-
Zum
Durchführen
einer Schreiboperation zu dem Quellenspeichersystem 104 sendet
eine Host-CPU 102 eine "I/O-Befehlskette" zu dem Quellenspeichersystem 104.
Jede I/O-Befehlskette
kann einen oder mehrere Befehle enthalten, die zu einem bestimmten
logischen Volumen gerichtet sind, das durch das Quellenspeichersystem 104 gespeichert ist.
Ein logisches Volumen ist eine Einheit von Information, die die
Host-CPU 102 wahrnimmt, um einer einzelnen physikalischen
Speichervorrichtung zu entsprechen, die aber innerhalb des Quellenspeichersystems 104 auf
einem physikalischen Speicherraum bei einer oder mehreren Quellenspeichervorrichtungen 110 abgebildet
werden kann. Eine I/O-Befehlskette für eine Schreiboperation ("eine Schreibanforderungs-Befehlskette") enthält verschiedene
Anweisungen für
das Quellenspeichersystem 104, das die I/O-Befehlskette empfängt, sowie die
während
der Operation zu schreibenden Daten. Die Host-CPU 102 empfängt allgemein
nur eine einzige Nachricht von dem Quellenspeichersystem 104 in
Reaktion bzw. in Antwort darauf wieder, dass sie eine Schreibanforderungs-Befehlskette
sendet. Diese Nachricht zeigt allgemein entweder, (1) dass die I/O-Befehlskette
durch das Quellenspeichersystem 104 "bergeben" (d.h. erfolgreich verarbeitet) worden ist,
oder, (2) dass ein Fehler auftrat, der verhindert, dass die I/O-Befehlskette
durch das Quellenspeichersystem 104 übergeben wird. Typischerweise wird
das Quellenspeichersystem 104 die Nachricht "I/O-Befehlskette übergeben" nicht zurück zu der Host-CPU 102 liefern,
solange und bis die Daten erfolgreich zu einer oder mehreren der
Quellenspeichervorrichtungen 110 geschrieben worden sind, oder
zu einem temporären
Speicherraum (wie beispielsweise einem Cache) im Quellenspeichersystem 104.
-
Einer
der Zwecke zum Spiegeln von Daten im Zielspeichersystem 106 besteht
darin, dass dann, wenn die Daten auf dem Quellenspeichersystem 104 nicht
wiedergewinnbar gemacht werden, die Daten aus dem Zielspeichersystem 106 ausgelesen
werden können.
Somit ist es wünschenswert,
sicherzustellen, dass die Daten im Zielspeichersystem 106 intern konsistent
sind und eine genaue Spiegelung der im Quellenspeichersystem 104 zu
irgendeinem bestimmten Zeitpunkt reflektieren bzw. zeigen. Wenn die
Daten im Zielspeichersystem 106 keine genaue Spiegelung
der Daten im Quellenspeichersystem 104 für einen
gegebenen Zeitpunkt darstellen, können die Daten im Zielspeichersystem 106 nicht
wieder auf das Quellenspeichersystem 104 geladen werden,
um das Quellenspeichersystem 104 wieder in einen gültigen Zustand
zu versetzen. Wenn beispielsweise die Daten, die im Quellenspeichersystem 104 gespeichert
sind und auf das Zielspeichersystem 106 gespiegelt sind,
in einer Datenbank enthalten sind, aber die im Zielspeichersystem 106 gespeicherte
Information kein genaues Abbild der Datenbank zu einem gegebenen
Zeitpunkt reflektiert, dann kann, wenn auf einen Fehler getroffen
wird, der verhindert, dass die Datenbank vom Quellenspeichersystem 104 wiedergewonnen
wird, das Zielspeichersystem 106 nicht zum Wiedergewinnen
der Datenbank verwendet werden, weil die dadurch gespeicherten Daten
keine genaue Reflexion des Zustands der Datenbank zu irgendeinem
bestimmten Zeitpunkt sind.
-
Bei
einem Datenspiegelungssystem, wie beispielsweise dem in 1 gezeigten
Datenspiegelungssystem 100, haben die Anmelder erkannt,
dass Fehlfunktionen bei den Spiegelungsverbindungen 112a–f,
die in dem Verlust einer Spiegelungskommunikation zwischen den Quellen-
und Zielspeichersystemen 104 und 106 für eine der
Spiegelungsgruppen 108a–c resultieren,
verursachen können,
dass ein Datenkonsistenzproblem unter bestimmten Umständen entsteht.
Es soll beispielsweise angenommen werden, dass alle der Spiegelungsverbindungen 112a–b der
Spiegelungsgruppe 108a nicht funktionierten, so dass eine
Spiegelungskommunikation über
die Spiegelungsverbindungen 112a–b gesperrt wurde, um
dadurch zu verhindern, dass Updates bzw. Aktualisierungen für die Quellenspeichervorrichtungen 110a–b zu
den Zielspeichervorrichtungen 116a–b transferiert werden.
Es soll weiterhin angenommen sein, dass Spiegelungsoperationen über die
Spiegelungsverbindungen 112c–d und 112e–f für die jeweiligen
Spiegelungsgruppen 108b und 108c normal fortfahren
würden,
so dass Updates zu den Quellenspeichervorrichtungen 110c–f fortgesetzt
zu den Zielspeichervorrichtungen 116c–f transferiert würden. Wenn
unter diesen Umständen
die in einer der Zielspeichervorrichtungen 116a–b gespeicherten Daten
logisch auf die in irgendeiner der Zielspeichervorrichtungen 116c–f gespeicherten
Daten bezogen waren (z.B. wenn sie Teile derselben Datenbank speicherten),
dann würden
die im Zielspeichersystem 106 gespeicherten Daten nicht
einen gültigen Zustand
der in dem Quellenspeichersystem 104 gespeicherten Daten
zu irgendeinem bestimmten Zeitpunkt darstellen. Daher könnten die
Daten auf dem Zielspeichersystem 106 dann, wenn das Quellenspeichersystem 104 einen
Fehler in der oben beschriebenen Situation hätte, nicht zum Versetzen des Quellenspeichersystems 104 zurück in einen
gültigen
Zustand für
irgendeinen bestimmten Zeitpunkt verwendet werden.
-
Das
oben beschriebene Problem kann angesichts der folgenden illustrativen
Situation besser verstanden werden, in welcher der (die) Host-CPU(s) 102 "abhängige" Dateneinheiten zu
jeweiligen Quellenspeichervorrichtungen 110 schreibt (schreiben), wenn
eine Spiegelungskommunikation für
nur eine der Quellenspeichervorrichtungen 110 gesperrt
ist, zu welchen die abhängigen
Dateneinheiten geschrieben werden. Eine zweite Einheit von Daten
ist abhängig
von einer ersten Einheit von Daten, wenn die zweite Einheit von
Daten eine Funktion der ersten Einheit von Daten ist, so dass dann,
wenn die erste Einheit von Daten geändert wird, die zweite Einheit von
Daten auch geändert
werden muss, wenn sie den aktuellen Wert der ersten Einheit von
Daten genau reflektieren soll. Beispielsweise dann, wenn erste,
zweite und dritte Einheiten von Daten jeweils Werte "A", "B", und "A+B" darstellen, dann
ist die dritte Einheit von Daten abhängig von sowohl den ersten als
auch den zweiten Einheiten von Daten, wohingegen die ersten und
zweiten Einheiten von Daten nicht voneinander abhängen.
-
Unter
Verwendung dieses einfachen Beispiels von abhängigen Dateneinheiten würden in
der oben beschriebenen Situation, in welcher eine Spiegelungskommunikation über die
Spiegelungsverbindungen 112a–b gesperrt ist, aber über die
Spiegelungsverbindungen 112c–f freigegeben ist, wenn
der (die) Host-CPU(s) 102 anfangs die erste Einheit von Daten (d.h.
den Wert "A") zu der Quellenspeichervorrichtung 110a in
der Spiegelungsgruppe 108a ("der gesperrten Spiegelungsgruppe") schreibt (schreiben),
und darauffolgend die dritte Einheit von Daten (d.h. den Wert "A+B") zu der Quellenspeichervorrichtung 110c in
der Spiegelungsgruppe 108b ("eine betriebsfähige Spiegelungsgruppe") schreibt (schreiben),
dann sowohl die ersten als auch dritten Einheiten von Daten zu dem
Quellenspeichersystem 104 geschrieben werden, aber nur
die dritte Einheit von Daten (und nicht die erste Einheit von Daten)
würde zu
dem Zielspeichersystem 106 geschrieben werden. Als Ergebnis
würde das
Zielspeichersystem 106 einen aktualisierten Wert von "A+B" speichern, ohne auch
einen aktualisierten Wert von "A" zu speichern. Diese
Inkonsistenz kann Probleme auferlegen, wenn es nötig wird, die Daten aus dem
Zielspeichersystem 106 wiederzugewinnen.
-
Eine
Technik, die in der Vergangenheit dazu verwendet worden ist, das
oben beschriebene Dateninkonsistenzproblem zu vermeiden, hat darin
bestanden, zu verhindern, dass das Quellenspeichersystem 104 irgendeine
Schreibanforderungs-Befehlskette
von einer Host-CPU 102 zu einer Quellenspeichervorrichtung 110a–f zu übergeben,
wenn diese Quellenspeichervorrichtung 110a–f ein Element einer Spiegelungsgruppe 108 ist,
das unfähig
dazu ist, sich an einer Spiegelungskommunikation über ihre
Spiegelungsverbindungen 112 zu beteiligen. Unter Verwendung
dieser Technik wird deshalb, weil jede zu einer Quellenspeichervorrichtung 110 in
einer gesperrten Spiegelungsgruppe 108 gerichtete Schreibanforderungs-Befehlskette nicht
durch das Quellenspeichersystem 104 übergeben wird, die Host-CPU 102,
die die I/O-Befehlskette sendet, wiederholt (nicht erfolgreich)
versuchen, die Schreiboperation durchzuführen.
-
Es
sollte erkannt werden, dass Anwendungsprogramme, die auf der (den)
Host-CPU(s) 102 ausführen,
typischerweise keine Ausführung
einer Anweisung beginnen werden, die von einer Einheit von Daten
abhängig
ist, die durch eine vorherige Anweisung aktualisiert sind, bis die
vorherige Anweisung endet, was erfordert, dass die I/O-Befehlskette, die
die vorherige Anweisung implementiert, durch das Quellenspeichersystem 104 übergeben
worden ist. Daher wird durch Verhindern, dass Schreibanforderungs-Befehlsketten,
die zu Quellenspeichervorrichtungen 110a–f gerichtet sind, für welche
eine Spiegelungskommunikation gesperrt worden ist, übergeben
werden, sichergestellt, dass keine späteren Anweisungen, die von
den Daten abhängen,
die durch diese Schreibanforderungs-Befehlsketten zu schreiben sind,
ausgeführt
werden, um dadurch das oben diskutierte Dateninkonsistenzproblem
zu vermeiden. Diesbezüglich
werden die im Zielspeichersystem 106 gespeicherten Daten
ein gültiger
Spiegel der in dem Quellenspeichersystem 104 gespeicherten
Daten bei der Stelle sein, bei welcher die Spiegelungsgruppe gesperrt
wurde.
-
Es
sollte erkannt werden, dass, obwohl die oben beschriebene Technik
ein Dateninkonsistenzproblem vermeidet, sie es dadurch durchführt, dass sie
verhindert, dass I/O-Befehlsketten,
die zu Quellenspeichervorrichtungen 110 innerhalb einer
gesperrten Spiegelungsgruppe gerichtet sind, jemals enden. Als Ergebnis
wird die CPU 102, die die I/O-Befehlskette initiiert, wiederholt (nicht
erfolgreich) versuchen, die Befehlskette auszuführen, was möglicherweise in einer Zerstörung der
Anwendung oder eines anderen Programms, das die Befehlskette enthält, resultiert.
-
In
US-A-5,901,327 sind zwei Datenspeichersysteme offenbart, die durch
eine Datenverbindung für
eine Fernspiegelung von Daten verbunden sind.
-
Zusammenfassung
der Erfindung
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird ein Verfahren zur Verwendung
in einem Datenspiegelungssystem zur Verfügung gestellt, das wenigstens
einen Host, wenigstens ein Quellenspeichersystem und wenigstens
ein Zielspeichersystem aufweist, wobei das wenigstens eine Quellenspeichersystem
wenigstens eine erste und eine zweite Quellenspeichervorrichtung
enthält,
und das wenigstens eine Zielspeichersystem wenigstens eine erste und
eine zweite Zielspeichervorrichtung enthält, wobei der wenigstens eine
Host mit dem wenigstens einen Quellenspeichersystem gekoppelt ist,
um Schreiboperationen zu der ersten und der zweiten Quellenspeichervorrichtung
durchzuführen,
wobei das wenigstens eine Quellenspeichersystem mit dem wenigstens
einen Zielspeichersystem gekoppelt ist, um eine Spiegelungskommunikation
von der ersten Quellenspeichervorrichtung zu der ersten Zielspeichervorrichtung
und von der zweiten Quellenspeichervorrichtung zu der zweiten Zielspeichervorrichtung
freizugeben, und das dadurch gekennzeichnet ist, dass es einen folgenden
Schritt aufweist: (A) wenn eine Spiegelungskommunikation von der
ersten Quellenspeichervorrichtung zu der ersten Zielspeichervorrichtung
gesperrt ist, Sperren einer Spiegelungskommunikation von der zweiten
Quellenspeichervorrichtung zu der zweiten Zielspeichervorrichtung,
wobei die wenigstens erste und die wenigstens zweite Speichervorrichtung
in einer ersten Gruppe von Quellenspeichervorrichtungen enthalten
sind, die logisch zugehörige
Daten speichern, für
welche erwünscht
ist, dass eine konsistente Darstellung auf dem wenigstens einen
Zielspeichersystem beibehalten wird.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird ein Quellenspeichersystem zur
Verwendung in einem Datenspiegelungssystem zur Verfügung gestellt,
das wenigstens einen Host und wenigstens ein Zielspeichersystem
enthält,
das wenigstens eine erste und eine zweite Zielspeichervorrichtung
des Zielspeichersystems enthält,
wobei das Quellenspeichersystem folgendes aufweist: wenigstens eine
erste und eine zweite Quellenspeichervorrichtung, um mit dem wenigstens
einen Host gekoppelt zu werden, um zu ermöglichen, dass der wenigstens
eine Host Schreiboperationen zu der ersten und zu der zweiten Quellenspeichervorrichtung durchführt, und
weiterhin um jeweils mit der wenigstens ersten und zweiten Zielspeichervorrichtung
gekoppelt zu werden, um eine Spiegelungskommunikation von der wenigstens
ersten und zweiten Quellenspeichervorrichtung zu der wenigstens
ersten und zweiten Zielspeichervorrichtung zu ermöglichen,
und gekennzeichnet durch wenigstens eine Steuerung, um in Reaktion
darauf, dass eine Spiegelungskommunikation von der ersten Quellenspeichervorrichtung
zu der ersten Zielspeichervorrichtung gesperrt wird, eine Spiegelungskommunikation
von der zweiten Quellenspeichervorrichtung zu der zweiten Zielspeichervorrichtung
zu sperren, wobei die wenigstens erste und zweite Speichervorrichtung
in einer ersten Gruppe von Quellenspeichervorrichtungen enthalten
sind, die logisch aufeinander bezogene Daten speichern, für welche
es erwünscht
ist, dass eine konsistente Darstellung auf dem wenigstens einen Zielspeichersystem
beibehalten wird.
-
Gemäß einem
weiteren Aspekt der Erfindung ist ein computerlesbares Medium zur
Verwendung mit wenigstens einem Prozessor zur Verfügung gestellt,
der in einem Datenspiegelungssystem enthalten ist, das wenigstens
einen Host aufweist, wenigstens ein Quellenspeichersystem und wenigstens ein
Zielspeichersystem, wobei das wenigstens eine Quellenspeichersystem
wenigstens eine erste und eine zweite Quellenspeichervorrichtung
enthält,
und das wenigstens eine Zielspeichersystem wenigstens eine erste
und eine zweite Zielspeichervorrichtung enthält, wobei der wenigstens eine
Host mit dem wenigstens einen Quellenspeichersystem gekoppelt ist, um
Schreiboperationen zu der ersten und der zweiten Quellenspeichervorrichtung
durchzuführen,
und wobei das wenigstens eine Quellenspeichersystem mit dem wenigstens
einen Zielspeichersystem gekoppelt ist, um eine Spiegelungskommunikation
von der ersten Quellenspeichervorrichtung zu der ersten Zielspeichervorrichtung
und von der zweiten Quellenspeichervorrichtung zu der zweiten Zielspeichervorrichtung
zu ermöglichen,
wobei das wenigstens eine computerlesbare Medium eine Vielzahl von
Anweisungen hat, die darauf gespeichert sind, welche dann, wenn
sie durch den wenigstens einen Prozessor ausgeführt werden, veranlassen, dass
der wenigstens eine Prozessor ein Verfahren durchführt, das
gekennzeichnet ist durch einen folgenden Schritt: (A) wenn eine
Spiegelungskommunikation von der ersten Quellenspeichervorrichtung
zu der ersten Zielspeichervorrichtung gesperrt ist, Sperren einer
Spiegelungskommunikation von der zweiten Quellenspeichervorrichtung
zu der zweiten Zielspeichervorrichtung, wobei die wenigstens erste
und zweite Speichervorrichtung in einer ersten Gruppe von Quellenspeichervorrichtungen
enthalten sind, die logisch aufeinander bezogene Daten speichern, für welche
es erwünscht
ist, dass eine konsistente Darstellung auf dem wenigstens einen
Zielspeichersystem beibehalten wird.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm, das ein illustratives Beispiel eines Datenspiegelungssystems
zeigt, mit welchem Aspekte der vorliegenden Erfindung verwendet
werden können;
-
2 ist
ein Blockdiagramm, das ein Beispiel eines Datenspiegelungssystems
zeigt, wie beispielsweise das in 1 gezeigte,
das mehrere Quellen- und Zielspeichersysteme verwendet;
-
3 ist
ein Blockdiagramm, das eine illustrative Implementierung eines Speichersystems
zeigt, das als die Quellen- und/oder Zielspeichersysteme der 1 und 2 verwendet
werden kann;
-
4A–B und 5 sind
illustrative Beispiele von Tabellen von Flags, die in jedem der Quellenspeichersysteme
der 1 – 2 gespeichert
sein können,
um ein Beibehalten der Konsistenz von Daten zu unterstützen, die
auf einer Vielzahl von Zielspeichervorrichtungen gespeichert sind,
und zwar gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
6 ist
ein Ablaufdiagramm, das ein illustratives Beispiel eines Prozesses
zeigt, der durch eine oder mehrere Steuerungen von jedem der Quellenspeichersysteme
der 1 und 2 durchgeführt werden können, um
verschiedene Aspekte der vorliegenden Erfindung in Bezug auf eine
Beibehaltung der Konsistenz von Daten zu implementieren, die auf
einer Vielzahl von Zielspeichervorrichtungen gespeichert sind; und
-
7 ist
ein Ablaufdiagramm, das ein illustratives Beispiel eines Softwareprogramms
zeigt, das durch die Host-CPUs der 1 und 2 durchgeführt werden
kann, um zusätzliche
Aspekte der vorliegenden Erfindung in Bezug auf eine Beibehaltung der
Konsistenz von Daten zu implementieren, die auf einer Vielzahl von
Zielspeichervorrichtungen gespeichert sind.
-
Detaillierte
Beschreibung der Erfindung
-
Gemäß einem
Aspekt der vorliegenden Erfindung werden in einem Datenspiegelungssystem, wie
beispielsweise dem Datenspiegelungssystem 100 der 1,
Schritte unternommen, um sicherzustellen, dass eine konsistente
Datengruppe auf dem Zielspeichersystem 106 beibehalten
wird, wenn eine Spiegelungskommunikation für eine Quellenspeichervorrichtung 110 verloren
wird, ohne auch zu veranlassen, dass der Softwareprozess (z.B. ein
Anwendungsprogramm) auf der (den) Host-CPU(s) 102 abstürzt.
-
Es
sollte erkannt werden, dass das oben beschriebene Dateninkonsistenzproblem,
das aus dem Verlust einer Spiegelungskommunikation resultieren kann,
zu der Tatsache beitragen kann, dass die Spiegelungsverbindungen 112a–f für einige
Spiegelungsgruppen 108a–c in
Betrieb sind, aber nicht für
alle von ihnen. Gemäß einem
illustrativen Ausführungsbeispiel
der vorliegenden Erfindung können
dann, wenn bestimmt wird, dass alle der Spiegelungsverbindungen 112a–f für eine bestimmte
Spiegelungsgruppe 108 gesperrt worden sind (d.h. eine Spiegelungskommunikation
zwischen den Quellen- und Zielspeichervorrichtungen 110 und 116 in
der Spiegelungsgruppe 108 nicht mehr unter stützen), eine Spiegelungskommunikation über die
Spiegelungsverbindungen 112a–f für die anderen Spiegelungsgruppen 108 auch
gesperrt werden. Dies kann als "logisches
Unterbrechen" der
Spiegelungsverbindungen 112a–f angesehen werden, die
zu diesen anderen Spiegelungsgruppen 108 gehören. Als
solches sollte erkannt werden, dass ein Zerstören bzw. Unterbrechen von allen
der Spiegelungsverbindungen 112a–f zur selben Zeit (z.B.
zu einer Zeit, zu welcher die Spiegelungsverbindungen 112a–f für eine bestimmte
Spiegelungsgruppe 108 physikalisch gesperrt sind) verhindert,
dass irgendwelche weiteren Aktualisierungen bezüglich irgendeiner der Zielspeichervorrichtungen 116a–f durchgeführt wird.
Somit speichert das Zielspeichersystem 106, nachdem alle Spiegelungsverbindungen 112a–f unterbrochen
worden sind, eine Gruppe von Daten, die einen genauen Spiegel von
Daten darstellen, die in dem Quellenspeichersystem 104 bei
einem bestimmten Zeitpunkt gespeichert sind (d.h. bei dem Zeitpunkt,
zu welchem eine Spiegelungskommunikation für eine der Spiegelungsgruppen 108 gesperrt
wurde).
-
Obwohl
ein logisches Unterbrechen der übrigen
Spiegelungsverbindungen 112a–f in einem Verlust der
Spiegelungsfähigkeit
durch das Zielspeichersystem 106 resultieren wird, sollte
es erkannt werden, dass das Quellenspeichersystem 104,
nachdem alle der Spiegelungsverbindungen 112a–f logisch
unterbrochen worden sind, wiederum Schreibanforderungs-Befehlsketten,
die zu den Quellenspeichervorrichtungen 110 gerichtet sind,
die in der gesperrten Spiegelungsgruppe 108 enthalten sind, übergeben kann,
und die Anwendungsprogramme, die auf der (den) Host-CPU(s) 102 ausführen, ein
Arbeiten ohne ein Abstürzen
fortführen
können,
und zwar als Ergebnis eines wiederholten (nicht erfolgreichen) Versuchens,
solche Schreiboperationen durchzuführen. Zwischenzeitlich kann
das durch die Spiegelungsverbindungen 112 erfahrene Problem,
das in dem Verlust einer Spiegelungskommunikation für eine der Spiegelungsgruppen 108 resultierte,
adressiert bzw. angesprochen werden. Wenn sie einmal korrigiert
ist, können
alle der Spiegelungsverbindungen 112a–f wiederhergestellt werden,
um dadurch zu ermöglichen,
dass die Spiegelungsfähigkeit,
die durch das Zielspeichersystem 106 zur Verfügung gestellt
wird, zurück
auf eine Leitung gebracht wird bzw. wieder in Betrieb gesetzt wird.
-
Es
sollte erkannt werden, dass ein logisches Unterbrechen von allen
der Spiegelungsverbindungen 112a–f, wann immer die Spiegelungsverbindungen 112 für eine bestimmte
Spiegelungsgruppe 108 verloren werden, das Ergebnis eines
Verhinderns des oben diskutierten Datenkonsistenzproblems für die Daten
auf dem Zielspeichersystem 106 erreicht. Dies kann gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung auf die nachfolgend diskutierte Weise
erreicht werden. Jedoch haben die Anmelder auch erkannt, dass es
nicht nötig
sein muss, alle der Spiegelungsverbindungen 112a–f logisch
zu unterbrechen, um die oben diskutierten Datenkonsistenzziele zu
erreichen. Diesbezüglich
sollte erkannt werden, dass das Zielspeichersystem 106 mehrere Gruppen
von logisch nicht aufeinander bezogenen Daten, z.B. mehrere nicht
aufeinander bezogene Datenbanken, enthalten kann. Für solche
logisch nicht aufeinander bezogene Gruppen von Daten ist es unnötig, eine
Konsistenz zwischen ihnen beizubehalten. Somit wäre es dann, wenn ein Verlust
von den Spiegelungsverbindungen 112a–f, die zu einer Spiegelungsgruppe 108 gehören, die
Zielspeichervorrichtungen 116 enthält, die eine bestimmte Datenbank speichern,
erfahren würde,
es unnötig
sein, die Spiegelungsverbindungen 112 logisch unterbrechen,
die zu anderen Spiegelungsgruppen 118 gehören, die nur
Zielspeichervorrichtungen 116 enthalten, die nicht aufeinander
bezogene Daten bzw. nicht zugehörige
Daten speichern. Daher werden gemäß einem weiteren illustrativen
Ausführungsbeispiel
der Erfindung die Spiegelungsverbindungen 112a–f nur
für Spiegelungsgruppen 108 logisch
unterbrochen, die Zielspeichervorrichtungen 116 enthalten,
die Daten speichern, die logisch auf die Daten bezogen sind, die
in den Zielspeichervorrichtungen 116 gespeichert sind,
die zu einer Spiegelungsgruppe 108 gehören, für welche eine Spiegelungskommunikation
verloren worden ist. Auf diese Weise wird der Einfluss auf die Spiegelungsfähigkeiten
des Zielspeichersystems 106 minimiert.
-
Gleichermaßen sollte
es erkannt werden, dass alle der Zielspeichervorrichtungen 116a–f in
einer bestimmten Spiegelungsgruppe 108a–c nicht logisch aufeinander
bezogene Daten speichern können.
Somit können
bei einem weiteren illustrativen Ausführungsbeispiel der Erfindung
Spiegelungsverbindungen 112 innerhalb einer Spiegelungsgruppe 108 logisch
unterbrochen werden, um eine Spiegelungskommunikation zwischen nur
einigen der Quellen- und
Zielspeichervorrichtungen 110 und 116 zu sperren,
die die Spiegelungsverbindungen 112 unterstützen. Wenn
beispielsweise Zielspeichervorrichtungen 116a–c alle
Daten für
eine gemeinsame Datenbank speichern und die Spiegelungsverbindungen 112a–b für die Spiegelungsgruppe 108a gesperrt wird,
dann können
die Spiegelungsverbindungen 112c–d für die Spiegelungsgruppe 108b logisch
unterbrochen werden, um eine Spiegelungskommunikation zwischen den
Quellenspeichervorrichtungen 110c und der Zielspeichervorrichtung 116c zu
sperren, um eine Konsistenz der Daten in dem Zielspeichersystem 106 für die Datenbank
beizubehalten, ohne auch eine Spiegelungskommunikation zwischen
der Quellenspeichervorrichtung 110d und der Zielspeichervorrichtung 116d zu
sperren. Daher können
dann, wenn die Quellen- und Zielspeichervorrichtungen 110d und 116d Daten
speichern, die nicht auf die Datenbank bezogen sind, die durch die
Quellen- und Zielspeichervorrichtungen 110a–c und 116a–c gespeichert
ist, eine Spiegelungskommunikation über die Spiegelungsverbindungen 112c–d der
Spiegelungsgruppe 108b freigegeben bleiben zwischen der
Quellenspeichervorrichtung 110d und der Zielspeichervorrichtung 116d,
um dadurch den Einfluss auf die Spiegelungsfähigkeit des Zielspeichersystems 106 zu
minimieren.
-
Die
oben beschriebenen Ausführungsbeispiele
der vorliegenden Erfindung können
auf zahlreiche Arten implementiert werden, und die vorliegende Erfindung
ist nicht auf irgendeine bestimmte Implementierung beschränkt. Gemäß den oben
identifizierten Ausführungsbeispielen
der Erfindung, wobei eine Spiegelungskommunikation über Spiegelungsverbindungen 112a–f selektiv
auf einer Vorrichtung-für-Vorrichtung-Basis
gesperrt wird, können
die Quellenspeichervorrichtungen 110a–f beispielsweise in eine
oder mehrere sogenannte "Konsistenzgruppen" kategorisiert werden.
Eine Konsistenzgruppe ist in diesem Zusammenhang eine Gruppe von
Quellenspeichervorrichtungen 110, für welche eine Anstrengung diesbezüglich gemacht
wird, sicherzustellen, dass die darin und in den entsprechenden
Zielspeichervorrichtungen 116 gespeicherten Daten konsistent
gehalten werden. Wenn beispielsweise die Quellenspeichervorrichtungen 110a und 110c abhängige Einheiten
von Daten speichern, kann es wünschenswert
sein, dass die Quellenspeichervorrichtungen 110a und 110c in
derselben Konsistenzgruppe enthalten sind, so dass Anstrengungen
unternommen werden können,
um Datenkonsistenzprobleme, wie beispielsweise diejenigen, die oben
beschrieben sind, zu verhindern.
-
Konsistenzgruppen
können
auf irgendeine von zahlreichen Arten implementiert sein, und die vorliegende
Erfindung ist nicht auf irgendeine bestimmte Implementierung beschränkt. Bei
einem Ausführungsbeispiel
speichert beispielsweise das Quellenspeichersystem 104 Information,
die nur identifiziert, ob jede Quellenspeichervorrichtung 110 ein
Element einer Konsistenzgruppe ist oder nicht, und Information,
die die bestimmten Quellenspeichervorrichtungen 110 in
jeder Konsistenzgruppe identifiziert, wird nur durch die Host-CPU(s) 102 beibehalten.
Es sollte jedoch erkannt werden, dass eine solche Konsistenzgruppeninformation
auf zahlreiche andere Arten gespeichert werden kann, da die Erfindung
nicht auf das Ausführungsbeispiel
beschränkt ist,
bei welchem das meiste der Konsistenzgruppeninformation durch die
Host-CPU(s) 102 beibehalten ist. Beispielsweise können alle
relevanten Konsistenzgruppeninformationen alternativ in einem Speicher gespeichert
werden, der zu den Quellen- und/oder Zielspeichersystemen 104 und 106 gehört.
-
Bei
einem Ausführungsbeispiel
der Erfindung wird dann, wenn eine Host-CPU 102 (1) eine
Schreibanforderungs-Befehlskette
zu einer der Quellenspeichervorrichtungen 110a–f (der "Zielort"-Speichervorrichtung)
ausgibt, solange wie wenigstens eine der Spiegelungsverbindungen 112 in
der Spiegelungsgruppe 108 der Zielortspeichervorrichtung 110 in
Betrieb bzw. operativ ist (d.h. eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 freigegeben
ist), das Quellenspeichersystem 104 die I/O-Befehlskette übergeben, nachdem
die zu schreibenden Daten zu sowohl dem Quellenspeichersystem 104 als
auch dem Zielspeichersystem 106 transferiert worden sind.
Wenn alle Spiegelungsverbindungen 112 für eine Spiegelungsgruppe 108 nicht
betriebsfähig
wird (d.h. eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 gesperrt
wird), wird dies erfasst, wenn eine Host-CPU 102 versucht,
eine Quellenspeichervorrichtung 110 in der Spiegelungsgruppe 108 zu
beschreiben. Insbesondere dann, wenn eine Host-CPU 102 eine
Schreibanforderungs-Befehlskette zu einer Zielortspeichervorrichtung 110 ausgibt,
für welche eine
Spiegelungskommunikation gesperrt ist, verhindert das Quellenspeichersystem 104,
das die Zielortspeichervorrichtung 110 enthält, temporär, dass
zu der Zielortspeichervorrichtung 110 gerichtete Schreibanforderungs-Befehlsketten übergeben
werden.
-
Während der
Zeitperiode, während
welcher temporär
verhindert wird, dass zu der Zielortspeichervorrichtung 110 gerichtete
Schreibanforderungs-Befehlsketten übergeben werden, werden Schritte
unternommen, um zu verhindern, dass alle der anderen Quellenspeichervorrichtungen 110a–f, die
in derselben Konsistenzgruppe wie die Zielortspeichervorrichtung 110 enthalten
sind, über
die Spiegelungsverbindungen 112 kommunizieren, die dazugehören (d.h.
eine Spiegelungskommunikation für
diese Quellenspeichervorrichtung 110 wird gesperrt). Dieses
Sperren einer Spiegelungskommunikation für die relevanten Quellenspeichervorrichtungen 110 kann
auf zahlreiche Arten erreicht werden, und die Erfindung ist nicht
auf irgendeine bestimmte Implementierung beschränkt. Beispielsweise können Flags
in einem zu den Quellenspeichervorrichtungen 110 gehörenden Speicher
gespeichert werden, die anzeigen, dass bestimmte Quellenspeichervorrichtungen 110 Daten
nicht über
die Spiegelungsverbindungen 112 transferieren sollen. Alternativ
dazu können
die relevanten Spiegelungsverbindungen 112 physikalisch
unterbrochen werden. Jedoch deshalb, weil eine einzelne Spiegelungsgruppe 108 Quellenspeichervorrichtungen 110 von
mehreren Konsistenzgruppen enthalten kann, wie es oben diskutiert ist,
kann es wünschenswert
sein, eine Spiegelungskommunikation über die Spiegelungsverbindungen 112 auf
einer Vorrichtung-für-Vorrichtung-Basis
zu sperren, so dass Information fortgesetzt über die Spiegelungsverbindungen 112 für die Quellenspeichervorrichtungen 110 transferiert
werden kann, die nicht in der relevanten Konsistenzgruppe enthalten sind.
-
Nachdem
eine Spiegelungskommunikation über
die Spiegelungsverbindungen 112 für jede der Quellenspeichervorrichtungen 110 gesperrt
worden ist, die in derselben Konsistenzgruppe wie die Zielortspeichervorrichtung 110 enthalten
sind, wird wieder zugelassen, dass das Quellenspeichersystem 104, das
die Zielortspeichervorrichtung 110 enthält, die zu der Zielortspeichervorrichtung 110 gerichtete Schreibanforderungs-Befehlskette übergibt.
Weil eine Spiegelungskommunikation für alle Quellenspeichervorrichtungen 110 in
der Konsistenzgruppe der Zielortspeichervorrichtung gesperrt worden
ist, werden die Zielspeichervorrichtungen 116a–f in
dieser Konsistenzgruppe eine Gruppe von Daten speichern, die einen "Schnappschuss" bzw. eine "Momentaufnahme" der durch das Quellenspeichersystem 104 genau
vor der Zeit gespeicherten Daten darstellen, zu welcher eine Spiegelungskommunikation für die Konsistenzgruppe
gesperrt wurde. Gemäß diesem
Ausführungsbeispiel
der Erfindung können deshalb,
weil das Quellenspeichersystem 104 nur temporär verhindert,
dass Schreibanforderungs-Befehlsketten, die zu Quellenspeichervorrichtungen 110 gerichtet
sind, die in gesperrten Spiegelungsgruppen 108 enthalten
sind, übergeben
werden, Datenkonsistenzprobleme, wie beispielsweise diejenigen,
die oben diskutiert sind, vermieden werden, ohne zu veranlassen,
dass die Anwendungssoftware, die auf der (den) Host-CPU(s) 102 läuft, abstürzt.
-
Die
Anmelder haben erkannt, dass beim Sperren einer Spiegelungskommunikation über Spiegelungsverbindungen 112 für mehrere
Quellen- und Zielspeichervorrichtungen 110 und 116 in
Reaktion darauf, dass eine Spiegelungskommunikation für eine Spiegelungsgruppe 108 verloren
wird, das Sperren einer Spiegelungskommunikation für andere
von diesen mehreren Quellenspeichervorrichtungen 110 zu
anderen Zeiten selbst zu einem Datenkonsistenzproblem führen kann,
das gleich demjenigen ist, das oben beschrieben ist. Beispielsweise
unter der Annahme, dass Quellenspeichervorrichtungen 110a, 110c und 110e der 1 alle
in derselben Konsistenzgruppe enthalten sind und eine Spiegelungskommunikation
in Reaktion auf die Erfassung für Quellenspeichervorrichtungen 110c und 110e zu sperren
ist, wenn versucht wird, zu der Speichervorrichtung 110a zu
schreiben, das eine Spiegelungskommunikation für die Quellenspeichervorrichtung 110a verloren
worden ist. Wenn zugelassen wird, dass das Quellenspeichersystem 104 zu
einer der Quellenspeichervorrichtungen 110c und 110e gerichteten
Schreibanforderungs-Befehlsketten vor einem Verifizieren übergibt,
das eine Spiegelungskommunikation für beide Vorrichtungen gesperrt
worden ist, die relative Zeitgabe der Sperrung einer Spiegelungskommunikation
für die
Quellenspeichervorrichtungen 110c und 110e in
dem Auftreten eines Datenkonsistenzproblems in dem Zielspeichersystem 106 resultieren
kann. Beispielsweise dann, wenn eine Spiegelungskommunikation für die Quellenspeichervorrichtung 110c vor
der Quellenspeichervorrichtung 110e gesperrt wurde, würde ein
Datenkonsistenzproblem auftreten, wenn eine I/O-Befehlskette, die das Schreiben einer
ersten Einheit von Daten zu der Quellenspeichervorrichtung 110c anfordert,
durch das Quellenspeichersystem 104 übergeben würde, nachdem eine Spiegelungskommunikation
für die Quellenspeichervorrichtung 110c gesperrt
wurde, und dann würde
eine nachfolgende I/O-Befehlskette, die
das Schreiben einer zweiten Einheit von Daten, die von der ersten
Einheit von Daten abhängt,
zu der Quellenspeichervorrichtung 110e anfordert, sowohl durch
das Quellenspeichersystem 104 übergeben als auch zu dem Zielspeichersystem 106 transferiert, bevor
eine Spiegelungskommunikation für
die Quellenspeichervorrichtung 110e gesperrt würde.
-
Um
mit diesem potenziellen Problem fertig zu werden, wird bei einem
Ausführungsbeispiel
der Erfindung dann, wenn eine Spiegelungskommunikation über irgendeine
der Spiegelungsverbindungen 112 für Quellenspeichervorrichtungen 110 innerhalb einer
Konsistenzgruppe zu sperren ist, das Quellenspeichersystem 104 temporär von einer Übergabe von
zu allen Quellenspeichervorrichtungen 110 in der Konsistenzgruppe
gerichteten Schreibanforderungs-Befehlsketten
abgehalten. Nur nachdem eine Spiegelungskommunikation für alle der
Quellenspeichervorrichtungen 110 in der relevanten Konsistenzgruppe
gesperrt worden ist, wird wieder zugelassen, dass das Quellenspeichersystem 104 zu
diesen Quellenspeichervorrichtungen 110 gerichtete Schreibanforderungs-Befehlsketten übergibt.
Auf diese Weise wird (werden) die Host-CPU(s) 102 nur während der
Zeitperiode nicht zum erfolgreichen Schreiben zu diesen Quellenspeichervorrichtungen 110 sein,
zu welcher eine Spiegelungskommunikation für alle Quellenspeichervorrichtungen 110 in
der relevanten Konsistenzgruppe gesperrt ist.
-
Die
oben beschriebene Technik zum selektiven Sperren einer Spiegelungskommunikation
für bestimmte
Quellenspeichervorrichtungen 110 kann auf irgendeine einer
Anzahl von Arten erreicht werden, und die Erfindung ist nicht auf
irgendeine bestimmte Implementierung beschränkt. Ein illustratives Beispiel
einer Technik, die zum Erreichen dieser Aufgaben verwendet werden
kann, wird nachfolgend in Zusammenhang mit den 2 – 7 beschrieben,
wobei bestimmte Flags, die in jedem Quellenspeichersystem 104 gespeichert
sind, anzeigen, wie dieses Quellenspeichersystem 104 auf
Schreibanforderungs-Befehlsketten von der (den) Host-CPU(s) 102 reagieren
bzw. antworten sollte, die zu ihren Quellenspeichervorrichtungen 110 gerichtet
sind. Es sollte jedoch erkannt werden, dass andere Techniken und/oder
andere Flags als diejenigen, die nachfolgend beschrieben sind, alternativ
verwendet werden können,
und dass die Erfindung nicht auf die bestimmte Technik oder die
bestimmten Flags, die beschrieben sind, beschränkt ist.
-
2 zeigt
ein illustratives Beispiel eines Datenspiegelungssystems, wie beispielsweise
dasjenige, das in 1 gezeigt ist, mit mehreren
Quellenspeichersystemen 104a–b und mehreren Zielspeichersystemen 106a–b.
Bei dem gezeigten Ausführungsbeispiel
enthalten die Host-CPUs 102 ein Paar von Host-CPUs 102a–b.
Wie es gezeigt ist, kann jede der Host-CPUs 102a und 102b (über Kommunikationsverbindungen 114a–d)
mit beiden der Quellenspeichersysteme 104a und 104b gekoppelt
sein, und kann jedes der Quellenspeichersysteme 104a und 140b (über die
Spiegelungsverbindungen 112a–f) mit einem oder beiden
der Zielspeichersysteme 106a und 106b gekoppelt
sein. Wenn die Spiegelungsgruppen 108a–c der 1 an
dem Datenspiegelungssystem der 2 implementiert
wären,
würde die
Spiegelungsgruppe 108a (1) durch
das Quellenspeichersystem 104a und das Zielspeichersystem 106a unterstützt werden,
würde die
Spiegelungsgruppe 108b (1) durch
das Quellenspeichersystem 104a und das Zielspeichersystem 106b unterstützt werden
und würde
die Spiegelungsgruppe 108c (1) durch
das Quellenspeichersystem 104b und das Zielspeichersystem 106b unterstützt werden.
Es sollte erkannt werden, dass die 2 nur ein
Beispiel davon zeigt, wie mehrere CPU(s) 102 und mehrere
Speichersysteme 104 und 106 auf eine Weise kombiniert
sein können,
die eine Vielzahl von Spiegelungsgruppen unterstützt, und dass irgendwelche
von zahlreichen alternativen Konfigurationen stattdessen verwendet
werden können.
-
3 zeigt
ein illustratives Beispiel eines Diskettenlaufwerk-Speichersystems,
das bei dem Datenspiegelungssystem 100 der 1 als
das Quellenspeichersystem 104 und/oder das Zielspeichersystem 106 verwendet
werden kann. Es sollte erkannt werden, dass das Quellenspeichersystem 104 und/oder
das Zielspeichersystem 106 der 1 jeweils
ein einzelnes Speichersystem verwenden kann, wie beispielsweise
dasjenige, das in 3 gezeigt ist, oder mehrere
solche Speichersysteme, die zusammenarbeiten. Es sollte auch erkannt
werden, dass die vorliegende Erfindung nicht Speichersysteme von
dem Typ verwenden muss, der in 3 gezeigt
ist, und dass irgendwelche von zahlreichen anderen Typen von Speichersystemen
(z.B. Bandlaufwerksystemen) alternativ verwendet werden können.
-
Wie
es gezeigt ist, enthält
das illustrative Speichersystem 104b in 3 eine
Host-Bussteuerung 302, eine Vielzahl von Plattensteuerungen 304a–b und
eine Vielzahl von Plattenlaufwerken 312a–b. Bei dem gezeigten
Beispiel entsprechen die Plattenlaufwerke 312a–b den
Quellenspeichervorrichtungen 110e–f der 1 – 2.
Die Host-Bussteuerung 302 ist
verantwortlich für
ein Kommunizieren mit den Host-CPUs 102a–b (2) über die Kommunikationsverbindungen 114b und 114d.
Jede der Plattensteuerungen 304a–b ist verantwortlich
für ein
Steuern einer Untergruppe der Plattenlaufwerke 313a–b.
Bei dem beispielhaften System der 3 steuert
eine Spiegelungssteuerung 308 eine Spiegelungskommunikation
für die
Plattenlaufwerke 312a–b.
Beispielsweise kann die Spiegelsteuerung 308 dann, wenn
das Speichersystem 104 zum Implementieren des Quellenspeichersystems 104 der 2 – 3 verwendet
wird, eine Spiegelungskommunikation über die Spiegelungsverbindungen 112e–f für die Spiegelungsgruppe 108c steuern.
Es sollte erkannt werden, dass bei einem Computersystem, wie beispielsweise
demjenigen, das in den 1 – 3 gezeigt
ist, jedes der Speichersysteme 104 und 106, das
mehr als eine Spiegelungsgruppe 108 unterstützt, zum
Erleichtern dieser Implementierung eine separate Spiegelungssteuerung 308 für jede Spiegelungsgruppe 108 enthalten
kann, die es unterstützt.
-
Bei
dem Ausführungsbeispiel
der 3 kommunizieren die Steuerung 302, 308 und 304a–b über einen
internen Bus 310. Ebenso mit dem Bus 310 verbunden
ist eine Speichereinheit 306, die einen globalen Speicher 306a und
einen Cache 306b enthält.
Der globale Speicher 306a speichert Information, die einen
Betrieb bzw. eine Operation und eine Steuerung des Quellenspeichersystems 104a erleichtert.
Der Cache 306b sorgt für
eine verbesserte Systemleistung. Insbesondere dann, wenn eine der
Host-CPUs 102a–b (2)
ein Lesen einer Spur von Information aus dem Speichersystem 104b ausführt, kann
das Quellenspeichersystem 104b dann, wenn die Spur von
Information bereits im Cache 306b gespeichert ist, das
Lesen von dem Cache 306b aus bedienen, eher als aus einem
der Plattenlaufwerke 312a–b,
und kann dadurch das Lesen effizienter ausführen. Gleichermaßen führt die Host-Bussteuerung 302 typischerweise
dann, wenn eine der CPUs 102a–b ein Schreiben zu dem
Quellenspeichersystem 104b ausführt, das Schreiben zu dem Cache 306b aus
und veranlasst, dass die das Schreiben anfordernde I/O-Befehlskette
sobald übergeben
wird, wie die Daten im Cache 306b gespeichert sind. Danach
kann das Schreiben (auf eine zu den Host-CPUs 102a–b transparente
Weise) zu dem geeigneten der Plattenlaufwerke 312a–b entstuft werden.
Der Cache kann daher als temporäre
Speichervorrichtung angesehen werden, und jedes der Plattenlaufwerke 312a–b kann
als permanente Speichervorrichtung innerhalb des Speichersystems 104b angesehen
werden.
-
In
Bezug auf das Ausführungsbeispiel
der 3 sollte erkannt werden, dass weniger oder zusätzliche
Steuerungen als diejenigen, die gezeigt sind, zum Durchführen der
Funktionalität
der verschiedenen Ausführungsbeispiele
der Erfindung verwendet werden können,
und dass die Erfindung nicht auf irgendeinen bestimmten Typ oder
eine bestimmte Anzahl von Steuerungen beschränkt ist. Bei anderen Ausführungsbeispielen
kann beispielsweise die Funktionalität von allen der Steuerungen 302, 308 und 304a–b der 3 durch
eine einzige Steuerung implementiert sein, oder die Funktionalität von irgendeiner
der Steuerungen 302, 308 und 304a–b kann
durch eine weitere der Steuerungen 302, 308 und 304a–b oder
durch eine oder mehrere zusätzliche
Steuerungen (nicht gezeigt) implementiert sein. Wie er hierin verwendet
ist, bezieht sich der Ausdruck (Steuerung) auf irgendeine Kombination
von Hardware (z.B. einen oder mehrere Prozessoren und/oder bestimmte
Schaltungskomponenten), Software und/der Firmware, die zum Durchführen von
einer oder mehreren der hierin beschriebenen Steuerfunktionen fähig ist.
-
Die 4A–B und 5 zeigen
Beispiele von Tabellen von Flags 402A–B und 504, die für jedes
Quellenspeichersystem 104 gespeichert werden können, um
zuzulassen, dass die Quellenspeichersysteme 104 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung sicherstellen, dass die zu ihnen gehörenden Zielspeichersysteme 106 nicht
auf Datenkonsistenzfehler treffen wenn eine Spiegelungskommunikation
zwischen den Quellen- und Zielspeichersystemen 104 und 106 für eine oder mehrere
Spiegelungsgruppen 108 gesperrt ist. Ein illustratives
Verfahren, durch welches ein Quellenspeichersystem 104 die
Information der 4 und 5 verwenden
kann, um dieses Ergebnis zu erreichen, wird nachfolgend in Verbindung
mit 6 diskutiert.
-
Wie
es in den 4A–B gezeigt
ist, kann für
jede Spiegelungsgruppe 108, die durch ein Quellenspeichersystem 104 bedient
wird, eine jeweilige Tabelle von Flags 402 gespeichert
werden. Jede Tabelle 402 berücksichtigt bzw. reflektiert
den aktuellen Zustand (d.h. freigegeben oder gesperrt) von jeder
der Spiegelungsverbindungen 112, die in der Spiegelungsgruppe 108 enthalten
sind, zu welchen sie zugeordnet sind. Bei dem Beispiel der 4A–B sind
die Tabellen 402 für
zwei Spiegelungsgruppen (d.h. die Spiegelungsgruppen 108a und 108b)
gezeigt, was bedeutet, dass das Quellenspeichersystem 104,
für welches
die Information der 4A–B gespeichert
ist, zwei unterschiedliche Spiegelungsgruppen 108 bedient.
Die Tabellen 402A–B können bei
irgendeiner von zahlreichen Stellen gespeichert sein, auf die durch
das Quellenspeichersystem 104 zugreifbar ist, das sie verwendet,
und die Erfindung erfordert nicht, dass die Tabellen 402A–B bei
irgendeiner bestimmten Stelle gespeichert sind. Bei einem illustrativen
Ausführungsbeispiel
sind beispielsweise die Tabellen 402A–B im globalen Speicher 306A des
Quellenspeichersystems 104A der 2 gespeichert.
-
Eine
Spiegelungsverbindung 112 wird für ein gegebenes Paar aus Quellen-
und Zielspeichervorrichtung "gesperrt", wenn die Spiegelungsverbindung 112 unfähig zum
Transferieren von Information von der Quellenspeichervorrichtung 110 zu
der Zielspeichervorrichtung 116 ist. Bei dem illustrativen
Ausführungsbeispiel
der Erfindung, das die Tabellen 402A–B verwendet, zeigen die
Einträge "freigebeben" und "gesperrt" in den Tabellen 402A–B den
physikalischen Zustand der Spiegelungsverbindungen 112a an,
d.h. ob die Verbindungen 112 betriebsfähig sind oder physikalisch
unterbrochen. Somit zeigt ein Eintrag (gesperrt) in einer der Tabellen 402A–B an, dass
die entsprechende Spiegelungsverbindung physikalisch unterbrochen
ist, so dass keine Daten über
die entsprechende Spiegelungsverbindung 112 zwischen irgendwelchen
zwei Speichervorrichtungen 110, 116 transferiert
werden können,
wohingegen ein Eintrag "freigegeben" anzeigt, dass die
entsprechende Spiegelungsverbindung 112 in Betrieb ist
bzw. betriebsfähig
ist, so dass Daten über
die Spiegelungsverbindung 112 zwischen irgendeinem zugehörigen Paar
aus Quellen- und Zielspeichervorrichtung transferiert werden können.
-
Wie
es oben angegeben ist, kann jede Spiegelungsgruppe 108 eine
separate Spiegelungssteuerung 308 haben, die zu ihr gehört. Weil
jede Spiegelungssteuerung 308 in direkter Kommunikation
mit den Spiegelungsverbindungen 112 in ihrer zugehörigen Spiegelungsgruppe 108 ist,
können
die Einträge in
den Tabellen 402A–B bei
dem gezeigten illustrativen Ausführungsbeispiel
nur durch die Spiegelungssteuerungen 308 aktualisiert werden,
die zu den Spiegelungsverbindungen 112 gehören, für die jeweiligen
Spiegelungsgruppen 108. Jedoch ist die vorliegende Erfindung
diesbezüglich
nicht beschränkt,
da jede Vorrichtung mit einer Kenntnis über den Zustand der Spiegelungsverbindungen 112 und einem
Zugriff auf den Speicher, in welchem die Tabellen 402A–B gespeichert
sind, die Tabellen 402 aktualisieren kann, wie es nachfolgend diskutiert
ist. Zusätzlich
zu der Spiegelungssteuerung 308 können auch andere Vorrichtungen
mit einem Zugriff auf den globalen Speicher 306a (z.B.
die Host-Bussteuerung 302 (3) des Quellenspeichersystems 104)
die Information verwenden, die in den Tabellen 402A–B gespeichert
ist, und zwar gemäß eines
Ausführungsbeispiel
der Erfindung, wie es nachfolgend diskutiert ist.
-
5 stellt
eine weitere Tabelle von Flags 504 dar, die für jedes
Quellenspeichersystem 104 gespeichert werden können. Die
Flags 504 reflektieren bzw. zeigen bzw. berücksichtigen
für jede
Speichervorrichtung 110 in dem Quellenspeichersystem 104, (a)
ob die Speichervorrichtung in einer Konsistenzgruppe enthalten ist,
und (b) den aktuellen "Zustand" der Speichervorrichtung.
Die Tabelle 504 kann beispielsweise im globalen Speicher 306a des
Quellenspeichersystems 104a der 2 gespeichert
sein. Es sollte jedoch erkannt werden, dass die Erfindung diesbezüglich nicht
beschränkt
ist, und dass die Tabelle 504 alternativ bei irgendeiner
anderen Stelle gespeichert werden kann, auf die das Quellenspeichersystem 104 zugreifen
kann. Gemäß dem gezeigten
illustrativen Ausführungsbeispiel
identifizieren die Flags in der Tabelle 504 jede Speichervorrichtung 110 derart,
dass sie in einem von drei Zuständen
ist: (1) "ONLINE", (2) "OFFLINE", oder (3) "OFFLINE HÄNGEND". Die Bedeutung und
Signifikanz von jedem dieser Zustände wird nachfolgend in Verbindung mit
den illustrativen Softwareprogrammen der 6 und 7 beschrieben.
-
6 zeigt
ein Beispiel eines Softwareprogramms bzw. einer Softwareroutine 600,
das bzw. die durch eine oder mehrere Steuerungen (z.B. die Host-Bussteuerung 302 der 3)
in jedem der Quellenspeichersysteme 104 durchgeführt werden kann,
um ein Ausführungsbeispiel
der Erfindung zu implementieren, das die Tabelleneinträge der 4 und 5 verwendet,
um die Konsistenz der auf dem (den) Zielspeichersystem(en) 106 beizubehalten. Das
Softwareprogramm 600 kann eine Vielzahl von Anweisungen
enthalten, die in einem computerlesbaren Medium gespeichert sind,
und die Steuerung(en), die das Programm 600 implementiert
(implementieren) kann (können)
beispielsweise die auf dem computerlesbaren Medium gespeicherten
Anweisungen ausführen,
um die verschiedenen gezeigten Verfahrensschritte durchzuführen. Jede
der Steuerungen (z.B. 302 und 304 in 3)
im Quellenspeichersystem 104 kann einen Prozessor mit einem
lokalen Speicher enthalten, in welchem Mikrocode-Anweisungen zum Implementieren des Programms 600 gespeichert
sein können,
oder das Programm 600 kann in einem anderen Speicher (z.B.
dem globalen Speicher 306) vorgesehen sein, auf dem durch
die Steuerungen) zugegriffen werden kann. Alternativ dazu kann das
Programm 600 natürlich
unter Verwendung einer bestimmten Hardware oder irgendeiner Kombination
aus Hardware und Software implementiert sein, die zum Erreichen
eines gleichen Ergebnisses fähig
ist. In Bezug auf das illustrative Programm 600 der 6 sollte
es erkannt werden, dass die präzise Reihenfolge
der Verfahrensschritte nicht entscheidend ist, und dass die Erfindung
nicht auf Ausführungsbeispiele
beschränkt
ist, die Verfahrensschritte genau in der gezeigten Reihenfolge durchführen. Zusätzlich sollte
es erkannt werden, dass die in 6 gezeigten
Verfahrensschritte nur eines von zahlreichen möglichen Programmen darstellen,
die das erwünschte
Ergebnis erreichen können,
und die Erfindung ist nicht auf das gezeigte bestimmte Programm beschränkt. Weiterhin
sollte es verstanden werden, dass einige Ausführungsbeispiele der Erfindung
weniger als alle der Funktionen durchführen können, die durch die in 6 dargestellten
Verfahrensschritte durchgeführt
werden, und die Erfindung nicht auf Ausführungsbeispiele beschränkt ist,
die alle durch das dargestellte Programm durchgeführten Funktionen
verwenden.
-
Das
Programm bzw. die Routine 600 beginnt dann, wenn das Quellenspeichersystem 104 (z.B. das
Quellenspeichersystem 104b der 3) eine I/O-Befehlskette über eine
Kommunikationsverbindung 114 von einer Host-CPU 102 empfangen
hat. Wenn eine I/O-Befehlskette empfangen wird, wird (bei einem
Schritt 604) bestimmt, ob die I/O-Befehlskette anfordert,
dass ein Schreiben zu einer der Speichervorrichtungen 110 des
Quellenspeichersystems (z.B. einem der Plattenlaufwerke 312a–b der 3) durchgeführt wird.
-
Wenn
die I/O-Befehlskette nicht anfordert, dass ein Schreiben durchgeführt wird
(z.B. wenn sie anfordert, dass ein Lesen durchgeführt wird),
dann geht das Programm 600 weiter zu einem Schritt 606, in
welchem zugelassen wird, dass die I/O-Befehlskette auf die normalerweise verarbeitet
und durch das Quellenspeichersystem 104 übergeben
wird, und endet das Programm 600. Weil I/O-Befehlsketten,
die kein Schreiben durchführen,
die Übertragung von
neu geschriebenen Daten zu einem Zielspeichersystem 106 über Spiegelungsverbindungen 112 nicht
erfordern, ist der Zustand der Spiegelungsverbindungen 112 für diese
Operationen nicht relevant, und solche I/O-Befehlsketten werden ungeachtet des Zustands
der Spiegelungsverbindungen 112 verarbeitet und übergeben.
-
Wenn
(bei dem Schritt 604) bestimmt wird, dass die I/O-Befehlskette anfordert,
dass ein Schreiben durchgeführt
wird, dann geht das Programm 600 zu Schritten 608 – 610,
in welchem das Zustands-Flag (siehe 5) für die Zielortspeichervorrichtung 110 (d.h.
die Quellenspeichervorrichtung 110, zu welcher die Schreibanforderungs-Befehlskette
gerichtet ist) geprüft
wird, um zu bestimmen, ob die Zielortspeichervorrichtung 110 OFFLINE
ist (Schritt 608), OFFLINE HÄNGEND (Schritt 610)
oder ONLINE (was dann angenommen wird, wenn der Schritt 610 bestimmt,
dass die Zielortspeichervorrichtung nicht OFFLINE HÄNGEND ist).
-
Wenn
(beim Schritt 608) bestimmt wird, dass die Zielortspeichervorrichtung 110 OFFLINE
ist, dann geht das Programm 600 zu dem Schritt 606,
in welchem zugelassen wird, dass die Schreibanforderungs-Befehlskette
durch das Quellenspeichersystem 104 verarbeitet und übergeben
wird. Weil die Zielortspeichervorrichtung 110 bereits im
OFFLINE-Zustand
ist, erkennt das Programm 600, dass die Zielortspeichervorrichtung 110 entweder
(1) keine entsprechende Zielspeichervorrichtung 116 zu
ihr zugeordnet hat, (2) in Reaktion auf eine vorherige Iteration
des Programms 600 (z.B. in einem Schritt 620 oder
einem Schritt 626) auf OFFLINE geschaltet wurde, oder (3)
durch eine Iteration eines Programms 700 (7)
durch eine Host-CPU 102 (z.B. in einem Schritt 712 des
Programms 700), wie es nachfolgend diskutiert ist, auf
OFFLINE geschaltet wurde. In den letzteren zwei Fällen wird
die vorherige Iteration des Programms 600 oder 700 Schritte
(die nachfolgend diskutiert sind) durchgeführt haben, um sicherzustellen,
dass ein Übergeben
der Schreibanforderungs-Befehlskette zum gegenwärtigen Zeitpunkt, ohne auch
die geschriebenen Daten zum Zielspeichersystem 106 zu transferieren,
nicht in einem Datenkonsistenzproblem im Zielspeichersystem 106 resultieren
wird.
-
Wenn
(beim Schritt 610) bestimmt wird), dass die Zielortspeichervorrichtung 110 OFFLINE HÄNGEND ist,
geht das Programm 600 weiter zum Schritt 612,
in welchem das Quellenspeichersystem 104 nicht zulässt, die
Schreibanforderungs-Befehlskette zu übergeben, und eine "spezielle" I/O-Fehlernachricht
zurück
zu der Host-CPU 102 sendet, die die I/O-Befehlskette ausgab.
Dann endet das Programm 600. Die spezielle I/O-Fehlernachricht
zeigt an, dass die Zielortspeichervorrichtung 110 im Zustand
OFFLINE HÄNGEND
ist. Die Zielortspeichervorrichtung 110 kann beispielsweise
während
einer vorherigen Iteration des Programms (z.B. im Schritt 622 oder
im Schritt 628) oder während
einer Iteration des Programms 700 (7) durch
eine Host-CPU 102 (z.B. im Schritt 708 des Programms 700),
das nachfolgend diskutiert ist, in den Zustand OFFLINE HÄNGEND versetzt
worden sein. Bei einem illustrativen Ausführungsbeispiel ist die spezielle
I/O-Fehlernachricht so ausgewählt,
dass sie nicht irgendeiner anderen I/O-Fehlernachricht entspricht, die durch das
Quellenspeichersystem 104 erzeugt wird. Daher wird (werden)
die Host-CPU(s) 102 immer die spezielle I/O-Fehlernachricht
derart erkennen, dass sie einen I/O-Fehler eindeutig anzeigt, der
daraus resultiert, dass eine Schreibanforderungs-Befehlskette, die zu einer Quellenspeichervorrichtung 110 gerichtet
wird, in dem Zustand OFFLINE HÄNGEND
ist.
-
Wenn
eine Host-CPU 102 die spezielle I/O-Fehlernachricht empfängt, reagiert
sie durch Vornehmen von Schritten zum Versetzen von allen Quellenspeichervorrichtungen 110a–f,
die in der Konsistenzgruppe der Zielortspeichervorrichtung enthalten sind,
in den Zustand OFFLINE HÄNGEND
(siehe die Schritte 706 und 708 im illustrativen
Programm 700 der 7). Nachdem
alle Quellenspeichervorrichtungen 110a–f in der relevanten Konsistenzgruppe
in den Zustand OFFLINE HÄNGEND
versetzt worden sind, wird dann jede Host-CPU 102, die
die spezielle I/O-Fehlernachricht empfing, Schritte unternehmen (z.B.
gemäß dem nachfolgend
in Verbindung mit 7 beschriebenen Programm 700),
um alle Quellenspeichervorrichtungen 110a–f, die in der relevanten
Konsistenzgruppe enthalten sind, in den Zustand OFFLINE zu versetzen
(siehe die Schritte 710 und 712 des illustrativen
Programms 700 der 7). Diesbezüglich sollte
es erkannt werden, dass mehrere unterschiedliche Host-CPUs 102 versuchen
können,
zu Quellenspeichervorrichtungen 110 zu schreiben, die in
den Zustand OFFLINE HÄNGEND
sind, bevor diese Vorrichtungen darauffolgend zu dem Zustand OFFLINE
geschaltet werden. In einer solchen Situation wird jede Host-CPU 102,
die versuchte, in dem Zustand OFFLINE HÄNGEND zu einer Quellenspeichervorrichtung 110 zu
schreiben, das nachfolgend diskutierte Programm 700 durchführen. Daher können mehrere
Host-CPUs 102 jeweils unabhängig das Programm 700 gleichzeitig
durchführen.
Nachdem jede der Speichervorrichtungen 104 in den Zustand
OFFLINE versetzt worden ist, wird wieder zugelassen, dass das Quellenspeichersystem 104 Schreibanforderungs-Befehlsketten,
die zu dieser Speichervorrichtung 110 gerichtet sind, übergibt
(siehe Schritt 608 des Programms 600).
-
Somit
entspricht der Zustand OFFLINE HÄNGEND
einer Zielortspeichervorrichtung 110 der Situation, die
oben beschrieben ist, wobei ein Quellenspeichersystem 104 temporär nicht
zulässt,
dass zu der Zielortspeichervorrichtung 110 gerichtete Schreibanforderungs-Befehlsketten übergeben
werden, und zwar während
der Zeitperiode, während welcher
die Spiegelungskommunikation für
alle anderen Quellenspeichervorrichtungen 110 in der Konsistenzgruppe
der Zielortspeichervorrichtung gesperrt ist. Der Zustand OFFLINE
einer Zielortspeichervorrichtung 110 entspricht andererseits
der oben beschriebenen Situation, bei welcher ein Quellenspeichersystem 104 zulässt, dass
Schreibanforderungs-Befehlsketten
zu einer Zielortspeichervorrichtung 110 übergeben
werden, ohne zuerst fordern, dass die geschriebenen Daten zu dem
Zielspeichersystem 106 transferiert werden.
-
Es
sollte erkannt werden, dass jede Host-CPU 102, die die
spezielle Fehlernachricht in Reaktion auf ein versuchtes Schreiben
zu einer Zielortspeichervorrichtung 110 empfängt, nicht
sofort Versuche zum Durchführen
des Schreibens wiederholen wird und resultierend daraus veranlassen
wird, dass die auf der Host-CPU 102 laufenden Anwendungsprogramme
abstürzen.
Viel mehr wird jede solche Host-CPU 102 stattdessen das
Programm 700 (7) durchführen, um zuerst alle Quellenspeichervorrichtungen 110 in
der relevanten Konsistenzgruppe in den Zustand OFFLINE HÄNGEND zu
versetzen und dann alle solchen Quellenspeichervorrichtungen 110 in
den Zustand OFFLINE zu versetzen. Nachdem jede Host-CPU 102,
die die spezielle Fehlernachricht empfängt, das Programm 700 beendet
hat, wird sie dann ihren Versuch zum Durchführen der Schreiboperation wiederholen.
Nachdem das Programm 700 geendet hat, werden alle Quellenspeichervorrichtungen 110 in
der Konsistenzgruppe der Zielortspeichervorrichtung OFFLINE sein.
Somit wird ein nachfolgender Versuch durch irgendeine Host-CPU zum
Schreiben zu der Zielortspeichervorrichtung 110 (durch
den Schritt 608 des Programms 600) übergeben
werden. Daher wird die oben beschriebene Situation vermieden, bei
welcher Anwendungsprogramme auf der (den) Host-CPU(s) 102 veranlasst
wurden, abzustürzen,
wenn ein Quellenspeichersystem 104, das eine Spiegelungskommunikation
für eine
Zielortspeichervorrichtung 110 verlor, einfach von einer Übergabe
von Schreibanforderungs-Befehlsketten abhielt.
-
Wenn
(beim Schritt 610) bestimmt wird, dass die Zielortspeichervorrichtung 110 nicht
OFFLINE HÄNGEND
ist, dann erkennt das Programm 600, dass die Zielortspeichervorrichtung 110 gegenwärtig ONLINE
ist. Bei dem gezeigten Beispiel geht das Programm 600 dann,
wenn (beim Schritt 610) bestimmt wird, dass die Zielortspeichervorrichtung 110 ONLINE
ist, weiter zu einem Schritt 614, in welchem bestimmt wird,
ob eine Spiegelungskommunikation gegenwärtig für die Zielortspeichervorrichtung 110 freigegeben
ist. Die Bestimmung im Schritt 614 kann beispielsweise
durch Prüfen
der Spiegelungsverbindungs-Zustands-Flags in der Tabelle 402 durchgeführt werden,
die zu der Spiegelungsgruppe 108 gehört, in welcher die Zielortspeichervorrichtung 110 enthalten
ist, um zu bestimmen, ob wenigstens eine Spiegelungsverbindung 112 für die Spiegelungsgruppe 108 in
Betrieb ist. Wenn eine oder mehrere der Spiegelungsverbindungen 112 für die Spiegelungsgruppe 108 freigegeben
sind, dann wird bestimmt, dass eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 freigegeben
ist. Sonst wird bestimmt, dass eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 gesperrt
ist.
-
Wenn
(beim Schritt 614) bestimmt wird, dass eine Spiegelungskommunikation
für die
Zielortspeichervorrichtung 110 gesperrt ist, geht das Programm 600 weiter
zu Schritten 620 – 628,
in welchem Aktionen (die nachfolgend diskutiert sind) vorgenommen werden,
um die Konsistenz der durch das Zielspeichersystem 106 gespeicherten
Datengruppe beizubehalten.
-
Wenn
(beim Schritt 614) bestimmt wird, dass eine Spiegelungskommunikation
für die
Zielortspeichervorrichtung 110 freigegeben ist, dann geht
das Programm 600 weiter zu dem Schritt 616, in
welchem die Schreibanforderungs-Befehlskette durch das Zielspeichersystem 106 (konditional)
verarbeitet und übergeben
wird. Das Programm 600 geht dann weiter zum Schritt 618,
in welchem eine Bestimmung diesbezüglich durchgeführt wird,
ob eine während der
gesamten Verarbeitung und Übergabe
der Schreibanforderungs-Befehlskette freigegebene Spiegelungskommunikation übrig blieb
(d.h. bis nachdem die Daten erfolgreich zu sowohl dem Quellen- als
auch dem Zielspeichersystem 104 und 106 transferiert
worden sind). Wenn bestimmt wird, dass eine Spiegelungskommunikation
freigegeben blieb, so dass zugelassen wurde, die Schreibanforderungs-Befehlskette
erfolgreich zu übergeben,
endet das Programm 600. Wenn jedoch (beim Schritt 618) bestimmt
wird, dass eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 gesperrt
wurde, bevor die Schreibanforderungs-Befehlskette im Schritt 616 übergeben
wurde (z.B. während
des Transfers von Daten über
die Spiegelungsverbindungen 112), dann geht das Programm
weiter zum Schritt 620, als ob die anfängliche Prüfung der Tabelle 402 angezeigt
hätte,
dass eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 gesperrt
wurde. Die Bestimmung im Schritt 618 kann beispielsweise
durch direktes Überwachen
eines Zustands der Verbindungen, d.h. ohne Bezugnahme auf die Tabellen 402 (4),
durchgeführt
werden. Daher wird bei diesem Ausführungsbeispiel die Freigabe
einer Spiegelungskommunikation für
die Quellenspeichervorrichtungen 110 nicht nur durch eine Bezugnahme
auf die Tabellen 402 bestimmt. Stattdessen können die
Vorrichtungen, die für
die Spiegelungskommunikation verantwortlich sind (z.B. die Spiegelungssteuerung 308 der 3),
oder irgendeine andere Vorrichtung, auch eine Bestimmung durchführen, das
eine Spiegelungskommunikation für
eine Quellenspeichervorrichtung 110 gesperrt worden ist.
-
Wenn
das Programm 600 die Schritte 620 – 622 erreicht,
ist bestimmt worden, dass die Quellenspeichervorrichtung 110,
zu welcher die Schreibanforderungs-Befehlskette (die darin resultierte,
dass das Programm 600 aufgerufen wird) gerichtet wurde, ONLINE
ist, und sich nicht an einer Spiegelungskommunikation mit dem Zielspeichersystem 106 beteiligen
kann. Weil die Zielortspeichervorrichtung 110 noch ONLINE
ist, erkennt das Programm 600, dass die Schreibanforderungsbefehlskette,
die verarbeitet wird, die erste Schreibanforderungs-Befehlskette
ist, die zu einer Quellenspeichervorrichtung 110 in der Spiegelungsgruppe 108 der
Zielortspeichervorrichtung gerichtet ist, da eine Spiegelungskommunikation
für die
Spiegelungsgruppe 108 gesperrt wurde. Daher führt das
Programm 600 bei dem gezeigten illustrativen Ausführungsbeispiel
Schritte durch, um die Zustände
von allen anderen Quellenspeichervorrichtungen 110 in der
Spiegelungsgruppe 108 der Zielortspeichervorrichtung zu
entweder OFFLINE (Schritt 620) oder OFFLINE HÄNGEND (Schritt 622) zu ändern, um
den Verlust einer Spiegelungskommunikation für die Spiegelungsgruppe 108 zu
berücksichtigen.
-
Spezifischer
setzt das Programm 600 beim Schritt 620 für jede der
Quellenspeichervorrichtungen 110, die eine Spiegelkommunikation
mit der Zielortspeichervorrichtung 110 gemeinsam nutzt (d.h.
die in der Spiegelungsgruppe 108 der Zielortspeichervorrichtung
ist), und die kein Element einer Konsistenzgruppe ist, die beispielsweise
durch Prüfen
des Konsistenzgruppen-Flags in der Tabelle 504 der 5 für die Zielortspeichervorrichtung 110 bestimmt
werden kann, das Zustands-Flag für
diese Quellenspeichervorrichtung 110 auf OFFLINE. Somit wird
auf nachfolgende Iterationen des Programms 600 einschließlich von
zu diesen Quellenspeichervorrichtungen 110, die auf OFFLINE
geschaltet worden sind, gerichteten Schreibanforderungs-Befehlsketten
zugelassen werden, dass die Schreibanforderungs-Befehlsketten durch
die Schritte 608 und 606 des Programms 600 verarbeitet
und übergeben
werden, trotz der Tatsache, dass eine Spiegelungskommunikation für diese
Quellenspeichervorrichtung 110 gesperrt worden ist.
-
Gleichermaßen setzt
das Programm 600 beim Schritt 622 für jede der
Quellenspeichervorrichtungen 110, die eine Spiegelkommunikation
gemeinsam mit der Zielortspeichervorrichtung 110 nutzt
und ein Element einer Konsistenzgruppe ist, das Zustands-Flag für diese
Quellenspeichervorrichtung 110 auf OFFLINE HÄNGEND. Somit
wird das Programm auf nachfolgende Iterationen des Programms 600 einschließlich von
zu diesen Quellenspeichervorrichtungen 110, die auf den
Zustand OFFLINE HÄNGEND
geschaltet worden sind, gerichteten Schreibanforderungs-Befehlsketten
hin zu dem Schritt 612 weitergehen, in welchem die spezielle I/O-Fehlernachricht (die
oben diskutiert ist) zu der Host-CPU 102 gesendet werden
wird, die die I/O-Befehlskette ausgab.
-
Nach
einem Beenden des Schritts 622 des Programms 600 wird
bei einem Schritt 624 (z.B. durch Prüfen des Konsistenzgruppen-Flags
in der Tabelle 504 der 5) bestimmt,
ob die Zielortspeichervorrichtung 110 ein Element einer
Konsistenzgruppe ist. Wenn (beim Schritt 624) bestimmt
wird, dass die Zielortspeichervorrichtung 110 kein Element einer
Konsistenzgruppe ist, dann geht das Programm weiter zu dem Schritt 626,
in welchem das Zustands-Flag für
die Zielortspeichervorrichtung 110 auf OFFLINE gesetzt
wird. Es ist sicher, das Zustands-Flag für die Zielortspeichervorrichtung 110 in dieser
Situation sofort auf den Zustand OFFLINE zu ändern, weil die Zielortspeichervorrichtung 110 kein Element
einer Konsistenzgruppe ist und die durch das Zielspeichersystem 106 für diese
Quellenspeichervorrichtung 110 gespiegelten Daten nicht
konsistent mit den durch das Zielspeichersystem 106 für irgendwelche
anderen Quellenspeichervorrichtungen 110 gespiegelten Daten
gehalten werden müssen. Das
Programm 600 geht dann weiter zum Schritt 606,
in welchem die zu der Zielortspeichervorrichtung 110 gerichtete
Schreibanforderungs-Befehlskette verarbeitet und übergeben
wird, und das Programm 600 endet. Wie es oben angegeben
ist, wird dann, wenn das Zustands-Flag für eine Quellenspeichervorrichtung 110 im
Zustand OFFLINE ist, zugelassen, dass das Quellenspeichersystem 104,
das diese Speichervorrichtung 110 enthält, zu ihr gerichtete Schreibanforderungs-Befehlsketten übergibt, ohne
dass es erforderlich ist, dass die Daten zu dem Zielspeichersystem 106 transferiert
werden.
-
Wenn
(beim Schritt 624) bestimmt wird, dass die Zielortspeichervorrichtung 110 ein
Element einer Konsistenzgruppe ist, dann geht das Programm 600 weiter
zum Schritt 628, in welchem das Zustands-Flag für die Zielortspeichervorrichtung 110 auf
OFFLINE HÄNGEND
gesetzt wird. Wie es oben diskutiert ist, wird dann, wenn eine Zielortspeichervorrichtung 110 im
Zustand OFFLINE HÄNGEND
ist, temporär
verhindert, dass das Quellenspeichersystem 104, das die
Zielortspeichervorrichtung 110 enthält, zu der Zielortspeichervorrichtung 110 gerichtete Schreibanforderungs-Befehlsketten übergibt.
Wie es auch oben diskutiert ist, wird gemäß einem Aspekt der Erfindung
dieses Verhindern, dass das Quellenspeichersystem 104 solche
Schreibanforderungs-Befehlsketten übergibt, nur durchgeführt, bis eine
Spiegelungskommunikation für
alle anderen Quellenspeichervorrichtungen 110, die in derselben Konsistenzgruppe
wie die Zielortspeichervorrichtung 110 enthalten sind,
gesperrt worden ist.
-
Bei
dem Ausführungsbeispiel
der 6 wird eine Verantwortlichkeit zum Sperren einer
Spiegelungskommunikation für
die Quellenspeichervorrichtungen 110, die in den Spiegelungsgruppen 108 enthalten
sind, die andere als die gesperrte Spiegelungsgruppe 108 ist,
die die Zielortspeichervorrichtung 110 enthält, zu der
(den) Host-CPU(s) 102 delegiert.
Bei dem illustrativen Verfahren der 6 wird dieses
Ziel beim Schritt 612 erreicht, in welchem eine spezielle
I/O-Fehlernachricht zu der Host-CPU 102 gesendet wird,
die die zu der Zielortspeichervorrichtung 110 gerichtete
Schreibanforderungs-Befehlskette ausgab.
-
Wie
es nachfolgend detaillierter erklärt wird, sendet die Host-CPU 102 bei
dem illustrativen Ausführungsbeispiel
der 7 in Reaktion auf ein Empfangen dieser speziellen
I/O-Fehlernachricht
Befehle zu jedem der Quellenspeichersysteme 104, die Quellenspeichervorrichtungen 110 enthalten,
die in derselben Konsistenzgruppe wie die Zielortspeichervorrichtung 110 enthalten
sind. Diese Befehle weisen die Quellenspeichersysteme 104 an,
die Zustands-Flags für
die Quellenspeichervorrichtungen 110, die in der relevanten
Konsistenzgruppe enthalten sind, auf den Zustand OFFLINE HÄNGEND einzustellen.
Nachdem alle solchen Quellenspeichervorrichtungen 110 in
den Zustand OFFLINE HÄNGEND
versetzt worden sind, sendet die Host-CPU 102, die die
spezielle I/O-Fehlernachricht empfing, dann Befehle zu dem relevanten
Quellenspeichersystem 104, die sie anweisen, die Zustands-Flags
der Quellenspeichervorrichtungen 110 in der relevanten
Konsistenzgruppe auf den Zustand OFFLINE zu setzen. Schließlich wird,
nachdem alle Quellenspeichervorrichtungen 110 in der relevanten
Konsistenzgruppe in den Zustand OFFLINE versetzt worden sind, wieder
zugelassen, dass die Quellenspeichersysteme 104, die diese
Quellenspeichervorrichtungen 110 enthalten, zu ihnen gerichtete
Schreibanforderungs-Befehlsketten zu übergeben. Somit wird unter
Verwendung dieser Technik die Software, die auf der (den) Host-CPU(s) 102 läuft, die
die Schreibanforderungs-Befehlskette aufruft (aufrufen), nicht aufgrund von
wiederholten Fehlern zum Schreiben zu Quellenspeichervorrichtungen 110,
die in einer gesperrten Spiegelungsgruppe 108 enthalten
sind, abstürzen. Vielmehr
werden, wann immer eine Host-CPU 102 versucht, zu einer
Zielortspeichervorrichtung 110 in einer gesperrten Spiegelungsgruppe 108 zu
schreiben, das Quellenspeichersystem 104, das die Zielortspeichervorrichtung 110 enthält, die
spezielle I/O-Fehlernachricht zu der Host-CPU 102 zurückbringen,
um dadurch die Host-CPU 102 anzuweisen, die oben diskutierten
Aktionen vorzunehmen, um eine Spiegelungskommunikation für die Quellenspeichervorrichtungen 110 in
der Konsistenzgruppe der Zielortspeichervorrichtung zu sperren.
Nach einem Vornehmen solcher Aktionen wird dann zugelassen werden,
dass die Host-CPU 102 erfolgreich zu der Zielortspeichervorrichtung 110 schreibt,
auch wenn eine Spiegelungskommunikation für die Zielortspeichervorrichtung 110 gesperrt
worden ist.
-
In
Bezug auf die oben beschriebenen Schritte 620 – 622,
in welchem die Zustände
von allen Quellenspeichervorrichtungen 110 in der gesperrten Spiegelungsgruppe 108 geändert werden, sollte
es verstanden werden, dass die Zustände dieser Quellenspeichervorrichtungen 110 alternativ
auf andere Weise geändert
werden könnten,
und nicht durch das Quellenspeichersystem 104 während der
Iteration des Programms 600 der 6 geändert werden müssen, wobei
der Verlust einer Spiegelungskommunikation entdeckt wurde. Beispielsweise
könnten ihre
Zustände
durch das Quellenspeichersystem 104 während darauffolgender Iterationen
des Programms 600 geändert
werden oder könnten
durch eine der Host-CPUs 102 während einer Ausführung des
Programms 700 der 7 (das nachfolgend
diskutiert ist) geändert
werden.
-
Diesbezüglich sollte
es erkannt werden, dass bei dem illustrativen Ausführungsbeispiel
der 6 die Zustände
von allen Quellenspeichervorrichtungen 110 in der Spiegelungsgruppe 108 der Zielortspeichervorrichtung
in den Schritten 620 – 622 nur
als Sache einer Annehmlichkeit geändert werden. Das bedeutet,
dass für
diese Quellenspeichervorrichtungen 110 in der gesperrten
Spiegelungsgruppe 108, die in derselben Konsistenzgruppe
wie die Zielortspeichervorrichtung 110 sind, ein Ändern der
Zustände
von solchen Quellenspeichervorrichtungen 110 auf den Zustand
OFFLINE HÄNGEND während der
ersten Iteration des Programms 600, bei welcher der Verlust
einer Kommunikation entdeckt wird, die Gesamtanzahl von Zustands-Flags
reduziert, die die Host-CPU(s) 102 haben wird (werden), um
zu dem Zustand OFFLINE HÄNGEND
zu ändern, wenn
auf die oben diskutierte spezielle I/O-Fehlernachricht reagiert
wird, die durch das Quellenspeichersystem 104 im Schritt 612 ausgegeben
ist, nachdem das Zustands-Flag für
die Zielortspeichervorrichtung im Schritt 628 auf den Zustand
OFFLINE HÄNGEND
gesetzt ist. Zusätzlich
verhindert für
die Quellenspeichervorrichtungen 110 in der gesperrten Spiegelungsgruppe 108,
die in Konsistenzgruppen enthalten sind, die andere als diejenigen
der Zielortspeichervorrichtung 100 sind, oder die nicht
in irgendeiner Konsistenzgruppe sind, ein Ändern der Zustände dieser
Quellenspeichervorrichtungen 110 auf den Zustand OFFLINE
HÄNGEND
bzw. den Zustand OFFLINE, dass die letzteren Iterationen des Programms 600 die
Schritte 614 – 628 durchführen müssen, wenn
eine Host-CPU 102 versucht, zu einer dieser Quellenspeichervorrichtungen 110 zu
schreiben, für
welche eine Spiegelungskommunikation bereits als gesperrt bestimmt
worden ist. Diesbezüglich nach
den Zuständen
von allen Quellenspeichervorrichtungen 100, für welche
eine Spiegelungskommunikation bereits als gesperrt bestimmt worden
ist. Diesbezüglich
wird, nachdem die Zustände
von allen Quellenspeichervorrichtungen 110 in der gesperrten Spiegelungsgruppe 108 geändert worden
sind, wenn ein Schreiben zu einer dieser Quellenspeichervorrichtungen 110 versucht
wird, das Programm 600 niemals den Schritt 614 erreichen,
weil jede im Voraus in entweder den Zustand OFFLINE oder den Zustand OFFLINE
HÄNGEND
versetzt worden sein wird.
-
Während das
Programm 600 bei dem Ausführungsbeispiel der 6 veranlasst,
dass die Zustände
der Quellenspeichervorrichtungen 110 nur in Reaktion auf
eine Schreibanforderungs-Befehlskette geändert werden, die zu einer
Zielortspeichervorrichtung 110 gerichtet wird, die in einer
gesperrten Spiegelungsgruppe 108 enthalten ist, sollte
es erkannt werden, dass die vorliegende Erfindung nicht so beschränkt ist,
und dass die Zustände
der Quellenspeichervorrichtungen 110 alternativ unabhängig von empfangenen
Schreibanforderungs-Befehlsketten geändert werden können. Beispielsweise
kann eine oder mehrere der Steuerungen in dem Quellenspeichersystem 104 (z.B.
Steuerungen 302, 304 und 308 der 3)
kontinuierlich den Zustand der Überwachungsverbindungen 112a–b entweder
direkt oder mittels Verbindungszustandstabellen (z.B. Tabellen 420A–B der 49 überwachen,
und diese Steuerung(en) kann (können)
den Zustand von jeder Quellenspeichervorrichtung 110 in
einer Spiegelungsgruppe 108 ändern, wann immer bestimmt
wird, dass eine Spiegelungskommunikation für diese Spiegelungsgruppe 108 verloren
worden ist.
-
7 zeigt
ein Beispiel eines Programms 700 das durch eine Host-CPU 102 durchgeführt werden
kann, wann immer die Host-CPU 102 die
spezielle I/O-Fehlernachricht von einem Quellenspeichersystem 104 empfängt, wie
es oben diskutiert ist. Das Programm 700 kann auf der Host-CPU 102 auf
irgendeine von zahlreichen Arten implementiert sein, so dass sie
auf die spezielle I/O-Fehlernachricht reagiert, und die Erfindung
ist nicht auf irgendeine bestimmte Implementierungstechnik beschränkt. Beispielsweise
dann, wenn die Host-CPU(s) 102 unter Verwendung von Großrechnercomputern
implementiert ist (sind), kann das Programm 700 zum Beispiel in
dem Code für
die Vorrichtungstreiber eingebettet sein, die für ein Ausgeben von Schreibanforderungs-Befehlsketten
zu den Quellenspeichersystemen 104 verantwortlich sind.
Bei einem solchen Ausführungsbeispiel
wird die zu der (den) Host-CPU(s) 102 zurückgebrachte spezielle Fehlernachricht
durch den Vorrichtungstreiber empfangen werden, der diesen eingebetteten
Code ausführen
kann, um das Programm 700 durchzuführen. Alternativ dazu kann dann,
wenn die Host-CPU(s) 102 unter
Verwendung von Computern mit offenem System implementiert ist (sind),
das Programm 700 zum Beispiel auf einer höheren Ebene
als der Vorrichtungstreiber implementiert sein, und der Empfang
der speziellen I/O-Fehlernachricht von einem Quellenspeichersystem 104 kann
ein Verarbeiten eines "Teilprozesses" verursachen, um
von dem Vorrichtungstreibercode zu einem separat implementierten
Code für
das Programm 700 zu springen, d.h. die spezielle I/O-Fehlernachricht kann
temporär "den Verarbeitungskernel
stehlen", und zwar
von dem Vorrichtungstreiber. Es sollte erkannt werden, dass der
Code für
das Programm 700 auch in dem Vorrichtungstreibercode für einen
Computer mit offenem System eingebettet sein kann. Jedoch ist es
oft der Fall, dass der Vorrichtungstreibercode Eigentum für offene
Systeme ist, und es daher schwierig ist, auf ihn zuzugreifen und
ihn zu modifizieren. Zahlreiche andere geeignete Techniken, die ein
gleiches Ergebnis erreichen, werden Fachleuten auf dem Gebiet ohne
weiteres einfallen, und die Erfindung ist nicht auf die beschriebenen
spezifischen Beispiele beschränkt.
-
In
Bezug auf das illustrative Programm 700 der 7 sollte
es erkannt werden, dass die präzise Reihenfolge
der Verfahrensschritte nicht entscheidend ist und dass die Erfindung
nicht auf die Ausführungsbeispiele
beschränkt
ist, die Verfahrensschritte genau in der gezeigten Reihenfolge durchführen. Zusätzlich sollte
es erkannt werden, dass die in 7 gezeigten
Verfahrensschritte nur eines von zahlreichen möglichen Programmen darstellen,
die das erwünschte
Ergebnis erreichen können,
und die Erfindung nicht auf die bestimmte gezeigte Routine bzw. das
bestimmte gezeigte Programm beschränkt ist. Weiterhin sollte es
verstanden werden, dass einige Ausführungsbeispiele der Erfindung
weniger als alle der Funktionen durchführen können, die durch die in 7 dargestellten
Verfahrensschritte durchgeführt werden,
und die Erfindung nicht auf die Ausführungsbeispiele beschränkt ist,
die alle Funktionen verwenden, die durch das dargestellte Programm
durchgeführt
werden.
-
Das
Programm 700 wird aufgerufen, wenn die spezielle I/O-Fehlernachricht von
einem Quellenspeichersystem 104 empfangen wird. Wenn die
spezielle I/O-Fehlernachricht empfangen wird, geht das Programm 700 weiter
zu einem Schritt 704, in welchem das Programm 700 alle
Quellenspeichervorrichtungen 110 identifiziert, die in
derselben Konsistenzgruppe wie die Zielortspeichervorrichtung 110 enthalten
sind, zu welcher die Schreibanforderungs-Befehlskette, die die spezielle
I/O-Fehlernachricht
förderte,
gerichtet wurde. Zum Identifizieren der Quellenspeichervorrichtung 110,
zu welcher die Schreibanforderungs-Befehlskette, die die spezielle I/O- Fehlernachricht förderte,
gerichtet wurde, kann (können)
die Host-CPU(s) entweder sich auf ihren eigenen Speicher in Bezug
auf die Quellenspeichervorrichtung, zu welcher sie die Schreibanforderungs-Befehlskette
sendete(n), verlassen, oder können
sich auf Information, die in der speziellen I/O-Fehlernachricht selbst eingebettet ist,
verlassen, die die Quellenspeichervorrichtung 110 identifiziert, zu
welcher die Schreibanforderungs-Befehlskette gerichtet wurde. Bei
dem gezeigten Ausführungsbeispiel
hält die
(halten die) Host-CPU(s) 102 Information
in Bezug darauf, welche Quellenspeichervorrichtungen Elemente von
welchen Konsistenzgruppen sind. Somit kann die Funktion des Schritts 704 durch die
Host-CPU(s) 102 einfach durch Bezugnahme auf diese Information
für die
Quellenspeichervorrichtung 110 durchgeführt werden, zu welcher die
Schreibanforderungs-Befehlskette,
die die spezielle I/O-Fehlernachricht förderte, gerichtet wurde. Nach
einem Beenden des Schritts 704 geht das Programm 700 weiter
zu einem Schritt 706.
-
Beim
Schritt 706 bestimmt das Programm 700, ob es irgendwelche
Quellenspeichervorrichtungen 110 in der relevanten Konsistenzgruppe
gibt, die in dem Zustand ONLINE sind, und wenn es so ist, geht es
weiter zu einem Schritt 708. Beim Schritt 708 veranlasst
das Programm 700 für
jede Quellenspeichervorrichtung 110, die im Schritt 706 derart
identifiziert ist, dass sie im Zustand ONLINE ist, dass die Host-CPU 102 eine
I/O-Befehlskette ausgibt, die das Quellenspeichersystem 104,
das diese Quellenspeichervorrichtung 110 enthält, anweist,
sie zu dem Zustand OFFLINE HÄNGEND
zu schalten.
-
Die
Ergebnisse der Schritte 706 und 708 können auf
irgendeine einer Anzahl von Arten erreicht werden, und die Erfindung
ist nicht auf irgendeine bestimmte Technik zu erreichen derselben beschränkt. Die
Host-CPU 102 kann zum Beispiel sequenziell jede der relevanten
Quellenspeichervorrichtungen 110 abfragen, um ihren aktuellen
Zustand zu bestimmen, und wenn irgendeine abgefragte Quellenspeichervorrichtung 110 bleibt,
um zu dem Zustand OFFLINE HÄNGEND
geschaltet zu werden, kann die Host-CPU 102 eine I/O-Befehlskette
ausgeben, um eine Änderung
von diesem Vorrichtungszustand zu bewirken. Zum Vermeiden eines
Abfragens von Vorrichtungen, die bereits zu dem Zustand OFFLINE
HÄNGEND
geschaltet worden sind, bevor die Host-CPU 102 ein Durchführen der
Schritte 706 und 708 beginnt, kann sie beispielsweise
zuerst eine Aktualisierung zu einer Zustandstabelle (z.B. im Host-CPU-Speicher
gespeichert) für
die relevanten Quellenspeichervorrichtungen 110 anfordern,
in welchen der aktuelle Zustand von jeder Vorrichtung angezeigt
wird. Die Host-CPU 102 könnte dann nur die relevanten
Quellenspeichervorrichtungen 110 abfragen, für die die
Tabelle anzeigt, dass sie noch nicht zu dem Zustand OFFLINE HÄNGEND geschaltet worden
sind, und Befehlsketten zum Ändern
des Zustands von diesen Vorrichtungen ausgeben, für die durch
das Abfragen angezeigt ist, dass sie noch nicht geändert worden
sind. Diese Technik kann Zeit sparen, wenn mehrere Host-CPUs 102 das
Programm 700 gleichzeitig durchführen, wie es oben diskutiert ist.
Alternativ dazu kann jede Host-CPU 102, die das Programm 700 durchführt, beispielsweise
einfach eine I/O-Befehlskette für
jede Quellenspeichervorrichtung 110, die in der Konsistenzgruppe
der Zielortspeichervorrichtung enthalten ist, ausgeben, ohne eine
Tabelle zu aktualisieren oder irgendein Abfragen von aktuellen Vorrichtungszuständen durchzuführen, und
die Quellenspeichersysteme 104 bestimmen lassen, ob I/O-Befehlsketten, die
Zustandsänderungen anfordern,
die bereits bewirkt worden sind, zu berücksichtigen sind oder nicht.
-
Wenn
(beim Schritt 706) bestimmt wird, dass alle Quellenspeichervorrichtungen 110 in
der Konsistenzgruppe der Zielortspeichervorrichtung zu dem Zustand
OFFLINE HÄNGEND
geschaltet worden sind, geht das Programm 700 weiter zu
einem Schritt 710. Beim Schritt 710 bestimmt das
Programm 700, ob es irgendwelche Quellenspeichervorrichtungen 110 in
der relevanten Konsistenzgruppe gibt, die noch nicht zu dem Zustand
OFFLINE geschaltet worden sind, und wenn es so ist, geht das Programm 700 weiter
zum Schritt 712.
-
Beim
Schritt 712 veranlasst das Programm 700 für jede Quellenspeichervorrichtung 110,
die im Schritt 710 derart identifiziert ist, dass sie in
dem Zustand OFFLINE ist, die Host-CPU 102 eine I/O-Befehlskette
auszugeben, die das Quellenspeichersystem 104, das diese
Quellenspeichervorrichtung 110 enthält, anweist, sie zu dem Zustand
OFFLINE zu schalten. Techniken, die gleich denjenigen sind, die oben
in Zusammenhang mit den Schritten 706 und 708 beschrieben
sind, können
verwendet werden, um die Ergebnisse der Schritte 710 und 712 zu
erreichen. Wenn (beim Schritt 710) bestimmt wird, dass alle
Quellenspeichervorrichtungen 110 in der Konsistenzgruppe
der Zielortspeichervorrichtung zu dem Zustand OFFLINE geschaltet
worden sind, endet das Programm 700.
-
Bei
dem in 7 gezeigten Ausführungsbeispiel speichern die
Quellenspeichersysteme 104 Information, die nur identifiziert,
ob jede Quellenspeichervorrichtung 110 in einer Konsistenzgruppe
enthalten ist oder nicht, und speichert (speichern) die Host-CPU(s) 102 die
gesamte Information in Bezug darauf, welche Quellenspeichervorrichtungen 110 in welchen
Konsistenzgruppen enthalten sind. Somit ist bei dem gezeigten illustrativen
Ausführungsbeispiel eine
der Host-CPUs 102 die Einheit, die Befehle, die anfordern,
dass die Quellenspeichervorrichtungen 110 in der relevanten
Konsistenzgruppe zuerst in den Zustand OFFLINE HÄNGEND versetzt werden, und dann
in den Zustand OFFLINE, sendet. Es sollte jedoch erkannt werden,
dass das Sperren einer Spiegelungskommunikation für die Quellenspeichervorrichtungen 110 in
der relevanten Konsistenzgruppe durchgeführt werden kann, anstelle durch eines
oder mehrere der Quellenspeichersysteme 104, oder irgendeine
andere Vorrichtung oder Vorrichtungen in einem Computersystem, das
in Kommunikationsverbindung mit dem Quellenspeichersystem 104 ist.
-
Die
oben beschriebenen Ausführungsbeispiele
der vorliegenden Erfindung betreffen ein Datenspiegelungssystem,
das wenigstens einen Host, wenigstens ein Quellenspeichersystem
und wenigstens ein Zielspeichersystem enthält, wobei der Host Schreiboperationen
zu dem Quellenspeichersystem durchführt und wobei eine Spiegelungskommunikation
zwischen dem Quellen- und
dem Zielspeichersystem eingerichtet wird. Bei den oben beschriebenen bestimmten
Ausführungsbeispielen
ist der Host als Host-CPU beschrieben. Jedoch sollte es erkannt werden,
dass die oben diskutierten verschiedenen Ausführungsbeispiele der vorliegenden
Erfindung diesbezüglich
nicht beschränkt
sind und in einem Datenspiegelungssystem verwendet werden können, das
zahlreiche andere Typen von Hostvorrichtungen enthält, die
Daten zu dem Quellenspeichersystem schreiben können.
-
Nachdem
mehrere Ausführungsbeispiele
der Erfindung im Detail beschrieben worden sind, werden verschiedene
Modifikationen und Verbesserungen Fachleuten auf dem Gebiet ohne
weiteres einfallen. Solche Modifikationen und Verbesserungen sollen
innerhalb des Schutzumfangs der Erfindung sein. Demgemäß ist die
vorangehende Beschreibung nur beispielhaft und soll nicht beschränkend sein.
Die Erfindung ist nur beschränkt,
wie es durch die folgenden Ansprüche
und ihre Äquivalente
definiert ist.