DE102013205069B4 - Erhöhte effizienz bei inline-deduplizierungen - Google Patents

Erhöhte effizienz bei inline-deduplizierungen Download PDF

Info

Publication number
DE102013205069B4
DE102013205069B4 DE102013205069.0A DE102013205069A DE102013205069B4 DE 102013205069 B4 DE102013205069 B4 DE 102013205069B4 DE 102013205069 A DE102013205069 A DE 102013205069A DE 102013205069 B4 DE102013205069 B4 DE 102013205069B4
Authority
DE
Germany
Prior art keywords
data
hash
deduplication
nth
hash value
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.)
Active
Application number
DE102013205069.0A
Other languages
English (en)
Other versions
DE102013205069A1 (de
Inventor
Duane Mark Baldwin
Nilesh Prabhakar Bhosale
John T. Olson
Sandeep Ramesh Patil
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 DE102013205069A1 publication Critical patent/DE102013205069A1/de
Application granted granted Critical
Publication of DE102013205069B4 publication Critical patent/DE102013205069B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

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

Abstract

Verfahren für erhöhte Effizienz bei Inline-Deduplizierungen durch eine Prozessoreinheit in einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist:Unterteilung eines Objekts in mehrere Datenblöcke festgelegter Größe, aus welchen Datenstichproben einer vorgegebenen festgelegten Größe entnehmbar sind;Berechnen von Hash-Werten der Datenstichproben aus Datenblöcken festgelegter Größe in n-ten Iterationen, die aus dem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde;für jede der n-ten Iterationen Vergleichen der berechneten Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in einem Speicher, wobei die n-te Hash-Index-Tabelle für jede der Datenstichproben erstellt wird, die zu den Datenblöcken festgelegter Größe gehören;Verlassen der n-ten Hash-Index-Tabelle, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben entdeckt wird, wobei festgestellt wird, dass das Objekt bei einer Nichtübereinstimmung ein einzigartiges Objekt ist, und das Objekt gespeichert wird, undBerechnen eines Hash-Werts für das Objekt, wobei eine Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt aktualisiert wird;Berechnen eines Hash-Werts für das Objekt, wenn ein Dateiende des Objekts erreicht wurde und Prüfung, ob der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist;Verringern der zu speichernden Daten durch Erzeugen einer Verknüpfung mit einer Stammdatei, wenn der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist, ansonsten Aktualisierung der Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt:Berechnung eines Deduplizierungs-Verhältnisses und Vergleichen mit einem festgelegten Deduplizierungs-Schwellwert, wobei die Anzahl der n-ten Iterationen abnimmt und die Größe der Datenstichproben zunimmt, für den Fall, dass das Deduplizierungs-Verhältnis über dem Deduplizierungs-Schwellwert liegt, wobei die Anzahl der n-ten Iterationen zunimmt und die Größe der Datenstichproben abnimmt, für den Fall, dass das Deduplizierungs-Verhältnis unter dem Deduplizierungs-Schwellwert liegt.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Datenverarbeitungssysteme und insbesondere eine erhöhte Effizienz bei Inline-Deduplizierungen.
  • Beschreibung verwandter Technik
  • In der Gesellschaft von heute sind Computersysteme allgemein verbreitet. Computersysteme findet man am Arbeitsplatz, zu Hause oder in der Schule. Zu Computersystemen können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten zählen. Einer dieser Prozesse ist das Deduplizieren von Daten. Daten-Deduplizierung bezieht sich auf die Verringerung und/oder Beseitigung redundanter Daten. Bei einem Daten-Deduplizierungsprozess werden doppelte Exemplare von Daten verringert oder beseitigt, wobei eine minimale Menge doppelter Exemplare bzw. ein einziges Exemplar der Daten zurückbleibt. Das Verwenden von Deduplizierungs-Prozessen bietet verschiedene Vorteile wie beispielsweise das Verringern der erforderlichen Speicherkapazität und einen verringerten Bedarf an Netzwerkbandbreite. Aufgrund dieser und anderer Vorteile hat sich die Deduplizierung in den letzten Jahren zu einem äußerst wichtigen technischen Gebiet im Bereich der Datenverarbeitungsspeichersysteme entwickelt.
  • Die GB 2 477 607 A betrifft ein Verfahren. Das Verfahren steuert einen Computer zur Datendeduplizierung, um eine Abtastsequenz für einen Teilblock von Daten zu berechnen und die Abtastsequenz zu verwenden, um einen gespeicherten Teilblock zu finden, der dem Computer zur Datendeduplizierung bekannt ist. Nach dem Auffinden eines gespeicherten Teilblocks, mit dem verglichen werden soll, beinhaltet das Verfahren die Steuerung des Computers zur Datendeduplizierung, um einen Ähnlichkeitsgrad (z.B. doppelt, sehr ähnlich, etwas ähnlich, sehr unähnlich, völlig unähnlich, x% ähnlich) zwischen dem Teilblock und dem gespeicherten Teilblock festzustellen und auf Grundlage des Ähnlichkeitsgrades zu steuern, ob und wie der Teilblock gespeichert und/oder übertragen wird. Der Ähnlichkeitsgrad kann auch steuern, ob und wie der Computer zur Datendeduplizierung eine Deduplizierungsdatenstruktur(en) aktualisiert, die Informationen zum Auffinden von Gruppen ähnlicher, auf die Reihenfolge bezogener Unterblöcke speichert.
  • Die US 7 814 074 B2 betrifft ein System und ein Verfahren zur Sicherstellung der Integrität von deduplizierten Datenobjekten, die in einem Speichersystem gespeichert sind. Ein Datenobjekt wird auf ein sekundäres Speichermedium kopiert, und es wird eine digitale Signatur, z. B. eine Prüfsumme, des Datenobjekts erzeugt. Anschließend wird eine Deduplizierung des Datenobjekts ausgeführt und das Datenobjekt in Chunks aufgeteilt. Beim anschließenden Zugriff auf das Datenobjekt werden die Chunks zusammengefügt und eine Signatur für das wieder zusammengesetzte Datenobjekt erzeugt. Das neu zusammengesetzte Datenobjekt wird bereitgestellt, wenn die neu erzeugte Signatur mit der ursprünglich erzeugten Signatur identisch ist, andernfalls wird eine Sicherungskopie des Datenobjekts von sekundären Speichermedien bereitgestellt.
  • Die US 2011 / 0 246 741 A1 betrifft ein Verfahren zur Datendeduplizierung, das ein kleines Hash-Digest-Wörterbuch im Schnellzugriffsspeicher verwendet. Das Verfahren beinhaltet das Empfangen von Kundendaten, das Aufteilen der Daten in kleinere Chunks und das Zuweisen von Hash-Werten zu jedem Chunk. Das Verfahren beinhaltet für jeden Chunk das Ausführen einer Suche nach einem doppelten Chunk durch Zugriff auf ein kleines Wörterbuch im Speicher mit dem Hash-Wert des Chunks. Wenn kein Eintrag vorhanden ist, wird das kleine Wörterbuch aktualisiert, um den Hash-Wert aufzunehmen und das Wörterbuch mit den frühest empfangenen Daten zu aktualisieren. Wenn ein Eintrag gefunden wird, wird der Hash-Wert des Eintrags mit dem Nachschlagewert verglichen, und wenn er übereinstimmt, werden Referenzdaten zurückgegeben und ein Eintragszähler wird inkrementiert. Bei Nichtübereinstimmung werden weitere Zugriffe versucht, z. B. mit zusätzlichen Indizes, die unter Verwendung des Hash-Werts berechnet werden. Kollisionen können eine Ersetzung von Einträgen auslösen, so dass einige anfänglich eingegebene Einträge ersetzt werden, wenn festgestellt wird, dass sie nicht die meisten sich wiederholenden Werte sind, z. B. auf Grundlage ihres Zählerwerts.
  • Die US 2012 / 0 016 845 A1 betrifft ein Verfahren zur Datendeduplizierung, das die folgenden Schritte beinhaltet. Zuerst das Segmentieren eines Originaldatensatzes in eine Mehrzahl von Datensegmenten. Als nächstes werden die Daten in jedem Datensegment in eine transformierte Datendarstellung transformiert, die eine bandartige Struktur für jedes Datensegment aufweist. Die Band-Typ-Struktur beinhaltet eine Mehrzahl von Bändern. Als nächstes wird ein erster Satz von Bändern ausgewählt, gruppiert und zusammen mit dem ursprünglichen Datensatz gespeichert. Der erste Satz von Bändern beinhaltet nicht identische transformierte Daten für jedes Datensegment. Als nächstes wird ein zweiter Satz von Bändern ausgewählt und gruppiert. Der zweite Satz von Bändern umfasst identische transformierte Daten für jedes Datensegment. Als Nächstes wird eine Hash-Funktion auf die transformierten Daten des zweiten Bandensatzes angewendet und dadurch transformierte Datensegmente erzeugt, die durch Hash-Funktionsindizes indiziert sind. Schließlich werden die Hash-Funktionsindizes und die transformierte Datendarstellung eines repräsentativen Datensegments in einer Deduplizierungsdatenbank gespeichert.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Mit dem Aufkommen von Cloud-Speicherdiensten, bei denen Benutzer Container und Objekte in einem Speicherbereich innerhalb der Cloud-Speicherdienste besitzen, erstellen, abändern und/oder löschen können, hat der Online-Zugriff auf den Speicherbereich über HTTP beträchtlich zugenommen. Die Benutzer solcher Cloud-Speicherdienste führen diese Operationen an Cloud-Speicherbereichen, die sie besitzen, üblicherweise mithilfe von Anwendungsprogrammierschnittstellen (application programming interfaces, APIs) aus, die von den Anbietern von Cloud-Speicherdiensten zugänglich gemacht werden. Obwohl das Zugänglichmachen der APIs für Benutzer sich als ziemlich hilfreich erwiesen hat, sind durch das Verwenden von APIs zum Ausführen von Operationen in Cloud-Speicherdiensten für die Dienstanbieter im Bereich der Daten-Deduplizierung zusätzliche Probleme entstanden. Folglich gibt es bei den Anbietern von Cloud-Speicherdiensten ein Bedürfnis, den Verbrauch des Speicherplatzes des Cloud-Speicherdienstes mithilfe von Deduplizierungs-Techniken zu verringern.
  • Die Erfindung betrifft ein Verfahren, ein System und ein Computerprogrammprodukt für erhöhte Effizienz bei Inline-Deduplizierungen in einer Datenverarbeitungsumgebung, deren Merkmalen in den entsprechenden Hauptansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
  • In einem Beispiel wird ein Verfahren für eine erhöhte Effizienz bei Inline-Deduplizierungen in einer Datenverarbeitungsumgebung bereitgestellt. Ein Verfahren weist das Berechnen, mithilfe einer Prozessoreinheit in der Datenverarbeitungsumgebung, von Hash-Werten in n-ten Iterationen für Datenstichproben aus Datenblöcken festgelegter Größe auf, die aus einem Objekt entnommen wurden, dessen Deduplizierung angefordert wurde (z.B. Inline-Deduplizierung). Das Verfahren weist außerdem für jede der n-ten Iterationen das Vergleichen der berechneten Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher auf. Die n-te Hash-Index-Tabelle wird für jede der Datenstichproben aus den Datenblöcken festgelegter Größe erstellt. Die n-te Hash-Index-Tabelle wird verlassen, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben aus den Datenblöcken festgelegter Größe entdeckt wird. Es wird festgestellt, dass es sich bei der Nichtübereinstimmung um ein einzigartiges Objekt handelt, und sie wird gespeichert. Der Client erhält im Hinblick auf das Erstellen eines Objekts in dem Objektspeicher eine Rückmeldung mit dem Status „Erfolg“. Als ein Teil der Offline-Nachbearbeitung wird der Hash-Wert für das gesamte Objekt berechnet. Eine Hash-Index-Stammtabelle wird mit dem berechneten Hash-Wert für das Objekt und den berechneten Hash-Werten für das einzigartige Objekt aktualisiert. Außerdem wird bei der Offline-Verarbeitung die n-te Indextabelle mit dem Hash-Wert bei der n-ten Iteration der Datenstichproben aus den Datenblöcken festgelegter Größe des neuen einzigartigen Objekts aktualisiert.
  • In einem weiteren Beispiel werden Systeme für eine erhöhte Effizienz bei Inline-Deduplizierungen in einer Datenverarbeitungsumgebung bereitgestellt. Ein System weist eine Prozessoreinheit auf, die für den Einsatz in einer Datenverarbeitungs-Speicherumgebung geeignet ist. Bei einer Ausführungsform ist der Prozessor dafür konfiguriert, in n-ten Iterationen Hash-Werte von Datenstichproben aus Datenblöcken festgelegter Größe zu berechnen, die aus einem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde. Für jede der n-ten Iterationen ist der Prozessor außerdem dafür konfiguriert, Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher zu vergleichen. Die n-te Hash-Index-Tabelle wird für jede der Datenstichproben aus den Datenblöcken festgelegter Größe erstellt. Die n-te Hash-Index-Tabelle wird verlassen, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben aus den Datenblöcken festgelegter Größe entdeckt wird. Es wird festgestellt, dass es sich bei der Nichtübereinstimmung um ein einzigartiges Objekt handelt, und sie wird gespeichert. Ein Hash-Wert für das gesamte Objekt wird berechnet. Eine Hash-Index-Stammtabelle wird mit dem berechneten Hash-Wert für das Objekt und den berechneten Hash-Werten für das einzigartige Objekt aktualisiert.
  • In einem weiteren Beispiel werden physische Computerspeichermedien bereitgestellt (z.B. eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination von diesen), die ein Computerprogrammprodukt für erhöhte Effizienz bei Inline-Deduplizierungen in einer Datenverarbeitungsumgebung aufweisen. Ein physisches Computerspeichermedium weist Computercode zum Berechnen, mithilfe einer Prozessoreinheit in der Datenverarbeitungsumgebung, von Hash-Werten in n-ten Iterationen für Datenstichproben aus den Datenblöcken festgelegter Größe auf, die aus einem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde. Das physische Computerspeichermedium weist außerdem für jede der n-ten Iterationen Computercode zum Vergleichen der berechneten Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher auf. Die n-te Hash-Index-Tabelle wird für jede der Datenstichproben aus den Datenblöcken festgelegter Größe erstellt. Die n-te Hash-Index-Tabelle wird verlassen, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben aus den Datenblöcken festgelegter Größe entdeckt wird. Es wird festgestellt, dass es sich bei der Nichtübereinstimmung um ein einzigartiges Objekt handelt, und sie wird gespeichert. Ein Hash-Wert für das gesamte Objekt wird berechnet. Eine Hash-Index-Stammtabelle wird mit dem berechneten Hash-Wert für das Objekt und mit den berechneten Hash-Werten für das einzigartige Objekt aktualisiert.
  • Figurenliste
  • Damit die Vorteile der Erfindung leicht zu verstehen sind, wird eine spezifischere Beschreibung der vorstehend kurz beschriebenen Erfindung durch Bezugnahme auf spezifische Ausführungsformen gegeben, die in den angefügten Zeichnungen veranschaulicht sind. Unter der Voraussetzung, dass diese Zeichnungen lediglich typische Ausführungsformen der Erfindung zeigen und daher nicht als deren Schutzumfang einschränkend anzusehen sind, wird die Erfindung mit zusätzlicher Genauigkeit und zusätzlichen Einzelheiten durch Verwenden der begleitenden Zeichnungen beschrieben und erläutert, die Folgendes zeigen:
    • 1 ist ein Blockschaltbild, das eine Computerspeicherumgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung realisiert sein können;
    • 2 ist ein Blockschaltbild, das eine Hardwarestruktur eines beispielhaften Datenspeichersystems in einem Computersystem veranschaulicht, in dem Aspekte der vorliegenden Erfindung realisiert sein können;
    • 3 ist ein Ablaufplan, der ein beispielhaftes Verfahren für erhöhte Inline-Deduplizierung mit Datenstichproben aus den Blöcken festgelegter Größe veranschau licht;
    • 4 ist ein Ablaufplan, der ein beispielhaftes Verfahren für erhöhte Effizienz bei Inline-Deduplizierungen veranschaulicht, und
    • 5 ist ein Ablaufplan, der ein weiteres beispielhaftes Verfahren für erhöhte Effizienz bei Inline-Deduplizierungen veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
  • Wie bereits erwähnt, treten mit dem Aufkommen von Cloud-Speicherdiensten im Bereich der Daten-Deduplizierung eine Reihe neuer Probleme für Anbieter von Cloud-Speicherdiensten auf, insbesondere, wenn die Anbieter von Cloud-Speicherdiensten die Inanspruchnahme ihres Speicherplatzes mithilfe von Techniken wie beispielsweise Deduplizierung verringern möchten. Ein Anbieter von Cloud-Speicherdiensten kann sich für das Verwenden von Nachbearbeitungs-Deduplizierung und/oder Inline-Deduplizierung entscheiden. Bei der Nachbearbeitungs-Deduplizierung werden neue Daten erst auf der Speichereinheit gespeichert, und dann werden die Daten von einem zu einem späteren Zeitpunkt ausgeführten Prozess auf der Suche nach Duplikaten analysiert. Der Vorteil besteht darin, dass das Warten auf Hash-Berechnungen und das Fertigstellen von Nachschlageoperationen in einem Hash-Tabellen-Index vor dem Speichern der Daten entfällt, wodurch sichergestellt wird, dass die Speicherleistung sich nicht verschlechtert. Inline-Deduplizierung ist der Prozess, bei dem Deduplizierungs-Hash-Berechnungen auf der Zieleinheit erstellt werden, während die Daten in Echtzeit auf der Einheit eingehen. Wenn die Einheit einen Block entdeckt, den die Einheit bereits in dem Speichersystem gespeichert hat, speichert die Einheit den neuen Block nicht, sondern verweist einfach auf den vorhandenen Block. Der Vorteil von Inline-Deduplizierung gegenüber Nachbearbeitungs-Deduplizierung besteht darin, dass Inline-Deduplizierung weniger Speicherplatz erfordert, da Daten nicht dupliziert werden. Da andererseits Hash-Berechnungen und Nachschlageoperationen in dem Hash-Tabellen-Index beträchtliche Zeitverzögerungen bedeuten, die zu einer deutlich langsameren Datenaufnahme führen, nimmt die Effizienz mit abnehmendem Sicherungsdurchsatz der Einheit ab.
  • Nach dem aktuellen Stand der Technik können Inline-Deduplizierungs-Techniken für Objektspeicher anwendbar sein. Der Hash-Wert des gesamten Objekts wird bei Laufzeit vor dem Ermitteln, ob das Objekt für eine Deduplizierung infrage kommt, und vor dem anschließenden Speichern des Objekts berechnet. Allgemein werden dadurch tendenziell Leistungseinbußen bewirkt, besonders im Hinblick auf Objektspeicher (NAS-Boxes (NAS, network-attached storage, Netzzugriffsspeicher), in denen Objekte gespeichert werden können), die mit Deduplizierungs-Technologie verknüpft sind. Beispielsweise ist es eine bekannte Tatsache, dass das Umwandeln in Hash-Werte eine im Hinblick auf Datenverarbeitung aufwendige Operation und äußerst speicherintensiv ist. Wenn bei einem bestimmten Verarbeitungsprozess Dateien/Objekte mit sehr hohem Speicherbedarf (z.B. Dateien mit einem Speicherbedarf im Gigabyte-Bereich (GB-Bereich)) vorkommen, bewirkt beim Verwenden der gegenwärtig in der Technik verfügbaren Inline-Deduplizierungs-Techniken das Umwandeln vollständiger Objekte in Hash-Werte (hashing) eine sehr große Leistungseinbuße.
  • Bei aktuellen Systemen für Inline-Deduplizierung über Objekte besteht die Technik des Berechnens des Fingerabdrucks (z.B. Hash-Werts) der über Hypertext Transfer Protocol (HTTP) empfangenen Datei im Vergleichen des berechneten Fingerabdrucks für das gesamte Objekt mit der Menge verfügbarer Fingerabdrücke der vorhandenen Dateien in dem Speichersystem. Das Puffern der vollständigen Datei (die mehrere Gigabyte groß sein kann), das Berechnen des Hash-Werts und das anschließende Verwenden einer Hash-Referenztabelle zum Vergleichen sind jedoch speicherintensive Prozesse. In der Hauptsache ist die Hash-Berechnung eine intensive Operation, und die verwendete Zeit ist bei großen Objekten beträchtlich (z.B. mehr als 10 Sekunden für Objekte, deren Größe 10 GB überschreitet). Verzögerungen durch Hash-Berechnungen können abhängig von den verwendeten Hash-Funktionen unterschiedlich ausfallen. Solche Verzögerungen sind bei Datenübertragungen über HTTP einfach nicht akzeptabel. Diese Verzögerungen führen zu Engpässen, die die Leistung beeinträchtigen und können in extremen Fällen zu Zuständen der Nichtverfügbarkeit eines Dienstes (Denial of Service - DoS) bei dem Internetdienst führen.
  • Daher besteht ein Bedarf an dem Bereitstellen der Fähigkeiten der schnellen Inline-Deduplizierung auf der Anwendungsebene. Mit der Weiterentwicklung von Cloud-Speicherdiensten und dem Zugriff auf den Speicher über HTTP, wobei die Daten durch Tausende von HTTP-Anforderungen pro Sekunde im Datenstrom zu dem Internet-Speicherdienst übertragen werden, ist das Bereitstellen von Deduplizierungs-Unterstützung auf der Anwendungsebene (Internetdienst) hochgradig entscheidend.
  • Um diese Unzulänglichkeiten zu beheben, wird mithilfe der Mechanismen der veranschaulichten Ausführungsform versucht, eine erhöhte Effizienz bei Inline-Deduplizierungen für eine Objektspeicheroperation bereitzustellen, indem die Fingerabdruckoperation zum frühestmöglichen Zeitpunkt auf intelligente Weise verkürzt wird. Bei einer Ausführungsform beginnen die Mechanismen mit dem Puffern des Objekts in der HTTP-Anforderung, anstatt zu warten, bis das gesamte Objekt im Objektspeicher empfangen wurde und dann die Umwandlung in einen Hash-Wert für das gesamte Objekt auszuführen. Die Mechanismen sollen die Inline-Deduplizierungs-Leistung dadurch verbessern, dass die auf Hash-Berechnungen für größere Objekte verwendete Zeit beträchtlich verringert wird und zu einem frühen Zeitpunkt ermittelt wird, ob das Objekt für eine Deduplizierung infrage kommt, während das Objekt über die Leitung an den Objektspeicher gesendet wird. Die Mechanismen der veranschaulichten Ausführungsformen sollen die Verwendung der wichtigsten zur Inline-Deduplizierung verwendeten Ressourcen (z.B. Zeit, CPU und/oder Speicher usw.) minimieren und die Latenzzeit für die HTTP-Clients verringern. Es wird ein optimiertes Verfahren vorgeschlagen, um das Objekt, das dedupliziert werden kann und Objekte, die nicht dedupliziert werden können, schneller zu ermitteln, indem Mechanismen einbezogen werden, durch die einzigartige Objekte (z.B. Objekte, die neu und aktuell nicht in dem Speicher vorhanden sind) zum frühestmöglichen Zeitpunkt entdeckt und gespeichert (z.B. auf einer Platte) werden, indem ein intelligenter, granulärer, iterativer Prozess des Entnehmens kleinerer Blöcke aus dem gesamten Objekt ausgeführt wird.
  • Bei einer Ausführungsform berechnen die Mechanismen mithilfe einer Prozessoreinheit in einer Datenverarbeitungsumgebung Hash-Werte in n-ten Iterationen für Datenstichproben aus Datenblöcken festgelegter Größe, die aus einem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde. (Es sollte beachtet werden, dass die Datenstichproben eine vorgegebene festgelegte Größe aufweisen können.) Das Verfahren weist außerdem für jede der n-ten Iterationen das Vergleichen berechneter Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher auf. Die n-te Hash-Index-Tabelle wird für jede der Datenstichproben aus den Datenblöcken festgelegter Größe erstellt. Die n-te Hash-Index-Tabelle wird verlassen, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben aus den Datenblöcken festgelegter Größe entdeckt wird. Bei Erkennen der Nichtübereinstimmung wird festgestellt, dass es sich bei der Nichtübereinstimmung um ein einzigartiges Objekt handelt, und das einzigartige Objekt wird gespeichert. Der Client erhält im Hinblick auf das Erstellen eines Objekts in dem Objektspeicher eine Rückmeldung mit dem Status „Erfolg“. Als ein Teil der Offline-Nachbearbeitung wird der Hash-Wert für das gesamte Objekt berechnet. Eine Hash-Index-Stammtabelle wird mit dem berechneten Hash-Wert bzw. den berechneten Hash-Werten für das Objekt und mit den berechneten Hash-Werten für das einzigartige Objekt aktualisiert. Außerdem wird bei der Offline-Verarbeitung die n-te Indextabelle mit dem Hash-Wert bei der n-ten Iteration der Datenstichproben aus den Datenblöcken festgelegter Größe des neuen einzigartigen Objekts aktualisiert.
  • Bei einer Ausführungsform werden die Hash-Werte für Datenstichproben festgelegter Größe aus Datenblöcken festgelegter Größe berechnet, wobei die Datenstichproben eine vorgegebene festgelegte Größe (z.B. eine Größe von
    1 Kilobyte (KB) für die Datenstichprobe) aufweisen und die Datenblöcke festgelegter Größe eine vorgegebene festgelegte Größe (z.B. eine Größe von 1 Megabyte (MB) für die Datenblöcke) aufweisen. Insbesondere berechnen die Mechanismen die Hash-Werte für die Datenstichproben festgelegter Größe, die die ersten Datenstichproben festgelegter Größe der Datenblöcke festgelegter Größe sind. Mit anderen Worten, die Mechanismen beginnen beim Berechnen der Hash-Werte für die Datenstichproben festgelegter Größe mit den ersten Datenstichproben festgelegter Größe (z.B. zuerst angefordert), in den Datenblöcken festgelegter Größe. Beispielsweise verarbeiten die Mechanismen bei jeder Iteration einen Block festgelegter Größe wie beispielsweise 1 Megabyte (MB) und entnehmen dabei eine Stichprobe der ersten 1 Kilobyte (KB) großen Datenstichprobe aus jedem der
    1 Megabyte (MB) großen Datenblöcke. Die Mechanismen können einen Hash-Wert für die Daten der Stichprobe festgelegter Größe berechnen und eine Übereinstimmung in einer Hash-Tabelle suchen, die der laufenden Iteration entspricht. Die Mechanismen fahren mit den vorstehend beschriebenen Prozessen fort, bis eine Übereinstimmung gefunden wird. Die Mechanismen können die Verarbeitung unterbrechen, wenn eine Nichtübereinstimmung gefunden wird, und können dann den Hash-Wert in die Hash-Tabelle für die n-te Iteration (HTi) einfügen. Die Mechanismen stellen fest, dass die Nichtübereinstimmung von Stichprobendaten anzeigt, dass es sich bei den Stichprobendaten um ein einzigartiges Datenobjekt handelt.
  • 1 zeigt ein beispielhaftes Computersystem 10, in dem Aspekte der vorliegenden Erfindung realisiert sein können. Das Computersystem 10 enthält die Zentraleinheit (CPU) 12, die mit einer oder mehreren Massenspeichereinheiten 14 und der Arbeitsspeichereinheit 16 verbunden ist. Zu den Massenspeichereinheiten können Festplattenlaufwerkeinheiten (hard disk drive devices, HDD devices) gehören, die in einer redundanten Anordnung unabhängiger Festplatten (redundant array of independent disks, RAID) konfiguriert sein können. Bei der Arbeitsspeichereinheit 16 kann es sich um Speicher wie beispielsweise elektrisch löschbaren programmierbaren Nur-Lese-Speicher (electrically erasable programmable read only memory, EEPROM) oder um eine Menge in Zusammenhang stehender Einheiten handeln. Die Arbeitsspeichereinheit 16 und die Massenspeichereinheit 14 sind mit der CPU 12 über ein signalführendes Medium verbunden. Die CPU 12 ist außerdem durch den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, an das eine Vielzahl weiterer Computersysteme 22 und 24 angeschlossen sind. Das Computersystem kann eine oder mehrere Prozessoreinheiten (z.B. die CPU 12) und weitere Arbeitsspeichereinheiten 16 für jede einzelne Komponente des Computersystems 10 enthalten.
  • 2 ist ein beispielhaftes Blockschaltbild 200, das gemäß der vorliegenden Erfindung eine Hardwarestruktur eines Datenspeichersystems in einem Computersystem zeigt. Zu sehen sind die Host-Computer 210, 220, 225, die jeweils als eine Zentraleinheit zum Ausführen von Datenverarbeitung als Teil eines Datenspeichersystems 200 dienen. Die Cluster-Hosts/Knoten (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erreichen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 sein. Eine Netzwerkverbindung (z.B. Speicher-Fabric-Verbindung) 260 kann eine Fibre-Channel-Fabric, ein Fibre-Channel-Punkt-zu-Punkt-Link und eine Fibre-Channel-over-Ethernet-Fabric oder ein Fibre-Channel-over-Ethernet-Punkt-zu-Punkt-Link, eine FICON- oder ESCON-E/A-Schnittstelle sein. Die Hosts 210, 220 und 225 können lokal angeordnet oder auf einen oder mehrere Standorte verteilt sein und können mit einer beliebigen Art von Fabric (oder Fabric-Channel) (nicht in 2 gezeigt) oder Netzwerkadapter 260 zu dem Speicher-Controller 240 ausgestattet sein wie beispielsweise Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, Drahtlos- oder Koaxialadaptern. Das Datenspeichersystem 200 ist dementsprechend mit einem geeigneten Fabric- (nicht in 2 gezeigt) oder Netzwerkadapter 260 für den Datenaustausch ausgestattet. Das Datenspeichersystem 200 wird in 2 mit den Speicher-Controllern 240 und den Cluster-Hosts 210, 220 und 225 gezeigt. Zu den Cluster-Hosts 210, 220 und 225 können auch Cluster-Knoten gehören.
  • Um ein klareres Verständnis der hier beschriebenen Verfahren zu erleichtern, wird der Speicher-Controller 240 in 2 als eine einzelne Verarbeitungseinheit mit einem Mikroprozessor 242, einem
    Systemarbeitsspeicher 243 und einem nichtflüchtigem Speicher („NVS“) 216 gezeigt, die nachfolgend ausführlicher beschrieben wird. Es wird darauf hingewiesen, dass bei einigen Ausführungsformen der Speicher-Controller 240 aus mehreren Verarbeitungseinheiten besteht, von denen jede über ihren eigenen Prozessorkomplex und Systemarbeitsspeicher verfügt, und die durch ein zweckbestimmtes Netzwerk in dem Datenspeichersystem 200 miteinander verbunden sind. Zudem können unter der Voraussetzung der Speicher-Fabric-Netzwerkverbindung 260 weitere Architektur-Konfigurationen eingesetzt werden, indem die Speicher-Fabric 260 verwendet wird, um mehrere Speicher-Controller 240 mit einem oder mehreren Cluster-Hosts 210, 220 und 225 zu verbinden, die mit jedem Speicher-Controller 240 verbunden sind.
  • Bei einigen Ausführungsformen enthält der Systemarbeitsspeicher 243 des Speicher-Controllers 240 Betriebssoftware 250 und speichert Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte in Verbindung mit dem Ausführen der Schritte und Verfahren der vorliegenden Erfindung auszuführen. Wie in 2 gezeigt, kann der Systemarbeitsspeicher 243 auch einen Cache 245 enthalten, der hier auch als „Cachespeicher“ bezeichnet wird, um „Schreibdaten“ und „Lesedaten“ zu puffern, wobei diese Begriffe sich auf Schreib/Lese-Anforderungen und die zugehörigen Daten beziehen. Bei einer Ausführungsform ist dem Cache 245 ein Platz in einer Einheit außerhalb des Systemarbeitsspeichers 243 zugewiesen, aber er bleibt dennoch für den Zugriff des Mikroprozessors 242 zugänglich und kann dazu dienen, neben dem Ausführen der hier beschriebenen Operationen zusätzliche Sicherheit vor Datenverlust zu bieten.
  • Bei einigen Ausführungsformen kann der Cache 245 mit einem flüchtigen Speicher und nichtflüchtigem Speicher realisiert und zum Zweck einer verbesserten Leistung des Datenspeichersystems 200 mit dem Mikroprozessor 242 über einen lokalen Bus (in 2 nicht gezeigt) verbunden sein. Der in dem Datenspeicher-Controller enthaltene NVS 216 (NVS = non-volatile storage, nicht flüchtiger Speicher) ist für den Zugriff des Mikroprozessors 242 zugänglich und dient als zusätzliche Unterstützung für Operationen und Ausführung, wie sie in anderen Figuren beschrieben werden. Der NVS 216 kann auch als „dauerhafter“ Cache oder „Cachespeicher“ bezeichnet sein und wird mit einem nichtflüchtigem Speicher realisiert, bei dem zum Erhalten der in ihm gespeicherten Daten gegebenenfalls eine externe Stromversorgung verwendet werden kann. Der NVS kann für beliebige zum Lösen der Aufgaben der vorliegenden Erfindung geeignete Zwecke in und mit dem Cache 245 gespeichert sein. Bei einigen Ausführungsformen wird der NVS 216 durch eine Notstromversorgung (in 2 nicht gezeigt) wie beispielsweise eine Batterie ausreichend mit Strom versorgt, um im Falle eines Stromausfalls die in ihm gespeicherten Daten des Datenspeichersystems 200 zu erhalten. Bei bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner als die oder gleich der Gesamtkapazität des Cache 245.
  • Der Speicher-Controller 240 kann ein Inline-Deduplizierungs-Modul 255, ein n-te-Hash-Index-Tabelle-Modul 257 sowie ein Hash-Index-Stammtabelle-Modul 259 enthalten. Das Inline-Deduplizierungs-Modul 255, das n-te-Hash-Index-Tabelle-Modul 257 sowie das Hash-Index-Stammtabelle-Modul 259 können gleichzeitig arbeiten und ein einziges vollständiges Modul bilden oder separate Module bilden. Das Inline-Deduplizierungsmodul 255, das n-te-Hash-Index-Tabelle-Modul 257 sowie das Hash-Index-Stammtabelle-Modul 259 können über etwas internen Speicherplatz (nicht gezeigt) verfügen, in dem der Überführungsfunktions-Algorithmus unverarbeitete, verarbeitete oder „halb verarbeitete“ Daten speichern kann. Das Inline-Deduplizierungs-Modul 255, das n-te-Hash-Index-Tabelle-Modul 257 sowie das Hash-Index-Stammtabelle-Modul 259 können in Verbindung mit jeder und allen Komponente(n) des Speicher-Controllers 240, den Hosts 210, 220, 225 sowie anderen Speicher-Controllern 240 und den Hosts 210, 220 und 225 arbeiten, die über die Speicher-Fabric 260 fernverbunden sein können. Das Inline-Deduplizierungs-Modul 255, das n-te-Hash-Index-Tabelle-Modul 257 sowie das Hash-Index-Stammtabelle-Modul 259 können strukturell ein einziges, vollständiges Modul sein, oder sie können in anderen einzelnen Modulen enthalten und/oder diesen zugehörig sein. Das Inline-Deduplizierungs-Modul 255, das n-te-Hash-Index-Tabelle-Modul 257 sowie das Hash-Index-Stammtabelle-Modul 259 können sich außerdem in dem Cache 245 oder in anderen Komponenten des Speicher-Controllers 240 befinden. Das n-te-Hash-Index-Tabelle-Modul 257 und das Hash-Index-Stammtabelle-Modul 259 können in jedem der Module eine oder mehrere Hash-Index-Tabellen enthalten und mit anderen Tabellen zusammenarbeiten.
  • Der Speicher-Controller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre-Channel-Protokolls zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller Speicher-Controller 240, einen nichtflüchtigen Mikroprogrammspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speicher-Controllers 240, den Cache 245 zum vorübergehenden Speichern (Puffern) von Daten sowie die
    Puffer 244 zum Unterstützen des Cache 245 beim Lesen und Schreiben von Daten, einen Steuerschalter 241 zum Steuern eines Protokolls zum Steuern der Datenübertragung zu dem oder von dem Prozessor-Zuordnungs-Modul 255 sowie das Überführungsfunktionsmodul 257, in dem Informationen festgelegt werden können. Zur Unterstützung bei den hier beschriebenen Verfahren und Schritten können mehrere Puffer 244 realisiert sein.
  • Bei einer Ausführungsform sind die Cluster-Hosts/Knoten 210, 220, 225 sowie der Speicher-Controller 240 durch einen Netzwerkadapter (dies könnte ein Fibre-Channel sein) 260 als Schnittstelle verbunden, d.h. über einen als „Fabric“ bezeichneten Schalter. Bei einer Ausführungsform kann der Betrieb des in 2 gezeigten Systems wie folgt beschrieben werden: Der Mikroprozessor 242 kann den Arbeitsspeicher 243 so steuern, dass dieser Befehlsinformationen von der Cluster-Host/Knoten-Einheit (physisch oder virtuell) 210 sowie Informationen zum Erkennen der Cluster-Host/Knoten-Einheit (physisch oder virtuell) 210 speichert. Der Steuerschalter 241, die Puffer 244, der Cache 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das Prozessor-Zuordnungsmodul 255 sowie das Überführungsfunktionsmodul 257 tauschen untereinander Daten aus und können getrennte Komponenten oder eine einzelne Komponente sein. Außerdem können einige oder alle der Komponenten wie beispielsweise die Betriebssoftware 250 zusammen mit dem Arbeitsspeicher 243 vorliegen. Alle Komponenten in den gezeigten Einheiten können zu für die vorliegende Erfindung geeigneten Zwecken miteinander verbunden sein und miteinander Daten austauschen.
  • Bei der vorliegenden Erfindung können die Komponenten aus 1 und 2 wie auch andere in dem Fachgebiet allgemein bekannte Cloud-Speichersystem-Architekturen (nicht gezeigt) für eine erhöhte Effizienz bei Inline-Deduplizierungen verwendet werden. Bei einer Ausführungsform, die hier lediglich beispielhaft angeführt wird, führen die Mechanismen der Komponenten aus 1 und 2 und/oder andere Cloud-Speichersystem-Architekturen (nicht gezeigt) die Deduplizierungs-Operation in „n-ten“ Iterationen aus. Bei jeder der Iterationen können die Mechanismen die Größe der Datenstichproben aus der festen Größe der aus der zu deduplizierenden Datei erhaltenen Datenblöcke inkrementieren. Die Iterationen werden so fortgesetzt, wie nachfolgend beschrieben. Zuerst wird eine Leseoperation an den ersten „N1‟-Bytes der Datenstichproben durchgeführt, es wird ein Hash-Wert für die Datenstichproben berechnet und eine Nachschlageoperation in einer als „HT1“ bezeichneten Hash-Tabelle ausgeführt (oder es werden ähnliche Mechanismen verwendet), wobei diese Hash-Tabelle mit dem Hash-Wert erstellt wird, der für die ersten „N1‟-Bytes der in dem Speichersystem bereits vorhandenen Dateien/Objekte berechnet wurde. Als Nächstes fahren die Mechanismen mit dem Sammeln der Daten aus der Anforderung zum Deduplizieren des gesamten Objekts fort, wenn eine Übereinstimmung zwischen dem berechneten Hash-Wert der Datenstichprobe aus dem Datenblock festgelegter Größe und einem Hash-Wert für eine in dem Speicher bereits vorhandene Datei bzw. ein solches Objekt gefunden wird. Dieses Sammeln und Entnehmen der Daten wird für die nächsten n-ten Iterationen ausgeführt, bis die Mechanismen „N2“-Bytes erhalten. Wieder wird eine Nachschlageoperation in einer Hash-Tabelle, als „HT2“ bezeichnet, ausgeführt (oder es werden ähnliche Mechanismen verwendet), wobei diese Hash-Index-Tabelle mit den Hash-Werten erstellt wird, die für die ersten „N2“-Bytes der in dem Speichersystem bereits vorhandenen Dateien/Objekte berechnet wurden. Die Mechanismen fahren wie oben angegeben mit dem Wiederholen der Prozesse fort und lesen N3, N4, N5... Nn-te Bytes des Objekts und schlagen in den Hash-Tabellen HT3, HT4, HT5... HTn-te nach. Es sollte beachtet werden, dass die Größe der n-ten Bytes der Datenblöcke in der Größe für jede der n-ten Iterationen festgelegt ist, damit die volle Größe des Objekts erreicht wird. Es können Muster aus historischen Daten von den Mechanismen ermittelt werden, um die Größe der Datenstichproben auf der Grundlage eines Deduplizierungs-Verhältnisses (deduplication ratio) zu inkrementieren. Wenn das Deduplizierungs-Verhältnis (z.B. Deduplizierungs-Objekte/Gesamtzahl der Objekte) hoch ist, nehmen die n-ten Iterationen ab, und wenn das Deduplizierungs-Verhältnis niedrig ist, nehmen die n-ten Iterationen zu.
  • Selbst nach dem Ausführen der oben beschriebenen Operationen können die Mechanismen, wenn sie bei der Nachschlageoperation in den Hash-Tabellen keine Nichtübereinstimmung finden und das Objekt ausgeschöpft ist (das bedeutet, dass das gesamte Objekt erfolgreich in kleinere Datenblöcke festgelegter Größe unterteilt wurde), trotzdem einen Hash-Wert für das vollständige Objekt bzw. das Objekt in seiner gesamten Größe berechnen und die Nachschlageoperation in einer Hash-Stammtabelle ausführen. Wenn die Mechanismen bei der Nachschlageoperation in der Hash-Stammtabelle eine Nichtübereinstimmung entdecken, schreiben die Mechanismen das Objekt in den Speicher (z.B. auf eine Platte) und nehmen einen Eintrag in der Hash-Stammtabelle (Hash-Tabelle mit den für die Dateien und Objekte in vollständiger Größe berechneten Hash-Werten) vor.
  • Wenn die Mechanismen bei irgendeinem der zuvor beschriebenen Schritte bei der Nachschlageoperation eine Nichtübereinstimmung entdecken, können die Mechanismen die Deduplizierungs-Verarbeitung beenden. Die Nichtübereinstimmung zeigt an, dass das Objekt und/oder die kleinen iterativen Datenblöcke festgelegter Größe einzigartig sind (z.B. Objekte, die neu und aktuell nicht in dem Speicher vorhanden sind). Beim Beenden des Deduplizierens können die Mechanismen das Objekt und/oder die kleinen iterativen Datenblöcke festgelegter Größe speichern und eine Erfolgsmeldung an den HTTP-Client senden. In einem Offline-Modus berechnen die Mechanismen den Hash-Wert des tatsächlichen Objekts in voller Größe und schreiben den Hash-Wert in eine tatsächliche Hash-Tabelle, die als eine Hash-Stammtabelle bezeichnet wird. Durch diesen Prozess wird es ermöglicht, dass die Mechanismen die Hash-Wert-Berechnung zu einem sehr frühen Zeitpunkt beenden können, wenn festgestellt wird, dass das Objekt einzigartig ist. Die Anzahl der Sprünge (hops) bis zum Erreichen der von einem Speicheranbieter maximal unterstützten Größe eines Objekts kann konfigurierbar sein, und die für die Inkremente der Objektgrößen bei jeder Iteration verwendete Funktion kann zum Optimieren der Leistung ebenfalls konfiguriert werden.
  • 3, die nächste, ist ein Ablaufplan, der ein beispielhaftes Verfahren 300 für erhöhte Inline-Deduplizierung mit Datenstichproben aus den Blöcken festgelegter Größe veranschaulicht. Wie zuvor beschrieben, veranschaulicht das
    Blockschaubild 300 das Berechnen der Hash-Werte für die Datenblöcke festgelegter Größe 302 (in dem Schaubild gezeigt als Block 1, bezeichnet als 302A, Block 2, bezeichnet als 302B, Block 3, bezeichnet als 302C sowie der untere, als 302D bezeichnete Block). Diese Datenblöcke festgelegter Größe 302 stellen das gesamte Objekt/die gesamte Datei dar, dessen/deren Deduplizierung angefordert wurde. Für jede Iteration der Datenblöcke festgelegter Größe 302 wird ein Hash-Wert für eine aus den Datenblöcken 302 entnommene Datenstichprobe (nicht gezeigt) berechnet. Eine entsprechende Hash-Index-Tabelle für jede Iteration der gegebenen Blockgröße wird zum Ausführen einer Nachschlageoperation verwendet. Eine Nachschlageoperation wird ausgeführt, um den berechneten Hash-Wert für jede der Datenstichproben der Datenblöcke festgelegter Größe mit bereits im Datenspeicher vorhandenen Objekten zu vergleichen. Beim Entdecken der ersten Nichtübereinstimmung wird die Hash-Tabelle verlassen, und es wird festgestellt, dass die Datenblöcke festgelegter Größe 302 einzigartig sind, und sie werden gespeichert (z.B. auf einer Platte). Eine Rückmeldung wird an den HTTP-Client gesendet. Außerdem wird in einem Offline-Modus ein Hash-Wert für das gesamte Objekt (aus dem die iterativen Datenblöcke 302 festgelegter Größe entnommen werden) berechnet, und die Index-Stammtabelle (HT-Stamm) wird aktualisiert. Es sollte beachtet werden, dass die Datenblöcke festgelegter Größe 302 von einem Benutzer oder durch Rückmeldungen, die historische Muster veranschaulichen, vorgegeben sein können.
  • 4, die nächste, ist ein Ablaufplan, der ein beispielhaftes Verfahren 400 für erhöhte Effizienz bei Inline-Deduplizierungen veranschaulicht. Das Verfahren 400 beginnt (Schritt 402). Das Verfahren 400 liest „Ni“-Bytes aus dem Objekt/der Datei, formt Datenstichproben aus Datenblöcken festgelegter Größe und berechnet einen Hash-Wert „Hi“ für die Datenstichproben aus den Datenblöcken festgelegter Größe, die aus dem Objekt/der Datei gelesen wurden (Schritt 404). Es sollte beachtet werden, dass diese Datenstichproben eine festgelegte Größe aufweisen und vorgegeben sein können. Das Verfahren 400 führt eine Nachschlageoperation in einer Hash-Tabelle „Ht-i-te“ der entsprechenden Datenstichproben aus Datenblöcken festgelegter Größe aus (Schritt 406). Das Verfahren 400 ermittelt, ob eine Übereinstimmung zwischen dem berechneten Hash-Wert der Datenstichproben aus Datenblöcken festgelegter Größe und einem Hash-Wert für eine bereits in dem Speicher vorhandene Datei bzw. ein solches Objekt gefunden wird (Schritt 408). Wenn keine Übereinstimmung gefunden wird (z.B. eine Nichtübereinstimmung, die anzeigt, dass die kleinen iterativen Datenstichproben aus Daten Datenblöcken festgelegter Größe einzigartig sind, was bedeutet, dass die Datenblöcke festgelegter Größe neu und aktuell nicht in dem Speicher vorhanden sind), speichern die Mechanismen das vollständige Objekt/die vollständige Datei und/oder Datenblöcke festgelegter Größe und berechnen im Hintergrund (z.B. in einem Offline-Modus) einen Hash-Wert für das vollständige und gesamte Objekt bzw. die Datei (Schritt 410). Das Verfahren 400 kann dann den Hash-Wert des vollständigen einzigartigen Objekts in der Hash-Stammtabelle „HT-Stamm“ speichern (Schritt 412), und das Verfahren 400 kann enden (Schritt 422).
  • Zurück zu Schritt 408: Wenn eine Übereinstimmung gefunden wird, ermittelt das Verfahren 400, ob das Ende des Objekts/der Datei erreicht wurde (Schritt 414). Wenn nicht, kehrt das Verfahren 400 zu dem Schritt 404 zurück und fährt mit dem Lesen von „Ni“-Bytes aus dem Objekt/der Datei fort und bildet Datenstichproben aus Datenblöcken festgelegter Größe und berechnet einen Hash-Wert „Hi“ für den Block Schritt (404). Wenn das Ende der Datei erreicht ist, berechnet das Verfahren 400 einen Hash-Wert für die gesamte Datei und führt eine Nachschlageoperation in einer Hash-Index-Stammtabelle „HT-Stamm“ aus
    (Schritt 416). Das Verfahren 400 ermittelt, ob eine Übereinstimmung zwischen dem berechneten Hash-Wert des gesamten/vollständigen Objekts bzw. der gesamten/vollständigen Datei und einem Hash-Wert für eine bereits in dem Speicher vorhandene Datei bzw. ein entsprechendes Objekt gefunden wird (Schritt 418). Wenn eine Übereinstimmung gefunden wird, kann das Verfahren 400 durch eine Verknüpfung mit der einzelnen Stammdatei eine Datenverringerung vornehmen (Schritt 420), und das Verfahren 400 kann enden (Schritt 422).
  • Wenn jedoch keine Übereinstimmung gefunden wird (z.B. zeigt eine Nichtübereinstimmung an, dass das Objekt und/oder die kleinen iterativen Datenstichproben aus Datenblöcken festgelegter Größe einzigartig sind, z.B. Objekte, die neu und aktuell nicht in dem Speicher vorhanden sind), speichert das Verfahren 400 den Hash-Wert des vollständigen einzigartigen Objekts in der Hash-Stammtabelle „HT-Stamm“ (Schritt 412), und das Verfahren 400 endet ebenfalls (Schritt 422).
  • 5 ist ein Ablaufplan, der ein weiteres beispielhaftes Verfahren 500 für erhöhte Effizienz bei Inline-Deduplizierungen veranschaulicht. Das Verfahren 500 beginnt (Schritt 502). Das Verfahren 500 liest „N“ Bytes (als 524 bezeichnet) aus dem Objekt/der Datei und berechnet einen Hash-Wert „Hi“ für eine festgelegte Stichproben-Blockgröße von zuerst M Bytes (Schritt 504) aus dem aktuell untersuchten Block der Größe N (wobei M kleiner ist als N). Beispielsweise wird der Hash-Wert bei jedem 10 MB großen Datenblöcke für 1 Kilobyte (KB) große Datenstichproben festgelegter Größe berechnet. Das Verfahren 500 führt eine Nachschlageoperation in einer Hash-Tabelle „Ht-i-te“ der entsprechenden Datenstichproben aus Datenblöcken festgelegter Größe aus (Schritt 506). Dieser Prozess wird bei jeder Iteration für die Datenstichproben aus den Datenblöcken festgelegter Größe ausgeführt. Das Verfahren 500 ermittelt, ob eine Übereinstimmung zwischen dem berechneten Hash-Wert der Datenstichproben aus Datenblöcken festgelegter Größe und einem Hash-Wert für eine bereits in dem Speicher vorhandene Datei bzw. ein solches Objekt gefunden wird (Schritt 508). Wenn keine Übereinstimmung gefunden wird (z.B. eine Nichtübereinstimmung, die anzeigt, dass die kleinen iterativen Datenstichproben aus Datenblöcken festgelegter Größe einzigartig sind, was bedeutet, dass die Datenblöcke festgelegter Größe neu und aktuell nicht in dem Speicher vorhanden sind), speichert das Verfahren 500 das vollständige Objekt/die vollständige Datei und/oder die Datenblöcke festgelegter Größe und berechnet im Hintergrund (z.B. in einem Offline-Modus) einen Hash-Wert für das gesamte und vollständige Objekt bzw. die vollständige und gesamte Datei (Schritt 510). Außerdem verlässt das Verfahren 500, wenn keine Übereinstimmung gefunden wird, die Nachschlageoperation bei der ersten gefundenen Nichtübereinstimmung. Das Verfahren 500 kann dann den Hash-Wert des vollständigen einzigartigen Objekts in der Hash-Stammtabelle „HT-Stamm“ speichern (Schritt 512), und das Verfahren 500 kann enden (Schritt 522).
  • Wenn eine Übereinstimmung gefunden wird, ermittelt das Verfahren 500, ob das Ende des Objekts/der Datei erreicht wurde (Schritt 514). Wenn ein übereinstimmender Hash-Wert für die gegebenen Datenstichproben aus Datenblöcken festgelegter Größe gefunden wird, stellt das Verfahren 500 sicher, dass der Hash-Wert aus der Hash-Index-Tabelle logisch und sequenziell zu derselben Datei in Beziehung steht wie der vorhergehende gefundene Hash-Wert. Wenn nicht, kehrt das Verfahren 500 zu dem Schritt 504 zurück und fährt mit dem Lesen von „N“-Bytes aus dem Objekt/der Datei fort und berechnet einen Hash-Wert „Hi“ für einen Block von M Bytes (Schritt 504). Wenn das Ende der Datei erreicht ist, berechnet das Verfahren 500 einen Hash-Wert für die gesamte Datei und führt eine Nachschlageoperation in einer Hash-Index-Stammtabelle „HT-Stamm“ aus
    (Schritt 516). Das Verfahren 500 ermittelt, ob eine Übereinstimmung zwischen dem berechneten Hash-Wert des gesamten, vollständigen Objekts bzw. der gesamten, vollständigen Datei und einem Hash-Wert für eine bereits in dem Speicher vorhandene Datei bzw. ein entsprechendes Objekt gefunden wird (Schritt 518). Wenn eine Übereinstimmung gefunden wird, kann das Verfahren 500 durch eine Verknüpfung mit der einzelnen Stammdatei eine Datenverringerung vornehmen (Schritt 520), und das Verfahren 500 kann enden (Schritt 522). Es sollte beachtet werden, dass das Objekt/die Datei dedupliziert wird, wenn sich herausstellt, dass alle Hash-Werte jeweils mit den Datenstichproben aus den Datenblöcken festgelegter Größe übereinstimmen. Außerdem kann zu jedem Zeitpunkt eine Rückmeldung an den Benutzer gesendet werden, die eine Übereinstimmung und/oder eine Nichtübereinstimmung anzeigt.
  • Wenn jedoch keine Übereinstimmung gefunden wird (z.B. zeigt eine Nichtübereinstimmung an, dass das Objekt und/oder die kleinen iterativen festgelegten Datenblöcke einzigartig sind, z.B. Objekte, die neu und aktuell nicht in dem Speicher vorhanden sind), speichert das Verfahren 500 den Hash-Wert des vollständigen einzigartigen Objekts in der Hash-Stammtabelle „HT-Stamm“ (Schritt 512), und das Verfahren 500 endet ebenfalls (Schritt 522).
  • Das folgende Szenario soll lediglich als Beispiel in Betracht gezogen werden. Vorstellbar wäre, dass die Größe der vollständigen Datei
    1 100 240 234 Byte beträgt (sie ist z.B. größer als 1 GB). 1) Die Mechanismen sammeln nur die ersten N1 = 1000 Bytes (sie bilden einen kleineren Block) und berechnen dann einen Hash-Wert einer Datenstichprobe für den kleinen Datenblock festgelegter Größe N1. Es wird eine Nachschlageoperation in der Hash-Tabelle H1000 ausgeführt, die mit Fingerabdrücken (Hash-Werten) der ersten 1000 Bytes der in dem Speicher vorhandenen Objekte gefüllt ist. Wenn die Mechanismen eine Nichtübereinstimmung zwischen den berechneten Hash-Werten für den kleinen Block entdecken, tragen die Mechanismen einen neuen Fingerabdruck (Hash-Wert) in die Hash-Tabelle H1000 ein und fahren mit der Verarbeitung fort. 2) Bei dem zweiten iterativen Schritt sammeln die Mechanismen N2 = 10 000 (N1*10) Bytes und berechnen dann einen Hash-Wert einer Datenstichprobe für den Datenblock festgelegter Größe, N2. Es wird wieder eine Nachschlageoperation durchgeführt, indem der berechnete Hash-Wert des kleineren Blocks N2 mit Fingerabdrücken (Hash-Werten) der ersten 1000 Bytes der in dem Speicher vorhandenen Objekte verglichen wird, die wie vorstehend beschrieben in die Hash-Tabelle H10000 eingetragen sind. 3) Die Mechanismen führen die vorstehend beschriebenen Schritte mit N3 = 100 000 (N2*10), N4 = 1 000 000 (N3*10) usw. fort, bis bei den Nachschlageoperationen eine Übereinstimmung und/oder eine Nichtübereinstimmung entdeckt wird.
  • Bei einem weiteren Beispiel wäre vorstellbar, dass die Größe der vollständigen Datei 1 100 240 234 Byte beträgt (sie ist z.B. größer als 1 GB). 1) Die Mechanismen sammeln möglicherweise nur die ersten N1 = 1000 Bytes, die eine Datenstichprobe N1 (z.B. N1 = 1000 Bytes) eines vorgegebenen Datenblocks M1 festgelegter Größe (z.B. M1 = 1 MB) bilden, und berechnen anschließend einen Hash-Wert der Datenstichprobe N1 für den Datenblock M1 festgelegter Größe. Es wird eine Nachschlageoperation in der Hash-Tabelle H1000 ausgeführt, die mit Fingerabdrücken (Hash-Werten) der ersten H Bytes (z.B. H = 1000 Bytes) der in dem Speicher vorhandenen Objekte gefüllt ist. Wenn die Mechanismen eine Nichtübereinstimmung zwischen den berechneten Hash-Werten der Datenstichproben N1 des Datenblocks M1 festgelegter Größe entdecken, tragen die Mechanismen einen neuen Fingerabdruck (Hash-Wert) in die Hash-Tabelle H1000 ein und fahren mit der Verarbeitung fort. 2) Bei dem zweiten iterativen Schritt sammeln die Mechanismen die ersten N2 Bytes (z.B. N2 = 1000 Bytes), die eine Datenstichprobe N2 eines zweiten Datenblocks M2 festgelegter Größe (z.B.
    M2 = 1 MB) bilden, und berechnen anschließend einen Hash-Wert der Datenstichprobe N2 für den zweiten Datenblock M2 festgelegter Größe. Es wird wieder eine Nachschlageoperation durchgeführt, indem der berechnete Hash-Wert der Datenstichprobe N2 für den zweiten Datenblock M2 mit Fingerabdrücken (Hash-Werten) der ersten H Bytes (z.B. 1000 Bytes) der in dem Speicher vorhandenen Objekte verglichen wird, die wie vorstehend beschrieben in die Hash-Tabelle H1000 eingetragen sind. 3). Die Mechanismen führen die vorstehend beschriebenen Schritte für n Iterationen an M Datenblöcken festgelegter Größe fort, bis bei den Nachschlageoperationen eine Übereinstimmung und/oder eine Nichtübereinstimmung entdeckt wird.
  • Bei einem anderen Beispiel können die Mechanismen bei jeder Iteration einen Block festgelegter Größe wie beispielsweise 1 Megabyte (MB) verarbeiten und dabei eine Datenstichprobe festgelegter Größe (z.B. die ersten 1 Kilobyte (KB)) aus jedem der festgelegten (z.B. 1 Megabyte (MB)) Datenblöcke entnehmen. Die Mechanismen können einen Hash-Wert für die Daten der Stichprobe festgelegter Größe berechnen und eine Übereinstimmung in einer Hash-Tabelle suchen, die der laufenden Iteration entspricht. Die Mechanismen fahren mit diesem Prozess fort, bis eine Übereinstimmung gefunden wird. Die Mechanismen unterbrechen, wenn eine Nichtübereinstimmung gefunden wird, und fügen den Hash-Wert in die Hash-Tabelle für die n-te Iteration (HTi) ein. Die Mechanismen stellen fest, dass die Nichtübereinstimmung von Stichprobendaten anzeigt, dass es sich bei den Stichprobendaten um ein einzigartiges Datenobjekt handelt.
  • Bei einer alternativen Ausführungsform und hier nur beispielhaft angeführt, kann die bei jeder Iteration untersuchte festgelegte Datenblockgröße logarithmisch vergrößert werden; beispielsweise 1 MB, 2 MB, 4 MB, 8 MB, 16 MB, ... n-te MB, und bei jeder Iteration werden die ersten N Bytes (z.B. 1000 Bytes) Daten, die eine Datenstichprobe bilden, entnommen und in einen Hash-Wert umgewandelt, um in der entsprechenden Hash-Tabelle bei dieser Iteration eine Übereinstimmung zu finden. Die festgelegten Datenstichproben behalten dieselbe vorgegebene Größe bei jedem Datenblock festgelegter Größe bei jeder Iteration bei. Die Mechanismen können die Deduplizierungs-Operation beenden, sobald entweder eine Übereinstimmung gefunden wird oder das untersuchte Datenobjekt ausgeschöpft ist. Alternativ kann der Mechanismus damit fortfahren, den bei jeder Iteration berechneten Hash-Wert in die entsprechende Hash-Tabelle („HTi“ bei n-ten Iteration) einzufügen.
  • Es sollte beachtet werden, dass durch die Mechanismen der veranschaulichten Ausführungsformen eine anpassbare Inline-Deduplizierungs-Operation bereitgestellt wird. Die Mechanismen können selbstanpassend sein, indem sie aus dem Muster lernen, das die Mechanismen den kurz zuvor erfolgten Beobachtungen entnehmen und an diesen beobachten. Mit anderen Worten: Wenn das Deduplizierungs-Verhältnis (Deduplizierungs-Objekte/Gesamtzahl der Objekte) hoch ist, können weniger Sprünge (hops) vorgenommen werden, um die volle Größe des Objekts zu erreichen, während die Anzahl der Sprünge bei abnehmendem Deduplizierungs-Verhältnis erhöht werden kann. In einem extremen Fall werden möglicherweise nur die ersten N (z.B. 1000) Bytes geprüft, und wenn eine Übereinstimmung gefunden wird, wird der Hash-Wert des vollständigen Objekts berechnet und ansonsten das Objekt als ein einzigartiges Objekt behandelt. Folglich kann die Art der zu verwendenden Mechanismen (z.B. Algorithmus) flexibel sein und je nach dem Muster der in einem Speichersystem gespeicherten Objekte angepasst werden.
  • Folglich wird durch die vorstehend beschriebenen Mechanismen mithilfe des Analysierens der jüngeren Geschichte empfangener Objekte eine schnellere, anpassbare Inline-Deduplizierung erreicht. Kleinere Sprünge treten auf, wenn ein Deduplizierungs-Verhältnis (d. h. Deduplizierungs-Objekte/Gesamtzahl der untersuchten Objekte) niedrig ist (z.B. wenn mehr einzigartige Objekte gefunden werden, weil die Anzahl der Deduplizierungs-Objekte geringer ist als die Gesamtzahl der gefundenen Objekte), und größere Sprünge treten auf, wenn das Deduplizierungs-Verhältnis hoch ist (z.B. wenn weniger einzigartige Objekte gefunden werden, weil die Anzahl der Deduplizierungs-Objekte größer ist als die Gesamtzahl der gefundenen Objekte). Ein vorgegebener Deduplizierungs-Schwellenwert kann zum Festlegen einer Minimal/Maximal-Menge und/oder zum Vergleichen, Beurteilen und Ermitteln des Verhältnisses verwendet werden. Das Deduplizierungs-Verhältnis trägt dazu bei, die für das Deduplizieren von Objekten erforderliche Anzahl von Nachschlageoperationen zu verringern, und verbessert die Möglichkeiten, auf eine schnelle und beschleunigtere Art zu ermitteln, welche Objekte einzigartig sind. Dadurch wird es ermöglicht, das unnötige Berechnen von Hash-Werten für das vollständige Objekt während der Laufzeit für einzigartige Objekte zu vermeiden. Bei einer Ausführungsform können die Mechanismen sich mithilfe von Mustern von Objekten selbst anpassen, die sie beobachten und aus erhaltenen Rückmeldungen ermitteln, wodurch größere Sprünge gemacht werden, wenn das Deduplizierungs-Verhältnis (Deduplizierungs-Objekte/Gesamtzahl der Objekte) hoch ist (wenn z.B. das Deduplizierungs-Verhältnis höher als ein vorgegebener Schwellenwert ist, nehmen die n-ten Iterationen ab) und kleinere Sprünge gemacht werden, wenn das Deduplizierungs-Verhältnis niedrig ist (wenn z.B. das Deduplizierungs-Verhältnis kleiner als ein vorgegebener Schwellenwert ist, nehmen die n-ten Iterationen zu). Mit anderen Worten, die n-ten Iterationen können mit zunehmendem Deduplizierungs-Verhältnis abnehmen, und die n-ten Iterationen können mit abnehmendem Deduplizierungs-Verhältnis zunehmen. Dies trägt dazu bei, für die Deduplizierung erforderliche Berechnungen während der Laufzeit zu minimieren und die Reaktionslatenz zu verringern, wodurch die Deduplizierungs-Engine/das Deduplizierungs-Modul schneller arbeitet.
  • Wie vorstehend beschrieben, werden durch verschiedene Ausführungsformen Verfahren, Systeme und Computerprogrammprodukte für eine erhöhte Effizienz bei Inline-Deduplizierungen in einer Datenverarbeitungsumgebung bereitgestellt. Die Mechanismen der Ausführungsformen berechnen mithilfe einer Prozessoreinheit in einer Datenverarbeitungsumgebung Hash-Werte in n-ten Iterationen für festgelegte Datenblöcke, die aus einem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde. Die Ausführungsformen weisen weiter für jede der n-ten Iterationen das Vergleichen der berechneten Hash-Werte für die Datenblöcke festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher auf. Die n-te Hash-Index-Tabelle wird für jeden der festgelegten Datenblöcke erstellt. Die n-te Hash-Index-Tabelle wird verlassen, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für einen der festgelegten Datenblöcke entdeckt wird. Es wird festgestellt, dass es sich bei der Nichtübereinstimmung um ein einzigartiges Objekt handelt, und sie wird gespeichert. Der Client erhält im Hinblick auf das Erstellen eines Objekts in dem Objektspeicher eine Rückmeldung mit dem Status „Erfolg“. Als ein Teil der Offline-Nachbearbeitung wird der Hash-Wert für das gesamte Objekt berechnet. Eine Hash-Index-Stammtabelle wird mit dem berechneten Hash-Wert für das Objekt und den berechneten Hash-Werten für das einzigartige Objekt aktualisiert. Außerdem wird bei der Offline-Verarbeitung die n-te Indextabelle mit dem Hash-Wert bei der n-ten Iteration der festgelegten Datenblöcke des neuen einzigartigen Objekts aktualisiert.
  • Wie Fachleute verstehen werden, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, speicherresidente Software, Mikrocode usw.) oder die einer Ausführungsform annehmen, bei der Software- und Hardwareaspekte kombiniert werden, die hier alle allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet sein können. Aspekte der vorliegenden Erfindung können außerdem in der Form eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien mit in dem Medium enthaltenem computerlesbarem Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein physisches computerlesbares Speichermedium sein. Ein physisches computerlesbares Speichermedium kann beispielsweise, aber ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, Kristall-, Polymer-, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede beliebige Kombination von diesen sein. Beispiele für ein physisches computerlesbares Speichermedium sind unter anderem, aber ohne darauf beschränkt zu sein: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM), ein Flash-Speicher, ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination von diesen. Im Zusammenhang dieses Dokuments kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm oder Daten für die Nutzung durch ein Anweisungen ausführendes System, eine solche Vorrichtung oder Einheit oder für die Nutzung in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
  • Auf einem computerlesbaren Medium enthaltener Computercode kann mithilfe jedes geeigneten Mediums übermittelt werden, darunter, aber ohne darauf beschränkt zu sein, ein drahtloses oder drahtgebundenes Medium, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder jede geeignete Kombination von diesen. Computercode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen statischen Sprache wie beispielsweise der Programmiersprache „C“ oder einer anderen, ähnlichen Programmiersprache geschrieben sein. Der Computercode kann vollständig oder teilweise auf dem Computer des Benutzers, als ein eigenständiges Softwarepaket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Bei dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch ein beliebiges Netzwerk oder Datenübertragungssystem, darunter, aber ohne darauf beschränkt zu sein, ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN) oder ein konvergiertes Netzwerk, verbunden sein, oder es kann eine Verbindung mit einem externen Computer hergestellt werden (zum Beispiel mithilfe eines Internetdienstanbieters über das Internet).
  • Aspekte der vorliegenden Erfindung wurden vorstehend mit Bezug auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammanweisungen realisiert werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, so dass die Anweisungen, die durch den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Ausführen der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds spezifizierten Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Produkt samt der Anweisungen herstellen, mithilfe derer die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebene Funktion/Handlung realisiert wird. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Betriebsschritten zu bewirken, um einen auf einem Computer implementierten Prozess zu schaffen, so dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Verfahren zur Realisierung der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen bereitstellen.
  • Der Ablaufplan und die Blockschaubilder in den vorstehenden Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Beziehung kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, Segment oder einen Codeabschnitt enthalten, das/der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion(en) aufweist. Es sollte auch beachtet werden, dass bei einigen alternativen Realisierungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren angegeben auftreten können. Zum Beispiel können zwei aufeinander folgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können in Abhängigkeit von der betreffenden Funktionalität manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist ebenfalls zu beachten, dass jeder Block der Blockschaubilder und/oder des Ablaufplans sowie Blockkombinationen in den Blockschaubildern und/oder dem Ablaufplan durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen realisiert werden können.
  • Obwohl eine oder mehrere Ausführungsformen der Erfindung ausführlich veranschaulicht werden, werden Fachleute verstehen, das Abänderungen und Anpassungen dieser Ausführungsformen vorgenommen werden können, ohne von dem in den folgenden Ansprüchen dargelegten Schutzumfang der vorliegenden Erfindung abzuweichen.

