-
In den letzten Jahren besteht mehr und mehr Interesse an Informationen im Hinblick auf Verallgemeinerung großer Datenanalysen; zunehmend wichtig wird darüber hinaus auch die Wiederherstellung nach Unglücken zum Schutz wichtiger Informationen. Betreffend Wiederherstellung nach Unglücken beschreibt Patentliteratur 1 eine Technik, die bei gewöhnlichem Betrieb das Lesen/Schreiben von einem Host-Rechner so steuert, dass eine Speichervorrichtung lediglich an einer Hauptstelle verwendet wird, wobei Daten auf eine Speichervorrichtung an einer entfernten Stelle kopiert werden, und wenn an der Hauptstelle ein Fehler auftritt, den Zugriff auf die entfernte Stelle schaltet.
-
-
Die Zunahme der Datenmenge ist bemerkenswert etwa bei Daten für große Datenanalysen; demzufolge wachsen die Systeme in Größe und Komplexität und Anzahl von Vorrichtungen und ebenso im Hinblick auf die Kosten der Backup-Stelle. Dementsprechend ist die effektive Nutzung von Ressourcen an der Backup-Stelle gewünscht. Die in Patentliteratur 1 beschriebene Technik empfängt Lesen/Schreiben nur am Speichergerät der Hauptstelle und erlaubt im Normalbetrieb nicht Zugriffe auf die Speichervorrichtung an der entfernten Stelle, sodass eine effektive Ressourcennutzung nicht vorliegt.
-
Die
US 2005/0147132 A1 beschreibt ein Datenmultiplexverfahren, bei dem Datenschreib- und -lesebefehle gemultiplext werden.
-
Die
US 2007/0050547 A1 beschreibt ein Speichersystem mit drei Speichergeräten, von denen zwei Journal-Speicherbereiche zum Speichern von Verwaltungsinformation haben.
-
Die
US2007/0050573 A1 beschreibt ein Speichersystem mit einem Primär- und zwei Sekundärspeichern und bestimmten Speicherstrategien untereinander.
-
Die
US 2009/0228671 A1 beschreibt ein Speichergerät mit einem Speicher- und einem Backup-Volumen.
-
Zusammenfassung
-
Aufgabe der Erfindung ist es, ein Speichersystem und ein Speicherverfahren anzugeben, die die Ressourcennutzung verbessern.
-
Diese Aufgabe wird mit den Merkmalen der unabhängigen Ansprüche gelöst.
-
Ein Speichersystem hat die Merkmale des Anspruchs 1. Ein Speicherverfahren hat die Merkmale des Anspruchs 11.
-
Gemäß einem Aspekt dieser Erfindung kann Lesen/Schreiben an einer Speichervorrichtung an einer entfernten Stelle empfangen werden; die Ressourcen an der entfernten Stelle können so effizient genutzt werden.
-
Figurenliste
-
- 1A zeigt einen Überblick über einen Verarbeitungsablauf, wenn ein Schreibbefehl an ein PVOL gerichtet ist;
- 1B zeigt den Überblick eines Verarbeitungsablaufs, wenn ein Lesebefehl an ein PVOL und an ein SVOL gerichtet ist,
- 2 zeigt ein Konfigurationsbeispiel eines Computersystems in einer Ausführungsform;
- 3 illustriert schematisch ein Hardware-Konfigurationsbeispiel eines Host-Rechners und einer Speichervorrichtung;
- 4 zeigt ein Beispiel einer virtuellen Konfiguration, die durch Speichervorrichtungen einem Host-Computer geboten wird;
- 5 zeigt Informationen, die in einem geteilten Speicher in einem CMPK einer Speichervorrichtung gespeichert sind;
- 6 zeigt Informationen, die in einem lokalen Speicher in einem MPPK einer Speichervorrichtung gespeichert sind;
- 7 zeigt ein Konfigurationsbeispiel einer VOL-Zuordnungsinformation-Verwaltungstabelle;
- 8 zeigt ein Konfigurationsbeispiel einer HA-Volumenpaar-Verwaltungstabelle,
- 9 zeigt ein Konfigurationsbeispiel einer LU-Pfadverwaltungstabelle;
- 10 zeigt ein Konfigurationsbeispiel einer VOL-Verwaltungstabelle;
- 11 zeigt ein Konfigurationsbeispiel einer PG-Verwaltungstabelle;
- 12 zeigt ein Konfigurationsbeispiel einer Cache-Seiten-Verwaltungstabelle;
- 13 zeigt ein Konfigurationsbeispiel einer Job-Verwaltungstabelle;
- 14 zeigt einen Ablauf eines Verfahrens des Lieferns von Informationen auf einer virtuellen Speichervorrichtung und virtuellen Volumen an einen Host-Rechner;
- 15 zeigt einen Ablauf eines Vorgangs des Schreibens von einem Host-Rechner an ein PVOL;
- 16 zeigt einen Ablauf eines Vorgangs für ein Schreiben von einem Host-Rechner an ein SVOL;
- 17 zeigt ein Flussdiagramm des Ablaufs eines MDKC und eines RDKC in Antwort auf einen Schreibbefehl von einem Host-Rechner;
- 18 zeigt ein Flussdiagramm der Verarbeitung eines MDKC und eines RDKC in Antwort auf einen Schreibbefehl zwischen MDKC und RDKC;
- 19 zeigt die Folge von Verarbeitungen in Antwort auf einen Lesebefehl für ein PVOL vom Host-Rechner;
- 20 zeigt eine Folge von Verarbeitungen in Antwort auf einen Lesebefehl an ein SVOL von einem Host-Rechner;
- 21 zeigt ein Flussdiagramm der Verarbeitung eines MDKC10M und eines RDKC1R in Antwort auf einen Lesebefehl von einem Host-Rechner;
- 22 zeigt Beziehungen zwischen Kopplungsstatus eines HA-Volumenpaars und Ausschlusstypen von E/A-Zugriffen auf das PVOL und das SVOL;
- 23 ist ein Flussdiagramm der Verarbeitung eines Nachfolger-MPPK, um einen Schreibbefehl für ein Schreiben an ein SVOL zu senden;
- 24 zeigt einen Ablauf des Sendens eines Ausschluss-Festlegungsfreigabebefehls zusammen mit Schreibdaten;
- 25 zeigt eine Folge von Verarbeitungen für das Schreiben von einem Host-Rechner an ein PVOL einschließlich einer ausschließenden Sperre für einen Job durch ein RDKC 10R;
- 26 zeigt eine Folge von Verarbeitungen für ein Schreiben von einem Host-Rechner an ein SVOL einschließlich einer ausschließenden Sperre für einen Job durch ein RDKC;
- 27 zeigt ein Flussdiagramm einer Verarbeitung eines MDKC und eines RDKC in Antwort auf einen Schreibbefehl von einem Host-Rechner, das den Abfolgen der 25 und 26 entspricht; und
- 28 zeigt ein Flussdiagramm von Verarbeitungen eines MDKC und eines RDKC in Antwort auf einen Schreibbefehl zwischen dem MDKC und dem RDKC, das den Abfolgen der 25 und 26 entspricht.
-
GENAUE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Nachfolgend werden Ausführungsformen der Erfindung bezugnehmend auf die beiliegenden Zeichnungen beschrieben. Es wird darauf verwiesen, dass die Ausführungsformen lediglich Beispiele zur Umsetzung der Erfindung sind und den technischen Bereich der Erfindung nicht begrenzen. In den Zeichnungen sind gemeinsame Elemente mit gleichen Bezugszeichen versehen.
-
1A und 1B sind Diagramme, die einen Überblick über eine Ausführungsform darstellen. Die in den 1A und 1B beschriebene Konfiguration weist einen Host-Rechner 180A, einen Host-Rechner 180B, eine Speichervorrichtung 10A und eine Speichervorrichtung 10B; die Speichervorrichtungen 10A und 10B stellen den Host-Rechnern 180A und 180B eine virtuelle Speichervorrichtung 15 zur Verfügung.
-
Ein Volumen 161A, das ein Volumen der Speichervorrichtung 10A ist, und ein Volumen 161B, das ein Volumen der Speichervorrichtung 10B ist, speichern die gleichen Daten und zeigen den Hosts die gleiche ID; sie werden als einzelnes virtuelles Volumen 151 der virtuellen Speichervorrichtung 15 angesehen, das den Hosts darzubieten ist. In der folgenden Beschreibung sind Elemente, die nicht mit dem Begriff „virtuell“ bezeichnet sind, reale Elemente, soweit nicht anders festgelegt.
-
Die Host-Rechner 180A und 180B senden Lese-/Schreib-Befehle für ein einzelnes virtuelles Volumen 151; tatsächlich können die Befehle an eines der Volumina 161A und 161B gerichtet werden. Solch ein Volumenpaar 161A und 161B werden als Aktiv-Aktiv-Hochverfügbarkeits(HA)-Volumenpaar oder als HA-Paar bezeichnet; eine Konfiguration mit einem HA-Paar, wie in 1A und 1B gezeigt, wird als HA-Konfiguration bezeichnet.
-
In der folgenden Beschreibung bezeichnet eine HA-Konfiguration und ein HA-Paar eine Aktiv-Aktiv-HA-Konfiguration und ein Aktiv-Aktiv-HA-Paar. Ein HA-Paar weist ein Primärvolumen (PVOL) und ein Sekundärvolumen (SVOL) auf; in dieser Beschreibung ist das Volumen 161A ein PVOL und das Volumen 161B ein SVOL. Die Speichervorrichtung 10A, die ein PVOL bereitstellt, wird als Hauptplattensteuerung (MDKC) bezeichnet, die Speichervorrichtung 10B, die ein SVOL bereitstellt, wird als entfernte Plattensteuerung (RDKC) bezeichnet.
-
Es sei darauf hingewiesen, dass eine Speichervorrichtung ein PVOL und ein SVOL zweier unterschiedlicher HA-Volumenpaare aufweisen kann. Ein Speichervorrichtung kann gleichzeitig als MDKC und als RDKC arbeiten in Abhängigkeit von der Volumenart der HA-Volumenpaarung. Im Folgenden werden unter Verwendung der 1A und 1B Überblicke von Verarbeitungen beschrieben, wenn ein Schreibbefehl und ein Lesebefehl für ein PVOL und ein SVOL von einem Host ausgegeben werden. Das Datenschreiben in ein Volumen und das Datenlesen von einem Volumen bedeuten das Schreiben in oder das Lesen von einem Cache oder einem Speicherlaufwerk.
-
1A zeigt den Überblick eines Verarbeitungsflusses, wenn vom Host-Rechner 180A ein Schreibbefehl an ein Volumen 161A eines PVOL gerichtet ist.
-
I. Die Speichervorrichtung 10A empfängt Daten, die mit einem Schreibbefehl vom Host-Rechner 180A übertragen wurden. II. Die Speichervorrichtung 10A erhält Ausschließlichkeit an der Schreibadresse im Volumen 161A und schreibt die Daten in das Volumen 161A. III. die Speichervorrichtung 10A überträgt die Daten mit einem Schreibbefehl an die Speichervorrichtung 10B, um die Daten im Volumen 161B eines SVOL zu speichern.
-
IV. Die Speichervorrichtung 10B, die den Schreibbefehl und die Daten empfangen hat, speichert die Daten im Volumen 161B. V. Die Speichervorrichtung 10B sendet einen Vervollständigungsbericht des Schreibens an die Speichervorrichtung 10A. VI. Die Speichervorrichtung 10A hebt die bei II. erhaltene Ausschließlichkeit auf. VII. Die Speichervorrichtung 10A sendet einen Schreib-Vervollständigungsbericht an den Host-Rechner 180A.
-
Auf diese Weise erhält auf den Empfang eines Schreibbefehls für ein PVOL hin die MDKC Ausschließlichkeit für den Schreibadressbereich, schreibt in das PVOL, instruiert den RDKC zum Schreiben in das SVOL, hebt die Ausschließlichkeit nach Vervollständigung des Schreibens in das SVOL auf und antwortet dem Host. Die Details werden später beschrieben. Wenn der Schreibbefehl seitens des SVOL empfangen wird, erhält der MDKC Ausschließlichkeit, schreibt zuerst in das PVOL und danach in das SVOL und hebt die Ausschließlichkeit zur Durchführung der Schreibverarbeitung auf. Eine Job-Ausschluss-Steuerung für Schreibverarbeitungen verhindert andere Schreibverarbeitungen und Leseverarbeitungen für den Schreibbereich. Demzufolge kann die Konsistenz zwischen PVOL und SVOL ordnungsgemäß beibehalten werden.
-
1B zeigt Überblicke über Verarbeitungsabläufe in den Fällen, in denen der Host-Rechner 180A einen Lesebefehl für das Volumen 161A eines PVOL und der Host-Rechner 180B einen Lesebefehl für das Volumen 161B eines SVOL ausgeben. Auf den Empfang einer E/A-Anfrage hin liest die Speichervorrichtung 10B, die die Leseanfrage für das Volumen 161B empfangen hat, Daten vom Volumen 161B und schickt diese Daten an den Host-Rechner 180B zurück. In diesem Fall besteht keine Notwendigkeit, mit der Speichervorrichtung 10A zu kommunizieren.
-
Wenn die Speichervorrichtung 10A eine Leseanfrage für das Volumen 161A empfangen hat, prüft sie, ob der Datenspeicherbereich, der durch die Leseanfrage der 1A bezeichnet ist, mit einer bezugnehmend auf 1A beschriebenen Ausschließlichkeit belegt ist, und wenn die Schreibadresse nicht gesperrt ist, liest sie die Daten vom Volumen 161A und gibt sie an den Host-Rechner 180A zurück. Wenn die Schreibadresse gesperrt ist, wartet die Speichervorrichtung 10A eine vorbestimmte Zeitdauer und prüft dann abermals, ob die Schreibadresse gesperrt ist. Wenn vom Volumen 161A eines PVOL gelesen werden soll, besteht keine Notwendigkeit der Kommunikation zwischen den Speichervorrichtungen 10A und 10B.
-
Wenngleich Details einer Job-Ausschluss-Steuerung bei Lesevorgängen später beschrieben werden, sei schon angemerkt, dass die Job-Ausschluss-Steuerung bei Lesevorgängen für den Speicherbereich Schreibvorgänge verhindert, aber nicht andere Lesevorgänge für den Bereich verhindern muss. Das Zulassen von Lesevorgängen reduziert die Verzögerung in der Verarbeitung anderer Befehle.
-
In den letzten Jahren hat die Wichtigkeit von Wiederherstellungen nach Unglücken wie etwa einem Erdbeben zugenommen. Eine HA-Konfiguration ergibt eine hohe Verfügbarkeit des Speichersystems. Die HA-Konfiguration hat ein dupliziertes System; sie erlaubt die automatische Entfernung eines fehlerhaften Systems, wenn ein Fehler auftritt, um den Betrieb lediglich mit dem normal arbeitenden System fortzusetzen. Die Aktiv-Aktiv-HA-Konfiguration mit duplizierten Speichervorrichtungen wird zunehmend in Hinblick auf Wiederherstellung nach Unglücken und effektiver Ressourcenverwendung verlangt.
-
Die Aktiv-Aktiv-HA-Konfiguration verwendet alle Systeme als aktive Systeme. Bei der Aktiv-Aktiv-HA-Konfiguration kann das Informationssystem Eingabe-/Ausgabe-Zugriffe zu beiden Volumina eines Volumenpaars von einem Host her akzeptieren und erreicht auf diese Weise eine effektive Verwendung der Ressourcen wie Bandbreite der Wege, Verarbeitungsfähigkeit der Speichersteuerungen und Verarbeitungsfähigkeit der Laufwerke.
-
Damit ein E/A-Zugriff auf eines der gepaarten Volumina akzeptiert wird, ist es nötig, zu verhindern, dass alte Daten gelesen werden, nachdem neue Daten gelesen wurden, wenn auf ein PVOL oder ein SVOL zugegriffen wurde. Dies ist nötig, da ein unbeabsichtigter Rückgriff, der Daten in umgekehrter Reihenfolge liest, im Host eine Fehlfunktion verursachen kann.
-
Als Beispiel zur Lösung dieses Problems verwendet diese Ausführungsform eine Job-Ausschluss-Steuerung für PVOLs für E/A-Zugriffe auf PVOLs, und wendet keine Job-Ausschluss-Steuerung für E/A-Zugriffe auf SVOLs an. Die Job-Ausschluss-Steuerung für ein PVOL kann die Konsistenz zwischen PVOL und dem SVOL bezüglich eines Befehls von einem Host ordnungsgemäß sicherstellen, und das Vermeiden der Ausschlusssteuerung für das SVOL erzielt eine effiziente Verarbeitung.
-
Diese Ausführungsform verwendet die Annahme, dass der duplizierte Speicher im Hinblick auf Wiederherstellung nach Unglücken an einer anderen Stelle installiert ist und dass die zwei Stellen über 100 km voneinander entfernt sind. Dementsprechend sind Kommunikationen zwischen den Stellen etwa 1 ms verzögert. Aus diesem Grund ist es notwendig, Kommunikationen zwischen den Stellen für die E/A-Synchronisierung als Antwort auf Schreib- und Lesebefehle zu verringern. Bei einer Host-Leseverarbeitung in dieser Ausführungsform geben der MDKC oder der RDKC Daten zurück, die von einem PVOL oder einem SVOL gelesen wurden, ohne dass Kommunikationen zwischen den Speichervorrichtungen stattfinden. Da die Kommunikationen zwischen den Speichervorrichtungen unnötig sind, können Verzögerungen in der Verarbeitung eines Lesebefehls von einem Host vermieden werden.
-
Die Zunahme der Datenmenge bewirkt auch die Vergrößerung des Systemmaßstabs wie oben beschrieben; benötigt ist die Umsetzung mit weniger Gerätschaften, um für den Systemaufbau und die Systemverwaltung geringere Kosten zu erreichen. Diese Ausführungsform erreicht eine Aktiv-Aktiv-HA-Konfiguration ohne besondere Vorrichtungen wie etwa Hilfsgerätschaften.
-
2 zeigt ein Konfigurationsbeispiel eines Computersystems mit dem Informationssystem dieser Ausführungsform. Das Computersystem in 2 weist zwei Host-Computer 180A und 180B auf, Speichervorrichtungen 10A bis 10C und einen Verwaltungscomputer 20. Die Speichervorrichtungen 10A bis 10C sind im Informationssystem enthalten; die Host-Computer 180A und 180B greifen auf das Informationssystem zu; der Verwaltungscomputer 20 verwaltet das Informationssystem.
-
Die Anzahl jeder Art von Vorrichtungen (Systemen), die in dem Computersystem enthalten sind, hängt vom Entwurf ab. Die Speichervorrichtungen 10A und 10B bilden ein Aktiv-Aktiv-HA-Speicherpaar und bilden eine virtuelle Speichervorrichtung. Die Speichervorrichtungen 10A und 10B bilden gleichermaßen eine virtuelle Speichervorrichtung für die Host-Computer 180A und 180B. Im folgenden Beispiel stellen die Speichervorrichtungen 10A und 10B eine einzelne virtuelle Speichervorrichtung dar.
-
Die Speichervorrichtung 10C hat eine Quorum-Platte. Die Quorum-Platte ermöglicht eine Funktion des Bestimmens, wenn Kommunikationen zwischen den Speichervorrichtungen 10A und 10B in der HA-Konfiguration nicht möglich sind, der in Arbeit gehaltenen Speichervorrichtung und der unterbrochenen Speichervorrichtung.
-
Insbesondere schreibt jede der Speichervorrichtungen 10A und 10B die Zustände der Speichervorrichtung und den jeweiligen Status ihrer Kommunikationen mit der anderen Speichervorrichtung in die Quorum-Platte. Jede Speichervorrichtung fragt die Quorum-Platte periodisch ab oder synchron zu jeder E/A-Antwort und bestimmt, welche Speichervorrichtung in Arbeit gehalten wird und welche angehalten wird, auf der Grundlage der auf die Quorum-Platte geschriebenen Informationen.
-
Die Host-Rechner 180A und 180B, der Verwaltungscomputer 20 und die Speichervorrichtungen 10A bis 10C sind miteinander so verbunden, dass sie über ein Verwaltungsnetzwerk verbunden sind, das mit einem LAN 195 gebildet ist. Das Verwaltungsnetzwerk 195 ist beispielsweise ein IP-Netzwerk. Das Verwaltungsnetzwerk 195 kann ein beliebiges Netzwerk sein, soweit es ein Netzwerk zur Verwaltung der Datenkommunikation ist.
-
Die Host-Rechner 180A und 180B und die Speichervorrichtungen 10A bis 10C sind mit einem Datennetzwerk verbunden, das mit einem Speichernetzwerk (SAN) 190 konfiguriert ist. Die Host-Rechner 180A und 180B greifen über das SAN 190 auf die Volumina der Speichervorrichtungen 10A und 10B zu. Die Speichervorrichtungen 10A bis 10C kommunizieren untereinander über das SAN 190.
-
Das Datennetzwerk 190 kann ein beliebiges Netzwerk sein, soweit es ein Netzwerk für Datenkommunikation ist. Das Datennetzwerk 190 und das Verwaltungsnetzwerk 195 können das gleiche Netzwerk sein.
-
3 zeigt schematisch ein Hardware-Konfigurationsbeispiel eines Host-Rechners 180 und einer Speichervorrichtung 10. Der Host-Rechner 180 und die Speichervorrichtung 10 stellen jeweils einen der Host-Computer und eine der Speichervorrichtungen im Computersystem dar.
-
Der Host-Rechner 180 weist eine Sekundärspeichervorrichtung 181 auf, eine CPU 182 eines Prozessors, einen Speicher 183 einer Primärspeichervorrichtung, eine Eingabevorrichtung 184, eine Anzeigevorrichtung 185 einer Ausgabevorrichtung, ein I/F 186 und Ports 187. Diese sind über ein internes Netzwerk miteinander verbunden. Der Verwaltungsrechner 20 kann die gleiche Hardware-Konfiguration haben.
-
Die CPU 182 führt Programme aus, die im Speicher 183 gespeichert sind, um verschiedene Verarbeitungen auszuführen. Beispielsweise speichert der Speicher 183 ein OS, ein Pfadumschaltprogramm und ein Anwendungsprogramm. Das Anwendungsprogramm liest und schreibt Daten von und in die Volumina, die von der Speichervorrichtung 10 bereitgestellt sind. Das Pfadumschaltprogramm wählt einen Pfad zu einem realen Volumen, auf das zugegriffen werden soll, unter den einem virtuellen Volumen zugeordneten Pfaden.
-
Die Ports 187 sind Netzwerkschnittstellen zur Verbindung mit dem SAN 190. Die Ports 187 kommunizieren Daten und Anfragen mit der Speichervorrichtung 10 über das SAN 190. Die Schnittstelle 186 ist eine Netzwerkschnittstelle zur Verbindung mit dem LAN 195. Die Schnittstelle 186 kommuniziert Verwaltungsdaten und Steuerungsbefehle mit dem Verwaltungsrechner 20 und der physischen Speichervorrichtung 10 über LAN 195. Die Speichervorrichtung 10 nimmt mehrere Speicherlaufwerke 170 auf. Die Speicherlaufwerke 170 sind beispielsweise HDDs mit nichtflüchtigen Magnetplatten oder SSDs mit nichtflüchtigen Halbleiterspeichern (wie etwa Flash-Speichern). Mit diesen Speicherlaufwerken 170 sind Volumina wie etwa das Volumen 161 konfiguriert.
-
Jedes Speicherlaufwerk 170 speichert Daten (Anwenderdaten), die von einem Host oder von einer anderen Speichervorrichtung gesendet wurden. Mehrere Speicherlaufwerke 170 bieten Redundanz der Daten über eine RAID-Verarbeitung, um Datenverluste im Falle des Auftretens eines Fehlers in einem der Speicherlaufwerke 170 zu vermeiden.
-
Die Speichervorrichtung 10 weist einen Vorderzugang (FEPK) 100 auf zur Verbindung mit externen Vorrichtungen über das SAN 190. Im Computersystem dieses Beispiels sind die externen Vorrichtungen Hosts und Speichervorrichtungen.
-
Die Speichervorrichtung 10 weist außerdem einen Hinterzugang (BEPK) 140 auf zum Verbinden mit Speicherlaufwerken 170, einen Cache-Speicherzugang (CMPK) 130, in dem Cache-Speicher angebracht sind, einen Mikroprozessorzugang (MPPK) 120, in dem Mikroprozessoren angebracht sind zur Ausführung interner Verarbeitungen, und ein internes Netzwerk 150 zur Verbindung.
-
Die Speichervorrichtung 10 dieses Beispiels weist mehrere FEPKs 100 auf, mehrere BEPKs 140, mehrere CMPKs 130 und mehrere MPPKs 120. Die Speichervorrichtung 10 kann außerdem einen Verwaltungsprozessor aufweisen, der als Schnittstelle dient, die für die Kommunikation mit dem Verwaltungsrechner 20 verwendet wird.
-
Jeder FEPK 100 weist eine Schnittstelle 101 auf zur Verbindung mit externen Vorrichtungen und eine Übertragungsschaltung 112 zum Übertragen von Daten innerhalb der Speichervorrichtung 10 auf einer Platine. Die Schnittstelle 101 kann mehrere Ports aufweisen; jeder Port kann mit einer externen Vorrichtung verbunden werden. Die Schnittstelle 101 wandelt ein Protokoll, das in der Datenkommunikation zwischen einer externen Vorrichtung und der Speichervorrichtung 10 verwendet wird, wie etwa Fibre-Channel über Ethernet (FCoE), in ein Protokoll um, das im internen Netzwerk 150 verwendet wird, wie etwa PCI-Express. Das FEPK 100 weist außerdem einen Puffer 113 auf. Der Puffer ist ein Bereich zum zeitweisen Speichern von Daten, die vom Host-Rechner 180 empfangen wurden, und wird aus einem Speichermedium wie etwa einem DRAM gebildet.
-
Jeder BEPK 140 weist eine Schnittstelle 141 auf zum Verbinden mit Laufwerken 170 und eine Übertragungsschaltung 142 zum Übertragen von Daten innerhalb der Speichervorrichtung 10 auf einer Platine. Die Schnittstelle 141 wandelt ein Protokoll, das in der Kommunikation zwischen den Speicherlaufwerken 170 verwendet wird, wie etwa FC, in ein Protokoll um, das im internen Netzwerk 150 verwendet wird.
-
Jeder CMPK 130 weist einen Cache-Speicher (CM) 131 auf zum zeitweisen Speichern von Benutzerdaten und einen geteilten Speicher (SM) 132 zum Speichern von Steuerungsinformationen, die von einem oder mehreren MPPKs 120 gehandhabt werden, auf einer Platine.
-
Mehrere MPPKs 120 (die Mikroprozessoren darin), zugeordnet zu unterschiedlichen Volumina, können auf den geteilten Speicher 132 zugreifen. Die Daten und Programme, die von den MPPKs 120 gehandhabt werden, werden von (nicht gezeigten) nichtflüchtigen Speichern oder Speicherlaufwerken 170 in der Speichervorrichtung 10 geladen.
-
Jeder MPPK 120 weist einen oder mehrere Mikroprozessoren 121 auf, einen lokalen Speicher (LM) 122 und einen Bus 123 zur wechselseitigen Verbindung. Der MPPK 120 in diesem Beispiel weist mehrere Mikroprozessoren 121 auf. Die Anzahl der Mikroprozessoren 121 kann eins sein. Der lokale Speicher 122 speichert Programme, die von den Mikroprozessoren 121 ausgeführt werden sollen, und Steuerungsinformationen, die von den Mikroprozessoren 121 verwendet werden sollen.
-
Wie oben beschrieben speichert ein geteilter Speicher 132 Steuerungsinformationen, die von mehrere MPPKs 120 gehandhabt werden. Ein MPPK 120 lädt Steuerungsinformationen, die für ihn selbst nötig sind, in seinen eigenen lokalen Speicher 122.
-
In diesem Konfigurationsbeispiel ist jeder MPPK 120 (jeder Mikroprozessor 121 darin) Volumina zugeordnet, die von der Speichervorrichtung 10 für die Host-Rechner 180A und 180B bereitgestellt werden. Der lokale Speicher 122 und der geteilte Speicher 132, der dem MPPK 120 zugeordnet ist, speichern die Steuerungsinformationen auf den Volumina, für die der MPPK 120 ein zugeordneter E/A ist.
-
4 zeigt ein Beispiel einer virtuellen Konfiguration, die einem Host-Rechner 180 durch die Speichervorrichtungen 10A und 10B dargeboten wird. Die Speichervorrichtungen 10A und 10B haben Ziel-Ports 102A und 102B. Der Ziel-Port 102A ist den Volumina 161A, 162A und 163 zugeordnet. Der Ziel-Port 102B ist den Volumina 161B, 162B und 164 zugeordnet.
-
Die Volumina können sogenannte LDEVs sein, die Volumenkapazitäten gleich den tatsächlichen Größen haben oder schlank zugewiesene Volumina, denen Seiten aus einem Pool zugeordnet sind. Alle Volumina können mit Speichermedien konfiguriert sein, die in nicht gezeigten anderen Speichervorrichtungen enthalten sind. Wenn in diesem Fall ein Host-Rechner auf ein solches Volumen zugreift, kommuniziert die angegangene Speichervorrichtung mit der anderen Speichervorrichtung, die das Speichermedium enthält und antwortet an den Host-Rechner.
-
Die Speichervorrichtungen 10A und 10B stellen eine virtuelle Speichervorrichtung 15 für den Host-Rechner 180 zur Verfügung. Für den Host-Rechner 180 ist die Seriennummer (S/N) der virtuellen Speichervorrichtung 15 XXX. Die Speichervorrichtungen 10A und 10B haben ihre eigenen Seriennummern AAA und BBB. Der Host-Rechner 180 erkennt die virtuelle Speichervorrichtung 15 als eine Speichervorrichtung, die eine Seriennummer XXX und die Ziel-Ports 102A und 102B hat. Seriennummern sind Identifizierungen von Speichervorrichtungen und virtuellen Speichervorrichtungen.
-
Die Volumina 161A und 161B bilden ein HA-Volumenpaar und dienen als ein einzelnes virtuelles Volumen 151. Die IDs der Volumina 161A und 161B sind 10:00 und 30:00. Die ID des virtuellen Volumens 151 ist 20:00.
-
Die Volumina 162A und 162B bilden ein HA-Volumenpaar und dienen als ein einzelnes virtuelles Volumen 152. Die IDs der Volumina 162A und 162B sind 10:01 und 30:01. Die ID des virtuellen Volumens 152 ist 20:01.
-
Die Volumina 163 und 164 dienen als virtuelle Volumina 153 und 154. Die IDs der Volumina 163 und 164 sind 10:02 und 30:02. Die IDs der virtuellen Volumina 153 und 154 sind 20:02 und 20:03.
-
Der Host-Rechner 180 erkennt, dass die virtuellen Volumina 151 bis 154 durch die virtuelle Speichervorrichtung 15 bereitgestellt werden und dass ihre IDs 20:00 bis 20:03 sind. Der Host-Rechner 180 kann die virtuellen Volumina 151 und 152 über die jeweiligen Zielports 102A bzw. 102B ansprechen. Der Host-Rechner 180 greift auf das virtuelle Volumen 153 lediglich über den Zielport 102A zu und greift auf das virtuelle Volumen 154 lediglich über den Zielport 102B zu.
-
5 zeigt die Informationen, die in einem geteilten Speicher 132 in einem CMPK 130 einer Speichervorrichtung 10 gehalten sind. Der geteilte Speicher 132 hält eine VOL-Zuweisungsinformations-Verwaltungstabelle 210, eine HA-Volumenpaar-Verwaltungstabelle 220, eine LU-Pfadverwaltungstabelle 230, eine VOL-Verwaltungstabelle 240, eine PG-Verwaltungstabelle 250 und eine Cache-Seiten-Verwaltungstabelle 270. Auf den geteilten Speicher 132 können mehrere MPPKs 120 zugreifen.
-
6 zeigt Informationen, die im lokalen Speicher 122 in einem MPPK 120 einer Speichervorrichtung gehalten sind. Der lokale Speicher 122 hält eine Job-Verwaltungstabelle 260.
-
Im Folgenden werden Konfigurationsbeispiele der oben genannten Tabellen beschrieben. Die Zeichnungen, die in der folgenden Beschreibung angesprochen werden, zeigen Tabellen in der Speichervorrichtung 10A. 7 zeigt ein Konfigurationsbeispiel einer VOL-Zuordnungsinformations-Verwaltungstabelle 210. Die VOL-Zuordnungsinformations-Verwaltungstabelle 210 verknüpft reale Konfigurationsinformationen der in der Speichervorrichtung 10A enthaltenen Volumina mit virtuellen Konfigurationsinformationen derselben. Insbesondere weist die VOL-Zuordnungsinformations-Verwaltungstabelle 210 eine Spalte 211 der Volumen-IDs auf, eine Spalte 212 der IDs der virtuellen Volumen, eine Spalte 213 der Seriennummern (Identifizierungen) der virtuellen Speichervorrichtungen, und eine Spalte 214 eines HA-Flags.
-
Jeder Eintrag zeigt eine ID eines virtuellen Volumens an, die mit einem Volumen verknüpft ist, eine ID einer virtuellen Speichervorrichtung, die das virtuelle Volumen bereitstellt, und ob das Volumen eines eines HA-Volumenpaars ist. Wenn der Wert in der Spalte des HA-Flags AN ist, bildet das Volumen ein HA-Volumenpaar mit einem anderen Volumen.
-
8 zeigt ein Konfigurationsbeispiel einer HA-Volumenpaar-Verwaltungstabelle 220. Die HA-Volumenpaar-Verwaltungstabelle 220 hält Verwaltungsinformationen zu HA-Volumenpaaren. Insbesondere weist die HA-Volumenpaar-Verwaltungstabelle 220 eine Spalte 221 von IDs von HA-Volumenpaaren auf, eine Spalte 222, die die Statusinformationen des HA-Volumenpaars angibt, eine Spalte 223 der IDs der PVOLs auf dem HA-Volumenpaar, und eine Spalte 224, die Identifizierungen der die PVOLs bildenden MDKCs speichert.
-
Die HA-Volumenpaar-Verwaltungstabelle 220 weist außerdem eine Spalte 225 von IDs der SVOLs des HA-Volumenpaars auf und eine Spalte 226, die Identifizierungen der die SVOLs bereitstellenden RDKCs speichert. In jedem Eintrag ist das PVOL oder das SVOL ein Volumen, das von der Speichervorrichtung 10A bereitgestellt wird, die diese Tabelle hält.
-
Beispiele des Paarstatus' umfassen COPY, PAIR und SUSPENDED. Der Status COPY ist ein Status, während dessen Daten von einem Volumen eines HA-Volumenpaars in das andere kopiert werden. Der Status PAIR ist eine Status, während dessen die zwei Volumen des HA-Volumenpaars synchronisiert sind. Der Status SUSPENDED ist ein Status, während dessen die zwei Volumina eines HA-Volumenpaars nicht synchronisiert sind.
-
9 zeigt ein Konfigurationsbeispiel einer LU-Pfadverwaltungstabelle 230. Die LU-Pfadverwaltungstabelle 230 verwaltet Ports und Volumina, die mit LUNs verknüpft sind. Insbesondere weist die LU-Pfadverwaltungstabelle 230 eine Spalte 231 von Port-IDs auf, eine Spalte 232 von LUNs und eine Spalte 233 von Volumen-IDs.
-
10 zeigt ein Konfigurationsbeispiel der VOL-Verwaltungstabelle 240. Die VOL-Verwaltungstabelle 240 hält charakteristische Informationen zu Volumina. Insbesondere weist die VOL-Verwaltungstabelle 240 eine Spalte 241 von Volumen-IDs auf, eine Spalte 242, die die Größen der Volumina angibt, und eine Spalte 243 von Paritätsgruppen (PGs), die den Volumina physische Speicherbereiche zur Verfügung stellen. Die Paritätsgruppen werden auch als RAID-Gruppen angesprochen.
-
11 zeigt ein Konfigurationsbeispiel einer PG-Verwaltungstabelle 250. Die PG-Verwaltungstabelle 250 verwaltet Kennwerte von Paritätsgruppen. Insbesondere weist die PG-Gruppen-Verwaltungstabelle 250 eine Spalte 251 von IDs der Paritätsgruppen auf, eine Spalte 252, die Arten der Paritätsgruppen angibt, eine Spalte 253, die Größen der Paritätsgruppen angibt, und eine Spalte 254, die die RAID-Level der Paritätsgruppen angibt.
-
12 zeigt ein Konfigurationsbeispiel der Cache-Seiten-Verwaltungstabelle 270. Die Cache-Seiten-Verwaltungstabelle 270 verwaltet Daten im Cache. Insbesondere speichert die Cache-Seiten-Verwaltungstabelle 270 Informationen zu Cache-Seiten (auch einfach als Seiten angesprochen), die Verwaltungseinheiten eines Caches sind. Jede Seite hat die gleiche Größe, eine Seitennummer bestimmt die Speicheradresse der Seite.
-
Die Seitennummerspalte 271 speichert Seitennummern. Die PG-ID-Spalte 272 und die PG-Adressenspalte 273 geben IDs der Paritätsgruppen an, die die in den Seiten gespeicherten Daten halten, und die Adressen der Daten in den Paritätsgruppen. Die VOL-ID-Spalte 274 und die VOL-Adressenspalte 275 geben IDs der Volumina an, die die in den Seiten gespeicherten Daten halten und Adressen der Daten in den Volumina.
-
Die SeitenstatusSeite 276 gibt den Status der Seiten an. Der Status FREE bedeutet, dass die Seite frei ist. Wenngleich in diesem Beispiel freie Seiten verwaltet werden, ist es nicht notwendig, verbleibende andere Seiten als die Seiten mit den anderen Statussen als freie Seiten zu verwalten. Der Status DIRTY bedeutet, dass die Daten der Seite nicht in eine Paritätsgruppe geschrieben wurden; dass also die Daten in der Seite nicht identisch sind mit den Daten in der Paritätsgruppe.
-
Der Status CLEAN eines PVOL ist anders als der Status CLEAN eines SVOL. CLEAN für ein PVO1 bedeutet, dass die Daten in der Seite in die Paritätsgruppe geschrieben wurden und auch in das SVOL geschrieben wurden (wenn eine Vervollständigungsantwort vom RDKC empfangen wurde). Das bedeutet, dass die Daten in der Seite identisch zu den Daten in der Paritätsgruppe sind. Der Status CLEAN für ein SVOL bedeutet, dass die Daten in der Seite in die Paritätsgruppe geschrieben wurden.
-
Der Status DUAL WRITING ist eine Status, den nur PVOLs haben können und bedeutet, dass die Daten in der Seite nicht in ein SVOL geschrieben wurden (eine Vervollständigungsantwort vom RDKC wurde nicht empfangen). Das bedeutet, dass die Daten im PVOL nicht identisch mit den Daten im SVOL sind.
-
13 zeigt ein Konfigurationsbeispiel der Job-Verwaltungstabelle 260. Die Job-Verwaltungstabelle 260 verwaltet Jobs, die von dem die Tabelle haltenden MPPK 120 ausgeführt werden. Jeder Job in diesem Beispiel ist ein Vorgang des Schreibens auf ein Volumen oder des Lesens von einem Volumen. Die Job-Verwaltungstabelle 260 hält Informationen zu den gerade ausgeführten Jobs und zu zukünftig auszuführenden Jobs. Die maximale Anzahl von Einträgen in der Job-Verwaltungstabelle 260 wird vorab bestimmt.
-
Die Jobnummer-Spalte 261 gibt Identifizierungen von Jobs an. Die Vorgangstyp-Spalte 262 gibt den Typ der Verarbeitung, die auszuführen ist, im jeweiligen Job an, insbesondere, ob es eine Verarbeitung auf einen Lesebefehl von einem Host-Rechner 180 her ist (HOST READ), oder eine Verarbeitung auf einen Schreibbefehl von einem Host-Computer 180 her (HOST WRITE), eine Verarbeitung auf einen Lesebefehl von einer anderen Speichervorrichtung (INTER-DKC READ), und eine Verarbeitung auf einen Schreibbefehl von einer anderen Speichervorrichtung her (INTER-DKC WRITE).
-
Die HA-P/S-Spalte 263 gibt an, ob das Zielvolumen eines jeden Jobs ein Volumen eines HA-Volumenpaars ist, und wenn es das Volumen eines HA-Volumenpaars ist, ob das Volumen ein PVOL oder ein SVOL ist.
-
Die VOL-ID-Spalte 264 gibt die ID des Zielvolumens eines jeden Jobs an. Die START-LBA-Spalte 265 und die LBA-LENGTH-Spalte 266 geben die Startadresse und die Datengröße (Adresslänge) des Volumens für die von dem Job gehandhabten Daten an.
-
Die Ausschlusstyp-Spalte 267 gibt an, ob der jeweilige Job eine ausschließliche Sperre erhalten hat, und wenn eine ausschließliche Sperre erhalten wurde, gibt sie die Art des Ausschlusses an. Die Ausschlussart RD SHARED bedeutet die Verhinderung des Schreibens auf den Adressbereich und erlaubt das Lesen von dem Bereich. Die Ausschlussart R/W EXCLUSIVE bedeutet das Verbot sowohl des Schreibens als auch des Lesens von dem Adressbereich.
-
Die Spalte 268 für Jobnummer und MPPK-Nummer speichert Daten in den Einträgen, die Vorgänge angeben, die auf einen Schreibbefehl für ein Schreiben auf ein SVOL von einem Host-Rechner 180 her antworten. Die Spalte 268 für Jobnummer und MPPK speichert Informationen zur Identifizierung des Jobs im MDKC des Schreibens des gepaarten PVOLO. Der Job kann mit einer Jobnummer und einer Nummer des MPPK (Identifizierung des MPPK) identifiziert werden, sodass er ausgeführt werden kann. Wie weiter unten beschrieben, ist die Jobidentifizierungsinformation in einem Ausschluss-Sperren-Freigabebefehl von einem RDKC an ein MDKC enthalten.
-
Das Ablaufdiagramm der 14 zeigt ein Verfahren des Bereitstellens von Informationen auf der virtuellen Speichervorrichtung 15 und den virtuellen Volumina 151 bis 154 für einen Host-Rechner 180. Der Host-Rechner 180 sendet eine Login-Anfrage an eine Speichervorrichtung 10 und schickt nach Erhalt einer Antwort einen REPORT-LUN-Befehl. Der REPORT-LUN-Befehl dient dem Abfragen einer Liste von Nummern logischer Einheiten (LUNs), die von dem Port aus zugänglich sind. Die Speichervorrichtung 10 greift auf die LU-Pfad-Verwaltungstabelle 230 zu und gibt eine Liste der zugänglichen LUNs (REPORT LUN RSP) zurück.
-
Der Host-Rechner 180 kann unter Verwendung eines INQUIRY-Befehls die Seriennummer der Speichervorrichtung 10 und die IDs der mit den LUNs assoziierten Volumina abfragen. Die Speichervorrichtung 10 bestimmt, ob bezugnehmend auf die LU-Pfadverwaltungstabelle 230 und die VOL-Zuordnungsinformation-Verwaltungstabelle 210 entsprechende virtuelle Elemente definiert wurden (S101).
-
Wenn entsprechende virtuelle Elemente (virtuelle Speichervorrichtung oder virtuelle Volumina) definiert wurden (S101: J), gibt die Speichervorrichtung 10 eine INQUIRY-Antwort einschließlich der Informationen bezüglich der virtuellen Elemente zurück (S102). Wenn keine entsprechenden Elemente definiert wurden (S101: N), gibt die Speichervorrichtung 10 eine INQUIRY-Antwort einschließlich Informationen bezüglich realer Elemente zurück (S103).
-
Wenn im Konfigurationsbeispiel der 4 der Host-Rechner 180 die Speichervorrichtung 10A (S/N: AAA) bittet, eine Mitteilung ihrer Seriennummer zu senden, gibt die Speichervorrichtung 10A, die die Bitte empfangen hat, die Seriennummer XXX der virtuellen Speichervorrichtung 15 an den Host-Rechner 180 zurück. Die Speichervorrichtung 10B gibt auch die Seriennummer XXX der virtuellen Speichervorrichtung 15 an den Host-Rechner 180 zurück.
-
Die Seriennummer der virtuellen Speichervorrichtung 15 ist den Speichervorrichtungen 10A und 10B, die ein HA-Speichervorrichtungspaar bilden, gemeinsam. Dies führt dazu, dass der Host-Rechner 180 die Speichervorrichtungen 10A und 10B als einzelne virtuelle Speichervorrichtungen 15 wahrnimmt.
-
Wenn der Host-Rechner 180 die Speichervorrichtung 10A bittet, eine Mitteilung betreffend Volumen-IDs (VOL-IDs) entsprechend den LUNs zu senden, sendet die Speichervorrichtung 10A in ähnlicher Weise die IDs (20:00 bis 20:02) der virtuellen Volumina 151 bis 153 an den Host-Rechner 180. Gleicherweise sendet die Speichervorrichtung 10B die IDs (20:00, 20:01 und 20:03) der virtuellen Volumina 151, 152 und 154 an den Host-Rechner 180.
-
Auf diese Weise erkennt der Host-Rechner 180 die virtuellen Volumina 151 bis 154 und außerdem zwei Pfade (Ports) für jedes der virtuellen Volumina 151 und 152, und einen Pfad (Port) für jedes der virtuellen Volumina 153 und 154.
-
Das Bilden eines HA-Volumenpaars wird beschrieben. Der Administrator bildet ein HA-Volumenpaar aus Volumina. Über den Verwaltungsrechner 20 weist der Administrator die Speichervorrichtungen 10A und 10B an, ein HA-Volumenpaar zu bilden.
-
Eines der HA-Volumenpaare ist als PVOL definiert und das andere ist als SVOL definiert. Der Administrator kann das PVOL und das SVOL über den Verwaltungsrechner 20 definieren. Wie weiter unten beschrieben wird, ist die Verarbeitung von Zugriffen vom Host-Rechner 180 unterschiedlich zwischen Zugriff auf PVOLs und Zugriff auf SVOLs. Auf die Bildung eines HA-Volumenpaars hin fügen die Speichervorrichtungen 10A und 10B der HA-Volumenpaar-Verwaltungstabelle 220 einen neuen Eintrag hinzu.
-
Außerdem werden virtuelle Informationen, die HA-Volumenpaaren gemeinsam sind, definiert. Der Administrator der Speichervorrichtungen 10A und 10B definiert eine dem HA-Volumenpaar gemeinsame ID eines virtuellen Volumens. Die Speichervorrichtungen 10A und 10B fügen ihren VOL-Zuordnungsinformations-Verwaltungstabellen 210 einen neuen Eintrag einschließlich der definierten virtuellen Information hinzu.
-
Nach Beendigung der Definition des HA-Volumenpaars beginnen die Speichervorrichtungen 10A und 10B das anfängliche Kopieren vom PVOL auf das SVOL. Nach Beendigung des anfänglichen Datenkopierens haben die beiden Volumina die gleichen Daten und sind zueinander synchron. Dies bedeutet, dass jede der Speichervorrichtungen 10A und 10B einen Schreibbefehl vom Host-Rechner 180 erhält, dass sie den Schreibbefehl und die Schreibdaten untereinander kommunizieren und ihr eigenes PVOL bzw. SVOL aktualisieren, sodass die Konsistenz zwischen den Volumina beibehalten wird.
-
Wie weiter unten beschrieben, geben die Speichervorrichtungen 10A und 10B auf einen Lesebefehl vom Host-Rechner 180 her, die Daten in ihren eigenen Volumina an den Host-Rechner 180 zurück, ohne mit der anderen Speichervorrichtung zu kommunizieren, sodass Verarbeitungsverzögerungen minimiert sind.
-
Wenn eine der Speichervorrichtungen 10A und 10B fehlerhaft wird und nicht auf einen E/A-Zugriff vom Host-Rechner 180 her antworten kann, verarbeitet die andere, normal arbeitende Speichervorrichtung, die den Fehler erkannt hat, alle E/A-Zugriffe vom Host-Rechner 180.
-
Wenn in einem Volumen einer der Speichervorrichtungen ein Fehler auftritt, aber beide Speichervorrichtungen 10A und 10B mit dem Host-Rechner 180 kommunizieren können, überträgt die Speichervorrichtung mit dem fehlerhaften Volumen Befehle vom Host-Rechner 180 an die andere Speichervorrichtung.
-
Beispielsweise wird angenommen, dass in einem Volumen der Speichervorrichtung 10B ein Fehler auftritt. Die Speichervorrichtung 10B überträgt einen Schreibbefehl vom Host-Rechner 180 her an die Speichervorrichtung 10A, und die Speichervorrichtung 10A führt ein Schreiben in ihr eigenes Volumen aus. Die Speichervorrichtung 10B gibt eine Schreib-Vervollständigungs-Antwort an den Host-Rechner 180 aus. Die Speichervorrichtung 10B gibt auch gelesene Daten, die sie von der Speichervorrichtung 10A empfangen hat, an den Host-Rechner 180 aus. Das gleiche gilt für den Fall, dass ein Fehler in einem Volumen der Speichervorrichtung 10A auftritt, abgesehen davon, dass jede Maßnahme, die vorher von der Speichervorrichtung 10A oder 10B ausgeführt wurde, von der jeweils anderen Speichervorrichtung vollzogen wird.
-
Auf diese Weise bietet das Informationssystem hohe Verfügbarkeit und kann außerdem im Falle eines Fehlers unterschiedliche Rollen für PVOLS und SVOLs definieren. Wenn beispielsweise in der Kommunikation zwischen den Speichervorrichtungen 10A und 10B ein Fehler auftritt, akzeptiert das Informationssystem einen E/A-Zugriff vom Host-Rechner 180 auf PVOLs und blockiert den E/A-Zugriff auf SVOLs. Durch diesen Vorgang kann die Datenkonsistenz im virtuellen Volumen beibehalten werden.
-
Die Speichervorrichtungen 10A und 10B können einen Fehler in der anderen Vorrichtung oder in der Kommunikation zwischen den Speichervorrichtungen 10A und 10B anhand der Quorum-Platte und dem Status der Kommunikation zwischen den Speichervorrichtungen 10A und 10B erkennen.
-
15 zeigt eine Verarbeitungsabfolge für ein Schreiben von einem Host-Rechner 180 in ein PVOL. Der Host-Rechner 180 gibt einen Schreibbefehl (WR CMD) für ein Schreiben auf einen Bereich in einem virtuellen Volumen an den MDKC 10M aus. Der MDKC 10M erhält eine Ausschließlichkeitssperre für den durch den Schreibbefehl bestimmten Bereich im PVOL entsprechend dem virtuellen Volumen (S201).
-
Wenn der MDKC 10M fertig für den Datenempfang ist, gibt er eine Datenübertragungs-Bereit-Antwort (XFR RD) an den Host-Rechner 180 aus und empfängt die Schreibdaten (WR DAT) vom Host-Rechner 180. Der MDKC 10M schreibt die empfangenen Daten auf den Adressbereich im PVOL (S202). Wie oben beschrieben, ist ein Schreiben auf ein PVOL ein Schreiben in den Cache-Speicher (131), wenn die Cache-Schreibefunktion AN ist, oder ist ein Schreiben auf eine Paritätsgruppe (physischer Speicherbereich), wenn die Cache-Schreibefunktion AUS ist.
-
Der MDKC 10M schickt dem RDKC 10R einen Schreibbefehl (WR CMD) für ein Schreiben auf einen Bereich im SVOL, das mit dem PVOL gepaart ist, um ein HA-Volumenpaar zu bilden. Das SVOL kann mit einer Volumen-ID oder einer separat definierten LUN bestimmt werden. Der RDKC 10R gibt eine Datenübertragungs-Bereit-Antwort (XFR RD) an den MDKC 10M zurück und empfängt die Schreibdaten (WR DAT) vom MDKC 10M. Der RDKC 10R schreibt die empfangenen Schreibdaten auf einen Adressbereich im SVOL (S203). Das Schreiben auf das SVOL ist das gleiche wie das oben beschriebene Schreiben auf ein PVOL.
-
Auf das Beendigen des Datenschreibens auf den Adressbereich im SVOL gibt der RDKC 10R eine Schreibbeendigungsantwort (WR RSP) an den MDKC 10M zurück. Auf den Empfang der Schreibbeendigungsantwort vom RDKC 10R hin gibt der MDKC 10M eine Schreibbeendigungsantwort (WR RSP) an den Host-Rechner 180 zurück. Außerdem gibt der MDKC 10M die erhaltene Ausschließlichkeitssperre wieder frei (S204).
-
16 zeigt eine Verarbeitungsabfolge für ein Schreiben von einem Host-Rechner 180 auf ein SVOL. Der Host-Rechner 180 gibt einen Schreibbefehl (WR CMD) für ein Schreiben in einem virtuellen Volumen an den RDKC 10R aus.
-
Wenn der RDKC 10R fertig für den Datenempfang ist, gibt er eine Datenübertraguns-Bereit-Antwort (XFR RD) an den Host-Rechner 180 zurück und empfängt die Schreibdaten (WR DAT) vom Host-Rechner 180. Der RDKC 10R sendet an den MDKC 10M einen Schreibbefehl (WR CMD) für ein Schreiben auf einen Bereich im PVOL, das mit dem SVOL gepaart ist, um ein HA-Volumenpaar zu bilden. Der MDKC 10M erhält eine Ausschließlichkeitssperre für den Bereich im Volumen, der durch den Schreibbefehl bestimmt ist (S251). Danach gibt der MDKC 10M eine Datenübertragungs-Bereit-Antwort (XFR RD) an den RDKC 10R zurück und empfängt die Schreibdaten (WR DAT) vom RDKC 10R.
-
Der MDKC 10M schreibt die empfangenen Daten auf den bestimmten Bereich im PVOL (S252). Auf die Beendigung des Schreibens der Daten auf den Bereich im PVOL hin gibt der MDKC 10M eine Schreibbeendigungsantwort (WR RSP) an den RDKC 10R zurück.
-
Auf den Empfang der Schreibbeendigungsantwort vom MDKC 10M hin schreibt der RDKC 10R die Schreibdaten auf den bestimmten Bereich im SVOL (S253). Der RDKC 10R gibt eine Schreibbeendigungsantwort (WR RSP) an den Host-Rechner 180 zurück. Danach sendet der RDKC 10R einen Ausschließlichkeitssperre-Freigabebefehl, der den Job angibt, an den MDKC 10M. Der MDKC 10M gibt die erhaltene Ausschließlichkeitssperre frei (S254) und gibt an den RDKC 10R eine Antwort zurück, die anzeigt, dass die Ausschließlichkeitssperre für den angegebenen Job aufgehoben wurde.
-
17 ist ein Flussdiagramm, das Verarbeitungen des MDKC 10 und des RDKC 10R auf einen Schreibbefehl von einem Host-Rechner 180 her darstellt. In 17 führt der MDKC 10M die Schritte S301 bis S311 aus, und der RDKC 10R führt die Schritte 301, S302 und S312 bis S319 aus. Im folgenden Beispiel entspricht das Schreiben auf ein Volumen dem Schreiben von Schreibdaten in einen Cache-Speicher 131.
-
Als erstes wird die Verarbeitung im MDKC 10M beschrieben. Der MDKC 10M empfängt einen Schreibbefehl von einem Host-Rechner 180. Der Schreibbefehl gibt ein Zielvolumen mit einer LUN an. Der MDKC 10M bestimmt die Volumen-ID des Volumens entsprechend dem virtuellen Volumen, das durch den Schreibbefehl angegeben ist bezugnehmend auf die LU-Pfadverwaltungstabelle 230.
-
Der MDKC 10M erhält einen Job durch Erzeugung eines neuen Eintrags in der Jobverwaltungstabelle 260 (S301). Insbesondere wählt ein MPPK 120 in der Jobverwaltungstabelle 260 einen freien Job und schreibt einen Verarbeitungstyp (HOST WRITE) und Informationen bezüglich des Volumens und der durch den Schreibbefehl angegebenen Adresse in den Eintrag. Die Zelle in der Ausschlusstyp-Spalte 267 bleibt leer. In der Jobverwaltungstabelle 260 der 13 stellt der Eintrag von Job Nr. 1 ein Schreiben vom Host-Rechner 180 an ein PVOL dar.
-
Der MPPK 120 bestimmt, ob das bestimmte Volumen ein PVOL oder ein SVOL eines HA-Volumenpaars ist bezugnehmend auf die HA-Volumenpaar-Verwaltungstabelle 220 (S302). Im vorliegenden Fall ist das bestimmte Volumen ein PVOL.
-
Als nächstes erhält der MPPK 120 eine Ausschließlichkeitssperre für den neuen Job (S303). Insbesondere durchsucht der MPPK 120 die Jobverwaltungstabelle 260 nach anderen Jobs, die eine Ausschließlichkeitssperre für das bestimmte Volumen und den bestimmten Bereich erhalten haben. Wenn eine Ausschließlichkeitssperre vergeben wurde, wartet der MPPK 120 auf die Freigabe der Ausschließlichkeitssperre. Die Reihenfolge der Zuordnung von Ausschließlichkeitssperren wird beispielsweise mit einer nicht gezeigten Warteschlange gesteuert. Die Einheiten von Ausschließlichkeitssteuerungen können, wie in diesem Beispiel, LBA sein oder ein Volumen. Ausschließlichkeitssperren für einen Teil des Bereichs eines Volumens kann die Auswirkung auf andere Befehlsverarbeitungen reduzieren.
-
Wenn keine Ausschließlichkeitssperre für das bestimmte Volumen und den bestimmten Bereich durch einen anderen Job vergeben wurde, setzt der MPPK 120 eine Ausschließlichkeitssperre in die Zelle der Ausschließlichkeitstyp-Spalte 267 des neuen Jobs. Der Vorgang ist ein Schreiben auf ein PVOL, und der Ausschließlichkeitstyp ist R/W EXCLUSIVE.
-
Nach Erhalt einer Ausschließlichkeitssperre gibt der MPPK 120 eine Datenübertragungs-Bereit-Antwort an den Host-Rechner 180 zurück und wartet auf die Schreibdaten vom Host-Rechner 180 (S304). Der MPPK 120 sichert sich eine Cache-Seite für die Schreibdaten (S305). Insbesondere setzt der MPPK 120 neue Daten auf eine freie Seite in der Cache-Seiten-Verwaltungstabelle 270. Der MPPK 120 kann bezugnehmend auf die VOL-Verwaltungstabelle 240 die dem bestimmten Volumen entsprechende Paritätsgruppe identifizieren.
-
Der MPPK 120 schreibt die empfangenen Daten mittels eines FEPK 100 auf eine gesicherte Cache-Seite (S306). Der MPPK 120 setzt den Seitenstatus des Cache-Seite auf DUAL WRITING in der Cache-Seiten-Verwaltungstabelle 270.
-
Der MPPK 120 gibt einen Schreibbefehl für ein Schreiben auf ein mit dem PVOL gepaartes SVOL an den RDKC 10R aus und wartet auf die Datenübertragungs-Bereit-Antwort (S307). Der MPPK 120 erhält aus der HA-Volumen-Verwaltungstabelle 220 die IDs des SVOL und des RDKC 10R, der das SVOL hält. Der MPPK 120 hat den RDKC 10R angewiesen, auf den SVOL zu schreiben. Der SVOL kann mit einer Volumen-ID oder mit einer separat definierten LUN bestimmt werden.
-
Auf den Empfang einer Bereit-Antwort hin überträgt der MPPK 120 die vom Host-Rechner 180 empfangenen Schreibdaten an den RDKC 10R mittels des FEPK 100 und wartet auf eine Schreibbeendigungsantwort (S308).
-
Auf den Empfang einer Schreibbeendigungsantwort vom RDKC 10R hin sendet der MPPK 120 eine Schreibbeendigungsantwort an den Host-Rechner 180 (S309). Außerdem ändert der MPPK 120 den Seitenstatus der Cache-Seite zu DIRTY in der Cache-Seiten-Verwaltungstabelle 270 (S310). Beispielsweise erhält der MPPK 120 aus der Jobverwaltungstabelle 260 das Zielvolumen und den Bereich des Jobs zur Identifizierung der Cache-Seite mit der Cache-Seiten-Verwaltungstabelle 270.
-
Der MPPK 120 aktualisiert die Jobverwaltungstabelle 260 und gibt die Ausschließlichkeitssperre für den Job frei (S311). Beispielsweise gibt der MPPK 120 die Ausschließlichkeitssperre frei, indem der Job in der Jobverwaltungstabelle 260 gelöscht wird.
-
Als nächstes wird die Verarbeitung beim RDKC 10R beschrieben. Die Schritte S301 und S402, wie sie vom RDKC 10R ausgeführt werden, sind substantiell die gleichen wie die Schritte S401 und S402, wie sie vom MDKC 10M ausgeführt werden. Jedoch ist das durch den Schreibbefehl vom Host-Rechner 180 bestimmte Volumen ein SVOL. In 13 stellt der Eintrag für Job Nr. 5 ein Schreiben vom Host-Rechner 180 in ein SVOL dar.
-
Der MPPK 120, der den angegebenen Volumina zugeordnet ist, gibt eine Datenübertragungs-Bereit-Antwort an den Host-Rechner 180 zurück und wartet auf die Schreibdaten vom Host-Rechner 180 (S312).
-
Ein FEPK 100 hält die vom Host-Rechner 180 empfangenen Daten in einem Puffer 113. Der MPPK 120 gibt einen Schreibbefehl zum Schreiben auf das mit dem SVOL gepaarte PVOL an den MDKC 10M aus und wartet auf eine Datenübertragungs-Bereit-Antwort (S313). Der MPPK 120 erhält die IDs des PVOL und des das PVOL haltenden MDKC 10M aus der HA-Volumenpaar-Verwaltungstabelle 220. Der MPPK 120 hat den MDKC 10M angewiesen, auf das PVOL zu schreiben. Das PVOL kann mit einer Volumen-ID oder mit einer separat definierten LUN bestimmt werden.
-
Auf den Empfang einer Bereit-Antwort hin überträgt der MPPK 120 die Schreibdaten, die vom Host-Rechner 180 empfangen wurden, an den MDKC 10M mittels des FEPK 100 und wartet auf eine Schreibbeendigungsantwort (S314).
-
Der MPPK 120 bewertet die Schreibbeendigungsantwort, die vom MDKC 10M empfangen wurde, und erhält Jobidentifizierungsinformationen (S315). Die Schreibbeendigungsantwort umfasst Informationen zur Identifizierung des Jobs dieses Schreibvorgangs. Die Jobidentifizierungsinformationen umfassen die Jobnummer und die MPPK-Nummer in der MDKC 120, die dem Job zugeordnet ist. Der MPPK 120 speichert die Jobidentifizierungsinformationen in der Spalte 268 des Eintrags des ausgeführten Jobs.
-
Der MPPK 120 sichert eine Cache-Seite für die Schreibdaten (S316). Insbesondere setzt der MPPK 120 neue Daten auf eine freie Seite in der Cache-Seiten-Verwaltungstabelle 270. Der MPPK 120 kann bezugnehmend auf die VOL-Verwaltungstabelle 240 die dem bestimmten Volumen entsprechende Paritätsgruppe identifizieren.
-
Der MPPK 120 schreibt die Schreibdaten, die im Puffer 113 gespeichert sind, in die gesicherte Cacheseite (S317). Der MPPK 120 setzt den Seitenstatus der Cache-Seite auf DIRTY in der Cache-Seiten-Verwaltungstabelle 270.
-
Nach dem Schreiben in den Cache sendet der MPPK 120 eine Schreibbeendigungsantwort an den Host-Rechner 180 (S318). Außerdem erhält der MPPK 120 aus der Jobverwaltungstabelle 260 Jobidentifizierungsinformationen und erzeugt einen Ausschließlichkeitssperren-Freigabebefehl einschließlich der Jobidentifizierungsinformationen. Der MPPK 120 sendet den erzeugten Ausschließlichkeitssperren-Freigabebefehl an den MDKC 10M und wartet auf eine Antwort vom MDKC 10M (S319).
-
18 zeigt ein Flussdiagramm, das die Verarbeitung im MDKC 10M und im RDKC 10R in Antwort auf einen Schreibbefehl zwischen MDKC 10M und RDKC 10R hin zeigt. In 18 führt der MDKC 10M die Schritten S351 bis S361 aus, und der RDKC 10R führt die Schritte S351, S352 und S362 bis S365 aus.
-
Als erstes wird die Verarbeitung im MDKC 10M beschrieben. Der MDKC 10M empfängt vom RDKC 10R einen Schreibbefehl. Der Schreibbefehl gibt ein Zielvolumen mit einer Volumen-ID oder einer separat definierten LUN an. Der MDKC 10M erhält einen Job durch Erzeugung eines neuen Eintrags in der Jobverwaltungstabelle 260 (S351).
-
Insbesondere wählt der dem angegebenen Volumen zugeordnete MPPK120 in der Jobverwaltungstabelle 260 einen freien Job und schreibt einen Verarbeitungstyp (INTER-DKC WRITE) und Informationen betreffend das durch den Schreibbefehl angegebene Volumen und die Adresse in den Eintrag. Die Zelle in der Ausschlusstyp-Spalte 267 bleibt leer. In 13 stellt der Job Nr. 3 einen Vorgang in Antwort auf einen Schreibbefehl für eine Schreiben auf ein PVOL vom RDKC 10R her dar.
-
Der MPPK 120 bestimmt, ob das bestimmte Volumen ein PVOL oder ein SVOL eines HA-Volumenpaars ist bezugnehmend auf die HA-Volumenpaar-Verwaltungstabelle 220 (S352). Im folgenden Fall ist das bestimmte Volumen ein PVOL.
-
Als nächstes erhält der MPPK 120 eine Ausschließlichkeitssperre für den neuen Job (S353). Insbesondere durchsucht der MPPK 120 die Jobverwaltungstabelle 260 auf andere Jobs hin, die eine Ausschließlichkeitssperre für das angegebene Volumen und den angegebenen Bereich haben. Wenn eine Ausschließlichkeitssperre vergeben wurden, wartet der MPPK 120 auf eine Freigabe der Ausschließlichkeitssperre. Die Reihenfolge der Zuteilung von Ausschließlichkeitssperren wird beispielsweise mit einer nicht gezeigten Warteschlange gesteuert.
-
Wenn keine Ausschließlichkeitssperre vergeben wurde für das bestimmte Volumen und den bestimmten Bereich durch einen anderen Job, setzt der MPPK 120 in die Zelle der Ausschließlichkeitstypspalte 267 des neuen Jobs eine Ausschließlichkeitssperre. Der Vorgang ist ein Schreiben auf ein PVOL, und der Ausschließlichkeitstyp ist R/W EXCLUSIVE.
-
Auf den Erhalt einer Ausschließlichkeitssperre hin gibt der MPPK 120 eine Datenübertragungs-Bereit-Antwort an den RDKC 10R zurück und wartet auf die Schreibdaten vom RDKC 10R (S354). Der MPPK 120 sichert eine Cache-Seite für die Schreibdaten (S355). Insbesondere setzt der MPPK 120 neue Daten auf eine freie Seite in der Cacheseiten-Verwaltungstabelle 270. Der MPPK 120 kann die dem angegebenen Volumen entsprechende Paritätsgruppe bezugnehmend auf die VOl-Verwaltungstabelle 240 identifizieren.
-
Der MPPK 120 schreibt die empfangenen Schreibdaten in die gesicherte Cache-Seite mittels des FEPK 100 (S356). Der MPPK 120 setzt den Seitenstatus der Cache-Seite auf DUAL WRITING in der Cache-Seiten-Verwaltungstabelle 270.
-
Nach Schreiben der Schreibdaten in den Cache-Speicher 130 gibt der MPPK 120 eine Schreibbeendigungsantwort an den RDKC 10R zurück und wartet auf einen Ausschließlichkeitssperren-Freigabebefehl (S357). Die Schreibbeendigungsantwort umfasst die Jobidentifizierungsinformation des Schreibvorgangs. Der Job kann mit einer Jobnummer und der Nummer des dem Job zugewiesenen MPPK identifiziert werden. Der MPPK 120 nimmt die von der Jobverwaltungstabelle 260 erhaltene Jobnummer und die eigene MPPK-Nummer in die Schreibbeendigungsantwort auf.
-
Auf den Empfang des Ausschließlichkeitssperren-Freigabebefehls vom RDKC 10R hin erhält der MPPK 120 die Jobidentifizierungsinformationen aus dem Ausschließlichkeitssperren-Freigabebefehl (S358). Der MPPK 120 ändert den Seitenstatus der Cache-Seite für den angegebenen Job auf DIRTY (S359). Beispielsweise erhält der MPPK 120 das Zielvolumen und den Bereich des Jobs aus der Jobverwaltungstabelle 260, um die entsprechende Cache-Seite mit der Cache-Seiten-Verwaltungstabelle 270 zu identifizieren.
-
Der MPPK 120 gibt außerdem die Ausschließlichkeitssperre für den mit der Jobidentifizierungsinformation angegebenen Job frei (S360). Beispielsweise löscht der MPPK 120 in der Jobverwaltungstabelle 260 den Job, um die Ausschließlichkeitssperre freizugeben. Danach gibt der MPPK 120 eine Ausschließlichkeitssperren-Freigabe-Antwort an den RDKC 10R zurück (S361).
-
Als nächstes wird die Verarbeitung des RDKC 10R beschrieben. Der RDKC 10R empfängt einen Schreibbefehl vom MDKC 10M. Der Schreibbefehl gibt ein Zielvolumen mit einer Volumen-ID oder einer separat definierten LUN an. Der RDKC 10R erhält einen Job durch Erzeugen eines neuen Eintrags in der Jobverwaltungstabelle 260 (S351). Der genauere Vorgang ist der gleiche wie der vom MDKC 10M vollzogene.
-
Ein MPPK 120 bestimmt, ob das angegebene Volumen ein PVOL oder ein SVOL eines HA-Volumenpaars ist bezugnehmend auf die HA-Volumenpaar-Verwaltungstabelle 220 (S352). Im vorliegenden Fall ist das angegebene Volumen ein SVOL.
-
Der MPPK 120 gibt ein Datenübertragungs-Bereit an den MDKC 10M zurück und wartet auf Datenübertragung (S362). Der MPPK 120 sichert eine Cache-Seite für die Schreibdaten (S363). Insbesondere setzt der MPPK 120 neue Daten in eine freie Seite in der Cache-Seiten-Verwaltungstabelle 270. Bezugnehmend auf die VOL-Verwaltungstabelle kann der MPPK 120 die dem angegebenen Volumen entsprechende Paritätsgruppe identifizieren.
-
Der MPPK 120 schreibt Daten in die gesicherte Cache-Seite mittels des FEPK 100 (S364). Der MPPK 120 setzt den Seitenstatus der Cache-Seite auf DIRTY in der Cache-Seiten-Verwaltungstabelle 270. Nach dem Schreiben in den Cache schickt der MPPK 120 eine Schreibbeendigungsantwort an den MDKC 10M (S365).
-
19 zeigt eine Abfolge von Verarbeitungen auf einen Lesebefehl von einem Host-Rechner 180 her für ein PVOL. Der Host-Rechner 180 gibt einen Lesebefehl (RD CMD), um einen Bereich eines virtuellen Volumens zu lesen, an den MDKC 10M aus. Der MDKC 10M erhält eine Ausschließlichkeitssperre für die durch den Lesebefehl angegebenen Bereiche in dem dem virtuellen Volumen entsprechenden PVOL (S401). Der MDKC 10M liest Daten im angegebenen Adressbereich des PVOL (S402). Der MDKC 10M gibt die Ausschließlichkeitssperre frei (S403) und gibt eine Lesebeendigungs-Antwort (RD RSP) einschließlich der gelesenen Daten an den Host-Rechner 180 zurück.
-
20 zeigt eine Abfolge von Verarbeitungen auf einen Lesebefehl vom Host-Rechner 180 her für ein SVOL. Der Host-Rechner 180 gibt an den RDKC 10R einen Lesebefehl (RD CMD) zum Lesen eines Bereichs in einem virtuellen Volumen aus. Der RDKC 10R liest Daten im angegebenen Adressbereich in dem dem virtuellen Volumen entsprechenden SVOL (S451). Der RDKC 10R gibt eine Lesebeendigungs-Antwort (RD RSP) einschließlich der gelesenen Daten an den Host-Rechner 180 zurück.
-
21 zeigt ein Flussdiagramm von Verarbeitungen des MDKC 10M und des RDKC 10R in Antwort auf einen Lesebefehl vom Host-Rechner 180 her. In 21 führt der MDKC 10M die Schritte S501 bis S508 aus; der RDKC 10R führt die Schritte S501, S502, S509 bis S511 aus.
-
Als erstes wird die Leseverarbeitung des MDKC 10M beschrieben. Der MDKC 10M empfängt vom Host-Rechner 180 einen Lesebefehl. Der Lesebefehl gibt ein Zielvolumen mit einer LUN an. Der MDKC 10M bestimmt bezugnehmend auf die LU-Pfadverwaltungstabelle 230 die Volumen-ID des Volumens, das dem durch den Lesebefehl bestimmten virtuellen Volumen entspricht.
-
Der MDKC 10M erhält einen Job durch Erzeugen eines neuen Eintrags in der Jobverwaltungstabelle 260 (S501). Insbesondere wählt der dem bestimmten Volumen zugeordnete MPPK 120 in der Jobverwaltungstabelle 260 einen freien Job und schreibt den Vorgangstyp (HOST READ) und Informationen bezüglich des durch den Lesebefehl angegebenen Volumens und die Adresse in die Einträge der Jobverwaltungstabelle 260.
-
Die Zelle der Ausschließlichkeitstyp-Spalte 267 bleibt leer. In 13 stellt der Eintrag für Job Nr. 0 ein Lesen von einem PVOL nach Maßgabe eines Befehls von einem Host-Rechner 180 dar.
-
Der MPPK 120 bestimmt, ob das angegebene Volumen ein PVOL oder ein SVOL eines HA-Volumenpaars ist bezugnehmend auf die HA-Volumenpaar-Verwaltungstabelle 220 (S502). Im vorliegenden Fall ist das angegebene Volumen ein PVOL.
-
Als nächstes bestimmt der MPPK 120, ob die Daten in dem durch den Lesebefehl angegebenen Speicherbereich in einem Cache gespeichert sind bezugnehmend auf die Cache-Seiten-Verwaltungstabelle 270 (S503). Wenn die Lesedaten in einem Cache gespeichert sind (S503:J), prüft der MPPK 120, ob für den Job eine Ausschließlichkeitssperre vergeben wurde.
-
Insbesondere durchsucht der MPPK 120 die Jobverwaltungstabelle 260 auf andere Jobs hin, die eine R/W-Ausschließlichkeitssperre für das bestimmte Volumen und den bestimmten Bereich erhalten haben. Wenn eine R/W-Ausschließlichkeitssperre vergeben wurde, wartet der MPPK 120 auf die Freigabe der R/W-Ausschließlichkeitssperre. Wenn keine R/W-Ausschließlichkeitssperre für das angegebene Volumen und den angegebenen Bereich durch einen anderen Job vergeben wurde, sendet der MPPK 120 die Lesedaten im Cache an den Host-Rechner 180 (S508).
-
Wenn die Lesedaten nicht in einem Cache gespeichert sind (S503:N), erhält der MPPK 120 eine Ausschließlichkeitssperre für den ausgeführten Job (S503). Insbesondere durchsucht der MPPK 120 die Jobverwaltungstabelle 260 auf andere Jobs hin, die eine R/W-Ausschließlichkeitssperre für das angegebene Volumen und den angegebenen Bereich erhalten haben. Wenn eine R/W-Ausschließlichkeitssperre vergeben wurde, wartet der MPPK 120 auf die Freigabe der R/W-Ausschließlichkeitssperre.
-
Wenn keine R/W-Ausschließlichkeitssperre für das angegebene Volumen und den angegebenen Bereich durch einen anderen Job vergeben wurde, setzt der MPPK 120 eine Ausschließlichkeitssperre in die Zelle der Ausschließlichkeitstyp-Spalte 267 des neuen Jobs. Der Vorgang ist ein Lesen und der Ausschließlichkeitstyp ist RD SHARED.
-
Nach Erhalt einer Ausschließlichkeitssperre sichert der MPPK 120 für die Lesedaten eine Cache-Seite (S505). Insbesondere setzt der MPPK 120 neue Daten in eine freie Seite in der Cache-Seiten-Verwaltungstabelle 270. Der MPPK 120 kann bezugnehmend auf die VOL-Verwaltungstabelle 240 die dem angegebenen Volumen entsprechende Paritätsgruppe identifizieren.
-
Der MPPK 120 schreibt die von der Paritätsgruppe gelesenen Schreibdaten in die gesicherte Cacheseite (S506). Der MPPK 120 setzt den Seitenstatus der Cacheseite auf CLEAN in der Cache-Seiten-Verwaltungstabelle. Der MPPK 120 aktualisiert die Jobverwaltungstabelle 260 und gibt die Ausschließlichkeitssperre für den Job frei (S507). Danach sendet der MPPK 120 eine Lesebeendigungsantwort einschließlich der gelesenen Daten an den Host-Rechner 180 (S508).
-
Als nächstes wird die Verarbeitung des RDKC 10R beschrieben. Abgesehen von keiner Erwirkung einer Ausschließlichkeitssperre für den Job ist die Verarbeitung des RDKC 10R die gleiche wie die des MDKC 10M. Die Schritte S509, S510 und S511 entsprechen den Schritten 503, S505 und S506. Der RDKC 10R sendet diese Daten im SVOL an den Host-Rechner 180.
-
Im eben beschriebenen Beispiel ist das HA-Volumenpaar im Status PAIR und ist synchronisiert. 22 zeigt Beziehungen zwischen dem PaarStatus eines HA-Volumenpaars und Ausschlusstypen eines E/A-Zugriffs auf das PVOL und das SVOL. Für den Paarstatus ist der Status PAIR und der Status PSUS (Pair SUSpended) vorgesehen. Im Status PAIR sind PVOL und SVOL synchronisiert, und die Aktualisierung im einen wird an den anderen weitergegeben.
-
Im Status PAIR empfängt, wie oben beschrieben, der PVOL Schreibzugriff und Lesezugriff vom Host-Rechner 180 und Schreibzugriffe vom RDKC 10R. Für diese Zugriffe wird eine Ausschließlichkeitssperrung von entweder RD SHARED oder R/W EXCLUSIVE durchgeführt. In gleicher Weise empfängt das SVOL Schreibzugriffe und Lesezugriffe vom Host-Rechner 180 und Schreibzugriffe vom MDKC 10M. Für die Zugriffe auf das SVOL werden Ausschließlichkeitssperrungen nicht durchgeführt.
-
Im Status PSUS ist die Aktualisierung des SVOL unterbunden; PVOL und SVOL sind nicht synchronisiert. Zugriffe vom Host-Rechner 180 werden vom MDKC 10M verarbeitet. Der MDKC 10M akzeptiert Schreibzugriffe und Lesezugriffe vom Host-Rechner 180 auf das PVOL.
-
Bei der Abarbeitung eines Schreibbefehls von einem Host-Rechner 180 sendet der MDKC 10M Schreibdaten nicht an den RDKC 10R. Für die Schreibzugriffe und die Lesezugriffe vom Host-Rechner 180 führt der MDKC 10M Ausschließlichkeitssperrungen von entweder R/W EXCLUSIVE oder RD SHARED aus.
-
Wenn während des Status PSUS der RDKC 10R einen Schreibbefehl oder einen Lesebefehl vom Host-Rechner 180 empfängt, überträgt der RDKC 10R den Befehl an den MDKC 10M. Dann braucht der RDKC die Daten nicht im Cache-Speicher 131 zu speichern. Er speichert Daten im Puffer 113 und überträgt dann die Daten an den MDKC 10M. Bei Schreibverarbeitungen gibt der RDKC 10R auf den Empfang einer Schreibbeendigungsantwort vom MDKC 10M hin eine Schreibbeendigungsantwort an den Host-Rechner 180 zurück. Bei Leseverarbeitungen empfängt der RDKC 10R Lesedaten vom MDKC 10M und sendet sie an den Host-Rechner 180.
-
Es wird nun ein Beispiel für die Behandlung eines Fehlers in einem MPPK 120 beschrieben. Wenn in einem MPPK 120 während der Verarbeitung eines Schreibbefehls von einem Host-Rechner 180 ein Fehler auftritt, können PVOL und SVOL unsynchronisiert sein. Diese Ausführungsform verhindert Leistungsverschlechterung, die durch den Fehler bewirkt wird, und erhält außerdem fehlerlos die Konsistenz innerhalb des HA-Volumenpaars aufrecht, da ein anderer MPPK 120 einen Schreibbefehl für das SVOL im RDKC 10R sendet.
-
Das Senden eines Schreibbefehls für das SVOL kann beispielsweise durch einen anderen MPPK 120 ausgeführt werden (Fehlererfassungs-MPPK 120), der den MPPK 120 erkannt hat (fehlerhaften MPPK 120), der einen Fehler hat, und/oder durch einen anderen MPPK 120 (Nachfolger-MPPK 120), der vom fehlerhaften MPPK 120 das PVOL übernommen hat.
-
Wie oben beschrieben kann der MDKC 10M, wenn der Seitenstatus in der Cache-Seiten-Verwaltungstabelle 270 DUAL WRITING ist, nicht unterscheiden, ob die Schreibdaten in das SVOL geschrieben wurden. Dementsprechend greift der MPPK 120 auf die Cache-Seiten-Verwaltungstabelle 270 zu, um Jobs zu identifizieren, die einen Schreibbefehl senden müssen.
-
Der Fehlererkennungs-MPPK 120 durchsucht die Cache-Seiten-Verwaltungstabelle 270 nach Einträgen mit den PVOLs, die dem fehlerhaften MPPK 120 zugeordnet sind und die den Seitenstatus DUAL WRITING angeben. Dies sind Einträge, die Schreibbefehle an de SVOLs senden müssen. Der Fehlererfassungs-MPPK 120 ändert den Seitenstatus der erfassten Einträge auf „SEND WRITE COMMAND“.
-
Beispielsweise kann jeder Nachfolger-MPPK 120 die obigen Änderungen in der Cache-Seiten-Verwaltungstabelle (270) ausführen. Der Nachfolger-MPPK 120 aktualisiert lediglich die Einträge, die PVOLs beinhalten, die er übernommen hat.
-
23 ist ein Flussdiagramm der Verarbeitung eines Nachfolger-MPPK 120 zum Senden eines Schreibbefehls für ein Schreiben auf ein SVOL. 23 zeigt einen Teil der Schritte der Schreibverarbeitung oder einer Leseverarbeitung betreffend ein übernommenes PVOL, die durch den Nachfolger-MPPK 120 vorgenommen werden.
-
In diesem Beispiel einer Lese-/Schreib-Verarbeitung von einem bzw. auf ein von einem fehlerhaften MPPK 120 übernommenes PVOL sendet der Nachfolger-MPPK 120 einen notwendigen Schreibbefehl an das SVOL. Die Schreibverarbeitung ist eine Host-Schreibverarbeitung oder eine Zwischen-DKC-Schreibverarbeitung.
-
Wie in 23 dargestellt, erhält der Nachfolger-MPPK 120 eine Ausschließlichkeitssperre für den Job, der dem verarbeiteten Befehl entspricht (S551) und sichert einen Cache-Spalt (S552). Der Nachfolger-MPPK 120 durchsucht die Cache-Seiten-Verwaltungstabelle 270 auf Einträge hin, die an das SVOL einen Schreibbefehl senden müssen (S553).
-
Beispielsweise sucht der Nachfolger-MPPK 120 nach einem Eintrag mit dem PVOL und mit SEND WRITE COMMAND im Seitenstatus. Alternativ dazu kann der MPPK 120 Einträge suchen, die die Gesamtheit oder einen Teil des durch den Befehl angegebenen Bereichs angeben und die SEND WRITE COMMAND im Seitenstatus zeigen.
-
Wenn ein die Suchkriterien erfüllender Eintrag vorliegt (S553:J), gibt der Nachfolger-MPPK 120 einen Schreibbefehl an den RDKC 10R aus und wartet auf eine Datenübertragungs-Beendigungsantwort (S554). Auf den Empfang einer Beendigungsantwort hin überträgt der Nachfolger-MPPK 120 die im Cache-Spalt gehaltenen Schreibdaten an den RDKC 10R und wartet auf eine Schreibbeendigungsantwort (S555).
-
Auf den Empfang einer Schreibbeendigungsantwort vom RDKC 10R hin ändert der Nachfolger-MPPK 120 den Seitenstatus der Cache-Seite in der Cache-Seiten-Verwaltungstabelle 270 auf DIRTY (S556). Danach nimmt der Nachfolger-MPPK 120 die Abarbeitung des vom Host-Rechner 180 empfangenen Befehls wieder auf.
-
Ein MPPK 120, der vom Nachfolger-MPPK 120 verschieden ist, beispielsweise ein Fehlererfassungs-MPPK 120, kann bezugnehmend auf die Cache-Seiten-Verwaltungstabelle 270 einen notwendigen Schreibbefehl an den RDKC 10R schicken. Der MPPK 120 wählt nacheinander Einträge in der Cache-Seiten-Verwaltungstabelle 270, die SEND WRITE COMMAND zeigen, und führt Schreibverarbeitungen auf SVOLs durch. Fehlererfassungs-MPPK 120 und Nachfolger-MPPK 120 oder nur einer von beiden können die Schreibverarbeitungen auf die SVOLs ausführen.
-
Betreffend die Schreibverarbeitungen für ein SVOL wird nun ein anderes Verfahren für den RDKC 10R des Sendens eines Ausschließlichkeitssperren-Freigabebefehls für einen Job an den MDKC 10M beschrieben. Im oben beschriebenen Konfigurationsbeispiel sendet der RDKC 10R einen Ausschließlichkeitssperren-Freigabebefehl an den MDKC 10M getrennt von den Schreibdaten. Im folgenden Beispiel sendet der RDKC 10R einen Ausschließlichkeitssperren-Freigabebefehl an den MDKC 10M zusammen mit den Schreibdaten. Dadurch kann Datenverkehr verringert werden.
-
24 zeigt eine Abfolge des Sendens eines Ausschließlichkeitssperren-Freigabebefehls zusammen mit Schreibdaten. In der folgenden Beschreibung sind hauptsächlich Unterschiede zum Ablaufdiagramm der 16 beschrieben. In 24 erhält der MDKC 10M eine Ausschließlichkeitssperre (S251) und gibt eine Datenübertragungs-Bereit-Antwort (XFR RD) an den RDKC 10R zurück.
-
Der RDKC 10R sendet einen Ausschließlichkeitssperren-Freigabebefehl an den MDKC 10M zusammen mit den Schreibdaten (WR DAT). Insbesondere sendet der RDKC 10R, wenn mehrere Teile von Schreibdaten separat gesendet werden, den Ausschließlichkeitssperren-Freigabebefehl zusammen mit dem Senden des letzten Teils.
-
Der MDKC 10M empfängt einen Ausschließlichkeitssperren-Freigabebefehl vom RDKC 10R zusammen mit den Schreibdaten (WR DAT). Der MDKC 10M schreibt die empfangenen Schreibdaten in den bestimmten Bereich im PVOL (S252). Auf die Vervollständigung des Datenschreibens auf den Bereich im PVOL hin gibt der MDKC 10M die erhaltene Ausschließlichkeitssperre frei (S257). Danach gibt der MDKC 10M eine Schreibbeendigungsantwort (WR RSP) an den RDKC 10R zurück.
-
Diese Abfolge ist in einer Konfiguration effektiv, in der die FEPKs 100 keine Funktion der automatischen Übertragung eines Schreibbefehls und von Schreibdaten haben. Diese Abfolge erreicht eine Verringerung der Häufigkeit der Kommunikation zwischen MDKC 10M und RDKC 10R.
-
Im obigen Konfigurationsbeispiel führt der RDKC 10R keine Ausschließlichkeitssperre für einen Job aus. Wie im Folgenden beschrieben, kann der RDKC 10R eine Ausschließlichkeitssperrung für einen Job ausführen, genauso wie der MDKC 10M. Als Ergebnis gewinnt man höhere Zuverlässigkeit durch feste Beibehaltung der Abfolge.
-
25 zeigt eine Abfolge von Verarbeitungen für ein Schreiben von einem Host-Rechner 180 auf ein PVOL einschließlich einer Ausschließlichkeitssperrung für einen Job durch den RDKC 10R. In der folgenden Beschreibung sind hauptsächlich Unterschiede zum in 15 gezeigten Ablauf beschrieben.
-
Auf den Empfang eines Schreibbefehls (WR CMD) vom MDKC 10M hin erhält der RDKC 10R eine Ausschließlichkeitssperrung des durch den Schreibbefehl angegebenen Bereichs (S207). Der RDKC 10R gibt eine Datenübertragungs-Bereit-Antwort (XFR RD) an den MDKC 10M zurück und empfängt Schreibdaten (WR DATA) vom MDKC 10M. Der RDKC 10R schreibt die empfangenen Schreibdaten in den Adressbereich des SVOL (S203).
-
Auf die Beendigung des Datenschreibens in den Adressbereich des SVOLs hin gibt der RDKC 10R eine Schreibbeendigungsantwort (WR RSP) an den MDKC 10M zurück. Außerdem gibt der RDKC 10R die erhaltene Ausschließlichkeitssperrung frei (S209).
-
26 zeigt eine Abfolge von Verarbeitungen für ein Schreiben vom Host-Rechner 180 auf ein SVOL einschließlich einer Ausschließlichkeitssperrung für einen Job des RDKC 10R. In der folgenden Beschreibung sind hauptsächlich Unterschiede zum Ablauf, wie er in 16 gezeigt ist, beschrieben.
-
Der Host-Rechner 180 gibt einen Schreibbefehl (WR CMD) für ein Schreiben auf einen Bereich im virtuellen Volumen an den RDKC 10R aus. Der RDKC 10R erhält eine Ausschließlichkeitssperre des durch den Schreibbefehl bestimmten Bereichs in dem dem virtuellen Volumen entsprechenden SVOL (S257).
-
Die folgenden Ausführungsschritte des RDKC 10R bis zum Schritt des Schreibens der Schreibdaten auf den angegebenen Bereich des SVOL (S253) sind die gleichen wie die im Ablaufdiagramm der 16. Der RDKC 10R gibt die erhaltene Ausschließlichkeitssperre nach der Rückgabe einer Schreibbeendigungsantwort (WR RSP) an den Host-Rechner 180 frei (S258). Als nächstes sendet der RDKC 10R einen Ausschließlichkeitssperren-Freigabebefehl, der einen Job angibt, an den MDKC 10M.
-
27 zeigt ein Flussdiagramm der Verarbeitung des MDKC 10M und des RDKC 10R auf einen Schreibbefehl von einem Host-Rechner 180 hin, der den Abläufen der 25 und 26 entspricht. Im Folgenden werden hauptsächlich Unterschiede zu den Flussdiagrammen der 17 beschrieben. Die Unterschiede vom Flussdiagramm der 17 sind, dass der RDKC 10R eine Ausschließlichkeitssperre erhält (S321) und die Ausschließlichkeitssperre freigibt (S322).
-
Vor der Rückgabe einer Beendigungsantwort an den Host-Rechner 180 erhält der RDKC 10R eine Ausschließlichkeitssperre für den neuen Job im Schritt S321. Das Verfahren des Zuweisens einer Ausschließlichkeitssperre ist das gleiche wie das für MDKC 10M in Schritt S303. Der Ausschließlichkeitstyp ist R/W EXCLUSIVE.
-
Nach Rückgabe einer Schreibbeendigungsantwort an den Host-Rechner 180 gibt der RDKC 10R die Ausschließlichkeitssperre im Schritt S322 frei. Das Verfahren des Freigebens der Ausschließlichkeitssperre ist das gleiche wie das im MDKC 10M in Schritt S311.
-
28 zeigt ein Flussdiagramm von Verarbeitungen des MDKC 10M und des RDKC 10R in Antwort auf einen Schreibbefehl zwischen MDKC 10M und RDKC 10R, das den Abläufen der 25 und 26 entspricht. In der folgenden Beschreibung werden hauptsächlich Unterschiede zum Flussdiagramm der 18 beschrieben. Die Unterschiede zum Flussdiagramm der 18 sind, dass der RDKC 10R eine Ausschließlichkeitssperre erhält (S371) und die Ausschließlichkeitssperre freigibt (S372).
-
Vor der Rückgabe einer Beendigungsantwort an den MDKC 10M erhält der RDKC 10R eine Ausschließlichkeitssperre für den neuen Job in Schritt S371. Das Verfahren des Zuordnens einer Ausschließlichkeitssperre ist das gleiche wie das im MDKC 10M im Schritt S353. Der Ausschließlichkeitstyp ist R/W EXCLUSIVE.
-
Nach Rückgabe einer Schreibbeendigungsantwort an den MDKC 10M gibt der RDKC 10R die Ausschließlichkeitssperre im Schritt S372 frei. Das Verfahren des Freigebens der Ausschließlichkeitssperre ist das gleiche wie das im MDKC 10M in Schritt S360. Der RDKC 10R kann auch eine Ausschließlichkeitssperrung bei der Abarbeitung eines Lesebefehls vom Host-Rechner 180 ausführen. In diesem Fall ist die Leseverarbeitung des RDKC 10R die gleiche wie die Leseverarbeitung des MDKC 10M einschließlich Ausschließlichkeitssperrung.
-
Die Jobausschließlichkeitssteuerung durch den RDKC für E/A-Zugriffe auf SVOLs kann die Zuverlässigkeit erhöhen.
-
Die oben beschriebenen Konfigurationen, Funktionen und Verarbeitungseinheiten können ganz oder teilweise durch Hardware implementiert sein: beispielsweise durch Entwurf einer integrierten Schaltung. Die oben beschriebenen Konfigurationen und Funktionen können durch Software implementiert sein, was bedeutet, dass ein Prozessor Programme interpretiert und ausführt, die die Funktionen bereitstellen. Die Informationen von Programmen, Tabellen und Dateien zur Implementierung der Funktionen kann in einer Speichervorrichtung gespeichert sein, wie einem Speicher, einer Festplatte oder einem SSD (Solid State Drive), oder auf einem Speichermedium wie einer IC-Karte oder einer SD-Karte. In dieser Ausführungsform werden Speichervorrichtungen und Volumina durch Speichervorrichtungen virtualisiert; allerdings kann die Virtualisierung der Speichervorrichtungen und Volumina mit einem besonderen Virtualisierungsgerät oder einer Funktion der Pfadverwaltung für den Host erreicht werden. Die Ausführungsformen sind für viele Speichervorrichtungen anwendbar, die mehrere redundant (HA) konfigurierte Aktiv-Aktiv-Typ-Volumina haben.