DE112012004937T5 - Fingerabdruckbasierte Datendeduplizierung - Google Patents

Fingerabdruckbasierte Datendeduplizierung Download PDF

Info

Publication number
DE112012004937T5
DE112012004937T5 DE112012004937.3T DE112012004937T DE112012004937T5 DE 112012004937 T5 DE112012004937 T5 DE 112012004937T5 DE 112012004937 T DE112012004937 T DE 112012004937T DE 112012004937 T5 DE112012004937 T5 DE 112012004937T5
Authority
DE
Germany
Prior art keywords
chunk
data
window
fingerprint
memory object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112012004937.3T
Other languages
English (en)
Inventor
c/o IBM Corp. Yakushev Mark
c/o IBM Corp. Smith Mark Andrew
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012004937T5 publication Critical patent/DE112012004937T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

Bei Speicherobjekten, die in einer Datenverarbeitungsumgebung gespeichert werden, handelt es sich oftmals um zusammenhängende Speicherobjekte, die viele einzelne Speicherobjekte aufweisen. Die Datenverarbeitungseinheit der Datenverarbeitungsumgebung unterteilt die Speicherobjekte in Segmente (Chunks) an Daten, indem ein Hashwert von einer Reihe an Daten ermittelt wird. Die Datenverarbeitungseinheit erstellt eine künstliche Chunk-Grenze, wenn das Datenende des Speicherobjektes erreicht wird. Wenn eine künstliche Chunk-Grenze für das Datenende des Speicherobjektes erstellt wird, speichert die Datenverarbeitungseinheit einen Pseudofingerabdruck für die künstliche Chunk-Grenze. Stimmt ein Hashwert mit einem Fingerabdruck oder einem Pseudofingerabdruck überein, ermittelt die Datenverarbeitungseinheit, dass der Datenbereich einem Chunk entspricht und das Datenverarbeitungssystem definiert die Chunk-Grenzen. Mit dem Pseudofingerabdruck der künstlichen Chunk-Grenze ist ein Erkennen einer künstlichen Chunk-Grenze in einer zusammenhängenden Datei möglich. Redundante Daten werden während der Deduplizierung auf der Grundlage der auf einer Pseudofingerabdruck-Liste gespeicherten Pseudofingerabdrücke auf effizientere Weise eliminiert.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft im Allgemeinen Operationen zur Datenspeicherung und zum Datenabruf in einem Datenspeichersystem, und insbesondere betrifft sie Identifizieren von Chunk-Grenzen zum Optimieren von fingerabdruckbasierter Deduplizierung.
  • Hintergrund
  • Mit Datendeduplizierung werden redundante Daten eliminiert, womit die Speicherausnutzung verbessert und die Menge an über ein Netzwerk gesendeten Daten verringert wird. Deduplizierung verringert die erforderliche Speicherkapazität und Netzwerkbandbreite, da nur eine Kopie einer eindeutigen Dateneinheit gespeichert und/oder gesendet wird. Plattenbasierte Speichersysteme wie beispielsweise ein Speichermanagement-Server und eine Volume Tape Library (VTL) können Deduplizierungstechnologien implementieren, um redundante Daten zu erkennen und Duplizierung zu verringern, indem redundantes Übertragen und/oder Speichern solcher Daten verhindert wird.
  • Kurzdarstellung
  • Es werden Ausführungsformen einer Erfindung zum Identifizieren von Chunk-Grenzen zum Optimieren von fingerabdruckbasierter Deduplizierung in einer Datenverarbeitungsumgebung beschrieben. Bei Speicherobjekten, von denen eine Sicherungskopie in einer Datenverarbeitungsumgebung erstellt wird (Backup), handelt es sich oftmals um zusammenhängende Speicherobjekte, die viele einzelne Speicherobjekte aufweisen. Die Datenverarbeitungseinheit der Datenverarbeitungsumgebung unterteilt die Speicherobjekte in Chunks („Segmente”) aus Daten, indem ein Hashwert an einer Reihe von Daten ermittelt wird. Die Datenverarbeitungseinheit erstellt eine künstliche Chunk-Grenze, wenn das Datenende des Speicherobjektes erreicht ist. Wird eine künstliche Chunk-Grenze für das Datenende eines Speicherobjektes erstellt, speichert die Datenverarbeitungseinheit einen Pseudofingerabdruck für die künstliche Chunk-Grenze. Stimmt ein Hashwert mit einem Fingerabdruck oder einem Pseudofingerabdruck überein, ermittelt die Datenverarbeitungseinheit, dass die Reihe an Daten einem Chunk entspricht, und das Datenverarbeitungssystem definiert die Chunk-Grenzen. Mit dem Pseudofingerabdruck der künstlichen Chunk-Grenze kann eine künstliche Chunk-Grenze in einer zusammenhängenden Datei erkannt werden. Dementsprechend eliminiert die Datenverarbeitungsumgebung redundante Daten während der Deduplizierung auf effizientere Weise auf der Grundlage der gespeicherten Pseudo-Fingerabdrücke in einer Liste mit Pseudo-Fingerabdrücken.
  • Ein Beispiel eines computerimplementierten Verfahrens zum Deduplizieren eines Speicherobjektes weist Ermitteln eines Chunk identifizierenden Hashwertes für ein Fenster aus Daten des Speicherobjektes und Ermitteln auf, ob der Chunk identifizierende Hashwert mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt. Des Weiteren ermittelt das Verfahren, ob es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt. Das Verfahren definiert eine Chunk-Grenze eines Chunks („Datensegment”) des Speicherobjektes, das dem Fenster aus Daten entspricht und speichert die Chunk-Grenze des Chunks, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt.
  • Das Verfahren ermittelt des Weiteren einen Chunk-Eindeutigkeits-Hashwert an dem Chunk des Speicherobjektes und speichert die Informationen zum Chunk-Eindeutigkeits-Hashwert in einem Deduplizierungsindex für den Chunk des Speicherobjektes. Das Verfahren ermittelt, ob der Chunk identifizierende Hashwert mit dem bekannten Fingerabdruck übereinstimmt, indem ermittelt wird, ob der Chunk identifizierende Hashwert eine vordefinierte mathematische Eigenschaft erfüllt.
  • In einer Ausführungsform wird der Pseudofingerabdruck des Chunks des Speicherobjektes als ein Pseudofingerabdruck in einer Pseudofingerabdruck-Liste gespeichert. Des Weiteren weist in einer Ausführungsform das Verfahren zum Ermitteln, ob der Chunk identifizierende Hashwert mit einem Pseudofingerabdruck übereinstimmt, Ermitteln auf, ob der Chunk identifizierende Hashwert in der Pseudofingerabdruck-Liste gespeichert ist.
  • Das Verfahren kann den Chunk identifizierenden Hashwert des Fensters an Daten des Speicherobjektes ermitteln, indem ein Wert einer „Rolling Hash”-Funktion des Fensters an Daten des Speicherobjektes berechnet wird. In einer Ausführungsform kann es sich bei der „Rolling Hash”-Funktion um einen Karp-Rabin-Rolling-Hash handeln.
  • Das Verfahren weist des Weiteren Definieren des Chunks eines Speicherobjektes, das einem Fenster aus Daten entspricht, und Speichern einer Chunk-Grenze des Chunks auf, wenn ermittelt wird, dass der Chunk identifizierende Hashwert mit einem Fingerabdruck übereinstimmt. Schließlich weist das Verfahren Ermitteln eines Chunk identifizierenden Hashwertes eines weiteren Fensters aus Daten auf, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten nicht um das Datenende des Speicherobjektes handelt. Das Verfahren ermittelt, ob der ermittelte Chunk identifizierende Hashwert des weiteren Chunks mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt.
  • In einer Ausführungsform eines Computerprogrammprodukts, das ein computerlesbares Medium mit einem darin ausgebildeten computerlesbaren Computerprogrammcode aufweist, der zum Durchführen von Operationen ausgeführt wird, weisen die Operationen Ermitteln eines Chunk identifizierenden Hashwertes für ein Fenster aus Daten des Speicherobjektes sowie Ermitteln auf, ob der Chunk identifizierende Hashwert mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt. Die Operationen weisen des Weiteren Ermitteln auf, ob es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt, wenn ermittelt wird, dass der Chunk identifizierende Hashwert des Fensters aus Daten des Speicherobjektes weder mit dem Fingerabdruck noch mit dem gespeicherten Pseudofingerabdruck übereinstimmt. Die Operationen definieren des Weiteren eine Chunk-Grenze des Speicherobjektes, das dem Fenster aus Daten entspricht, und Speichern der Chunk-Grenze des Chunks, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt.
  • In einer weiteren Ausführungsform einer Datenverarbeitungseinheit einer Datenverarbeitungsumgebung weist die Einheit einen mit einem Prozessor verbundenen Speicher auf. Der Speicher weist von dem Prozessor implementierte Anweisungen auf, um einen Chunk identifizierenden Hashwert für ein Fenster aus Daten des Speicherobjektes zu ermitteln und um zu ermitteln, ob der Chunk identifizierende Hashwert mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt. Der Prozessor ermittelt, ob es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt, wenn ermittelt wird, dass der Chunk identifizierende Hashwert des Fensters aus Daten des Speicherobjektes nicht mit dem Fingerabdruck oder dem gespeicherten Pseudofingerabdruck übereinstimmt. Der Prozessor definiert des Weiteren eine Chunk-Grenze eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht und speichert die Chunk-Grenze des Chunks, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt.
  • Kurzbeschreibung der Zeichnungen
  • Im Folgenden werden Ausführungsformen der vorliegenden Erfindung lediglich im Sinne von Beispielen in Bezug auf die begleitenden Zeichnungen beschrieben, in denen:
  • 1 eine Datenverarbeitungsumgebung veranschaulicht, die Datenoperationen gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 2 einen Deduplizierungsindex-Eintrag gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 3 einen Eintrag in einer Pseudofingerabdruck-Liste gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 4 ein Ablaufplan ist, der Definieren von Chunk-Grenzen eines Speicherobjektes gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 5 Definieren von Grenzen von Chunks eines Speicherobjektes gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 6 ein Diagramm ist, das die Leistung der Datenverarbeitungsumgebung gemäß einer Ausführungsform der Erfindung veranschaulicht; und
  • 7 ein Datenverarbeitungssystem veranschaulicht, das gemäß bestimmten Ausführungsformen verwendet werden kann.
  • Merkmale, Elemente und Aspekte der Erfindung, auf die in unterschiedlichen Figuren mit denselben Bezugszahlen Bezug genommen wird, stellen dieselben, entsprechende oder ähnliche Merkmale, Elemente oder Aspekte gemäß einer oder mehreren Ausführungsformen dar.
  • Ausführliche Beschreibung
  • Es werden Ausführungsformen einer Erfindung zum Identifizieren von Chunk-Grenzen zum Optimieren von fingerabdruckbasierter Deduplizierung in einer Datenverarbeitungsumgebung beschrieben. Bei Speicherobjekten, von denen eine Sicherungskopie in einer Datenverarbeitungsumgebung erstellt wird (Backup), handelt es sich oftmals um zusammenhängende Speicherobjekte, die viele einzelne Speicherobjekte aufweisen. Die Datenverarbeitungseinheit der Datenverarbeitungsumgebung unterteilt die Speicherobjekte in Chunks („Segmente”) aus Daten, indem ein Hashwert an einer Reihe von Daten ermittelt wird. Die Datenverarbeitungseinheit erstellt eine künstliche Chunk-Grenze, wenn das Datenende des Speicherobjektes erreicht ist. Wird eine künstliche Chunk-Grenze für das Datenende eines Speicherobjektes erstellt, speichert die Datenverarbeitungseinheit einen Pseudofingerabdruck für die künstliche Chunk-Grenze. Stimmt ein Hashwert mit einem Fingerabdruck oder einem Pseudofingerabdruck überein, ermittelt die Datenverarbeitungseinheit, dass die Reihe an Daten einem Chunk entspricht, und das Datenverarbeitungssystem definiert die Chunk-Grenzen. Mit dem Pseudofingerabdruck der künstlichen Chunk-Grenze kann eine künstliche Chunk-Grenze in einer zusammenhängenden Datei erkannt werden. Dementsprechend eliminiert die Datenverarbeitungsumgebung während der Deduplizierung auf der Grundlage der in einer Pseudofingerabdruck-Liste gespeicherten Pseudofingerabdrücke redundante Daten auf effizientere Weise.
  • Dem Fachmann ist jedoch offensichtlich, dass Ausführungsformen der vorliegenden Erfindung auch ohne einige oder alle speziellen Einzelheiten umgesetzt werden können. In anderen Fällen wurden gut bekannte Prozesse nicht ausführlich beschrieben, um ein eindeutiges Verstehen der hierin beschriebenen Ausführungsformen nicht zu erschweren.
  • Bei der Datendeduplizierung handelt es sich um ein Datenkompressionsverfahren, mit dem redundante Daten eliminiert werden, um die Speicherausnutzung zu verbessern und die Menge an über das Netzwerk gesendeten Daten zu verringern. Mit Deduplizierung wird die erforderliche Speicherkapazität und die Netzwerkbandbreite verringert, da nur eine Kopie einer eindeutigen Dateneinheit, auch als „Chunk” bekannt, gespeichert und/oder gesendet wird. Die Arbeitsweise einer Deduplizierung durchführenden Datenverarbeitungsumgebung besteht darin, dass sie ein Speicherobjekt in eine Reihe von Chunks unterteilt, wobei jeder Chunk durch die Chunk-Grenzen definiert ist. Eine Grenze, beziehungsweise eine Chunk-Grenze bezieht sich auf eine Position innerhalb der Daten, die einen Endpunkt eines Chunks definiert. Zwei aufeinanderfolgende Grenzen definieren die zwei Endpunkte eines entsprechenden Chunks. In einer Ausführungsform kann ein Speicherobjekt unter Verwendung einer Hash-Funktion wie beispielsweise einer „Rolling-Hash”-Funktion in Chunks unterteilt werden. Dieser anfängliche Hashwert identifiziert die Grenzen des Chunks, ohne dass dabei die Eindeutigkeit des Chunks ermittelt wird. Der anfängliche Hashwert kann hierin als der Chunk identifizierende Hashwert bezeichnet werden, und der Chunk identifizierende Hashwert eines Chunks kann hierin als Fingerabdruck bezeichnet werden. In einer Ausführungsform kann es sich bei dem Chunk identifizierenden Hash um eine „Rolling Hash”-Funktion wie beispielsweise eine Karp-Rabin-Hash-Funktion (auch als Karp-Rabin-Fingerabdruck bezeichnet) handeln, es kann jedoch jeder beliebige Chunking-Algorithmus verwendet werden.
  • Die Datenverarbeitungsumgebung ermittelt, ob irgendwelche der Chunks bereits gespeichert sind. Redundante Chunks können unter Verwendung einer sekundären Hashfunktion, wie beispielsweise MD5 (Message-Digest Algorithm 5) oder SHA-1 (Secure Hash Algorithm 1) an jedem Chunk erkannt werden, um einen sekundären Hashwert (auch bekannt als Digest) für die Chunks zu produzieren und anschließend diese sekundären Hashwerte mit Hashwerten zu vergleichen, die bereits in dem System gespeichert sind. Der sekundäre Hashwert ermittelt die Eindeutigkeit des Chunks und kann hierin als Chunk-Eindeutigkeits-Hashwert bezeichnet werden, um eine Unterscheidung zu dem Chunk identifizierenden Hashwert zu verdeutlichen. Die Hashwerte für gespeicherte Chunks können in einem Index wie beispielsweise einem Deduplizierungsindex geführt werden. Ein Chunk kann auf eindeutige Weise durch einen Hashwert und eine Chunk-Größe identifiziert werden. Der Hashwert eines Chunks unter Betrachtung wird in dem Deduplizierungsindex aufgerufen. Wird ein Eintrag für diesen Hashwert und diese Größe gefunden, ist ein redundanter Chunk identifiziert, und dieser Chunk in der Menge oder dem Objekt kann mit einem Zeiger auf den in dem Speicher gehaltenen übereinstimmenden Chunk ersetzt werden. Dementsprechend speichert die Datenverarbeitungsumgebung nur die nichtredundanten Chunks.
  • Der Chunk identifizierende Hashwert zum Ermitteln der Grenzen des Chunks wird an einem gleitenden Fenster aus Daten, z. B. 48 Bytes in einem Puffer-Array durchgeführt. Die Datenverarbeitungsumgebung ermittelt, ob der an dem Fenster aus Daten ermittelte Hashwert mit einem Fingerabdruck übereinstimmt. In einer Ausführungsform ermittelt die Datenverarbeitungsumgebung, dass der Hashwert mit einem Fingerabdruck übereinstimmt, indem ermittelt wird, ob der Hashwert eine vordefinierte mathematische Eigenschaft erfüllt, die zum Ermitteln von Chunk-Grenzen verwendet wird. Wenn der ermittelte Chunk identifizierende Hashwert nicht mit der vordefinierten mathematischen Eigenschaft übereinstimmt, wird das älteste Byte in dem Array durch das neueste Byte ersetzt, und der Hashwert erneut ermittelt. Stimmt der ermittelte Hashwert mit der vordefinierten mathematischen Eigenschaft überein, wird die Chunk-Grenze für den Chunk definiert. Erreicht die Datenverarbeitungsumgebung jedoch das Datenende eines Speicherobjektes und stimmt der ermittelte Hashwert nicht mit der vordefinierten mathematischen Eigenschaft überein, erstellt die Datenverarbeitungsumgebung eine künstliche Chunk-Grenze. Hierin wird der Begriff „künstliche Chunk-Grenze” verwendet, um eine Chunk-Grenze zu beschreiben, die auf ungewöhnliche Weise erstellt wird, wie beispielsweise, wenn der Fingerabdruck nicht mit der vorgegebenen mathematischen Eigenschaft übereinstimmt.
  • Im Allgemeinen besitzt ein Client eine zusammenhängende Datei oder ein Speicherobjekt mit einer Vielzahl von einzelnen Dateien. So sei beispielsweise eine E-Mail von einem Nutzer A betrachtet, die Text von Nutzer A, eine als PDF angehängte Präsentation von Nutzer A und eine weitergeleitete Anmerkung in Textform von Nutzer B in Bezug auf die Präsentation aufweist. Während es sich bei dem Text von Nutzer A um neu erzeugte Daten handeln kann, wurden die Präsentation von Nutzer A und die Anmerkung in Textform von Nutzer B in Bezug auf die Präsentation möglicherweise bereits vorher bei dem Client gespeichert und eine Sicherungskopie davon an einem Server erstellt (Backup). Jedes der einzelnen Speicherobjekte besitzt ein Datenende. Wird eine Deduplizierung (der einzelnen Speicherobjekte) separat ausgeführt, würde die Datenverarbeitungsumgebung eine künstliche Chunk-Grenze an dem Datenende des Textes von Nutzer A, eine weitere künstliche Chunk-Grenze an dem Datenende der Präsentation und eine weitere künstliche Chunk-Grenze an dem Datenende der Anmerkung von Nutzer B erstellen. Würde im Gegensatz dazu die gesamte E-Mail (z. B. der Text von Nutzer A, die Präsentation und die Anmerkung von Nutzer B) als ein einziges Speicherobjekt dedupliziert werden, würde das Datenverarbeitungssystem Chunks erstellen, wenn der Chunk identifizierende Hashwert mit einem Fingerabdruck übereinstimmt, und nicht an den Orten an denen die künstlichen Chunk-Grenzen in den einzelnen Dateien erstellt wurden. Da die Chunk-Grenzen, die erstellt wurden, wenn das zusammenhängende Speicherobjekt dedupliziert wurde, nicht mit den Chunk-Grenzen übereinstimmen, die erstellt wurden, als die einzelnen Speicher-Objekte dedupliziert wurden, können nicht alle redundanten Chunks an Daten von der Chunk-Eindeutigkeits-Hashfunktion identifiziert werden. Dementsprechend ist, wenn die vorstehenden Verfahren zur Deduplizierung angewendet werden, das Eliminieren von redundanten Daten nicht vollständig optimiert.
  • Gemäß einer Ausführungsform ist 1 ein Diagramm, das eine Datenverarbeitungsumgebung 1 veranschaulicht, die Datenoperationen wie beispielsweise Leseoperationen, Schreiboperationen und Sicherungsoperationen wie Deduplizierung durchführt. Die Datenverarbeitungsumgebung 1 weist Datenverarbeitungssysteme wie beispielsweise Server 4 und wenigstens einen Client 2 auf. Deduplizierung kann an Client 2, Server 4 oder an einer (nicht dargestellten) Deduplizierungs-Einheit durchgeführt werden, die mit dem Server 2 verbunden ist. Der Server 4 und der/die Client(s) 2 kommunizieren über die Verbindung 24 miteinander. Obgleich in 1 nur ein einzelner Client dargestellt ist, versteht es sich für den Fachmann, dass mehr als ein Client 2 mit dem Server 4 verbunden sein können.
  • In einer Ausführungsform können der Client 2 und der Server 4 separate Computersysteme umfassen, und die Verbindung 24 kann ein Netzwerk wie beispielsweise ein lokales Netz (LAN), ein Speichernetzwerk (SAN), ein Weitverkehrsnetz (WAN) usw. aufweisen. In weiteren Ausführungsformen können die Komponenten von Client 2 und Server 4 auf einer einzelnen Computersystemplattform implementiert sein, und die Verbindung 24 kann Datenübertragung über einen Bus oder einen Speicher umfassen. In einer Ausführungsform könnte es sich bei Server 4 beispielsweise um einen Datei-Server, einen IBM Tivoli® Storage Manager(TSM)-Server, einen Webanwendungs-Server oder einen mit einem Netzwerk verbundenen Speicher (NAS) handeln. Server 2 kann auch Teil eines Storage Area Network(SAN)-Netzwerkes sein. Server 4 kann einen Prozessor (nicht dargestellt) umfassen, der einen Programmcode ausführen kann.
  • Jeder Client 2 kann einen lokalen Client-Speicher 8 aufweisen. In der Praxis kann es sich bei dem Client-Speicher 8 um ein Magnetplattenlaufwerk oder eine Solid-State-Speichereinheit wie beispielsweise einen Flash-Speicher handeln. Client 2 führt Speicherobjekte und die Informationen in Bezug auf die Speicherobjekte. Hierin wird der Begriff „Speicherobjekt” verwendet, um im weiten Sinne Daten, ob als Datei oder Objekt, zu beschreiben. Speicherobjekte werden hierin als Speicherobjekte A, B, ... Z dargestellt und können allgemein im Sinne der Einfachheit durch Speicherobjekt Z dargestellt werden. Client 2 weist ein Betriebssystem 12 auf, um Speicherobjekte an dem Client 2 zu erzeugen und zu führen. Die Speicherobjekte können lokal in dem Client-Speicher 8 gespeichert werden. Der Client 2 führt Speicherobjektinformationen wie beispielsweise Metadaten in dem Client-Arbeitsspeicher 10. In einer Ausführungsform, in der die Deduplizierung an dem Client 2 durchgeführt wird (d. h. Deduplizierung auf der Source-Seite), können die Informationen eine geordnete Liste von Chunks der Speicherobjekte aufweisen. Die Chunks der Speicherobjekte werden hierin als Chunks An, Bn, ... Zn dargestellt, wobei n ≥ 1 ist, und sie können im Sinne der Einfachheit noch allgemeiner durch Chunk Zn dargestellt werden. Des noch Weiteren überträgt in einer Ausführungsform, bei der die Deduplizierung an Client 2 durchgeführt wird, der Client-Backup-Manager 14 nichtredundante Chunks des Speicherobjektes über die Verbindung 24 an einen Server-Backup-Manager 16 in dem Server 4, um eine Sicherungskopie zu erstellen. In einer Ausführungsform, bei der die Deduplizierung an Server 4 durchgeführt wird (d. h. Deduplizierung an der Target-Seite), überträgt der Client-Backup-Manager 14 Speicherobjekte über die Verbindung 24 an einen Server-Backup-Manager 16 in dem Server 4, um eine Sicherungskopie zu erstellen.
  • Der Server-Backup-Manager 16 führt einen Deduplizierungsindex 20, um lediglich eine Kopie eines Chunks in dem Speicher 6 zu speichern, obgleich ein Chunk in mehreren Speicherobjekten enthalten sein kann. Der Server-Backup-Manager 16 führt des Weiteren eine Liste mit Pseudofingerabdrücken 26 eines Chunk identifizierenden Hashwertes eines Chunks eines Speicherobjektes als ein Kennzeichen des Chunks zur Verwendung in der Deduplizierung.
  • Server 4 kann des Weiteren den Server-Speicher 22 aufweisen. Der Server-Speicher 22 kann Chunk-Informationen führen, die zu jedem Chunk von Speicherobjekten, von denen eine Sicherungskopie an dem Systemspeicher 6 angefertigt wird, einen Chunk-Ort anzeigen. Der Systemspeicher 6 kann Speichermedien aufweisen, die in einer oder mehreren auf dem Gebiet der Technik bekannten Speichereinheiten implementiert sind, wie beispielsweise miteinander verbundene Festplattenlaufwerke (z. B. konfiguriert als DASD, RAID, JBOD, usw.), Solid-State-Speichereinheiten (z. B. EEPROM (Elektrisch löschbarer programmierbarer Nur-Lese-Speicher)), Flash-Speicher, Flash-Platten, Storage Class Memory (SCM), elektronische Speicher, Magnetbandmedien, Bandkassetten usw.
  • Die Verbindung 24 kann jede beliebige Anzahl von Switches, Routern und anderen speziellen Netzwerkdatenverarbeitungseinheiten aufweisen, die Datenübertragungsdienste zwischen Datenverarbeitungssystemen der Datenverarbeitungsumgebung 1 bereitstellen. Dementsprechend kann Server 4 bidirektional Daten an den und von dem oder an die und von den Client(s) 2 übertragen. Genauer gesagt, kann ein Client 2 die Dienste von Server 4 anfordern, was Austauschen von Datenpaketen über die Verbindung 24 beinhaltet. Client 2 kann Datenpakete unter Verwendung von dateibasierten Zugriffsprotokollen oder blockbasierten Zugriffsprotokollen ausgeben. Solche Protokolle werden allgemeinhin verwendet, und zu ihnen gehören das Common Internet File System(CIFS)-Protokoll, das Network File System(NFS)-Protokoll, das Transmission Control Protocol/Internet Protocol (TCP/IP), das Small Computer Systems Interface(SCSI)-Protokoll, das über TCP verkapselt ist (iSCSI) und das SCSI-Protokoll, das über Fibre Channel verkapselt ist (FCP). Hierbei sollte beachtet werden, dass jedes beliebige Datenverarbeitungssystem mit einem jeden anderen beliebigen Datenverarbeitungssystem der Datenverarbeitungsumgebung 1 auf diese Weise kommunizieren kann.
  • Der Client-Backup-Manager 14 und der Server-Backup-Manager 16 können Software-Programme in einem von einem Prozessor ausgeführten Speicher aufweisen. In einer alternativen Ausführungsform kann ein Abschnitt oder alle der Programme in einer Hardware-Komponente wie beispielsweise einer dedizierten integrierten Schaltung, z. B. einer anwendungsspezifischen integrierten Schaltung (Application Specific Integrated Circuit (ASIC)), einer Erweiterungskarte usw. implementiert sein.
  • Deduplizierung kann an dem Client, dem Sever oder an einer mit dem Server verbundenen Deduplizierungseinheit durchgeführt werden. Obgleich der Client-Backup-Manager 14 und der Server-Backup-Manager 16 als separate Komponenten dargestellt sind, können die von den Backup-Managern für den Client 14 und den Server 16 durchgeführten Funktionen in einer einzelnen Programmkomponente in einem einzelnen Computersystem oder in mehr als zwei Programmkomponenten in mehr als zwei Computereinheiten implementiert werden. Des noch Weiteren kann, obgleich die folgenden Ausführungsformen Deduplizierung beschreiben, die an dem Target (z. B. dem Server 14) durchgeführt wird, diese Erfindung auch in einer Ausführungsform implementiert werden, bei der die Deduplizierung an der Source (z. B. dem Client 2) oder an einer Einheit durchgeführt wird, wie einem Fachmann offensichtlich ist.
  • Hierbei sollte beachtet werden, dass es sich bei dem/den Datenverarbeitungssystem/en um jede beliebige Einheit handeln kann, die zum Verarbeiten von Daten in der Lage ist, wie beispielsweise ein Server, ein Mainframe-Computer, ein Personalcomputer, ein Laptop oder eine Mobileinheit, zu der Smartphone und Ähnliche gehören. Die Datenverarbeitungssysteme können zusätzliche Komponenten wie wenigstens einen Prozessor, einen Speicher, einen Netzwerkadapter und eine Antenne aufweisen, die von einem Betriebssystem verwaltet werden.
  • Des Weiteren kann die Datenverarbeitungseinheit eine Benutzerschnittstelle wie beispielsweise eine Tastatur, einen Touchscreen oder eine Zeigeeinheit aufweisen, die eine Benutzereingabe ermöglicht. Schließlich kann die Datenverarbeitungseinheit einen von einem Benutzer einsehbaren Bildschirm aufweisen, der eine grafische Benutzerschnittstelle (GUI) oder eine textbasierte Schnittstelle wie beispielsweise eine Befehlszeilenschnittstelle (CLI) aufweist.
  • Es gibt viele allgemeine oder spezielle Betriebssysteme zum Verwalten der Komponenten des Datenverarbeitungssystems wie beispielsweise Linux oder andere Unix-Betriebssysteme sowie Betriebssysteme von Microsoft Windows. Die Betriebssysteme können Daten unter Verwendung von „Dateisystemen” organisieren, bei denen es sich um Datenbehälter für Dateien handelt.
  • Wie vorstehend beschrieben, führt Client 2 Speicherobjektinformationen wie beispielsweise Metadaten in dem Client-Arbeitsspeicher 10. Auf ähnliche Weise führt Server 4 Speicherobjektinformationen wie beispielsweise Metadaten in dem Server-Speicher 22. Zu den Speicherobjektinformationen gehört eine Kennzeichnung des Speicherobjektes sowie ein oder mehrere Chunks an Daten, die dem Speicherobjekt zugewiesen sind. In einer Ausführungsform können die Chunks eine variable Länge aufweisen, d. h. die gleiche oder eine andere Länge aufweisen. Die Speicherobjektinformationen können eine geordnete Liste der Chunks führen, welche die Reihenfolge wiedergibt, in der die Chunks in dem Speicherobjekt erscheinen. Die Informationen führen für jeden Chunk einen Chunk-Eindeutigkeits-Hashwert des Chunks sowie eine Länge des Chunks. Auf diese Weise liefern die Informationen Metadaten zu den in der Menge enthaltenen Chunks, wie beispielsweise einen Hashwert und eine Länge, jedoch nicht die realen Daten. Der Chunk-Eindeutigkeits-Hashwert des Chunks kann durch Verarbeiten des Chunks erzeugt werden, um einen eindeutigen Wert für den Chunk zu erzeugen. So kann in einer Ausführungsform der Hashwert eine kryptographische Hashfunktion umfassen, wie beispielsweise MD5 (Message-Digest Algorithm 5) oder SHA-1 (Secure Hash Algorithm 1), die kryptographische Hashwerte eines jeden Chunks in dem Speicherobjekt berechnet.
  • 2 veranschaulicht eine Ausführungsform eines Deduplizierungsindex-Eintrages 60, der von dem Server-Backup-Manager 16 für jeden in dem Systemspeicher 6 gespeicherten Chunk Zn geführt wird. Der Indexeintrag 60 weist eine Chunk-Kennzeichnung (Chunk ID(Zn)) 62 des Chunks in dem Speicher 6, einen Hashwert 64, H(Zn), der anhand des von der Chunk-Kennzeichnung dargestellten Chunks Zn berechnet wurde, sowie eine Länge 66 des Chunks, L(Zn), auf. Wenn der Server-Backup-Manager 16 ermittelt, ob eine vollständige Kopie eines Chunks Zn in dem Systemspeicher 6 gespeichert werden soll, kann der Server-Backup-Manager 16 ermitteln, ob ein Eintrag 60 in dem Deduplizierungsindex 20 einen Chunk-Eindeutigkeits-Hashwert 64, H(Zn), und eine Länge 66, L(Zn), aufweist, die mit dem Hashwert H(Zn) des aktuellen Chunk Zn übereinstimmen.
  • 3 veranschaulicht eine Ausführungsform eines Eintrages in einer Pseudofingerabdruck-Liste 80, die von dem Server-Backup-Manager 16 für jeden Chunk Zn geführt wird, der mit einer künstlichen Chunk-Grenze erstellt wurde. Der Eintrag in die Liste 80 umfasst einen Chunk identifizierenden Hashwert 82, F(Zn), des Chunks Zn in dem Systemspeicher 6. Wenn der Server-Backup-Manager 16 die Chunk-Grenze eines Chunks Zn zur Deduplizierung ermittelt, ermittelt der Server-Backup-Manager 16, ob ein Eintrag 80 in der Pseudofingerabdruck-Liste mit einem Chunk identifizierenden Hashwert F(Zn) des Fensters an Daten von Speicherobjekt Z übereinstimmt.
  • Es wird eine Ausführungsform der vorliegenden Erfindung in Bezug auf 4 beschrieben. 4 ist ein Ablaufplan, der die Schritte des Definierens von Chunk-Grenzen eines Speicherobjektes gemäß einer Ausführungsform der Erfindung veranschaulicht.
  • Erzeugt ein Client 2 ein neues oder verändertes Speicherobjekt, sendet der Client 2 das Speicherobjekt Z an den Server-Backup-Manager, um eine Sicherungskopie des Speicherobjektes in dem Speicher 6 zu erstellen. In Schritt 402 beginnt der Server-Backup-Manager 16 mit dem Verarbeiten des Speicherobjektes Z, um eine Sicherungskopie in dem Systemspeicher 6 zu erstellen. In Schritt 404 ermittelt der Server-Backup-Manager 16 einen Chunk identifizierenden Hashwert F(Zn) eines Fensters an Daten des Speicherobjektes Z. In einer Ausführungsform ermittelt der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(Zn) mittels Berechnung. Einem Fachmann ist jedoch offensichtlich, dass der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert auch mithilfe anderer Verfahren ermitteln kann, indem er ihn beispielsweise von einer anderen Datenverarbeitungseinheit der Datenverarbeitungsumgebung 1 bezieht. Der Chunk identifizierende Hashwert des Fensters an Daten F(Zn) fungiert als Fingerabdruck zum Ermitteln der Grenzen eines Chunks Zn. In einer Ausführungsform handelt es sich bei dem Chunk identifizierenden Hashwert um eine „Rolling Hash”-Funktion wie beispielsweise eine Karp-Rabin-Hashfunktion. Zum Ermitteln der Chunk-Grenzen kann jedoch auch jeder beliebige Chunking-Algorithmus verwendet werden.
  • In Schritt 406 ermittelt der Server-Backup-Manager 16, ob der Chunk identifizierende Hashwert F(Zn) mit einem Fingerabdruck übereinstimmt. In einer Ausführungsform ermittelt der Server-Backup-Manager 16, ob der Chunk identifizierende Hashwert F(Zn) mit einem Fingerabdruck übereinstimmt, indem er feststellt, ob der Chunk identifizierende Hashwert F(Zn) eine vordefinierte mathematische Eigenschaft erfüllt. In einer Ausführungsform kann die vordefinierte mathematische Eigenschaft darin bestehen, dass der Chunk identifizierende Hashwert F(Zn) durch 1000 teilbar ist. Alternativ dazu kann die vordefinierte mathematische Eigenschaft darin bestehen, dass der Chunk identifizierende Hashwert F(Zn) eine ungerade Zahl oder eine gerade Zahl oder eine Primzahl usw. ist. Wie einem Fachmann ersichtlich ist, kann jede beliebige vordefinierte mathematische Eigenschaft verwendet werden, um den Ansprüchen der Datenverarbeitungsumgebung 1 gerecht zu werden. Die mathematische Eigenschaft kann von dem Benutzer, einem IT-Administrator oder einem anderen Administrator oder alternativ dazu von dem Hersteller vordefiniert werden.
  • Wenn in Schritt 406 ermittelt wird, dass der Chunk identifizierende Hashwert F(Zn) mit dem Fingerabdruck übereinstimmt, dann entspricht das Fenster aus Daten einer Chunk-Grenze, und der Prozess geht in Schritt 408 über. In einer Ausführungsform entspricht das letzte Byte des Fensters aus Daten dem letzten Byte von Chunk Zn, und die Chunk-Grenze wird an das Ende des letzten Bytes des Fensters an Daten platziert. Es sollte jedoch beachtet werden, dass jede beliebige Entsprechungsbeziehung verwendet werden kann, um die Grenze von Chunk Zn zu definieren. Des Weiteren ist in einer Ausführungsform, während die Grenze des Chunk-Endpunktes des Chunks an dem Ende des letzten Byte des Fensters an Daten definiert ist, die Grenze des Anfangspunktes die Grenze des Chunk-Endpunktes des vorhergehenden Chunks. In Schritt 408 speichert der Server-Backup-Manager 16 die Chunk-Grenze des Speicherobjektes. In einer Ausführungsform wird die Chunk-Grenze in dem Server-Speicher 22 gespeichert. In Schritt 410 ermittelt der Server-Backup-Manager 16, ob sich das Fenster aus Daten, für das der Chunk identifizierende Hashwert F(Zn) ermittelt wurde, an dem Datenende des Speicherobjektes befindet. Wird ermittelt, dass sich das Fenster aus Daten an dem Datenende befindet, endet der Prozess in Schritt 412. Wird jedoch in Schritt 410 ermittelt, dass sich das Fenster aus Daten nicht an dem Datenende befindet, kehrt der Prozess in Schritt 404 zurück. In Schritt 404 wird das älteste Byte in dem Fenster aus Daten durch ein neues Byte ersetzt und der Chunk identifizierende Hashwert F(Zn) von neuem ermittelt.
  • Wenn unter erneuter Bezugnahme auf Schritt 406 ermittelt wird, dass der Chunk identifizierende Wert F(Zn) mit keinem Fingerabdruck übereinstimmt, geht der Prozess in Schritt 414 über. In Schritt 414 vergleicht der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(Zn) mit den in der Pseudofingerabdruck-Liste 26 gespeicherten Hashwerten. In Schritt 416 ermittelt der Server-Backup-Manager 16, ob der in Schritt 404 ermittelte Chunk identifizierende Hashwert F(Zn) mit irgendeinem der Hashwerte oder in der Pseudofingerabdruck-Liste 26 gespeicherten Pseudofingerabdrücken übereinstimmt. Wenn in Schritt 416 ermittelt wird, dass der in Schritt 404 ermittelte Chunk identifizierende Hashwert F(Zn) mit einem in der Pseudofingerabdruck-Liste 26 gespeicherten Pseudofingerabdruck übereinstimmt, geht der Prozess in Schritt 408 über, in dem der Server-Backup-Manager 16 die Chunk-Grenze des Speicherobjektes speichert. Wie vorstehend beschrieben, entspricht in einer Ausführungsform die Chunk-Grenze dem Datenende des Fensters aus Daten. Die Chunk-Grenze des Speicherobjektes wird in dem Server-Speicher 22 gespeichert. Wird jedoch ermittelt, dass der in Schritt 404 ermittelte Chunk identifizierende Hashwert F(Zn) mit keinem in der Pseudofingerabdruck-Liste 26 gespeicherten Pseudofingerabdruck übereinstimmt, geht der Prozess in Schritt 418 über.
  • In Schritt 418 ermittelt der Server-Backup-Manager 16, ob sich das Fenster aus Daten, für das der Chunk identifizierende Hashwert F(Zn) ermittelt wurde, an dem Datenende des Speicherobjektes befindet. Wird in Schritt 410 ermittelt, dass sich das Fenster aus Daten nicht an dem Datenende befindet, kehrt der Prozess in Schritt 404 zurück. In Schritt 404 wird das älteste Byte in dem Fenster aus Daten durch ein neues Byte ersetzt und der Chunk identifizierte Hashwert F(Zn) erneut bestimmt. Wird jedoch ermittelt, dass sich das Fenster aus Daten an dem Datenende befindet, geht der Prozess in Schritt 420 über, in dem der ermittelte Chunk identifizierende Hashwert F(Zn) als ein Pseudofingerabdruck in der Pseudofingerabdruck-Liste 26 gespeichert wird. In Schritt 422 speichert der Server-Backup-Manager 16 die Chunk-Grenze des Speicherobjektes, das dem Fenster aus Daten entspricht, für das der Chunk identifizierende Hashwert F(Zn) ermittelt wurde. Der Prozess endet in Schritt 424.
  • Laut Verständnis eines Fachmanns würde, wenn die Chunks des Speicherobjektes erst einmal definiert sind, eine normale Deduplizierungsverarbeitung stattfinden. Beispielsweise kann der Chunk-Eindeutigkeits-Hashwert ermittelt werden, um zu ermitteln, ob es sich bei dem durch die Chunk-Grenzen wie vorstehend beschrieben definierten Chunk um einen redundanten Chunk handelt.
  • Dementsprechend befähigt der in 4 beschriebene Prozessablauf die Datenverarbeitungsumgebung zum Erstellen einer Liste mit Pseudofingerabdrücken um sicherzustellen, dass Chunks, die mit künstlichen Chunk-Grenzen erstellt wurden, anschließend erkannt und effektiv dedupliziert werden.
  • 5 veranschaulicht eine Ausführungsform zum Definieren der Chunk-Grenzen von drei Speicherobjekten gemäß einer Ausführungsform der Erfindung. In der in 5 dargestellten Ausführungsform handelt es sich bei den Speicherobjekten um Dateien. Datei A, 515, und Datei B, 530, sind einzelne Dateien ohne zusätzliche Dateien, die sie beinhalten. Datei C, 550, ist eine zusammenhängende Datei, die Datei A, 510, Datei B, 530, neu erstellte Daten, gefolgt von Datei A, 510, und zusätzliche neu erstellte Daten aufweist. In dieser beschriebenen Ausführungsform ermittelt der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(Zn) mittels Berechnung. Einem Fachmann ist jedoch ersichtlich, dass der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert auch mit anderen vorstehend beschriebenen Verfahren ermitteln kann. Im Sinne einer einfacheren Diskussion entspricht in der folgenden Beschreibung jedes Fenster aus Daten einem Chunk. Einem Fachmann sollte jedoch ersichtlich sein, dass es auch Fälle gibt, in denen der Fingerabdruck und der Pseudofingerabdruck nicht mit dem berechneten Chunk identifizierenden Hashwert F(Zn) übereinstimmt. Wenn sich in solchen Fallen das Fenster aus Daten nicht an dem Datenende befindet, dann wird das älteste Byte in dem Array durch das neueste Byte ersetzt und der Chunk identifizierende Hashwert an einem zweiten Fenster aus Daten berechnet.
  • Gemäß dieser Ausführungsform wird Datei A von Client 2 erstellt und anschließend an den Server-Backup-Manager 16 gesendet, um die Sicherungskopie von Datei A in dem Systemspeicher 6 zu verwalten. Der Server-Backup-Manager 16 verarbeitet Datei A, um die Chunk-Grenzen zu ermitteln (Schritt 402). Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(A1) an einem ersten Fenster aus Daten von Datei A (Schritt 404). Der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(A1) mit einem Fingerabdruck übereinstimmt (Schritt 406) und erstellt eine Chunk-Grenze 511 und speichert die Chunk-Grenze 511 (Schritt 408). Der Server-Backup-Manager 16 ermittelt, dass die Datei weitere Daten zu verarbeiten hat, und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert F(A2) wird an einem zweiten Fenster aus Daten berechnet. Der Prozess wird wiederholt, wenn die Chunk-Grenzen 512 und 513 erstellt und gespeichert werden. Schließlich vergleicht, wenn sich das Fenster aus Daten für die Hashwert-Berechnung dem Datenende von Datei A nähert und der Chunk identifizierende Hashwert F(A4) (Schritt 404) mit keinem Fingerandruck übereinstimmt (Schritt 406), der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(A4) mit gespeicherten Pseudofingerabdrücken auf der Pseudofingerabdruck-Liste 26. Ermittelt der Server-Backup-Manager 16, dass der Chunk identifizierende Hashwert F(A4) mit keinem Pseudofingerabdruck übereinstimmt, und dass es sich bei dem Fenster aus Daten um das Datenende von Datei A handelt, dann wird der Chunk identifizierende Hashwert F(A4) als ein Pseudofingerabdruck in der Pseudofingerabdruckliste 26 gespeichert (Schritt 420) und eine künstliche Chunk-Grenze 520 für Datei A gespeichert (Schritt 422).
  • Der Chunking-Prozess der Deduplizierung von Datei B ähnelt dem für das Chunking für Datei A. Datei B wird von dem Client 2 erstellt und an den Server-Backup-Manager 16 gesendet, um die Sicherungskopie von Datei B in dem Systemspeicher 6 zu verwalten. Der Server-Backup-Manager verarbeitet Datei B, um Chunk-Grenzen zu ermitteln (Schritt 402). Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(B1) an einem ersten Fenster aus Daten von Datei B (Schritt 404). Der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(B1) mit einem Fingerabdruck übereinstimmt (Schritt 406) und erstellt eine Chunk-Grenze 531 und speichert die Chunk-Grenze 531 (Schritt 408). Der Server-Backup-Manager 16 ermittelt, dass die Datei weitere Daten zu verarbeiten hat (Schritt 410), und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert F(B2) wird an einem zweiten Fenster aus Daten berechnet (Schritt 404). Der Prozess wird wiederholt, wenn die Chunk-Grenze 532 erstellt und gespeichert wird. Schließlich vergleicht, wenn sich das Fenster aus Daten für die Hashwert-Berechnung dem Datenende der Datei B nähert und der berechnete Chunk identifizierende Hashwert F(B3) (Schritt 404) mit keinem Fingerabdruck übereinstimmt (Schritt 406), der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(B3) mit gespeicherten Pseudofingerabdrücken in der Pseudofingerabdruck-Liste 26. Ermittelt der Server-Backup-Manager 16, dass der Chunk identifizierende Hashwert F(B3) mit keinem Pseudofingerabdruck übereinstimmt und dass es sich bei dem Fenster aus Daten um das Datenende von Datei B handelt, dann wird der Chunk identifizierende Hashwert F(B3) als ein Pseudofingerabdruck in der Pseudofingerabdruck-Liste 26 gespeichert (Schritt 420) und eine künstliche Chunk-Grenze 540 für Datei B gespeichert (Schritt 422).
  • Wie vorstehend beschrieben, handelt es sich bei Datei C, 550, um eine zusammenhängende Datei. Wie dies in 5 dargestellt ist, umfasst die zusammenhängende Datei C Datei A, 510, Datei B, 530, neu erstellte Daten 560, gefolgt von Datei A, 510, sowie zusätzliche neu erstellte Daten 570. Gemäß den vorstehend beschriebenen Schritten der Ausführungsform wurden Datei A und Datei B dedupliziert, und die Pseudofingerabdrücke 82 der zufälligen Grenzen 520 und 540 wurden ermittelt und in der Pseudofingerabdruck-Liste 26 gespeichert. Des Weiteren hat der Deduplizierungsindex 20 die Chunk-Identität 62, den Hashwert 64 und die Länge 66 des Chunks eines jeden Chunks von Datei A und Datei B (z. B. A1, A2, A3, A4, B1, B2, B3) gespeichert. Da die Pseudofingerabdrücke 82 der zufälligen Grenzen 520 und 540 gespeichert worden sind, werden die zufälligen Chunk-Grenzen, die in der zusammenhängenden Datei C eingebettet sind, während der Deduplizierung von Datei C auch als Chunk-Grenzen erkannt. Dementsprechend stimmt der Chunk-Eindeutigkeits-Hashwert, der an jedem beliebigen zufälligen Chunk berechnet wird, mit dem in dem Deduplizierungsindex 20 gespeicherten Hashwert H(Zn) überein, und der redundante Chunk wird erkannt und nicht unnötigerweise gespeichert.
  • Der Prozess des Deduplizierens von Datei C wird gemäß den in 5 veranschaulichten Operationen beschrieben. Datei C wird von dem Client 2 erstellt und an den Server-Backup-Manager 16 zum Verwalten der Sicherungskopie von Datei C in dem Systemspeicher 6 gesendet. Der Server-Backup-Manager 16 beginnt das Verarbeiten von Datei C, um Chunk-Grenzen zu ermitteln (Schritt 402). Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(A1) an einem ersten Fenster aus Daten von Datei C, das Datei A entspricht (Schritt 404). Der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(A1) mit einem Fingerabdruck (Schritt 406) übereinstimmt und erstellt eine Chunk-Grenze 511 und speichert die Chunk-Grenze 511 (Schritt 408). Der Server-Backup-Manager 16 ermittelt, dass die Datei weitere Daten zu verarbeiten hat, und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert F(A2) wird an dem zweiten Fenster aus Daten berechnet. Der Prozess wird wiederholt, wenn die Chunk-Grenzen 512 und 513 erstellt und gespeichert werden. Wenn sich das Fenster aus Daten für die Hashwert-Berechnung dem Datenende nähert, das Datei A entspricht, stimmt der Chunk identifizierende Hashwert F(A4) (Schritt 404) mit keinem Fingerandruck überein (Schritt 406). Anschließend vergleicht der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(A4) mit gespeicherten Pseudofingerabdrücken auf der Pseudofingerabdruck-Liste 26 (Schritt 416). Wenn der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(A4) mit dem Pseudofingerabdruck F(A4) auf der Pseudofingerabdruck-Liste übereinstimmt, speichert der Server-Backup-Manager 16 die Chunk-Grenze 520, die dem Fenster aus Daten entspricht (Schritt 408).
  • Der Server-Backup-Manager ermittelt, dass Datei C weitere Daten zu verarbeiten hat (Schritt 410), und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert wird neu berechnet. Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(B1) an einem Fenster aus Daten, das dem ersten Teil von Datei B entspricht (Schritt 404). Der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(B1) mit einem Fingerabdruck übereinstimmt (Schritt 406) und erstellt eine Chunk-Grenze 531 und speichert die Chunk-Grenze 531 (Schritt 408). Der Server-Backup-Manager 16 ermittelt, dass die Datei weitere Daten zu verarbeiten hat, und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert F(B2) wird an einem neuen Fenster aus Daten berechnet. Der Prozess wird wiederholt, wenn die Chunk-Grenze 532 erstellt und gespeichert wird. Wenn sich das Fenster aus Daten für die Hashwert-Berechnung dem Datenende nähert, das Datei B entspricht, stimmt der berechnete Chunk identifizierende Hashwert F(B3) (Schritt 404) mit keinem Fingerabdruck überein (Schritt 406). Der Server-Backup-Manager 16 vergleicht anschließend den Chunk identifizierenden Hashwert F(B3) mit gespeicherten Pseudofingerabdrücken auf der Pseudofingerabdruck-Liste 26 (Schritt 416). Wenn der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(B3) mit dem Pseudofingerabdruck F(B3) auf der Pseudofingerabdruck-Liste 16 übereinstimmt, speichert der Server-Backup-Manager 16 die Chunk-Grenze 540, die dem Fenster aus Daten entspricht (Schritt 408).
  • Der Server-Backup-Manager 16 ermittelt erneut, dass Datei C weitere Daten zu verarbeiten hat (Schritt 410), und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert des neuen Fensters aus Daten wird berechnet. Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(C1) an einem nächsten Fenster aus Daten von Datei C (Schritt 404), das den neu erstellten eindeutigen Daten entspricht. Der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(C1) mit einem Fingerabdruck übereinstimmt (Schritt 406) und erstellt eine Chunk-Grenze 551 und speichert die Chunk-Grenze 551 (Schritt 408). Der Server-Backup-Manager 16 ermittelt, dass die Datei weitere Daten zu verarbeiten hat, und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert F(C2) wird an dem neuen Fenster aus Daten berechnet. Der Prozess wird wiederholt, wenn die Chunk-Grenzen 552, 553, 554 erstellt und gespeichert werden.
  • Der Server-Backup-Manager 16 ermittelt, dass Datei C weitere Daten zu verarbeiten hat (Schritt 410), und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert wird an dem neuen Fenster berechnet. Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(A1) an einem Fenster aus Daten, das dem ersten Teil von Datei A entspricht (Schritt 404). Der Server-Backup-Manager 16 ermittelt auf dieselbe Weise wie vorstehend beschrieben, dass der Chunk identifizierende Hashwert F(A1) mit einem Fingerabdruck übereinstimmt (Schritt 406) und erstellt Chunk-Grenzen 511, 512, 513 und speichert die Chunk-Grenzen (Schritt 408). Auf ähnliche Weise wie vorstehend beschrieben ermittelt der Server-Backup-Manager 16, dass der Chunk identifizierende Hashwert F(A4) mit dem Pseudofingerabdruck F(A4) auf der Pseudofingerabdruck-Liste übereinstimmt und speichert die Chunk-Grenze (Schritt 408).
  • Erneut ermittelt der Server-Backup-Manager 16, dass Datei C weitere Daten zu verarbeiten hat (Schritt 410), und das älteste Byte in dem Fenster aus Daten wird durch ein neues Byte ersetzt, und der Chunk identifizierende Hashwert wird an dem neuen Fenster aus Daten berechnet. Der Server-Backup-Manager 16 berechnet einen Chunk identifizierenden Hashwert F(C5) an einem nächsten Fenster aus Daten der Datei C (Schritt 404), das den neu erstellten eindeutigen Daten entspricht. Der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(C5) mit einem Fingerabdruck übereinstimmt (Schritt 406) und erstellt eine Chunk-Grenze 555 und speichert die Chunk-Grenze 555 (Schritt 408). Schließlich vergleicht Server-Backup-Manager 16, wenn sich das Fenster aus Daten für die Hashwert-Berechnung dem Datenende von Datei C nähert und der berechnete Chunk identifizierende Hashwert F(C6) (Schritt 404) mit keinem Fingerabdruck übereinstimmt (Schritt 406), den Chunk identifizierenden Hashwert F(C6) mit gespeicherten Pseudofingerabdrücken auf der Pseudofingerabdruck-Liste 26. Wenn der Server-Backup-Manager 16 ermittelt, dass der Chunk identifizierende Hashwert F(C6) mit keinem Pseudofingerabdruck übereinstimmt, und dass es sich bei dem Fenster aus Daten um das Datenende von Datei C handelt, wird der berechnete Chunk identifizierende Hashwert F(C6) als ein Pseudofingerabdruck in der Fingerabdruck-Liste 26 (in Schritt 420) gespeichert und eine künstliche Chunk-Grenze 580 für Datei C gespeichert (Schritt 422).
  • 6 ist ein Diagramm, das die Leistung der Datenverarbeitungsumgebung 1 während eines Deduplizierungsprozesses gemäß einer Ausführungsform der Erfindung veranschaulicht. 6 wird in Bezug auf die Ausführungsform beschrieben, bei der der Client 2 ein Speicherobjekt Z erstellt, das ein Datenende aufweist, das einem Chunk Zn entspricht, von dem keine Sicherungskopie in dem Systemspeicher 6 erstellt wurde. Des Weiteren wird 6 in Bezug auf eine Ausführungsform beschrieben, bei der die Deduplizierung an dem Server 4 durchgeführt wird. Einem Fachmann ist jedoch ersichtlich, dass die Beschreibung hierin auch auf andere Ausführungsformen der Erfindung zutreffen würde. So würde beispielsweise in einer Ausführungsform, bei der die Deduplizierung auf der Client-Seite durchgeführt wird, der hierin beschriebene Prozess an dem Client durchgeführt werden.
  • In Bezug auf 6 weist die Datenverarbeitungsumgebung 1 wenigstens einen Client 2 auf, der über ein Netzwerk 24 mit einem Server 4 verbunden ist, um Sicherungskopien für in dem Client-Speicher 8 gespeicherte Speicherobjekte zu erstellen. Beispielsweise speichert der Client-Speicher 8, wenn ein Client 2 ein neues oder verändertes Speicherobjekt erzeugt, das Speicherobjekt Z auf einer oder mehreren Magnetplatte(n). Der Server 4 ist mit dem Speichersystem 6 verbunden, das eine oder mehrere Speichereinheiten in der vorstehend beschriebenen Form aufweisen kann. Client 2 sendet das Speicherobjekt Z (610) an den Server-Backup-Manager 16 zum Erstellen einer Sicherungskopie des Speicherobjektes Z in dem Systemspeicher 6.
  • In einen Beispiel einer Ausführungsform der vorliegenden Erfindung ist die Datenverarbeitungsumgebung 1 in der Lage, einen Chunk identifizierenden Hashwert für ein Fenster aus Daten eines Speicherobjektes zu ermitteln, wenn der Chunk identifizierende Hashwert mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck auf einer Pseudofingerabdruck-Liste 26 übereinstimmt. Die Datenverarbeitungsumgebung 1 definiert die Chunk-Grenze eines Chunks des Speicherobjektes, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten des Speicherobjektes um das Datenende des Speicherobjektes handelt und der Chunk identifizierende Hashwert mit keinem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt. Die Datenverarbeitungsumgebung 1 speichert den Chunk identifizierenden Hashwert als einen Pseudofingerabdruck des Chunks des Speicherobjektes. Dementsprechend ist die Speicherumgebung 1 in der Lage, künstliche Chunk-Grenzen zu erkennen und redundante Daten effektiver während der Deduplizierung auf der Grundlage eines Chunk identifizierenden Hashwertes zu eliminieren, der als Pseudofingerabdruck auf einer Pseudofingerabdruck-Liste 26 gespeichert ist.
  • Der Server-Backup-Manager 16 ermittelt einen Chunk identifizierenden Hashwert F(Zn) eines Fensters aus Daten des Speicherobjektes Z. Der Server-Backup-Manager 16 ermittelt, ob der ermittelte Chunk identifizierende Hashwert F(Zn) mit einem Fingerabdruck übereinstimmt. In diesem Beispiel entspricht das Fenster aus Daten einem Datenende, und dementsprechend stimmt der berechnete Hashwert mit keinem Fingerabdruck überein. Der Server-Backup-Manager 16 ermittelt, ob der Chunk identifizierende Hashwert F(Zn) mit einem gespeicherten Pseudofingerabdruck auf der Pseudofingerabdruck-Liste 26 übereinstimmt (620). In diesem Beispiel wurde der Chunk Zn noch nicht dedupliziert, und der Chunk identifizierende Hashwert F(Zn) wurde nicht in der Pseudofingerabdruck-Liste 26 gespeichert. Dementsprechend ermittelt der Server-Backup-Manager 16, dass der Chunk identifizierende Hashwert F(Zn) mit keinem Pseudofingerabdruck übereinstimmt.
  • Wird ermittelt, dass das Fenster aus Daten, das dem Datenende von Speicherobjekt Z entspricht, mit keinem Fingerabdruck oder einem Pseudofingerabdruck übereinstimmt, speichert der Server-Backup-Manager 16 den Chunk identifizierenden Hashwert F(Zn) in der Pseudofingerabdruck-Liste 26 (630). Zusätzlich dazu speichert der Server-Backup-Manager 16 die Chunk-Grenze des Speicherobjektes für Chunk Zn in dem Server-Speicher 22 (640). Der Server-Backup-Manager 16 ermittelt den Chunk-Eindeutigkeits-Hashwert H(Zn) des Chunks und erstellt einen Deduplizierungsindex-Eintrag (650) in dem Deduplizierungsindex 20, der die Chunk-Identitätsinformationen 62, ChunkID (F(Zn)), den Hashwert 64, H(Zn), und die Länge des Chunks 66 L(Zn) aufweist. Der Server-Backup-Manager 16 sendet des Weiteren den Chunk Zn an den Systemspeicher 6 zum Erstellen einer Sicherungskopie (660).
  • Es sollte beachtet werden, dass solche Operationen als Verfahren ausgeführt sein können, die als Algorithmus mit Software-Modulen implementiert sind, die von einem Datenverarbeitungssystem implementiert sind. Des Weiteren kann das Verfahren als Software auf jedem beliebigen computerlesbaren Medium, wie beispielsweise dedizierter Firmware oder als eine Kombination aus Software und Firmware und Ähnliches ausgeführt sein.
  • Wie Fachleuten ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogramm ausgebildet sein. Dementsprechend können Aspekte der vorliegenden Erfindung vollständig als Hardware-Ausführungsform, vollständig als Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikro-Code usw.) oder als eine Ausführungsform ausgebildet ein, die Software- und Hardware-Aspekte kombiniert, die hierin allesamt im Allgemeinen als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung als Computerprogrammprodukt ausgebildet sein, das in einem oder mehreren computerlesbaren Medium oder Medien mit einem darin ausgebildeten computerlesbaren Programmcode ausgebildet ist.
  • Es kann jede beliebige Kombination aus einem oder mehreren computerlesbaren Medium oder Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, solche Vorrichtung oder Einheit oder jede beliebige geeignete Kombination der vorstehend Genannten sein, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (eine ergänzbare Liste) des computerlesbaren Speichermediums würden die Folgenden gehören: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, ein Arbeitsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-Nur-Lesespeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination der vorstehend Genannten. Im Kontext dieses Dokumentes kann es sich bei einem computerlesbaren Speichermedium um jegliches materielle Medium handeln, das ein Programm zur Verwendung durch ein oder im Zusammenhang mit einem Befehlsausführungssystem, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein weitergegebenes Datensignal mit einem darin enthaltenen, computerlesbaren Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle sein. Solch ein weitergegebenes Signal kann jede beliebige einer Reihe verschiedener Formen, einschließlich elektromagnetischer, optischer oder jeder beliebigen geeigneten Kombination daraus, jedoch nicht darauf beschränkt, umfassen. Ein computerlesbares Signalmedium kann jegliches computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder im Zusammenhang mit einem Befehlsausführungssystem, solcher Vorrichtung oder Einheit ein Programm übertragen, weitergeben oder senden kann.
  • Der in einem computerlesbaren Medium enthaltene Computerprogrammcode kann unter Verwendung eines jeden beliebigen geeigneten Mediums, unter anderem kabellos, kabelbasiert, Lichtwellenleiter, HF usw. oder jeder beliebigen geeigneten Kombination der vorstehend Genannten, jedoch nicht darauf beschränkt, übertragen werden. Der Computerprogrammcode zum Durchführen der Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination aus einer oder mehreren Programmiersprachen unter anderem einer objektorientierten Programmiersprache wie beispielsweise JavaTM, SmalltalkTM, C++ oder Ähnlichen oder herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache „C” oder ähnlichen Programmiersprachen geschrieben werden. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als ein Stand-Alone-Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In dem letzten Szenarium kann der ferne Computer über jeden beliebigen Typ von Netzwerk, unter anderem einem lokalen Netz (LAN), oder einem Weitverkehrsnetz (WAN) mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann zu einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
  • Vorstehend werden Aspekte der vorliegenden Erfindung in Bezug auf Veranschaulichungen in Ablaufplänen und/oder Blockschaubildern zu Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den veranschaulichenden Ausführungsformen der Erfindung beschrieben. Es ist offensichtlich, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern von Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zum Herstellen einer Maschine auf eine Weise bereitgestellt werden, dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen/Schritte erstellen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder spezifiziert werden.
  • Diese Computerprogrammanweisungen können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise so zu funktionieren, dass die auf dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel produzieren, der Anweisungen aufweist, welche die Funktion/den Schritt implementieren, die oder der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder spezifiziert ist. Die Computerprogrammanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Arbeitsschritten zu veranlassen, die auf dem Computer, anderen programmierbaren Datenverarbeitungsvorrichtungen oder Einheiten auszuführen sind, um ein computerimplementiertes Verfahren so zu schaffen, dass die Anweisungen, die auf dem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Implementieren der in dem Ablaufplan und/oder dem oder den Block oder Blöcken des Blockschaltbildes spezifizierten Funktionen/Schritte bereitstellen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der spezifizierten logischen Funktion(en) aufweist. Es sollte darüber hinaus beachtet werden, dass in einigen alternativen Implementierungen die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren angegeben auftreten. So können beispielsweise zwei nacheinander auftretend dargestellte Blöcke tatsächlich auch im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal auch in umgekehrter Reihenfolge je nach der beteiligten Funktion ausgeführt werden. Es ist des Weiteren zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufplanveranschaulichungen und Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplanveranschaulichungen von speziellen hardwarebasierten Systemen oder Kombinationen aus speziellen hardwarebasierten Systemen und Computeranweisungen implementiert werden können, die die spezifizierten Funktionen oder Schritte durchführen.
  • Der Begriff Logik kann im beispielhaften Sinne Software, Hardware, Firmware und/oder Kombinationen aus Software und Hardware aufweisen.
  • 7 veranschaulicht ein Datenverarbeitungssystem 700, das gemäß bestimmten Ausführungsformen verwendet werden kann. Client 2 und/oder Server 4 können das Datenverarbeitungssystem 700 implementieren. Das Datenverarbeitungssystem 700 ist zum Speichern und/oder Ausführen eines Computerprogrammcodes geeignet und weist wenigstens einen Prozessor 702 auf, der direkt oder indirekt über einen Systembus (nicht dargestellt) mit Speicherelementen 704 verbunden ist. Die Speicherelemente 704 können einen lokalen Speicher, der während des tatsächlichen Ausführens des Programmcodes verwendet wird, einen Massenspeicher sowie Cachespeicher aufweisen, die vorrübergehendes Speichern wenigstens eines Programmcodes bereitstellen, um die Anzahl an Malen zu verringern, mit der während des Ausführens der Code von dem Massenspeicher abgerufen wird. Die Speicherelemente 704 weisen ein Betriebssystem und ein oder mehrere Computerprogramme (nicht dargestellt) auf.
  • Eingabe/Ausgabe (E/A)-Einheiten 712, 714 (einschließlich, jedoch nicht beschränkt auf, Tastaturen, Displays, Zeigeeinheiten usw.) können entweder direkt oder indirekt über ein Zwischenschalten von E/A-Controllern 710 mit dem System verbunden sein.
  • Es können auch Netzwerkadapter 708 mit dem System verbunden sein, so dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder fernen Druckern oder Speichereinheiten über das Zwischenschalten von privaten oder öffentlichen Netzwerken verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur wenige der derzeit erhältlichen Typen von Netzwerkadaptern 708.
  • Das Datenverarbeitungssystem 700 kann mit einem Speicher 716 (z. B. einem nichtflüchtigen Speicherbereich wie beispielsweise Magnetplattenlaufwerken, optischen Plattenlaufwerken, einem Bandlaufwerk, Halbleiter-Speichereinheiten usw.) verbunden sein. Der Speicher 716 kann eine interne Speichereinheit oder einen angeschlossenen oder einen über ein Netzwerk zugänglichen Speicher aufweisen. Computerprogramme in dem Speicher 716 können in die Speicherelemente 714 geladen werden und von einem Prozessor 702 auf eine auf dem Gebiet der Technik bekannte Weise ausgeführt werden.
  • Das Datenverarbeitungssystem 700 kann weniger Komponenten als veranschaulicht, zusätzliche hierin nicht veranschaulichte Komponenten oder einige Kombinationen aus veranschaulichten und zusätzlichen Komponenten aufweisen. Das Datenverarbeitungssystem 700 kann jede beliebige auf dem Gebiet der Technik bekannte Datenverarbeitungseinheit wie beispielsweise einen Mainframe-Computer, einen Server, einen Personalcomputer, eine Workstation, einen Laptop, einen Handheld-Computer, eine Telefonieeinheit, ein Netzwerkgerät, eine Virtualisierungseinheit, einen Speicher-Controller, eine Mobileinheit beispielsweise einen Personal Digital Assistant (PDA) oder ein Mobiltelefon usw. aufweisen.
  • Die vorstehende Beschreibung von Ausführungsformen der Erfindung wurde im Sinne der Veranschaulichung und Beschreibung gegeben. Sie erhebt weder den Anspruch auf Vollständigkeit noch beabsichtigt sie eine Beschränkung auf die hierin in genauer Form offenbarten Ausführungsformen. Es sind viele Modifizierungen und Varianten unter Berücksichtigung der vorstehenden Lehre möglich. Es ist beabsichtigt, dass der Schutzumfang der Ausführungsformen nicht durch diese ausführliche Beschreibung sondern vielmehr durch die hieran angehängten Ansprüche begrenzt wird. Die vorstehende Spezifizierung, Beispiele und Daten liefern eine vollständige Beschreibung der Herstellung und Verwendung der Zusammenstellung der Ausführungsformen. Es können viele Ausführungsformen umgesetzt werden, ohne vom Schutzumfang der Erfindung, der hierin in den folgenden Ansprüchen oder jeglichen nachgereichten Ansprüchen und ihrer Entsprechungen definiert ist, abzuweichen.