Claims (15)

  1. Verfahren für erhöhte Effizienz bei Inline-Deduplizierungen durch eine Prozessoreinheit in einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist: Unterteilung eines Objekts in mehrere Datenblöcke festgelegter Größe, aus welchen Datenstichproben einer vorgegebenen festgelegten Größe entnehmbar sind; Berechnen von Hash-Werten der Datenstichproben aus Datenblöcken festgelegter Größe in n-ten Iterationen, die aus dem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde; für jede der n-ten Iterationen Vergleichen der berechneten Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in einem Speicher, wobei die n-te Hash-Index-Tabelle für jede der Datenstichproben erstellt wird, die zu den Datenblöcken festgelegter Größe gehören; Verlassen der n-ten Hash-Index-Tabelle, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben entdeckt wird, wobei festgestellt wird, dass das Objekt bei einer Nichtübereinstimmung ein einzigartiges Objekt ist, und das Objekt gespeichert wird, und Berechnen eines Hash-Werts für das Objekt, wobei eine Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt aktualisiert wird; Berechnen eines Hash-Werts für das Objekt, wenn ein Dateiende des Objekts erreicht wurde und Prüfung, ob der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist; Verringern der zu speichernden Daten durch Erzeugen einer Verknüpfung mit einer Stammdatei, wenn der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist, ansonsten Aktualisierung der Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt: Berechnung eines Deduplizierungs-Verhältnisses und Vergleichen mit einem festgelegten Deduplizierungs-Schwellwert, wobei die Anzahl der n-ten Iterationen abnimmt und die Größe der Datenstichproben zunimmt, für den Fall, dass das Deduplizierungs-Verhältnis über dem Deduplizierungs-Schwellwert liegt, wobei die Anzahl der n-ten Iterationen zunimmt und die Größe der Datenstichproben abnimmt, für den Fall, dass das Deduplizierungs-Verhältnis unter dem Deduplizierungs-Schwellwert liegt.
  2. Verfahren nach Anspruch 1, wobei das Berechnen der Hash-Werte der Datenstichproben aus den Datenblöcken festgelegter Größe ein Berechnen der Hash-Werte von Datenstichproben festgelegter Größe beinhaltet.
  3. Verfahren nach Anspruch 2, wobei das Berechnen der Hash-Werte der Datenstichproben aus den Datenblöcken festgelegter Größe ein Berechnen der Hash-Werte der Datenstichproben festgelegter Größe beginnend mit den Datenstichproben festgelegter Größe beinhaltet, die sich in den Datenblöcken festgelegter Größe an erster Stelle befinden.
  4. Verfahren nach Anspruch 1, wobei das Berechnen der Hash-Werte der Datenstichproben aus den Datenblöcken festgelegter Größe ein Berechnen der Hash-Werte der Datenstichproben aus den Datenblöcken festgelegter Größe beinhaltet, die eine vorgegebene festgelegte Größe aufweisen.
  5. Verfahren nach Anspruch 1, das außerdem ein Ermitteln einer Vielzahl von Mustern aus historischen Daten auf der Grundlage eines Deduplizierungs-Verhältnisses beinhaltet, wobei die n-ten Iterationen mit zunehmendem Deduplizierungs-Verhältnis abnehmen und die n-ten Iterationen mit abnehmendem Deduplizierungs-Verhältnis zunehmen.
  6. Verfahren nach Anspruch 1, das außerdem beim Fertigstellen des Entnehmens der Datenblöcke festgelegter Größe in dem Objekt und Ausführen des Vergleichens ohne Erkennen einer Nichtübereinstimmung in der n-ten Hash-Index-Tabelle ein Ausführen des Vergleichens in der Hash-Index-Stammtabelle für den berechneten Hash-Wert des Objekts beinhaltet.
  7. Verfahren nach Anspruch 4, das außerdem beim Erkennen einer Nichtübereinstimmung in der Hash-Index-Stammtabelle ein Speichern des Objekts und eine Aktualisierung der Hash-Index-Stammtabelle beinhaltet.
  8. Verfahren nach Anspruch 5, das außerdem beim Erkennen einer Nichtübereinstimmung in der Hash-Index-Stammtabelle oder der n-ten Hash-Index-Tabelle während des Vergleichens ein Beenden der Inline-Deduplizierung und ein Senden einer Erfolgsmeldung an einen Client beinhaltet.
  9. Verfahren nach Anspruch 1, das außerdem ein Ausführen des Berechnens eines Hash-Werts für das Objekt im Offline-Modus beinhaltet.
  10. Verfahren nach Anspruch 1, das weiter in Verbindung mit dem Vergleichen beinhaltet, dass, wenn für die berechneten Hash-Werte der Datenstichproben aus den Datenblöcken festgelegter Größe eine Übereinstimmung mit dem entsprechenden Hash-Wert der vorhandenen Objekte in dem Speicher gefunden wird, das Entnehmen von Daten aus dem Objekt zum Erstellen einer n-ten Datenstichprobe aus den Datenblöcken festgelegter Größe fortgesetzt wird.
  11. System für eine erhöhte Effizienz bei Inline-Deduplizierungen in einer Datenverarbeitungsumgebung, wobei das System aufweist: eine für den Einsatz in der Datenverarbeitungsumgebung geeignete Prozessoreinheit, wobei die Prozessoreinheit in der Lage ist zum: Berechnen von Hash-Werten von Datenstichproben aus Datenblöcken festgelegter Größe in n-ten Iterationen, die aus einem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde, für jede der n-ten Iterationen Vergleichen der berechneten Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe in einer n-ten Hash-Index-Tabelle mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher, wobei die n-te Hash-Index-Tabelle für jede der Datenstichproben erstellt wird, die zu den Datenblöcken festgelegter Größe gehören, Verlassen der n-ten Hash-Index-Tabelle beim Entdecken einer Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben aus den Datenblöcken festgelegter Größe während des Vergleichens, wobei festgestellt wird, dass das Objekt bei einer Nichtübereinstimmung ein einzigartiges Objekt ist, und das Objekt gespeichert wird, und Berechnen eines Hash-Werts für das Objekt, wobei eine Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt aktualisiert wird; Berechnen eines Hash-Werts für das Objekt, wenn ein Dateiende des Objekts erreicht wurde und Prüfung, ob der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist; Verringern der zu speichernden Daten durch Erzeugen einer Verknüpfung mit einer Stammdatei, wenn der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist, ansonsten Aktualisierung der Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt: Berechnung eines Deduplizierungs-Verhältnisses und Vergleichen mit einem festgelegten Deduplizierungs-Schwellwert, wobei die Anzahl der n-ten Iterationen abnimmt und die Größe der Datenstichproben zunimmt, für den Fall, dass das Deduplizierungs-Verhältnis über dem Deduplizierungs-Schwellwert liegt, wobei die Anzahl der n-ten Iterationen zunimmt und die Größe der Datenstichproben abnimmt, für den Fall, dass das Deduplizierungs-Verhältnis unter dem Deduplizierungs-Schwellwert liegt.
  12. System nach Anspruch 11, wobei die Prozessoreinheit außerdem zum Inkrementieren der Größe der Datenblöcke festgelegter Größe für jede der n-ten Iterationen geeignet ist, damit die volle Größe des Objekts erreicht wird, und/oder wobei die Prozessoreinheit außerdem zum Ermitteln einer Vielzahl von Mustern aus historischen Daten zum Inkrementieren auf der Grundlage eines Deduplizierungs-Verhältnisses geeignet ist, wobei die n-ten Iterationen mit zunehmendem Deduplizierungs-Verhältnis abnehmen, und die n-ten Iterationen mit abnehmendem Deduplizierungs-Verhältnis zunehmen.
  13. System nach Anspruch 11, wobei die Prozessoreinheit außerdem in der Lage ist, beim Fertigstellen des Entnehmens der Datenstichproben aus den Datenblöcken festgelegter Größe in dem Objekt und Ausführen des Vergleichens ohne Entdecken einer Nichtübereinstimmung in der n-ten Hash-Index-Tabelle ein Vergleichen in der Hash-Index-Stammtabelle für den berechneten Hash-Wert des Objekts auszuführen.
  14. Computerprogrammprodukt für erhöhte Effizienz bei Inline-Deduplizierungen durch eine Prozessoreinheit in einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darauf gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt zum Berechnen von Hash-Werten für Datenstichproben aus Datenblöcken festgelegter Größe in n-ten Iterationen, die aus einem Objekt entnommen wurden, dessen Inline-Deduplizierung angefordert wurde; für jede der n-ten Iterationen einen zweiten ausführbaren Abschnitt, der in einer n-ten Hash-Index-Tabelle die berechneten Hash-Werte für die Datenstichproben aus den Datenblöcken festgelegter Größe mit einem entsprechenden Hash-Wert vorhandener Objekte in dem Speicher vergleicht, wobei die n-te Hash-Index-Tabelle für jede der Datenstichproben erstellt wird, die zu den Datenblöcken festgelegter Größe gehören; einen dritten ausführbaren Abschnitt, der die n-te Hash-Index-Tabelle verlässt, wenn während des Vergleichens eine Nichtübereinstimmung der berechneten Hash-Werte für eine der Datenstichproben aus den Datenblöcken festgelegter Größe entdeckt wird, wobei festgestellt wird, dass das Objekt bei einer Nichtübereinstimmung ein einzigartiges Objekt ist, und das Objekt gespeichert wird, und einen vierten ausführbaren Abschnitt, der einen Hash-Wert für das Objekt berechnet, wobei eine Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt aktualisiert wird; einen fünften ausführbaren Abschnitt zum Berechnen eines Hash-Werts für das Objekt, wenn ein Dateiende des Objekts erreicht wurde und zur Prüfung, ob der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist; zur Verringern der zu speichernden Daten durch Erzeugen einer Verknüpfung mit einer Stammdatei, wenn der berechnete Hash-Wert bereits in der Hash-Index-Stammtabelle enthalten ist, ansonsten Aktualisierung der Hash-Index-Stammtabelle mit dem berechneten Hash-Wert für das Objekt: zur Berechnung eines Deduplizierungs-Verhältnisses und Vergleichen mit einem festgelegten Deduplizierungs-Schwellwert, wobei die Anzahl der n-ten Iterationen abnimmt und die Größe der Datenstichproben zunimmt, für den Fall, dass das Deduplizierungs-Verhältnis über dem Deduplizierungs-Schwellwert liegt, wobei die Anzahl der n-ten Iterationen zunimmt und die Größe der Datenstichproben abnimmt, für den Fall, dass das Deduplizierungs-Verhältnis unter dem Deduplizierungs-Schwellwert liegt.
  15. Computerprogrammprodukt nach Anspruch 14, das außerdem einen fünften ausführbaren Abschnitt zum Ausführen eines der folgenden Punkte enthält: Inkrementieren der Größe der Datenstichproben aus den Datenblöcken festgelegter Größe für jede der n-ten Iterationen, damit die volle Größe des Objekts erreicht wird, Ermitteln einer Vielzahl von Mustern aus historischen Daten für das Inkrementieren auf der Grundlage eines Deduplizierungs-Verhältnisses, wobei die n-ten Iterationen mit zunehmendem Deduplizierungs-Verhältnis abnehmen, und die n-ten Iterationen mit abnehmendem Deduplizierungs-Verhältnis zunehmen, und beim Fertigstellen des Entnehmens der Datenstichproben aus den Datenblöcken festgelegter Größe in dem Objekt und Ausführen des Vergleichens ohne Entdecken einer Nichtübereinstimmung in der n-ten Hash-Index-Tabelle ein Ausführen des Vergleichens in der Hash-Index-Stammtabelle für den berechneten Hash-Wert des Objekts.
