DE112017000167T5 - Verteilte Datendeduplizierung in einem Prozessorraster - Google Patents

Verteilte Datendeduplizierung in einem Prozessorraster Download PDF

Info

Publication number
DE112017000167T5
DE112017000167T5 DE112017000167.6T DE112017000167T DE112017000167T5 DE 112017000167 T5 DE112017000167 T5 DE 112017000167T5 DE 112017000167 T DE112017000167 T DE 112017000167T DE 112017000167 T5 DE112017000167 T5 DE 112017000167T5
Authority
DE
Germany
Prior art keywords
processor
owner
processors
identical data
similarity
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.)
Granted
Application number
DE112017000167.6T
Other languages
English (en)
Other versions
DE112017000167B4 (de
Inventor
Lior Aronovich
Vincenzo Pasquantonio
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 DE112017000167T5 publication Critical patent/DE112017000167T5/de
Application granted granted Critical
Publication of DE112017000167B4 publication Critical patent/DE112017000167B4/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

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

Es geht um ein Verfahren zur verteilten Datendeduplizierung in einem Prozessorraster. Eingabedaten werden auf einem Prozessor empfangen. Die Eingabedaten werden in eine Vielzahl von Ähnlichkeitseinheiten aufgeteilt. Es werden ein entsprechender Deduplizierungsmetadatenausschnitt und ein Eignerprozessor für eine der Ähnlichkeitseinheiten berechnet. Ein repräsentativer Wert und entsprechende Auszugswerte der Ähnlichkeitseinheit werden an den Eignerprozessor gesendet. Der Eignerprozessor wird zum Suchen nach dem repräsentativen Wert in dem Deduplizierungsmetadatenausschnitt und zum Senden einer Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten an den Prozessor verwendet. Der Prozessor wird zum Senden von nominalen Informationen über die berechneten identischen Datenabschnitte an die Eignerprozessoren der Daten verwendet, auf die durch die berechneten identischen Datenabschnitte verwiesen wird.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein Computer und konkret die verteilte Datendeduplizierung in einem Prozessorraster in einer Datenverarbeitungsumgebung.
  • HINTERGRUND
  • In der heutigen Gesellschaft sind Computersysteme alltäglich. Computersysteme findet man beispielsweise am Arbeitsplatz, zu Hause oder in der Schule. Zu Computersystemen können Datenspeichersysteme bzw. Plattenspeichersysteme zum Verarbeiten und Speichern von Daten gehören. Täglich müssen große Datenmengen verarbeitet werden, und die aktuelle Tendenz deutet darauf hin, dass diese Mengen in absehbarer Zukunft weiter ansteigen werden. Eine wirksame Weise zum Lösen des Problems besteht in der Verwendung von Deduplizierung. Der einem Deduplizierungssystem zugrunde liegende Gedanke besteht darin, die Tatsache auszunutzen, dass große Teile der verfügbaren Daten immer wieder kopiert werden, indem wiederholte Daten ausfindig gemacht und lediglich beim ersten Vorkommen gespeichert werden. Nachfolgende Kopien werden mit Verweisen auf das gespeicherte Vorkommen ersetzt, wodurch die Speicheranforderungen erheblich verringert werden, wenn sich die Daten tatsächlich wiederholen.
  • KURZDARSTELLUNG
  • Es werden Ausführungsformen für eine verteilte Datendeduplizierung in einem Prozessorraster bereitgestellt. In einer Ausführungsform werden Eingabedaten lediglich beispielhaft auf einem aufnehmenden Prozessor empfangen. Die Eingabedaten werden in eine Vielzahl von Ähnlichkeitseinheiten aufgeteilt. Es werden ein entsprechender Deduplizierungsmetadatenausschnitt (deduplication metadata slice) und ein Eignerprozessor für eine der Ähnlichkeitseinheiten berechnet. Ein repräsentativer Wert und entsprechende Auszugswerte (digest values) der Ähnlichkeitseinheit werden an den Eignerprozessor gesendet. Der Eignerprozessor wird zum Suchen nach dem repräsentativen Wert in dem Deduplizierungsmetadatenausschnitt und zum Senden einer Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten an den aufnehmenden Prozessor verwendet. Der aufnehmende Prozessor wird zum Senden von nominalen Informationen über die berechneten identischen Datenabschnitte an die Eignerprozessoren der Daten verwendet, auf die durch die berechneten identischen Datenabschnitte verwiesen wird. Die Eignerprozessoren der Daten, auf die durch die berechneten identischen Datenabschnitte verwiesen wird, werden dazu verwendet, an den aufnehmenden Prozessor mit Informationen über Speicherblöcke zu antworten, welche die Daten speichern, auf die durch die identischen Datenabschnitte verwiesen wird.
  • Zusätzlich zu der vorangegangenen beispielhaften Ausführungsform eines Verfahrens werden andere beispielhafte Ausführungsformen von Systemen und Computerprodukten bereitgestellt, die ähnliche Vorteile bereitstellen.
  • Figurenliste
  • Damit die Vorteile der Erfindung ohne Weiteres verstanden werden, wird eine ausführlichere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf spezifische Ausführungsformen angeführt, die in den beigefügten Zeichnungen veranschaulicht werden. Unter dem Verständnis, dass diese Zeichnungen Ausführungsformen der Erfindung abbilden und deshalb nicht als deren Umfang einschränkend anzusehen sind, wird die Erfindung durch die Verwendung der beigefügten Zeichnungen mit zusätzlicher Genauigkeit und Ausführlichkeit erläutert, in denen:
    • 1 ein Blockschaubild ist, das eine Datenverarbeitungssystemumgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 2 ein Blockschaubild ist, das eine Hardwarestruktur eines Datenspeichersystems veranschaulicht, in dem Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 3 ein Blockschaubild einer beispielhaften Ausführungsform zum Speichern von Datendeduplizierungsmetadaten in einem Prozessorraster in einer Shared-Nothing-Architektur ist, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 4 ein Blockschaubild einer beispielhaften Methodik zur globalen verteilten Datendeduplizierung in einem Shared-Nothing-Prozessorraster ist, einschließlich einer beispielhaften Architektur und einer Abfolge von Nachrichten, in der wiederum Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 5A ein Ablaufplan eines beispielhaften Verfahrens zur globalen verteilten Datendeduplizierung in einem Shared-Nothing-Prozessorraster gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 5B eine Fortsetzung des zuvor zuerst in 5A dargestellten Ablaufplans ist;
    • 6 ein Blockschaubild eines beispielhaften konsistenten Zuordnens von repräsentativen Werten zu Datendeduplizierungsmetadatenausschnitten gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 7 ein Blockschaubild einer beispielhaften Ausführungsform zum Neuverteilen von Deduplizierungsmetadaten, wenn ein Prozessor zu dem Prozessorraster hinzugefügt wird, ist, wobei hier der eingegebene repräsentative Wert in der Suchkette gefunden wird, in der wiederum Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 8 ein Blockschaubild einer zusätzlichen beispielhaften Ausführungsform zum Neuverteilen von Deduplizierungsmetadaten, wenn ein Prozessor zu dem Prozessorraster hinzugefügt wird, ist, wobei hier die Suchkette einen vollständig neu verteilten Prozessor erreicht und der eingegebene repräsentative Wert nicht gefunden wird, in der wiederum Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 9 ein Ablaufplan eines beispielhaften Verfahrens zum Speichern von Datendeduplizierungsmetadaten in einem Prozessorraster gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 10 ein Ablaufplan eines beispielhaften Verfahrens zum Neuverteilen von verteilten Deduplizierungsmetadaten auf Prozessoren gemäß einer Ausführungsform der vorliegenden Erfindung ist; und
    • 11 ein Ablaufplan eines beispielhaften Verfahrens zur verteilten, skalierbaren Datendeduplizierung gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Datendeduplizierung ist ein äußerst wichtiges und dynamisches Feld in Datenverarbeitungsspeichersystemen. Datendeduplizierung bezieht sich auf das Verringern und/oder Beseitigen von redundanten Daten. Bei der Datendeduplizierung wird ein Datenobjekt, bei dem es sich um eine Datei, einen Datenstrom oder eine andere Datenform handeln kann, in einen oder mehrere Chunks oder Blöcke genannte Teile aufgeteilt. Bei einem Datendeduplizierungsprozess werden doppelte Datenkopien verringert oder beseitigt, wodurch eine minimale Menge von redundanten Kopien bzw. eine einzelne Kopie der Daten übrigbleiben. Das Ziel eines Datendeduplizierungssystems besteht im Speichern einer einzelnen Kopie von duplizierten Daten, und die Herausforderungen beim Erreichen dieses Ziels liegen im effizienten Finden der duplizierten Datenmuster in einem üblicherweise großen Repository und dem Speichern der Datenmuster in einer speichereffizienten deduplizierten Form.
  • Bestehende verteilte Deduplizierungstechnologien werden üblicherweise durch ihre unterstützten Größen von Daten-Repositories begrenzt. Viele bestehende Deduplizierungstechnologien beruhen darauf, einen Index von als Fingerabdruck oder Auszug bekannten Werten zu pflegen, wobei ein kleiner Fingerabdruck (zum Beispiel im Bereich von 16 Byte bis 64 Byte) einen größeren Deduplizierungsdatenblock (zum Beispiel im Bereich von 4 kB bis 256 kB) in dem Repository darstellt. Bei den Fingerabdruckwerten handelt es sich im Allgemeinen um kryptografische Hash-Werte, die beruhend auf den Daten der Segmente zum Beispiel unter Verwendung von SHA-1 oder SHA-256 berechnet werden. Das Erkennen von Übereinstimmungen von Fingerabdrücken unter Verwendung von Index-Nachschlagen ermöglicht das Erkennen von Datenübereinstimmungen und das anschließende Speichern von Verweisen auf Daten, die bereits in einem Repository vorhanden sind.
  • Bei diesem Ansatz verringern größere Deduplizierungsblöcke die Auflösung und Effektivität der Deduplizierung, und kleinere Deduplizierungsblöcke erzeugen eine große Anzahl von zu speichernden Fingerabdrücken, was in Verbindung mit der Größe eines Fingerabdrucks unerschwinglich sein kann. Zum Beispiel beträgt der zum Speichern der Fingerabdrücke benötigte Speicher für 1 Petabyte an deduplizierten Daten mit einer Blockgröße von 4 KB und einer Fingerabdruckgröße von 32 Byte (z.B. mit SHA-256) 8 Terabyte. Das Pflegen eines Fingerabdruckindexes für derartige Umfänge von Fingerabdrücken ist üblicherweise schwierig, und vorhandene Techniken skalieren nicht auf diese Größen und behalten dabei die Leistungsfähigkeit bei. Deshalb unterstützen auf Hash-Werten beruhende Deduplizierungstechnologien üblicherweise relativ kleinere Repositories (in der Größenordnung von zig TB).
  • Bestehende verteilte Deduplizierungstechnologien beruhen in der Regel auf dem oben genannten Hash-Deduplizierungsansatz und sind daher üblicherweise in ihrer Größe und Leistung begrenzt. Um diese Herausforderung anzugehen, wurden auf Ähnlichkeit beruhende Datendeduplizierungsansätze vorgestellt, die das Erreichen einer effizienten Datendeduplizierung mit kleinen Datenblöcken ermöglichen, indem ein zweistufiger Prozess für die Datensuche während der Deduplizierung verwendet wird. In einem ersten Schritt werden ähnliche Daten in einem Repository gesucht. Die Granularität für diesen Schritt sind große Datenblöcke, z.B. 8 MB. In einem zweiten Schritt werden Übereinstimmungen von identischen Daten in den ähnlichen Eingabe- und Repository-Daten ermittelt. Die Granularität für diesen Schritt sind kleinere Datenblöcke, z.B. 2 kB. Je nach verwendetem Abgleichalgorithmus wird auch eine Granularität von einem einzelnen Byte unterstützt. Darüber hinaus ist in dem ersten Schritt eine Berechnung von Ähnlichkeitseigenschaften sowie von Auszugssegmenten und entsprechenden Auszugswerten des Eingabe-Daten-Chunk beinhaltet. Diese Berechnungen beruhen auf einer einzelnen Berechnung von rollierenden Hash-Werten. In dem zweiten Schritt werden Referenzauszüge der ähnlichen Repository-Intervalle abgerufen, und dann werden die Eingabeauszüge mit den Referenzauszügen abgeglichen, um Datenübereinstimmungen zu erkennen.
  • Der auf Ähnlichkeit beruhende Datendeduplizierungsansatz ist skalierbar und effizient, da der in dem Ähnlichkeitsschritt verwendete Index kompakt und einfach zu pflegen und durchsuchbar ist. Dies liegt daran, dass die für die Ähnlichkeitssuche verwendeten Darstellungselemente im Verhältnis zu den Daten, die sie darstellen, sehr kompakt sind, z.B. stellen 16 Byte 4 Megabyte dar. Sobald ähnliche Daten gefunden wurden, werden Auszüge der ähnlichen Daten oder die ähnlichen Daten selbst in den Hauptspeicher geladen, um einen effizienten Datenabgleichprozess durchzuführen, der eine Hash-Suchfunktion nutzt. Dieser Prozess des zweiten Schrittes ist auch in Bezug auf Speicher und Verarbeitungszeit effizient. Insgesamt stellt der auf Ähnlichkeit beruhende Ansatz der Datendeduplizierung eine Skalierbarkeit für sehr große Daten-Repositories sowie eine hohe Effizienz und Leistungsfähigkeit bereit.
  • In einer aktuellen Umsetzung der auf Ähnlichkeit beruhenden Datendeduplizierung wird der Ähnlichkeitsindex in einem gemeinsam genutzten Speicher abgelegt. Diese aktuelle Umsetzung unterstützt keine Shared-Nothing-Architektur, d.h. wenn kein Massenspeicher gemeinsam von Prozessoren in einem Prozessorraster genutzt wird, und ist darüber hinaus auf eine geringe Anzahl von Prozessoren beschränkt, um effizient zu bleiben, und ist somit nicht skalierbar.
  • Um eine verteilte Shared-Nothing-Architektur mit einer großen Anzahl von Prozessoren (z.B. Tausende) zu unterstützen und eine globale, rasterweite, hochauflösende und effiziente Datendeduplizierung für große Datenkapazitäten in dieser verteilten Umgebung bereitzustellen, sind neue Deduplizierungsmechanismen von Vorteil. Im Allgemeinen ist die hochverteilte und globale Datendeduplizierung ein aufstrebendes Feld mit einem breiten Anwendungsbereich. Darüber hinaus wollen verschiedene Unternehmen ihre hochverteilten Speicher- und Dateisysteme um Daten-Deduplizierungsfunktionen erweitern, wovon neue Deduplizierungsmechanismen profitieren würden.
  • Angesichts des Vorangehenden gehen die Mechanismen der veranschaulichten Ausführungsformen die folgende Herausforderung an, wobei sie noch andere vorteilhafte Aspekte haben. In einem Prozessorraster in der Größenordnung von Tausenden von Prozessoren und mit Unterstützung des dynamischen Hinzufügens, Entfernens und Wiederherstellens nach einem Ausfall von Prozessoren kann ein Ziel im Umsetzen einer Datendeduplizierungstechnologie bestehen, die vorteilhafte Eigenschaften bereitstellt, wie zum Beispiel (1) eine globale, rasterweite Datendeduplizierung, (2) Unterstützung einer sehr großen Datenkapazität mit einer Skalierung von bis zu Petabyte an Daten, (3) eine hoch auflösende Deduplizierung, und zwar: es sollten kleine Blöcke in der Größenordnung von einigen Kilobyte oder weniger für die Deduplizierung verwendet werden, (4) eine effiziente Inline-Deduplizierung, und zwar: der Ressourcenverbrauch des Deduplizierungsmechanismus sollte gering sein, und die Deduplizierung sollte linear mit dem Dateneingabeprozess durchgeführt werden, und (5) Fehlertoleranz. Wenngleich das Ziel im Hinblick auf eine Shared-Nothing-Architektur in Betracht gezogen werden kann, ist es auch von Vorteil, wenn Mechanismen die vorstehend erörterten Vorteile auf Shared-Storage-Architekturen anwenden.
  • Die Mechanismen der nachfolgend veranschaulichten Ausführungsformen gehen auf das oben vorgeschlagene Ziel ein, indem sie eine Reihe von dazugehörigen Vorteilen bieten. In einer Prozessorrasterarchitektur ist in einer Ausführungsform jeder Prozessor konfiguriert zum Speichern (1) eines Ausschnitts der Deduplizierungsmetadaten und (2) von über lokale Aufnahmen gespeicherten Benutzerdaten. Jeder Ausschnitt der Deduplizierungsmetadaten beinhaltet in einer Ausführungsform einen Ausschnitt des Ähnlichkeitsindexes und Gruppen von Auszügen, die den repräsentativen Werten in dem Ausschnitt des Ähnlichkeitsindexes entsprechen. Jeder repräsentative Wert entspricht einer bestimmten, als Ähnlichkeitseinheit bezeichneten Dateneinheit, die in dem Index dargestellt wird, wobei die Größe der Ähnlichkeitseinheiten fest ist, z.B. 2 MB. Ein Eintrag in dem Ähnlichkeitsindex besteht aus einem repräsentativen Wert der Ähnlichkeitseinheit und einer Speicheradresse der Auszüge der Ähnlichkeitseinheit.
  • Angesichts dieser Aspekte stellt die Verwendung des Ähnlichkeitsindexes in den Mechanismen der veranschaulichten Ausführungsformen eine globale rasterweite Datendeduplizierung bereit. Der Ähnlichkeitsindex ist kompakt und skaliert dynamisch, wenn Prozessoren hinzugefügt oder entfernt werden. Die Auszüge in einer Gruppe, die einer Ähnlichkeitseinheit entsprechen, werden beruhend auf Deduplizierungsblöcken zum Beispiel mit einer Größe von 2 kB berechnet, und die Auszüge tauchen in der Gruppe in der Reihenfolge deren Auftretens in den Daten der Ähnlichkeitseinheit auf.
  • Unter Bezugnahme auf die Figuren und zunächst auf 1 ist eine beispielhafte Architektur 100 einer Datenverarbeitungssystem-Umgebung abgebildet. Die Architektur 100 kann in einer Ausführungsform zumindest als Teil eines Systems zum Durchführen von Mechanismen der vorliegenden Erfindung umgesetzt werden. Das in der Architektur 100 ausgeführte Computersystem beinhaltet mindestens eine zentrale Verarbeitungseinheit (CPU) 102, die mit einem Datenübertragungsanschluss 108 und einer Hauptspeichereinheit 106 verbunden ist. Der Datenübertragungsanschluss 108 tauscht mit einem Datenübertragungsnetzwerk 110 Daten aus. Das Datenübertragungsnetzwerk 110 kann so konfiguriert sein, dass es mit Systemen 112, 114 und der Architektur 100, zu der die Speichereinheiten 104 gehören können, Daten austauscht. Zu den Speichersystemen können Festplattenlaufwerks- (HDD-, Hard-Disk-Drive-) Einheiten, Halbleitereinheiten (SSD, Solid-State Devices) usw. gehören, die in einer redundanten Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks) konfiguriert sein können.
  • Die unten beschriebenen Arbeitsschritte können auf der/den Speichereinheit(en) 104 ausgeführt werden, die sich in dem System 100 oder andernorts befindet/befinden und mehrere Hauptspeichereinheiten 106 aufweisen kann/können, die unabhängig und/oder in Verbindung mit anderen CPU-Einheiten 102 arbeiten. Zu der Hauptspeichereinheit 106 kann Hauptspeicher wie zum Beispiel elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM, Electrically Erasable Programmable Read Only Memory) oder ein Host verwandter Einheiten gehören. Die Hauptspeichereinheit 106 und die Speichereinheiten 104 sind über ein signalführendes Medium mit der CPU 102 verbunden. Zusätzlich können die Hauptspeichereinheit 106 und die CPU 102 in jeder Komponente des Datenverarbeitungssystems 100 als Teil eines größeren Prozessorrastersystems eingebettet und darin beinhaltet sein. Jedes Speichersystem kann ebenfalls separate und/oder verschiedene Hauptspeichereinheiten 106 und die CPU 102 beinhalten, die gemeinsam oder als separate Hauptspeichereinheit 106 und/oder CPU 102 arbeiten. Wie ein Fachmann verstehen wird, können mehrere Systeme 100 in einer verbundenen und/oder verteilten Weise konfiguriert sein, zum Beispiel physisch beieinander befindlich oder über ein langes geografisch verbundenes Netzwerk hinweg.
  • Wenden wir uns nun der folgenden 2 zu: 2 ist ein beispielhaftes Blockschaubild, das eine Hardwarestruktur eines Datenspeichersystems 200 zeigt, das im Gesamtzusammenhang der Durchführung von Funktionalitäten gemäß verschiedenen Aspekten der vorliegenden Erfindung verwendet werden kann. Das Datenspeichersystem 200 kann in einer Ausführungsform zum Beispiel ein Datendeduplizierungssystem in einer Prozessorrasterarchitektur umsetzen, wie weiter beschrieben wird.
  • Es werden Host-Computer 210, 220 und 225 gezeigt, die jeweils als zentrale Verarbeitungseinheit zum Durchführen von Datenverarbeitung als Teil eines Datenspeichersystems 200 dienen. Bei den Cluster-Hosts/Knoten (physische oder virtuelle Einheiten) 210, 220 und 225 kann es sich um eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erreichen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 handeln. Das Datenspeichersystem 200 kann zusätzliche Funktionalitäten umsetzen; und ein Fachmann wird erkennen, dass eine Vielfalt von Deduplizierungs-, Verschlüsselungs-, Datenverarbeitungs- usw. Hardware und Software, einzeln oder in Kombination, genutzt werden kann, um die Funktionalität gemäß Aspekten der veranschaulichten Ausführungsformen umzusetzen.
  • Bei einer Netzwerkverbindung 260 kann es sich um eine Fibre-Channel- (FC-) Fabric, eine Fibre-Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-over-Ethernet- (FCoE-) Fabric oder eine Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, einen beliebigen anderen E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, heterogen, homogen, öffentlich (d.h. das Internet), privat oder eine beliebige Kombination daraus handeln. Die Host-Computer 210, 220 und 225 können lokal oder über einen oder mehrere Standorte verteilt sein und sie können mit jedem beliebigen Typ von Fabric- (oder Fabric-Kanal-) (in 2 nicht gezeigt) oder Netzwerk-Adapter 260 mit der Speichersteuereinheit 240 verbunden sein, wie zum Beispiel Fibre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, Drahtlos- oder Koaxial-Adapter. Das Datenspeichersystem 200 ist entsprechend mit einem geeigneten Fabric- (in 2 nicht gezeigt) oder Netzwerk-Adapter 260 für den Datenaustausch ausgestattet. Das Datenspeichersystem 200 ist in 2 als die Speichersteuereinheiten 240 und die Cluster-Hosts 210, 220 und 225 aufweisend gezeigt. Die Cluster-Hosts 210, 220 und 225 können Cluster-Knoten beinhalten, auf die man in einer verteilten Datenverarbeitungsumgebung trifft.
  • Um ein besseres Verständnis für die hierin beschriebenen Verfahren zu ermöglichen, ist die Speichersteuereinheit 240 in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemhauptspeicher 243 und einen nichtflüchtigen Speicher („NVS“, nonvolatile storage) 216 beinhaltet. Es sei angemerkt, dass die Speichersteuereinheit 240 in einigen Ausführungsformen aus mehreren Verarbeitungseinheiten besteht, die jeweils ihre eigene Prozessorfunktionseinheit und ihren eigenen Systemhauptspeicher aufweisen und über ein speziell dafür vorgesehenes Netzwerk innerhalb des Datenspeichersystems 200 miteinander verbunden sind. Der Speicher 230 (hierin mit 230a, 230b und 230n bezeichnet) kann aus einer oder mehreren Speichereinheiten wie zum Beispiel Speicheranordnungen bestehen, die (über ein Speichernetzwerk) mit der Speichersteuereinheit 240 verbunden sind, wobei ein oder mehrere Cluster-Hosts 210, 220 und 225 über das Netzwerk 260 mit jeder Speichersteuereinheit 240 verbunden sind.
  • In einigen Ausführungsformen können die in dem Speicher 230 beinhalteten Einheiten in einer Schleifenarchitektur verbunden sein. Die Speichersteuereinheit 240 verwaltet den Speicher 230 und ermöglicht das Verarbeiten von für den Speicher 230 bestimmten Schreib- und Leseanforderungen. Der Systemhauptspeicher 243 der Speichersteuereinheit 240 speichert Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte der vorliegenden Erfindung zum Ausführen und Verwalten des Speichers 230 wie hierin beschrieben auszuführen. In einer Ausführungsform beinhaltet der Systemhauptspeicher 243 die Betriebssoftware 250 zum Durchführen von hierin beschriebenen Verfahren und Arbeitsschritten, ist dieser Software zugehörig oder tauscht mit dieser Daten aus. Wie in 2 gezeigt ist, kann der Systemhauptspeicher 243 ebenfalls einen hierin auch als „Cachespeicher“ bezeichneten Zwischenspeicher 245 für den Speicher 230 beinhalten oder mit diesem Daten austauschen, um „Schreibdaten“ und „Lesedaten“ zu puffern, die sich auf Schreib- bzw. Leseanforderungen und deren zugehörige Daten beziehen. In einer Ausführungsform ist der Zwischenspeicher 245 in einer Einheit angelegt, die sich außerhalb des Systemhauptspeichers 243 befindet, bleibt aber trotzdem zugänglich für den Mikroprozessor 242 und kann dazu dienen, neben dem Ausführen der hierin beschriebenen Arbeitsschritte einen zusätzlichen Schutz vor Datenverlust bereitzustellen.
  • In einigen Ausführungsformen ist der Zwischenspeicher 245 mit einem flüchtigen Speicher und einem nichtflüchtigen Speicher umgesetzt und für eine verbesserte Leistungsfähigkeit des Datenspeichersystems 200 über einen lokalen Bus (in 2 nicht gezeigt) mit dem Mikroprozessor 242 verbunden. Der in der Datenspeicher-Steuereinheit beinhaltete NVS 216 ist zugänglich für den Mikroprozessor 242 und dient zum Bereitstellen einer zusätzlichen Unterstützung für Arbeitsschritte und zum Ausführen der vorliegenden Erfindung, wie in anderen Figuren beschrieben ist. Der NVS 216 kann auch als „dauerhafter“ Zwischenspeicher oder „Cachespeicher“ bezeichnet werden und ist mit nichtflüchtigem Speicher umgesetzt, der externen Strom nutzen kann, um die darin gespeicherten Daten zu behalten. Der NVS kann in und mit dem Zwischenspeicher 245 für jeden beliebigen Zweck gespeichert werden, der dazu geeignet ist, die Ziele der vorliegenden Erfindung zu erreichen. In einigen Ausführungsformen speist eine Notstromversorgung (in 2 nicht gezeigt) wie zum Beispiel eine Batterie den NVS 216 mit ausreichend Strom für das Behalten der darin gespeicherten Daten, sollte der Strom für das Datenspeichersystem 200 ausfallen. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner als oder gleich wie die Gesamtkapazität des Zwischenspeichers 245.
  • Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie zum Beispiel Speicheranordnungen bestehen. Bei einer Speicheranordnung handelt es sich um eine logische Gruppierung von einzelnen Speichereinheiten wie zum Beispiel eine Festplatte. In bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD-Anordnung (Just a Bunch of Disks, nur ein Haufen Festplatten) oder einer RAID-Anordnung (Redundant Array of Independent Disks, redundante Anordnung unabhängiger Platten). Eine Sammlung von physischen Speicheranordnungen kann darüber hinaus kombiniert werden, um einen Rank zu bilden, der den physischen Speicher von der logischen Konfiguration trennt. Der Speicherplatz in einem Rank kann in logische Datenträger aufgeteilt werden, welche den in einer Schreib/Lese-Anforderung festgelegten Speicherort definieren.
  • In einer Ausführungsform kann das wie in 2 gezeigte Speichersystem lediglich beispielhaft einen logischen Datenträger oder einfach „Datenträger“ beinhalten und verschiedene Arten von Zuordnungen aufweisen. Die Speicher 230a, 230b und 230n sind als Ranks in dem Datenspeichersystem 200 gezeigt und werden hierin als Rank 230a, 230b und 230n bezeichnet. Ranks können sich lokal in dem Datenspeichersystem 200 oder an einem physisch entfernten Standort befinden. Anders ausgedrückt, eine lokale Speichersteuereinheit kann sich mit einer entfernt angeordneten Speichersteuereinheit verbinden und den Speicher an dem entfernten Standort verwalten. Der Rank 230a ist als mit zwei vollständigen Datenträgern 234 und 236 sowie einem Teildatenträger 232a konfiguriert gezeigt. Der Rank 230b ist mit einem anderen Teildatenträger 232b gezeigt. Somit ist der Datenträger 232 auf die Ranks 230a und 230b aufgeteilt. Der Rank 230n ist als vollständig dem Datenträger 238 zugeordnet gezeigt - das heißt, der Rank 230n bezieht sich auf den gesamten physischen Speicher für den Datenträger 238. Aufgrund der obigen Beispiele wird man verstehen, dass ein Rank so konfiguriert sein kann, dass er einen oder mehrere Teildatenträger und/oder vollständige Datenträger beinhaltet. Datenträger und Ranks können darüber hinaus in so genannte „Tracks“ geteilt werden, die einen festen Speicherblock darstellen. Ein Track ist deshalb einem bestimmten Datenträger zugewiesen, und ihm kann ein bestimmter Rank zugewiesen werden.
  • Die Speichersteuereinheit 240 kann ein Datendeduplizierungsmodul 255, ein Ähnlichkeitsmodul 257 und ein Ähnlichkeitssuchmodul 259 sowie mehrere Repositories (nicht gezeigt) beinhalten. Das Datendeduplizierungsmodul 255, das Ähnlichkeitsmodul 257, das Ähnlichkeitssuchmodul 259 und die Repositories können in Verbindung miteinander und mit jeder Komponente der Speichersteuereinheit 240, den Host-Computern 210, 220, 225 und den Speichereinheiten 230 funktionieren. Das Datendeduplizierungsmodul 255, das Ähnlichkeitsmodul 257, das Ähnlichkeitssuchmodul 259 und die Repositories können strukturell ein vollständiges Modul sein oder anderen einzelnen Modulen oder anderen Strukturen zugehörig und/oder in diesen beinhaltet sein. Das Datendeduplizierungsmodul 255, das Ähnlichkeitsmodul 257, das Ähnlichkeitssuchmodul 259 und die Repositories können sich auch in dem Zwischenspeicher 245 oder in anderen Komponenten befinden, wie ein Fachmann verstehen wird.
  • Das Datendeduplizierungsmodul 255, das Ähnlichkeitsmodul 257, das Ähnlichkeitssuchmodul 259 und die Repositories können einzeln und/oder gemeinsam verschiedene Aspekte der vorliegenden Erfindung durchführen, wie näher beschrieben werden wird. Zum Beispiel kann das Datendeduplizierungsmodul 255 verschiedene Datendeduplizierungsfunktionen in Übereinstimmung mit Aspekten der veranschaulichten Ausführungsformen durchführen.
  • Das Ähnlichkeitsmodul 257 kann eine Vielfalt von Funktionen durchführen, die näher beschrieben werden, wie zum Beispiel das Pflegen eines Ähnlichkeitsindexes (mit zugehörigen Ausschnitten), wie näher beschrieben werden wird. Das Ähnlichkeitssuchmodul 259 kann auch eine Vielfalt von Funktionen durchführen, wie näher beschrieben werden wird, wie zum Beispiel das Suchen nach einem repräsentativen Wert in einem bestimmten Deduplizierungsmetadatenausschnitt, wie wiederum näher beschrieben werden wird. Wie ein Fachmann verstehen wird, können das Datendeduplizierungsmodul 255, das Ähnlichkeitsmodul 257, das Ähnlichkeitssuchmodul 259 und die Repositories lediglich eine Teilmenge von verschiedenen funktionalen und/oder funktional verantwortlichen Einheiten in dem Datenspeichersystem 200 bilden.
  • Andere Zusatzhardware kann mit dem Speichersystem 200 verbunden sein. Wie gezeigt, beinhaltet die Speichersteuereinheit 240 zum Beispiel eine Steuervermittlungseinheit 241 zum Steuern des Fibre-Channel-Protokolls für die Host-Computer 210, 220, 225, einen Mikroprozessor 242 zum Steuern der gesamten Speichersteuereinheit 240, einen nichtflüchtigen Steuerspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs der Speichersteuereinheit 240, Daten zur Steuerung, den Zwischenspeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Zwischenspeichers 245 beim Lesen und Schreiben von Daten, eine Steuervermittlungseinheit 241 zum Steuern eines Protokolls zum Steuern der Datenübertragung zu oder von den Speichereinheiten 230, das Datendeduplizierungsmodul 255, das Ähnlichkeitsmodul 257, das Ähnlichkeitssuchmodul 259 und Repositories oder andere Funktionalitätsblöcke, in denen Informationen festgelegt sein können. In der vorliegenden Erfindung können mehrere Puffer 244 zur Unterstützung der hierin beschriebenen Arbeitsschritte umgesetzt werden.
  • Die folgende 3 veranschaulicht eine beispielhafte Ausführungsform zum Speichern von Datendeduplizierungsmetadaten in einem Prozessorraster in einer Shared-Nothing-Architektur 300. Wie vorstehend beschrieben, ist in der abgebildeten Ausführungsform jeder Prozessor konfiguriert zum Speichern eines Ausschnitts der Deduplizierungsmetadaten und von über lokale Aufnahmen gespeicherten Benutzerdaten.
  • Wie gezeigt, enthält jeder Ausschnitt der Deduplizierungsmetadaten einen Ausschnitt des Ähnlichkeitsindexes und Gruppen von Auszügen, die den repräsentativen Werten in dem Ausschnitt des Ähnlichkeitsindexes entsprechen. Jeder repräsentative Wert entspricht einer bestimmten, als Ähnlichkeitseinheit bezeichneten Dateneinheit, die in dem Index dargestellt wird, wobei die Größe der Ähnlichkeitseinheiten fest ist, z.B. 2 MB. Ein Eintrag in dem Ähnlichkeitsindex beinhaltet dann einen repräsentativen Wert der Ähnlichkeitseinheit und eine Speicheradresse der Auszüge der Ähnlichkeitseinheit. Wie vorstehend erwähnt, können die Auszüge in einer Gruppe, die einer Ähnlichkeitseinheit entsprechen, beruhend auf Deduplizierungsblöcken zum Beispiel mit einer Größe von 2 kB berechnet werden, und die Auszüge tauchen dann in der Gruppe in der Reihenfolge deren Auftretens in den Daten der Ähnlichkeitseinheit auf.
  • In einer Ausführungsform wird die Zugehörigkeit eines repräsentativen Werts zu Ausschnitten unter Verwendung eines konsistenten Hash-Verfahrens berechnet (z.B. eines Highest-Random-Weight-Hash-Verfahrens). Bei diesem Verfahren wird für einen bestimmten, als rval bezeichneten repräsentativen Wert ein Hash-Wert h[i] = H(rval , slice_id[i]) für jeden Ausschnitt (slice) i unter Verwendung einer Hash-Funktion H berechnet, und der für den repräsentativen Wert und dessen Auszüge ausgewählte Ausschnitt ist derjenige, für den der Wert h[i] am höchsten ist.
  • Wenn ein Ausschnitt hinzugefügt oder entfernt wird, z.B. durch Hinzufügen oder Entfernen eines Prozessors, sollten lediglich [# rvals / # slices] repräsentative Werte im Mittel neu zugeordnet werden. Die repräsentativen Werte und Auszüge sind über die Hash-Funktion H von vornherein zwischen den Ausschnitten ausgeglichen, auch wenn Ausschnitte hinzugefügt oder entfernt werden. Anstelle des Berechnens von h[i] für alle Ausschnitte kann eine hierarchische Struktur auf die Ausschnitte angewendet werden, um eine logarithmische Berechnungszeit bereitzustellen.
  • Die nachfolgende 4 beschreibt eine Architektur 400 und eine Abfolge von Nachrichten zwischen Komponenten zur globalen verteilten Datendeduplizierung in einem Shared-Nothing-Prozessorraster gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, beschreibt 4 die Architektur 400 und die Ablauflogik des Deduplizierungsprozesses in Form eines Blockschaubilds; die folgenden 5A und 5B beschreiben die Abfolge von Nachrichten in Form eines Ablaufplans.
  • In 4 umfassen die Komponenten/Nomenklatur, die zur Beschreibung der globalen verteilten Datendeduplizierungsfunktionalität verwendet wird, wie gezeigt, den Prozessor P, der mit und zwischen einem zusätzlichen Prozessor P* und anderen Prozessoren in dem Prozessorraster Daten austauscht, die, wie gezeigt, übereinstimmende Daten besitzen. Jeder der Prozessoren P, P* und andere Eignerprozessoren sind, wie auch gezeigt ist, ihren jeweiligen eigenen lokalen Speichern zugehörig (z.B. werden die lokalen Speicher nicht von den Prozessoren P, P* und den anderen Eignerprozessoren gemeinsam genutzt). Weiterhin können, wie gezeigt, verschiedene Informationen in dem lokalen Speicher gespeichert sein, wie zum Beispiel Metadatenausschnitte gemäß HRW-Aufteilung und Daten gemäß einer bestimmten Aufnahme.
  • 4 zeigt auch verschiedene Ablauflogiken von Nachrichten zwischen den Prozessoren P, P* und anderen Prozessoren, die übereinstimmende Daten besitzen, wie gezeigt und wie folgt. In Schritt 1 sendet der Prozessor P einen repräsentativen Wert und Auszüge, die einer bestimmten Ähnlichkeitseinheit entsprechen, an den Prozessor P*, der den Metadatenausschnitt besitzt, der dem bestimmten repräsentativen Wert entspricht. Der Prozessor P* antwortet auf den Prozessor P in Schritt 2 mit der Beschreibung und Informationen über übereinstimmende Datenabschnitte der Eignerprozessoren, die durch den Prozessor P* für die bestimmte Ähnlichkeitseinheit berechnet wurden. Der Prozessor P sendet dann in Schritt 3 die Beschreibungsinformationen über die übereinstimmenden Datenabschnitte an die Eignerprozessoren der übereinstimmenden Daten, die in Schritt 4 mit Beschreibungsinformationen über Speicherblöcke der Eignerprozessoren antworten, welche die bestimmten übereinstimmenden Datenabschnitte speichern.
  • Mit Blick auf 4 beschreibt das Verfahren 500 in den nachfolgenden 5A und 5B ein beispielhaftes Verfahren zur globalen verteilten Datendeduplizierung in einer Shared-Nothing-Architektur, wobei zusätzlicher Kontext zu den Komponenten und der Abfolge der Nachrichtenübermittlung, die zuerst in der 4 zuvor gezeigt wurden, angeführt wird. Unter Bezugnahme zunächst auf 5A werden als erster Schritt 502 auf dem Prozessor P Eingabedaten empfangen, die in Schritt 504 in Ähnlichkeitseinheiten (z.B. mit einer Größe von 2 MB) aufgeteilt werden.
  • Für jeden der folgenden Schritte 506 bis 524 wird dann für jede Ähnlichkeitseinheit Folgendes durchgeführt, während der Entscheidungsschritt 506 abfragt, ob noch weitere Ähnlichkeitseinheiten zu verarbeiten sind. In Schritt 508 wird für die Ähnlichkeitseinheit Folgendes berechnet: (a) Deduplizierungsblockbegrenzungen, (b) Auszugswerte für die Deduplizierungsblöcke und (c) ein repräsentativer Wert für die Ähnlichkeitseinheit. Die Deduplizierungsblöcke können eine variable Größe aufweisen, und ihre Begrenzungen können unter Verwendung eines datendefinierten Chunking-Algorithmus bestimmt werden. Eine mittlere Größe der Deduplizierungsblöcke kann z.B. 2 kB betragen. Für jeden Deduplizierungsblock wird ein Auszugswert berechnet, wobei der Auszugswert ein kryptographischer Hash-Wert ist, der beruhend auf den Daten des Deduplizierungsblocks berechnet wird. Ein repräsentativer Wert für die Ähnlichkeitseinheit kann beruhend auf den berechneten Auszugswerten berechnet werden.
  • Ein entsprechender Deduplizierungsmetadatenausschnitt S* wird für die Ähnlichkeitseinheit unter Verwendung eines konsistenten Hash-Verfahrens berechnet (z.B. eines Highest-Random-Weight-Hash-Verfahrens), das auf den repräsentativen Wert R der Ähnlichkeitseinheit angewendet wird (Schritt 510). Der Ausschnitt S* wird zum Suchen nach ähnlichen Daten und zum Speichern von Deduplizierungsmetadaten der Ähnlichkeitseinheit verwendet.
  • Der repräsentative Wert und die Auszugswerte der Ähnlichkeitseinheit werden an den Prozessor P* gesendet, der den Ausschnitt S* besitzt (Schritt 512). Wenn mehrere Ähnlichkeitseinheiten auf denselben Prozessor abgebildet werden, können deren Metadaten zusammen gesendet werden.
  • Im folgenden Schritt 514 wird P* dazu verwendet, nach dem repräsentativen Wert R in seinem Ähnlichkeitsindexausschnitt zu suchen. Wenn ein identischer Ähnlichkeitswert gefunden wird, werden dessen zugehörige Auszüge in einen lokalen Auszugzwischenspeicher auf dem Prozessor P* geladen.
  • Der Prozessor P* führt in dem folgenden Schritt 516 ein Auszugsabgleichverfahren mit den von dem Prozessor P empfangenen Auszügen und den Inhalten des lokalen Auszugszwischenspeichers durch, um übereinstimmende Abfolgen von Eingabe- und Repository-Auszügen zu finden und übereinstimmende Datenabschnitte zu erkennen. Als Optimierung kann der Prozessor P* versuchen, vor dem Durchführen einer Ähnlichkeitssuche Auszüge in den lokalen Zwischenspeicher zu laden, die beruhend auf Informationen ähnlicher Repository-Daten, wie z.B. der Korrelation mit einer früheren Version von Dateien oder Speicherobjekten, als relevant festgelegt werden. Dann kann der Prozessor P* versuchen, die Eingabeauszüge mit den Inhalten des lokalen Auszugszwischenspeichers zu deduplizieren, und lediglich dann eine Ähnlichkeitssuche durchführen, wenn die Deduplizierung der Eingabeähnlichkeitseinheit unzureichend ist.
  • Unter Bezugnahme auf 5B sendet der Prozessor P* in dem folgenden Schritt 518 an den Prozessor P Beschreibungen (nominal) und Eignerprozessoren der übereinstimmenden Datenabschnitte, die berechnet wurden. Mehrere Prozessoren in dem Raster können die Daten dieser Bereiche besitzen.
  • Der Prozessor P* speichert dann den empfangenen repräsentativen Wert und die Auszüge der Eingabeähnlichkeitseinheit in seinem Metadatenausschnitt. Die Identität des Prozessors P wird mit den Auszügen der Eingabeähnlichkeitseinheit aufgezeichnet, um anzugeben, dass der Prozessor P die diesen Auszügen entsprechenden Daten besitzt (Schritt 520). Diese Informationen werden später verwendet, wenn diese Auszüge mit anderen Eingabeauszügen abgeglichen werden, um den Ort der entsprechenden Daten zu bestimmen.
  • In dem folgenden Schritt 522 sendet der Prozessor P die nominalen Informationen über die berechneten übereinstimmenden Datenabschnitte an die Prozessoren, die diese Daten speichern. Bei den in diesem Schritt zu kontaktierenden Prozessoren kann es sich um eine Teilmenge der vollständigen Liste der von P* bereitgestellten Prozessoren handeln, wobei die Teilmenge als die Prozessoren ausgewählt wird, die gemäß verschiedenen Kriterien den höchsten Wert bereitstellen. Ein Beispiel sind Prozessoren, die mehr Daten besitzen, die durch Eingabedaten abgeglichen wurden. Ein anderes Beispiel sind Prozessoren, durch deren Kapazität und/oder Reaktionszeit nachfolgende, durch den Prozessor P erzeugte Anfragen über die Bereitstellung der referenzierten Daten schneller / effizienter durchgeführt und an den Prozessor P gesendet werden.
  • Diese kontaktierten Prozessoren führen Folgendes durch: (a) Antworten mit den Informationen über die Speicherblöcke, welche diese Daten speichern, und (b) entsprechendes Erhöhen von Verweiszählern dieser Speicherblöcke (Schritt 524).
  • Schließlich speichert der Prozessor P die Daten, für die keine Übereinstimmung in lokalen Speicherblöcken gefunden wurde, und fügt Verweise auf die von den anderen Prozessoren bereitgestellten Speicherblöcke hinzu (Schritt 526). Zurück zu 5A und zum Entscheidungsschritt 506, endet das Verfahren 500, wenn keine weiteren Ähnlichkeitseinheiten zum Verarbeiten gefunden werden (Schritt 526).
  • Die folgende 6 veranschaulicht im Blockschaubildformat das konsistente Zuordnen von repräsentativen Werten zu Datendeduplizierungsmetadatenausschnitten in der . Mit einem repräsentativen Wert R (entsprechend der Aufteilung der Eingabedaten in die abgebildeten Ähnlichkeitseinheiten) wird ein konsistentes Hash-Verfahren (z.B. ein Highest-Random-Weight-Hash-Verfahren) verwendet, um die konsistente Zuordnung von R zu einem Deduplizierungsmetadatenausschnitt S, den der Prozessor P besitzt, zu bestimmen. 6 zeigt repräsentative Werte R[1..6], die den Eingabeähnlichkeitseinheiten entsprechen, und als Beispiel deren Zugehörigkeit zu Metadatenausschnitten des Satzes von Ausschnitten S[a..f] unter Verwendung eines konsistenten Hash-Verfahrens.
  • Die folgenden 7 und 8 veranschaulichen verschiedene beispielhafte Neuverteilungsfunktionalitäten für Deduplizierungsmetadaten über ein Prozessorraster hinweg, wenn ein Prozessor zu dem Raster hinzugefügt wird. In einem in 7 abgebildeten ersten Fall wird in der Suchkette ein eingegebener repräsentativer Wert gefunden. In einem in 8 abgebildeten zweiten Fall erreicht die Suchkette entsprechend einen vollständig neu verteilten Prozessor, und der eingegebene repräsentative Wert wird nicht gefunden.
  • In beiden 7 und 8 wird als erster Schritt ein neuer Deduplizierungsmetadatenausschnitt initialisiert, den der neue Prozessor besitzen soll. Der neue Ausschnitt empfängt Metadaten einheitlich von jedem der anderen Ausschnitte. Und zwar trägt jeder der anderen Ausschnitte zu dem neuen Ausschnitt mit einer proportionalen Anzahl von Einträgen bei.
  • Während bestehende konsistente Hash-Verfahren das Durchsuchen der vorhandenen Einträge erfordern, um die Einträge zu ermitteln, die in den neuen Ausschnitt migriert werden sollen (tatsächlich muss nur eine proportionale Teilmenge jedes Ausschnitts migriert werden), übersehen diese bestehenden Methoden die Kosten für das Durchsuchen aller Einträge. Besonders in großen Speichersystemen, bei denen das Durchsuchen mit dem Lesen vieler Einträge aus dem Speicher einhergeht, können die Kosten für das Durchsuchen potenziell erheblich sein. Selbst wenn das Durchsuchen im Hintergrund erfolgt, ist der Durchsuchungsvorgang ein potenziell kostspieliger Prozess, der eine erhebliche Eingabe/Ausgabe- (E/A-) Last erzeugen kann.
  • Um die mit laufenden Durchsuchungsvorgängen verbundenen Ressourcenkosten zu verringern, wird nun ein Neuverteilungsmechanismus in Übereinstimmung mit verschiedenen Aspekten der vorliegenden Erfindung vorgestellt. Der Neuverteilungsmechanismus stellt neben anderen Aspekten Folgendes bereit. Zuerst werden Einträge für das Neuverteilen nur dann identifiziert, wenn eine Abfrage stattfindet, bei der die Abfrage für ihre eigene Verarbeitung auf diese Einträge zugreifen muss, wodurch zusätzlicher Systemaufwand vermieden wird. Zweitens wendet der Mechanismus einen erweiterten verketteten Suchvorgang bei Abfragen an, um neu zu verteilende Einträge zu identifizieren, wobei der verkettete Suchvorgang aus mehreren Sprüngen besteht, die durch eine statistische Berechnung bestimmt werden. Dadurch kann der Ressourcenverbrauch der Arbeitsschritte der erweiterten Suche weiter verringert werden.
  • In einer Ausführungsform kann der Neuverteilungsmechanismus wie folgt stattfinden. In einem ersten Schritt, und wie vorstehend beschrieben, werden ein oder mehrere Prozessoren zu dem bestehenden Prozessorraster hinzugefügt. Jeder Prozessor in dem Raster pflegt ein bestimmtes Attribut. Dieses Attribut kann zum Beispiel als ,Neuverteilungsstatus' bezeichnet werden. Dieses Attribut gibt an, ob eine Migration von Einträgen auf diesen bestimmten Prozessor in Bearbeitung ist oder abgeschlossen wurde. Dieses Attribut kann auf den Wert ,in Bearbeitung initialisiert werden.
  • In einem folgenden Schritt berechnet ein Prozessor, der zu dem Raster hinzugefügt wird, den erwarteten Anteil von Einträgen, die auf diesen Prozessor zu migrieren sind. Dieser Anteil ist die Gesamtzahl von Einträgen zum Zeitpunkt des Beitritts des Prozessors zu dem Raster geteilt durch die Anzahl von Prozessoren, einschließlich des hinzugefügten Prozessors. Solange die tatsächliche Anzahl von auf den Prozessor migrierten Einträgen geringer ist als dieser erwartete Anteil, bleibt der Neuverteilungsstatus des Prozessors auf in Bearbeitung. Der Neuverteilungsstatus wird auf abgeschlossen geändert, wenn die Anzahl von auf den Prozessor migrierten Einträgen gleich oder größer ist als der erwartete Anteil.
  • Wenn ein repräsentativer Wert gesucht wird, berechnet der aufnehmende Prozessor P den Ausschnitt und den Eignerprozessor P* für die Suche nach dem repräsentativen Wert und sendet an den Prozessor P* den eingegebenen repräsentativen Wert und die Auszüge. Der Prozessor P* sucht nach dem repräsentativen Wert. Wenn der repräsentative Wert gefunden wird, sendet der Prozessor P* eine Antwort an den Prozessor P, und der Mechanismus geht wie in dem Verfahren 500 für verteilte Datendeduplizierung beschrieben vor, wie vorstehend in 5 beschrieben wurde.
  • Wenn der repräsentative Wert von dem Prozessor P* nicht gefunden wird und der Neuverteilungsstatus von Prozessor P* in Bearbeitung lautet, dann berechnet der Prozessor P* den Ausschnitt und den Eignerprozessor P2* des zweiten Ranks für den gegebenen repräsentativen Wert unter Verwendung eines konsistenten Hash-Verfahrens (z.B. eines Highest-Random-Weight-Hashs) und leitet die Abfrage (d.h. den eingegebenen repräsentativen Wert und die Auszüge) an den Prozessor P2* weiter. Der Grund dafür ist, dass dieser repräsentative Wert in den Deduplizierungsmetadaten des Rasters enthalten sein kann, aber möglicherweise noch nicht auf den neu hinzugefügten Prozessor P* migriert wurde. Dieser Weiterleitungsprozess wird solange zwischen den Prozessoren entsprechend der konsistenten Hash-Rangfolge fortgesetzt, bis entweder der repräsentative Wert von einem Prozessor in der Weiterleitungskette gefunden wird oder ein Prozessor erreicht wird, für den der Neuverteilungsstatus auf Abschluss hindeutet.
  • Wenn der repräsentative Wert von einem Prozessor Px* in der Kette gefunden wird (wie in 7 angegeben), führt der Prozessor Px* ein Auszugsabgleichverfahren mit den eingegebenen Auszügen und den Inhalten seiner lokalen Auszugszwischenspeicher durch, um identische Datenabschnitte zu finden. Der Prozessor Px* sendet die folgende Nachrichten: (1) eine Antwortnachricht an den Prozessor P*, welche die Migration des repräsentativen Wertes und dessen entsprechender Auszüge von dem Prozessor Px* zu dem Prozessor P* ermöglicht, und (2) eine Antwortnachricht an den Prozessor P, die es ermöglicht, den Deduplizierungsprozess der Ähnlichkeitseinheit fortzusetzen (wie in den Schritten (3) bzw. (4) in 7 dargestellt). Die Deduplizierung wird dann auf dem Prozessor P fortgesetzt, wie vorstehend in 5 für die verteilte Datendeduplizierung angegeben.
  • Wenn der repräsentative Wert nicht von einem Prozessor Px* gefunden wird und der Neuverteilungsstatus dieses Prozessors auf Abschluss hindeutet (wie in 8 angegeben), sendet der Prozessor Px* eine Antwortnachricht an den Prozessor P, die angibt, dass der repräsentative Wert nicht gefunden wurde (wie durch Schritt (3) in 8 gezeigt). Die Anzahl von Sprüngen in einer Weiterleitungskette kann mit einer oberen Grenze festgelegt werden, da der Deduplizierungsprozess im Wesentlichen annähernd ist.
  • Wenn schließlich der repräsentative Wert nicht von dem Prozessor P* gefunden wird und der Neuverteilungsstatus des Prozessors P* auf Abschluss hindeutet, sendet der Prozessor P* eine Antwortnachricht an den Prozessor P, die angibt, dass der repräsentative Wert nicht gefunden wurde.
  • Ein zusätzlicher Mechanismus kann umgesetzt werden, um eine Neuverteilungsfunktionalität für die verteilten Deduplizierungsmetadaten durchzuführen, wenn ein Prozessor und ein entsprechender Metadatenausschnitt normal aus dem Prozessorraster entfernt werden. In einer Ausführungsform werden die Inhalte des Deduplizierungsmetadatenausschnitts des Prozessors, der entfernt wird, gleichmäßig unter den verbleibenden Ausschnitten von Deduplizierungsmetadaten verteilt. Deduplizierungsmetadaten in anderen Ausschnitten werden nicht geändert.
  • Für jeden repräsentativen Wert in einem Metadatenausschnitt, der entfernt wird, kann ein neuer Ausschnitt zum Speichern des repräsentativen Werts und entsprechender Auszüge berechnet werden. Es kann ein konsistentes Hash-Verfahren wie zum Beispiel das Highest-Random-Weight-Hash-Verfahren verwendet werden. Für den gegebenen repräsentativen Wert können dann konsistente Hash-Rankingwerte für die Metadatenausschnitte in dem Raster berechnet werden, wobei die Berechnung ohne den Metadatenausschnitt, der entfernt wird, durchgeführt wird. Der Ausschnitt mit dem höchsten Rankingwert kann dann ausgewählt werden. Der repräsentative Wert und die zugehörigen Auszüge können dann zur Speicherung in dem im vorhergehenden Schritt ausgewählten Metadatenausschnitt gesendet werden.
  • Um Datendeduplizierungsmetadaten wiederherzustellen, wenn ein Prozessor ausfällt, können zwei Ansätze gewählt werden. Ein erster Ansatz besteht darin, die Metadaten jeder Ähnlichkeitseinheit (d.h. repräsentativer Wert und Auszüge) in K Metadatenausschnitten zu speichern, deren konsistente Hash-Rankingwerte für den repräsentativen Wert der Ähnlichkeitseinheit unter den Metadatenausschnitten im Raster am höchsten sind.
  • Wenn ein Prozessor ausfällt oder entfernt wird, werden seine repräsentativen Werte und die entsprechenden Auszüge von ihren Sicherungsausschnitten auf zusätzliche Ausschnitte repliziert, indem für jeden betroffenen repräsentativen Wert konsistente Hash-Rankingwerte für die Ausschnitte in dem Raster ohne den Ausschnitt des ausgefallenen / entfernten Prozessors berechnet und der Ausschnitt mit dem höchsten Ranking aus den Ausschnitten ausgewählt wird, die noch nicht für den gegebenen repräsentativen Wert verwendet wurden, um eine zusätzliche Kopie des betroffenen repräsentativen Wertes und seiner entsprechenden Auszüge zu speichern.
  • Ein zweiter Ansatz besteht in der Vermeidung der Wiederherstellung von Metadaten. Dies ist möglich, da der Ähnlichkeitsindex als annähernd festgelegt werden kann und somit eine Teilmenge der Daten darstellen kann. Die Auswirkung auf die Deduplizierung ist üblicherweise temporär, wenn neue Daten aufgenommen werden.
  • Unter Bezugnahme auf 9 ist ein beispielhaftes Verfahren 900 zum Ermöglichen des Speicherns von Deduplizierungsmetadaten in einem Prozessorraster in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung abgebildet. Das Verfahren 900 beginnt (Schritt 902) mit der Zuweisung mehrerer Ausschnitte von Deduplizierungsmetadaten, die von einem entsprechenden Prozessor in einem Prozessorraster zu speichern sind (Schritt 904).
  • Jeder Metadatenausschnitt ist so konfiguriert, dass er mindestens einen Ausschnitt eines Ähnlichkeitsindexes und Gruppen von Auszügen beinhaltet, die repräsentativen Werten entsprechen, die möglicherweise in dem Ausschnitt des Ähnlichkeitsindexes beinhaltet sind (Schritt 906). Ein Hash-Verfahren wird dann für das Abbilden zwischen eingegebenen repräsentativen Werten und den Ausschnitten von Deduplizierungsmetadaten verwendet (Schritt 908). Das Verfahren 900 endet dann (Schritt 910).
  • Die folgende 10 zeigt ein beispielhaftes Verfahren 1000 zum Neuverteilen von verteilten Deduplizierungsmetadaten in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung. Das Verfahren 1000 beginnt (Schritt 1002) mit dem Empfangen einer Eingabeähnlichkeitseinheit von Daten und einem entsprechenden eingegebenen repräsentativen Wert auf einem Prozessor (Schritt 1004). Es werden dann ein entsprechender Deduplizierungsmetadatenausschnitt und ein Eignerprozessor für die Eingabeähnlichkeitseinheit berechnet (Schritt 1006).
  • In einem folgenden Schritt 1008 werden der eingegebene repräsentative Wert und Eingabeauszugswerte an den Eignerprozessor gesendet. Der Eignerprozessor wird zum Suchen nach dem eingegebenen repräsentativen Wert in einem entsprechenden Deduplizierungsmetadatenausschnitt verwendet (Schritt 1010). Der Eignerprozessor wird dann verwendet, um den eingegebenen repräsentativen Wert und die Eingabeauszugswerte an einen zusätzlichen Prozessor weiterzuleiten, wenn der repräsentative Wert von dem Eignerprozessor nicht gefunden wird und ein Neuverteilungsstatus des Eignerprozessors als in Bearbeitung ermittelt wird (Schritt 1012).
  • In einem folgenden Schritt 1014 wird dann ein zusätzlicher Prozessor dazu verwendet, eine Antwortnachricht an den Eignerprozessor zu senden, welche die Migration des eingegebenen repräsentativen Wertes und der entsprechenden Auszugswerte von dem zusätzlichen Prozessor auf den Eignerprozessor ermöglicht, wenn der eingegebene repräsentative Wert von dem zusätzlichen Prozessor gefunden wird. Das Verfahren 1000 endet dann (Schritt 1016).
  • Die folgende 11 zeigt ein beispielhaftes Verfahren 1100 zur verteilten Datendeduplizierung in einem Prozessorraster, wiederum gemäß einer Ausführungsform der vorliegenden Erfindung. Das Verfahren 1100 beginnt (Schritt 1102) mit dem Empfangen von Eingabedaten auf einem aufnehmenden Prozessor und dem Aufteilen der Eingabedaten in mehrere Ähnlichkeitseinheiten (Schritt 1104). Es werden ein entsprechender Deduplizierungsmetadatenausschnitt und ein Eignerprozessor für eine der Ähnlichkeitseinheiten berechnet (Schritt 1106).
  • In einem folgenden Schritt 1108 werden ein repräsentativer Wert und entsprechende Auszugswerte der Ähnlichkeitseinheit dann an den Eignerprozessor gesendet. Der Eignerprozessor wird dann zum Suchen nach dem repräsentativen Wert in dem entsprechenden Deduplizierungsmetadatenausschnitt verwendet (Schritt 1110). Der Eignerprozessor wird dann zum Senden einer Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten an den aufnehmenden Prozessor verwendet (Schritt 1112). Der aufnehmende Prozessor wird dann zum Senden von nominalen Informationen über die berechneten identischen Datenabschnitte an die Eignerprozessoren der berechneten identischen Datenabschnitte verwendet (Schritt 1114).
  • In einem folgenden Schritt 1116 werden die Eignerprozessoren der berechneten identischen Datenabschnitte dann dazu verwendet, an den aufnehmenden Prozessor mit Informationen über Speicherblöcke zu antworten, welche die identischen Datenabschnitte speichern. Das Verfahren 1100 endet dann (Schritt 1118).
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.

Claims (36)

  1. Verfahren zur verteilten Datendeduplizierung in einem Prozessorraster, aufweisend: Empfangen von Eingabedaten auf einem aufnehmenden Prozessor und Aufteilen der Eingabedaten in eine Vielzahl von Ähnlichkeitseinheiten; Berechnen eines entsprechenden Deduplizierungsmetadatenausschnitts und eines Eignerprozessors für eine der Ähnlichkeitseinheiten; Senden eines repräsentativen Werts und von entsprechenden Auszugswerten der Ähnlichkeitseinheit an den Eignerprozessor; Verwenden des Eignerprozessors zum Suchen nach dem repräsentativen Wert in dem entsprechenden Deduplizierungsmetadatenausschnitt; Verwenden des Eignerprozessors zum Senden einer Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten an den aufnehmenden Prozessor; Verwenden des aufnehmenden Prozessors zum Senden von nominalen Informationen über die berechneten identischen Datenabschnitte an die Eignerprozessoren der berechneten identischen Datenabschnitte; und Verwenden der Eignerprozessoren der berechneten identischen Datenabschnitte zum Antworten an den aufnehmenden Prozessor mit Informationen über Speicherblöcke, welche die identischen Datenabschnitte speichern.
  2. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Berechnen von mindestens entweder Deduplizierungsblockbegrenzungen, der entsprechenden Auszugswerte oder des repräsentativen Werts für die Ähnlichkeitseinheit.
  3. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Berechnen des entsprechenden Deduplizierungsmetadatenausschnitts und des Eignerprozessors unter Verwendung eines auf den repräsentativen Wert der Ähnlichkeitseinheit angewendeten konsistenten Hash-Verfahrens.
  4. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Senden des repräsentativen Werts und der entsprechenden Auszugswerte der Ähnlichkeitseinheit an den Eignerprozessor unter Verwendung einer einzelnen Nachricht für mehrere aus der Vielzahl von Ähnlichkeitseinheiten, die demselben Eignerprozessor zugeordnet sind.
  5. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Durchführen mindestens eines der Folgenden durch den Eignerprozessor: Laden jedes aus einer Vielzahl von Auszugswerten, die repräsentativen Werten derjenigen aus der Vielzahl von Ähnlichkeitseinheiten entsprechen, in einen Auszugszwischenspeicher und Durchführen eines Auszugsabgleichverfahrens mit Auszugswerten, die von dem aufnehmenden Prozessor empfangen wurden und in dem Auszugszwischenspeicher enthalten sind, um die identischen Datenabschnitte zu berechnen.
  6. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Senden der Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten, die eine Vielzahl von Eignerprozessoren von berechneten identischen Datenabschnitten umfassen.
  7. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Speichern des repräsentativen Werts und von Auszugswerten der Eingabeähnlichkeitseinheit in dem Deduplizierungsmetadatenausschnitt durch den Eignerprozessor.
  8. Verfahren nach Anspruch 7, darüber hinaus beinhaltend das Aufzeichnen einer Identität des aufnehmenden Prozessors mit den Auszugswerten der Eingabeähnlichkeitseinheit.
  9. Verfahren nach Anspruch 1, wobei es sich bei den Eignerprozessoren der berechneten identischen Datenabschnitte, die durch den aufnehmenden Prozessor kontaktiert werden, um eine Teilmenge einer Vielzahl von Eignerprozessoren handelt, und darüber hinaus beinhaltend das Auswählen der Teilmenge als diejenigen aus der Vielzahl von Eignerprozessoren, die einen höchsten Wert bereitstellen.
  10. Verfahren nach Anspruch 9, darüber hinaus beinhaltend das Auswählen der Teilmenge durch mindestens eines der Folgenden: Auswählen derjenigen aus der Vielzahl von Eignerprozessoren mit den höchsten Mengen an berechneten identischen Datenabschnitten aus der Vielzahl von Eignerprozessoren, Auswählen derjenigen aus der Vielzahl von Eignerprozessoren mit einer Menge an berechneten identischen Datenabschnitten über einem vorher festgelegten Schwellwert, Auswählen derjenigen aus der Vielzahl von Eignerprozessoren, die in der Lage sind, eine nachfolgende Anfrage, die von dem aufnehmenden Prozessor erzeugt wird, effizient zu verarbeiten, um die identischen Datenabschnitte bereitzustellen.
  11. Verfahren nach Anspruch 1, wobei die Eignerprozessoren der berechneten identischen Datenabschnitte Verweiszähler von Speicherblöcken erhöhen, welche die identischen Datenabschnitte speichern.
  12. Verfahren nach Anspruch 1, darüber hinaus beinhaltend das Durchführen mindestens eines der Folgenden durch den aufnehmenden Prozessor: Speichern von Daten, für die keine Übereinstimmungen in lokalen Speicherblöcken gefunden wurden, und Hinzufügen von Verweisen auf die Speicherblöcke, deren Informationen durch die Eignerprozessoren der berechneten identischen Datenabschnitte bereitgestellt werden.
  13. System zur verteilten Datendeduplizierung in einem Prozessorraster, aufweisend: einen aufnehmenden Prozessor; einen Eignerprozessor, der mit dem aufnehmenden Prozessor Daten austauscht; und Eignerprozessoren von berechneten identischen Datenabschnitten, die mit dem Prozessor und dem Eignerprozessor in dem Prozessorraster Daten austauschen; wobei der aufnehmende Prozessor geeignet ist zum: Empfangen von Eingabedaten und Aufteilen der Eingabedaten in eine Vielzahl von Ähnlichkeitseinheiten, Berechnen eines entsprechenden Deduplizierungsmetadatenausschnitts und des Eignerprozessors für eine der Ähnlichkeitseinheiten, Senden eines repräsentativen Werts und von entsprechenden Auszugswerten der Ähnlichkeitseinheit an den Eignerprozessor; der Eignerprozessor geeignet ist zum: Suchen nach dem repräsentativen Wert in dem entsprechenden Deduplizierungsmetadatenausschnitt, und Senden einer Beschreibung und der Eignerprozessoren von berechneten identischen Datenabschnitten an den aufnehmenden Prozessor; und die Eignerprozessoren der berechneten identischen Datenabschnitte geeignet sind zum: Empfangen von nominalen Informationen über die berechneten identischen Datenabschnitte, die von dem aufnehmenden Prozessor gesendet werden, und Antworten an den Prozessor mit Informationen über Speicherblöcke, welche die identischen Datenabschnitte speichern.
  14. System nach Anspruch 13, wobei der Prozessor für die Ähnlichkeitseinheit geeignet ist zum Berechnen von mindestens entweder Deduplizierungsblockbegrenzungen, der entsprechenden Auszugswerte oder des repräsentativen Werts.
  15. System nach Anspruch 13, wobei der Prozessor entsprechend dem Berechnen des entsprechenden Deduplizierungsmetadatenausschnitts und des Eignerprozessors geeignet ist zum Verwenden eines auf den repräsentativen Wert der Ähnlichkeitseinheit angewendeten konsistenten Hash-Verfahrens.
  16. System nach Anspruch 13, wobei der Prozessor geeignet ist zum Senden des repräsentativen Werts und der entsprechenden Auszugswerte der Ähnlichkeitseinheit an den Eignerprozessor unter Verwendung einer einzelnen Nachricht für mehrere aus der Vielzahl von Ähnlichkeitseinheiten, die auf denselben Eignerprozessor abgebildet werden.
  17. System nach Anspruch 13, wobei der Prozessor geeignet ist zum Durchführen von mindestens einem der Folgenden: Laden jedes aus einer Vielzahl von Auszugswerten, die repräsentativen Werten derjenigen aus der Vielzahl von Ähnlichkeitseinheiten entsprechen, in einen Auszugszwischenspeicher und Durchführen eines Auszugsabgleichverfahrens mit Auszugswerten, die von dem aufnehmenden Prozessor empfangen wurden und in dem Auszugszwischenspeicher enthalten sind, um die identischen Datenabschnitte zu berechnen.
  18. System nach Anspruch 13, wobei der Prozessor geeignet ist zum Senden der Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten, die eine Vielzahl von Eignerprozessoren von berechneten identischen Datenabschnitten umfassen.
  19. System nach Anspruch 13, wobei der Prozessor geeignet ist zum Speichern des repräsentativen Werts und von Auszugswerten der Eingabeähnlichkeitseinheit in dem Deduplizierungsmetadatenausschnitt.
  20. System nach Anspruch 19, wobei der Prozessor geeignet ist zum Aufzeichnen einer Identität des aufnehmenden Prozessors mit den Auszugswerten der Eingabeähnlichkeitseinheit.
  21. System nach Anspruch 13, wobei es sich bei den Eignerprozessoren der berechneten identischen Datenabschnitte, die durch den aufnehmenden Prozessor kontaktiert werden, um eine Teilmenge einer Vielzahl von Eignerprozessoren handelt, und wobei der Prozessor geeignet ist zum Auswählen der Teilmenge als diejenigen aus der Vielzahl von Eignerprozessoren, die einen höchsten Wert bereitstellen.
  22. System nach Anspruch 21, wobei der Prozessor geeignet ist zum Auswählen der Teilmenge durch mindestens eins der Folgenden: Auswählen derjenigen aus der Vielzahl von Eignerprozessoren mit den höchsten Mengen an berechneten identischen Datenabschnitten aus der Vielzahl von Eignerprozessoren, Auswählen derjenigen aus der Vielzahl von Eignerprozessoren mit einer Menge an berechneten identischen Datenabschnitten über einem vorher festgelegten Schwellwert, Auswählen derjenigen aus der Vielzahl von Eignerprozessoren, die in der Lage sind, eine nachfolgende Anfrage, die von dem aufnehmenden Prozessor erzeugt wird, effizient zu verarbeiten, um die identischen Datenabschnitte bereitzustellen.
  23. System nach Anspruch 13, wobei die Eignerprozessoren der berechneten identischen Datenabschnitte Verweiszähler von Speicherblöcken erhöhen, welche die identischen Datenabschnitte speichern.
  24. System nach Anspruch 13, wobei der aufnehmende Prozessor geeignet ist zum: Speichern von Daten, für die keine Übereinstimmungen in lokalen Speicherblöcken gefunden wurden, und/oder Hinzufügen von Verweisen auf die Speicherblöcke, deren Informationen durch die Eignerprozessoren der berechneten identischen Datenabschnitte bereitgestellt werden.
  25. Computerprogrammprodukt zur verteilten Datendeduplizierung in einem Prozessorraster, das Computerprogrammprodukt aufweisend: einen ausführbaren Teil, der Eingabedaten auf einem aufnehmenden Prozessor empfängt und die Eingabedaten in eine Vielzahl von Ähnlichkeitseinheiten aufteilt; einen ausführbaren Teil, der einen entsprechenden Deduplizierungsmetadatenausschnitt und einen Eignerprozessor für eine der Ähnlichkeitseinheiten berechnet; einen ausführbaren Teil, der einen repräsentativen Wert und entsprechende Auszugswerte der Ähnlichkeitseinheit an den Eignerprozessor sendet; einen ausführbaren Teil, der den Eignerprozessor zum Suchen nach dem repräsentativen Wert in dem entsprechenden Deduplizierungsmetadatenausschnitt verwendet; einen ausführbaren Teil, der den Eignerprozessor zum Senden einer Beschreibung und von Eignerprozessoren von berechneten identischen Datenabschnitten an den aufnehmenden Prozessor verwendet; einen ausführbaren Teil, der den aufnehmenden Prozessor zum Senden von nominalen Informationen über die berechneten identischen Datenabschnitte an die Eignerprozessoren der berechneten identischen Datenabschnitte verwendet; und einen ausführbaren Teil, der die Eignerprozessoren der berechneten identischen Datenabschnitte zum Antworten an den aufnehmenden Prozessor mit Informationen über physische Speicherblöcke, welche die identischen Datenabschnitte speichern, verwendet.
  26. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der für die Ähnlichkeitseinheit mindestens entweder Deduplizierungsblockbegrenzungen, die entsprechenden Auszugswerte oder den repräsentativen Wert berechnet.
  27. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der den entsprechenden Deduplizierungsmetadatenausschnitt und den Eignerprozessor unter Verwendung eines auf den repräsentativen Wert der Ähnlichkeitseinheit angewendeten konsistenten Hash-Verfahrens berechnet.
  28. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der den repräsentativen Wert und die entsprechenden Auszugswerte der Ähnlichkeitseinheit an den Eignerprozessor unter Verwendung einer einzelnen Nachricht für mehrere aus der Vielzahl von Ähnlichkeitseinheiten, die auf denselben Eignerprozessor abgebildet werden, sendet.
  29. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der durch den Eignerprozessor mindestens eines der Folgenden durchführt: Laden jedes aus einer Vielzahl von Auszugswerten, die repräsentativen Werten derjenigen aus der Vielzahl von Ähnlichkeitseinheiten entsprechen, in einen Auszugszwischenspeicher und Durchführen eines Auszugsabgleichverfahrens mit Auszugswerten, die von dem aufnehmenden Prozessor empfangen wurden und in dem Auszugszwischenspeicher enthalten sind, um die identischen Datenabschnitte zu berechnen.
  30. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der die Beschreibung und Eignerprozessoren von berechneten identischen Datenabschnitten sendet, die eine Vielzahl von Eignerprozessoren von berechneten identischen Datenabschnitten umfassen.
  31. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der durch den Eignerprozessor den repräsentativen Wert und Auszugswerte der Eingabeähnlichkeitseinheit in dem Deduplizierungsmetadatenausschnitt speichert.
  32. Computerprogrammprodukt nach Anspruch 31, darüber hinaus beinhaltend einen ausführbaren Teil, der eine Identität des aufnehmenden Prozessors mit den Auszugswerten der Eingabeähnlichkeitseinheit aufzeichnet.
  33. Computerprogrammprodukt nach Anspruch 25, wobei es sich bei den Eignerprozessoren der berechneten identischen Datenabschnitte, die durch den aufnehmenden Prozessor kontaktiert werden, um eine Teilmenge einer Vielzahl von Eignerprozessoren handelt, und darüber hinaus beinhaltend einen ausführbaren Teil, der die Teilmenge als diejenigen aus der Vielzahl von Eignerprozessoren auswählt, die einen höchsten Wert bereitstellen.
  34. Computerprogrammprodukt nach Anspruch 33, darüber hinaus beinhaltend einen ausführbaren Teil, der die Teilmenge durch mindestens eines der Folgenden auswählt: Auswählen derjenigen aus der Vielzahl von Eignerprozessoren mit den höchsten Mengen an berechneten identischen Datenabschnitten aus der Vielzahl von Eignerprozessoren, Auswählen derjenigen aus der Vielzahl von Eignerprozessoren mit einer Menge an berechneten identischen Datenabschnitten über einem vorher festgelegten Schwellwert, Auswählen derjenigen aus der Vielzahl von Eignerprozessoren, die in der Lage sind, eine nachfolgende Anfrage, die von dem aufnehmenden Prozessor erzeugt wird, effizient zu verarbeiten, um die identischen Datenabschnitte bereitzustellen.
  35. Computerprogrammprodukt nach Anspruch 25, wobei die Eignerprozessoren der berechneten identischen Datenabschnitte Verweiszähler von Speicherblöcken erhöhen, welche die identischen Datenabschnitte speichern.
  36. Computerprogrammprodukt nach Anspruch 25, darüber hinaus beinhaltend einen ausführbaren Teil, der durch den aufnehmenden Prozessor mindestens eines der Folgenden durchführt: Speichern von Daten, für die keine Übereinstimmungen in lokalen Speicherblöcken gefunden wurden, und Hinzufügen von Verweisen auf die Speicherblöcke, deren Informationen durch die Eignerprozessoren der berechneten identischen Datenabschnitte bereitgestellt werden.
DE112017000167.6T 2016-01-12 2017-01-04 Verteilte Datendeduplizierung in einem Prozessorraster Active DE112017000167B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/993,225 2016-01-12
US14/993,225 US10255288B2 (en) 2016-01-12 2016-01-12 Distributed data deduplication in a grid of processors
PCT/IB2017/050020 WO2017122101A1 (en) 2016-01-12 2017-01-04 Distributed data deduplication in grid of processors

Publications (2)

Publication Number Publication Date
DE112017000167T5 true DE112017000167T5 (de) 2018-06-28
DE112017000167B4 DE112017000167B4 (de) 2020-12-31

Family

ID=59275613

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017000167.6T Active DE112017000167B4 (de) 2016-01-12 2017-01-04 Verteilte Datendeduplizierung in einem Prozessorraster

Country Status (6)

Country Link
US (1) US10255288B2 (de)
JP (1) JP6807395B2 (de)
CN (1) CN108431815B (de)
DE (1) DE112017000167B4 (de)
GB (1) GB2562008B (de)
WO (1) WO2017122101A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups
US10997153B2 (en) 2018-04-20 2021-05-04 Hewlett Packard Enterprise Development Lp Transaction encoding and transaction persistence according to type of persistent storage
US11243703B2 (en) 2018-04-27 2022-02-08 Hewlett Packard Enterprise Development Lp Expandable index with pages to store object records
US11237743B2 (en) * 2019-04-29 2022-02-01 EMC IP Holding Company LLC Sub-block deduplication using sector hashing
CN111177137B (zh) * 2019-12-30 2023-10-13 广州酷狗计算机科技有限公司 数据去重的方法、装置、设备及存储介质
CN113448491B (zh) * 2020-03-26 2024-05-17 伊姆西Ip控股有限责任公司 存储系统的数据迁移

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004104838A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited データアクセス応答システム、ストレージシステム、クライアント装置、キャッシュ装置、およびデータアクセス応答システムへのアクセス方法
CA2433377A1 (en) 2003-06-25 2004-12-25 Ibm Canada Limited - Ibm Canada Limitee Computing frequent value statistics in a partitioned relational database
US7139772B2 (en) 2003-08-01 2006-11-21 Oracle International Corporation Ownership reassignment in a shared-nothing database system
ATE413765T1 (de) 2006-07-07 2008-11-15 Alcatel Lucent Verteilter hashing-mechanismus für selbstorganisierende netzwerke
US8166012B2 (en) 2007-04-11 2012-04-24 Emc Corporation Cluster storage using subsegmenting
US8060614B2 (en) 2008-06-19 2011-11-15 Microsoft Corporation Streaming operator placement for distributed stream processing
US8321648B2 (en) 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US8375047B2 (en) 2010-03-31 2013-02-12 Emc Corporation Apparatus and method for query prioritization in a shared nothing distributed database
US8250325B2 (en) * 2010-04-01 2012-08-21 Oracle International Corporation Data deduplication dictionary system
US8402004B2 (en) * 2010-11-16 2013-03-19 Actifio, Inc. System and method for creating deduplicated copies of data by tracking temporal relationships among copies and by ingesting difference data
US8682873B2 (en) * 2010-12-01 2014-03-25 International Business Machines Corporation Efficient construction of synthetic backups within deduplication storage system
US8380681B2 (en) 2010-12-16 2013-02-19 Microsoft Corporation Extensible pipeline for data deduplication
US9110936B2 (en) 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
US8825720B1 (en) * 2011-04-12 2014-09-02 Emc Corporation Scaling asynchronous reclamation of free space in de-duplicated multi-controller storage systems
US8484170B2 (en) 2011-09-19 2013-07-09 International Business Machines Corporation Scalable deduplication system with small blocks
CN102323958A (zh) * 2011-10-27 2012-01-18 上海文广互动电视有限公司 重复数据删除方法
CN108388632B (zh) * 2011-11-15 2021-11-19 起元科技有限公司 数据分群、分段、以及并行化
CN102495894A (zh) * 2011-12-12 2012-06-13 成都市华为赛门铁克科技有限公司 重复数据查找方法、装置及系统
US8682869B2 (en) 2012-04-05 2014-03-25 International Business Machines Corporation Increased in-line deduplication efficiency
US9336223B2 (en) 2012-09-24 2016-05-10 International Business Machines Corporation Selective erasure of expired files or extents in deduplicating virtual media for efficient file reclamation
US8799284B2 (en) 2012-11-30 2014-08-05 Futurewei Technologies, Inc. Method for automated scaling of a massive parallel processing (MPP) database
US9471586B2 (en) * 2013-01-10 2016-10-18 International Business Machines Corporation Intelligent selection of replication node for file data blocks in GPFS-SNC
US9479587B2 (en) 2013-01-23 2016-10-25 Nexenta Systems, Inc. Scalable object storage using multicast transport
US8938417B2 (en) 2013-02-22 2015-01-20 International Business Machines Corporation Integrity checking and selective deduplication based on network parameters
US9547662B2 (en) * 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US9195673B2 (en) 2013-03-15 2015-11-24 International Business Machines Corporation Scalable graph modeling of metadata for deduplicated storage systems
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
JP5444506B1 (ja) * 2013-03-29 2014-03-19 株式会社東芝 データの重複をハッシュテーブルに基づいて排除するためのストレージシステム
GB2514555A (en) 2013-05-28 2014-12-03 Ibm Deduplication for a storage system

Also Published As

Publication number Publication date
CN108431815B (zh) 2022-10-11
GB2562008A (en) 2018-10-31
JP2019506667A (ja) 2019-03-07
JP6807395B2 (ja) 2021-01-06
US10255288B2 (en) 2019-04-09
WO2017122101A1 (en) 2017-07-20
US20170199891A1 (en) 2017-07-13
CN108431815A (zh) 2018-08-21
GB2562008B (en) 2019-04-03
DE112017000167B4 (de) 2020-12-31
GB201812619D0 (en) 2018-09-19

Similar Documents

Publication Publication Date Title
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112007003693B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE112007003678B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE112018004178T5 (de) Mehrstufige speicherung in einem verteilten dateisystem
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE202014010898U1 (de) Hierarchische Stückelung von Objekten in einem dezentralen Speichersystem
DE112012004937T5 (de) Fingerabdruckbasierte Datendeduplizierung
DE202009019139U1 (de) Asynchron verteilte Deduplizierung für replizierte inhaltsadressierte Speichercluster
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

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