-
HINTERGRUND
-
Entscheidende Daten werden oft an einen anderen Speicherort kopiert, um sie vor Unglücksfällen zu schützen, die zu Datenverlust führen könnten. Eine zu diesem Zweck verwendete Methode ist als Fernkopieren bekannt, wobei eine Platte (oder ein logischer Datenträger) mit einer anderen, zur Sicherung dienenden Platte paarweise verbunden wird. Dabei wird die Ursprungsplatte als primäre, die Sicherungsplatte als sekundäre Platte bezeichnet. Wann immer Daten auf die primäre Platte geschrieben werden, müssen sie auch auf die sekundäre Platte geschrieben werden, um sicherzustellen, dass die Sicherung auf dem neuesten Stand bleibt. Das Fernkopieren kann synchron realisiert werden, wobei das Verarbeiten im Host so lange verzögert wird, bis die Ausführung der entsprechenden Schreiboperation auf der sekundären Platte bestätigt wurde. Das Fernkopieren kann zudem auch asynchron realisiert werden, wobei der Host, der die Daten in den primären Speicher geschrieben hat, nicht verzögert wird, während die Daten in den sekundären Speicher geschrieben werden. Dies bedeutet, dass der Host von der Ausführung des Vorgangs unterrichtet wird, sobald die Daten in den primären Speicher geschrieben wurden. Die Daten werden danach asynchron in den sekundären Speicher kopiert. In manchen Fällen wird replizierten Schreiboperationen auf eine Gruppe von zusammengehörigen Platten eine Folgenummer zugeordnet, die der Reihenfolge entspricht, in welcher sie der Host übergeben hat. Die Schreiboperationen werden an einem entfernt angeordneten Ort oder Sicherungsort repliziert und entsprechend der Folgenummer angewendet, um sicherzustellen, dass die Platten untereinander stets konsistent sind.
-
KURZDARSTELLUNG
-
Gemäß einem Aspekt der vorliegenden Offenbarung werden ein Verfahren und eine Methode zum Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem offenbart. Das Verfahren beinhaltet: als Reaktion darauf, dass eine primäre Einheit eine Anforderung zum Schreiben in einen primären Speicher empfängt, Empfangen einer Anforderung einer Folgenummer von der primären Einheit; Erzeugen einer aktuellen Folgenummer für die Schreiboperation; Erzeugen eines ersten Bezeichners, der eine Identität von sekundären Einheiten angibt, die auf der Grundlage der aktuellen Folgenummer in einen sekundären Speicher schreiben; Erzeugen eines zweiten Bezeichners, der eine Identität von sekundären Einheiten angibt, die auf der Grundlage der aktuellen Folgenummer und einer vorherigen Folgenummer in einen sekundären Speicher schreiben; Übertragen der aktuellen Folgenummer und des zweiten Bezeichners an die primäre Einheit; und Übertragen der aktuellen Folgenummer und des ersten Bezeichners an die sekundären Einheiten, die auf der Grundlage der vorherigen Folgenummer in den sekundären Speicher schreiben.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
Im Folgenden wird mit Blick auf die beigefügten Zeichnungen eine bevorzugte Ausführungsform der vorliegenden Erfindung beschrieben, die lediglich als Beispiel zu verstehen ist, wobei:
-
1 eine Ausführungsform eines Netzwerks von Datenverarbeitungssystemen ist, in dem die veranschaulichenden Ausführungsformen der vorliegenden Offenbarung realisiert sein können;
-
2 eine Ausführungsform eines Datenverarbeitungssystems ist, in dem die veranschaulichenden Ausführungsformen der vorliegenden Offenbarung realisiert sein können;
-
3 eine Darstellung ist, die eine Ausführungsform eines Datenverarbeitungssystems zum Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem veranschaulicht, in dem veranschaulichende Ausführungsformen der vorliegenden Offenbarung realisiert sein können;
-
4 eine Darstellung ist, die eine Ausführungsform eines Datenverarbeitungssystems zum Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem veranschaulicht, in dem veranschaulichende Ausführungsformen der vorliegenden Offenbarung realisiert sein können;
-
5 eine Darstellung ist, die eine Ausführungsform eines Datenverarbeitungssystems zum Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem veranschaulicht, in dem veranschaulichende Ausführungsformen der vorliegenden Offenbarung realisiert sein können; und
-
6 ein Ablaufplan ist, der eine Ausführungsform eines Verfahrens zum Koordinieren von Schreiboperationsabfolgen in einem Datenverarbeitungssystem gemäß der vorliegenden Offenbarung veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen der vorliegenden Offenbarung stellen ein Verfahren, System und Computerprogrammprodukt zum Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem bereit. Dabei beinhalten das Verfahren und die Methode z. B. in manchen Ausführungsformen: als Reaktion darauf, dass eine primäre Einheit eine Anforderung zum Schreiben in einen primären Speicher empfängt, Empfangen einer Anforderung einer Folgenummer von der primären Einheit; Erzeugen einer aktuellen Folgenummer für die Schreiboperation; Erzeugen eines ersten Bezeichners, der eine Identität von sekundären Einheiten angibt, die auf der Grundlage der aktuellen Folgenummer in einen sekundären Speicher schreiben; Erzeugen eines zweiten Bezeichners, der eine Identität von sekundären Einheiten angibt, die auf der Grundlage der aktuellen Folgenummer und einer vorherigen Folgenummer in einen sekundären Speicher schreiben; Übertragen der aktuellen Folgenummer und des zweiten Bezeichners an die primäre Einheit; und Übertragen der aktuellen Folgenummer und des ersten Bezeichners an die sekundären Einheiten, die auf der Grundlage der vorherigen Folgenummer in den sekundären Speicher schreiben. Somit beinhalten bei manchen Ausführungsformen der vorliegenden Offenbarung das Verfahren und die Methode Bezeichner, die angeben, welche sekundären Einheiten an einer Schreiboperation einer aktuellen Folgenummer beteiligt sind und welche sekundären Einheiten an einer Schreiboperation einer vorherigen Folgenummer beteiligt waren. Anhand der Bezeichner werden die Schreiboperationen in der korrekten Reihenfolge verarbeitet, während die Übertragung von Nachrichten zwischen Einheiten, die sich auf die Ausführung von Schreiboperationen beziehen, auf ein Mindestmaß verringert wird.
-
Der Fachmann weiß, dass Aspekte der vorliegenden Offenbarung als ein System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Offenbarung in Gestalt einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (z. B. Firmware, residente Software, Mikrocode usw.) oder in Gestalt einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte vereint, welche zusammenfassend als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Offenbarung in Gestalt eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, auf denen computerlesbarer Programmcode enthalten ist.
-
Dabei kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien genutzt werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem bzw. eine entsprechende Vorrichtung oder Einheit oder aber eine beliebige geeignete Kombination der vorgenannten Elemente sein, ohne jedoch auf diese beschränkt zu sein. Konkretere Beispiele des computerlesbaren Speichermediums würden Folgendes aufweisen (wobei dies eine nicht vollständige Liste darstellt): eine elektrische Verbindung mit einem oder mehreren Leitern, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen Lichtwellenleiter, einen tragbaren CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination der vorgenannten Elemente. In Verbindung mit diesem Dokument kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm enthalten oder speichern kann, welches von oder in Zusammenhang mit einem der Befehlsausführung dienenden System, einer Vorrichtung oder Einheit verwendet wird.
-
Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem computerlesbarem Programmcode enthalten, z. B. als Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Vielfalt von unterschiedlichen Formen annehmen, einschließlich, ohne auf diese beschränkt zu sein, eine elektromagnetische Form, eine optische Form oder auch jede geeignete Kombination derselben. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm übermitteln, weiterleiten oder übertragen kann, welches für die Nutzung durch oder in Verbindung mit einem/einer der Befehlsausführung dienenden System, Vorrichtung oder Einheit vorgesehen ist.
-
Auf einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, ohne auf diese beschränkt zu sein, drahtlose, drahtgebundene, Lichtwellenleiterkabel-, Funk- und andere Medien oder eine beliebige Kombination derselben.
-
Computerprogrammcode für das Ausführen von Arbeitsschritten für Aspekte der vorliegenden Offenbarung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, unter anderem ein Nahbereichsnetz (LAN) oder ein Weitverkehrsnetz (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Im Folgenden werden Aspekte der vorliegenden Offenbarung unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann/können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaubilds angegeben sind.
-
Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine anderweitige programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Medium gespeicherten Befehle einen Gegenstand hervorbringen, der Befehle aufweist, mit denen die die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebene Funktion/Handlung realisiert wird.
-
Die Computerprogrammbefehle können zudem in einen Computer oder eine anderweitige programmierbare Datenverarbeitungsvorrichtung geladen werden, um zu veranlassen, dass eine Reihe von Betriebsschritten auf dem Computer oder der anderweitigen programmierbaren Datenvorrichtung ausgeführt werden, so dass die Befehle, die auf dem Computer oder der anderweitigen Datenverarbeitungsvorrichtung ausgeführt werden, Prozesse bereitstellen, mit denen die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen realisiert werden.
-
Bezugnehmend auf die Figuren und insbesondere auf die 1 und 2 werden beispielhafte Darstellungen von Datenverarbeitungsumgebungen bereitgestellt, in denen veranschaulichende Ausführungsformen der vorliegenden Offenbarung realisiert sein können. Dabei sollte klar sein, dass die 1 und 2 lediglich beispielhaft sind und keinerlei Einschränkung mit Blick auf die Umgebungen geltend machen oder implizieren sollen, in denen verschiedene Ausführungsformen realisiert sein können. An den abgebildeten Umgebungen könnten zahlreiche Änderungen vorgenommen werden.
-
1 ist eine bildhafte Darstellung eines Netzwerks von Datenverarbeitungssystemen, in dem veranschaulichende Ausführungsformen der vorliegenden Offenbarung realisiert sein können. Ein Netzwerkdatenverarbeitungssystem 100 ist ein Netzwerk von Computern, in dem die veranschaulichenden Ausführungsformen der vorliegenden Offenbarung realisiert sein können. Das Netzwerkdatenverarbeitungssystem 100 enthält ein Netzwerk 130, welches das Medium ist, mit dem Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern hergestellt werden, die innerhalb des Netzwerkdatenverarbeitungssystems 100 miteinander verbunden sind. Das Netzwerk 130 kann Verbindungen wie Leitungen, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiter beinhalten.
-
Bei manchen Ausführungsformen sind neben einem Datenspeicher 160 auch ein Server 140 und ein Server 150 mit dem Netzwerk 130 verbunden. Der Server 140 und der Server 150 können z. B. IBM® Power SystemsTM Server sein. Zudem können die Clients 110 und 120 mit dem Netzwerk 130 verbunden sein. Die Clients 110 und 120 können z. B. Personal Computer oder Netzwerkcomputer sein. In dem abgebildeten Beispiel stellt der Server 140 den Clients 110 und 120 Daten und/oder Dienstleistungen bereit, darunter – ohne darauf beschränkt zu sein – Datendateien, Betriebssystemabbilder und Anwendungen. Das Netzwerkdatenverarbeitungssystem 100 kann zusätzliche Server, Clients und andere Einheiten beinhalten.
-
In dem abgebildeten Beispiel ist das Netzwerkdatenverarbeitungssystem 100 das Internet, wobei das Netzwerk 130 für eine weltweite Zusammenstellung von Netzwerken und Gateways steht, welche die TCP/IP-Protokollfamilie (Transmission Control Protocol/Internet Protocol) nutzen, um untereinander Daten auszutauschen. Der Kern des Internet ist ein Hauptnetzwerk von Hochgeschwindigkeits-Datenübertragungsleitungen zwischen wichtigen Knoten oder Host-Computern, das aus Tausenden von Computersystemen gewerblicher Unternehmen, Behörden, Bildungseinrichtungen und anderen Computersystemen besteht, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das Netzwerkdatenverarbeitungssystem 100 auch als eine Anzahl verschiedener Arten von Netzwerken realisiert sein, wie z. B. ein Intranet, ein LAN, ein WAN oder ein Speicherbereichsnetz (SAN). 1 ist als Beispiel und nicht als architektonische Beschränkung der verschiedenen veranschaulichenden Ausführungsformen gedacht.
-
2 ist eine Ausführungsform eines Datenverarbeitungssystems 200 wie z. B., ohne darauf beschränkt zu sein, des Clients 110 und/oder Servers 140, in dem eine Ausführungsform eines Systems zum Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem gemäß der vorliegenden Offenbarung realisiert sein kann. Bei dieser Ausführungsform beinhaltet das Datenverarbeitungssystem 200 eine Bus- oder Datenübertragungsstruktur 202, welche die Datenübertragung zwischen einer Prozessoreinheit 204, einem Arbeitsspeicher 206, einem permanenten Speicher 208, einer Datenübertragungseinheit 210, einer Eingabe-/Ausgabe-Einheit (E/A-Einheit) 212 und einer Anzeige 214 bereitstellt.
-
Die Prozessoreinheit 204 dient zum Ausführen von Befehlen für Software, die in den Arbeitsspeicher 206 geladen werden kann. Abhängig von der jeweiligen Realisierung, kann es sich bei der Prozessoreinheit 204 um einen Satz aus einem oder mehreren Prozessoren oder einen Mehrprozessorkern handeln. Des Weiteren kann die Prozessoreinheit 204 unter Verwendung eines oder mehrerer heterogener Prozessorsysteme realisiert sein, bei denen auf einem einzigen Chip ein Hauptprozessor mit sekundären Prozessoren vorhanden ist. In einem weiteren veranschaulichenden Beispiel kann die Prozessoreinheit 204 ein symmetrisches Mehrprozessorsystem sein, das mehrere Prozessoren desselben Typs beinhaltet.
-
Bei anderen Ausführungsformen kann der Arbeitsspeicher 206 ein Direktzugriffsspeicher oder eine beliebige anderweitige geeignete, flüchtige oder nichtflüchtige Speichereinheit sein. Der permanente Speicher 208 kann je nach Realisierung verschiedene Formen annehmen. So kann der permanente Speicher 208 z. B. eine oder mehrere Komponenten oder Einheiten beinhalten. Der permanente Speicher 208 kann eine Festplatte, ein Flash-Speicher, eine wiederbeschreibbare optische Platte, ein wiederbeschreibbares Magnetband oder eine beliebige Kombination der genannten Komponenten sein. Die von dem permanenten Speicher 208 verwendeten Medien können auch entfernbar sein, darunter, ohne darauf beschränkt zu sein, eine entfernbare Festplatte.
-
Die Datenübertragungseinheit 210 stellt die Datenübertragung mit anderen Datenverarbeitungssystemen oder -einheiten bereit. In diesen Beispielen ist die Datenübertragungseinheit 210 eine Netzwerkschnittstellenkarte. Modems, Kabelmodems und Ethernet-Karten sind nur einige der momentan verfügbaren Typen von Netzwerkschnittstellenadaptern. Die Datenübertragungseinheit 210 kann die Datenübertragung entweder über physische oder drahtlose Datenübertragungsverbindungen oder aber über beide Verbindungsarten bereitstellen.
-
Die Eingabe-/Ausgabe-Einheit 212 ermöglicht die Ein- und Ausgabe von Daten mit Blick auf andere Einheiten, die mit dem Datenverarbeitungssystem 200 verbunden sein können. So kann bei manchen Ausführungsformen die Eingabe-/Ausgabe-Einheit 212 eine Verbindung bereitstellen, um eine Benutzereingabe über eine Tastatur und Maus vornehmen zu können. Des Weiteren kann die Eingabe-/Ausgabe-Einheit 212 eine Ausgabe an einen Drucker senden. Die Anzeige 214 stellt einen Mechanismus zum Anzeigen von Daten für einen Benutzer bereit.
-
Befehle für das Betriebssystem und Anwendungen oder Programme befinden sich in dem permanenten Speicher 208. Diese Befehle können zur Ausführung durch die Prozessoreinheit 204 in den Arbeitsspeicher 206 geladen werden. Die Prozesse der verschiedenen Ausführungsformen können durch die Prozessoreinheit 204 unter Verwendung computerrealisierter Befehle ausgeführt werden, die sich in einem Arbeitsspeicher wie z. B. dem Arbeitsspeicher 206 befinden können. Diese Befehle werden als Programmcode, computernutzbarer Programmcode oder computerlesbarer Programmcode bezeichnet, der durch einen Prozessor in der Prozessoreinheit 204 gelesen und ausgeführt werden kann. Der Programmcode in den verschiedenen Ausführungsformen kann auf verschiedenen physischen oder greifbaren computerlesbaren Medien wie z. B. in dem Arbeitsspeicher 206 oder in dem permanenten Speicher 208 enthalten sein.
-
Ein Programmcode 216 befindet sich in einer funktionalen Form auf einem computerlesbaren Medium 218, das wahlweise entfernbar ist, und kann in das Datenverarbeitungssystem 200 geladen bzw. auf dieses übertragen werden, um durch die Prozessoreinheit 204 ausgeführt zu werden. Der Programmcode 216 und computerlesbare Medien 218 bilden in diesen Beispielen ein Computerprogrammprodukt 220. In einem Beispiel können die computerlesbaren Medien 218 in einer physischen Form vorliegen, z. B. als eine optische oder magnetische Platte, die für die Übertragung an eine Speichereinheit wie z. B. eine Festplatte, die Teil des permanenten Speichers 208 ist, in ein Laufwerk oder eine andere Einheit geschoben oder gelegt wird, das/die Teil des permanenten Speichers 208 ist. In einer physischen Form können die computerlesbaren Medien 218 auch die Form eines permanenten Speichers annehmen, z. B. einer Festplatte, eines USB-Sticks oder eines Flash-Speichers, die/der mit dem Datenverarbeitungssystem 200 verbunden ist. Die physische Form von computerlesbaren Medien 218 wird auch als ein computeraufzeichnungsfähiges Speichermedium bezeichnet. In manchen Fällen kann das computeraufzeichnungsfähige Medium 218 nicht entfernbar sein.
-
Alternativ kann der Programmcode 216 über eine Datenübertragungsverbindung mit der Datenübertragungseinheit 210 und/oder über eine Verbindung mit der Eingabe-/Ausgabe-Einheit 212 von dem computerlesbaren Medium 218 an das Datenverarbeitungssystem 200 übertragen werden. In den veranschaulichenden Beispielen können die Datenübertragungsverbindung und/oder die Verbindung in physischer Form oder drahtlos vorliegen.
-
Die verschiedenen für das Datenverarbeitungssystem 200 veranschaulichten Komponenten sind nicht als architektonische Beschränkung der Art und Weise zu verstehen, wie verschiedene Ausführungsformen realisiert sein könnten. Die verschiedenen veranschaulichenden Ausführungsformen können in einem Datenverarbeitungssystem realisiert sein, das Komponenten zusätzlich zu den bzw. anstelle der für das Datenverarbeitungssystem 200 veranschaulichten Komponenten enthält. Andere in 2 gezeigte Komponenten können von den in den veranschaulichten Beispielen gezeigten Komponenten abweichen. So ist z. B. eine Speichereinheit in dem Datenverarbeitungssystem 200 eine beliebige Hardware-Vorrichtung, die Daten speichern kann. Der Arbeitsspeicher 206, der permanente Speicher 208 und das computerlesbare Medium 218 sind Beispiele von Speichereinheiten, die in einer physischen Form vorliegen.
-
3 ist eine veranschaulichende Ausführungsform eines Systems 300 zum Koordinieren von Schreiboperationsabfolgen in einem Datenverarbeitungssystem. Das System 300 kann in Datenverarbeitungssystemen oder -plattformen wie z. B., ohne darauf beschränkt zu sein, den Servern 140 und/oder 150, den Clients 110 und/oder 120 oder an anderen Stellen eines Datenverarbeitungssystems oder Knotens realisiert sein. In der in 3 veranschaulichten Ausführungsform weist das System 300 primäre Einheiten 310 zum Verarbeiten von Schreiboperationen in einen primären Speicher 312 auf. Die primären Einheiten 310 können Server, Clients oder andere Arten von Datenverarbeitungssystemen aufweisen. In 3 beinhaltet das System 300 die primären Einheiten 310 1, 310 2, 310 3 bis 310 n, so dass eine Anzahl von primären Einheiten in dem System 300 variieren kann. Die primären Einheiten 310 bilden einen primären Speicher 312, so dass der primäre Speicher 312 durch eine oder mehrere primäre Einheiten 310 für externe Server oder Datenverarbeitungssysteme (z. B. die Server 140 und 150 oder die Clients 110 und 120) sichtbar gemacht wird. Der primäre Speicher 312 kann eine Gruppe primärer Speichereinheiten 314 beinhalten. Die primären Speichereinheiten 314 können z. B. optische oder magnetische Platten, Bandspeicher oder funktionell bzw. strukturell gleichwertige Einheiten aufweisen, ohne jedoch hierauf beschränkt zu sein. In 3 beinhaltet der primäre Speicher 312 die als PD1 314 1, PD2 314 2, PD3 314 3 bis PDn 314 n dargestellten primären Speichereinheiten 314, so dass eine Anzahl der primären Speichereinheiten 314 in dem System 300 variieren kann.
-
In der in 3 veranschaulichten Ausführungsform beinhaltet das System 300 zudem sekundäre Einheiten 320, die über ein drahtgebundenes oder drahtloses Datenübertragungsnetzwerk 322 mit den primären Einheiten 310 verbunden sind. Die sekundären Einheiten 320 verarbeiten Schreiboperationen in sekundären Speichern 324. Die sekundären Einheiten 320 können Server, Clients oder andere Arten von Datenverarbeitungssystemen aufweisen. In 3 beinhaltet das System 300 die sekundären Einheiten 320 1, 320 2, 320 3 bis 320 n, so dass eine Anzahl der sekundären Einheiten in dem System 300 variieren kann. Der sekundäre Speicher 324 kann eine Gruppe sekundärer Speichereinheiten 326 beinhalten. Die sekundären Speichereinheiten 326 können z. B. optische oder magnetische Platten, Bandspeicher oder funktionell bzw. strukturell gleichwertige Einheiten aufweisen, ohne jedoch hierauf beschränkt zu sein. In 3 beinhaltet der sekundäre Speicher 324 als SD1 326 1, SD2 326 2, SD3 326 3 bis SDn 326 n dargestellte sekundäre Speichereinheiten 326, so dass eine Anzahl der sekundären Speichereinheiten 326 in dem System 300 variieren kann.
-
Das System 300 ist so konfiguriert, dass ein konsistentes Fernkopieren von Daten realisiert wird. Die Anordnung und Position der in 3 gezeigten primären Einheiten 310 und der sekundären Einheiten 320 soll beispielhaft sein, und viele andere Anordnungen können realisiert werden, indem z. B. die primären Einheiten 310 und die sekundären Einheiten 320 in zwischengeschalteten und miteinander Daten austauschenden Knoten eines Datenverarbeitungs- oder Datenübertragungsnetzwerks untergebracht sind. Ein Server oder eine anderweitige Datenverarbeitungsanwendung kann in eine Gruppe der primären Speichereinheiten 314 schreiben, bei der die Schreiboperationen in den primären Speicher 312 und den sekundären Speicher 324 konsistent sein müssen. Die sekundären Einheiten 320 steuern sekundäre Speichereinheiten 326, so dass jede sekundäre Speichereinheit 326 durch eine oder mehrere sekundäre Einheiten 320 gesteuert wird und über die sekundären Einheiten 320 für externe Server oder Datenverarbeitungsanwendungen sichtbar gemacht werden kann, wenn ein Zugriff erforderlich ist (z. B. für die schnelle Wiederherstellung nach einem Störfall). Die Daten in dem primären Speicher 312 (z. B. in den primären Speichereinheiten 314) und die in den primären Speicher 312 geschriebenen Daten werden in dem sekundären Speicher 324 repliziert (wobei z. B. jede primäre Speichereinheit 314 oder Gruppe der primären Speichereinheiten 314 der jeweiligen sekundären Speichereinheit 326 in dem sekundären Speicher 324 entsprechen kann). Somit lässt sich während des Betriebs jede primäre Speichereinheit 314 oder Gruppe der primären Speichereinheiten 314 auf die entsprechende sekundäre Speichereinheit 326 in dem sekundären Speicher 324 abbilden. In manchen Fällen müssen Schreiboperationen in einer bestimmten Reihenfolge über mehrere Speichereinheiten hinweg angewendet werden (z. B. bei der asynchronen Fernreplikation). So wird bei manchen Ausführungsformen replizierten Schreiboperationen in einer Gruppe von zusammengehörigen Speichereinheiten eine Folgenummer gemäß der Reihenfolge zugeordnet, in der ein Host sie übergibt, sie werden in den entfernt angeordneten Speicher repliziert und in der Reihenfolge der Folgenummer auf den sekundären Speicher angewendet, wodurch sichergestellt wird, dass die primären und sekundären Speichereinheiten untereinander konsistent sind.
-
4 zeigt eine veranschaulichende Ausführungsform der primären Einheit 310 und der sekundären Einheit 320 des Systems 300. In der in 4 veranschaulichten Ausführungsform weisen die primäre Einheit 310 und die sekundäre Einheit 320 jeweils einen Eingabe-/Ausgabe-Prozessor (E/A-Prozessor) 410 bzw. 420 auf, um Schreiboperationen zu verarbeiten und/oder verschiedene andere Datenverarbeitungsfunktionen auszuführen. In 4 beinhaltet die primäre Einheit 310 einen Folgeerzeuger 440. Bei manchen Ausführungsformen befindet sich der Folgeerzeuger 440 in der primären Einheit 310; dabei sollte allerdings klar sein, dass viele derartige Folgeerzeuger 440 vorhanden sein können (wobei z. B. jeder Folgeerzeuger 440 für eine andere Gruppe der primären Speichereinheiten 314 verwendet wird, bei denen eine schreiboperationsübergreifende Konsistenz notwendig ist). In 4 beinhaltet die primäre Einheit 310 auch einen Speicher 446 mit Folgeerzeugerdaten 450. Der Folgeerzeuger 450 kann Daten aufweisen, die durch den Folgeerzeuger 440 erzeugt, erfasst und/oder erhalten werden. So können die Folgeerzeugerdaten 450 z. B. eine bzw. mehrere Folgenummern 460 beinhalten. Ein Server oder eine anderweitige Datenverarbeitungsanwendung schreibt z. B. in die primären Speichereinheiten 314 des primären Speichers 312, wobei die Schreiboperationen durch eine solche Anwendung auf mehrere primäre Speichereinheiten 14 verteilt werden. Je nachdem, welche primäre Einheit 310 auf die entsprechenden primären Speichereinheiten 314 zugreifen kann, werden die Schreiboperationen zudem von der Anwendung auf die primären Einheiten 310 verteilt. Als Reaktion darauf, dass eine primäre Einheit eine Schreiboperation empfängt 470, wird die Anforderung zum Erzeugen einer Folgenummer 460 an den Folgeerzeuger 440 ausgegeben. In der Veranschaulichung aus 4 wird die Schreiboperation 470 von einer primären Einheit mit dem Folgeerzeuger 440 empfangen; dabei sollte jedoch klar sein, dass eine Schreiboperation auch von einer einzigen primären Einheit empfangen werden kann, während sich der Folgeerzeuger 440 auf einer anderen primären Einheit befindet (ein Beispiel hierfür ist eine Schreiboperation, die von der primären Einheit 310 2 empfangen wird, während sich der Folgeerzeuger 440 auf der primären Einheit 310 3 befindet). In einem solchen Fall fordert die primäre Einheit 310 2 von der primären Einheit 310 3 die Folgenummer 460 an. Die Folgenummer 460 beginnt üblicherweise bei null und erhöht sich bei jeder darauffolgenden Schreiboperation. Der Folgeerzeuger 440 kann auf jede geeignete Art und Weise auf der Grundlage von Hardware, Software oder einer Kombination hiervon realisiert sein. So kann der Folgeerzeuger 440 z. B. Software, Logik und/oder ausführbaren Code zum Durchführen verschiedener hier beschriebener Funktionen aufweisen (z. B. bereitgestellt als Software und/oder als ein Algorithmus, die/der auf einer Prozessoreinheit läuft, als Hardware-Logik, die in einem Prozessor oder einer anderen Art von Logik-Chip angeordnet ist, der in einer Schaltung zentral gebündelt oder aber auf mehrere unterschiedliche Chips in einem Datenverarbeitungssystem verteilt ist).
-
In 4 beinhalten die Folgeerzeugerdaten 450 darüber hinaus die Bezeichner 462, 464 und 466, die von dem Folgeerzeuger 440 erzeugt und/oder anderweitig erhalten werden. Bei manchen Ausführungsformen weisen die Bezeichner 422, 464 und 466 (in 4 als Vc, Vp bzw. Vt gekennzeichnete) Bit-Vektoren auf. Bei manchen Ausführungsformen sind die Bit-Vektoren Vc 422, Vp 424 und Vt 466 so konfiguriert, dass die Größe oder Anzahl der Bits der Anzahl der sekundären Einheiten 320 des Systems 300 entspricht, so dass jeder aus Bit-Position und Bit-Wert bestehende Bit-Vektor Vc 422, Vp 424 und Vt 466 der betreffenden sekundären Einheit 320 entspricht. Somit geben die in den Bit-Vektoren Vc 422, Vp 424 und Vt 466 gesetzten Bits die sekundären Einheiten 320 an. Der Vp 464 gibt an, für welche sekundäre Einheit 320 die Schreiboperationen der vorherigen Folgenummer 460 gedacht waren, während der Vc angibt, für welche sekundären Einheiten 320 die Schreiboperationen der aktuellen Folgenummer 460 gedacht sind. Der Vt 466 ist eine bitweise ODER-Verknüpfung von Vc 462 und Vp 464 (wobei dies z. B. in der Programmiersprache „C” z. B. als Vc|Vp geschrieben wird).
-
Während des Betriebs sendet die primäre Einheit 310, die eine Schreiboperation empfängt, eine Nachricht an den Folgeerzeuger 440, die beinhaltet, an welche sekundäre Einheit 320 die Schreiboperation gesendet werden muss, und fordert die Folgenummer 460 an. Vp 464 und Vc 462 können anfänglich ungesetzt sein, und die Folgenummer („N”) 460 beginnt bei null. Der Folgeerzeuger 440 sortiert die ausstehenden Anforderungen von Folgenummern, die von den verschiedenen primären Einheiten 310 an ihn gesendet wurden, und setzt die Bits in dem Vc 462 gemäß der sekundären Einheit 320, an welche die einzelnen Schreiboperationen gesendet werden sollen. Der Folgeerzeuger 440 erzeugt zudem den Vt 466, wobei es sich um die gesamte Gruppe der sekundären Einheiten 320 handelt, die von der aktuellen Folgenummer betroffen sind. Der Folgeerzeuger 440 antwortet jeder primären Einheit 310 (z. B. über den E/A-Prozessor 410), die eine Folgenummer angefordert hat, für jede Schreiboperation, für die sie eine Folgenummer angefordert hat, mit einer Nachricht, welche die aktuelle Folgenummer 460 und den Vt 466 enthält. Der Folgeerzeuger 440 überträgt außerdem eine Pseudo-Schreiboperationsnachricht an jede sekundäre Einheit, die angibt, dass der Vp 464 nicht in dem Vc 462 enthalten ist (wobei dies z. B. in der Programmiersprache „C” als Vp & (~Vc) geschrieben wird), welche die aktuelle Folgenummer 460 und den Vc 462 (anstelle des Vt 466) enthält.
-
Als Reaktion auf das Empfangen der aktuellen Folgenummer 460 und des Vt 466 übergibt die primäre Einheit 310, welche die Folgenummer 460 angefordert hat, die Schreiboperation an den primären Speicher 312 und sendet die Schreiboperation zusammen mit den Werten der aktuellen Folgenummer 460 und des Vt 466 an die sekundäre Einheit 320 mit Zugriff auf die entsprechenden sekundären Speichereinheiten 326 des sekundären Speichers 324. So muss die entsprechende sekundäre Einheit 320 z. B. ermitteln, wann sie ihre entsprechende Schreiboperation verarbeiten kann. Anfänglich kann jede sekundäre Einheit 320 Schreiboperationen mit der Folgenummer Null verarbeiten, da es keine früheren Schreiboperationen gibt, auf die sich die sekundären Einheiten 320 beziehen könnten. Danach empfangen die sekundären Einheiten 320 entweder eine oder mehrere Schreiboperationen mit einer aktuellen Folgenummer (z. B. N = 1) oder eine Pseudo-Schreiboperationsnachricht mit der aktuellen Folgenummer (z. B. N = 1). Nach dem Verarbeiten einer jeden Schreiboperation einer bestimmten Folgenummer sendet die sekundäre Einheit 320 eine Nachricht über die Folgenummerausführung an die sekundären Einheiten 320. Wenn die sekundäre Einheit 320 z. B. Schreiboperationen mit N = 1 empfangen und alle Schreiboperationen mit N = 0 ausgeführt hat, besteht die Gruppe der sekundären Einheiten 320, welche die Nachricht über die Folgenummerausführung empfangen, aus den sekundären Einheiten, die durch den Vt 466 der Schreiboperationen mit N = 1 angegeben werden (alle derartigen Schreiboperationen enthalten denselben Vt 466). Wenn die sekundäre Einheit 320 eine Pseudo-Schreiboperationsnachricht mit N = 1 empfangen und alle Schreiboperationen mit N = 0 ausgeführt hat, besteht die Gruppe der sekundären Einheiten 320, welche die Nachricht über die Folgenummerausführung empfangen, aus den sekundären Einheiten, die durch den Vc 462 in der Pseudo-Schreiboperationsnachricht angegeben werden. Wenn die sekundäre Einheit 320 Schreiboperationen mit N = 1 und Nachrichten über die Folgenummerausführung von den sekundären Einheiten 320 empfangen hat, für die in dem Vt 466 dieser Schreiboperationen Bits gesetzt sind, kann die sekundäre Einheit 320 die Schreiboperation 470 mit N = 1 an den sekundären Speicher 324 übergeben (z. B., weil alle Schreiboperationen, auf die sich die Folgenummer N = 1 zur Konsistenzsicherung beziehen kann, bereits verarbeitet wurden).
-
In manchen Fällen, in denen in dem Vt 466 nur ein einziges Bit gesetzt ist (z. B. für eine einzige sekundäre Einheit 320), was häufig während Schreiboperations-Lastspitzen der Fall sein kann, ist keine Nachrichtenübertragung zwischen sekundären Einheiten notwendig, da es allein der einzigen sekundäre Einheit 320, für die das einzige in dem Vt 466 gesetzte Bit steht, obliegt festzustellen, ob sie von einer Folgenummer zur nächsten wechseln kann, wodurch ein schneller synchroner Betrieb mit einer schnellen Verarbeitung der Schreiboperationen ermöglicht wird. Wenn der Vt 466 mehrere gesetzte Bits enthält (wenn er z. B. mehrere sekundäre Einheiten 320 angibt), ist die maximale Zeitspanne zwischen der Ausführung der Schreiboperationen einer Folgenummer durch die letzte sekundäre Einheit 320 und dem Zeitpunkt, an dem alle sekundären Einheiten 320 in der Lage sind, die Schreiboperationen der nächsten Folgenummer zu verarbeiten, die Zeit, die eine Nachricht benötigt, um den Weg zwischen den beiden am weitesten auseinanderliegenden sekundären Einheiten 320 in einer Richtung zurückzulegen.
-
5 ist eine Darstellung, die ein System und Verfahren zum Koordinieren von Schreiboperationsabfolgen gemäß der vorliegenden Offenbarung veranschaulicht. Bei der veranschaulichten Ausführungsform hat die primäre Einheit 310 3 eine Schreiboperation empfangen und von dem Folgeerzeuger 440 eine Folgenummer angefordert. Die Anforderung der Folgenummer beinhaltet auch die Identität der sekundären Einheit, die an der aktuellen Schreiboperation beteiligt ist (in diesem Beispiel die sekundäre Einheit 320 3). Die von der primären Einheit 310 3 angeforderte, der Schreiboperation zugeordnete aktuelle Folgenummer lautet N1. An der vorherigen Folgenummer für eine Schreiboperation (dargestellt durch N0) waren die sekundären Einheiten 320 1 und 320 2 beteiligt. Während des Betriebs setzt der Folgeerzeuger 440 als Reaktion darauf, dass die Anforderung einer Folgenummer durch den Folgeerzeuger 440 empfangen wird, Bits in dem Vc 462, die der aktuellen Folgenummer N1 entsprechen (wobei die gesetzten Bits die sekundäre Einheit 320 3 angeben). Der Folgeerzeuger 440 setzt zudem Bits in dem Vp 464, die den sekundären Einheiten entsprechen, welche an einer Schreiboperation auf der Grundlage der vorherigen Folgenummer N0 beteiligt waren (so kann in manchen Fällen der vorherige Wert des Vc 462 als der aktuelle Wert des Vp 464 verwendet werden). Der Folgeerzeuger 440 erzeugt außerdem den Vt 466 (z. B. durch Ausführung einer ODER-Funktion mit Vc 462 und Vp 464). Der Folgeerzeuger 440 überträgt die aktuelle Folgenummer N1 zusammen mit dem Vt 466 an die primäre Einheit 310 3. Der Folgeerzeuger 440 überträgt außerdem eine Pseudo-Schreiboperationsnachricht an sekundäre Einheiten, die an der vorherigen Folgenummer N0 beteiligt sind (z. B. sekundäre Einheiten, die durch die in dem Vp 464 gesetzten Bits angegeben werden). Die Pseudo-Schreiboperationsnachricht beinhaltet die aktuelle Folgenummer N1 sowie den Vc 462 (der die sekundären Einheiten angibt, die an der Schreiboperation der aktuellen Folgenummer beteiligt sind).
-
Die primäre Einheit 310 3 übergibt die Schreiboperation an den primären Speicher 312 und überträgt sie zusammen mit der aktuellen Folgenummer N1 und dem Vt 466 an die sekundäre Einheit, die für die Schreiboperation auf die entsprechenden sekundären Speichereinheiten 326 zugreifen kann (z. B. an die sekundäre Einheit 320 3). Nach Ausführung der Schreiboperationen für die vorherige Folgenummer N0 übertragen die sekundären Einheiten 320 1 und 320 2 eine Nachricht über die Folgenummerausführung an sekundäre Einheiten, die an der Schreiboperation der aktuellen Folgenummer N1 beteiligt sind (z. B. erhalten von dem Vc 462, der durch die sekundären Einheiten 320 1 und 320 2 von dem Folgeerzeuger 440 empfangen wurde). Wenn die sekundäre Einheit 320 3 die Nachricht über die Folgenummerausführung von sekundären Einheiten empfängt, die an der Schreiboperation der vorherigen Folgenummer N0 beteiligt waren (wobei diese durch die sekundäre Einheit 320 3 aus dem Vt 466 erhalten werden kann), übergibt die sekundäre Einheit 320 3 die Schreiboperation der aktuellen Folgenummer N1 an den sekundären Speicher 324.
-
6 ist ein Ablaufplan, der eine Ausführungsform eines Verfahrens zum Koordinieren von Schreiboperationsabfolgen veranschaulicht. Das Verfahren beginnt in Block 600, wo eine bestimmte primäre Einheit 310 eine Schreiboperation empfängt. In Block 602 überträgt die primäre Einheit 310 eine Anforderung einer Folgenummer zusammen mit einer Angabe der entsprechenden sekundären Einheit 320 für die Schreiboperation an den Folgeerzeuger 440. In Block 604 empfängt der Folgeerzeuger 440 die Anforderung der Folgenummer. In Block 606 erzeugt der Folgeerzeuger 440 eine aktuelle Folgenummer für die Schreiboperation. In Block 608 erzeugt der Folgeerzeuger 440 den Vc 462 für die aktuelle Folgenummer. In Block 610 erzeugt der Folgeerzeuger 440 den Vp 464 auf der Grundlage der vorherigen Folgenummer. In Block 612 erzeugt der Folgeerzeuger 440 den Vt 466 auf der Grundlage von Vc 462 und Vp 464.
-
In Block 614 überträgt der Folgeerzeuger 440 die aktuelle Folgenummer und den Vt 466 an die anfordernde primäre Einheit 310. In Block 616 übergibt die primäre Einheit 310 die Schreiboperation an den primären Speicher 312. In Block 618 überträgt die primäre Einheit 310 die Schreiboperation, die aktuelle Folgenummer und den Vt 466 an die entsprechende sekundäre Einheit 320 (z. B. die durch den Vc 462 angegebene sekundäre Einheit 320). In Block 620 überträgt der Folgeerzeuger 440 die aktuelle Folgenummer und den Vc 462 an die sekundären Einheiten 320, die an der vorherigen Folgenummer beteiligt waren (z. B. die durch den VP 464 angegebenen sekundären Einheiten 320). In Block 622 übertragen die sekundären Einheiten 320, die an der Schreiboperation der vorherigen Folgenummer beteiligt waren, eine Nachricht über die Ausführung der vorherigen Folgenummer an die sekundären Einheiten 320, die an der Schreiboperation der aktuellen Folgenummer beteiligt sind (z. B. die durch den Vc 462 angegebenen sekundären Einheiten 320). In Block 624 empfangen die sekundären Einheiten 320, die an der Schreiboperation der aktuellen Folgenummer beteiligt sind, die Nachrichten über die Ausführung der vorherigen Folgenummer von den sekundären Einheiten 320, die an der Schreiboperation der vorherigen Folgenummer beteiligt waren. Als Reaktion darauf, dass die sekundäre Einheit 320, die an der Schreiboperation der aktuellen Folgenummer beteiligt ist, alle Nachrichten über die Ausführung der vorherigen Folgenummer empfangen hat (indem sie z. B. den Empfang einer Nachricht über die Folgenummerausführung von jeder sekundären Einheit 320 mit Ausnahme ihrer selbst überprüft, wie durch den Vt 466 angegeben), übergibt sie in Block 626 die Schreiboperation an den sekundären Speicher 324.
-
Somit ermöglichen Ausführungsformen der vorliegenden Offenbarung eine effizientere Abfolge von Schreiboperationen durch Verringern der Bandbreite. Ausführungsformen der vorliegenden Offenbarung ermöglichen beispielsweise das Verarbeiten von Schreiboperationen in der richtigen Reihenfolge und verringern zugleich die Nachrichtenübertragung zwischen Einheiten. Des Weiteren ermöglichen Ausführungsformen der vorliegenden Erfindung das Verarbeiten von Schreiboperationen in der richtigen Reihenfolge für eine beliebige Anzahl von Einheiten, ohne eine Nachrichtenübertragung an andere Einheiten zu erfordern, wenn ein wie auch immer geartetes benachbartes Paar von Folgennummern nur Schreiboperationen für bestimmte sekundäre Einheiten enthält.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Code-Teil darstellen, der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die angegebene(n) logische(n) Funktion(en) realisieren lässt/lassen. Zu beachten ist ferner, dass bei manchen alternativen Ausführungsformen die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten können. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Ebenfalls erwähnenswert ist, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellung sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplan-Darstellung durch Spezialsysteme auf der Grundlage von Hardware, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert werden kann/können.