DE112013001905B4 - Erhöhte Inline-Deduplizierungseffizienz - Google Patents

Erhöhte Inline-Deduplizierungseffizienz Download PDF

Info

Publication number
DE112013001905B4
DE112013001905B4 DE112013001905.1T DE112013001905T DE112013001905B4 DE 112013001905 B4 DE112013001905 B4 DE 112013001905B4 DE 112013001905 T DE112013001905 T DE 112013001905T DE 112013001905 B4 DE112013001905 B4 DE 112013001905B4
Authority
DE
Germany
Prior art keywords
hash
index table
nth
data blocks
cumulative
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
DE112013001905.1T
Other languages
English (en)
Other versions
DE112013001905T5 (de
Inventor
c/o IBM Corp. Baldwin Duane Mark
c/o IBM Corp. Bhosale Nilesh P.
c/o IBM Corp. Olson John Thomas
c/o IBM Corp. Patil Sandeep Ramesh
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 DE112013001905T5 publication Critical patent/DE112013001905T5/de
Application granted granted Critical
Publication of DE112013001905B4 publication Critical patent/DE112013001905B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/0608Saving storage space on storage systems
    • 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

Landscapes

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

Abstract

Bereitgestellt werden beispielhafte Ausführungsformen für ein Verfahren, System und Computerprogrammprodukt für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung. Nur als Beispiel werden in einer Ausführungsform Hashwerte in n-ten Wiederholungen für kumulative Datenblöcke berechnet, die aus einem Objekt extrahiert wurden, das zur Inline-Deduplizierung angefordert wurde. Für jede der n-ten Wiederholungen werden die berechneten Hashwerte für die kumulativen Datenblöcke in einer n-ten Hash-Indextabelle mit einem entsprechenden Hashwert von vorhandenen Objekten im Speicher abgeglichen. Die n-te Hash-Indextabelle wird nach einem Erkennen einer fehlenden Übereinstimmung während des Abgleichens verlassen. Die fehlende Übereinstimmung wird als ein eindeutiges Objekt bestimmt und wird gespeichert. Für das Objekt wird ein Hashwert berechnet. Eine Master-Hash-Indextabelle wird mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert. Weitere Ausführungsformen für ein System und Computerprogrammprodukt werden offenbart und stellen zugehörige Vorteile bereit.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren, ein System sowie ein Computerprogrammprodukt für eine erhöhte Inline-Deduplizierungseffizienz.
  • Beschreibung des einschlägigen Stands der Technik
  • In der Gesellschaft von heute gehören Computersysteme zum Alltag. Computersysteme sind am Arbeitsplatz, zu Hause oder in der Schule zu finden. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten enthalten. Datendeduplizierung ist ein derartiger Prozess. Die Datendeduplizierung betrifft die Verringerung und/oder Beseitigung von redundanten Daten. In einem Datendeduplizierungsprozess werden doppelte Kopien von Daten verringert oder beseitigt, wodurch jeweils eine minimale Menge von redundanten Kopien oder eine einzelne Kopie von Daten übrig bleibt. Eine Verwendung von Deduplizierungsprozessen stellt eine Vielfalt von Vorteilen bereit, wie beispielsweise eine Verringerung von erforderlicher Speicherkapazität und ein verringerter Bedarf an Netzwerkbandbreite. Aufgrund dieser und weiterer Vorteile hat sich die Deduplizierung in den letzten Jahren zu einem äußerst wichtigen technologischen Bereich in Datenverarbeitungsspeichersystemen entwickelt.
  • Die US 2009/0271454 A1 beschreibt ein Verfahren und System zur Gewährleistung der Integrität deduplizierter in einem Speichersystem gespeicherter Datenobjekte. Es wird eine digitale Signatur des Datenobjekts erzeugt, um festzustellen, ob das aus einem deduplizierten Zustand zusammengesetzte Datenobjekt identisch ist mit seinem Vor-Deduplizierungszustand. In einer Ausführungsform umfasst die Erzeugung der Objektsignatur eines Datenobjekts vor der Deduplizierung das Erzeugen einer Objektsignatur aus Zwischen-Hashwerten, die aus einer Hashfunktion berechnet werden, die auf jeden Datenblock innerhalb des Datenobjekts angewendet wird, wobei die Hashfunktion zudem dazu verwendet wird, doppelte Datenblöcke zu bestimmen. In einer alternativen Ausführungsform umfasst die Erzeugung der Objektsignatur eines Datenobjekts vor der Deduplizierung das Erzeugen einer Objektsignatur auf einem Abschnitt jedes Datensegments des Datenobjekts.
  • Die US 2011/0185149 A1 betrifft eine Datenkomprimierung mittels Deduplizierung in einer Streaming-Speicheranwendung. Der offenbarte Deduplizierungsprozess stellt ein Deduplizierungsarchiv bereit, das ein Speichern des Archivs auf ein und ein Extrahieren aus einem Streaming-Speichermedium ermöglicht. Eine Ausführungsform umfasst ein Komprimieren vollständig sequentieller Daten, die in einem Datenspeicher gespeichert sind, in einen sequentiellen Streaming-Speicher durch: Aufteilen vollständig sequentieller Daten in Datenblöcke, Hashen des Inhalts jedes Datenblocks und Vergleichen jedes Hashs mit einer im Speicher angeordneten Nachschlagetabelle auf eine Übereinstimmung hin, wobei die im Speicher angeordnete Nachschlagetabelle alle Hashs speichert, die während der Komprimierung der vollständig sequentiellen Daten aufgetreten sind, wobei für jeden Datenblock ohne Übereinstimmung eines Hashs, der Datenblock als ein neuer Datenblock für die Komprimierung von vollständig sequentiellen Daten hinzugefügt wird und wobei doppelte Datenblöcke unter Verwendung der im Speicher angeordnete Nachschlagetabelle in Datensegmente kodiert werden.
  • Die US 2011/0276781 A1 beschreibt eine Technologie zur Datendeduplizierung, bei der ein Index eines Hash-Indexdienstes einen Hashindex in einem sekundären Speichergerät unterhält, wie beispielsweise einer Festplatte, zusammen mit einer kompakten Indextabelle und einem vorausschauenden Cache in einem RAM, der so betrieben wird, dass Ein- und Ausgaben bei einem Zugreifen auf das sekundäre Speichergerät während Deduplizierungsoperationen verringert werden. Des Weiteren wird ein Sitzungscache zum Bereitstellen von Daten während einer Deduplizierungssitzung und ein Verschlüsseln einer kompakten Nur-Lese-Indextabelle beschrieben.
  • Die WO 2008/147516 A1 stellt ein System und Verfahren für eine „on-the-fly” Deduplizierung von Daten vor dem Speichern der Daten in einem Speichersystem bereit. Ein Datendeduplizierungsmodul kooperiert mit Protokoll-Servern und einem Dateisystem eines Speicherbetriebssystems, welches auf dem Speichersystem ausgeführt wird, um eine Deduplizierungstechnik umzusetzen. Das Deduplizierungsmodul erzeugt einen Blockspeichern, eine Indexdatei und eine Hashtabelle in einem durch das Speichersystem bereitgestellten Speicherbereich. Die Hashtabelle wird dazu verwendet Fingerabdrücke und Speicherorte der Blöcke innerhalb des Blockspeichers zu verfolgen. Die Indexdatei wird zum Speichern von Verzeichnisinformationen verwendet, welche die Inhalte der auf dem Speichersystem gespeicherten Datencontainer identifizieren, während der Blockspeicher dazu verwendet wird, um Rohdatenblöcke zu speichern, welche die Datencontainer umfassen.
  • Die US 2010/0250501 A1 beschreibt ein Verfahren, bei welchem ein erster Teil aus einer Mehrzahl von gespeicherten Objekten aus wenigstens einem Speichergerät aufgerufen wird. Ferner wird ein Basistype-Deduplizierungsschätzverfahren auf den ersten Teil der gespeicherten Objekte angewendet. Weiterhin wird der erste Teil der Mehrzahl von gespeicherten Objekten in Deduplizierungssätze basierend auf einer Deduplizierungsbeziehung jedes Objekts der Mehrzahl von gespeicherten Objekten mit jedem der geschätzten ersten Mehrzahl von Deduplizierungsblockabschnitten kategorisiert. Die Deduplizierungssätze werden in breite Klassen basierend auf Deduplizierungsmerkmalen der Objekte in den Deduplizierungssätzen kombiniert Ein zweiter Teil der Mehrzahl von gespeicherten Objekten wird in breite Klassen unter Verwendung von Klassifikatoren klassifiziert.
  • Die US 2011/0246741 A1 beschreibt ein Datendeduplizierungsverfahren unter Verwendung eines kleinen Hash-Digest-Wörterbuchs in einem Schnellzugriffsspeicher. Das Verfahren umfasst ein Empfangen von Kundendaten, ein Aufteilen der Daten in kleinere Blöcke und ein Zuweisen von Hashwerten zu jedem Block. Für jeden Block umfasst das Verfahren ein Ausführen eines Nachschlagens nach einem Duplikatblock durch Zugriff auf ein kleines Wörterbuch im Speicher mit den Hashwerten des Blocks. Wenn kein Eintrag vorhanden ist, wird das kleine Wörterbuch aktualisiert, so dass es den Hashwert beinhaltet, um das Wörterbuch mit zuerst empfangenen Daten zu füllen. Wenn ein Eintrag gefunden wird, wird der Hashwert des Eintrags mit einem Nachschlagewert verglichen, wenn er übereinstimmt werden Referenzdaten zurückgegeben und ein Eintragszähler wird erhöht. Wenn keine Übereinstimmung vorliegt, werden zusätzliche Zugriffe versucht, beispielsweise mit zusätzlichen Indizes, die unter Verwendung des Hashwerts berechnet werden. Kollisionen können einen Austausch eines Eintrags veranlassen, so dass einige ursprünglich eingegebenen Einträge ersetzt werden, wenn, beispielsweise auf Basis ihres Zählerwerts, festgestellt wird, dass diese keine sich sehr häufig wiederholenden Werte sind.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Mit dem Aufkommen von Cloud-Speicherdiensten, in denen Benutzer Container und Objekte in einem Speicherbereich in den Cloud-Speicherdiensten besitzen, erstellen, modifizieren und/oder löschen können, hat ein Online-Zugriff auf den Speicherbereich über HTTP beträchtlich zugenommen. Die Benutzer derartiger Cloud-Speicherdienste führen diese Operationen für gewöhnlich in Cloud-Speicherbereichen, die ihnen gehören, mit der Hilfe von Anwendungsprogrammierschnittstellen (APIs) aus, die durch die Anbieter der Cloud-Speicherdienste verfügbar gemacht werden. Obwohl es recht nützlich war, Benutzern die APIs zur Verfügung zu stellen, hat die Verwendung von APIs zum Ausführen von Operationen in Cloud-Speicherdiensten für die Dienstanbieter zu zusätzlichen Problemen auf dem Gebiet der Datendeduplizierung geführt. Dementsprechend besteht für die Anbieter eines Cloud-Speicherdiensts ein Bedarf, die Inanspruchnahme des Speicherbereichs des Cloud-Dienstes unter Verwendung von Deduplizierungstechniken zu verringern.
  • Der Erfindung liegt demgegenüber die Aufgabe zugrunde, ein Verfahren, ein System sowie ein Computerprogrammprodukt für eine erhöhte Inline-Deduplizierungseffizienz bereitzustellen
  • Die der Erfindung zugrundeliegende Aufgabe wird mit den Merkmalen der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegben.
  • Verschiedene Ausführungsformen stellen Verfahren für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung bereit. Ein Verfahren weist ein Berechnen von Hashwerten in n-ten Wiederholungen für kumulative Datenblöcke, die aus einem Objekt extrahiert werden, das zur Inline-Deduplizierung angefordert wird, durch eine Prozessoreinheit in der Datenverarbeitungsumgebung auf. Das Verfahren weist ferner für jede der n-ten Wiederholungen ein Abgleichen der berechneten Hashwerte für die kumulativen Datenblöcke in einer n-ten Hash-Indextabelle mit einem entsprechenden Hashwert von vorhandenen Objekten in einem Speicher auf. Die n-te Hash-Indextabelle wird für jeden der kumulativen Datenblöcke aufgebaut. Eine Nachschlage-Operation wird in der n-ten Hash-Indextabelle für jede der n-ten Wiederholungen durchgeführt, um die berechneten Hashwerte für die kumulativen Datenblöcke mit einem entsprechenden Hashwert von bestehenden Objekten im Speicher abzugleichen. Die Extraktion von Daten aus dem Objekt wird fortgeführt, um einen n-ten der kumulativen Datenblöcke für eine nachfolgende n-te Iteration aufzubauen, bis zum Empfangen einer n-ten Zahl von Bytes für den n-ten der kumulativen Datenblöcke, wenn ein Gegenstück für die berechneten Hashwerte für die kumulativen Datenblöcke unter den entsprechenden Hashwerten von bestehenden Objekten im Speicher gefunden wird, wobei die n-te Zahl von Bytes für den n-ten der kumulativen Datenblöcke kumulativ für das Erreichen einer vollen Größe des Objekts ist. Die n-te Hash-Indextabelle wird verlassen, nachdem eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke während des Abgleichens erkannt wird. Die fehlende Übereinstimmung wird als ein eindeutiges Objekt bestimmt und wird gespeichert. Dem Client wird mit einem Zustand „Erfolg” beim Erstellen eines Objekts in dem Objektspeicher geantwortet. Der Hashwert für das gesamte Objekt wird als Teil einer Offline-Nachverarbeitung berechnet. Eine Master-Hash-Indextabelle wird mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert. In der Offline-Verarbeitung wird auch die n-te Indextabelle mit dem Hashwert an der n-ten Wiederholung der kumulativen Datenblöcke des neuen eindeutigen Objekts aktualisiert.
  • Verschiedene Ausführungsformen stellen Systeme für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung bereit. Ein System weist eine Prozessoreinheit auf, die in einer Datenverarbeitungsspeicherumgebung betriebsfähig ist. In einer Ausführungsform ist der Prozessor so konfiguriert, dass er Hashwerte in n-ten Wiederholungen für kumulative Datenblöcke berechnet, die aus einem Objekt extrahiert wurden, das zur Inline-Deduplizierung angefordert wurde. Für jede der n-ten Wiederholungen ist der Prozessor ferner so konfiguriert, dass er Hashwerte für die kumulativen Datenblöcke in einer n-ten Hash-Indextabelle mit einem entsprechenden Hashwert von vorhandenen Objekten in einem Speicher abgleicht. Die n-te Hash-Indextabelle wird für jeden der kumulativen Datenblöcke aufgebaut. Eine Nachschlage-Operation wird in der n-ten Hash-Indextabelle für jede der n-ten Wiederholungen durchgeführt, um die berechneten Hashwerte für die kumulativen Datenblöcke mit einem entsprechenden Hashwert von bestehenden Objekten im Speicher abzugleichen. Die Extraktion von Daten aus dem Objekt wird fortgeführt, um einen n-ten der kumulativen Datenblöcke für eine nachfolgende n-te Iteration aufzubauen, bis zum Empfangen einer n-ten Zahl von Bytes für den n-ten der kumulativen Datenblöcke, wenn ein Gegenstück für die berechneten Hashwerte für die kumulativen Datenblöcke unter den entsprechenden Hashwerten von bestehenden Objekten im Speicher gefunden wird, wobei die n-te Zahl von Bytes für den n-ten der kumulativen Datenblöcke kumulativ für das Erreichen einer vollen Größe des Objekts ist. Die n-te Hash-Indextabelle wird verlassen, nachdem eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke während des Abgleichens erkannt wird. Die fehlende Übereinstimmung wird als ein eindeutiges Objekt bestimmt und wird gespeichert. Für das gesamte Objekt wird ein Hashwert berechnet. Eine Master-Hash-Indextabelle wird mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert. In der Offline-Verarbeitung wird auch die n-te Indextabelle mit dem Hashwert an der n-ten Wiederholung der kumulativen Datenblöcke des neuen eindeutigen Objekts aktualisiert.
  • Außerdem werden physische Computerspeichermedien bereitgestellt (z. B. eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten), die ein Computerprogrammprodukt für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung aufweisen. Ein physisches Computerspeichermedium weist Computercode zum Berechnen von Hashwerten in n-ten Wiederholungen für kumulative Datenblöcke, die aus einem Objekt extrahiert werden, das zur Inline-Deduplizierung angefordert wird, durch eine Prozessoreinheit in der Datenverarbeitungsumgebung auf. Das physische Computerspeichermedium weist ferner für jede der n-ten Wiederholungen Computercode zum Abgleichen der berechneten Hashwerte für die kumulativen Datenblöcke in einer n-ten Hash-Indextabelle mit einem entsprechenden Hashwert von vorhandenen Objekten in einem Speicher auf. Die n-te Hash-Indextabelle wird für jeden der kumulativen Datenblöcke aufgebaut. Eine Nachschlage-Operation wird in der n-ten Hash-Indextabelle für jede der n-ten Wiederholungen durchgeführt, um die berechneten Hashwerte für die kumulativen Datenblöcke mit einem entsprechenden Hashwert von bestehenden Objekten im Speicher abzugleichen. Die Extraktion von Daten aus dem Objekt wird fortgeführt, um einen n-ten der kumulativen Datenblöcke für eine nachfolgende n-te Iteration aufzubauen, bis zum Empfangen einer n-ten Zahl von Bytes für den n-ten der kumulativen Datenblöcke, wenn ein Gegenstück für die berechneten Hashwerte für die kumulativen Datenblöcke unter den entsprechenden Hashwerten von bestehenden Objekten im Speicher gefunden wird, wobei die n-te Zahl von Bytes für den n-ten der kumulativen Datenblöcke kumulativ für das Erreichen einer vollen Größe des Objekts ist. Die n-te Hash-Indextabelle wird verlassen, nachdem eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke während des Abgleichens erkannt wird. Die fehlende Übereinstimmung wird als ein eindeutiges Objekt bestimmt und wird gespeichert. Für das gesamte Objekt wird ein Hashwert berechnet. Eine Master-Hash-Indextabelle wird mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert.
  • In der Offline-Verarbeitung wird auch die n-te Indextabelle mit dem Hashwert an der n-ten Wiederholung der kumulativen Datenblöcke des neuen eindeutigen Objekts aktualisiert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Damit die Vorteile der Erfindung leicht zu verstehen sind, wird unter Bezugnahme auf spezifische Ausführungsformen, die in den Zeichnungen im Anhang veranschaulicht werden, eine speziellere Beschreibung der oben kurz beschriebenen Erfindung vorgelegt. Das Verständnis vorausgesetzt, dass diese Zeichnungen nur typische Ausführungsformen der Erfindung veranschaulichen und daher nicht als deren Schutzumfang einschränkend zu betrachten sind, wird die Erfindung mit zusätzlicher Spezifität und Ausführlichkeit unter Verwendung der begleitenden Zeichnungen beschrieben und erklärt, wobei:
  • 1 ein Blockschaubild ist, das eine Computerspeicherumgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung verwirklicht werden können;
  • 2 ein Blockschaubild ist, das eine Hardware-Struktur eines beispielhaften Datenspeichersystems in einem Computersystem veranschaulicht, in der Aspekte der vorliegenden Erfindung verwirklicht werden können;
  • 3 ein Ablaufplan ist, der ein beispielhaftes Verfahren für eine erhöhte Inline-Deduplizierung mit kumulativen Blöcken veranschaulicht;
  • 4 ein Ablaufplan ist, der ein beispielhaftes Verfahren für eine erhöhte Inline-Deduplizierungseffizienz veranschaulicht; und
  • 5 ein Ablaufplan ist, der ein beispielhaftes weiteres Verfahren für eine erhöhte Inline-Deduplizierungseffizienz veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Wie vorher erwähnt, steht mit dem Aufkommen von Cloud-Speicherdiensten für die Anbieter von Cloud-Speicherdiensten in dem Bereich Datendeduplizierung eine neue Gruppe von Problemen an, vor allem, wenn Anbieter von Cloud-Speicherdiensten die Inanspruchnahme ihres Speicherbereichs unter Verwendung von Techniken wie der Deduplizierung verringern möchten. Ein Anbieter von Cloud-Speicherdiensten kann sich dafür entscheiden, eine Nachverarbeitungs-Deduplizierung und/oder Inline-Deduplizierung zu verwenden. Bei einer Nachverarbeitungs-Deduplizierung werden neue Daten zuerst in der Speichereinheit gespeichert, und danach analysiert ein Prozess zu einem späteren Zeitpunkt die Daten und sucht nach einer Duplizierung. Der Vorteil ist, dass ein Warten auf Hash-Berechnungen und ein Abschließen von Suchoperationen in einem Hashtabellenindex vor dem Speichern der Daten beseitigt wird, wodurch sichergestellt wird, dass sich die Speicherleistung nicht verschlechtert. Eine Inline-Deduplizierung ist der Prozess, in dem die Hash-Berechnungen zur Deduplizierung in Echtzeit in der Zieleinheit erstellt werden, wenn die Daten in die Einheit gelangen. Wenn die Einheit einen Block erkennt, der bereits in dem Speichersystem gespeichert ist, speichert sie den neuen Block nicht, sondern erstellt nur einen Verweis auf den bestehenden Block. Der Vorteil der Inline-Deduplizierung gegenüber der Nachverarbeitungs-Deduplizierung besteht darin, dass die Inline-Deduplizierung weniger Speicher erfordert, da die Daten nicht dupliziert werden. Da Hash-Berechnungen und Suchoperationen in dem Hashtabellenindex andererseits mit beträchtlichen Zeitverzögerungen verbunden sind, die zu einer Datenaufnahme führen, die wesentlich langsamer ist, vermindert sich die Effizienz, da sich der Sicherungsdatendurchsatz der Einheit verringert.
  • Beim aktuellen Stand der Technik können Inline-Deduplizierungstechniken auf Objektspeicher angewendet werden. Der Hash des gesamten Objekts wird während der Laufzeit vor einem Bestimmen berechnet, ob das Objekt für eine Deduplizierung und ein anschließendes Speichern des Objekts wählbar ist. Im Allgemeinen besteht dadurch eine Tendenz zu erzwungenen Leistungsabwertungen, insbesondere im Objektspeicher (zum Speichern von Objekten aktivierte NAS-Felder), die in die Deduplizierungstechnologie integriert sind. Es ist zum Beispiel eine bekannte Tatsache, dass Hashing in Bezug auf Datenverarbeitung eine kostspielige und äußerst speicherintensive Operation ist. Wenn eine bestimmte Arbeitslast Daten/Objekte mit sehr großem Speicherbedarf aufweist (z. B. Dateien im Gigabyte-Bereich (GB)), führt ein Hashing der gesamten Objekte unter Verwendung der Inline-Deduplizierungstechniken, wie sie aktuell beim Stand der Technik verfügbar sind, zwingend zu einer immensen Leistungsabwertung.
  • In aktuellen Systemen zur objektübergreifenden Inline-Deduplizierung besteht die Technik zum Berechnen des Fingerabdrucks (z. B. Hashwerts) der Datei, die über Hypertext Transfer Protocol (HTTP) empfangen wurde, darin, den berechneten Fingerabdruck für das gesamte Objekt mit der Gruppe verfügbarer Fingerabdrücke der in dem Speichersystem vorhandenen Dateien zu vergleichen. Allerdings sind ein Zwischenspeichern der kompletten Datei (die mehrere Gigabyte groß sein kann), ein Berechnen des Hashwerts und ein anschließendes Verwenden einer Hash-Suchtabelle für einen Vergleich Prozesse mit hohem Speicheraufwand. Vor allem die Hash-Berechnung ist eine aufwendige Operation, und die in Anspruch genommene Zeit ist für große Objekte recht beträchtlich (z. B. über 10 Sekunden für Objekte, die größer als 10 GB sind). Eine Verzögerung durch die Hash-Berechnung ist unterschiedlich und hängt von den verwendeten Hash-Funktionen ab. Derartige Verzögerungen sind für Datenübertragungen über HTTP schlichtweg nicht akzeptabel. Diese Verzögerungen führen zu Engpässen, die die Leistung beeinträchtigen und in extremen Fällen zu Denial-of-Service-(DoS)Bedingungen des Webdiensts führen können.
  • Somit besteht ein Bedarf für ein Bereitstellen von schnellen Inline-Deduplizierungsfunktionen auf der Anwendungsebene. Durch die Weiterentwicklung der Cloud-Speicherdienste und des Zugriffs auf den Speicher über HTTP, wobei Tausende von HTTP-Anfragen pro Sekunde die Daten im Datenstrom in den Speicher-Webdienst übertragen, ist es äußerst entscheidend, eine Deduplizierungsunterstützung auf der Anwendungs-(Webdienst-)ebene bereitzustellen.
  • Um diesen Leistungsschwächen abzuhelfen, sind die Mechanismen der vorliegenden Erfindung bestrebt, eine erhöhte Inline-Deduplizierungseffizienz für eine Objektspeicheroperation bereitzustellen, indem die Fingerabdruck-Erstellungsoperation so früh wie möglich auf intelligente Weise eingegrenzt wird. In einer Ausführungsform beginnt der Mechanismus das Objekt in der HTTP-Anfrage zwischenzuspeichern, statt im Gegensatz dazu darauf zu warten, dass das gesamte Objekt in dem Objektspeicher empfangen wird und danach den Hash über das gesamte Objekt auszuführen. Die Mechanismen sind bestrebt, die Inline-Deduplizierungsleistung zu verbessern, indem die Zeit maßgeblich verringert wird, die für Hash-Berechnungen für größere Objekte in Anspruch genommen wird, und zu einem frühen Zeitpunkt die Wählbarkeit/Möglichkeit einer Deduplizierung des Objekts zu bestimmen, während das Objekt über die Leitung zu dem Objektspeicher übertragen wird. Die vorliegende Erfindung ist bestrebt, die Nutzung der wichtigsten Ressourcen (z. B. Zeit, CPU und/oder Arbeitsspeicher usw.) so gering wie möglich zu halten, die für die Inline-Deduplizierung verwendet werden, und die von den HTTP-Clients erfahrene Latenz zu verringern. Ein optimiertes Verfahren wird vorgeschlagen, mit dem schneller bestimmt wird, welches Objekt dedupliziert werden kann und welche Objekte nicht dedupliziert werden können, indem Mechanismen aufgenommen werden, durch die eindeutige Objekte (z. B. Objekte, die neu sind und sich aktuell nicht im Speicher befinden) so früh wie möglich erkannt werden und durch Ausführen eines intelligenten, granularen, iterativen Prozesses zum Extrahieren kleinerer Blöcke aus dem gesamten Objekt gespeichert werden (z. B. auf einer Platte).
  • Unter Bezugnahme auf 1 wird ein Beispiel-Computersystem 10 veranschaulicht, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können. Das Computersystem 10 enthält eine zentrale Verarbeitungseinheit (CPU) 12, die mit einer bzw. mehreren Massenspeichereinheiten 14 und einer Arbeitsspeichereinheit 16 verbunden ist. Die Massenspeichereinheiten können Festplattenlaufwerk-(HDD)-Einheiten enthalten, die in einer redundanten Anordnung von unabhängigen Platten (RAID) konfiguriert sein können. Die Arbeitsspeichereinheit 16 kann einen derartigen Arbeitsspeicher wie einen elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM) oder eine Menge zugehöriger Einheiten enthalten. Die Arbeitsspeichereinheit 16 und die Massenspeichereinheit 14 sind mit der CPU 12 über ein Signalträgermedium verbunden. Außerdem ist die CPU 12 über einen Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine damit verbundene Vielzahl von weiteren Computersystemen 22 und 24 aufweist. Das Computersystem 10 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 Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Gezeigt werden Host-Computer 210, 220, 225, von denen jeder als eine zentrale Verarbeitungseinheit zum Ausführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 arbeitet. Die Cluster-Hosts/Knoten (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erzielen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 sein. Eine Netzwerk-(z. B. Speicherstruktur)Verbindung 260 kann eine Fibre-Channel-Struktur, eine Fibre Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-über-Ethernet-Struktur oder Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle sein. Die Hosts 210, 220 und 225 können lokal oder auf eine oder mehrere Positionen verteilt sein und können mit einem beliebigen Typ von Struktur (oder Strukturkanal) (nicht gezeigt in 2) oder Netzwerkadapter 260 zu einem Speicher-Controller 240 ausgestattet sein, wie beispielsweise Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, drahtlose oder koaxiale Adapter. Das Datenspeichersystem 200 ist dementsprechend mit einer geeigneten Struktur (nicht gezeigt in 2) oder dem Netzwerkadapter 260 zum Übertragen von Daten ausgestattet. Das Datenspeichersystem 200 wird in 2 veranschaulicht und weist Speicher-Controller 240 und die Cluster-Hosts 210, 220 und 225 auf. Die Cluster-Hosts 210, 220 und 225 können Cluster-Knoten enthalten.
  • Um ein besseres Verständnis der hierin beschriebenen Verfahren zu unterstützen, wird der Speicher-Controller 240 in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen System-Arbeitsspeicher 243 und einen nicht-flüchtigen Speicher („NVS”) 216 enthält, die im Folgenden ausführlicher beschrieben werden. Es wird angemerkt, dass in einigen Ausführungsformen der Speicher-Controller 240 aus mehreren Verarbeitungseinheiten besteht, die jeweils ihren eigenen Prozessorkomplex und System-Arbeitsspeicher haben und durch ein dediziertes Netzwerk in dem Datenspeichersystem 200 miteinander verbunden sind. Des Weiteren können in Anbetracht der Verwendung der Netzwerkverbindung der Speicherstruktur 260 weitere Architekturkonfigurationen unter Verwendung der Speicherstruktur 260 genutzt werden, um mehrere Speicher-Controller 240 mit einem oder mehreren Cluster-Hosts 210, 220 und 225 zusammenzuschließen, die mit jedem Speicher-Controller 240 verbunden sind.
  • In einigen Ausführungsformen enthält der System-Arbeitsspeicher 243 des Speicher-Controllers 240 eine Betriebssoftware 250 und speichert Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte auszuführen, die einem Ausführen der Schritte und den Verfahren der vorliegenden Erfindung zugehörig sind. Wie in 2 gezeigt, kann der Arbeitsspeicher 243 auch eine Datenübertragung enthalten oder mit einem Zwischenspeicher 245 in Datenübertragung stehen, der hierin auch als „Cache-Speicher” bezeichnet wird, um „Schreibdaten” und „Lesedaten” zu puffern, die jeweils auf Schreib-/Lese-Anforderungen und deren zugehörige Daten verweisen. In einer Ausführungsform wird der Zwischenspeicher 245 in einer außerhalb des System-Arbeitsspeichers 243 befindlichen Einheit zugeordnet, wobei auf ihn jedoch weiterhin durch den Mikroprozessor 242 zugegriffen werden kann und er zusätzlich zu einem Ausführen der hierin beschriebenen Operationen zum Bereitstellen eines zusätzlichen Schutzes vor Datenverlust dienen kann.
  • In einigen Ausführungsformen kann der Zwischenspeicher 245 mit einem flüchtigen Arbeitsspeicher und einem nicht-flüchtigen Arbeitsspeicher umgesetzt werden und für eine verbesserte Leistung des Datenspeichersystems 200 mit dem Mikroprozessor 242 über einen lokalen Bus (nicht gezeigt in 2) verbunden werden. Auf den in dem Datenspeicher-Controller enthaltenen NVS 216 kann durch den Mikroprozesssor 242 zugegriffen werden, und er dient zum Bereitstellen von zusätzlicher Unterstützung von Operationen und Ausführung, wie in weiteren Figuren beschrieben. Der NVS 216 kann auch als „permanenter” Zwischenspeicher oder „Cache-Arbeitsspeicher” bezeichnet werden und wird mit einem nicht-flüchtigen Arbeitsspeicher umgesetzt, der eine externe Stromquelle zum Beibehalten der darin gespeicherten Daten verwenden kann. Der NVS kann in und zusammen mit dem Zwischenspeicher 245 für alle Zwecke gespeichert werden, die geeignet sind, um die Ziele der vorliegenden Erfindung zu erreichen. In einigen Ausführungsformen versorgt eine Notstromversorgungsquelle (nicht gezeigt in 2), wie beispielsweise eine Batterie, den NVS 216 mit ausreichender Energie, um die darin gespeicherten Daten im Fall eines Spannungsverlusts des Datenspeichersystems 200 beizubehalten. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner oder gleich der Gesamtkapazität des Zwischenspeichers 245.
  • Der Speicher-Controller 240 kann ein Inline-Deduplizierungsmodul 255, ein n-tes Hash-Indextabellenmodul 257 und ein Master-Hash-Indextabellenmodul 259 enthalten. Das Inline-Deduplizierungsmodul 255, das n-te Hash-Indextabellenmodul 257 und das Master-Hash-Indextabellenmodul 259 können ein gleichzeitig arbeitendes vollständiges Modul oder getrennte Module sein. Das Inline-Deduplizierungsmodul 255, das n-te Hash-Indextabellenmodul 257 und das Master-Hash-Indextabellenmodul 259 können einigen internen Arbeitsspeicher (nicht gezeigt) haben, in dem der Übergangsfunktionsalgorithmus nicht verarbeitete, verarbeitete oder „halbverarbeitete” Daten speichern kann. Das Inline-Deduplizierungsmodul 255, das n-te Hash-Indextabellenmodul 257 und das Master-Hash-Indextabellenmodul 259 können in Verbindung mit jeder einzelnen Komponente des Speicher-Controllers 240, den Hosts 210, 220, 225 und weiteren Speicher-Controllern 240 und Hosts 210, 220 und 225 arbeiten, die entfernt angeordnet über die Speicherstruktur 260 verbunden sein können. Das Inline-Deduplizierungsmodul 255, das n-te Hash-Indextabellenmodul 257 und das Master-Hash-Indextabellenmodul 259 können ein strukturell vollständiges Modul sein oder können anderen einzelnen Modulen zugehörig und/oder in diesen enthalten sein. Das Inline-Deduplizierungsmodul 255, das n-te Hash-Indextabellenmodul 257 und das Master-Hash-Indextabellenmodul 259 können sich auch in dem Zwischenspeicher 245 oder anderen Komponenten des Speicher-Controllers 240 befinden. Das n-te Hash-Indextabellenmodul 257 und das Master-Hash-Indextabellenmodul 259 können eine oder mehrere Hash-Indextabellen in jedem der Module enthalten und können in Verbindung mit anderen Tabellen arbeiten.
  • Der Speicher-Controller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre Channel Protocol zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller Speicher-Controller 240, einen nicht-flüchtigen Steuerungs-Arbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speicher-Controllers 240, einen Zwischenspeicher 245 zum temporären Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Zwischenspeichers 245 beim Lesen und Schreiben von Daten, einen Steuerschalter 241 zum Steuern eines Protokolls zum Steuern einer Datenübertragung zu oder von dem Prozessorzuweisungsmodul 255 und dem Übergangsfunktionsmodul 257, in denen Informationen eingerichtet werden können. Mehrere Puffer 244 können zum Unterstützen der Verfahren und Schritte wie hierin beschrieben umgesetzt werden.
  • In einer Ausführungsform werden die Cluster-Hosts/Knoten 210, 220, 225 und der Speicher-Controller 240 über einen Netzwerkadapter (dieser könnte ein Fibre Channel sein) 260 als Schnittstelle verbunden, d. h. über einen als „Struktur” bezeichneten Schalter. In 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 er Befehlsinformationen von dem Cluster-Host/der Knoteneinheit (physisch oder virtuell) 210 und Informationen zum Identifizieren des Cluster-Host/der Knoteneinheit (physisch oder virtuell) 210 speichert. Der Steuerschalter 241, die Puffer 244, der Zwischenspeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das Prozessorzuweisungsmodul 255 und das Übergangsfunktionsmodul 257 stehen miteinander in Datenübertragung und können getrennte Komponenten oder eine einzelne Komponente sein. Ferner können einige, wenn nicht alle der Komponenten wie beispielsweise die Betriebssoftware 250 in dem Arbeitsspeicher 243 enthalten sein. Alle Komponenten in den gezeigten Einheiten können miteinander verbunden sein und zu Zwecken, die für die vorliegende Erfindung geeignet sind, miteinander in Datenübertagung stehen.
  • Die vorliegende Erfindung kann die Komponenten von 1 und 2 für eine erhöhte Inline-Deduplizierungseffizienz sowie Architekturen von weiteren Cloud-Speichersystemen (nicht gezeigt) verwenden, die in dem Fachgebiet allgemein bekannt sind. Nur zu Beispielzwecken führen in einer Ausführungsform die Mechanismen der Komponenten von 1 und 2 und/oder weiteren Architekturen von Cloud-Speichersystemen den Deduplizierungsvorgang in ,n-ten' Wiederholungen aus. Bei jeder der Wiederholungen erhöhen die Mechanismen die Größe des Datenblocks, der aus der zu deduplizierenden Datei erhalten wird. Die Wiederholungen werden fortgesetzt, wie im Folgenden beschrieben. Zuerst wird eine Leseoperation an den ersten ,N1' Bytes ausgeführt, ein Hashwert wird berechnet, und eine Suchoperation wird in einer Hashtabelle mit der Beschriftung „HT1” (oder unter Verwendung ähnlicher Mechanismen) ausgeführt, wobei die Hashtabelle mit dem Hashwert aufgebaut wird, der für die ersten ,N1' Bytes der Dateien/Objekte berechnet wurde, die bereits in dem Speichersystem vorhanden sind. Wenn eine Übereinstimmung zwischen dem berechneten Hashwert und einem Hashwert für eine bereits in dem Speicher vorhandene Datei/ein vorhandenes Objekt gefunden wird, fahren die Mechanismen als Nächstes damit fort, die Daten aus der Anforderung für das gesamte Objekt zu sammeln, das dedupliziert werden soll. Diese Sammlung und Extraktion der Daten wird für die nächsten n-ten Wiederholungen ausgeführt, bis die Mechanismen ,N2' Bytes empfangen. Wiederum wird eine Suchoperation in einer Hashtabelle mit der Beschriftung „HT2” (oder unter Verwendung ähnlicher Mechanismen) ausgeführt, wobei die Hash-Indextabelle mit den Hashwerten aufgebaut wird, die für die ersten ,N2' Bytes der Dateien/Objekte berechnet wurden, die bereits in dem Speichersystem vorhanden sind. Die Mechanismen setzen ein Wiederholen der Prozesse wie oben beschrieben fort, lesen N3, N4, N5 ... N-te Bytes aus dem Objekt und suchen in Hashtabellen HT3, HT4, HT5 ... n-te HT. Es ist anzumerken, dass die Größe der n-ten Bytes für die Datenblöcke für jede der n-ten Wiederholungen kumulativ sind, um die volle Größe des Objekts zu erreichen. Von den Mechanismen können Muster aus historischen Daten bestimmt werden, um die Größe der kumulierten Datenblöcke auf der Grundlage eines Deduplizierungsverhältnisses zu erhöhen, wobei, wenn das Deduplizierungsverhältnis (z. B. Deduplizierungsobjekte/gesamte Objekte) hoch ist, die n-ten Wiederholungen weniger werden, und wenn das Deduplizierungsverhältnis niedrig ist, die n-ten Wiederholungen zunehmen.
  • Selbst wenn die Mechanismen nach dem Ausführen der oben beschriebenen Operationen keine fehlende Übereinstimmung in der Suchoperation der Hashtabellen finden und das Objekt erschöpft ist (also das gesamte Objekt erfolgreich in kleinere, kumulative Datenblöcke aufgeteilt worden ist), können die Mechanismen immer noch für das komplette Objekt mit voller Größe einen Hashwert berechnen und die Suchoperation in einer Master-Hashtabelle ausführen. Wenn die Mechanismen eine fehlende Übereinstimmung in der Suchoperation der Master-Hashtabelle erkennen, schreibt der Mechanismus das Objekt in den Speicher (d. h. auf eine Platte) und nimmt einen Eintrag in die Master-Hashtabelle vor (Hashtabelle mit dem Hash, der für die Dateien/Objekte mit voller Größe berechnet wurde).
  • Wenn die Mechanismen in irgendeinem der vorher beschriebenen Schritte eine fehlende Übereinstimmung in der Suchoperation erkennen, können die Mechanismen die Deduplizierungsverarbeitung beenden. Die fehlende Übereinstimmung gibt an, dass das Objekt und/oder die kleinen iterativen kumulativen Datenblöcke eindeutig sind (z. B. Objekte, die neu sind und sich aktuell nicht in dem Speicher befinden). Nach Beendigung der Deduplizierung können die Mechanismen das Objekt und/oder die kleinen iterativen kumulativen Datenblöcke speichern und eine Erfolgsantwort an den HTTP-Client zurücksenden. In einem Offline-Modus berechnen die Mechanismen den Hash des gegenwärtigen Objekts mit voller Größe und schreiben ihn in eine gegenwärtige Hashtabelle, die als Master-Hashtabelle bezeichnet wird. Dieser Prozess ermöglicht es den Mechanismen, die Hash-Berechnung zu einem sehr frühen Zeitpunkt zu stoppen, wenn bestimmt wird, dass das Objekt eindeutig ist. Die Anzahl von Hops bis zum Erreichen der maximalen Größe eines Objekts, die durch den Speicheranbieter unterstützt wird, kann konfigurierbar sein, und die Funktion, die für die Inkremente der Objektgrößen für jede Wiederholung verwendet wird, kann auch zum Optimieren der Leistung konfiguriert werden.
  • Die folgende 3 ist ein Ablaufplan, der ein beispielhaftes Verfahren 300 für eine erhöhte Inline-Deduplizierung mit kumulativen Blöcken veranschaulicht. Wie vorher beschrieben, veranschaulicht das Blockschaubild 300 ein Berechnen der Hashwerte für die iterativen kumulativen Blöcke 302 (im Blockschaubild gezeigt als Block 1 mit der Beschriftung 302A, Block 2 mit der Beschriftung 302B, Block 3 mit der Beschriftung 302C und der unterste Block mit der Beschriftung 302D). Diese iterativen kumulativen Blöcke 302 stellen das gesamte zur Deduplizierung angeforderte Objekt/die gesamte angeforderte Datei dar. Für jede Wiederholung der kumulativen Blöcke 302 wird ein Hashwert berechnet. Eine entsprechende Hash-Indextabelle für jede Wiederholung der vorgegebenen Blockgröße wird zum Ausführen einer Suchoperation verwendet. Die Suchoperation versucht, den berechneten Hashwert für jeden der iterativen, kumulativen Blöcke 302 mit bereits in dem Datenspeicher vorhandenen Objekten abzugleichen. Nach einem Erkennen der ersten fehlenden Übereinstimmung wird die Hashtabelle verlassen, und die iterativen kumulativen Blöcke 302 werden als eindeutig bestimmt und gespeichert (z. B. auf einer Platte). An den HTTP-Client wird eine Antwort zurückgesendet. Ferner wird ein Hashwert für das gesamte Objekt (aus dem die iterativen kumulativen Blöcke 302 extrahiert werden) in einem Offline-Modus berechnet, und die Master-Indextabelle (HT-master) wird aktualisiert.
  • Die folgende 4 ist ein Ablaufplan, der ein beispielhaftes Verfahren 400 für eine erhöhte Inline-Deduplizierungseffizienz veranschaulicht. Das Verfahren 400 beginnt (Schritt 402). Das Verfahren 400 liest „Ni” Bytes aus dem Objekt/der Datei und bildet einen kumulativen Block und berechnet einen Hashwert „Hi” für den Block (Schritt 404). Das Verfahren 400 führt eine Suchoperation in einer Hashtabelle „i-te Ht” für den jeweiligen kumulativen Block aus (Schritt 406). Das Verfahren 400 bestimmt, ob eine Übereinstimmung zwischen dem berechneten Hashwert des kumulativen Blocks und einem Hashwert für eine in dem Speicher bereits vorhandene Datei/ein vorhandenes Objekt vorliegt (Schritt 408). Wenn keine Übereinstimmung gefunden wird (wenn z. B. eine fehlende Übereinstimmung angibt, dass die kleinen iterativen kumulativen Datenblöcke eindeutig sind, was bedeutet, dass die kumulativen Datenblöcke neu sind und sich gegenwärtig nicht in dem Speicher befinden), speichern die Mechanismen das vollständige Objekt/die vollständige Datei und/oder kumulative Datenblöcke und berechnen einen Hashwert für das komplette und gesamte Objekt/die komplette und gesamte Datei im Hintergrund (z. B. in einem Offline-Modus) (Schritt 410). Das Verfahren 400 kann anschließend den Hashwert des kompletten eindeutigen Objekts in der Master-Hashtabelle „HT-master” speichern (Schritt 412), und das Verfahren 400 kann enden (Schritt 422).
  • Wenn unter erneuter Bezugnahme auf Schritt 408 eine Übereinstimmung gefunden wird, bestimmt das Verfahren 400, ob das Ende des Objekts/der Datei erreicht worden ist (Schritt 414). Falls nicht, kehrt das Verfahren 400 zu Schritt 404 zurück und fährt mit Lesevorgängen von „Ni” Bytes aus dem Objekt/aus der Datei fort und bildet einen kumulativen Block und berechnet einen Hashwert „Hi” für den Block (Schritt 404). Wenn das Ende der Datei erreicht wird, berechnet das Verfahren 400 einen Hashwert für die gesamte Datei und führt eine Suchoperation in einer Master-Hash-Indextabelle „HT-master” aus (Schritt 416). Das Verfahren 400 bestimmt, ob eine Übereinstimmung zwischen dem berechneten Hashwert für das gesamte/komplette Objekt/die gesamte/komplette Datei und einem Hashwert für eine in dem Speicher bereits vorhandene Datei/ein vorhandenes Objekt vorliegt (Schritt 418). Wenn eine Übereinstimmung gefunden wird, kann das Verfahren 400 eine Datenreduktion durch Verknüpfen mit der Master-Einzeldatei vornehmen (Schritt 420), und das Verfahren 400 kann enden (Schritt 422).
  • Wenn jedoch keine Übereinstimmung gefunden wird (wenn z. B. eine fehlende Übereinstimmung angibt, dass das Objekt und/oder die kleinen iterativen kumulativen Datenblöcke eindeutig sind, z. B. Objekte, die neu sind und sich gegenwärtig nicht in dem Speicher befinden), speichert das Verfahren 400 den Hashwert des kompletten eindeutigen Objekts in der Master-Hashtabelle „HT-master” (Schritt 412), und das Verfahren 400 endet ebenfalls (Schritt 422).
  • 5 ist ein Ablaufplan, der ein beispielhaftes weiteres Verfahren 500 für eine erhöhte Inline-Deduplizierungseffizienz veranschaulicht. Das Verfahren 500 beginnt (Schritt 502). Das Verfahren 500 liest „N” Bytes (mit der Beschriftung 524) aus dem Objekt/der Datei und berechnet einen Hashwert „Hi” für einen kleineren Stichprobenblock mit einer Größe von ersten M Bytes (Schritt 504) aus dem aktuellen untersuchten Block mit der Größe N (wobei M kleiner als N ist). Zum Beispiel wird der Hashwert aus einem Block mit einer Größe von 1 Kilobyte (KB) für jeden Block mit einer Größe von 10 MB berechnet. Das Verfahren 500 führt eine Suchoperation in einer Hashtabelle „i-te Ht” für den jeweiligen kumulativen Block aus (Schritt 506). Dieser Prozess läuft für jede Wiederholung für die kumulativen Blöcke ab. Das Verfahren 500 bestimmt, ob eine Übereinstimmung zwischen dem berechneten Hashwert für den kumulativen Block und einem Hashwert für eine in dem Speicher bereits vorhandene Datei/ein vorhandenes Objekt vorliegt (Schritt 508). Wenn keine Übereinstimmung gefunden wird (wenn z. B. eine fehlende Übereinstimmung angibt, dass die kleinen iterativen kumulativen Datenblöcke eindeutig sind, was bedeutet, dass die kumulativen Datenblöcke neu sind und sich gegenwärtig nicht in dem Speicher befinden), speichert das Verfahren 500 das komplette Objekt/die komplette Datei und/oder kumulative Datenblöcke und berechnet einen Hashwert für das komplette und gesamte Objekt/die komplette und gesamte Datei im Hintergrund (z. B. in einem Offline-Modus) (Schritt 510). Wenn keine Übereinstimmung gefunden wird, verlässt das Verfahren 500 ebenfalls die Suchoperation, wenn die erste fehlende Übereinstimmung gefunden wird. Das Verfahren 500 kann anschließend den Hashwert des kompletten eindeutigen Objekts in der Master-Hashtabelle „HT-master” speichern (Schritt 512), und das Verfahren 500 kann enden (Schritt 522).
  • Wenn eine Übereinstimmung gefunden wird, bestimmt das Verfahren 500, ob das Ende des Objekts/der Datei erreicht worden ist (Schritt 514). Wenn ein übereinstimmender Hashwert für den bestimmten kumulativen Block gefunden wird, stellt das Verfahren 500 sicher, dass der Hashwert aus der Hash-Indextabelle logisch und der Reihenfolge nach zu derselben Datei gehört wie derjenigen des vorherigen gefundenen Hashwerts. Falls nicht, kehrt das Verfahren 500 zu Schritt 504 zurück und fährt mit Lesevorgängen von „N” Bytes aus dem Objekt/der Datei fort und berechnet einen Hashwert „Hi” für einen Block mit der Größe von M Bytes (Schritt 504). Wenn das Ende der Datei erreicht wird, berechnet das Verfahren 500 einen Hashwert für die gesamte Datei und führt eine Suchoperation in einer Master-Hash-Indextabelle „HT-master” aus (Schritt 516). Das Verfahren 500 bestimmt, ob eine Übereinstimmung zwischen dem berechneten Hashwert für das gesamte/komplette Objekt/die gesamte/komplette Datei und einem Hashwert für eine in dem Speicher bereits vorhandene Datei/ein vorhandenes Objekt vorliegt (Schritt 518). Wenn eine Übereinstimmung gefunden wird, kann das Verfahren 500 eine Datenreduktion durch Verknüpfen mit der Master-Einzeldatei vornehmen (Schritt 520), und das Verfahren 500 kann enden (Schritt 522). Es ist anzumerken, wenn ermittelt wird, dass alle Hashwerte für alle kumulativen Blöcke übereinstimmen, das Objekt/die Datei dedupliziert wird. Auch eine Antwort, die eine Übereinstimmung oder eine fehlende Übereinstimmung angibt, kann jederzeit an den Benutzer zurückgesendet werden.
  • Wenn jedoch keine Übereinstimmung gefunden wird (wenn z. B. eine fehlende Übereinstimmung angibt, dass das Objekt und/oder die kleinen iterativen kumulativen Datenblöcke eindeutig sind, z. B. Objekte, die neu sind und sich gegenwärtig nicht in dem Speicher befinden), speichert das Verfahren 500 den Hashwert des kompletten eindeutigen Objekts in der Master-Hashtabelle „HT-master” (Schritt 512), und das Verfahren 500 endet ebenfalls (Schritt 522).
  • Nur als Beispiel soll folgendes Szenario angenommen werden. Zum Beispiel wird angenommen, dass die komplette Dateigröße 1100240234 Bytes ist (z. B. größer als 1 GB). 1) Die Mechanismen sammeln nur die ersten N1 = 1000 Bytes (die einen kleineren Block bilden) und berechnen dann einen Hashwert für den kleinen Block N1. Eine Suchoperation wird in der Hashtabelle H1000 ausgeführt, die mit Fingerabdrücken (Hashwerten) der ersten 1000 Bytes der in dem Speicher vorhandenen Objekte gefüllt ist. Wenn die Mechanismen eine fehlende Übereinstimmung zwischen den berechneten Hashwerten für den kleinen Block erkennen, stellen die Mechanismen einen Eintrag mit dem neuen Fingerabdruck (Hashwert) in die Hashtabelle H1000 und setzen die Verarbeitung fort. 2) In dem 2. iterativen Schritt sammeln die Mechanismen N2 = 10000 (N1·10) Bytes und berechnen dann einen Hashwert für den kleinen Block N2. Wiederum wird eine Suchoperation ausgeführt, indem der berechnete Hashwert für den kleineren Block N2 mit Fingerabdrücken (Hashwerten) der ersten 1000 Bytes der in dem Speicher vorhandenen Objekte abgeglichen wird, mit denen die Hashtabelle H10000 wie oben beschrieben gefüllt ist. 3). Die Mechanismen setzen die vorgenannten Schritte mit N3 = 100000 (N2·10), N4 = 1000000 (N3·10) usw. fort, bis die Suchoperationen eine Übereinstimmung und/oder eine fehlende Übereinstimmung erkennen.
  • In einem weiteren Beispiel können die Mechanismen einen Block mit einer festen Größe, beispielsweise 1 Megabyte (MB), in jeder Wiederholung verarbeiten, wobei eine Stichprobe mit einer ersten Größe von 1 Kilobyte (KB) aus jedem 1-Megabyte-(MB)Datenblock entnommen wird. Die Mechanismen können einen Hashwert der Stichprobendaten berechnen und nach einer Übereinstimmung in einer Hashtabelle suchen, die der laufenden Wiederholung entspricht. Die Mechanismen setzen diesen Prozess fort, bis eine Übereinstimmung gefunden wird. Die Mechanismen brechen ab, wenn eine fehlende Übereinstimmung gefunden wird und fügen den Hashwert in die Hashtabelle für die n-te Wiederholung (HTi) ein. Die Mechanismen bestimmen, dass die fehlende Übereinstimmung der Stichprobendaten angibt, dass die Stichprobendaten ein eindeutiges Datenobjekt sind.
  • Nur als Beispiel kann die untersuchte Blockgröße in jeder Wiederholung in einer alternativen Ausführungsform logarithmisch erhöht werden, zum Beispiel 1 MB, 2 MB, 4 MB, 8 MB, 16 MB, ... n-te MB, und bei jeder Wiederholung wird die erste 1-K-Größe von Daten aufgenommen und hashverschlüsselt, um eine Übereinstimmung in der entsprechenden Hashtabelle bei dieser Wiederholung zu finden. Die Mechanismen können die Deduplizierungsoperation beenden, sobald entweder eine Übereinstimmung gefunden wurde oder das untersuchte Datenobjekt erschöpft ist. In der Alternative kann der Mechanismus damit fortfahren, den bei jeder Wiederholung berechneten Hash in die entsprechende Hashtabelle einzufügen (,HTi' unter der N-ten Wiederholungsnummer).
  • Es ist anzumerken, dass die Mechanismen der veranschaulichten Ausführungsformen für eine adaptive Inline-Deduplizierungsoperation bereitgestellt werden. Die Mechanismen können selbstanpassend sein, indem sie aus dem Muster lernen, das die Mechanismen aus letzten früheren Beobachtungen beziehen und aufzeichnen. Mit anderen Worten, wenn das Deduplizierungsverhältnis (Deduplizierungsobjekte/gesamte Objekte) hoch ist, kann die volle Größe des Objekts mit weniger Hops erreicht werden, wogegen, wenn das Deduplizierungsverhältnis abnimmt, sich die Anzahl der Hops erhöhen kann. In einem Extremfall können nur die ersten N (z. B. 1000) Bytes geprüft werden, und wenn eine Übereinstimmung gefunden wird, wird der Hash des kompletten Objekts berechnet, andernfalls wird das Objekt als eindeutiges Objekt behandelt. Somit kann der Typ von zu verwendenden Mechanismen (z. B. Algorithmus) flexibel sein und kann je nach Muster von Objekten, die in einem Speichersystem gespeichert sind, angepasst werden.
  • Somit wird mittels der oben beschriebenen Mechanismen eine schnellere, anpassungsfähige Inline-Deduplizierung durch Analysieren einer kürzlichen Historie von empfangenen Objekten erreicht. Zu kleineren Hops kommt es, wenn ein Deduplizierungsverhältnis (d. h. Deduplizierungsobjekte/gesamte untersuchte Objekte) niedrig ist (z. B. wenn mehr eindeutige Objekte gefunden werden, weil die Anzahl von Deduplizierungsobjekten kleiner ist als die der gesamten gefundenen Objekte), und zu größeren Hops kommt es, wenn das Deduplizierungsverhältnis hoch ist (z. B. wenn weniger eindeutige Objekte gefunden werden„ weil die Anzahl von Deduplizierungsobjekten größer ist als die der gesamten gefundenen Objekte). Ein vordefinierter Deduplizierungsschwellenwert kann zum Erstellen einer Mindest-/Maximalmenge und/oder zum Vergleichen, Auswerten und Bestimmen des Verhältnisses verwendet werden. Das Deduplizierungsverhältnis unterstützt ein Verringern der Anzahl von Suchoperationen, die zur Deduplizierung von Objekten erforderlich sind, und erhöht die Möglichkeiten zum Bestimmen, welche Objekte eindeutig sind, in einer schnellen und beschleunigteren Weise. Dies schafft die Voraussetzungen für ein Vermeiden einer unnötigen Berechnung von Hashwerten für das gesamte Objekt während der Laufzeit für eindeutige Objekte. In einer Ausführungsform kann sich der Mechanismus selbst mit Mustern von Objekten anpassen, die er beobachtet und aus einem erfassten Feedback bestimmt, wodurch größere Hops ausgeführt werden, wenn das Deduplizierungsverhältnis (Deduplizierungsobjekte/gesamte Objekte) hoch ist (wenn z. B. das Deduplizierungsverhältnis größer als ein vordefinierter Schwellenwert ist, werden die n-ten Wiederholungen weniger), und kleinere Hops, wenn das Deduplizierungsverhältnis niedrig ist (wenn z. B. das Deduplizierungsverhältnis kleiner als ein vordefinierter Schwellenwert ist, nehmen die n-ten Wiederholungen zu). Mit anderen Worten, die n-ten Wiederholungen können weniger werden, wenn das Deduplizierungsverhältnis größer wird, und die n-ten Deduplizierungen können zunehmen, wenn das Deduplizierungsverhältnis kleiner wird. Dies unterstützt ein Verringern von Laufzeit-Berechnungen, die zur Deduplizierung erforderlich sind, und ein Vermindern der Antwortlatenz, was dazu führt, dass die Deduplizierungs-Engine bzw. das Deduplizierungsmodul schneller ausgeführt wird.
  • Wie oben beschrieben, stellen verschiedene Ausführungsformen Verfahren, Systeme und Computerprogrammprodukte für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung bereit. Die Mechanismen der Ausführungsformen berechnen mithilfe einer Prozessoreinheit in der Datenverarbeitungsumgebung Hashwerte in n-ten Wiederholungen für kumulative Datenblöcke, die aus einem zur Inline-Deduplizierung angeforderten Objekt extrahiert werden. Das Verfahren weist ferner für jede der n-ten Wiederholungen ein Abgleichen der berechneten Hashwerte für die kumulativen Datenblöcke in einer n-ten Hash-Indextabelle mit einem entsprechenden Hashwert von vorhandenen Objekten in dem Speicher auf. Die n-te Hash-Indextabelle wird für jeden der kumulativen Datenblöcke aufgebaut. Die n-te Hash-Indextabelle wird verlassen, nachdem eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke während des Abgleichens erkannt wird. Die fehlende Übereinstimmung wird als ein eindeutiges Objekt bestimmt und wird gespeichert. Dem Client wird mit einem Zustand „Erfolg” beim Erstellen eines Objekts in dem Objektspeicher geantwortet. Der Hashwert für das gesamte Objekt wird als Teil einer Offline-Nachverarbeitung berechnet. Eine Master-Hash-Indextabelle wird mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert. In der Offline-Verarbeitung wird auch die n-te Indextabelle mit dem Hashwert an der n-ten Wiederholung der kumulativen Datenblöcke des neuen eindeutigen Objekts aktualisiert.
  • Wie einem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Gestalt eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode ausgeführt ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein physisches computerlesbares Speichermedium sein. Ein physisches computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, Quarz-, Polymer-, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu Beispielen für ein physisches computerlesbares Speichermedium zählen eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein EPROM, ein Flash-Speicher, ein Lichtwellenleiter, ein CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten, sie sind aber nicht darauf beschränkt. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm oder Daten zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
  • In einem computerlesbaren Medium verkörperter Computercode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, Funkfrequenz (HF) usw. oder jede geeignete Kombination des Vorgenannten, ist aber nicht darauf beschränkt. Computercode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder statischen Sprache geschrieben werden wie beispielsweise der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Computercode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk oder Datenübertragungssystem verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), ein konvergentes Netzwerk, oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters), es ist jedoch nicht darauf beschränkt.
  • Aspekte der vorliegenden Erfindung werden im Vorgenannten unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den vorgenannten Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
  • Obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht worden sind, wird für Fachleute offenkundig sein, dass an diesen Ausführungsformen Modifizierungen und Anpassungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.