Claims (27)

  1. Computerimplementiertes Verfahren zum Verarbeiten eines Speicherobjektes zur Datendeduplizierung, aufweisend: Ermitteln eines Chunk identifizierenden Hashwertes für ein Fenster aus Daten des Speicherobjektes; Ermitteln, ob der Chunk identifizierende Hashwert des Fensters aus Daten mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt; Ermitteln, ob es sich bei dem Fenster aus Daten um ein Datenende des Speicherobjektes handelt, wenn ermittelt wird, dass der Chunk identifizierende Hashwert des Fensters aus Daten weder mit dem Fingerabdruck noch mit dem gespeicherten Pseudofingerabdruck übereinstimmt; Definieren einer Chunk-Grenze eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, sowie Speichern der Chunk-Grenze des Chunks, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um ein Datenende des Speicherobjektes handelt; Speichern des ermittelten Chunk identifizierenden Hashwertes als einen Pseudofingerabdruck des Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt.
  2. Computerimplementiertes Verfahren nach Anspruch 1, des Weiteren aufweisend Ermitteln eines Chunk-Eindeutigkeits-Hashwertes an dem Speicherobjekt und Speichern des Chunk-Eindeutigkeits-Hashwertes in einem Deduplizierungsindex für den Chunk des Speicherobjektes.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, wobei das Ermitteln, ob der Chunk identifizierende Hashwert mit einem bekannten Fingerabdruck übereinstimmt, ein Ermitteln aufweist, ob der Chunk identifizierende Hashwert eine vordefinierte mathematische Eigenschaft erfüllt.
  4. Computerimplementiertes Verfahren nach einem beliebigen der vorstehenden Ansprüche, wobei das Speichern des Pseudofingerabdruckes des Chunks des Speicherobjektes, das dem Fenster aus Daten des Speicherobjektes entspricht, ein Speichern des Pseudofingerabdruckes in einer Pseudofingerabdruck-Liste aufweist.
  5. Computerimplementiertes Verfahren nach Anspruch 4, wobei das Ermitteln, ob der Chunk identifizierende Hashwert mit einem Pseudofingerabdruck übereinstimmt, ein Ermitteln aufweist, ob der Chunk identifizierende Hashwert auf der Pseudofingerabdruck-Liste gespeichert ist.
  6. Computerimplementiertes Verfahren nach einem beliebigen der vorstehenden Ansprüche, wobei das Ermitteln des Chunk identifizierenden Hashwertes des Fensters aus Daten des Speicherobjektes ein Berechnen einer „Rolling Hash”-Funktion des Fensters aus Daten des Speicherobjektes aufweist.
  7. Computerimplementiertes Verfahren nach Anspruch 6, wobei das Berechnen der „Rolling Hash”-Funktion des Fensters aus Daten des Speicherobjektes ein Berechnen einer Karp-Rabin-Rolling-Hashfunktion des Fensters aus Daten des Speicherobjektes aufweist.
  8. Computerimplementiertes Verfahren nach einem beliebigen der vorstehenden Ansprüche, des Weiteren aufweisend Definieren eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, sowie Speichern einer Chunk-Grenze des Chunks, wenn ermittelt wird, dass der Chunk identifizierende Hashwert mit dem Fingerabdruck übereinstimmt.
  9. Computerimplementiertes Verfahren nach einem beliebigen der vorstehenden Ansprüche, des Weiteren aufweisend Ermitteln eines Chunk identifizierenden Hashwertes eines weiteren Fensters aus Daten, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten nicht um das Datenende des Speicherobjektes handelt und Ermitteln, ob der ermittelte Chunk identifizierende Hashwert des weiteren Fensters aus Daten mit dem Fingerabdruck oder dem gespeicherten Pseudofingerabdruck übereinstimmt.
  10. Datenverarbeitungseinheit zum Verarbeiten eines Speicherobjektes zur Datendeduplizierung, aufweisend: einen Prozessor und einen mit dem Speicher verbundenen Prozessor; wobei der Speicher ein computerlesbares Speichermedium mit einem Code aufweist, der bei seiner Ausführung durch den Prozessor Operationen durchführt, wobei die Operationen aufweisen: Ermitteln eines Chunk identifizierenden Hashwertes für ein Fenster aus Daten des Speicherobjektes; Ermitteln, ob der Chunk identifizierende Hashwert des Fensters von Daten mit einem Fingerabdruck oder einem gespeicherten Pseudofingerabdruck übereinstimmt; Ermitteln, ob es sich bei dem Fenster aus Daten um ein Datenende des Speicherobjektes handelt, wenn ermittelt wird, dass der Chunk identifizierende Hashwert des Fensters aus Daten weder mit dem Fingerabdruck noch mit dem gespeicherten Pseudofingerabdruck übereinstimmt; Definieren einer Chunk-Grenze eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, und Speichern einer Chunk-Grenze des Chunks, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt; und Speichern des ermittelten Chunk identifizierenden Hashwertes als einen Pseudofingerabdruck des Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, in dem Speicher, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten des Speicherobjektes um das Datenende des Speicherobjektes handelt.
  11. Datenverarbeitungseinheit nach Anspruch 10, wobei die Operationen des Weiteren aufweisen: Ermitteln eines Chunk-Eindeutigkeits-Hashwertes an dem Chunk des Speicherobjektes und Speichern des Chunk-Eindeutigkeits-Hashwertes in einem Deduplizierungsindex für den Chunk des Speicherobjektes.
  12. Datenverarbeitungseinheit nach Anspruch 10 oder 11, wobei das Ermitteln, ob der Chunk identifizierende Hashwert mit dem bekannten Fingerabdruck übereinstimmt, ein Ermitteln aufweist, ob der Chunk identifizierende Hashwert eine vordefinierte mathematische Eigenschaft erfüllt.
  13. Datenverarbeitungseinheit nach Anspruch 10 bis 12, wobei das Speichern des Pseudofingerabdruckes des Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, ein Speichern des Pseudofingerabdruckes in einer Pseudofingerabdruck-Liste aufweist.
  14. Datenverarbeitungseinheit nach Anspruch 13, wobei das Ermitteln, ob der Chunk identifizierende Hashwert mit einem Pseudofingerabdruck übereinstimmt, ein Ermitteln aufweist, ob der Chunk identifizierende Hashwert auf der Pseudofingerabdruck-Liste gespeichert ist.
  15. Datenverarbeitungseinheit nach einem beliebigen der Ansprüche 10 bis 14, wobei das Ermitteln des Chunk identifizierenden Hashwertes des Fensters an Daten des Speicherobjektes ein Berechnen einer „Rolling Hash”-Funktion des Fensters aus Daten des Speicherobjektes aufweist.
  16. Datenverarbeitungseinheit nach Anspruch 15, wobei das Berechnen der „Rolling Hash”-Funktion des Fensters aus Daten des Speicherobjektes ein Berechnen einer Karp-Rabin-Rolling-Hashfunktion des Fensters aus Daten des Speicherobjektes aufweist.
  17. Datenverarbeitungseinheit nach einem beliebigen der vorstehenden Ansprüche 10 bis 16, wobei die Operationen des Weiteren aufweisen: Definieren eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, und Speichern einer Chunk-Grenze des Chunks, wenn ermittelt wird, dass der Chunk identifizierende Hashwert mit dem Fingerabdruck übereinstimmt.
  18. Datenverarbeitungseinheit nach einem beliebigen der Ansprüche 10 bis 17, wobei die Operationen des Weiteren aufweisen: Ermitteln eines Chunk identifizierenden Hashwertes eines weiteren Fensters an Daten, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten nicht um das Datenende des Speicherobjektes handelt und Ermitteln, ob der ermittelte Chunk identifizierende Hashwert des weiteren Fensters aus Daten mit dem Fingerabdruck oder dem gespeicherten Pseudofingerabdruck übereinstimmt.
  19. Computerprogrammprodukt zum Verarbeiten eines Speicherobjektes zur Datendeduplizierung, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, das einen darin ausgebildeten computerlesbaren Programmcode aufweist, der bei seiner Ausführung durch einen Prozessor Operationen durchführt, wobei die Operationen aufweisen: Ermitteln eines Chunk identifizierenden Hashwertes für ein Fenster aus Daten des Speicherobjektes; Ermitteln, ob der Chunk identifizierende Hashwert des Fensters aus Daten mit einem Fingerabdruck oder einem gespeicherten Fingerabdruck übereinstimmt; Ermitteln, ob es sich bei dem Fenster aus Daten um ein Datenende des Speicherobjektes handelt, wenn ermittelt wird, dass der Chunk identifizierende Hashwert weder mit dem Fingerabdruck noch mit dem gespeicherten Pseudofingerabdruck übereinstimmt; Definieren einer Chunk-Grenze eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, und Speichern einer Chunk-Grenze des Chunks, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten um das Datenende des Speicherobjektes handelt; und Speichern des ermittelten Chunk identifizierenden Hashwertes als einen Pseudofingerabdruck des Chunks des Speicherobjektes, das mit dem Fenster aus Daten übereinstimmt, in dem Speicher, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten des Speicherobjektes um das Datenende des Speicherobjektes handelt.
  20. Computerprogrammprodukt nach Anspruch 19, wobei die Operationen des Weiteren aufweisen: Ermitteln eines Chunk-Eindeutigkeits-Hashwertes des Speicherobjektes und Speichern der Chunk-Eindeutigkeits-Informationen in einem Deduplizierungsindex für den Chunk des Speicherobjektes.
  21. Computerprogrammprodukt nach Anspruch 19 oder 20, wobei das Ermitteln, ob der Chunk identifizierende Hashwert mit dem bekannten Fingerabdruck übereinstimmt, ein Ermitteln aufweist, ob der Chunk identifizierende Hashwert eine vordefinierte mathematische Eigenschaft erfüllt.
  22. Computerprogrammprodukt eines beliebigen der vorstehenden Ansprüche 19 bis 21, wobei das Speichern des Pseudofingerabdruckes des Chunks des Speicherobjektes, das dem Fenster aus Daten des Speicherobjektes entspricht, ein Speichern des Pseudofingerabdruckes in einer Pseudofingerabdruck-Liste aufweist.
  23. Computerprogrammprodukt nach Anspruch 22, wobei das Ermitteln, ob der Chunk identifizierende Hashwert mit einem Pseudofingerabdruck übereinstimmt, ein Ermitteln aufweist, ob der Chunk identifizierende Hashwert auf der Pseudofingerabdruck-Liste gespeichert ist.
  24. Computerprogrammprodukt nach einem beliebigen der vorstehenden Ansprüche 19 bis 23, wobei das Ermitteln des Chunk identifizierenden Hashwertes des Fensters an Daten des Speicherobjektes ein Berechnen einer „Rolling Hash”-Funktion des Fensters aus Daten des Speicherobjektes aufweist.
  25. Computerprogrammprodukt nach Anspruch 24, wobei das Berechnen der „Rolling Hash”-Funktion des Fensters aus Daten des Speicherobjektes ein Berechnen einer Karp-Robin-Rolling-Hashfunktion des Fensters aus Daten des Speicherobjektes aufweist.
  26. Computerprogrammprodukt nach einem beliebigen der Ansprüche 19 bis 25, wobei die Operationen des Weiteren aufweisen: Definieren eines Chunks des Speicherobjektes, das dem Fenster aus Daten entspricht, und Speichern einer Chunk-Grenze, wenn ermittelt wird, dass der Chunk identifizierende Hashwert mit dem Fingerabdruck übereinstimmt.
  27. Computerprogrammprodukt nach einem beliebigen der Ansprüche 19 bis 26, wobei die Operationen des Weiteren aufweisen: Ermitteln eines Chunk identifizierenden Hashwertes eines weiteren Fensters an Daten, wenn ermittelt wird, dass es sich bei dem Fenster aus Daten nicht um das Datenende des Speicherobjektes handelt und Ermitteln, ob der ermittelte Chunk identifizierende Hashwert des weiteren Fensters aus Daten mit dem Fingerabdruck oder dem gespeicherten Fingerabdruck übereinstimmt.
