-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zur Replikation von Datenobjekten von einem Quellserver auf einen Zielserver.
-
2. Beschreibung des Stands der Technik
-
Die Datenreplikation dient dazu, zu mehreren Knoten gehörende Daten von einem Server auf einen anderen Server zu replizieren, sodass die Clients ihre Daten vom Replikationsort wiederherstellen können, wenn der Haupt-Quellserver ausfällt, auf den die Daten gesichert werden. Ein Speicher-Verwaltungsserver wie zum Beispiel Tivoli® Storage Manager (TSM) speichert Datenobjekte in einem oder mehreren Speicherpools und nutzt eine Datenbank, um Metadaten über die gespeicherten Objekte zu überwachen. (Tivoli ist eine weltweite Marke der International Business Machines Corporation.) Der Speicher-Verwaltungsserver kann die Datenobjekte zum Zweck der Notfallwiederherstellung auf einen entfernt angeordneten Speicherort replizieren. Zu einigen Verfahren, die zur Übertragung von Daten an einen entfernt angeordneten Speicherort verwendet werden, gehören das physische Transportieren von Bändern, die Kopien der Daten enthalten, vom Quellort zum Notfallwiederherstellungsort, das elektronische Übertragen der Daten (TSM-Export/-Import) oder das Verwenden der Hardwarereplikation des Plattenspeichers des Quellortes, um eine Spiegelung der Daten zu erzeugen. Zu verfügbaren Replikations-Hardwareeinheiten gehören VTL-Produkte (VTL = Virtual Tape Library, virtuelles Bandarchiv), die unter Verwendung von Deduplizierungshardware eine Replikation auf Blockebene durchführen.
-
Die Datendeduplizierung ist eine Komprimierungstechnik zum Beseitigen redundanter Daten, mit der die Speicherausnutzung verbessert wird. Die Deduplizierung verringert die erforderliche Speicherkapazität, da nur eine Kopie einer einzelnen Dateneinheit, die auch als „Datenblock” (Chunk) oder „Speicherbereich” (Extent) bezeichnet wird, gespeichert wird. Auf Platten beruhende Speichersysteme wie zum Beispiel ein Speicher-Verwaltungsserver und Virtual Tape Library (VTL) können die Deduplizierungstechnologie realisieren, um redundante Daten-Chunks zu erkennen und die Duplizierung verringern, indem die redundante Speicherung derartiger Datenblöcke vermieden wird.
-
Ein Deduplizierungssystem teilt eine Datei in eine Reihe von Datenblöcken bzw. Speicherbereichen auf. Das Deduplizierungssystem ermittelt, ob beliebige der Datenblöcke bereits gespeichert sind, und geht dann dazu über, nur diese nicht redundanten Datenblöcke zu speichern. Die Redundanz kann während des Speicherns von Datenblöcken in der Datei oder an den bereits im System gespeicherten Datenblöcken geprüft werden.
-
In der Technik besteht ein Bedarf an verbesserten Techniken zum Replizieren von Objekten von einem Server auf einen anderen.
-
KURZDARSTELLUNG
-
Bereitgestellt werden ein Computerprogrammprodukt, ein System und ein Verfahren zur Replikation von Datenobjekten von einem Quellspeicher, der durch einen Quellserver verwaltet wird, auf einen Zielspeicher, der durch einen Zielserver verwaltet wird. Auf dem Quellserver wird eine Quellliste von Objekten aufgebaut, die auf den Zielserver repliziert werden sollen. Der Zielserver wird abgefragt, um eine Liste von Objekten auf dem Zielserver zu empfangen. Eine Replikationsliste wird aufgebaut, die auf den Zielserver zu übertragende Objekte in der Quellliste angibt, die nicht in der Zielliste enthalten sind. Zu jedem Objekt in der Replikationsliste werden Daten des Objektes, die nicht bereits auf dem Zielspeicher vorhanden sind, an den Zielserver gesendet, und Metadaten über das Objekt werden an den Zielserver gesendet, um den Zielserver zu veranlassen, die Metadaten in einer Zielserver-Replikationsdatenbank in einem Eintrag zu dem Objekt aufzunehmen. Zu einer Quellserver-Replikationsdatenbank wird ein Eintrag für das Objekt hinzugefügt.
-
Bei einer weiteren Ausführungsform wird vom Quellserver eine Abfrage auf eine Zielliste von Objekten auf dem Zielserver empfangen. Die Zielliste der Objekte auf dem Zielserver wird an den Quellserver gesendet. Daten für Objekte, die im Zielspeicher gespeichert werden sollen, werden vom Quellserver empfangen. Metadaten zu den Daten, die zu den zu replizierenden Daten empfangen wurden, werden vom Quellserver empfangen. Zu jedem Objekt, zu dem Daten empfangen wurden, wird zu einer Zielserver-Replikationsdatenbank ein Eintrag hinzugefügt, der die zu dem Objekt empfangenen Metadaten aufweist.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht eine Datenverarbeitungsumgebung, in der Ausführungsformen realisiert sind.
-
2 veranschaulicht eine Ausführungsform von Objektinformationen.
-
3 veranschaulicht eine Ausführungsform eines Eintrags in einer Quell-Replikationsdatenbank und einer Ziel-Replikationsdatenbank.
-
4 veranschaulicht eine Ausführungsform eines Eintrags mit Datenblock-Speicherinformationen.
-
5 veranschaulicht eine Ausführungsform eines Datenblock-Indexeintrags.
-
Die 6, 7a und 7b veranschaulichen eine Ausführungsform von Operationen zur Verarbeitung einer Replikationsanforderung.
-
8 veranschaulicht eine Ausführungsform von Operationen, um Objekte unter Verwendung der Deduplizierung zu replizieren.
-
9 veranschaulicht eine Realisierungsform eines Knotens in der Netzwerk-Datenverarbeitungsausführungsform.
-
10 veranschaulicht eine Ausführungsform einer Cloud-Computing-Umgebung.
-
11 veranschaulicht eine Ausführungsform von Abstraktionsmodellschichten einer Cloud-Computing-Umgebung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Beschriebene Ausführungsformen replizieren Datenobjekte von einem Quellserver auf einen Zielserver in einer Weise, bei der die Übertragungsbandbreite optimaler genutzt wird, indem die Übertragung von Daten vermieden wird, die bereits auf dem Zielserver zur Verfügung stehen. Der Quellserver sendet ferner Metadaten über Objekte, die bereits auf dem Zielserver verfügbare Daten oder Datenblöcke aufweisen, um den Zielserver zu veranlassen, zu einer Replikationsdatenbank einen Eintrag für Objekte hinzuzufügen, die sich bereits auf dem Zielserver befinden, und um die Konsistenz von Daten und Metadaten zu gewährleisten. Die beschriebenen Ausführungsformen ermöglichen es dem Benutzer, Replikationskriterien bereitzustellen, um die Auswahl und Filterung von Objekten zu ermöglichen, die auf einer Objektebene repliziert werden sollen. Weitere Ausführungsformen nutzen ebenfalls die Deduplizierung, um das Übermitteln von Datenblöcken von gegenwärtig replizierten Objekten zu vermeiden, die bereits auf dem Zielserver gespeichert sind.
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung 2, die einen Quellserver 4a und einen Zielserver 4b mit einem Quell-Replikationsmanager 6a bzw. einem Ziel-Replikationsmanager 6b aufweist, um die Daten für Objekte auf einem Quellspeicher 8a auf einen Zielspeicher 8b zu replizieren. Jede Servereinheit 4a, 4b kann als Quell- und Zielserver fungieren. Die Replikation kann im Auftrag eines Client-Knotens durchgeführt werden, der mit dem Quellserver 4a verbunden ist, um Objekte zu replizieren, die zu dem Client-Knoten gehören. Der Quellserver 4a und der Zielserver 4b verwalten in den Objektinformationen 10a bzw. 10b festgelegte Datenobjekte. Die Daten zu den Datenobjekten, die in Form getrennter Einheiten von Daten vorliegen können, die als „Datenblöcke” 12a, 12b bezeichnet werden, werden im Quellspeicher 8a bzw. Zielspeicher 8b verwaltet. Jeder Server 4a, 4b verwaltet Datenblock-Speicherinformationen 14a, 14b, die Speicherstellen im Speicher 8a, 8b angeben, an denen sich Datenblöcke von Datenobjekten befinden, die in den Objektinformationen 10a, 10b festgelegt sind. Die Objektinformationen 10a, 10b weisen Metadaten oder Einträge zu jedem festgelegten Datenobjekt auf, die aus einer sortierten Liste von Datenblöcken 12a, 12b von Daten bestehen, die jedem Objekt zugewiesen sind.
-
Der Quellserver 4a und der Zielserver 4b verwalten eine Quell-Replikationsdatenbank 16a bzw. eine Ziel-Replikationsdatenbank 16b, die Informationen über Datenobjekte auf dem Quellserver 4a aufweisen, die im Auftrag eines Client-Knotens auf den Zielserver 4b repliziert wurden. Der Quellserver 4a verwaltet und verwendet ferner eine Quellliste 30, die zu replizierende Objekte auf dem Quellserver 4a aufweist, die ein Replikationskriterium erfüllen wie zum Beispiel Client-Knoten, zu dem die Objekte gehören, Dateibereich auf dem Client-Knoten und Datentyp; eine Zielliste 32, die Objekte auf dem Zielserver 4b aufweist, die das Replikationskriterium erfüllen; einen Zielbestand 34 von Objekten im Zielserver 4b einschließlich einer eindeutigen Kennung oder eines eindeutigen Attributs zur eindeutigen Kennzeichnung der Objekte; und eine Replikationsliste 36 von Dateien in der Zielliste 30, die nicht in der Zielliste 32 enthalten sind und auf den Zielserver 4b replizieren werden sollen. Die Kriterien, die zum Aufbau des Zielbestands 34 verwendet werden, können weiter gefasst als die Replikationskriterien oder identisch mit diesen sein.
-
Eine Deduplizierungskomponente 24 stellt für den Quellserver 4a und den Zielserver 4b Deduplizierungsdienste bereit, um zu gewährleisten, dass auf dem empfangenden Server 4a, 4b bereits vorhandene Datenblockduplikate nicht erneut gesendet werden, wenn der Quellserver 4a oder der Zielserver 4b Objektdaten sendet. Die Deduplizierungskomponente 24 weist einen Deduplizierungsmanager 26 auf, um Deduplizierungsoperationen durchzuführen, und einen Datenblockindex 28 wie zum Beispiel einen Deduplizierungsindex, der Informationen über die Datenblöcke 12a, 12b bereitstellt, die Objekten zugewiesen wurden. Der Deduplizierungsmanager 26 gewährleistet, dass nur eine Kopie jedes Datenblocks im Quellspeicher 8a und Zielspeicher 8b beibehalten wird, wenn Datenobjekte zwischen dem Quellserver 4a und dem Zielserver 4b übertragen werden, obwohl ein Datenblock in einem Speicher 8a, 8b in mehreren Datenobjekten enthalten sein kann, die für den Server 4a, 4b festgelegt sind, der diesen Speicher verwaltet. Der Deduplizierungsmanager 26 kann außerdem Objektinformationen 10c verwalten, die Informationen über die Zuweisung von Datenblöcken zu Objekten auf dem Quellserver 4a und Zielserver 4b aufweisen.
-
Zur Durchführung der Deduplizierung kann der Quell-Replikationsmanager 6a oder eine andere Komponente nach dem Vorliegen eines neuen oder nicht geänderten Datenblocks in einem Datenobjekt aus einer Datenbank einen Hash-Wert zu dem Datenblock wie zum Beispiel die Datenblock-Speicherinformationen 14a, 4b empfangen. Bei einer alternativen Ausführungsform kann der Quell-Replikationsmanager 6a den Hash-Wert berechnen. Der Quell-Replikationsmanager 6a übermittelt den abgerufenen Hash-Wert für den Datenblock an den Deduplizierungsmanager 26, um zu ermitteln, ob der Datenblockindex 28 einen übereinstimmenden Hash-Wert aufweist. Wenn nicht, benachrichtigt der Deduplizierungsmanager 26 den Quell-Replikationsmanager 6a, dass der Datenblock neu ist, und der Quell-Replikationsmanager 6a sendet eine vollständige Kopie des neuen oder nicht geänderten Datenblocks in dem Datenobjekt zwecks Speicherung im Zielspeicher 8b an den Zielserver 4b. Wenn anderenfalls der Datenblockindex 28 eine übereinstimmende Kopie des Hash-Wertes aufweist, muss der Quell-Replikationsmanager 6a unter Umständen keine vollständige Kopie des Datenblocks übertragen. Stattdessen kann der Quell-Replikationsmanager 6a den Auszug für den Datenblock und seine Position im Objekt übertragen. Alternativ kann der Quell-Replikationsmanager 6a mit der Deduplizierungskomponente 24 interagieren, um zu ermitteln, ob er einen Datenblock an den Zielserver 4b senden muss.
-
Bei einer Ausführungsform der Duplizierung auf der Seite der Quelle kommuniziert der Quell-Replikationsmanager 6a Daten mit dem Deduplizierungsmanager 26, um zu ermitteln, ob Datenblöcke an den Zielserver 4b gesendet werden sollen, sodass nur neue Datenblöcke an den Zielserver 4b gesendet werden, die nicht bereits im Datenblockindex 28 als im Zielspeicher 8b vorhanden angegeben sind. Bei einer Ausführungsform der Deduplizierung auf der Seite des Ziels sendet der Quellserver 4a alle zu replizierenden Datenblöcke eines Datenobjektes an den Zielserver 4b, und der Ziel-Replikationsmanager 6b fordert die Deduplizierungskomponente 24 auf, zu ermitteln, welche Datenblöcke neue Datenblöcke sind, die im Zielspeicher 8b gespeichert werden sollen.
-
Der Quellserver 4a, Zielserver 4b und die Deduplizierungskomponente 24 können in getrennten Computereinheiten realisiert sein, die über ein Netzwerk wie zum Beispiel ein lokales Netzwerk (Local Area Network, LAN), Speichernetzwerk (Storage Area Network, SAN), Weitverkehrsnetzwerk (Wide Area Network, WAN) usw. Daten austauschen. Bei weiteren Ausführungsformen können der Quellserver 4a, Zielserver 4b und/oder die Deduplizierungskomponente 24 auf einem oder zwei Computersystemen realisiert sein. Wenn sich der Quellserver 4a, Zielserver 4b und/oder die Deduplizierungskomponente 24 im selben System befinden, können sie über einen Bus oder über den Hauptspeicher Daten austauschen.
-
Der Quellspeicher 8a und der Zielspeicher 8d können in einer oder mehreren nach dem Stand der Technik bekannten Speichereinheiten konfiguriert sein, zum Beispiel in untereinander verbundenen Festplattenlaufwerken (die z. B. als DASD, RAID, JBOD usw. konfiguriert sind), in Halbleiterspeichereinheiten (z. B. EEPROM (Electrically Erasable Programmable Read-Only Memory, elektrisch löschbarer und programmierbarer Nur-Lese-Speicher), in Flash-Speicher, in einem Flash-Laufwerk, in Storage-Class Memory (SCM)), in einem elektronischen Speicher, in Magnetbandmedien, in Bandkassetten usw.
-
Der Quell-Replikationsmanager 6a, Ziel-Replikationsmanager 6b und der Deduplizierungsmanager 26 können Softwareprogramme in einem Speicher aufweisen, die durch einen Prozessor ausgeführt werden. Bei einer alternativen Ausführungsform kann ein Teil oder die Gesamtheit der Programme 6a, 6b und 26 in einer Hardwarekomponente wie zum Beispiel in einer zweckgebundenen integrierten Schaltung wie zum Beispiel in einer anwendungsspezifischen integrierten Schaltung (Application Specific Integrated Circuit, ASIC), in einer Erweiterungskarte usw. realisiert sein.
-
Obwohl der Quell-Replikationsmanager 6a, Ziel-Replikationsmanager 6b und der Deduplizierungsmanager 26 als separate Komponenten gezeigt sind, können die von diesen Komponenten 6a, 6b und 26 durchgeführten Funktionen bei alternativen Realisierungsformen in einer einzigen Programmkomponente in einem einzigen Computersystem oder in mehr als zwei Programmkomponenten in mehr als zwei Computereinheiten realisiert sein. Beispielsweise kann die Deduplizierungskomponente 24 getrennt auf dem Quellserver 4a und dem Zielserver 4b oder als Teil von Komponenten des Quell-Replikationsmanagers 6a oder des Ziel-Replikationsmanagers 6b realisiert sein. Bei Ausführungsformen, bei denen die Deduplizierungskomponente 24 auf jedem Server 4a, 4b getrennt realisiert ist, kann jeder Server 4a, 4b seine eigene Deduplizierungskomponente 24 aufweisen und Objektinformationen 10c und den Datenblockindex 28 verwalten.
-
Der Quell-Replikationsmanager 6a und der Ziel-Replikationsmanager 6b können von Client-Knoten verwendet werden, um als Teil der Wiederherstellungsoperation Objekte wiederherzustellen.
-
2 veranschaulicht eine Ausführungsform von Objektinformationen 50 zu einem Objekt, das in den Objektinformationen 10a, 10b, 10c verwaltet wird. Die Objektinformationen 50 zu einem Objekt weisen eine Kennung (ID) 52 des Objektes und Kennzeichnungsinformationen zu einem oder mehreren Datenblöcken 54a, 54b ... 54n von Daten auf, die im Objekt 52 zugewiesen sind. Die Objektinformationen 50 können eine sortierte Liste von Bezügen auf Datenblöcke (C1 ... Cn) verwalten, die die Reihenfolge 1 ... n angeben, in der die Datenblöcke in dem Datenobjekt vorkommen. Zu jedem Datenblock (Ci) verwalten die Objektinformationen 54i einen Auszug (di) des Datenblocks und eine Länge (li) des Datenblocks. Auf diese Weise stellen die Objektinformationen 50 einen Bezug auf die im Datenobjekt enthaltenen Datenblöcke, zum Beispiel Auszug und Länge, bereit, aber nicht die eigentlichen Daten. Der Auszug (d) kann berechnet werden, indem der Datenblock verarbeitet wird, um einen eindeutigen Wert für diesen Datenblock zu erzeugen. Beispielsweise kann der Auszug bei einer Ausführungsform einen kryptographischen Auszug MD5 (Message-Digest Algorithm 5) oder SHA-1 (Secure Hash Algorithm 1) aufweisen, der kryptographische Hash-Werte jedes Datenblocks in dem Datenobjekt berechnet.
-
3 veranschaulicht eine Ausführungsform eines Eintrags 60 in der Quell-Replikationsdatenbank 16a und der Ziel-Replikationsdatenbank 16b zu jedem Objekt, das gegenwärtig vom Quellserver 4a auf den Zielserver 4b repliziert wird. Der Eintrag 60 weist eine Objektkennung (ID) 62; ein eindeutiges Objektattribut 64, das eine eindeutige Kennung des Objektes wie zum Beispiel eine Signatur, einen Hash-Wert oder eine eindeutige Namenskonvention bereitstellt; eine Serverkennung (ID) 66, aufweisend eine Kennung des Servers 4a, 4b, der das Objekt 62 verwaltet; eine Replikationsserverkennung 68 zur Kennzeichnung des anderen Servers 4a, 4b in der Replikationsbeziehung (beispielsweise weist ein Eintrag 60 in der Quell-Replikationsdatenbank 16a die Kennung des Zielservers 4b für Feld 68 auf, und einen Eintrag 60 in der Ziel-Replikationsdatenbank 16b weist die Kennung des Quellservers 4a für Feld 68 auf); eine Kennung 70 des replizierten Objektes, die die Kennung angibt, die dem Objekt auf dem Replikationsserver 68 zugewiesen ist; eine Serverknotenkennung (ID) 72, die für den Client-Knoten, zu dem das Objekt 60 gehört, die Kennung des Quellservers 4a bereitstellt; eine Kennung 74 des Quellservers 4a für den Dateibereich, die den Dateibereich einschließlich des Objektes 60 kennzeichnet; eine Replikationsserver-Knotenkennung 76, aufweisend die Kennung, die der Zielserver 4b, d. h. der Replikationsserver, dem Client-Knoten zuweist, zu dem das Objekt 60 gehört; eine Dateibereichskennung 78 des Replikationsservers, aufweisend eine Kennung, die der Zielserver 4b (Replikationsserver) dem Dateibereich zuweist, der das Objekt 60 aufweist; und eine Datentypkennung 80 auf, die einen Datentyp des Objektes 60 kennzeichnet.
-
Demzufolge weist jeder Server 4a, 4b bei bestimmten Ausführungsformen seine eigene Kennung für den Knoten 72 und 76 bzw. den Dateibereich 74 und 78 zu.
-
4 veranschaulicht eine Ausführungsform eines Eintrags 81 mit Datenblock-Speicherinformationen, den der Quellserver 4a und der Zielserver 4b in ihren jeweiligen Datenblock-Speicherinformationen 14a, 14b zu jedem Datenblock 12a, 12b verwalten, der in dem jeweiligen, von ihnen verwalteten Speicher 8a, 8b verwaltet wird. Die Informationen 81 des Datenblock-Speichereintrags weisen eine Datenblockkennung 82 auf; eine Speicherposition 84 im Speicher 8a, 8b des gekennzeichneten Datenblocks wie zum Beispiel eine logische oder physische Adresse, die kennzeichnet, wo der Datenblock im Speicher 8a, 8b gespeichert ist; und einen Referenzzählwert 86, der die Anzahl von Objekten auf dem Quellserver 4a oder Zielserver 4b angibt, die den Datenblock referenzieren. Ein dereferenzierter Datenblock 12a, 12b, der in keinem Objekt referenziert wird, weist einen Referenzzählwert 86 von null auf und kann für eine Löschung infrage kommen, wenn im Speicher 8a, 8b Platz benötigt wird.
-
5 veranschaulicht eine Ausführungsform eines Deduplizierungsindex-Eintrags 90, der durch den Deduplizierungsmanager 26 im Datenblockindex 28 zu jedem in den Speichern 8a, 8b gespeicherten Datenblock 12a, 12b verwaltet wird. Der Indexeintrag 90 weist eine Datenblockkennung (ID) 92 des Datenblocks im Speicher 8a, 8b, einen Hash-Wert 94, der aus dem durch die Datenblockkennung 92 angegebenen Datenblock berechnet wurde, und eine Länge 96 des Datenblocks auf. Beim Ermitteln, ob eine Kopie des Datenblocks 12a zum Zielserver 4b übertragen werden soll, kann der Quell-Replikationsmanager 14a den Hash-Wert und die Länge des Datenblocks der Deduplizierungskomponente 24 bereitstellen, und der Deduplizierungsmanager 26 kann ermitteln, ob ein Eintrag 30 im Datenblockindex 28 einen Hash-Wert 94 und eine Länge 96 aufweist, die den Werten des Datenblocks 12a entspricht, den der Quell-Replikationsmanager 6a gerade sendet, um zu ermitteln, ob der Quell-Replikationsmanager 6a den Datenblock 12a oder lediglich eine Kennung des Datenblocks 12a, z. B. den Auszug und die Länge, senden muss. Der Datenblockindex-Eintrag 90 kann ferner weitere Informationen aufweisen, um die Datenblöcke 12a, 12b den Speichern 8a, 8b zu verwalten.
-
Auf diese Weise werden die Teilkomponenten eines Datenobjektes, die hierin als Datenblöcke bezeichnet werden, getrennt von den Objekten gespeichert, in denen sie enthalten sind. Ein Datenblock 12a, 12b kann einen Speicherbereich aus Spuren, einen Block aus Daten oder eine beliebige andere definierbare Untereinheit von Daten aufweisen, die einem Objekt zugewiesen sein können. Diese Datenblöcke 12a, 12b können eine feste oder variable Länge aufweisen. Ein Objekt kann eine beliebige Gruppierung von Dateneinheiten wie zum Beispiel eine Datei, ein Objekt, eine Datenbank usw. aufweisen.
-
6 veranschaulicht eine Ausführungsform von Operationen, die durch den Quell-Replikationsmanager 6a und den Ziel-Replikationsmanager 6b durchgeführt werden, um Objekte auf dem Quellserver 4a auf den Zielserver 4b zu replizieren. Die Steuerung beginnt damit, dass der Quell-Replikationsmanager 6a (bei Block 100) eine Replikationsanforderung empfängt, um Objekte auf der Grundlage eines oder mehrerer Kriterien, zum Beispiel der Client-Knoten, zu dem das Objekt gehört, der Dateibereich innerhalb des Client-Knotens, in dem sich das Objekt befindet, und eines Datentyps des Objektes zu replizieren. Als Reaktion auf die Anforderung validiert der Quell-Replikationsmanager 6A (bei Block 102) die Konfiguration des Zielservers 4b, um zu ermitteln, ob der Zielserver 4b eine Replikation unterstützt. Wenn (bei Block 104) der Zielserver 4b nicht validiert wurde, schlägt die Replikationsoperation fehl (bei Block 106). Wenn anderenfalls der Zielserver 4b replikationskompatibel ist, tauschen die Server 4a, 4b (bei Block 108) eindeutige Kennungen aus, wenn es sich um das erste Mal handelt, dass die Replikation zwischen den Servern 4a, 4b stattfindet. Die Server 4a, 4b können in den Replikationsdatenbanken 16a, 16b die eindeutigen Serverkennungen eines zur Replikation zur Verfügung stehenden Servers beibehalten.
-
Ein Administrator kann anfordern, dass zwischen dem Quellserver 4a und dem Zielserver 4b eine Synchronisierung durchgeführt wird, um die Quell-Replikationsdatenbank 16a und die Ziel-Replikationsdatenbank 16b zu aktualisieren, um widerzuspiegeln, dass Objekte repliziert wurden, die bereits in den Zielserver 4b importiert wurden, sodass zu den Objekten, die bereits auf dem Zielserver 4b vorhanden sind, keine redundante Replikation durchgeführt wird. Wenn (bei Block 109) eine Synchronisierung erforderlich ist, geht die Steuerung zu Block 110 über, um zu synchronisieren, anderenfalls, wenn eine Synchronisierung nicht angefordert oder erforderlich ist, geht die Steuerung (bei Block 130) zu 7a über, um eine Replikation durchzuführen.
-
Wenn (bei Block 109) eine Synchronisierung erforderlich ist, fragt der Quell-Replikationsmanager 6a (bei Block 110) den Zielserver 4b auf den Zielbestand 34 von Dateien auf dem Zielserver 4b ab, die ein erstes Kriterium (z. B. zu replizierender Client-Knoten) erfüllen. Nach dem Empfangen (bei Block 112) der Abfrage sendet der Ziel-Replikationsmanager 6b (bei Block 114) den Bestand 34 von Objekten auf dem Zielserver 4b an den Quellserver 4a, die das erste Kriterium erfüllen. Als Reaktion auf das Empfangen (bei Block 116) des Zielbestands 34 von Dateien ermittelt der Quell-Replikationsmanager 6a (bei Block 118) Objekte auf dem Quellserver 4a, die mit denen übereinstimmen, die im Zielbestand 34 aus dem Zielserver 4b aufgeführt sind. Ein eindeutiges Attribut 64 (3) der Objekte auf dem Quellserver 4a und Zielserver 4b kann verglichen werden, um zu ermitteln, ob das Ziel 4b Objekte aufweist, die mit denen auf der Quelle 4a übereinstimmen, zum Beispiel eine Signatur, ein eindeutiger Dateiname, ein Hash-Wert usw.
-
Der Quell-Replikationsmanager 6a sendet (bei Block 120) Metadaten für die ermittelten Objekte, die mit den im Bestand 36 aufgeführten übereinstimmen, an den Zielserver 4b. Der Quell-Replikationsmanager 6a fügt (bei Block 120) zur Quell-Replikationsdatenbank 16a für die ermittelten Objekte einen Eintrag 60 (3) einschließlich der Information hinzu, die beim Quell-Replikationsmanager 6a zur Verfügung stehen.
-
Als Reaktion auf das Empfangen (bei Block 124) der Metadaten fügt der Ziel-Replikationsmanager 6b (bei Block 126) zur Zielserver-Replikationsdatenbank 16b einen Eintrag 60 für jedes Objekt hinzu, zu dem Metadaten für die Objekte empfangen werden, die mit den im Bestand 36 aufgeführten übereinstimmen. Somit brauchen diejenigen Objekte, die der Zielserver 4b bereits aufweist, nicht als Teil der Replikation übertragen zu werden, und die Synchronisierung aktualisiert die Ziel-Replikationsdatenbank 16b, um diese Objekte als repliziert widerzuspiegeln. Der Ziel-Replikationsmanager 6b gibt (bei Block 128) eine Objektkennung des hinzugefügten Objektes an den Quell-Replikationsmanager 6a zurück, die in die Kennung 70 des replizierten Objektes in dem Eintrag 60 für das Objekt in der Quell-Replikationsdatenbank 16a aufgenommen wird. Der Ziel-Replikationsmanager 6b kann außerdem die Knotenkennung 76 des Replikationsservers und die Dateibereichskennung 78 des Replikationsservers an den Replikationsmanager 6a zurückgeben, die in den Eintrag für das Objekt in der Quellserver-Replikationsdatenbank 16a aufgenommen wird.
-
Nach dem Durchführen der Operationen zum Hinzufügen von Einträgen, um die Quell-Replikationsdatenbank 16a und die Ziel-Replikationsdatenbank 16b zu synchronisieren, sodass sie Einträge für alle Objekte aufweisen, die ein bestimmtes Kriterium erfüllen und bereits sowohl auf dem Quellserver 4a als auch dem Zielserver 4b vorliegen, geht die Steuerung (bei Block 130) zu Block 150 in 7a über, um die Replikation zu beginnen. Die Synchronisierungsoperationen aus 6 ermöglichen es Kunden, die Replikationsdatenbanken 16a, 16b zu synchronisieren, sodass auf dem Zielserver 4b vorliegende Objekte, die übereinstimmende Objekte auf dem Quellserver 4a aufweisen, erscheinen, als seien sie repliziert worden.
-
Die 7a und 7b veranschaulichen eine Ausführungsform von Operationen, die durch den Quell-Replikationsmanager 6a und den Ziel-Replikationsmanager 6b durchgeführt werden, um die Replikationsoperation durchzuführen. Nach dem Initialisieren (bei Block 150) der Replikation baut der Quell-Replikationsmanager 6a (bei Block 152) eine Quellliste 30 von Objekten auf dem Quellserver 4a auf, die auf den Zielserver 4b repliziert werden sollen und ein Replikationskriterium (z. B. Client-Knoten, Dateibereich, Datentyp) erfüllen, wobei die Replikationskriterien, die zur Ermittlung der zu replizierenden Dateien verwendet werden, weiter als die Kriterien gefasst sein können, die zur Ermittlung des Zielbestands 34 (z. B. nur Client-Knoten) auf dem Zielserver 4b verwendet werden. Der Quell-Replikationsmanager 6a fragt (bei Block 154) den Zielserver 4b ab, um eine Zielliste 32 von auf dem Zielserver 4b vorliegenden Objekten zu empfangen, die das zweite Kriterium erfüllen. Als Reaktion auf die Abfrage sendet der Ziel-Replikationsmanager 6b (bei Block 158) eine Zielliste 32 von auf dem Zielserver 4b vorliegenden Objekten an den Quellserver 4a, die die Replikationskriterien erfüllen. Nach dem Empfangen der Zielliste 32 baut der Quell-Replikationsmanager 6a (bei Block 160) eine Replikationsliste 63 auf, die Objekte auf der Quellliste 30 angibt, die nicht auf der Zielliste 32 enthalten sind, die zum Zielserver 4b zu übertragen sind.
-
Zu jedem Objekt in der Quellliste 30 führt der Quell-Replikationsmanager 6a (bei Block 162 bis 174) die Operationen bei Block 164 bis 172 durch, um das Objekt auf den Zielserver 4b zu replizieren. Die Schleife bei den Blöcken 162 bis 147 kann enden und zu Block 184 übergehen, nachdem alle Objekte in der Quellliste 30 verarbeitet wurden, oder sie kann nach dem Auftreten einer bestimmten anderen Bedingung enden. Wenn (bei Block 164) das Objekt auf der Replikationsliste 36 vorliegt, sendet der Quell-Replikationsmanager 6a Daten für das Objekt an den Ziel-Replikationsmanager 6b. Bei einer Ausführungsform kann der Quell-Replikationsmanager 6a nur Daten oder Datenblöcke 12a für das Objekt senden, das nicht bereits im Zielspeicher 8b vorliegt. Alternativ kann der Quell-Replikationsmanager 6a das gesamte Objekt unabhängig davon senden, ob der Zielspeicher 8b Datenblöcke 12b aufweist, die mit Datenblöcken in dem Objekt übereinstimmen, das gerade repliziert wird. Nach dem Senden von Daten für das zu replizierende Objekt (aus Block 168) oder wenn das Objekt nicht auf der Replikationsliste 36 vorliegt, wodurch angezeigt wird, dass der Zielserver 4b das Objekt bereits aufweist, sendet der Quell-Replikationsmanager 6a (bei Block 170) Metadaten über das Objekt wie zum Beispiel die Informationen im Eintrag 60 (3) an den Zielserver 4b. Der Quell-Replikationsmanager 6a fügt (bei Block 172) zur Quell-Replikationsdatenbank 16a für das Objekt einen Eintrag 60 hinzu, der die Informationen der in 3 gezeigten Felder enthält.
-
Nach dem Empfangen (bei Block 176) der Metadaten und Daten (falls bei Block 168 beliebige Daten für ein Objekt in der Replikationsliste 36 gesendet werden) speichert der Ziel-Replikationsmanager 6a (bei Block 178) beliebige, für das Objekt im Zielspeicher 8a empfangene Daten (Daten werden unter Umständen nicht empfangen, wenn der Zielspeicher 8b bereits Datenblöcke 12b zu dem Objekt aufweist) und fügt (bei Block 180) für das Objekt, zu dem Metadaten empfangen wurden, zur Zielserver-Replikationsdatenbank 16b einen Eintrag 60 hinzu, der die Kennungen 62, 70, 72, 74, 76 und 78 im Quellserver 4a und Zielserver 4b und weitere Informationen im Eintrag 60 (3) aufweist. Der Ziel-Replikationsmanager 6b kann ferner (bei Block 182) eine Kennung 70 des replizierten Objektes, eine Replikationsserver-Knotenkennung 76 und eine Replikationsserver-Dateibereichskennung 78 des auf dem Zielserver 4b hinzugefügten Objektes an den Quellserver 4a zurückgeben, die in den Eintrag für das Objekt in der Quell-Replikationsdatenbank 16a aufgenommen werden.
-
Nach dem Hinzufügen von Einträgen zur Quell-Replikationsdatenbank 16a und Ziel-Replikationsdatenbank 16b für alle zu replizierenden Objekte geht die Steuerung (bei Block 184) zu Block 168 in 7b über, bei dem der Quell-Replikationsmanager 6a (bei Block 186) zu löschende Objekte ermittelt, die auf der Zielliste 32, aber nicht auf der Quellliste 30 vorliegen, oder Objekte auf dem Zielserver 4b, die nicht Teil der der Replikation unterworfenen Objekte auf dem Quellserver 4a sind. Der Quell-Replikationsmanager 6a kommuniziert (bei Block 188) mit dem Zielserver 4b, um den Zielserver 4b zu veranlassen, die Objekte zu löschen, von denen ermittelt wurde, dass sie vom Zielserver 4b zu löschen sind. Als Reaktion auf die Kommunikation löscht der Ziel-Replikationsmanager 6b (bei Block 190) Einträge für Objekte, die aus der Zielserver-Replikationsdatenbank 16b zu löschen sind. Beliebige Datenblöcke 12b in gelöschten Objekten, die nicht durch beliebige andere Objekte referenziert werden, werden dereferenziert (bei Block 194). Beim Löschen eines Objektes wird der Referenzzählwert 86 in den Einträgen 82 (4) zu den Datenblöcken 12b in dem Objekt verringert, und beliebige Datenblöcke 82, die einen Referenzzählwert von null aufweisen, werden als dereferenziert angezeigt und kommen an einem bestimmten Punkt zur Beseitigung infrage.
-
8 veranschaulicht eine Ausführungsform von Operationen, die durch den Quell-Replikationsmanager 6a und den Ziel-Replikationsmanager 6b durchgeführt werden, um Objekte unter Verwendung der Deduplizierung zu replizieren. Die Operationen aus 8 werden durchgeführt, wenn der Quell-Replikationsmanager 6a bei Block 168 in 7a Daten für das Objekt an den Zielserver 4b sendet. Nach dem Senden des Objektes ruft der Quell-Replikationsmanager 6a den Deduplizierungsmanager 26 auf, um (bei Block 202) zu sendende Datenblöcke in dem Objekt zu ermitteln, und verwendet anschließend die Deduplizierung (bei Block 204), um eine Menge von Datenblöcken 12a in dem Objekt zu ermitteln, die nicht im Zielspeicher 8b gespeichert sind. Der Deduplizierungsmanager 26 kann den Datenblockindex 28 verwenden, um diese Ermittlung durchzuführen. Der Deduplizierungsmanager 26 oder der Quell-Replikationsmanager 6a sendet (bei Block 206) die ermittelte Menge von Datenblöcken an den Zielserver 4b zur Speicherung im Zielspeicher 8b und sendet eine Liste von Datenblockkennungen wie zum Beispiel den Auszug (di) und die Länge (li) von Datenblöcken 12a in dem Objekt, die bereits im Zielspeicher 8b vorliegen. Nach dem Empfangen (bei Block 208) der Datenblöcke zu dem Datenobjekt speichert der Ziel-Replikationsmanager 6b (bei Block 210) die empfangenen Datenblöcke im Zielspeicher 8b. Der Ziel-Replikationsmanager 6b gibt (bei Block 212) im Eintrag 60 für das Objekt in der Zielserver-Replikationsdatenbank 16b Verknüpfungen zu den Datenblöcken in dem Objekt an, für das die Kennzeichnungsinformationen, z. B. Auszug (d1) und Länge (li), bereitgestellt werden, die bereits im Zielspeicher gespeichert sind, sowie Verknüpfungen zu Datenblöcken, die zum Zielspeicher 8b hinzugefügt wurden.
-
Bei beschriebenen Ausführungsformen kann der Quell-Replikationsmanager 6a Daten verschlüsseln, die gerade auf den Zielserver 4b übertragen werden, die auf dem Zielserver 4b entschlüsselt werden. Ferner ermöglicht es die Replikation auf der Objektebene dem Administrator/Benutzer, anzugeben, welche Datenobjekte repliziert werden sollen und eine inkrementelle Replikation nur derjenigen Datenblöcke von zu replizierenden Objekten vorzusehen, die nicht bereits auf dem Zielserver 4b und im Zielspeicher 8b gespeichert sind.
-
Bei bestimmten Ausführungsformen werden auf dem Quellserver 4a und auf dem Zielserver 4b eine getrennte Hardware und getrennte Betriebssysteme bereitgestellt, um eine Unabhängigkeit von der Hardware und von Betriebssystemen zu ermöglichen. Ferner können der Quellserver 4a und der Zielserver 4b mit heterogener Hardware und heterogenen Betriebssystemen realisiert sein.
-
Bei bestimmten Ausführungsformen kann der Zielserver 4b der Replikation einen Sofortbereitschaftsmodus (Hot-Standby-Modus) an einem in Bezug auf den Quellserver 4a entfernten Ort bereitstellen. Wenn der Quellserver 4a ausfällt, können Client-Operationen wie zum Beispiel Sicherung und Wiederherstellung auf den Zielserver 4b umgeleitet werden, der bereits zur Replikation betriebsbereit ist.
-
Bei weiteren Ausführungsformen können mehrere Quellserver 4a (z. B. in entfernt angeordneten Büros) auf einen einzigen Zielserver 4b repliziert werden (z. B. in einem zentralen Datenverarbeitungszentrum).
-
Weitere Ausführungsformen können logische Gruppierungen unterschiedlicher Mengen von Objekten bereitstellen, sodass unvollständige Gruppen von Objekten auf dem Zielserver 4b für den Client-Knoten nicht sichtbar sind, bis die Gruppe vollständig ist. Teilgruppen werden auf dem Zielserver 4b beibehalten, um das erneute Senden von Objekten zu verhindern. Zum Beispiel können Objekte, die eine logische Gruppe bilden, während der Replikation an den Zielserver 4b gesendet werden. In bestimmten Situationen könnten einige der Objekte in der Gruppe, wegen eines Fehlers oder weil der Prozess annulliert wird, nicht gesendet werden. In dieser Situation verbleiben Objekte, die repliziert wurden, auf dem Zielserver, und der Zielserver markiert die Gruppe als unvollständig, die nicht alle Objekte aufweist. Diese unvollständigen Gruppen werden dem Client-Knoten während der Wiederherstellung nicht verfügbar gemacht. Zu einem späteren Zeitpunkt, nachdem die Replikation die fehlenden Dateien übertragen hat, wird die Gruppe als vollständig markiert und dem Client-Knoten verfügbar gemacht.
-
Bei den beschriebenen Ausführungsformen versucht die Replikation zwischen Quelle und Ziel, den Datenumfang zu minimieren, der für Objekte übertragen wird, die an den Zielserver gesendet werden, indem auf der Objektebene eine Prüfung von Objekten durchgeführt wird, die bereits auf dem Zielserver 4b vorliegen, und anschließend beim Senden eines Objektes eine Deduplizierung durchgeführt wird, um das Senden von Datenblöcken für ein Datenobjekt zu vermeiden, das bereits auf dem Zielserver 4b zur Verfügung steht. Ferner sendet der Quell-Replikationsmanager 16a bei beschriebenen Ausführungsformen Metadaten über zu replizierende Objekte, die bereits auf dem Zielserver 4b gespeichert sind, an den Ziel-Replikationsmanager 16b, um den Ziel-Replikationsmanager 6b zu veranlassen, zur Ziel-Replikationsdatenbank 16b einen Eintrag für das zu replizierende und bereits auf dem Zielserver 4b vorliegende Objekt hinzuzufügen.
-
Cloud-Computing-Ausführungsformen
-
Die Cloud-Computing-Umgebung aus 1 kann Teil eines Cloud-Computing-Modells zur Bereitstellung von Diensten sein, um einen praktischen und bei Bedarf verfügbaren Netzwerkzugriff (On-Demand-Netzwerkzugriff) auf ein gemeinsam genutztes Reservoir konfigurierbarer Datenverarbeitungsressourcen (z. B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die bei minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Die Realisierung des Cloud-Computing wird unter Bezugnahme auf die 9 bis 1 beschrieben.
-
Dieses Cloud-Modell kann mindestens fünf Eigenschaften aufweisen, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle.
-
Die Eigenschaften sind folgende:
On-demand Self Service (Selbstzuweisung bei Bedarf): Ein Cloud-Nutzer kann einseitig Datenverarbeitungsfunktionen wie zum Beispiel Serverzeit und Netzwerkspeicher dem Bedarf entsprechend automatisch bereitstellen, ohne dass eine Interaktion von Menschen mit dem Anbieter des Dienstes erforderlich ist.
-
Broad Network Access (umfassender Netzwerkzugriff): Es stehen Funktionen über ein Netzwerk zur Verfügung, auf die der Zugriff über Standardmechanismen erfolgt, die die Verwendung heterogener Thin- oder Thick-Quellplattformen (z. B. Mobiltelefone, Notebook-Computer und PDAs) unterstützen.
-
Resource Pooling (Ressourcenbündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehrere Nutzer unter Verwendung eines Mehrfachnutzermodells mit unterschiedlichen physischen und virtuellen Ressourcen zu bedienen, die entsprechend dem Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine Art Ortsunabhängigkeit in der Weise, dass der Nutzer im Allgemeinen keine Kontrolle oder Kenntnis über den exakten Ort der bereitgestellten Ressourcen hat, aber möglicherweise in der Lage ist, den Ort auf einer höheren Abstraktionsebene (z. B. Land, Bundesstaat oder Datenverarbeitungszentrum) anzugeben.
-
Rapid Elasticity (rasche Elastizität): Funktionen können rasch und elastisch bereitgestellt werden, in einigen Fällen automatisch, um den Funktionsumfang schnell nach oben anzupassen, und schnell freigegeben werden, um den Funktionsumfang schnell nach unten anzupassen. Für den Nutzer entsteht oftmals der Eindruck, dass die zur Bereitstellung verfügbaren Funktionen unbegrenzt sind und jederzeit in jeder beliebigen Menge gekauft werden können.
-
Measured Service (bemessener Dienst): Cloud-Systeme steuern und optimieren automatisch die Ressourcenverwendung durch Nutzung einer Bemessungsfunktion auf einer bestimmten Abstraktionsebene, die für die Art des Dienstes geeignet ist (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, sodass Transparenz sowohl für den Anbieter als auch den Kunden des genutzten Dienstes besteht.
-
Die Dienstmodelle sind folgende:
Software as a Service (SaaS) (Software als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Die Anwendungen sind von verschiedenen Quelleinheiten aus über eine Thin-Quellschnittstelle wie zum Beispiel über einen Web-Browser (z. B. auf dem Web beruhende eMail) zugänglich. Der Nutzer verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfunktionen nicht, abgesehen von der möglichen Ausnahme eingeschränkter benutzerspezifischer Konfigurationseinstellungen von Anwendungen.
-
Platform as a Service (PaaS) (Plattform als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen bereitzustellen, die unter Verwendung von Programmiersprachen und Programmierwerkzeugen erzeugt wurden, die durch den Anbieter unterstützt werden. Der Nutzer verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfunktionen nicht, hat aber die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendungen.
-
Infrastructure as a Service (IaaS) (Infrastruktur als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicherplatz, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Kunde beliebige Software bereitstellen und ausführen kann, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet oder steuert die unterlagerte Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz sowie bereitgestellte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Vernetzungskomponenten (z. B. über Host-Firewalls).
-
Die Bereitstellungsmodelle sind folgende:
Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für ein Unternehmen betrieben. Sie kann durch das Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.
-
Community Cloud: Die Cloud-Infrastruktur wird von mehreren Unternehmen genutzt und unterstützt eine bestimmte Benutzergemeinschaft, die gemeinsame Interessen hat (z. B. eine Aufgabe, Sicherheitsanforderungen, Richtlinie und Gesichtspunkte im Zusammenhang mit der Einhaltung von Gesetzen und Vorschriften). Sie kann durch die Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.
-
Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Gruppe in einem Industriezweig zur Verfügung gestellt und ist Eigentum eines Unternehmens, das Cloud-Dienste verkauft.
-
Hybrid Cloud: Die Cloud-Infrastruktur ist eine Mischung aus zwei oder mehreren Clouds (Private Cloud, Community Cloud oder Public Cloud), die eigenständige Einheiten bleiben, aber über eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portierbarkeit von Daten und Anwendungen ermöglicht (z. B. Cloud-Zielgruppenverteilung (Cloud Bursting) zum Lastausgleich zwischen Clouds).
-
Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus untereinander verbundenen Knoten aufweist.
-
9 veranschaulicht eine Ausführungsform eines Cloud-Computing-Knotens 300, der eine Realisierungsform des Quellservers 4a, Zielservers 4b und von Deduplizierungskomponenten 24 aufweisen kann, wobei die Komponenten in einem oder mehreren der Knoten 300 realisiert sein können. Der Cloud-Computing-Knoten 300 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und nicht dazu gedacht, eine beliebige Einschränkung hinsichtlich des Einsatzbereiches oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung nahezulegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 300 realisiert werden und/oder eine beliebige der hierin oben dargelegten Funktionalitäten durchführen.
-
In dem Cloud-Computing-Knoten 300 liegt ein Computersystem/Server 302 vor, der in Verbindung mit zahlreichen anderen Mehrzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig ist. Zu Beispielen wohlbekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem/Server 302 geeignet sind, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Quellen, Thick-Quellen, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen.
-
Das Computersystem/der Server 302 kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 302 kann in verteilten Cloud-Computing-Umgebungen praktisch umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, zu denen Arbeitsspeichereinheiten gehören.
-
Wie in 9 gezeigt, ist das Computersystem/der Server 302 im Cloud-Computing-Knoten 300 in Form einer Mehrzweck-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/des Servers 302 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 304, ein Systemspeicher 306 und ein Bus 308 gehören, der verschiedene Systemkomponenten einschließlich des Systemspeichers 306 mit dem Prozessor 304 verbindet.
-
Der Bus 308 stellt eine oder mehrere von beliebigen verschiedenen Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gehören zu derartigen Architekturen der ISA-Bus (ISA = Industry Standard Architecture), der MCA-Bus (MCA = Micro Channel Architecture), EISA-Bus (EISA = Enhanced ISA), der lokale VESA-Bus (VESA = Video Electronics Standards Association), und der PCI-Bus (PCI = Peripheral Component Interconnect).
-
Das Computersystem/der Server 302 weist normalerweise eine Vielfalt von Medien auf, die von Computersystemen gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 302 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht auswechselbare Medien.
-
Zum Systemspeicher 306 können für Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 310 und/oder Cache-Zwischenspeicher 312 gehören. Das Computersystem/der Server 302 kann ferner andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien aufweisen. Lediglich als Beispiel kann das Speichersystem 313 zum Lesen von und Schreiben auf ein nicht auswechselbares, nichtflüchtiges magnetisches Medium (nicht gezeigt und normalerweise als „Festplatte” bezeichnet) bereitgestellt sein. Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine auswechselbare nichtflüchtige Magnetplatte (z. B. eine „Diskette”) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine auswechselbare nichtflüchtige optische Platte wie zum Beispiel eine CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. In einem derartigen Fall kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 308 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben, kann der Speicher 306 mindestens ein Programmprodukt aufweisen, das eine Menge (z. B. mindestens eines) von Programmmodulen aufweist, die so gestaltet sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Das Programm/Dienstprogramm 314, das eine Menge (mindestens eines) von Programmmodulen 316 aufweist, kann zum Beispiel und nicht als Einschränkung im Speicher 306 sowie in einem Betriebssystem, in einem oder mehreren Anwendungsprogrammen oder in anderen Programmmodulen und Programmdaten gespeichert sein. Jedes des Betriebssystems, des einen oder der mehreren Anwendungsprogramme, der anderen Programmmodule und Programmdaten oder jede einer bestimmten Kombination davon kann eine Realisierungsform einer Vernetzungsumgebung aufweisen. Die Programmmodule 316 führen üblicherweise die Funktionen und/oder Methodiken an Ausführungsformen der Erfindung wie hierin beschrieben aus.
-
Das Computersystem/der Server 302 kann außerdem kommunizieren mit einer oder mehreren externen Einheiten 318 wie zum Beispiel mit einer Tastatur, einer Zeigeeinheit einer Anzeigeeinheit 320 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder mit beliebigen Einheiten (z. B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 302 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten zu kommunizieren. Eine derartige Kommunikation kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 322 stattfinden. Darüber hinaus kann das Computersystem/der Server 302 über den Netzwerkadapter 324 mit einem oder mehreren Netzwerken kommunizieren, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und oder mit einem öffentlichen Netzwerk (z. B. mit dem Internet). Wie abgebildet kommuniziert der Netzwerkadapter 324 über den Bus 308 mit den anderen Komponenten des Computersystems/Servers 302. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 302 verwendet werden könnten. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplatten-Arrays, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
-
Unter Bezugnahme auf 10 ist dort die veranschaulichende Cloud-Computing-Umgebung 350 abgebildet. Wie abgebildet weist die Cloud-Computing-Umgebung 350 einen oder mehrere Cloud-Computing-Knoten 300 auf, mit denen lokale Datenverarbeitungseinheiten wie zum Beispiel Personal Digital Assistant (PDA) oder Mobiltelefon 354A, Desktop-Computer 354B, Notebook-Computer 354C und/oder Automobil-Computersystem 354N kommunizieren können, die von Cloud-Nutzern verwendet werden. Die Knoten 300 können untereinander kommunizieren. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie zum Beispiel in einer hierin oben beschriebenen Private Cloud, Community Cloud, Public Cloud oder Hybrid Cloud oder in Kombination davon gruppiert sein (nicht gezeigt). Dies ermöglicht der Cloud-Computing-Umgebung 350, Infrastruktur, Plattformen und/oder Software als Dienste zu bieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit zu verwalten braucht. Es versteht sich, dass die in 10 gezeigten Arten von Datenverarbeitungseinheiten 354A bis N als veranschaulichend gedacht sind und dass die Datenverarbeitungsknoten 300 und die Cloud-Computing-Umgebung 350 über eine beliebige Art von Netzwerk und/oder netzwerkadressierbarer Verbindung (z. B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit kommunizieren können.
-
Ferner zeigt 10 eine einzelne Cloud. Zusätzlich zu der Cloud, die Kunden-/Produktionsdaten aufweist, können bestimmte Cloud-Ausführungsformen jedoch ein Bereitstellungsmodell bieten, das eine separate „Sicherungs”- oder „Datenschutz”-Cloud aufweist. Das Bereitstellen einer getrennten, von anderen Clouds verschiedenen, zusätzlichen Cloud als Datenschutz-Cloud, um ein beliebiges Primär-Cloud-Modell (Bereitstellen, Community, Hybrid usw.) von der Datenschutz-Cloud zu trennen, vermeidet einen einzelnen Ausfallpunkt und bietet ein höheres Maß an Schutz der Kundendaten in einer getrennten Sicherungs-Cloud.
-
Unter Bezugnahme auf 11 ist dort eine Menge von Funktionsabstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 350 (12) bereitgestellt werden. Im Vorhinein sollte klar sein, dass die in 11 gezeigten Komponenten, Schichten und Funktionen nur zur Veranschaulichung gedacht und Ausführungsformen der Erfindung nicht auf diese beschränkt sind. Wie abgebildet werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
Die Hardware- und Softwareschicht 360 weist Hardware- und Softwarekomponenten auf. Zu Beispielen von Hardwarekomponenten zählen Großrechner, bei einem Beispiel IBM® zSeries®-Systeme; auf der RISC-Architektur (RISC = Reduced Instruction Set Computer) beruhende Server, bei einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke und Vernetzungskomponenten. Zu Beispielen von Softwarekomponenten zählen Netzwerk-Anwendungsserversoftware, bei einem Beispiel die Anwendungsserversoftware IBM WebSphere®; und Datenbanksoftware, bei einem Beispiel die Datenbanksoftware IBM DB2®. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind weltweit in vielen juristischen Zuständigkeitsbereichen eingetragene Marken von International Business Machines Corporation.)
-
Die Virtualisierungsschicht 362 stellt eine Abstraktionsschicht bereit, von der aus die folgenden Beispiele virtueller Einheiten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke einschließlich virtueller privater Netzwerke: virtuelle Anwendungen und Betriebssysteme; und virtuelle Quellen.
-
Bei einem Beispiel kann die Verwaltungsschicht 364 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung stellt die dynamische Beschaffung von Datenverarbeitungsressourcen und von anderen Ressourcen bereit, die genutzt werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Gebührenerfassung und Preisberechnung stellen eine Kostüberwachung bereit, während Ressourcen innerhalb der Cloud-Computing-Umgebung genutzt werden, sowie Abrechnung und Fakturierung des Verbrauchs dieser Ressourcen. Bei einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung bei Cloud-Nutzern und Aufgaben sowie den Schutz für Daten und andere Ressourcen bereit. Das Benutzerportal bietet Nutzern und Systemadministratoren einen Zugang zur Cloud-Computing-Umgebung. Die Dienstgüteverwaltung (Service Level Management) stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die jeweils erforderliche Dienstgüte erreicht wird. Die Planung und Erfüllung von Dienstgütevereinbarungen (Service Level Agreement, SLA) stellt die Vorausplanung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die auf der Grundlage eines SLA zukünftige Anforderungen erwartet werden.
-
Die Betriebslastschicht 366 stellt Beispiele von Funktionalitäten bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Betriebslasten und Funktionen, die von dieser Ebene aus bereitgestellt werden können, gehören: Zuordnung und Navigation; Softwarebereitstellung und Verwaltung während des Lebenszyklus; Bereitstellung von Schulungen in virtuellen Schulungsräumen; Verarbeitung von Datenanalysen; Transaktionsverarbeitung; und die Replikationsdienste wie zum Beispiel in Bezug auf die 1 bis 8 oben beschrieben.
-
Die beschriebenen Operationen können unter Verwendung von Standard-Programmiertechniken oder Standard-Entwicklungstechniken zur Erzeugung von Software, Firmware, Hardware oder einer beliebigen Kombination davon als Verfahren, Vorrichtung oder Computerprogrammprodukt realisiert sein. Dementsprechend können Aspekte der Ausführungsformen die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, in der Software- und Hardwareaspekte miteinander kombiniert sind, die hierin allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden. Ferner können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
-
Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu den genaueren Beispielen (unvollständige Liste) computerlesbarer Speichermedien zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
-
Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode aufweisen. Ein derartiges übertragenes Signal kann eine beliebige Vielfalt von Formen annehmen, einschließlich, ohne darauf beschränkt zu sein, einer elektromagnetischen oder optischen Form oder einer beliebigen geeigneten Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, senden oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
-
Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, einschließlich, ohne darauf beschränkt zu sein, drahtloser, drahtgebundener Medien, Lichtwellenleitern, HF usw. oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
-
Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C” oder ähnlichen Programmiersprachen geschrieben sein. 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 vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder über ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
-
Aspekte der vorliegenden Erfindung sind oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen schaffen.
-
Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebene Funktion/Aktion realisieren.
-
Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen bereitstellen.
-
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 Erfindungen)”, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Die Begriffe „einschließlich”, „aufweisen/aufweisend”, „hat/haben” und Variationen davon bedeuten „einschließlich, ohne darauf beschränkt zu sein”, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Alle nummerierten Aufstellungen von Elementen schließen nicht stillschweigend ein, dass sich beliebige oder alle der Elemente gegenseitig ausschließen sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Die Begriffe „ein/eine” und „der/die/das” bezeichnen „ein/eine oder mehrere”, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Einheiten, die in Verbindung untereinander stehen, brauchen nicht ununterbrochen miteinander in Verbindung zu stehen, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem können untereinander in Verbindung stehende Einheiten über eine oder mehrere Vermittlereinheiten direkt oder indirekt miteinander kommunizieren.
-
Eine Beschreibung einer Ausführungsform, bei der mehreren Komponenten untereinander in Verbindung stehen, schließt nicht stillschweigend ein, dass alle diese Komponenten erforderlich sind. Vielmehr ist eine Vielfalt optionaler Komponenten beschrieben, um die große Vielfalt möglicher Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Obwohl ferner Prozessschritte, Verfahrensschritte, Algorithmen und dergleichen in einer Reihenfolge beschrieben sein können, können derartige Prozesse, Verfahren und Algorithmen so gestaltet sein, dass sie in alternativen Reihenfolgen funktionieren. Anders ausgedrückt gibt ein möglicherweise beschriebener beliebiger Ablauf oder eine möglicherweise beschriebene beliebige Reihenfolge von Schritten nicht zwangsläufig ein Erfordernis an, dem zufolge die Schritte in dieser Reihenfolge durchgeführt werden müssen. Die hierin beschriebenen Schritte von Prozessen können in einer beliebigen praktisch durchführbaren Reihenfolge durchgeführt werden. Ferner können einige Schritte gleichzeitig durchgeführt werden.
-
Wenn hierin eine einzelne Einheit oder ein einzelner Gegenstand beschrieben ist, wird ohne Weiteres ersichtlich, dass mehr als eine Einheit/ein Gegenstand (unabhängig davon, ob sie zusammenarbeiten) anstelle einer einzelnen Einheit/eines einzelnen Gegenstands verwendet werden können. Ebenso wird, wenn hierin mehr als eine Einheit oder mehr als ein Gegenstand beschrieben ist (unabhängig davon, ob sie zusammenarbeiten), ohne Weiteres ersichtlich, dass eine einzelne Einheit oder ein einzelner Gegenstand oder eine andere Anzahl von Einheiten/Gegenständen anstelle der gezeigten Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten verkörpert sein, die nicht ausdrücklich als diese Funktionalität/diese Merkmale aufweisend beschrieben sind. Daher brauchen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht aufzuweisen.
-
Die veranschaulichten Operationen der 6, 7a, 7b und 8 zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge auftreten. Bei alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge durchgeführt, verändert oder entfernt werden. Darüber hinaus können Schritte zu der oben beschriebenen Logik hinzugefügt werden, die dann immer noch den beschriebenen Ausführungsschritten entspricht. Ferner können hierin beschriebene Operationen der Reihe nach auftreten, oder bestimmte Operationen können parallel verarbeitet werden. Weiterhin können Operationen durch eine einzelne Verarbeitungseinheit oder durch verteilte Verarbeitungseinheiten durchgeführt werden.
-
Die vorstehende Beschreibung verschiedener Ausführungsformen der Erfindung wurde zur Veranschaulichung und Beschreibung vorgelegt. Sie ist nicht als erschöpfend oder als die Erfindung in der exakt offenbarten Form einschränkend gedacht. In Anbetracht der oben aufgeführten Lehren sind viele Veränderungen und Variationen möglich. Es ist nicht beabsichtigt, den Schutzbereich der Erfindung durch diese detaillierte Beschreibung einzuschränken, sondern vielmehr durch die hier beigefügten Ansprüche. Die obige ausführliche Beschreibung, die Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und der Verwendung des Aufbaus der Erfindung dar. Da viele Ausführungsformen der Erfindung geschaffen werden können, ohne vom Ideengehalt und Schutzbereich der Erfindung abzuweichen, ist die Erfindung in den hierin im Anschluss angefügten Ansprüchen niedergelegt.