-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf Datenspeicherung- und Wartungsfunktionen, die innerhalb eines Datenspeicherungssystems durchgeführt werden. Die vorliegende Erfindung bezieht sich im Speziellen auf eine integrierte Herangehensweise zur effizienten Deduplizierung von Daten in einem Speichermanagementsystem durch Durchführung von Deduplikationsaktivitäten sowohl an der Quelle als auch am Ziel der Daten.
-
Hintergrundinformationen
-
Datendeduplizierung, der Prozess der Eliminierung von redundanten Daten, ist eine wichtige in Speichersystemen angewandte Technologie geworden. Deduplizierung ermöglicht die Verringerung der benötigten Speicherkapazität, weil nur einfach vorhandene Datenteile gespeichert werden. In einer typischen Konfiguration hat ein datenträgerbasiertes Speichersystem, wie zum Beispiel ein Speichermanagementserver oder VTL (Virtuelle Bandbibliothek, „Virtual Tape Library”) die Fähigkeit, redundante „Datenumfänge” (auch bekannt als „chunks”) zu detektieren und die Duplizierung zu verringern durch Vermeidung der redundanten Speicherung solcher Umfänge. Das Deduplizierungsspeichersystem könnte zum Beispiel die Datei A in Chunks a–h aufteilen, detektieren, dass die Chunks d und e redundant sind und die redundanten Chunks nur einmal speichern. Die Redundanz könnte innerhalb der Datei A oder mit anderen im Speichersystem gespeicherten Dateien auftreten.
-
Bekannte Techniken zur Deduplizierung von Datenobjekten existieren. Allerdings ermöglichen existierende Deduplizierungslösungen kein Teilen der Datenchunks, die durch eine Deduplizierungsoperation erzeugt wurden, die entweder an der Quelle oder an dem Ziel durchgeführt wurde. Kunden sind dazu gezwungen, entweder eine ineffiziente und unvollständige Deduplizierungsanwendung einzusetzen oder eine Deduplizierung bei zwei Produkten einzusetzen, die keine deduplizierten Daten teilen können.
-
Die Veröffentlichung „Evaluating Data Deduplication Solutions” betrifft ein Data Management Tool, Deduplizierung und einen Überblick von dafür geeigneten Lösungen (IBM: Evaluating Data Deduplication Solutions. Evaluating Data Deduplication Solutions, 2008. Im Internet: <URL: http://www.csiltd.co.uk/PDFS/IBM%20Nseries%20Data%20Deduplication.pdf> [recherchiert am 08.07.2013]).
-
Die
US 2008/0 034 012 A1 betrifft ein Verfahren zum Entscheiden, ob eine bestimmte Datei auf einem Zielcomputer in einem zentralen Speichersystem gesichert werden soll, und ein System zum Ausführen des Verfahren, wobei das Verfahren die Schritte aufweist: Berechnen eines bestimmten Hashkeys aus dem Inhalt der bestimmten Datei, Verifizieren, ob der bestimmte Hashkey sich bereits in einer lokalen Datenbank auf einem Zielcomputer befindet, wobei für jede Computerdatei auf dem Zielcomputer, welche zuvor bereits gesichert worden ist, die lokale Datenbank eine Aufzeichnung aufweist, welche umfasst: einen Dateihashkey, der aus der Computerdatei berechnet wurde, und einen lokalen Dateipfad in dem Zielcomputer, wo die Computerdatei gespeichert sein sollte, wobei dem Dateipfad der Dateihashkey zugeordnet ist, falls der bestimmte Hashkey nicht in der lokalen Datenbank vorhanden ist, Sichern der bestimmten Datei durch Durchführen der Schritte: A. Erzeugen einer Sicherungsdatei (Backup-Datei), die ein Duplikat der bestimmten Datei ist, B. Umbenennen der Sicherungsdatei durch den bestimmten Hashkey, C. Speichern der umbenannten Backup-Datei in einem zentralen Speichersystem, und Speichern einer neuen Aufzeichnung in der lokalen Datenbank, welche den bestimmten Hashkey und einen bestimmten Pfad in dem Zielcomputer umfasst, wo die bestimmte Datei gegebenenfalls wiederhergestellt werden soll, und falls der bestimmte Hashkey in der lokalen Datenbank vorhanden ist, nicht Sichern der bestimmten Datei in dem zentralen Speichersystem.
-
Zusammenfassung
-
Aufgabe der Erfindung ist es, ein Speichermanagementsystem sowie ein Verfahren zur integrierten Deduplizierung mit verbesserter Flexibilität und Unabhängigkeit von dem Ort (Quelle oder Ziel) bereitzustellen.
-
Die der Erfindung zugrunde liegenden Aufgaben werden mit den Merkmalen der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen angegeben.
-
Ein Aspekt der vorliegenden Erfindung umfasst eine Lösung, um den oben erwähnten Problemen mit einer integrierten Herangehensweise zur Durchführung von Deduplizierungen zu begegnen. In einer Ausführungsform ermöglicht eine Systemkonfiguration ein nahtloses Schalten zwischen Quell-(Client) und Ziel(Server)-Deduplizierungsaktivitäten (ein Client ist eine Quelle und ein Server ist ein Ziel, diese Begriffe werden hier austauschbar verwendet). Das Umschalten kann auf Dateiebene oder auf Knotenebene geschehen (ein Knoten ist eine Darstellung aller Daten von einem Quell-Client, wie sie innerhalb des Zielspeicherservers gesehen werden). Daher kann der Clientknoten A dazu ausgebildet sein, eine quellseitige Deduplizierung durchzuführen, wobei der Clientknoten B dazu ausgebildet ist, eine zielseitige Deduplizierung durchzuführen. Zusätzlich können Chunks, die durch entweder beim Ziel oder bei der Quelle durchgeführte Deduplizierungsaktivitäten erzeugt wurden, zwischen mehreren Knoten und zwischen mehreren unterschiedlichen Dateien wiederverwendet werden.
-
In einer Implementierung der vorliegenden Erfindung wird diese integrierte Deduplizierungsfunktionalität dadurch erreicht, dass derselbe Deduplizierungsprozess verwendet wird und dass der Deduplizierungsindex zwischen der Quelle und dem Ziel geteilt wird. Jegliche Datentransformierung, wie zum Beispiel Komprimierung und Verschlüsselung, wird nach einem Fingerprinting und Hash-Identifizierung der Datenchunks durchgeführt, um sicherzustellen, dass die innerhalb irgendeines Teiles des Speichermanagementsystemes gespeicherten Datenchunks zueinander identisch sind. In zusätzlichen Implementierungen werden Policies bereitgestellt, um den Ort der Deduplizierung zu bestimmen, um eine automatisierte und granulare Definition des Bereichs der durchzuführenden Deduplizierung beim Client gegenüber der Serverumgebung zu ermöglichen.
-
Obwohl die vorliegende Beschreibung verschiedene Aspekte der vorliegenden Erfindung mit den Begriffen eines Clients und eines Servers beschreibt, ist die Erfindung nicht auf eine Client-Server-Implementierung beschränkt. Vielmehr können die offenbarten Funktionsweisen auf irgendeine Lösung angewendet werden, die die Speicherung und das Abrufen von deduplizierten Daten zwischen einer Quelle und einem Ziel umfasst.
-
Eine Ausführungsform der vorliegenden Erfindung ermöglicht die Deduplizierung einer Datei entweder an einem Quell- oder an einem Zielort in einem verteilten Speichermanagementsystem. Das Speichermanagementsystem hat ein Quellcomputersystem, das mit einem Zielcomputersystem verbunden ist, und der Zieldatenspeicher ist innerhalb des Zielcomputersystems angeordnet. Das Speichermanagementsystem verwaltet ferner einen geteilten Index zur Nachverfolgung der deduplizierten Datenchunks, die innerhalb des Zieldatenspeichers gespeichert sind.
-
In einer Ausführungsform wird der geteilte Index als Datenbank geteilt und sowohl die Quellrechenmaschine als auch die Zielrechenmaschine können auf ihn zugreifen. Alternativ kann auf den geteilten Index über ein Client-Server-Protokoll zugegriffen werden, das eine Kommunikation von Datenchunkinformationen zwischen der Quelle und dem Ziel ermöglicht.
-
Ein Deduplizierungsprozess zur Deduplizierung von Datenchunks, die innerhalb des Zieldatenspeichers gespeichert werden sollen, wird bereitgestellt. Die Deduplizierung wird durch die Ausführung von Deduplizierungsinstruktionen entweder beim Zielcomputersystem oder beim Quellcomputersystem durchgeführt. Die Datei wird also durch Verwendung des Deduplizierungsprozesses in einen Satz von deduplizierten Datenchunks transformiert. Nach der Deduplizierung wird der Satz der deduplizierten Datenchunks innerhalb des Zieldatenspeichers gespeichert und die Deduplizierungsinformationen für den Satz von deduplizierten Datenchunks wird innerhalb des geteilten Indexes aktualisiert. Dieser Satz von deduplizierten Datenchunks kann später an der Quelle wieder hergestellt werden.
-
Weitere Ausführungsformen verwenden einen Fingerprinting-Algorithmus, um die Chunks zu definieren, obwohl jeglicher gewählter Mechanismus zur Definition der Chunks funktioniert, solange sowohl die Quelle als auch das Ziel denselben Mechanismus benutzt. In einer Ausführungsform umfasst der Deduplizierungsprozess einen Fingerprinting-Algorithmus zur Teilung der Daten in Chunks variabler Größe und einen Hashingalgorithmus, der zur Identifizierung deduplizierter Chunks sowohl beim Quellcomputersystem als auch beim Zielcomputersystem verwendet wird. Alternativ kann der Deduplizierungsprozess einen ersten Satz von Fingerprinting- und Hashingalgorithmen, die für Deduplizierungsaktivitäten verwendet werden, die auf dem Quellcomputersystem ausgeführt werden, und einen zweiten Satz von Fingerprinting- und Hashingalgorithmen umfassen, die für Deduplizierungsaktivitäten verwendet werden, die auf dem Zielcomputersystem ausgeführt werden.
-
Auch werden im Weiteren Ausführungsformen, Datentransformationen nach Fingerprinting und Hash-Identifizierung durchgeführt. Diese Datentransformationen können Kompression und/oder Verschlüsselungen umfassen. Die Datentransformationen können durch die Quellrechenmaschine für jeden Chunk in Abhängigkeit von einer Wiederherstellung des Satzes der deduplizierten Datenchunks an der Quellrechenmaschine rückgängig gemacht werden. Alternativ können die Transformationen durch die Zielrechenmaschine vor einer Wiederherstellung des Satzes der deduplizierten Datenchunks an der Quellrechenmaschine wiederhergestellt werden.
-
Eine andere Ausführungsform der vorliegenden Erfindung ermöglicht die Deduplikation einer Datei, entweder an einem Quell- oder an einem Zielort in einem verteilten Speichermanagementsystem entsprechend der Benutzung einer ausgewählten Policy.
-
Dieses Speichermanagementsystem ist auch dazu ausgebildet, ein Quellcomputersystem, das mit einem Zielcomputersystem verbunden ist, zu unterstützen, wobei der Zieldatenspeicher innerhalb des Zielcomputersystemes angeordnet ist und innerhalb des Zieldatenspeichers gespeicherte Deduplizierungsinformationen der Daten durch einen geteilten Index gemanagt werden. In dieser Ausführungsform wird ein Hashingalgorithmus für eine Deduplizierung einer Datei verwendet, die innerhalb des Zieldatenspeichers gespeichert wird.
-
In dieser Ausführungsform wird eine ausgewählte Policy aus einer Vielzahl von definierten Policies angewendet, um den Ort der Deduplizierungsaktivitäten entweder an der Quellrechenmaschine oder an der Zielrechenmaschine zu bestimmen. Die Datei wird an dem bestimmten Ort unter Verwendung des ausgewählten Deduplizierungsprozesses dedupliziert und die Deduplizierungsinformationen für die Datei wird innerhalb des geteilten Indexes aktualisiert. In weiteren Ausführungsformen kann die ausgewählte Policy basierend auf der Zeit, der Systemauslastung, des Dateityps, der Dateicharakteristiken, des Clientknoten oder der Policy Domain und anderen Faktoren ausgewählt werden.
-
Kurze Beschreibung der Figuren
-
Die vorliegende Erfindung wird nun lediglich beispielhaft unter Bezugnahme auf bevorzugte Ausführungsformen, wie sie in den folgenden Figuren dargestellt sind, beschrieben:
-
1a–1c stellen beispielhafte Konfigurationen eines Speichermanagementsystems dar, das Deduplizierungsaktivitäten jeweils bei einer Quelle, einem Ziel und einer Vorrichtung wie aus dem Stand der Technik bekannt, durchführt;
-
2a stellt eine beispielhafte Konfiguration eines Speichermanagementsystems dar, das integrierte Deduplizierungsaktivitäten bei einer Quelle nach einer Ausführungsform der vorliegenden Erfindung durchführt;
-
2b stellt eine beispielhafte Konfiguration eines Speichermanagementsystems dar, das integrierte Deduplizierungsaktivitäten bei einem Ziel nach einer Ausführungsform der vorliegende Erfindung durchführt;
-
3 stellt ein Flussdiagramm dar, das abbildet, wie Datendeduplizierungsaktivitäten bei einer Quelle nach einer Ausführungsform der vorliegenden Erfindung durchgeführt werden; und
-
4 stellt ein Flussdiagramm dar, das eine beispielhafte Funktionsweise darstellt, wie eine Deduplizierung bei einer Quelle und einem Ziel innerhalb eines Speichersystems nach einer Ausführungsform der vorliegenden Erfindung durchgeführt wird.
-
Detaillierte Beschreibung der Erfindung
-
Die verschiedenen Ausführungsformen der vorliegenden Erfindung ermöglichen eine optimierte Steuerung von Deduplizierungsaktivitäten, die innerhalb eines Speichermanagementsystems durchgeführt werden. Existierende Speichersysteme führen Deduplizierungsaktivitäten an einem einzigen Ort aus. Im Gegensatz dazu, ermöglicht die vorliegend offenbarte Konfiguration einen integrierten und optimierten Deduplizierungsprozess, der an Datenquell- und/oder Zielorten durchgeführt werden kann.
-
In existierenden Speichermanagementkonfigurationen werden eine Vielzahl von Kompromissen eingegangen durch die exklusive Durchführung von Deduplizierungsaktivitäten bei der Quelle, dem Ziel oder einen externen Speichervorrichtung. Die unterschiedlichen Ausführungsformen der vorliegenden Erfindung treten diesen Limitierungen entgegen, dadurch dass sie die Ausführung von Deduplizierungsprozessen entweder an der Quelle oder dem Ziel ermöglichen. Dies schafft die Möglichkeit, passende Chunks, die in einem Speichersystem mit entweder Client- oder Server-seitiger Deduplizierung erzeugt wurden, erfolgreich zu speichern, zu finden und zu verwenden.
-
Die unterschiedlichen Ausführungsformen der vorliegenden Erfindung ermöglichen ferner eine erweiterte Steuerung von Deduplizierungsaktivitäten in Abhängigkeit von einer Vielzahl von Faktoren. Der Ort der Deduplizierungsaktivitäten, die innerhalb des gesamten Speichermanagementsystems ausgeführt werden können, kann auf einer granularen Ebene nach spezifischen Policies, Dateitypen, Bedingungen oder anderer definierter Einstellungen gesteuert werden.
-
In einem typischen Deduplizierungsprozess, der für die Deduplizierung eines Datenobjektes verwendet wird, wird das Objekt erst unter Verwendung eines Verfahrens wie zum Beispiel Rabin Fingerprinting in Chunks geteilt. Redundante Chunks werden unter Verwendung einer Hashfunktion wie zum Beispiel MD5 oder SHA-1 detektiert, um einen Hash-Value für jeden Chunk zu erzeugen. Dann wird dieser Wert mit Werten für schon auf dem System gespeicherten Chunks verglichen.
-
Der Hashwert für diese gespeicherten Chunks wird in einem Index festgehalten. Wenn ein redundanter Chunk identifiziert wird, kann dieser Chunk mit einem Konter auf den passenden Chunk ersetzt werden.
-
In einem Client-Server-Speichermanagementsystem hängt der Ort der Deduplizierungsaktivitäten (das heißt der Ort, wo die redundanten Datenchunks identifiziert und entfernt werden) von der Konfiguration des spezifischen Systems ab. Mit existierenden Konfigurationen kann die Deduplizierung an der Datenquelle (dem Client; dem Ziel (dem Speicherserver); oder an einer mit dem Speicherserver verbundenen Deduplizierungsvorrichtung durchgeführt werden. Es gibt eine Vielzahl von Vorteilen und Nachteilen, die mit dem Ort der Deduplizierungsoperation wie folgt zusammenhängen:
-
Durchführung der Deduplikation an der Datenquelle
-
Einige der Vorteile, die Deduplizierungsaktivitäten an der Datenquelle durchzuführen, bevor die Daten an das Ziel übermittelt werden, umfassen: Netzwerkeinsparungen; Datenspeichereinsparungen und Verwendung von CPU-Zyklen hauptsächlich an der Quellhardware im Vergleich zum Ziel. Einige der Nachteile umfassen: Die Möglichkeit von Hashkollisionen, die in unwiederherstellbaren Daten resultieren; es werden CPU-Zyklen der Quelle benötigt, selbst wenn die Quellhardware für andere Zwecke genutzt wird oder das Ziel verfügbare Zyklen hat; und die Deduplizierung kann nicht auf schon auf dem Zielspeicherserver gespeicherte Daten angewendet werden.
-
1a zeigt eine Beispielkonfiguration eines Speichermanagementsystems 100, das Deduplizierungsaktivitäten am Quellort durchführt wie aus dem Stand der Technik bekannt ist. Das Speichersystem umfasst einen Client (die Datenquelle) 120 und einen Server (das Datenziel) 140, die über ein Netzwerk 130 miteinander verbunden sind. Bei normaler Funktionsweise des Speichersystems werden Daten von verschiedenen Clientknoten, wie zum Beispiel Client 120, an die Datenablage 145 innerhalb des Servers 140 übertragen, um gesichert, aktiviert, migriert oder in anderer Weise gemanagt zu werden.
-
Wie gezeigt wird die Datei 105 durch den Client 120 aufgenommen. Wenn die Datei 105 gelesen wird, wird sie in eine Vielzahl von Blöcken oder Chunks aufgeteilt, die als Chunks A 110, B 111, B 112, A 113, C 114 dargestellt sind. In diesem Beispiel ist Chunk A 110 ein Duplikat von Chunk A 113 und B 111 ist ein Duplikat von Chunk B 112. Bei dieser Funktionsweise wartet der Client 120 typischerweise nicht bis die gesamte Datei aufgenommen wurde, bevor er Chunks an den Server 140 sendet (mit der Ausnahme von besonders kleinen Dateien, die in einem oder nur wenigen Chunks resultieren, abhängig von der Client-Konfiguration). Der Client 120 liest Daten von einem Dateiort oder wenn die Dateien in einem Pufferspeicher durch eine Fremdanwendung wie einem E-Mail- oder Datenbankserver. Während der Client 120 die Daten der Datei 105 liest, führt ein Deduplizierungsprozess 122 Fingerprinting, Hashing, Identifikationen von Duplikatchunks und Senden der Chunks, die einmalig sind, an den Server aus. Die Datendeduplizierung der Datei 105 wird daher durch den Client 120 durchgeführt, bevor irgendwelche relevanten deduplizierten Daten eventuell an den Speicherablageserver 140 übertragen wurden.
-
Obwohl 1a eine in-band-Deduplizierung darstellt (Deduplizierung, die während der Aufnahme der Datei auf den Client-Datenspeicher geschieht), die bei Datei 105 angewendet wird, würden Fachleute erkennen, dass auch eine out-of-band-Deduplizierung (Deduplizierung, die nach Aufnahme der Datei an dem Client geschieht) bei der Datei 105 mit ähnlichen clientseitigen Deduplizierungsfunktionsweisen durchgeführt werden könnte.
-
Der Satz der Datenchunks 151, 152, 153 stellt dar, welche Datenchunks von dem Client an den Speicherserver über das Netzwerk 130 gesendet werden. Weil die Chunks der Datei 105 auf dem Clientsystem 120 dedupliziert wurden, werden nur drei deduplizierte Chunks im Gegensatz zu den fünf Datenchunks der originalen Datei 105 an den Speicherserver 140 übertragen. Allerdings existieren die Chunks A' 161 und C'' 162 schon auf dem Speicherserver Datenspeicher 145 wie gezeigt. In diesem Beispiel sind die Chunks A' 161 und A 151 und C' 162 und C 152 duplizierte Chunks, die jeweils identischen Inhalt umfassen. Weil die Deduplizierung nicht auf dem Server durchgeführt wird, werden die Chunks A' 161 und C' 162 zusätzlich zu den neu zu dem Datenspeicher hinzugefügten Chunks A 162, B 164 und C 165 existieren.
-
Durchführung der Deduplizierung am Datenziel
-
Einige der Vorteile der Durchführung von Deduplizierungsaktivitäten beim Ziel der Daten (das heißt beim Speicherserver) umfassen: Datenspeichereinspeicherungen beim Speicherserver; und Aufwendung von CPU-Zyklen eher bei der Zielhardware als bei der Quelle. Einige der Nachteile umfassen: Redundante, duplizierte Daten müssen über das Netzwerk gesendet werden, wenn die Daten an das Ziel übertragen werden; und CPU-Zyklen werden beim Ziel verwendet, selbst wenn sie zur Verwendung an der Quelle verfügbar sind.
-
1b zeigt eine Beispielkonfiguration eines Speichermanagementsystems 100, das Deduplizierungsaktivitäten an einem Zielspeicherort durchführt wie aus dem Stand der Technik bekannt. Die Konfiguration des Clients 120, des Ziels 140 und der Netzwerkverbindung 130 sind der in 1a dargestellten ähnlich. In ähnlicher Weise wird die Datei 105 am Client 120 eingegeben. Bei der zielseitigen Deduplizierung ist es möglich, dass der Client 120 nicht einmal bemerkt, dass die Datei 105 aus Chunks besteht, da die Datei innerhalb des Clients einfach als ein Bitstrom 125 behandelt werden kann.
-
Der Client 120 fügt keinerlei Art von Chunkbegrenzern in die Datei ein, die an das Ziel 140 gesendet wird. Eine Kopie der Datei 150 wird an den Zielspeicherserverablagerung 140 über das Netzwerk 130 in einer nicht deduplizierten Form übertragen. Was bedeutet, dass die ganze Datei, wie sie original am Client 120 eingegeben wurde, übertragen wird. Daher ist es wahrscheinlich, dass einige Teile der übertragenen Datei 150 wahrscheinlich Chunks umfassen, die ein Duplikat voneinander sind.
-
Die übertragene Datei wird am Ziel nach der Funktionsweise einer Deduplizierungskomponente 142 dedupliziert. Bei diesem out-of-band-Deduplizierungsbeispiel, bei dem die gesamte Datei 150 das Ziel 140 erreicht, werden die unterschiedlichen Chunks, die die Datei 150 umfassen, Chunks A 151, B 152, B 153, A 154, C 155 gemäß der schon auf dem Datenspeicher 145 existierenden Daten dedupliziert. Die Chunks A' 161 und C' 162 sind jeweils Duplikate der Chunks A 151 und A 154 und C 155. Es gibt kein Duplikat des Chunks B. Daher werden die Chunks A 151, B 153, A 154 und C 155 von dem Datenspeicher entfernt, wohingegen nur B 152 von diesen neu hinzugefügten Chunks im Datenspeicher 145 nach der Deduplizierung verbleiben wird (gezeigt als B 163). Vielmehr wird nur eine Kopie jedes einzelnen Chunks auf dem Zieldatenspeicher 145 nach Durchführung der Deduplizierungsoperation verbleiben.
-
Durchführung der Deduplizierung an einer Vorrichtung
-
Es existieren Vorrichtungen, die WAN-Deduplizierungen oder speicherbasierte Deduplizierungen auf Zielspeicherservern durchführen können. Der Begriff Vorrichtung bezieht sich hier im Allgemeinen auf ein spezialisiertes stand-alone System, das Software ausführen kann, um Datenmanagementoperationen innerhalb eines Speichernetzwerkes durchzuführen. Typischerweise sind Vorrichtungen dazu ausgebildet, eine Deduplizierung von auf einem Zielspeicherserver gespeicherten Daten durchzuführen, nachdem die Vorrichtung zu dem Speichernetzwerk hinzugefügt wurde. Zum Beispiel kann die Vorrichtung eine Virtual Tape Library unterhalten, die Daten auf einen Satz von virtuellen Bändern dedupliziert.
-
Einige Vorteile der Durchführung von Deduplizierungsaktivitäten auf einer Vorrichtung umfassen: Einsatz einer separaten Komponente, die nicht von der Backup-Software oder Backup-Funktionsweisen des Speichersystems abhängt; und Aufwendung von CPU-Zyklen auf einer separaten Vorrichtungshardware im Gegensatz zur Ziel- oder Quellhardware. Einige der Nachteile umfassen: Bei Verwendung einer speicherbasierten Deduplizierungsvorrichtung werden redundante Daten über das Netzwerk an das Ziel gesendet; bei der Verwendung einer WAN-basierten Deduplizierungsvorrichtung existieren redundante Daten im Speicher; wenn speicherbasierte und WAN-basierte Deduplizierungsvorrichtungen gemeinsam verwendet werden, kann es sehr schwierig sein, irgendeine Granularität für die Auswahl der zu deduplizierenden Daten bereitzustellen; CPU-Zyklen werden immer noch an der Zielhardware aufgewendet, die Vorrichtung führt ihre Deduplizierungsoperationen datenagnostisch durch; und die Vorrichtung versucht oft, Daten zu deduplizieren, die nicht dedupliziert werden sollten – zum Beispiel Header, kombinierte oder verschlüsselte Daten.
-
1c zeigt eine Beispielkonfiguration eines Speichermanagementsystems 100, das Deduplizierungsaktivitäten durch Verwendung einer Deduplizierungsvorrichtung 170 wie aus dem Stand der Technik bekannt durchführt. Wiederum verbleibt die Konfiguration der Quelle 120, des Netzwerks 130 und des Ziels 140 die gleiche wie in 1a und 1b dargestellt. Die Vorrichtung 170 ist auch über das Netzwerk 130 mit dem Ziel 140 verbunden. Die Vorrichtung 170 führt die Deduplizierungsoperationen auf dem Ziel 140 unter Verwendung ihrer eigenen selbst mitgebrachten Prozessorleistungen und Ressourcen durch. Die Vorrichtung führt daher die Pflege einer Ablagerung für deduplizierte Daten durch Entfernen von redundant in ihrem Datenspeicher gespeicherten Daten gemäß der Deduplizierungsfähigkeiten und Prozesse der Vorrichtung durch.
-
Die Datei 105 wird wie dargestellt in den Client 120 eingegeben und dann in ihrer Gesamtheit an den Server 140 übertragen. Die Datei, die aus den Chunks A 151 und 154, B 152 und 153 und C 155 besteht, wird dann in ihrer Gesamtheit an die Vorrichtung 170 übertragen. Am Datenspeicher 175 werden viele der sich innerhalb des Datenspeichers befindenden Datenchunks (wie zum Beispiel A 161, 163 und 166; B 164 und 165; und C 162 und 167) Duplikate voneinander sein.
-
1c zeigt ferner Deduplizierungsoperationen auf dem Datenspeicher der Vorrichtung vor der Deduplizierung 175 und nach der Deduplizierung 175' mit einem out-of-band-Deduplizierungsprozess. Der Datenspeicher 175' zeigt die innerhalb des Servers gespeicherten Datenchunks nachdem die Deduplizierung auf dem Server unter Verwendung der Deduplizierungsfunktionalität 172 innerhalb der Vorrichtung 170 durchgeführt wurde. Die Vorrichtung führt eine Entfernung aller redundanten Datenchunks auf der Vorrichtung durch, was in nur einer einzigartigen Kopie von jedem Datenchunk A' 181, C' 182 und B 183 resultiert. Der Deduplizierungsprozess 172 wird mittels auf der Vorrichtung 170 ausgeführter Prozesse durchgeführt, sodass die Resultate der Deduplizierungsaktivitäten transparent für den Server 140 sind. Die Deduplizierungsvorrichtung kann dann die Daten an den Server ausgeben, als ob sie nicht dedupliziert wären.
-
Obwohl jede dieser existierenden Losungen nominell in der erfolgreichen Deduplizierung von Daten resultiert, gibt es eine Vielzahl von Kompromissen und Komplikationen, die durch die Durchführung der Deduplizierungsaktivitäten entweder beim Client oder beim Ziel oder bei einer Speichervorrichtung wie aus dem Stand der Technik bekannt, ausgelöst werden können. Die Kombination von zielseitigen und quellseitigen Deduplizierungen kann Lösungen einführen, um Komplikationen zu verringern oder komplett auszumerzen, besonders wenn der Ort der Deduplizierungsaktivitäten dynamisch gemanagt wird.
-
Die folgende Offenbarung beschreibt die Vorteile und Risiken, die typischerweise während einer Deduplizierung auftreten, und erklärt wie die verschiedenen Ausführungsformen der vorliegenden Erfindung diese Risiken dynamisch verringern kann.
-
Hashkollisionen
-
Eine zielseitige Deduplizierung kann das Risiko von Datenverlust wegen undetektierter Hashkollisionen mittels Techniken wie dem Herstellen einer Kopie der Daten vor der Durchführung der Deduplizierung oder einem zeitweisen Vergleich verringern. Im Gegensatz dazu kann eine quellseitige Deduplizierung anfälliger gegenüber dem Datenverlust wegen undetektierter Hashkollisionen sein, wenn die Daten vom Client empfangen werden. Wenn dieses Risiko nicht akzeptabel ist, kann die serverseitige Deduplizierung vorzuziehen sein mit geeigneten Verfahren das Risiko zu mildern (wie zum Beispiel Kopien der Daten in einen Kopierspeicherpool vor der Deduplizierung). Ein Beispiel wäre eine Fall, wo die Firmenpolitik verlangt, dass vertrauliche E-Mails auf dem Server dedupliziert werden.
-
Auslastungsausgleich
-
Die ultimative Herangehensweise zum Auslastungsausgleich ist eine optimierte Entscheidung einzurichten, wo Deduplizierungen vorgenommen werden sollen, um die Netzwerke und CPU-Nutzung auszugleichen. Wenn das Netzwerk der Bottleneck ist, wird optimaler Weise eine Client-Deduplizierung durchgeführt; anderenfalls sollte die Deduplizierung am Server stattfinden. Dies kann eine Runtime-Entscheidung sein oder sie kann geplant sein. Zum Beispiel wenn es am Wochenende nicht viel Netzwerkverkehr gibt, sollte eine serverseitige Deduplizierung verwendet werden. Während der Wochentage mag das Netzwerk ein Performance-Bottleneck werden und der Client würde in optimaler Weise die Deduplizierung durchführen. Historische Daten können verwendet werden, um zu bestimmen, wann die Deduplizierung an dem Client oder an dem Server durchgeführt werden soll. Andere relevanten Regeln können die Deduplizierung von großen Dateien auf dem Server umfassen, nur weil eine Client-Deduplizierung den Backup-Prozess so weit verlangsamen würde, dass ein Backup-Fenster verpasst werden würde, zum Beispiel wenn die Dateigröße größer als 5 Gigabyte ist.
-
Integrierte Deduplizierungsaktivitäten
-
Optimaler Weise wird eine Deduplizierung das Format der Daten bestimmen. In verschiedenen Ausführungsform der vorliegenden Erfindung ist dieser Mechanismus ein Teil des Client-Server-Backup-Produkts im Gegensatz zu einer externen Lösung. Integration mit einem Backup-Produkt ermöglicht es, das Wissen des Produktes (das heißt das Datenformat) zu nutzen, um die Datendeduplizierung zu optimieren. Das Wissen des Datenformates ermöglicht eine Optimierung basierend auf Dateitypen – verschiedene Deduplizierungsalgorithmen, die für bestimmte Falltypen optimiert sind, können verwendet werden. Zum Beispiel kann ein Rabin-Karp-Algorithmus als ein Basisalgorithmus verwendet werden, wohingegen anderen Fingerprinting-Algorithmen verwendet werden, wenn sie für bestimmte Dateitypen besser funktionieren. Ein anderes Beispiel ist die Deduplizierung von komprimierten Daten, wie zum Beispiel MP3 und PDF-Dateien, die dazu spezifiziert sein können, nur am Server dedupliziert zu werden.
-
Wiederverwendung von Altdaten
-
Optimalerweise werden schon auf dem Server gespeicherte Altdaten unter Verwendung von serverseitiger Deduplizierung dedupliziert, wohingegen neue Backups Vorteil ziehen können aus einer entweder server- oder clientseitigen Deduplizierung. Dies ist durch existierende Systeme nicht möglich, die lediglich dazu in der Lage sind, eine clientseitige Deduplizierung anzuwenden und daher keine Deduplizierung für clientseitige Altdaten anzuwenden. Die verschiedenen Ausführungsformen der vorliegenden Erfindung ermöglichen eine clientseitige Deduplizierung, um gemeinsame Chunks mit Altdaten, die auf dem Server dedupliziert wurden, zu teilen. Dies ist ein Vorteil gegenüber ausschließlichen Clientlösungen, da Altdaten jetzt ohne Rücksicht auf ihren Board dedupliziert werden können.
-
Der Schlüssel zur erfolgreichen Deduplizierung sowohl bei der Quelle (Client) als auch beim Ziel (Server) umfasst eine Nutzung desselben Deduplizierungsprozessalgorithmuses und Deduplizierungsindexes an beiden Orten. Zusätzlich werden jegliche Datentransformationsaktivitäten, wie zum Beispiel Komprimierung und Verschlüsselung, nach Fingerprinting und Hashidentifizierung durchgeführt, um präzise Deduplizierungsergebnisse an den verschiedenen Orten zu erhalten.
-
Als ein Beispiel einer Deduplizierungskonfiguration, die durch eine Ausführungsform durchgeführt wird, verwenden die Deduplizierungsfunktionen dieselben Hashingalgorithmen für Blöcke verschiedener Größe für sowohl quellseitige als auch zielseitige Deduplizierungen. Alternativ können mehrere Algorithmen gemischt werden, wie zum Beispiel die Verwendung von Hashing von Blöcken unterschiedlicher Größe für einige Dateien und Single Instance Store für andere, unter der Voraussetzung, dass dieselben Algorithmusauswahlregeln für quellseitige und zielseitige Deduplizierungen verwendet werden.
-
Derselbe Deduplizierungsindex wird innerhalb des Speichersystems für die Nachverfolgung existierender Chunks und für die Reassemblierung deduplizierter Objekte verwendet, egal ob die Deduplizierung an der Quelle oder am Ziel durchgeführt wird, wodurch es ermöglicht wird, dass die quell- und zielseitige Deduplizierung gemeinsame Daten teilen. Dieser Index kann durch die Verwendung einer geteilten Datenbank implementiert werden, oder er kann durch die Verwendung eines Client-Server-Protokolls implementiert werden, das eine Kommunikation von Chunkinformationen zwischen der Quelle und dem Ziel erlaubt (das heißt durch die Weiterleitung von passenden Chunkinformationen von dem Ziel zur Quelle).
-
Wenn Datentransformationen nur nach der Identifizierung von deduplizierten Chunks durchgeführt werden, verhindert dies die Möglichkeit, dass die Transformation mit der Erkennung von duplizierten Chunks interferiert. Wenn die Daten wiederhergestellt werden, werden die Transformationen durch den Client (Quelle) auf Chunkebene rückgängig gemacht. Dies ermöglicht dem Client, einen Strom gemischter Chunks (komprimiert, nicht komprimiert und verschlüsselt) zu empfangen. Alternativ können die Transformationen durch den Server (Ziel) vor einer Wiederherstellung rückgängig gemacht werden.
-
2a stellt die Funktionsweise einer beispielhaften Konfiguration eines Speichermanagementsystems 200 dar, das die integrierten Deduplizierungsaktivitäten an einer Clientquelle nach einer Ausführungsform der vorliegenden Erfindung durchführt. Der Client 220 (die Datenquelle) ist mit dem Server 240 (das Datenziel) über das Netzwerk 230 wie dargestellt verbunden. Im normalen Betriebsverlauf des Speichersystems werden die Daten durch den Client 220 wiederum empfangen, um an die Datenablage 245 innerhalb des Servers 240 als Backup, Archivierung, Migration oder anderen Managmentmaßnahmen übertragen zu werden.
-
Die Datei wird mit der Deduplizierungskomponente 222 dedupliziert, sobald sie durch den Client 220 empfangen wurde und vor der eventuellen Übertragung der Dateijunks an den Server 240. Dieser Deduplizierungsschritt wird durchgeführt durch eine Kontrolle, welche Chunks noch nicht auf dem Server 240 vorhanden sind. Der Deduplizierungsprozess wird daher verifizieren, welche Chunks auf dem Ziel gespeichert sind, anstatt die Datei basierend auf den beim Client existierenden Chunks zu deduplizieren. In einer Ausführungsform wird dies durch Abfrage eines Index 241, der sich innerhalb des Ziels 240 befindet, durchgeführt, wobei der Index nachverfolgt, welche Chunks innerhalb des Serverdatenspeichers 245 gespeichert sind.
-
In dem in 2a dargestellten Beispiel, bei dem die Deduplizierungsfunktion am Client durchgeführt wird, wird der Client bestimmen, dass nur die Chunks „A”, „B” und „C” einzigartig sind. Zusätzlich werden Deduplizierungsinformationen 242 innerhalb dieses Indexes an den Client übertragen, wenn der Index 241 auf dem Speichersystem nachgefragt wird, um den Client ferner darüber zu informieren, dass die Chunks A' 261 und C' 262 (Kopien der Datenchunks „A” und „C”) gegenwärtig auf dem Serverdatenspeicher 245 existieren. Daher wird der Client als ein Ergebnis der Informationen aus dem Index 241 entdecken, dass nur der einzigartige Chunk, der nicht auf dem Serverdatenspeicher 245 gespeichert ist, eine Kopie des Chunks „B” ist. Der einzige Chunk, der an den Server zur Speicherung gesendet wird, wird Chunk B 251 sein, der auf dem Datenspeicher 245 als Chunk 263 gespeichert wird.
-
3 stellt ein Flussdiagramm dar, das weiter erklärt, wie die Datendeduplizierung auf dem Client nach Ausführungsformen der vorliegenden Erfindung funktioniert. Dieses Flussdiagramm stellt ein Implementierungsbeispiel der clientseitige Deduplizierungsaktivitäten dar, auf die in den Schritten 431–434 von 4 Bezug genommen wird. Wie in 3 gezeigt, wird der Deduplizierungsprozess durch den Client eingeleitet, wenn eine Datei/Objekt „F” auf dem Speicherablageserver wie in Schritt 310 als Backup gespeichert werden soll.
-
Wenn die Datendeduplizierung auf dem Client wie in Schritt 320 geschehen kann, dann wird eine Vielzahl von Schritten während des Deduplizierungsprozesses auf dem Client durchgeführt. Wenn eine Datendeduplizierung nicht durch den Client durchgeführt werden kann, dann werden normale Nicht-Deduplizierungsprozesse auf dem Client wie in Schritt 330 ausgeführt, was wahrscheinlicherweise eine Deduplizierung der Datei auf dem Server umfasst.
-
In dem Fall, dass die Deduplizierungsaktivitäten durch den Client ausgeführt werden sollen, wird die Datei/das Objekt „F” wie in Schritt 341 einem Fingerprintingprozess unterzogen. Dies resultiert in einer Vielzahl von Chunks, die für die Datei/das Objekt „F” erzeugt werden. Der nächste Chunk (der erste Chunk) der Datei Dj wird wie in Schritt 342 abgerufen und ein Hash wird für diesen Chunk hj (Dj), Länge lj (Dj) wie in Schritt 343 erzeugt. In einer alternativen Implementierung einer Ausführungsform, die in 3 nicht dargestellt ist, geschieht das Fingerprinting als Teil dieser Schleife. Anstatt die gesamte Datei einem Fingerprintingprozess zu unterziehen und dann jeden Chunk zu verarbeiten, wird daher jeder Chunk wie er während des Fingerprintings identifiziert wird, verarbeitet.
-
Als Nächstes wird der Deduplizierungsprozess bestimmen, ob der durch die Werte [hj, lj] identifizierte Chunk auf dem Server wie in Schritt 350 angeordnet ist. Wenn der Chunk schon auf dem Server gespeichert ist, dann wird nur eine Referenz auf den Chunk [hj, lj] innerhalb des Servers wie in Schritt 370 erzeugt, daher wird auch nur eine Chunkreferenz an den Server gesendet. Wenn der Chunk sich nicht auf dem Server befindet, müssen die Chunkdaten an den Server gesendet werden.
-
Abhängig davon, ob der Chunk in Schritt 360 komprimiert wird, wird der Chunk dafür vorbereitet, an den Server gesendet zu werden. Wenn die Daten innerhalb des Chunks nicht komprimiert werden, wird der Chunk Dj, Hash hj und Länge lj an den Server wie in Schritt 380 gesendet. Der Chunk Dj wird auf dem Serverdatenspeicher gespeichert und der Hash hj und die Länge lj wird in den Deduplizierungsindex gespeichert. Wenn die Daten innerhalb des Chunks komprimiert werden sollen, wird der Chunk Dj in den Chunk C (Dj) wie in Schritt 361 komprimiert. Der komprimierte Chunk C(Dj) wird an den Server wie im Schritt 362 zusammen mit dem Hash hj und der Menge lj gesendet, wobei der Chunk in der Serverdatenablage und der Hash und die Länge in dem Deduplizierungsindex gespeichert sind.
-
Der Prozess der Lokalisierung des Chunks innerhalb des Servers wird für jeden zusätzlichen Chunk in der Datei/in dem Objekt „F” wie in Schritt 385 wiederholt. Sobald alle Chunks komplett sind, wird eine MD5-Signatur MD5(F) für die gesamte Datei erzeugt und an den Server in Schritt 395 gesendet. Die MD5-Zusammenfassung kann optional während einer Dateiwiederherstellungsoperation genutzt werden, um die Datenintegrität zu verifizieren.
-
Ein Fachmann wird auch erkennen, dass die serverseitigen Deduplizierungstechniken, die innerhalb dieser Offenbarung beschrieben sind, durch den Server ausgeführt werden können, aber auch mit verschiedenen Permutationen, wie zum Beispiel die Durchführung einer in-band-Deduplizierung, einer out-of-band-Deduplizierung oder die Durchführung einer Deduplizierung zu verschiedenen Zeiten auf dem Serverdatenspeicher. In jeglicher Permutation zeigt diese Technik, wie Dateien durch Verwendung eines Deduplizierungsindexes nach der vorliegenden Erfindung entweder durch den Quellclient oder den Zielserver dedupliziert werden können und trotzdem effizient innerhalb eines Deduplizierungsdatenspeichers gemanagt werden können.
-
Gegeben sei eine Speichersysteminfrastruktur, die das Teilen gemeinsamer Daten, die durch quell- und zielseitige Deduplizierungsaktivitäten erzeugt wurden (wie zum Beispiel unter Verwendung der oben beschriebenen Konfigurationen), ermöglicht. Verschiedene Techniken können dazu verwendet werden, wann und in welchem Ausmaß die Quelldeduplizierung bei spezifischen Clientmaschinen durchgeführt werden soll und wann eine Zieldeduplizierung genutzt werden soll. In einer Ausführungsform werden regelbasierte Policies definiert, um dem Speichermanagementsystem zu ermöglichen, wo die Deduplizierung nach einem Satz von Regeln oder Systembedingungen durchgeführt werden soll. Im Folgenden wird ein Satz nicht eingrenzender Beispiele solcher Policies angegeben.
-
Die Policy kann auf dem Clientknoten basieren, das heißt die Maschine, deren Daten dedupliziert werden. Alternativ kann die Policy auf einer Policy-Domain basieren, die eine Gruppe von Chipkarten mit denselben Policy-Anforderungen definiert. Wenn beispielsweise ein Satz von Maschinen als hochsensible Daten umfassend bezeichnet wird, wird eine Deduplizierung nicht an der Quelle durchgeführt. Dies ermöglicht es, dass die Datei an den Server übertragen wird und dort wenn nötig als Backup gespeichert wird. Und nur dann wird die Deduplizierung durchgeführt, um redundante Chunks der Daten zu entfernen.
-
Die Policy kann auf Datei(Objekt)charakteristiken, wie zum Beispiel dem Dateisystem, auf dem die Datei gespeichert ist, dem Pfad der Datei, dem Dateinamen, dem Dateitypen oder der Dateigröße basieren. Diese Policy kann durch Verwendung von Auswahlregeln implementiert werden, um zu bestimmen, wo die Deduplizierung optimaler Weise basierend auf den Charakteristiken der Datei an sich durchgeführt wird.
-
Die Policy kann auch auf der Zeit basieren. Zeitpläne können implementiert werden, um die oben beschriebenen Policies nach einer zeitbezogenen Messung zu ändern. Zum Beispiel können am Wochenende andere Policies verwendet werden als an Wochentagen.
-
Die Policy kann auf einer Systemauslastung basieren. Durch Überwachung der Auslastung auf geschützten Clientmaschinen, dem Serversystem und dem Netzwerk kann eine Entscheidung getroffen werden, die besten verfügbaren Ressourcen zu schonen und/oder sie zu verwenden. Zum Beispiel könnte während Zeiten von exzessivem Netzwerkdatenverkehr die quellseitige Deduplizierung verwendet werden, um unnötige Datentransfers an das Ziel zu vermeiden.
-
Die Policies können individuell auf einer granularen Ebene, für bestimmte Knoten oder Quellsysteme oder für spezifische Dateien, Dateitypen, Geräte oder Subsysteme innerhalb des Quellsystems definiert werden. Ein Fachmann würde erkennen, dass eine Vielfalt der hier beschriebenen Policy-Techniken kombiniert und integriert werden können, um ein erweitertes System zu erzeugen, das ein robustes Schalten der Deduplizierung zwischen der Quelle und dem Ziel ermöglicht, aber immer noch ansprechbar und einstellbar ist, die Deduplizierung nur an einem Ort unter bestimmten Umständen durchzuführen. Ferner würde ein Fachmann erkennen, dass die hier beschriebenen Policies über einen Teilabschnitt oder das gesamte Netzwerk manuell oder automatisch implementiert werden können.
-
4 stellt ein Flussdiagramm einer Betriebsart dar, um eine integrierte Deduplizierung von Daten nach Ausführungsformen der vorliegenden Erfindung durchzuführen. Die Betriebsart wird in Schritt 410 begonnen, wo die Deduplizierung für ein Datenobjekt durchgeführt werden soll. Die nachfolgenden Aktivitäten werden dadurch bestimmt, ob die Deduplizierungsaktivitäten an der Quelle oder an dem Ziel durchgeführt werden sollen. Demnach wird dieser Ort nach einer Policy wie in Schritt 420 ausgewählt, was konsistent mit einer Vielzahl von Policy-Beobachtungen ist (wie zum Beispiel Zeit, Systemauslastung, Dateicharakteristiken, der Clientknoten oder die Policy-Domain).
-
In dem Falle, dass die clientseitige Deduplizierung durchgeführt wird, werden die verschiedenen Algorithmen des Deduplizierungsprozesses, wie zum Beispiel die Fingerprinting- und Hashingalgorithmen, angewendet, um die Charakteristiken der Datenchunks zu identifizieren, die das Datenobjekt wie im Schritt 431 umfasst. Hier wird der Deduplizierungsprozess entsprechend der Datenchunks durchgeführt, die gegenwärtig auf dem Ziel gespeichert sind. Es wird also auf den Deduplizierungsprozess wie er durch das Ziel verwaltet wird, zugegriffen, um diese Information wie in Schritt 432 zu bestimmen. Hashing und Identifizierung eines bestimmten Datenchunks muss typischerweise durchgeführt werden, bevor auf diese Indexinformation für diesen bestimmten Datenjunk zugegriffen werden kann. Als Nächstes wird jegliche Datentransformation (wie zum Beispiel Verschlüsselung) für die Datenchunks wie in Schritt 433 durchgeführt. Die deduplizierten Chunks des Datenobjekts werden dann von dem Client an den Server zur Speicherung wie in Schritt 434 übertragen.
-
Die für die serverseitige Deduplizierung nötigen Schritte sind ähnlich. Der erste Schritt umfasst das Empfangen des Datenobjektes von dem Client wie in Schritt 441. Sobald die Datenchunks empfangen wurden, werden die Deduplizierungsalgorithmen auf dem Server durchgeführt, was eine Anwendung der Fingerprinting- und Hashingalgorithmen auf das Datenobjekt und seiner Chunks wie in Schritt 442, den Zugriff auf die Deduplizierungsindexinformationen der Datenobjektjunks wie in Schritt 443, und letztendlich die Durchführung jeglicher Datentransformation wie in Schritt 444 umfasst.
-
Zu der Zeit, wenn die Datenobjekte wie in Schritt 450 von dem Server abgefragt werden müssen, werden die folgenden Schritte durchgeführt. Die Chunks des deduplizierten Datenobjektes werden von dem Server wie in Schritt 461 abgefragt. In einer Ausführungsform kann die Umkehrung der Datentransformationen wie zum Beispiel Entschlüsselung oder Dekomprimierung der Chunks wie in Schritt 462 vor der Datenübertragung an den Client durchgeführt werden. Diese Übertragung der Daten an den Client erfolgt mittels eines Datenchunkstroms wie in Schritt 463. Der Datenchunkstrom wird an dem Client von dem Server wie in 471 empfangen, und dieser Strom kann Chunks mit gemischten Transformationstypen wie zum Beispiel komprimierte, nicht komprimierte und verschlüsselte Chunks umfassen. In einer anderen Ausführungsform können Datentransformationen an dem Client rückgängig gemacht werden, wenn sie noch nicht auf dem Server rückgängig gemacht wurden, sobald die Daten komplett wie in Schritt 472 empfangen wurden. Zuletzt werden die Datenchunks wie in Schritt 473 wiederhergestellt. Wie der Fachmann wahrnehmen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt ausgeführt werden. Demnach können Aspekte der vorliegenden Erfindung die Form einer ganzheitlichen Hardware-Ausführungsform, einer ganzheitlichen Software-Ausführungsform (umfassend Firmware, residente Software, Microcode usw.) oder eine Ausführungsform, die Software- und Hardwareaspekte kombiniert, annehmen, die alle hier im Allgemeinen als ein „Schaltkreis”, „Modul” oder „System” bezeichnet werden. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, auf dem sich computerlesbare Programmcodes befinden.
-
Jegliche Kombination einer oder mehrerer lesbarer Computermedien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel unter anderem ein elektronisches, magnetisches, optisches, elektromagnetisches, infrarotes oder Halbleitersystem, Apparat oder Vorrichtung oder irgendeine passende Kombination davon sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) der computerlesbaren Speichermedien würden die folgenden umfassen: Eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Computerdiskette, eine Festplatte, ein Random Access Memory (RAM), ein Read Only Memory (ROM), ein auslöschbarer programmierbarer Read Only Memory (EPROM oder Flash Memory), eine optische Faser, eine tragbare Compact Disc Read Only Memory (CD-ROM), eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder irgendeine passende Kombination davon. Im Zusammenhang mit diesem Dokument kann ein computerlesbares Speichermedium irgendein materielles Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Instruktionsausführungssystem, Apparat oder Vorrichtung umfassen oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein propagiertes Datensignal umfassen, in dem sich ein computerlesbarer Programmcode befindet, wie zum Beispiel in Baseband oder als Teil einer Trägerwelle. Solch ein propagiertes Signal kann irgendeine einer Vielzahl von Formen annehmen, umfassend aber nicht ausschließlich eine elektromagnetische, optische oder irgendeine passende Kombination daraus. Ein computerlesbares Signalmedium kann irgendein computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem Instruktionsausführungssystem, Apparat oder Vorrichtung kommunizieren, propagieren oder transportieren kann.
-
Ein sich auf einem computerlesbaren Medium befindender Programmcode kann unter Verwendung irgendeines passenden Mediums einschließlich aber nicht nur drahtlos, drahtgebunden, optisches Faserkabel, RF, usw. oder irgendeine passende Kombination daraus übertragen werden. Computerprogrammcode zur Ausführung von Funktionen für Aspekte der vorliegenden Erfindung kann in irgendeiner Kombination aus einer oder mehrerer Programmiersprachen geschrieben sein, was eine objektorientierte Programmiersprache wie zum Beispiel JAVA, Smalltalk, C++ oder ähnliche und konventionelle prozedurale Programmiersprachen umfassen, wie zum Beispiel die „C” Programmiersprache oder ähnliche Programmiersprachen. Der Programmcode kann komplett auf dem Computer eines Nutzers, teilweise auf dem Computer eines Nutzers, als ein stand-alone-Softwarepaket, teilweise auf dem Computer des Nutzers und teilweise auf einem Remotecomputer oder komplett auf dem Remotecomputer oder Server ausgeführt werden. Im letzteren Szenario kann der Remotecomputer mit dem Computer des Nutzers über irgendeine Art von Netzwerk verbunden sein, Wegskala ein lokales Netzwerk (LAN) oder ein Wide Area Network (WAN) umfasst, oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet Service Providers).
-
Aspekte der vorliegenden Erfindung werden mit Bezugnahme auf die Flussdiagrammdarstellungen und/oder Blockdiagramme der Verfahren, des Apparates (Systems) und der Computerprogrammprodukte nach Ausführungsformen der Erfindung beschrieben. Es ist verständlich, dass jeder Block der Flussdiagrammdarstellungen und/oder der Blockdiagramme und der Kombinationen der Blöcke in den Flussdiagrammdarstellungen und/oder der Blockdiagramme durch Computerprogramminstruktionen implementiert werden kann. Diese Computerprogramminstruktionen können für einen Mehrzweckcomputer, einen Spezialzweckcomputer oder andere programmierbare Datenverarbeitungsapparaturen zur Verfügung gestellt werden, um eine Maschine zu erzeugen, sodass die Instruktionen, die durch den Prozessor des Computers oder des anderen programmierbaren Datenverarbeitungsapparates ausgeführt werden, Mittel zur Implementierung der Funktionen, Durchführungen erzeugen, die in dem Flussdiagramm und/oder Blockdiagramm, Block oder Blöcken spezifiziert sind.
-
Diese Computerprogramminstruktionen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, einen anderen programmierbaren Datenverarbeitungsapparat oder eine andere Vorrichtung dazu veranlasst, in einer bestimmten Weise zu funktionieren, sodass die in dem Computer lesbaren Medium gespeicherten Instruktionen eine Vorrichtung erzeugen, die Instruktionen umfasst, die die Funktion/Durchführung implementiert, die in dem Flussdiagramm und/oder Blockdiagramm, Block oder Blöcken spezifiziert wurden.
-
Die Computerprogramminstruktionen können auch auf einem Computer, einem anderen programmierbaren Datenverarbeitungsapparat oder eine andere Vorrichtung geladen werden, um eine Serie von Betriebsschritten auszulösen, die auf dem Computer, dem anderen programmierbaren Apparat oder der anderen Vorrichtung durchgeführt werden, um einen computerimplementierten Prozess zu erzeugen, sodass die Instruktionen, die auf dem Computer oder dem anderen programmierbaren Apparat ausgeführt werden, Prozesse bereitstellen zur Implementierung der Funktionen/Durchführungen, die in dem Flussdiagramm und/oder Blockdiagramm, Block oder Blöcken spezifiziert wurden.
-
Die Fluss- und Blockdiagramme der Figuren stellen die Architektur, Funktionalität und Betriebsweise möglicher Implementationen von Systemen, Verfahren und Computerprogrammprodukten nach verschiedenen Ausführungsformen der vorliegenden Erfindung dar. Im Hinblick darauf kann jeder Block der Fluss- oder Blockdiagramme ein Modul, Segment oder ein Teil eines Codes darstellen, der eine oder mehrere ausführbare Instruktionen zur Implementierung der spezifischen logischen Funktion umfasst. Es sollte auch beachtet werden, dass in einigen Alternativimplementierungen die in den Blöcken dargestellten Funktionen nicht nach der Reihenfolge, wie sie in den Figuren dargestellt wurden, ausgeführt werden. Zum Beispiel können zwei nacheinander abgebildete Blöcke im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der betroffenen Funktionalität. Es wird auch beachtet werden, dass jeder Block der Blockdiagramme und/oder der Flussdiagrammdarstellung und Kombinationen der Blöcke in den Blockdiagrammen und/oder der Flussdiagrammdarstellung durch Spezialzweck-Hardware basierte Systeme oder Kombinationen von Spezialzweck-Hardware und Computerinstruktionen implementiert werden kann, die die spezifischen Funktionen oder Durchführungen ausführen.
-
Obwohl eine Vielzahl von repräsentativen Ausführungsformen dieser Erfindung oben mit einem bestimmten Grad von Genauigkeit beschrieben wurden, kann ein Fachmann eine Vielzahl von Abwandlungen der offenbarten Ausführungsformen schaffen, ohne vom Geist oder Bereichs des erfinderischen Gegenstandes, wie er in der Beschreibung und den Ansprüchen ausgeführt wurde, abzuweichen.