DE112012004937.3T 2011-11-28 2012-11-15 Fingerabdruckbasierte Datendeduplizierung Pending DE112012004937T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US305,218 2011-11-28
US13/305,218 US9047304B2 (en) 2011-11-28 2011-11-28 Optimization of fingerprint-based deduplication
PCT/IB2012/056439 WO2013080077A1 (en) 2011-11-28 2012-11-15 Fingerprint-based data deduplication

Publications (1)

Publication Number Publication Date
DE112012004937T5 true DE112012004937T5 (de) 2014-09-11

Family

ID=48467745

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004937.3T Pending DE112012004937T5 (de) 2011-11-28 2012-11-15 Fingerabdruckbasierte Datendeduplizierung

Country Status (4)

Country Link
US (4) US9047304B2 (de)
CN (1) CN103959256B (de)
DE (1) DE112012004937T5 (de)
WO (1) WO2013080077A1 (de)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047304B2 (en) 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication
US9547774B2 (en) 2012-07-18 2017-01-17 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
US9037856B2 (en) * 2012-07-18 2015-05-19 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
WO2014089767A1 (zh) * 2012-12-12 2014-06-19 华为技术有限公司 集群系统中数据处理方法及装置
US9223840B2 (en) * 2012-12-31 2015-12-29 Futurewei Technologies, Inc. Fast object fingerprints
US8732135B1 (en) * 2013-03-01 2014-05-20 Storagecraft Technology Corporation Restoring a backup from a deduplication vault storage
US8682870B1 (en) 2013-03-01 2014-03-25 Storagecraft Technology Corporation Defragmentation during multiphase deduplication
US8738577B1 (en) 2013-03-01 2014-05-27 Storagecraft Technology Corporation Change tracking for multiphase deduplication
US8874527B2 (en) * 2013-03-01 2014-10-28 Storagecraft Technology Corporation Local seeding of a restore storage for restoring a backup from a remote deduplication vault storage
US9235475B1 (en) * 2013-03-05 2016-01-12 Emc Corporation Metadata optimization for network replication using representative of metadata batch
US9244937B2 (en) 2013-03-15 2016-01-26 International Business Machines Corporation Efficient calculation of similarity search values and digest block boundaries for data deduplication
US9547662B2 (en) 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US9678975B2 (en) 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US9116941B2 (en) * 2013-03-15 2015-08-25 International Business Machines Corporation Reducing digest storage consumption by tracking similarity elements in a data deduplication system
US9632720B2 (en) 2013-08-29 2017-04-25 International Business Machines Corporation Data de-duplication
CN103678158B (zh) * 2013-12-26 2016-11-02 中国科学院信息工程研究所 一种数据布局优化方法及系统
US8751454B1 (en) 2014-01-28 2014-06-10 Storagecraft Technology Corporation Virtual defragmentation in a deduplication vault
SG11201601357TA (en) * 2014-02-14 2016-03-30 Huawei Tech Co Ltd Method and server for searching for data stream dividing point based on server
US10374807B2 (en) * 2014-04-04 2019-08-06 Hewlett Packard Enterprise Development Lp Storing and retrieving ciphertext in data storage
US9917894B2 (en) 2014-08-06 2018-03-13 Quest Software Inc. Accelerating transfer protocols
US9990352B2 (en) * 2014-08-06 2018-06-05 Quest Software Inc. Chunk compression in a deduplication aware client environment
US10459886B2 (en) * 2014-08-06 2019-10-29 Quest Software Inc. Client-side deduplication with local chunk caching
US9984093B2 (en) 2014-08-06 2018-05-29 Quest Software Inc. Technique selection in a deduplication aware client environment
US9753955B2 (en) 2014-09-16 2017-09-05 Commvault Systems, Inc. Fast deduplication data verification
US9053124B1 (en) 2014-09-30 2015-06-09 Code 42 Software, Inc. System for a distributed file system element collection
WO2016072988A1 (en) * 2014-11-06 2016-05-12 Hewlett Packard Enterprise Development Lp Data chunk boundary
US10146752B2 (en) 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
CN104750432B (zh) * 2015-03-16 2017-11-24 华为技术有限公司 一种数据存储方法及装置
US10146629B1 (en) * 2015-03-30 2018-12-04 EMC IP Holding Company LLC Extensible workflow manager for backing up and recovering microsoft shadow copy compatible applications
US9639274B2 (en) 2015-04-14 2017-05-02 Commvault Systems, Inc. Efficient deduplication database validation
US10152389B2 (en) 2015-06-19 2018-12-11 Western Digital Technologies, Inc. Apparatus and method for inline compression and deduplication
US9552384B2 (en) 2015-06-19 2017-01-24 HGST Netherlands B.V. Apparatus and method for single pass entropy detection on data transfer
ES2900999T3 (es) * 2015-07-16 2022-03-21 Quantum Metric Inc Captura de documentos utilizando codificación delta basada en el cliente con un servidor
CN106610790B (zh) * 2015-10-26 2020-01-03 华为技术有限公司 一种重复数据删除方法及装置
JP6406283B2 (ja) * 2016-03-01 2018-10-17 日本電気株式会社 ストレージ装置およびストレージ方法
JP6920107B2 (ja) * 2016-05-20 2021-08-18 三星電子株式会社Samsung Electronics Co.,Ltd. データの取得方法及び格納方法並びに重複除去モジュール
US11140092B2 (en) * 2016-08-05 2021-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Transport protocol server relocation
US11347691B2 (en) 2016-08-10 2022-05-31 Netapp, Inc. Methods for managing storage in a distributed de-duplication system and devices thereof
US11436088B2 (en) 2016-08-10 2022-09-06 Netapp, Inc. Methods for managing snapshots in a distributed de-duplication system and devices thereof
US20180234234A1 (en) * 2017-02-10 2018-08-16 Secured FTP Hosting, LLC d/b/a SmartFile System for describing and tracking the creation and evolution of digital files
US10795860B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC WAN optimized micro-service based deduplication
US10795859B1 (en) * 2017-04-13 2020-10-06 EMC IP Holding Company LLC Micro-service based deduplication
US10972569B2 (en) * 2017-04-24 2021-04-06 International Business Machines Corporation Apparatus, method, and computer program product for heterogenous compression of data streams
US10949088B1 (en) 2017-07-21 2021-03-16 EMC IP Holding Company LLC Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system
US10459633B1 (en) 2017-07-21 2019-10-29 EMC IP Holding Company LLC Method for efficient load balancing in virtual storage systems
US11461269B2 (en) 2017-07-21 2022-10-04 EMC IP Holding Company Metadata separated container format
US10860212B1 (en) 2017-07-21 2020-12-08 EMC IP Holding Company LLC Method or an apparatus to move perfect de-duplicated unique data from a source to destination storage tier
US10936543B1 (en) 2017-07-21 2021-03-02 EMC IP Holding Company LLC Metadata protected sparse block set for SSD cache space management
US11113153B2 (en) 2017-07-27 2021-09-07 EMC IP Holding Company LLC Method and system for sharing pre-calculated fingerprints and data chunks amongst storage systems on a cloud local area network
US10481813B1 (en) 2017-07-28 2019-11-19 EMC IP Holding Company LLC Device and method for extending cache operational lifetime
US10929382B1 (en) 2017-07-31 2021-02-23 EMC IP Holding Company LLC Method and system to verify integrity of a portion of replicated data
US11093453B1 (en) 2017-08-31 2021-08-17 EMC IP Holding Company LLC System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication
US10671306B2 (en) * 2018-06-06 2020-06-02 Yingquan Wu Chunk-based data deduplication
US10922281B2 (en) * 2018-10-25 2021-02-16 EMC IP Holding Company LLC Application aware deduplication
US10713217B2 (en) 2018-10-30 2020-07-14 EMC IP Holding Company LLC Method and system to managing persistent storage using perfect hashing
US10592158B1 (en) 2018-10-30 2020-03-17 EMC IP Holding Company LLC Method and system for transferring data to a target storage system using perfect hash functions
US10977217B2 (en) 2018-10-31 2021-04-13 EMC IP Holding Company LLC Method and system to efficiently recovering a consistent view of a file system image from an asynchronously remote system
US11544387B2 (en) 2019-01-16 2023-01-03 International Business Machines Corporation Hash protection within an object storage library
US11294871B2 (en) 2019-07-19 2022-04-05 Commvault Systems, Inc. Deduplication system without reference counting
US11468030B2 (en) * 2019-10-31 2022-10-11 Hewlett Packard Enterprise Development Lp Indirect block containing references to blocks of a persistent fingerprint index
CN113227958B (zh) * 2019-12-03 2023-07-18 华为技术有限公司 用于重复数据删除中优化的设备、系统和方法
US11500819B2 (en) 2020-09-22 2022-11-15 Vmware, Inc. Supporting deduplication in file storage using file chunk hashes
US11385817B2 (en) 2020-09-22 2022-07-12 Vmware, Inc. Supporting deduplication in object storage using subset hashes
CN112597345B (zh) * 2020-10-30 2023-05-12 深圳市检验检疫科学研究院 一种实验室数据自动采集与匹配方法
CN113495901B (zh) * 2021-04-20 2023-10-13 河海大学 一种面向可变长数据块的快速检索方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US8412682B2 (en) 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US8321434B1 (en) * 2006-08-15 2012-11-27 Trend Micro Incorporated Two tiered architecture of named entity recognition engine
US7747584B1 (en) 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US7797323B1 (en) * 2006-10-11 2010-09-14 Hewlett-Packard Development Company, L.P. Producing representative hashes for segments of a file
US7827137B2 (en) 2007-04-19 2010-11-02 Emc Corporation Seeding replication
US8315984B2 (en) * 2007-05-22 2012-11-20 Netapp, Inc. System and method for on-the-fly elimination of redundant data
US8028106B2 (en) * 2007-07-06 2011-09-27 Proster Systems, Inc. Hardware acceleration of commonality factoring with removable media
US8645333B2 (en) 2008-05-29 2014-02-04 International Business Machines Corporation Method and apparatus to minimize metadata in de-duplication
US8286171B2 (en) * 2008-07-21 2012-10-09 Workshare Technology, Inc. Methods and systems to fingerprint textual information using word runs
WO2010045262A1 (en) * 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US7979491B2 (en) * 2009-03-27 2011-07-12 Hewlett-Packard Development Company, L.P. Producing chunks from input data using a plurality of processing elements
US20100318759A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Distributed rdc chunk store
US9058298B2 (en) 2009-07-16 2015-06-16 International Business Machines Corporation Integrated approach for deduplicating data in a distributed environment that involves a source and a target
CN101706825B (zh) 2009-12-10 2011-04-20 华中科技大学 一种基于文件内容类型的重复数据删除方法
GB2467239B (en) * 2010-03-09 2011-02-16 Quantum Corp Controlling configurable variable data reduction
US8732133B2 (en) * 2010-03-16 2014-05-20 Commvault Systems, Inc. Extensible data deduplication system and method
US8983952B1 (en) 2010-07-29 2015-03-17 Symantec Corporation System and method for partitioning backup data streams in a deduplication based storage system
CN102156727A (zh) 2011-04-01 2011-08-17 华中科技大学 一种采用双指纹哈希校验的重复数据删除方法
US8521705B2 (en) * 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
US8918375B2 (en) * 2011-08-31 2014-12-23 Microsoft Corporation Content aware chunking for achieving an improved chunk size distribution
US9047304B2 (en) 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication
US9984093B2 (en) * 2014-08-06 2018-05-29 Quest Software Inc. Technique selection in a deduplication aware client environment
US10339124B2 (en) * 2015-05-27 2019-07-02 Quest Software Inc. Data fingerprint strengthening