Claims (27)

  1. Verfahren für eine erhöhte Inline-Deduplizierungseffizienz durch eine Prozessoreinheit in einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist: Berechnen von Hashwerten in n-ten Wiederholungen für kumulative Datenblöcke, die aus einem Objekt extrahiert wurden, das zur Inline-Deduplizierung angefordert wurde; Abgleichen der berechneten Hashwerte in einer n-ten Hash-Indextabelle für jede der n-ten Wiederholungen für die kumulativen Datenblöcke mit einem entsprechenden Hashwert von vorhandenen Objekten in dem Speicher, wobei die n-te Hash-Indextabelle für jeden der kumulativen Datenblöcke aufgebaut wird; Verlassen der n-ten Hash-Indextabelle, wenn während des Abgleichens eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke erkannt wird, wobei die fehlende Übereinstimmung als ein eindeutiges Objekt bestimmt wird und gespeichert wird; und Berechnen eines Hashwerts für das Objekt, wobei eine Master-Hash-Indextabelle mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert wird.
  2. Verfahren nach Anspruch 1, das ferner ein Erhöhen der Größe der kumulativen Datenblöcke für jede der n-ten Wiederholungen enthält, um die volle Größe des Objekts zu erreichen.
  3. Verfahren nach Anspruch 2, wobei das Erhöhen der Größe der kumulativen Datenblöcke ein logarithmisches Erhöhen der Größe der kumulativen Datenblöcke enthält.
  4. Verfahren nach Anspruch 1, das ferner ein Bestimmen einer Vielzahl von Mustern aus historischen Daten auf der Grundlage eines Deduplizierungsverhältnisses enthält, wobei die n-ten Wiederholungen weniger werden, wenn das Deduplizierungsverhältnis größer wird, und die n-ten Wiederholungen zunehmen, wenn das Deduplizierungsverhältnis kleiner wird.
  5. Verfahren nach Anspruch 1, das ferner nach einem Abschließen der Extraktion der kumulativen Datenblöcke in dem Objekt und einem Ausführen des Abgleichens ohne Erkennen einer fehlenden Übereinstimmung in der n-ten Hash-Indextabelle ein Ausführen des Abgleichens in der Master-Hash-Indextabelle für den berechneten Hashwert des Objekts enthält.
  6. Verfahren nach Anspruch 5, das ferner nach einem Erkennen einer fehlenden Übereinstimmung in der Master-Hash-Indextabelle ein Speichern des Objekts und ein Aktualisieren der Master-Hash-Indextabelle enthält.
  7. Verfahren nach Anspruch 6, das ferner nach einem Erkennen einer fehlenden Übereinstimmung während des Abgleichens in einem von der Master-Indextabelle und der n-ten Hash-Indextabelle ein Beenden der Inline-Deduplizierung und ein Senden einer Erfolgsantwort an einen Client enthält.
  8. Verfahren nach Anspruch 1, das ferner ein Ausführen des Berechnens eines Hashwerts für das Objekt im Offline-Modus enthält.
  9. Verfahren nach Anspruch 1, das ferner in Verbindung mit dem Abgleichen, ob für die berechneten Hashwerte für die kumulativen Datenblöcke eine Übereinstimmung mit dem entsprechenden Hashwert der vorhandenen Objekte in dem Speicher gefunden wird, ein Fortsetzen des Extrahierens von Daten aus dem Objekt enthält, um einen n-ten der kumulativen Datenblöcke aufzubauen.
  10. System für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung, wobei das System aufweist: eine Prozessoreinheit, die in der Datenverarbeitungsumgebung betriebsfähig ist, wobei die Prozessoreinheit angepasst ist, um: Hashwerte in n-ten Wiederholungen für kumulative Datenblöcke zu berechnen, die aus einem Objekt extrahiert wurden, das zur Inline-Deduplizierung angefordert wurde, für jede der n-ten Wiederholungen die berechneten Hashwerte in einer n-ten Hash-Indextabelle für die kumulativen Datenblöcke mit einem entsprechenden Hashwert von vorhandenen Objekten in dem Speicher abzugleichen, wobei die n-te Hash-Indextabelle für jeden der kumulativen Datenblöcke aufgebaut wird, die n-te Hash-Indextabelle zu verlassen, wenn während des Abgleichens eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke erkannt wird, wobei die fehlende Übereinstimmung als ein eindeutiges Objekt bestimmt wird und gespeichert wird, und einen Hashwert für das Objekt zu berechnen, wobei eine Master-Hash-Indextabelle mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert wird.
  11. System nach Anspruch 10, wobei die Prozessoreinheit ferner angepasst ist, um die Größe der kumulativen Datenblöcke für jede der n-ten Wiederholungen zu erhöhen, um die volle Größe des Objekts zu erreichen.
  12. System nach Anspruch 11, wobei die Größe der kumulativen Datenblöcke logarithmisch erhöht wird.
  13. System nach Anspruch 10, wobei die Prozessoreinheit ferner angepasst ist, um eine Vielzahl von Mustern aus historischen Daten für das Erhöhen auf der Grundlage eines Deduplizierungsverhältnisses zu bestimmen, wobei die n-ten Wiederholungen weniger werden, wenn das Deduplizierungsverhältnis größer wird, und die n-ten Wiederholungen zunehmen, wenn das Deduplizierungsverhältnis kleiner wird.
  14. System nach Anspruch 10, wobei die Prozessoreinheit ferner angepasst ist, um nach einem Abschließen der Extraktion der kumulativen Datenblöcke in dem Objekt und einem Ausführen des Abgleichens ohne Erkennen einer fehlenden Übereinstimmung in der n-ten Hash-Indextabelle das Abgleichen in der Master-Hash-Indextabelle für den berechneten Hashwert des Objekts auszuführen.
  15. System nach Anspruch 14, wobei die Prozessoreinheit ferner angepasst ist, um nach einem Erkennen einer fehlenden Übereinstimmung in der Master-Hash-Indextabelle das Objekt zu speichern und die Master-Hash-Indextabelle zu aktualisieren.
  16. System nach Anspruch 15, wobei die Prozessoreinheit ferner angepasst ist, um nach einem Erkennen einer fehlenden Übereinstimmung während des Abgleichens in einem von der Master-Indextabelle und der n-ten Hash-Indextabelle die Inline-Deduplizierung zu beenden und eine Erfolgsantwort an einen Client zu senden.
  17. System nach Anspruch 10, wobei die Prozessoreinheit ferner angepasst ist, um das Berechnen eines Hashwerts für das Objekt im Offline-Modus auszuführen.
  18. System nach Anspruch 10, wobei die Prozessoreinheit ferner angepasst ist, um in Verbindung mit dem Abgleichen, ob für die berechneten Hashwerte für die kumulativen Datenblöcke eine Übereinstimmung mit dem entsprechenden Hashwert der vorhandenen Objekte in dem Speicher gefunden wird, ein Extrahieren von Daten aus dem Objekt fortzusetzen, um einen n-ten der kumulativen Datenblöcke aufzubauen.
  19. Computerprogrammprodukt für eine erhöhte Inline-Deduplizierungseffizienz in einer Datenverarbeitungsumgebung durch eine Prozessoreinheit, wobei das Computerprogrammprodukt ein nicht-transitorisches computerlesbares Speichermedium mit darin gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt, um in n-ten Wiederholungen Hashwerte für kumulative Datenblöcke zu berechnen, die aus einem Objekt extrahiert wurden, das zur Inline-Deduplizierung angefordert wurde; für jede der n-ten Wiederholungen einen zweiten ausführbaren Abschnitt, der die berechneten Hashwerte für die kumulativen Datenblöcke in einer n-ten Hash-Indextabelle mit einem entsprechenden Hashwert von vorhandenen Objekten in dem Speicher abgleicht, wobei die n-te Hash-Indextabelle für jeden der kumulativen Datenblöcke aufgebaut wird; einen dritten ausführbaren Abschnitt, um die n-te Hash-Indextabelle zu verlassen, wenn während des Abgleichens eine fehlende Übereinstimmung der berechneten Hashwerte für einen der kumulativen Datenblöcke erkannt wird, wobei die fehlende Übereinstimmung als ein eindeutiges Objekt bestimmt wird und gespeichert wird; und einen vierten ausführbaren Abschnitt, der einen Hashwert für das Objekt berechnet, wobei eine Master-Hash-Indextabelle mit dem berechneten Hashwert für das Objekt und den berechneten Hashwerten für das eindeutige Objekt aktualisiert wird.
  20. Computerprogrammprodukt nach Anspruch 19, das ferner einen fünften ausführbaren Abschnitt zum Erhöhen der Größe der kumulativen Datenblöcke für jede der n-ten Wiederholungen enthält, um die volle Größe des Objekts zu erreichen.
  21. Computerprogrammprodukt nach Anspruch 20, das ferner einen sechsten ausführbaren Abschnitt enthält, um im Anschluss an das Erhöhen der Größe der kumulativen Datenblöcke die kumulativen Datenblöcke logarithmisch zu erhöhen.
  22. Computerprogrammprodukt nach Anspruch 19, das ferner einen fünften ausführbaren Abschnitt enthält, um eine Vielzahl von Mustern aus historischen Daten für das Erhöhen auf der Grundlage eines Deduplizierungsverhältnisses zu bestimmen, wobei die n-ten Wiederholungen weniger werden, wenn das Deduplizierungsverhältnis größer wird, und die n-ten Wiederholungen zunehmen, wenn das Deduplizierungsverhältnis kleiner wird.
  23. Computerprogrammprodukt nach Anspruch 19, das ferner einen fünften ausführbaren Abschnitt enthält, um nach einem Abschließen der Extraktion der kumulativen Datenblöcke in dem Objekt und einem Ausführen des Abgleichens ohne Erkennen einer fehlenden Übereinstimmung in der n-ten Hash-Indextabelle das Abgleichen in der Master-Hash-Indextabelle für den berechneten Hashwert des Objekts auszuführen.
  24. Computerprogrammprodukt nach Anspruch 23, das ferner einen sechsten ausführbaren Abschnitt enthält, um nach einem Erkennen einer fehlenden Übereinstimmung in der Master-Hash-Indextabelle das Objekt zu speichern und die Master-Hash-Indextabelle zu aktualisieren.
  25. Computerprogrammprodukt nach Anspruch 24, das ferner einen siebten ausführbaren Abschnitt enthält, um nach einem Erkennen einer fehlenden Übereinstimmung während des Abgleichens in einem von der Master-Indextabelle und der n-ten Hash-Indextabelle die Inline-Deduplizierung zu beenden und eine Erfolgsantwort an einen Client zu senden.
  26. Computerprogrammprodukt nach Anspruch 19, das ferner einen fünften ausführbaren Abschnitt enthält, um das Berechnen eines Hashwerts für das Objekt im Offline-Modus auszuführen.
  27. Computerprogrammprodukt nach Anspruch 19, das ferner einen fünften ausführbaren Abschnitt enthält, um in Verbindung mit dem Abgleichen, ob für die berechneten Hashwerte für die kumulativen Datenblöcke eine Übereinstimmung mit dem entsprechenden Hashwert der vorhandenen Objekte in dem Speicher gefunden wird, ein Extrahieren von Daten aus dem Objekt fortzusetzen, um einen n-ten der kumulativen Datenblöcke aufzubauen.
