-
TECHNISCHER ANWENDUNGSBEREICH
-
Die vorliegende Erfindung bezieht sich auf ein Computerprogrammprodukt, ein System und ein Verfahren zum Erstellen einer Wiederherstellungskopie aus einer Quelldaten-Kopie in einem Repository, das Quelldaten an verschiedenen Zeitpunkten (Point-in-Times) aufweist.
-
STAND DER TECHNIK
-
In eine Speicherumgebung kann ein Speicher-Controller Point-in-Time-(„PiT”-)Kopien eines Produktionsdatenträgers unter Verwendung von Point-in-Time-Kopiertechniken erstellen, wie IBM® FlashCopy®, Snapshot usw. Eine Point-in-Time-Kopie repliziert Daten in einer Weise, die augenblicklich erscheint, und ermöglicht einem Host den fortgesetzten Zugriff auf den Quelldatenträger, während tatsächliche Datenübertragungen auf den Kopie-Datenträger auf einen späteren Zeitpunkt vertagt werden. Die PiT-Kopie scheint augenblicklich vorzuliegen, da an die Kopieroperation eine „vollständige” Antwort in Reaktion auf das Generieren von Beziehungsdatenstrukturen zurückgegeben wird, ohne dass Daten von der Quelle auf die Zieldatenträger kopiert werden. PiT-Kopiertechniken verzögern in der Regel die Übertragung der Daten im Quelldatenträger zum Zeitpunkt der Definition der PiT-Kopierbeziehung auf den Kopie-Zieldatenträger, bis eine Schreiboperation für diesen Datenblock auf dem Quelldatenträger angefordert wird. Datenübertragungen müssen ebenso als Hintergrundkopierprozess mit minimaler Auswirkung auf die Systemleistung erfolgen. Die PiT-Kopierbeziehungen, die sofort in Reaktion auf den PiT-Kopierbefehl definiert werden, enthalten eine Bitmap oder eine andere Datenstruktur, das/die den Speicherort der Blöcke auf dem Datenträger entweder im Quelldatenträger oder dem Kopie-Datenträger angibt. Die PiT-Kopie umfasst die Kombination der Daten im Quelldatenträger und der Daten, die durch die an den Zieldatenträger übertragenen Aktualisierungen überschrieben werden sollen. IBM und FlashCopy sind Warenzeichen der International Business Machines Corporation, die in vielen Gerichtsbarkeiten weltweit registriert sind.
-
Wenn ein Update eines Blocks im Quelldatenträger, der an einer PiT-Kopierbeziehung beteiligt ist, erhalten wird, muss die Kopie des Tracks an diesem Zeitpunkt auf eine Ersatzdatei oder den Zieldatenträger kopiert werden, bevor die neuen Daten für den Track auf den Quelldatenträger geschrieben werden, wodurch die Point-in-Time-Kopie der Daten überschrieben wird. Das Erstellen einer Wiederherstellungskopie aus einer Quelldatenkopie in einem Repository mit Quelldaten an verschiedenen Zeitpunkten ist kompliziert. Daher besteht im Stand der Technik die Erfordernis, das oben beschriebene Problem zu lösen.
-
Zeit-Kopie und späterer Zeitpunkt; für jede Kopie zu einem Zeitpunkt (Point-in-Time-Kopie) Kopieren der geänderten Quelldaten aufweisend die Quelldaten, die in den Änderungsinformationen für die Point-in-Time-Kopie als geändert angegeben sind, in das Repository; Empfangen einer Wiederherstellungsanforderung zum Wiederherstellen der Quelldaten an einem Wiederherstellungszeitpunkt; Bestimmen der Quelldaten im Repository am Wiederherstellungszeitpunkt; und Kopieren der bestimmten Quelldaten aus dem Repository in eine Wiederherstellungskopie.
-
Gemäß einem anderen Aspekt stellt die vorliegende Erfindung ein Verfahren zum Verwalten von Quelldaten in einem Repository bereit, wobei das Verfahren die Schritte aufweist: Kopieren aller Quelldaten zu einem ersten Zeitpunkt in ein Repository; Initiieren von Point-in-Time-Kopien zu verschiedenen Zeitpunkten der Quelldaten, die auf den ersten Zeitpunkt folgen; in Reaktion auf den Abschluss einer jeder der Point-in-Time-Kopien Übertragen der Repository-Änderungsinformationen, die die in den Quelldaten geänderten Daten angeben, die zwischen dem Zeitpunkt der Point-in-Time-Kopie und einem späteren Zeitpunkt geändert wurden; für jede Point-in-Time-Kopie Kopieren der geänderten Quelldaten, die die in den Änderungsinformationen für die Point-in-Time-Kopie als geändert angegebenen Quelldaten aufweisen, in das Repository; Empfangen einer Wiederherstellungsanforderung zum Wiederherstellen der Quelldaten an einem Wiederherstellungszeitpunkt; Bestimmen der Quelldaten im Repository am Wnachfolgenden Zeitpunkt; und Kopieren der bestimmten Quelldaten vom Repository in eine Wiederherstellungskopie.
-
Gemäß einem weiteren Aspekt stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Verwalten der Quelldaten in einem Repository bereit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, das von einem Verarbeitungsschaltkreis lesbar ist, und zum Speichern der Anweisungen zur Ausführung des Verarbeitungsschaltkreises zum Durchführen eines Verfahrens zum Durchführen der Schritte der Erfindung.
-
Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein auf einem computerlesbaren Medium gespeichertes und in den internen Arbeitsspeicher eines digitalen Computer ladbares Computerprogramm bereit, das bei Ausführung des Programms auf einem Computer Software-Codeabschnitte zum Ausführen der Schritte der Erfindung aufweist.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung nun wird ausführlicher in rein beispielhafter Weise mit Bezugnahme auf die bevorzugten Ausführungsformen beschrieben, wie in den folgenden Abbildungen dargestellt:
-
1 veranschaulicht eine Ausführungsformen der Speicherumgebung gemäß einer bevorzugten Ausführungsformen der vorliegenden Erfindung;
-
2 veranschaulicht eine Ausführungsform der Point-in-Time-Kopie-Informationen des Speicher-Controllers gemäß einer bevorzugten Ausführungsformen der vorliegenden Erfindung;
-
3 veranschaulicht eine Ausführungsform der Point-in-Time-Kopie-Informationen des Repositorys gemäß einer bevorzugten Ausführungsformen der vorliegenden Erfindung;
-
4 veranschaulicht eine Ausführungsform der Operationen zum Erstellen eines Repositorys mit Quelldaten und Point-in-Time-Informationen der Quelldaten zu verschiedenen Zeitpunkten gemäß einer bevorzugten Ausführungsformen der vorliegenden Erfindung;
-
5a, 5b und 5c veranschaulichen Beispiele von Zuständen der Quelldaten und des Repositorys zu verschiedenen Zeitpunkten gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
-
6 veranschaulicht eine Ausführungsform der Operationen zum Erstellen einer Wiederherstellungskopie gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
-
7 veranschaulicht eine Ausführungsform der Operationen zum Bestimmen von Quelldaten zum Kopieren in die Wiederherstellungskopie gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
-
8 veranschaulicht eine Computingumgebung, in der die Komponenten von 1 implementiert werden können, gemäß dem Stand der Technik und in der eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann.
-
DETAILLIERTE BESCHREIBUNG
-
Die beschriebenen Ausführungsformen stellen Techniken zum Erstellen eines Repositorys zum Verwalten einer vollständigen Kopie von Quelldaten und Point-in-Time-Kopien der Quelldaten bereit, damit die Quelldaten aus dem Repository zu verschiedenen Zeitpunkten wiederhergestellt werden können.
-
ÜBERSICHT
-
Vorgesehen sind ein Computerprogrammprodukt, System und Verfahren zum Erstellen einer Wiederherstellungskopie (Restore Copy) von einer Quelldaten-Kopie in einem Repository mit Quelldaten zu verschiedenen Zeitpunkten (Point-in-Times). Alle Quelldaten zu einem ersten Zeitpunkt werden in ein Repository kopiert. Point-in-Time-Kopien werden zu verschiedenen Zeitpunkten der Quelldaten initiiert, die auf den ersten Zeitpunkt folgen; in Reaktion auf das Erstellen einer jeden der Point-in-Time-Kopien Übertragen von Änderungsinformationen an das Repository, die die in den Quelldaten geänderten Daten angeben, die zwischen dem Zeitpunkt der Point-in-Time-Kopie und einem späteren Zeitpunkt geändert wurden. Für jede Point-in-Time-Kopie werden geänderte Quelldaten, die die in den Änderungsinformationen für die Point-in-Time-Kopie als geändert angegebenen Daten aufweisen, ins Repository kopiert. Eine Wiederherstellungsanforderung wird zum Wiederherstellen der Quelldaten am Wiederherstellungszeitpunkt empfangen. Eine Bestimmung der Quelldaten im Repository am Wiederherstellungszeitpunkt erfolgt und die bestimmten Quelldaten werden vom Repository in eine Wiederherstellungskopie kopiert.
-
Gemäß einem ersten Aspekt stellt die vorliegende Erfindung ein System zum Verwalten von Quelldaten in einem Repository bereit, das aufweist: einen Prozessor; und ein computerlesbare Speichermedium mit Programmanweisungen, die von dem Prozessor zur Durchführung von Operationen ausgeführt werden, wobei die Operationen aufweisen: Kopieren aller Quelldaten zu einem ersten Zeitpunkt in ein Repository; Initiieren von Point-in-Time-Kopien zu verschiedenen Zeitpunkten der Quelldaten, die auf den ersten Zeitpunkt folgen; in Reaktion auf den Abschluss von einer jeden der Point-in-Time-Kopien Übertragen der Repository-Änderungsinformationen, die die in den Quelldaten geänderten Daten angeben, die zwischen dem Zeitpunkt der Point-in-Time Kopie und einem nachfolgenden Zeitpunkt geändert wurden; die Operationen zum Verwalten der Point-in-Time-(„PiT”-)Kopie-Informationen im Repository und das Durchführen der Restore-Operationen kann durch eine Programmkomponente durchgeführt werden, die sich von der Speicher-Controller-Logik, die die PiT-Kopien aus den Quelldaten erstellt, unterscheidet, sodass das Repository getrennt vom Speicher-Controller gewartet, verwendet und verwaltet wird.
-
1 veranschaulicht eine Ausführungsform der Datenspeicherumgebung mit einem Speicher-Controller 100 zum Verwalten des Zugriffs auf einen ersten Speicher 102, der Quelldaten 104 aufweist, wie einen Produktionsdatenträger, der von verschiedenen Hostsystemen verwendet wird. Ein Host 106 enthält ein Repository-Copy-Manager-Programm 108 zum Verwalten des Kopierens der Quelldaten 104 in ein Repository 110 in einem zweiten Speicher 112. Der Speicher-Controller 100, der Host 106 und der zweite Sprecher 112 können über ein Netzwerk 114 kommunizieren.
-
Der Speicher-Controller 100 weist einen Point-in-Time-(„PiT””-)Copy-Manager 116 zum Erstellen von Point-in-Time-Kopien der Quelldaten 104 auf, z. B. FlashCopy, Snapshot usw. Beim Erstellen einer PiT-Kopie generiert der PiT-Copy-Manager 116 PiT-Kopie-Informationen 200a auf der PiT-Kopie, die zu einem Zeitpunkt erstellt sind. Der Speicher-Controller 100 enthält weiterhin ein Betriebssystem 118, das Code und Logik zum Verwalten der Eingabe/Ausgabe-(„E/A”, Input/Output „I/O”)-Anforderungen der Quelldaten 104 umfasst. Das Betriebssystem 118 kann die Quelldaten 104 in einem oder mehreren Datenträgern konfigurieren und die Daten werden in Dateneinheiten, wie Tracks, logischen Blockadressen (LBAs), Extents usw. gespeichert. Der PiT-Copy-Manager 116 kann ein vom Betriebssystem 118 bereitgestellter Kopierservice sein.
-
Die Speicher 102 und 112 können Tracks in einer Redundant-Array-of-Independent-Disks-(RAID)-Konfiguration speichern, wobei Strides der Tracks über mehrere Speichereinrichtungen geschrieben werden, die die Speicher 102 und 112 aufweisen. Der Speicher 102 und 112 kann jeweils eine oder mehrere im Stand der Technik bekannte Speichereinrichtungen aufweisen, wie miteinander verbundene Speichereinrichtungen, wobei die Speichereinrichtungen umfassen können Festplattenlaufwerke, Solid State Storage-Einrichtungen (SSD), die aus Solid State-Elektronik bestehen, wie einem EEPROM (Electrically Erasable Programmable Read-Only Memory), Flash-Speicher, Storage-Class Memory (SCM) usw., magnetische Speicherdatenträger, optische Festplatten, Bänder usw.
-
Das Netzwerk 114 kann ein Netzwerk umfassen, wie ein oder mehrere miteinander verbundenen lokale Netzwerke (LAN, Local Area Network), Speichernetzwerke (SAN, Storage Area Network), ein Weitverkehrsnetzwerk (WAN, Wide Area Network), ein Peer-to-Peer-Netzwerk, ein Funknetzwerk usw.
-
Ein PiT-Copy-Manager 116 führt eine PiT-Kopieroperation durch, die die Daten in einer Weise repliziert, die augenblicklich erscheint, und ermöglicht einem Prozess den fortgesetzten Zugriff auf den Quelldatenträger, während tatsächliche Datenübertragungen auf den Kopie-Datenträger auf einen späteren Zeitpunkt vertagt werden. Die PiT-Kopie scheint augenblicklich vorzuliegen, da eine „vollständige” Antwort an die Kopieroperation in Reaktion auf das Generieren der Beziehungsdatenstrukturen ohne Kopieren der Daten zurückgegeben wird.
-
Der Repository-Copy-Manager 108 kopiert die Quelldaten 104 zu verschiedenen Zeitpunkten in das Repository 110, einschließlich einer ersten Kopie aller Quelldaten und kopiert die PiT-Kopie-Informationen 200 im Speicher-Controller 100 in das Repository 110, um sie als Repository-PiT-Kopie-Informationen 300 im Repository 110 zu speichern. Der Repository-Copy-Manager 108 bestimmt mit den PiT-Kopie-Informationen 300 die in den einen Quelldaten 104 geänderten Daten, um sie in die Änderungsdaten 120 in das Repository 110 zu kopieren. Um alle Quelldaten zu einem ersten Zeitpunkt in das Repository 110 zu kopieren, kann der Repository-Copy-Manager 108 die Änderungsinformationen für die erste PiT-Kopie oder PiT-Bitmap modifizieren, die ein Bit für jede Dateneinheit in den Quelldaten 104 haben, das angibt, ob die Daten geändert wurden, um die modifizierte erste Änderungsinformation 200 0' zu generieren, die angibt, dass sich ein jede Dateneinheit in den Quelldaten 104 geändert hat. Der Repository-Copy-Manager 108 kann dann alle die Quelldaten 104, die in den modifizierten ersten Änderungsinformationen 200 0' angegeben wurden, in die geänderten Daten 120 im Repository 110 kopieren, um eine vollständige Kopie der Quelldaten 104 am ersten Zeitpunkt im Repository bereitzustellen. Der Repository-Copy-Manager 108 kann die Änderungsinformationen in den PiT-Kopie-Informationen 200 für PiT-Kopien verwenden, die auf den ersten Zeitpunkt folgen, um die geänderten Daten für unterschiedliche Zeitpunkte in die geänderten Daten 120 im Repository 110 zu kopieren.
-
In den beschriebenen Ausführungsformen behält der Repository-Copy-Manager 108 eine eigenständige vollständige Kopie der Quelldaten 104 und der PiT-Kopie-Informationen 300 der Quelldaten 104 in einem separaten Speicher 112 bei, sodass die Daten für verschiedene Zeitpunkte unabhängig von den Quelldaten 104 im ersten Speicher 102 und den PiT-Kopie-Informationen 200a im Speicher-Controller 100 wiederhergestellt werden können. Somit stellt das Repository 100 durch die Ermöglichung einer unabhängigen Wiederherstellung der Quelldaten 104 ein redundante sicheres Backup unabhängig vom Speicher-Controller 100 bereit, um den Speicher-Controller 100 oder den ersten Speicher 102 vor einem Fehler zu schützen.
-
In bestimmten Ausführungsformen wird das Erstellen und die Verwaltung des Repositorys 110 von einem Repository-Copy-Manager 108 verwaltet, der von Speicher-Controller 100-Programmen, wie dem PiT-Copy-Manager 116, der die PiT-Kopien erstellt, getrennt ist.
-
Zum Erzeugen der Wiederherstellungskopie 124 kann der Repository-Copy-Manager 108 Wiederherstellung-Kopie-Informationen 130 nutzen, die die Quelldaten in den geänderten Daten 120 angeben, die in die Wiederherstellungskopie 124 kopiert werden müssen.
-
In der Ausführungsform von 1 können die Repository-Erstellungs- und Wiederherstellungsoperationen durch Programmkomponenten durchgeführt werden, wie dem Repository-Copy-Manager 108, die von der Speicher-Controller-Logik getrennt sind, wie zum Beispiel dem PiT-Copy-Manager 116, der die PiT-Kopien erstellt hat. In einer alternativen Ausführungsform können der Repository-Copy-Manager 108 und/oder das Repository 110 auf dem Speicher-Controller 100 verwaltet werden.
-
2 veranschaulicht eine Instanz der PiT-Kopie-Informationen 200 i für die PiT-Kopie zum Zeitpunkt Ti, die Informationen aufweisen kann, die für Kopie-Informationen 200 des Speicher-Controllers verwaltet werden, und einen PiT-Copy-Identifier 202 aufweisen kann, der die vom PiT-Copy-Manager 116 auf dem Speicher-Controller 100 erstellte PiT-Kopie identifiziert; einen Zeitpunkt 204 der PiT-Kopie 202, was angeben kann, dass Daten zum Zeitpunkt 204 konsistent sind; Änderungsinformationen 206, die angeben, welche Daten oder Tracks sich in den Quelldaten 104 seit dem Zeitpunkt 204 und bei geöffneter PiT-Kopie 202 geändert haben, die eine Bitmap mit einem Bit für jede Dateneinheit (z. B. Track) aufweisen kann, das auf einen von zwei Werten eingestellt ist, der angibt, ob die durch das Bit dargestellten Daten bzw. der Track seit dem Zeitpunkt 204 aktualisiert wurden oder nicht; und die geänderten PiT-Daten 208 angeben, die Daten am Zeitpunkt 204 aufweisen, die nach dem Zeitpunkt 204 geändert wurden, während die PiT-Kopie 202 geöffnet war und weiterhin aktualisiert wurde. PiT-Kopie-Informationen können für eine erste am ersten Zeitpunkt T0 erstellte PiT-Kopie und für nachfolgende an späteren Zeitpunkten erstellte PiT-Kopien verwaltet werden.
-
In einer Ausführungsform kann die PiT-Kopie zu einem Zeitpunkt nach dem Zeitpunkt 204 abgeschlossen oder eingefroren werden, sodass die geänderten PiT-Daten 208 Daten enthalten, die ab dem Zeitpunkt 204 bis zum Abschluss bzw. dem Einfrieren der PiT-Kopie 202 oder dem Initiieren einer neuen PiT-Kopie geändert wurden, und keine geänderten Daten nach dem Abschluss, z. B. Einfrieren, der PiT-Kopie 202 enthalten. Eine PiT-Kopie 202 kann mit einem Freeze-Befehl oder mit der Initiierung einer nachfolgenden PiT-Kopie zu einem späteren Zeitpunkt als der Zeitpunkt 204 abgeschlossen werden. Eine abgeschlossene PiT-Kopie 200 kann zu einem Zeitpunkt konsistent sein. Andere Techniken können zum Abschluss, zum Beispiel Einfrieren, der PiT-Kopie verwendet werden.
-
3 veranschaulicht eine Ausführungsform einer Instanz der im Repository 110 verwalteten PiT-Kopie-Informationen 300 i, die aus einer Instanz der PiT-Kopie-Informationen 200 i aus dem Speicher-Controller 100 generiert wird und aufweist: einen PiT-Copy-Identifier 302 zum Identifizieren der vom PiT-Copy-Manager 116 im Speicher-Controller 100 erstellten PiT-Kopie 202; einen Zeitpunkt 304 der PiT-Kopie 302, was bedeuten kann, dass Daten zu dem Zeitpunkt 304 konsistent sind; Änderungsinformationen 306, die angeben, welche Daten oder Tracks in den Quelldaten 104 sich seit dem Zeitpunkt 304 und bei geöffneter PiT-Kopie 302 geändert haben, die ein Bitmap aufweisen können; und einen Repository-Offset 308, der einen Offset in den geänderten Daten 120 angibt, an dem sich die in den Änderungsinformationen 306 für die PiT-Kopie 302 angegebenen Daten befinden. Der Speicherort der geänderten Daten 120 einer bestimmten geänderten Dateneinheit für eine PiT-Kopie 302 kann an einem Offset vom Repository-Offset 208 in den geänderten Daten 120 bestimmt werden, wie durch Summieren des Repository-Offsets 208 mit der in den Änderungsinformationen 306 angegebenen Zahl der geänderten Einheit, d. h., die j-te-Dateneinheit mal einer Länge der Dateneinheit. Auf diese Weise werden die geänderten Daten von einer PiT-Kopie 300 sequenziell hinter die letzten geschriebenen Daten in den Änderungsdaten 120 in das Repository geschrieben.
-
4 veranschaulicht eine Ausführungsform der Operationen, die von dem Repository-Copy-Manager 108 und dem PiT-Copy-Manager 116 zum Kopieren der Quelldaten 104 in das Repository 110 zu verschiedenen Zeitpunkten aus den PiT-Kopien für die Quelldaten 104 durchgeführt werden, wie ein vom PiT-Copy-Manager 116 erstellter Produktionsdatenträger. Bei der Initiierung (in Block 400) der Repository-Kopieroperationen für die Quelldaten 104 sendet der Repository-Copy-Manager 108 (in Block 402) einen Befehl an den PiT-Copy-Manager 116 zum Erstellen einer ersten PiT-Kopie 200 0 zu einem ersten Zeitpunkt, der hier als T0 bezeichnet wird. Der Repository-Copy-Manager 108 kann die ersten Änderungsinformationen 200 0 modifizieren, um eine modifizierte erste Änderung 200 0' zu erzeugen, die angibt, dass alle Quelldateneinheiten in den Quelldaten geändert wurden. Der Repository-Copy-Manager 108 kann (in Block 406) die modifizierten ersten Änderungsinformationen 200 0' an das Repository 110 senden, die angeben, dass alle Dateneinheiten geändert wurden, und die geänderten PiT-Daten 208 0 für die in den modifizierten ersten Änderungsinformationen 200 0' angegebene erste PiT-Kopie (T0), die alle Quelldaten als geändert angeben. Alle Quelldaten zum ersten Zeitpunkt werden in die geänderten Daten 120 in das Repository 110 kopiert. Die PiT-Kopie 200 0' vom Speicher-Controller 100 wird als PiT-Kopie-Informationen 300 0 mit einem Repository-Offset 308 von 0 gespeichert werden, da der Start der Daten von der ersten PiT-Kopie T0 am Beginn der geänderten Daten 120 im Repository 110 gespeichert wird.
-
Der Repository-Copy-Manager 108 kann (in Block 408) einen Befehl an den PiT-Copy-Manager 116 senden, um eine nachfolgende PiT-Kopie (Ti+1) an einem späteren Zeitpunkt Ti+1 zu erstellen, was zu den PiT-Kopie-Informationen 200 (i+1) führt. In einer Ausführungsform kann der Repository-Copy-Manager 108 einzelne Befehle an den PiT-Copy-Manager 116 senden, um PiT-Kopien zu erstellen und eine zuvor erstellte PiT-Kopie einzufrieren. In einer alternativen Ausführungsform kann der Repository-Copy-Manager 108 einen Befehl an den PiT-Copy-Manager 116 senden, um ihn anzuweisen, in periodischen Abständen PiT-Kopien der Quelldaten 104 zu erstellen, wobei die Erstellung der nachfolgenden PiT-Kopie die zuvor erstellte PiT-Kopie einfriert. Weiterhin kann der PiT-Copy-Manager 116 im Speicher-Controller 100 unabhängig PiT-Kopien ohne Aufforderung vom Repository-Copy-Manager 108 erstellen.
-
Bei der Bestimmung (in Block 410), dass die vorhergehende Point-in-Time-Kopie an Ti beendet ist, sendet der Repository-Copy-Manager 116 (in Block 412) die PiT-Kopie-Informationen 200 i für die PiT-Kopie zum Zeitpunkt Ti, einschließlich den Änderungsinformationen 206 i und den geänderten PiT-Daten 208 i an das Repository 110 zum Speichern, um PiT-Kopie-Informationen 300 i für Ti im Repository zu speichern. In einer Ausführungsform kann eine PiT-Kopie zum Zeitpunkt Ti bei der Erstellung der nachfolgenden PiT-Kopie zum Zeitpunkt Ti+1 abgeschlossen sein. In einer alternativen Ausführungsform kann eine PiT-Kopie durch Absetzen eines Freeze-Befehls zum Einfrieren der PiT-Kopie abgeschlossen werden, sodass die Änderungsinformationen 206 die Anzeige der Änderungen an den Quelldaten 104 beenden. Der Repository-Copy-Manager 108 erstellt (in Block 414) im Repository PiT-Kopie-Informationen 300 aus den empfangenen PiT-Kopie-Informationen 200 i.
-
Der Repository-Copy-Manager 108 kann (in Block 416) die Quelldaten 104 eines späteren Zeitpunkts (Ti+1), die sich seit dem vorhergehenden Zeitpunkt geändert haben, an die geänderten Daten 120 im Repository 110 übertragen, damit die vollständige Kopie für den späteren Zeitpunkt Ti+1 aktualisiert ist. Um diese Operation durchzuführen, kann ein Repository-Copy-Manager 108 aus den Änderungsinformationen 206 für die vorhergehende PiT-Kopie an Ti bestimmen, dass sich die Dateneinheiten in den Quelldaten 100 geändert haben und dann diese Dateneinheiten von den Quelldaten 104 in die geänderten Daten 120 kopieren. Auf diese Weise werden für den späteren Zeitpunkt Ti+1, wenn die nachfolgende PiT-Kopie (Ti+1) erstellt wird, Dateneinheiten in den Quelldaten 104, die sich zwischen dem vorhergehenden Zeitpunkt Ti und dem späteren Zeitpunkt Ti+1 geändert haben, in die geänderten Daten 120 im Repository 110 kopiert.
-
Der Repository-Copy-Manager und 108 kann (in Block 418) im Repository-Offset 308 den Dateneinheit-Offset in den geänderten Daten 120 angeben, an dem in den geänderten Daten 120 die geänderten Daten für die PiT-Kopie zu Ti beginnen. Wenn (in Block 420) weitere Point-in-Time-Kopien erstellt werden müssen, dann betrachtet der Repository-Copy-Manager 108 (in Block 442) im nächsten Iterationsschritt zur Verarbeitung der nächsten PiT-Kopie die aktuelle spätere Point-in-Time-Kopie an (Ti+1) als vorherige Point-in-Time-Kopie an Ti. Auf diese Weise wird i wirksam erhöht, wenn der aktuelle spätere Zeitpunkt Ti+1 der vorhergehende Zeitpunkt wird und ein nächster Zeitpunkt der neue spätere Zeitpunkt wird. Die Steuerung geht dann zurück an Block 408, um eine neue nachfolgende PiT-Kopie (Ti+1) an einem neuen späteren Zeitpunkt Ti+1 zu erstellen oder zu verarbeiten. Wenn (in Block 420) keine weiteren PiT-Kopien zu verarbeiten sind, endet die Steuerung.
-
Bei den beschriebenen Ausführungsformen von 4 wird ein Repository 110 einer vollständigen Kopie der Quelldaten 104 mit PiT-Kopie-Informationen für verschiedene PiT-Kopien unabhängig von den Operationen des Speicher-Controllers 100 zum Erstellen der PiT-Kopien erstellt. Auf diese Weise sind die Logik oder die Operationen der Repository-Verwaltungsoperationen unabhängig von der Logik des Speicher-Controllers 100 zum Erstellen von PiT-Kopien.
-
5a, 5b, 5c veranschaulichen ein Beispiel der Operationen von 4 zum Kopieren aller Quelldaten an unterschiedlichen Zeitpunkten in die geänderten Daten 120 und die Repository-PiT-Kopie-Informationen 200b. 5a zeigt den Zustand an einem ersten Zeitpunkt T0 der Quelldaten 104 0 im Quellspeicher 102, die in die geänderten Daten 120 0 in das Repository 110 kopiert werden, die alle Quelldaten 104 am ersten Zeitpunkt T0 enthalten können. Weiterhin wird eine Kopie der PiT-Informationen 200 0 zum ersten Zeitpunkt T0, die die Änderungsinformationen 206 0' enthält, die angeben, dass alle Quelldaten im Speicher-Controller 100 sich geändert haben, erstellt.
-
5b zeigt einen Zeitpunkt T1, an dem eine zweite PiT-Kopie 200 1 an T1 erstellt wird, was zum Abschluss oder Einfrieren der vorhergehenden PiT-Kopie 200 0 an T0 mit geänderten Daten 208 0 am Zeitpunkt T0 führt, bevor Änderungen zwischen T0 und T1 auftreten. Der Repository-Copy-Manager 108 kopiert die zwischen T0 und T1 geänderten Daten, die als Einheiten 520 und 522 dargestellt sind, in die geänderten Daten 120 1 im Repository 110 zur Aktualisierung der geänderten Daten 120 1 auf die geänderten Daten 520, 522 zum Zeitpunkt T1, die auf die ersten geschriebenen Daten folgen. Weiterhin werden die abgeschlossenen oder eingefrorenen PiT-Copy-Informationen 200 0 an T0 in das Repository 110 zum Speichern als PiT-Kopie 300 0 kopiert, die einen Offset 308 0 von Null aufweisen, da die Quelldaten für die erste PiT-Kopie 200 0 die ersten Daten sind, die in die geänderten Daten 120 1 geschrieben werden.
-
5c zeigt einen Zeitpunkt T2, an dem eine dritte PiT-Kopie 200 2 an T2 erstellt wird, was zum Abschluss oder Einfrieren der vorherigen PiT-Kopie 200 1 an T1 mit geänderten Daten 208 1 am Zeitpunkt T1 führt, bevor Änderungen zwischen T1 und T2 auftreten. Der Repository-Copy-Manager 108 kopiert die geänderten Daten zwischen T1 und T2, wie als 524 und 526 dargestellt, in das Repository 110, um die geänderten Daten 120 2 auf die Daten zum Zeitpunkt T2 zu aktualisieren. Weiterhin werden die abgeschlossenen oder eingefrorenen PiT-Kopie-Informationen 200 1 an T1 in das Repository 110 kopiert, um sie als Repository PiT-Kopie 300 1 zu speichern, was einen Repository-Offset 308 1, der den Dateneinheit-Offset im Repository 120 2 angibt, an dem die geänderten Daten 520 und 522 beginnen, beinhaltet.
-
6 veranschaulicht eine Ausführungsform von Operationen, die durch den Repository-Copy-Manager 108 zum Erstellen einer Wiederherstellungskopie 124 aus dem Repository 110 zu einem Wiederherstellungszeitpunkt (TR) durchgeführt werden, der einen Zeitpunkt von einem der Point-in-Time-Kopien 200 b des Repositorys aufweisen kann. Bei der Verarbeitung (in Block 600) einer Wiederherstellungsanforderung zum Erstellen einer Wiederherstellungskopie 124 der Quelldaten am Wiederherstellungszeitpunkt (TR) konfiguriert der Restore-Copy-Manager 108 (in Block 602) eine leere Wiederherstellungskopie 124 oder einen Wiederherstellungsdatenträger, auf die/den die Daten aus den geänderten Daten 120 für die Wiederherstellung kopiert werden. Der Repository-Copy-Manager 108 bestimmt (in Block 604) Quelldaten zum Kopieren in die Wiederherstellungskopie 124, die geänderte Dateneinheiten aufweisen, aus den geänderten Daten 120 von der ersten PiT-Kopie 200 0, Daten, die als Teil der ersten PiT-Kopie kopiert wurden und eine jede der Point-in-Time-Kopien an oder vor der Wiederherstellungszeit. Wenn in mehreren PiT-Kopien 300 die gleichen Dateneinheiten für die Quelldaten vorliegen, dann werden die Dateneinheiten für die PiT-Kopie, die am nächsten zur Wiederherstellungszeit liegt, in die bestimmten zu kopierenden Quelldaten aufgenommen. Der Repository-Copy-Manager 108 initiiert dann (in Block 606) eine Operation zum Kopieren der bestimmten Quelldaten in die Wiederherstellungskopie 124. Der Repository-Copy-Manager 108 macht (in Block 608) die Wiederherstellungskopie 124 in Reaktion auf den Abschluss des Kopierens der bestimmten Quelldaten verfügbar, um eine vollständige Kopie der Quelldaten am Wiederherstellungszeitpunkt (TR) bereitzustellen.
-
7 veranschaulicht die Ausführungsform der Operationen zum Bestimmen der Quelldaten in den geänderten Daten 120 im Repository 124 zum Kopieren der Wiederherstellungskopie 124, wie die in Block 604 in 6 durchgeführte Operation. Bei der Initiierung der Operation (in Block 700) zur Bestimmung der Quelldaten, die aus den geänderten Daten 120 kopiert werden sollen, initialisiert der Repository-Copy-Manager 108 (in Block 702) Wiederherstellungs-Kopie-Informationen 130, wie eine Bitmap, das alle Quelldateneinheiten als nicht in die Wiederherstellungskopie 124 kopiert angibt. Ti wird (in Block 704) auf TR festgelegt. Der Repository-Copy-Manager 106 bestimmt (in Block 706) die geänderten Dateneinheiten 120 für die PiT-Kopie 300 i zum Zeitpunkt Ti, die in den Wiederherstellungs-Kopie-Informationen 130 als noch nicht kopiert angegeben sind, zum Beispiel mit einem Bitwert, der angibt, dass sie noch nicht kopiert wurden.
-
Für jede in Schritt 706 bestimmte geänderte Dateneinheit bestimmt der Repository-Copy-Manager 106 (in Block 708) aus dem Repository-Offset 308 für die PiT-Kopie an Ti den Speicherort der Dateneinheit im Repository (zum Beispiel die geänderte Dateneinheit-Zahl plus dem Repository-Offset mal einer Länge der Dateneinheit). In einer Ausführungsform kann der Repository-Offset 308 Informationen für die erste geänderte Dateneinheit der PiT-Kopie bereitstellen und der Repository-Copy-Manager 108 muss den Offset für eine bestimmte Dateneinheit basierend auf der Zahl der geänderten Dateneinheit bestimmen, d. h. die in den PiT-Kopieränderungsinformationen 306 i angegebene j-te geänderte Dateneinheit plus den Repository-Offset 308 i, dann wird die Summe mit einer Datenlängeneinheit multipliziert. Alternativ kann der Repository-Offset 308 die Offset-Zahl in den geänderten Daten 120 für jede geänderte Dateneinheit für PiT-Kopien angeben, die auf die erste PiT-Kopie an T0 folgen.
-
Zum Beispiel kann in einer Ausführungsform, in der der Repository-Offset 308i einen Offset aufweist, an dem die geänderten Daten für die PiT-Kopie an Ti in den geänderten Daten 120 beginnen, der bestimmte Speicherort die geänderte Dateneinheitszahl, die die Zahl in der Reihenfolge aufweist, in der die Dateneinheit für die PiT-Kopie an Ti geschrieben wurde, plus dem Repository-Offset 308i für die PiT-Kopie an Ti aufweisen, wobei diese Summe mit der Dateneinheitslänge multipliziert wird. Wenn zum Beispiel die Dateneinheit die dritte Dateneinheit für die PiT-Kopie an Ti ist, die in die geänderten Daten 120 geschrieben wird und der Dateneinheitszahl-Offset, an dem die geänderten Daten für die PiT-Kopie an Ti in den geänderten Daten 120 beginnen, 100 ist, und die Dateneinheitslänge 16 Byte beträgt, dann weist die Position der Dateneinheit in den geänderten Daten 120 die Summe von dreimal 100 multipliziert mit 16 auf, zum Beispiel (3 + 100) × 16, was in den geänderten Daten 120 dem 4800. Byte entspricht.
-
Die bestimmten geänderten Dateneinheiten aus der PiT-Kopie 300 i, deren Speicherort in den geänderten Daten im Block 708 bestimmt wird, werden (in Block 710) in die Wiederherstellungskopie 124 von den bestimmten Speicherorten kopiert und die kopierten Dateneinheiten werden (in Block 712) in den Restore-Kopie-Informationen 130 als kopiert angegeben. Wenn (in Block 714) Ti gleich T0 ist, dann müssen alle PiT-Kopien 300 an oder vor der Wiederherstellungszeit (PR) in Betracht gezogen werden und die Steuerung endet. Andernfalls, wenn Ti nicht gleich P0 ist, dann wird Ti (in Block 716) auf Ti-1 festgelegt, um zu Block 706 zurückzugehen, um die nächste PiT-Kopie 300 i-1, die direkt vor der letzten betrachteten PiT-Kopie 300 i liegt, in Betracht zu ziehen. Mit den Operationen von 7 werden die geänderten Dateneinheiten aus den PiT-Kopien anhand der PiT-Kopien, die sich am nächsten zur Wiederherstellungszeit in umgekehrter zeitlicher Reihenfolge befinden, bestimmt. Wenn auf diese Weise mehrere PiT-Kopien geänderte Daten für die gleiche Quelldateneinheit bereitstellen, dann stellen die kopierten geänderten Daten, die aus der PiT-Kopie stammen, geänderten Daten für die Dateneinheit bereit, die zeitlich am nächsten zum Wiederherstellungszeitpunkt PR liegt, sodass der Wiederherstellungskopie 124 geänderte Daten 120 aus dem Repository 110 zum Wiederherstellungszeitpunkt TR bereitgestellt werden.
-
In der Ausführungsform von 7 werden die geänderten Dateneinheiten für eine in Betracht gezogene PiT-Kopie kopiert, bevor die nächste PiT-Kopie im Betracht gezogen wird. In einer alternativen Ausführungsform können alle aus den verschiedenen PiT-Kopien zu kopierende Quelldateneinheiten bestimmt werden, bevor die geänderten Daten in die Wiederherstellungskopie 124 kopiert werden.
-
Die beschriebenen Ausführungsformen stellen Techniken zum Erstellen eines Repositorys mit allen Quelldateneinheiten an einem ersten Zeitpunkt bereit, einschließlich von Quelldateneinheiten, die sich zwischen den von den Quelldaten 104 erstellten PiT-Kopien geändert haben. Das Repository verwaltet weiterhin PiT-Kopie-Informationen der von den Quelldaten 104 erstellten PiT-Kopien. In den beschriebenen Ausführungsformen kann ein Restore-Kopie-Datenträger an einem Wiederherstellungszeitpunkt aus den geänderten Daten im Repository unter Verwendung der PiT-Kopie-Informationen im Repository erstellt werden, um die am Wiederherstellungszeitpunkt geänderten Daten zu bestimmen, indem die PiT-Kopie-Informationen für PiT-Kopien an oder vor dem Wiederherstellungszeitpunkt berücksichtigt werden.
-
Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Medien) mit computerlesbaren Programmanweisungen darauf sein, um einen Prozessor zum Ausführen von Aspekten der vorliegenden Erfindung zu veranlassen.
-
Das computerlesbare Speichermedium kann eine materielle Vorrichtung sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungsvorrichtung enthalten und speichern kann. Das computerlesbare Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, eine elektronische Speichereinrichtung, eine magnetische Speichereinrichtung, eine optische Speichereinrichtung, eine elektromagnetische Speichereinrichtung, eine Halbleiter-Speichereinrichtung oder jede beliebige geeignete Kombination aus dem Vorhergehenden sein. Eine nicht erschöpfende Liste von spezifischeren Beispielen von computerlesbaren Speichermedien beinhaltet folgende: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (Random Access Memory, RAM), ein Festspeicher (Read-only Memory, ROM), ein löschbarer programmierbarer Festspeicher (EPROM- oder Flash-Speicher), ein statischer Direktzugriffsspeicher (Static Random Access Memory, SRAM), ein tragbarer Compact Disc-Festspeicher (Compact Disc Read-only Memory, CD-ROM), eine DVD (Digital Versatile Disk), ein Speicherstick, eine Floppy-Disk, eine mechanisch kodierte Vorrichtung, wie Lochkarten oder hervorstehende Strukturen in einer Rille, auf der Anweisungen aufgezeichnet sind und jede geeignete Kombination aus dem Vorhergehenden. Ein computerlesbares Speichermedium, wie hier verwendet, sollte nicht so ausgelegt werden, dass es per se flüchtige Signale sind, wie Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (zum Beispiel Lichtpulse, die durch ein Glasfaserkabel durchgehen) oder elektrische Signale, die über ein Kabel übertragen werden.
-
Im vorliegenden Dokument beschriebene computerlesbare Programmanweisungen können auf entsprechende Computing-/Verarbeitungseinrichtungen von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinrichtung über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein Funknetzwerk, heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Glasfaserübertragungskabel, die Funkübertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Computing-/Verarbeitungseinrichtung empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung auf einem computerlesbares Speichermedium in der entsprechenden Computing-/Verarbeitungseinrichtung weiter.
-
Computerlesbare Programmanweisungen zum Durchführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Befehlssatz-Architektur-(Instruction-Set-Architecture, ISA-)Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, den Zustand einstellende Daten oder anderer Quellcode oder Objektcode sein, der in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben ist, einschließlich einer objektorientierten Programmiersprache, wie Java®, Small Talk, C++ oder ähnliche, und herkömmlichen prozeduralen Programmiersprachen, wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können ganz auf dem Computer des Benutzers ausgeführt werden, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder ganz auf dem entfernten Computer oder Server. In dem letzteren Szenario kann der entfernte Computer mit dem Computer des Benutzers über jede beliebige Art von Netzwerk verbunden sein, einschließlich ein lokales Netzwerk (LAN bzw. Local Area Network) oder ein Weitverkehrsnetzwerk (WAN bzw. Wide Area Network), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet mit einem Internetdienstanbieter). In einigen Ausführungsformen kann ein elektronischer Schaltkreis, darunter zum Beispiel ein programmierbarer Logikschaltkreis, Feld-programmierbare Gate-Arrays (Field-programmable Gate Arrays, FPGA) oder programmierbare Logik-Arrays (PLA), computerlesbare Programmanweisungen durch Heranziehen von Zustandsinformationen der computerlesbaren Programmanweisungen ausführen, um den elektronischen Schaltkreis anzupassen, um verschiedene Aspekte der vorliegenden Erfindung auszuführen. Java und alle Java-basierten Markenzeichen und Logos sind Markenzeichen oder eingetragene Markenzeichen von Oracle und/oder Tochterunternehmen davon.
-
Aspekte der vorliegenden Erfindung werden in diesem Dokument mit Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammabbildungen und/oder der Blockdiagramme und Kombinationen der Blöcke in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch computerlesbare Programmanweisungen implementiert werden kann bzw. können.
-
Diese computerlesbaren Programmanweisungen können einem Prozessor eines allgemeinen Standardcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der in dem/den Flussdiagramm- und/oder Blockdiagrammblock/-blocken angegebenen Funktionen/Vorgänge erstellen. Diese computerlesbaren Programmanweisungen können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung und/oder andere Einrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das computerlesbare Speichermedium über darauf gespeicherte Anweisungen verfügt, die ein Produkt aufweisen, das Anweisungen enthält, die Aspekte der Funktion/des Vorgangs implementieren, die in dem/den Flussdiagramm- und/oder dem/den Blockdiagrammblock bzw. -blöcken angegeben sind.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder ein anderes Gerät geladen werden, um die Durchführung einer Reihe operativer Schritte auf dem Computer, auf einer anderen programmierbaren Vorrichtung oder einem anderem Gerät zu veranlassen, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer, der anderen programmierbaren Vorrichtung oder dem anderem Gerät ausgeführten Anweisungen die Funktionen/Vorgänge implementieren, die in dem Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegeben sind.
-
Die Flussdiagramme und die Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Operation möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, das/der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Implementierungen können die in dem Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können in Abhängigkeit von der enthaltenen Funktionalität zwei aufeinanderfolgende Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist auch hervorzuheben, dass ein jeder Block der Blockdiagramm- und/oder Flussdiagrammabbildungen und die Kombinationen der Blöcke in den Blockdiagramm- und/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme implementiert werden können, die die angegebenen Funktionen oder Vorgänge durchführen oder Kombinationen von Spezialhardware und Computeranweisungen ausführen.
-
Die Rechenkomponenten von 1, einschließlich dem Speicher-Controller 100 und dem Host 106 können in einem oder mehreren Computersystemen, wie dem in 8 dargestellten Computersystem 802 implementiert sein. Das Computersystem/der Server 802 kann im allgemeinen Kontext von vom Computer ausführbaren Anweisungen beschrieben werden, wie Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können die Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakten Datentypen implementieren. Das Computersystem/der Server 802 kann in verteilten Cloud-Computing-Umgebungen ausgeführt werden, wobei Aufgaben durch Verarbeitungsgeräte an Fernstandorten ausgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich die Programmmodule auf Speichermedien von sowohl lokalen wie entfernten Computersystemen, einschließlich Arbeitsspeicher-Speichergeräten, befinden.
-
Wie in 8 dargestellt, wird ein Computersystem/ein Server 802 als ein allgemeines Computing-Gerät dargestellt. Die Komponenten eines Computersystems/Servers 802 können aufweisen, ohne jedoch darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Verarbeitungseinheiten 804, einen Systemspeicher 806 und einen Bus 808, der verschiedene Systemkomponenten einschließlich des Systemspeichers 806 mit dem Prozessor 804 verbindet. Der Bus 808 stellt einen oder mehrere eines beliebigen von verschiedenen Busstrukturtypen unter Verwendung einer beliebigen von verschiedenen Busarchitekturen dar, darunter einen Speicherbus oder einen Arbeitsspeicher-Controller (Memory Controller), einen Peripheriebus, einen beschleunigten Grafikport und einen Prozessor oder lokalen Bus. Zu diesen Architekturen gehören zum Beispiel, ohne darauf beschränkt zu sein, der Industry Standard Architecture(ISA)-Bus, der Micro Kanal Architecture(MCA)-Bus, der Enhanced ISA(EISA)-Bus, der lokale Video Electronics Standards Association(VESA)-Bus und der Peripheral Component Interconnects(PCI)-Bus.
-
Das Computersystem/der Server 802 enthält üblicherweise verschiedene computerlesbare Medien. Diese Medien können beliebige verfügbare Medien sein, auf die ein Computersystem/Server 802 zugreifen kann, und dies beinhaltet sowohl flüchtige wie auch nicht-flüchtige Medien, entfernbare und nicht-entfernbare Medien.
-
Der Systemspeicher 806 kann von einem Computersystem lesbare Medien in Form von flüchtigem Speicher, wie Direktzugriffsspeicher (RAM) 810 und/oder Cachespeicher 812 aufweisen. Das Computersystem/der Server 802 kann weiterhin andere entfernbare/nicht entfernbare, flüchtige/nicht-flüchtige Computersystem-Speichermedien aufweisen. Als Beispiel kann das Speichersystem 813 zum Lesen von und zum Schreiben auf nicht-entfernbaren, nicht-flüchtigen Magnetmedien (nicht dargestellt und in der Regel als „Festplatte” bezeichnet) vorgesehen werden. Obwohl nicht dargestellt, kann ein Magnetplattenlaufwerk zum Lesen von und zum Schreiben auf ein entfernbares, nicht-flüchtiges Magnetplattenmedium (z. B. eine „Diskette”) und ein optisches Plattenlaufwerk zum Lesen von einem entfernbaren, nicht-flüchtigen optischen Plattenmedium oder zum Schreiben darauf, wie einer CD-ROM, DVD-ROM oder einem anderen optischen Medium vorgesehen werden. In solchen Fällen kann ein jedes mit dem Bus 808 durch eine oder mehrere Medien-Datenschnittstellen verbunden sein. Wie im Folgenden weiter dargestellt und beschrieben, kann ein Speicher 806 wenigstens ein Programmprodukt mit einer Gruppe von (z. B. wenigstens einem) Programmmodulen enthalten, die dazu ausgebildet sind, die Funktionen der Ausführungsformen der Erfindung auszuführen.
-
Ein Programm/Dienstprogramm (bzw. Utility) 814 mit einer Gruppe von (wenigstens einem) Programmmodulen 816 kann beispielsweise, ohne dies als einschränkend zu verstehen, im Arbeitsspeicher 806 gespeichert werden, wie auch ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Ein jedes von dem Betriebssystem, einem oder mehreren Anwendungsprogrammen, weiteren Programmmodulen und Programmdaten oder einer bestimmten Kombination daraus kann eine Implementierung einer Netzwerkumgebung beinhalten. Die Komponenten des Computers 802 können als Programmmodule 816 implementiert werden, die im Allgemeinen die Funktionen und/oder Methodologien der Ausführungsformen der Erfindung wie hier beschrieben durchführen. Das System von 1 kann in einem oder mehreren Computersystemen 802 implementiert werden, wo die Computersysteme dann, wenn sie in mehreren Computersystemen 802 implementiert werden, über ein Netzwerk kommunizieren können.
-
Das Computersystem/der Server 802 kann auch mit einem oder mehreren externen Geräten 818 kommunizieren, wie einer Tastatur, einem Zeigegerät, einer Anzeige 820 usw.; einem oder mehreren Geräten, die einem Benutzer ermöglichen, mit dem Computersystem/Server 802 zu interagieren; und/oder beliebigen Geräten (z. B. Netzwerkkarte, Modem usw.), die einem Computersystem/Server 802 ermöglichen, mit einem oder mehreren anderen Computinggeräten zu kommunizieren. Eine solche Kommunikation kann über Eingabe/Ausgabe-(E/A-)Schnittstellen 822 erfolgen. Ferner kann ein Computersystem/Server 802 mit einem oder mehreren Netzwerken über einen Netzwerkadapter 824 kommunizieren, wie einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z. B. dem Internet). Wie dargestellt, kommuniziert der Netzwerkadapter 824 mit den anderen Komponenten des Computersystems/Servers 802 über den Bus 808. Es versteht sich, dass, auch wenn nicht dargestellt, weitere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 802 verwendet werden können. Zu den Beispielen gehören, ohne jedoch darauf beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
-
Die Begriffe „eine Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform”, „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „eine Ausführungsform” bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung”, sofern nicht ausdrücklich anders angegeben.
-
Die Begriffe „enthalten, beinhalten, aufweisen, umfassen” (including), „aufweisen, umfassen” (comprising), „haben, verfügen über, aufweisen” (having) und Variationen davon bedeuten „enthalten, ohne darauf beschränkt zu sein”, sofern nicht ausdrücklich anders angegeben.
-
Die Aufzählungsliste der Elemente impliziert nicht, dass beliebige oder alle der Elemente sich gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
-
Die Begriffe „ein”, „eine/einer/eines” und „der/die/das” bedeuten „eines oder mehrere”, sofern nicht ausdrücklich anders angegeben.
-
Geräte, die miteinander in Kommunikation stehen, müssen nicht miteinander in ständiger Kommunikation stehen, sofern nicht ausdrücklich anders angegeben. Darüber hinaus können Geräte, die miteinander in Kommunikation stehen, direkt oder indirekt über eine oder mehrere Zwischenkomponenten kommunizieren.
-
Eine Beschreibung einer Ausführungsform mit verschiedenen Komponenten, die miteinander in Kommunikation stehen, impliziert nicht, dass alle solche Komponenten erforderlich sind. Im Gegenteil wird eine Vielzahl optionaler Komponenten beschrieben, um die breite Vielfalt der möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Wenn ein einzelnes Gerät oder Gegenstand hier beschrieben wird, ist es einfach einsehbar, dass mehr als ein Gerät/Gegenstand (unabhängig davon, ob sie zusammenarbeiten) anstelle eines einzelnen Geräts/Gegenstands verwendet werden können. Ebenso, wenn mehr als ein Gerät oder Gegenstand hier beschrieben wird (unabhängig davon, ob sie zusammenarbeiten) ist es einfach einsehbar, dass ein einzelnes Gerät/Gegenstand anstelle des mehr als einen Gegenstands oder Gegenstands oder eine andere Anzahl von Geräten/Gegenständen anstelle der dargestellten Anzahl von Geräten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale eines Geräts können alternativ durch eine oder mehrere andere Geräte ausgeführt werden, die nicht explizit als solche Funktionalität/Merkmale besitzend beschrieben werden. Somit müssen andere Ausführungsformen der vorliegenden Erfindung das Gerät selbst nicht beinhalten.
-
Die obige Beschreibung von verschiedenen Ausführungsformen der Erfindung wurde zu Zwecken der Veranschaulichung und Beschreibung dargestellt. Dies soll aber nicht erschöpfend sein oder die Erfindung auf die exakte offen offengelegte Form beschränken. Angesichts der obigen Lehre sind viele Modifikationen und Variationen möglich. Es ist beabsichtigt, dass der Umfang der Erfindung nicht durch diese detaillierte Beschreibung eingeschränkt ist, sondern vielmehr durch die im Anhang stehenden Ansprüche dazu. Die obige Beschreibung, Beispiele und Daten bietet eine vollständige Beschreibung der Herstellung und Verwendung der Zusammensetzung der Erfindung. Da viele Ausführungsformen der Erfindungen vorgenommen werden können, ohne vom Umfang der Erfindung abzuweichen, gilt die Erfindung wie in den hier angehängten Ansprüchen.