Also Published As

Publication number Publication date
US20130138620A1 (en) 2013-05-30
CN103959256A (zh) 2014-07-30
WO2013080077A1 (en) 2013-06-06
CN103959256B (zh) 2016-12-28
US20190391962A1 (en) 2019-12-26
US10474639B2 (en) 2019-11-12
US20150234855A1 (en) 2015-08-20
US11416452B2 (en) 2022-08-16
US20150234854A1 (en) 2015-08-20
US10565166B2 (en) 2020-02-18
US9047304B2 (en) 2015-06-02

Similar Documents

Publication Publication Date Title
DE112012004937T5 (de) Fingerabdruckbasierte Datendeduplizierung
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112010002938B4 (de) Eine integrierte Herangehensweise zur Deduplizierung von Daten in einer verteiltenUmgebung, die eine Quelle und ein Ziel umfasst
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112012005275B4 (de) Datenauswahl zur Sicherung von Datenspeichern
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE112010003262B4 (de) Synchronisierung replizierter sequenzieller Zugriffsspeicherkomponenten
DE112012002762T5 (de) Replikationen von Datenobjekten von einem Quellserver auf einen Zielserver
DE102013204972A1 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE112016000176T5 (de) Datendeduplizierung unter Verwendung von Chunk-Dateien
DE112015000343T5 (de) Erstellen einer Wiederherstellungskopie von einer Quelldaten-Kopie in einem Repository, das Quelldaten an verschiedenen Zeitpunkten aufweist
DE112011103367T5 (de) Replizieren von Daten
DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
DE112012002796T5 (de) Übertragen von in virtuellen Datenträgern organisierten deduplizierten Daten in einen Zielsatz von physischen Medien
DE102016100773A1 (de) Erfassen von Komprimierungsleistungsmesswerten für die Verarbeitung von Daten
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112017002497T5 (de) Systeme und verfahren zur aggregation von cloud-speicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012020000

Ipc: G06F0009440000

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R084 Declaration of willingness to licence