DE112013001905.1T 2012-04-05 2013-01-08 Erhöhte Inline-Deduplizierungseffizienz Active DE112013001905B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/440,606 2012-04-05
US13/440,606 US8682869B2 (en) 2012-04-05 2012-04-05 Increased in-line deduplication efficiency
PCT/CN2013/070179 WO2013149501A1 (en) 2012-04-05 2013-01-08 Increased in-line deduplication efficiency

Publications (2)

Publication Number Publication Date
DE112013001905T5 DE112013001905T5 (de) 2014-12-24
DE112013001905B4 true DE112013001905B4 (de) 2015-11-26

Family

ID=49293136

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013001905.1T Active DE112013001905B4 (de) 2012-04-05 2013-01-08 Erhöhte Inline-Deduplizierungseffizienz

Country Status (5)

Country Link
US (1) US8682869B2 (de)
CN (1) CN104205066B (de)
DE (1) DE112013001905B4 (de)
GB (1) GB2513514A (de)
WO (1) WO2013149501A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788468B2 (en) * 2012-05-24 2014-07-22 International Business Machines Corporation Data depulication using short term history
US20150170508A1 (en) * 2013-12-16 2015-06-18 Alcatel-Lucent Usa Inc. System and method for managing data center alarms
US9652468B2 (en) * 2013-12-17 2017-05-16 Annapurna Labs Ltd. In-band de-duplication
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US10628353B2 (en) 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
AU2015229802A1 (en) 2014-03-08 2016-10-06 Diamanti, Inc. Methods and systems for converged networking and storage
US11921658B2 (en) 2014-03-08 2024-03-05 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US10169358B2 (en) 2015-10-08 2019-01-01 International Business Machines Corporation Data deduplication using a small hash table
US10261946B2 (en) 2016-01-12 2019-04-16 International Business Machines Corporation Rebalancing distributed metadata
US10255288B2 (en) * 2016-01-12 2019-04-09 International Business Machines Corporation Distributed data deduplication in a grid of processors
US10242021B2 (en) 2016-01-12 2019-03-26 International Business Machines Corporation Storing data deduplication metadata in a grid of processors
US10853257B1 (en) * 2016-06-24 2020-12-01 EMC IP Holding Company LLC Zero detection within sub-track compression domains
US10282125B2 (en) * 2017-04-17 2019-05-07 International Business Machines Corporation Distributed content deduplication using hash-trees with adaptive resource utilization in distributed file systems
US10235080B2 (en) 2017-06-06 2019-03-19 Saudi Arabian Oil Company Systems and methods for assessing upstream oil and gas electronic data duplication
CN110427391B (zh) * 2018-04-28 2023-07-28 伊姆西Ip控股有限责任公司 确定重复数据的方法、设备和计算机程序产品
US11237743B2 (en) * 2019-04-29 2022-02-01 EMC IP Holding Company LLC Sub-block deduplication using sector hashing
WO2020237687A1 (zh) * 2019-05-31 2020-12-03 深圳市大疆创新科技有限公司 网络结构搜索的方法及装置、计算机存储介质和计算机程序产品
CN113448491B (zh) * 2020-03-26 2024-05-17 伊姆西Ip控股有限责任公司 存储系统的数据迁移
AU2021203075A1 (en) * 2020-05-13 2021-12-02 Magnet Forensics Inc. System and method for identifying files based on hash values
US11797220B2 (en) 2021-08-20 2023-10-24 Cohesity, Inc. Reducing memory usage in storing metadata
US11947497B2 (en) * 2021-08-24 2024-04-02 Cohesity, Inc. Partial in-line deduplication and partial post-processing deduplication of data chunks
CN113986911B (zh) * 2021-12-29 2022-04-01 中国气象局气象探测中心 一种用于赛场运行监测的信息采集方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008147516A1 (en) * 2007-05-22 2008-12-04 Network Appliance, Inc. System and method for on-the-fly elimination of redundant date
US20090271454A1 (en) * 2008-04-29 2009-10-29 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US20100250501A1 (en) * 2009-03-26 2010-09-30 International Business Machines Corporation Storage management through adaptive deduplication
US20110185149A1 (en) * 2010-01-27 2011-07-28 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
US20110246741A1 (en) * 2010-04-01 2011-10-06 Oracle International Corporation Data deduplication dictionary system
US20110276781A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Fast and Low-RAM-Footprint Indexing for Data Deduplication

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8200641B2 (en) * 2009-09-11 2012-06-12 Dell Products L.P. Dictionary for data deduplication
AU2010200866B1 (en) * 2010-03-08 2010-09-23 Quantum Corporation Data reduction indexing
US9053032B2 (en) * 2010-05-05 2015-06-09 Microsoft Technology Licensing, Llc Fast and low-RAM-footprint indexing for data deduplication
US9678688B2 (en) * 2010-07-16 2017-06-13 EMC IP Holding Company LLC System and method for data deduplication for disk storage subsystems
CN201804331U (zh) 2010-09-21 2011-04-20 北京同有飞骥科技股份有限公司 一种基于协处理器的重复数据删除系统
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
US9110936B2 (en) * 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
US9639543B2 (en) * 2010-12-28 2017-05-02 Microsoft Technology Licensing, Llc Adaptive index for data deduplication
GB2477607B (en) * 2011-01-17 2011-12-28 Quantum Corp Sampling based data de-duplication
US8521705B2 (en) * 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008147516A1 (en) * 2007-05-22 2008-12-04 Network Appliance, Inc. System and method for on-the-fly elimination of redundant date
US20090271454A1 (en) * 2008-04-29 2009-10-29 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US20100250501A1 (en) * 2009-03-26 2010-09-30 International Business Machines Corporation Storage management through adaptive deduplication
US20110185149A1 (en) * 2010-01-27 2011-07-28 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
US20110246741A1 (en) * 2010-04-01 2011-10-06 Oracle International Corporation Data deduplication dictionary system
US20110276781A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Fast and Low-RAM-Footprint Indexing for Data Deduplication

Also Published As

Publication number Publication date
WO2013149501A1 (en) 2013-10-10
CN104205066B (zh) 2017-02-22
GB2513514A (en) 2014-10-29
GB201414526D0 (en) 2014-10-01
US20130268496A1 (en) 2013-10-10
CN104205066A (zh) 2014-12-10
US8682869B2 (en) 2014-03-25
DE112013001905T5 (de) 2014-12-24

Similar Documents

Publication Publication Date Title
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102013211071B4 (de) Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112012004937T5 (de) Fingerabdruckbasierte Datendeduplizierung
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE102012215665B4 (de) Dynamische Änderung der TTL-Werte in einem Datencache
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112010003262B4 (de) Synchronisierung replizierter sequenzieller Zugriffsspeicherkomponenten
DE112011100819T5 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112012003503T5 (de) Skalierbares Deduplizierungssystem mit kleinen Blöcken
DE112013000734B4 (de) Multiplex-Klassifizierung zum Komprimieren von Tabellendaten
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112012005275T5 (de) Datenauswahl zur Sicherung von Datenspeichern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0017300000

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