DE102013205069.0A 2012-04-05 2013-03-22 Erhöhte effizienz bei inline-deduplizierungen Active DE102013205069B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/440,659 2012-04-05
US13/440,659 US8688652B2 (en) 2012-04-05 2012-04-05 Increased in-line deduplication efficiency

Publications (2)

Publication Number Publication Date
DE102013205069A1 DE102013205069A1 (de) 2013-10-10
DE102013205069B4 true DE102013205069B4 (de) 2021-09-16

Family

ID=49210068

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013205069.0A Active DE102013205069B4 (de) 2012-04-05 2013-03-22 Erhöhte effizienz bei inline-deduplizierungen

Country Status (3)

Country Link
US (2) US8688652B2 (de)
CN (1) CN103365954B (de)
DE (1) DE102013205069B4 (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US11636031B2 (en) * 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US10409527B1 (en) * 2012-12-28 2019-09-10 EMC IP Holding Company LLC Method and apparatus for raid virtual pooling
US9436697B1 (en) * 2013-01-08 2016-09-06 Veritas Technologies Llc Techniques for managing deduplication of data
US20140317411A1 (en) * 2013-04-18 2014-10-23 Intronis, Inc. Deduplication of data
US9251160B1 (en) * 2013-06-27 2016-02-02 Symantec Corporation Data transfer between dissimilar deduplication systems
US9268502B2 (en) 2013-09-16 2016-02-23 Netapp, Inc. Dense tree volume metadata organization
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9152684B2 (en) 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
US9201918B2 (en) 2013-11-19 2015-12-01 Netapp, Inc. Dense tree volume metadata update logging and checkpointing
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9152330B2 (en) 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9256549B2 (en) 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9524103B2 (en) 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
US9501359B2 (en) 2014-09-10 2016-11-22 Netapp, Inc. Reconstruction of dense tree volume metadata state across crash recovery
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
CN107077456B (zh) * 2014-09-25 2020-06-26 慧与发展有限责任合伙企业 用于存储数据的装置、方法和存储介质
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9659047B2 (en) * 2014-12-03 2017-05-23 Netapp, Inc. Data deduplication utilizing extent ID database
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10565230B2 (en) 2015-07-31 2020-02-18 Netapp, Inc. Technique for preserving efficiency for replication between clusters of a network
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10394660B2 (en) 2015-07-31 2019-08-27 Netapp, Inc. Snapshot restore workflow
US9785525B2 (en) 2015-09-24 2017-10-10 Netapp, Inc. High availability failover manager
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10528624B2 (en) * 2015-12-07 2020-01-07 Sap Se Optimal hash calculation of archive files and their file entries
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
US9401959B1 (en) * 2015-12-18 2016-07-26 Dropbox, Inc. Network folder resynchronization
US9830103B2 (en) 2016-01-05 2017-11-28 Netapp, Inc. Technique for recovery of trapped storage space in an extent store
US10108547B2 (en) 2016-01-06 2018-10-23 Netapp, Inc. High performance and memory efficient metadata caching
US9846539B2 (en) 2016-01-22 2017-12-19 Netapp, Inc. Recovery from low space condition of an extent store
US10545670B2 (en) 2016-02-26 2020-01-28 Red Hat Israel, Ltd. Scalable page migration after memory de-duplication
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US9952767B2 (en) 2016-04-29 2018-04-24 Netapp, Inc. Consistency group management
US10788988B1 (en) 2016-05-24 2020-09-29 Violin Systems Llc Controlling block duplicates
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10725869B1 (en) * 2016-09-29 2020-07-28 EMC IP Holding Company LLC Deduplication-based customer value
US10417202B2 (en) 2016-12-21 2019-09-17 Hewlett Packard Enterprise Development Lp Storage system deduplication
US10235080B2 (en) 2017-06-06 2019-03-19 Saudi Arabian Oil Company Systems and methods for assessing upstream oil and gas electronic data duplication
US10587287B2 (en) 2018-03-28 2020-03-10 International Business Machines Corporation Computer system supporting multiple encodings with static data support
US10587284B2 (en) 2018-04-09 2020-03-10 International Business Machines Corporation Multi-mode compression acceleration
US10720941B2 (en) 2018-04-09 2020-07-21 International Business Machines Corporation Computer system supporting migration between hardware accelerators through software interfaces
US10374629B1 (en) 2018-05-07 2019-08-06 International Business Machines Corporation Compression hardware including active compression parameters
US10447296B1 (en) 2018-06-22 2019-10-15 International Business Machines Coporation Accelerated compression/decompression including predefined dictionary
US11093176B2 (en) * 2019-04-26 2021-08-17 EMC IP Holding Company LLC FaaS-based global object compression
US11438142B1 (en) * 2019-08-19 2022-09-06 Marvell Asia Pte, Ltd. System and method for mining digital currency in a blockchain network
US11301427B2 (en) * 2019-10-15 2022-04-12 EMC IP Holding Company LLC Inline and post-process data deduplication for a file system
US11573928B2 (en) * 2020-03-13 2023-02-07 EMC IP Holding Company LLC Techniques for data deduplication
WO2022223108A1 (en) * 2021-04-21 2022-10-27 NEC Laboratories Europe GmbH Method and system for supporting memory deduplication for unikernel images
US11778077B2 (en) * 2021-06-28 2023-10-03 Raytheon Company Application layer payload optimization
CN114064621B (zh) * 2021-10-28 2022-07-15 江苏未至科技股份有限公司 一种重复数据判断方法
US20230350763A1 (en) * 2022-04-27 2023-11-02 Cohesity, Inc. Utilizing fixed-sized and variable-length data chunks to perform source side deduplication

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814074B2 (en) 2008-03-14 2010-10-12 International Business Machines Corporation Method and system for assuring integrity of deduplicated data
GB2477607A (en) 2011-01-17 2011-08-10 Quantum Corp Sampling based data de-duplication
US20110246741A1 (en) 2010-04-01 2011-10-06 Oracle International Corporation Data deduplication dictionary system
US20120016845A1 (en) 2010-07-16 2012-01-19 Twinstrata, Inc System and method for data deduplication for disk storage subsystems

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5020673B2 (ja) * 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US7962452B2 (en) * 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
US8515909B2 (en) * 2008-04-29 2013-08-20 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US8645333B2 (en) * 2008-05-29 2014-02-04 International Business Machines Corporation Method and apparatus to minimize metadata in de-duplication
US8108353B2 (en) * 2008-06-11 2012-01-31 International Business Machines Corporation Method and apparatus for block size optimization in de-duplication
US8074049B2 (en) 2008-08-26 2011-12-06 Nine Technology, Llc Online backup system with global two staged deduplication without using an indexing database
US8078593B1 (en) * 2008-08-28 2011-12-13 Infineta Systems, Inc. Dictionary architecture and methodology for revision-tolerant data de-duplication
US8626723B2 (en) * 2008-10-14 2014-01-07 Vmware, Inc. Storage-network de-duplication
US7733247B1 (en) * 2008-11-18 2010-06-08 International Business Machines Corporation Method and system for efficient data transmission with server side de-duplication
US8346736B2 (en) * 2009-03-16 2013-01-01 International Business Machines Corporation Apparatus and method to deduplicate data
US8140491B2 (en) * 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US8205065B2 (en) * 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US8200641B2 (en) * 2009-09-11 2012-06-12 Dell Products L.P. Dictionary for data deduplication
US8407193B2 (en) * 2010-01-27 2013-03-26 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
AU2010200866B1 (en) * 2010-03-08 2010-09-23 Quantum Corporation Data reduction indexing
US8935487B2 (en) * 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
US9053032B2 (en) * 2010-05-05 2015-06-09 Microsoft Technology Licensing, Llc Fast and low-RAM-footprint indexing for data deduplication
EP2583183A1 (de) * 2010-06-18 2013-04-24 Hewlett-Packard Development Company, L.P. Datendeduplizierung
CN101963982B (zh) * 2010-09-27 2012-07-25 清华大学 基于位置敏感哈希的删冗存储系统元数据管理方法
US8396905B2 (en) * 2010-11-16 2013-03-12 Actifio, Inc. System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies
US8271462B2 (en) * 2010-12-10 2012-09-18 Inventec Corporation Method for creating a index of the data blocks
US9639543B2 (en) * 2010-12-28 2017-05-02 Microsoft Technology Licensing, Llc Adaptive index for data deduplication
US9110936B2 (en) * 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
WO2013008264A1 (en) * 2011-07-08 2013-01-17 Hitachi, Ltd. Storage system and its data processing method
US8521705B2 (en) * 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
US8990171B2 (en) * 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US9442951B2 (en) * 2011-09-23 2016-09-13 Dell Products L.P. Maintaining deduplication data in native file formats
US9071584B2 (en) * 2011-09-26 2015-06-30 Robert Lariviere Multi-tier bandwidth-centric deduplication
US8775759B2 (en) * 2011-12-07 2014-07-08 Jeffrey Tofano Frequency and migration based re-parsing
US8639669B1 (en) * 2011-12-22 2014-01-28 Emc Corporation Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
US8667032B1 (en) * 2011-12-22 2014-03-04 Emc Corporation Efficient content meta-data collection and trace generation from deduplicated storage
EP2810171B1 (de) * 2012-02-02 2019-07-03 Hewlett-Packard Enterprise Development LP Systeme und verfahren für datenblockentduplizierung

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814074B2 (en) 2008-03-14 2010-10-12 International Business Machines Corporation Method and system for assuring integrity of deduplicated data
US20110246741A1 (en) 2010-04-01 2011-10-06 Oracle International Corporation Data deduplication dictionary system
US20120016845A1 (en) 2010-07-16 2012-01-19 Twinstrata, Inc System and method for data deduplication for disk storage subsystems
GB2477607A (en) 2011-01-17 2011-08-10 Quantum Corp Sampling based data de-duplication

Also Published As

Publication number Publication date
US9268497B2 (en) 2016-02-23
DE102013205069A1 (de) 2013-10-10
CN103365954A (zh) 2013-10-23
CN103365954B (zh) 2018-01-12
US20140181465A1 (en) 2014-06-26
US20130268497A1 (en) 2013-10-10
US8688652B2 (en) 2014-04-01

Similar Documents

Publication Publication Date Title
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102013211071B4 (de) Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112012004937T5 (de) Fingerabdruckbasierte Datendeduplizierung
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112010003262T5 (de) Synchronisierung replizierter sequenzieller Zugriffsspeicherkomponenten
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE112013000650T5 (de) Datenzwischenspeicherungsbereich
DE112018005768B4 (de) Copy-source-to-target-verwaltung in einem datenspeichersystem
DE112011103367T5 (de) Replizieren von Daten

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final