DE102013208930A1 - Zusammenfassen von Einträgen in einem Deduplizierungs-lndex - Google Patents

Zusammenfassen von Einträgen in einem Deduplizierungs-lndex Download PDF

Info

Publication number
DE102013208930A1
DE102013208930A1 DE102013208930A DE102013208930A DE102013208930A1 DE 102013208930 A1 DE102013208930 A1 DE 102013208930A1 DE 102013208930 A DE102013208930 A DE 102013208930A DE 102013208930 A DE102013208930 A DE 102013208930A DE 102013208930 A1 DE102013208930 A1 DE 102013208930A1
Authority
DE
Germany
Prior art keywords
data
signatures
memory
index
entries
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
DE102013208930A
Other languages
English (en)
Other versions
DE102013208930B4 (de
Inventor
Jonathan Amit
Corneliu M. Constantinescu
Joseph S. Gilder
Shai I. Tahar
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 DE102013208930A1 publication Critical patent/DE102013208930A1/de
Application granted granted Critical
Publication of DE102013208930B4 publication Critical patent/DE102013208930B4/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/1724Details of de-fragmentation performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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/13File access structures, e.g. distributed indices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures

Abstract

Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index bereitgestellt. Ein Index weist Datenblocksignaturen auf, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag mindestens eine der Datenblocksignaturen und einen Verweis auf den Datenblock von Daten enthält, aus dem die Signatur berechnet wurde. Es werden zusammenzufassende Einträge in dem Index ausgewählt und eine Zusammenfassungsoperation mit den Datenblocksignaturen in den ausgewählten Einträgen ausgeführt, um eine zusammengefasste Signatur zu erzeugen. In den Index wird ein Eintrag eingefügt, der die zusammengefasste Signatur und einen Verweis auf die Datenblöcke in dem Speicher enthält, auf die in den zusammengefassten ausgewählten Einträgen verwiesen wird. Der Index der Signaturen wird bei Deduplizierungs-Operationen verwendet, wenn Datenobjekte in den Speicher eingefügt werden.

Description

  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index.
  • Beschreibung der zugrunde liegenden Technik
  • Daten-Deduplizierung ist eine Datenreduzierungstechnik zum Entfernen redundanter Daten, um die Speicherauslastung zu verbessern. Durch das Deduplizieren wird die benötigte Speicherkapazität verringert, weil nur eine Kopie einer bestimmten Dateneinheit, die auch als Datenblock bekannt ist, gespeichert wird. Bei Plattenspeichersystemen wie beispielsweise einem Speicherverwaltungs-Server oder einem virtuellen Bandarchiv (Virtual Tape Library, VTL) kann eine Deduplizierungs-Technologie angewandt werden, um redundante Datenblöcke zu erkennen und Doppeleinträge infolge des redundanten Speicherns solcher Datenblöcke zu vermeiden. Die Daten-Deduplizierung in Speichern sorgt für die Verringerung des für einen bestimmten Satz von Dateien benötigten Speichervolumens und ist bei Anwendungen am wirksamsten, bei denen Kopien sehr ähnlicher oder sogar identischer Daten auf einer einzigen Platte gespeichert sind, was oft vorkommt. Bei Datensicherungen, die laufend zum Schutz von Datenverlusten durchgeführt werden, haben sich die meisten Daten bei einer bestimmten Datensicherung gegenüber der vorhergehenden Datensicherung nicht geändert und können oft Anlass zur Deduplizierung geben, um das redundante Speichern von Daten zu umgehen.
  • Daten-Deduplizierung kann auf Datei- oder Blockebene stattfinden. Durch Datei-Deduplizierung werden doppelte Dateien entfernt. Bei einem Block-Deduplizieren wird eine Datei durchsucht und das einmalige Vorkommen jedes Blocks gespeichert. Ein Block-Deduplizierungs-System teilt eine Datei in eine Folge von Datenblöcken ein. Das Deduplizierungs-System ermittelt, ob einige der Datenblöcke bereits gespeichert sind und speichert dann nur diese nichtredundanten Datenblöcke. Die Redundanzprüfung kann mit den Datenblöcken durchgeführt werden, die entweder gerade in der Datei gespeichert werden oder bereits im System gespeichert sind.
  • Ein Objekt kann unter Verwendung einer elektronischen Fingerabdrucktechnik wie beispielsweise der Rabin-Karp-Fingerabdrucktechnik in Datenblöcke eingeteilt werden. Redundante Datenblöcke werden unter Anwenden eines Hash-Algorithmus wie beispielsweise MD5 (Message-Digest-Algorithmus 5) oder SHA-1 (Secure-Hash-Algorithmus 1) auf jeden Datenblock erkannt, um einen Hashwert für die Datenblöcke zu erzeugen und diese Hashwerte dann mit dem Hashwerten bereits im System gespeicherter Datenblöcke zu vergleichen. Üblicherweise werden die Hashwerte für gespeicherte Datenblöcke in einem Index (Deduplizierungs-Index) verwaltet. Ein Datenblock kann durch einen Hashwert und/oder einen Fingerabdruck eindeutig gekennzeichnet werden. Wenn für einen Hashwert ein Eintrag gefunden wird, wird ein redundanter Datenblock erkannt, und dieser Datenblock in dem Datenobjekt oder Objekt kann durch einen Zeiger auf den im Speicher verwalteten übereinstimmenden Datenblock ersetzt werden. Die Größe des Deduplizierungs-Indexes kann durch ein für den Index verfügbares Speichervolumen begrenzt sein. Dadurch kann die Anzahl von auf den Speicher verweisenden Hashwerten begrenzt sein, die in dem Deduplizierungs-Index verwaltet werden können. Durch das Einrichten eines kleineren Indexes kann sichergestellt werden, dass der Index in das zugeordnete Speichervolumen passt.
  • In der Technik besteht ein Bedarf an verbesserten Techniken zum Durchführen von Deduplizierungs-Operationen.
  • Kurzdarstellung
  • Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index bereitgestellt. Ein Index weist Datenblocksignaturen auf, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag mindestens eine der Datenblocksignaturen und einen Verweis auf den Datenblock aufweist, von dem die Signatur berechnet wurde. Es werden Einträge in dem Index zum Zusammenfassen ausgewählt, und mit den Datenblocksignaturen in den ausgewählten Einträgen wird eine Zusammenfassungsoperation ausgeführt, um eine zusammengefasste Signatur zu erzeugen. In den Index wird ein Eintrag eingefügt, der die zusammengefasste Signatur und einen Verweis auf die Datenblöcke in dem Speicher enthält, auf die in den zusammengefassten ausgewählten Einträgen verwiesen wird. Der Index der Signaturen wird bei den Deduplizierungs-Operationen verwendet, wenn Datenobjekte in den Speicher eingefügt werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht eine Datenverarbeitungsumgebung, in der Ausführungsformen realisiert werden.
  • 2 veranschaulicht eine Ausführungsform von Objektdaten.
  • 3 veranschaulicht eine Ausführungsform eines Eintrags des Deduplizierungs-Indexes.
  • 4 veranschaulicht ein Beispiel eines Deduplizierungs-Indexes mit zusammengefassten Einträgen.
  • 5 veranschaulicht eine Ausführungsform von Operationen zum Einfügen eines Datenblocks in den Deduplizierungs-Index.
  • 6 veranschaulicht ein Beispiel von Operationen zum Zusammenfassen von Indexeinträgen in dem Deduplizierungs-Index.
  • 7a und 7b veranschaulichen eine Ausführungsform von Operationen zum Verarbeiten eines empfangenen Datenobjekts zum Deduplizieren durch Berechnen zusammengefasster Signaturen.
  • 8 veranschaulicht eine Ausführungsform einer Zuordnung von Datenblöcken in einem empfangenen Datenobjekt mit einer zusammengefassten oder Datenblocksignatur, die von einem oder mehreren Datenblöcken in dem empfangenen Datenobjekt berechnet wurden.
  • 9 veranschaulicht eine Ausführungsart eines Computerknotens in der Datenverarbeitungsumgebung.
  • DETAILLIERTE BESCHREIBUNG
  • Beschriebene Ausführungsformen stellen Techniken zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index bereit, um die Anzahl von Indexeinträgen durch Ausführen einer Zusammenfassungsoperation mit den in mehreren Einträgen enthaltenen Signaturen zu verringern, um eine in einem neuen zusammengefassten Eintrag enthaltene zusammengefasste Signatur zu erzeugen, die auf die mehreren Datenblöcke verweist, auf die die von der Zusammenfassungsoperation betroffenen Signaturen verweisen. Wenn bei beschriebenen Ausführungsformen ein empfangendes Datenobjekt zum Speicher hinzugefügt wird, werden aus den Datenblöcken in dem empfangenen Datenobjekt Datenblocksignaturen berechnet und aus mehreren Signaturen in dem empfangenen Datenobjekt zusammengefasste Signaturen berechnet, um diese mit zusammengefassten und Datenblocksignaturen in dem Deduplizierungs-Index zu vergleichen, um nicht doppelt vorkommende oder nicht übereinstimmende Datenblöcke in dem empfangenen Datenobjekt zu ermitteln, d. h. einen oder mehrere Datenblöcke mit Signaturen, die nicht mit den Signaturen in dem Index übereinstimmen. Es werden nur die nicht doppelt oder nur einmalig vorkommenden und keine duplizierten Datenblöcke in den Speicher geschrieben, um das Schreiben von redundanten Daten zu vermeiden.
  • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung mit einem Server 2, der Datenobjekte über ein Netzwerk 6 von Clients 4 empfängt und verarbeitet. Die Objekte bestehen aus Datenblöcken 8 von Daten, die der Server 2 in einem Speicher 10 speichert. Der Server 2 weist einen Speichermanager 12 zum Verwalten der Speicherung von Datenobjekten in dem Speicher 10 auf. Der Speichermanager 12 verwaltet Objektdaten 14, die Informationen über die Objekte in dem Speicher 10 aufweisen. Die Objektdaten 14 können eine geordnete Liste von Datenblöcken 8 und der/die Adressen dieser Datenblöcke 8 in dem Speicher 10 bereitstellen. Die in den Objektdaten 14 dargestellten Objekte, deren Datenblöcke 8 von Daten in dem Speicher 10 gespeichert sind, können Dateien, Datenbanktabellen, Multimediainhalte, Programme, Datensätze oder beliebige andere Datenanordnungen aufweisen, die zur Speicherung vorgesehen werden können. Der Speichermanager 12 kann Speicherplatz für aktive Datenobjekte bereitstellen, die von den Clients 4 in Echtzeitoperationen verwendet werden, und/oder einen Sicherungsmanager zum Sichern und Archivieren von Datenobjekten des Clients 4 aufweisen.
  • Der Speichermanager 12 verwaltet einen Deduplizierungs-Index 16, der Informationen über die Datenblöcke 8 in dem Speicher 10 aufweist, um sicherzustellen, dass beim Speichern von empfangenen Datenobjekten, die Datenblöcke aufweisen, nur eine Kopie eines Datenblocks 8, d. h. keine doppelten Kopien, in dem Speicher 10 gespeichert wird, obwohl in mehreren Datenobjekten auf einen Datenblock 8 verwiesen werden kann. Der Speichermanager 12 kann ferner Datenblockdaten 18 verwalten, die Informationen über den Speicherplatz der Datenblöcke 8 in dem Speicher 10 aufweisen. Aufgrund begrenzter Speicherressourcen des Servers kann der Deduplizierungs-Index 14 einen Eintrag nicht für jeden einzelnen Datenblock 8 in dem Speicher verwalten, auf den in Datenobjekten verwiesen wird, die in den Objektdaten 14 angezeigt werden. Die Datenblockdaten 16 enthalten Informationen über alle Datenblöcke 8 in dem Speicher 10, um auf die Datenblöcke 8 zugreifen zu können.
  • Der Server 2 kann Daten mit Clients 4 über ein Netzwerk 6 austauschen, beispielsweise über ein lokales Netzwerk (LAN), ein Netzwerk für den Speicherbereich (SAN), ein Weitverkehrsnetz (WAN), ein Cloud-Computing-Modell usw. Gemäß weiteren Ausführungsformen können der Server 2 und der Client 4 über eine Direktleitung miteinander verbunden sein oder Komponenten auf der Plattform eines Einzelcomputersystems aufweisen und Daten über einen Bus oder über einen Speicher austauschen.
  • Der Speicher 10 kann Speichermedien aufweisen, die in einer oder mehreren in der Technik bekannten Speichereinheiten implementiert sind, beispielsweise miteinander verbundene Festplattenlaufwerke (die z. B. als DASD, RAID, JBOD usw. konfiguriert sind), Halbleiterspeichereinheiten (z. B. EEPROM (elektrisch löschbare programmierbare Nur-Lese-Speicher), Flash-Speicher, Flash-Plattenspeicher, Speicherklassenspeicher (storage-class memory, SCM)), elektronische Speicher, Magnetbandmedien, Bandkassetten usw.
  • Der Speichermanager 12 kann ein Softwareprogramm in einem Speicher aufweisen, das durch einen Prozessor des Servers 2 ausgeführt wird. Gemäß einer alternativen Ausführungsform kann der gesamte Speichermanager 12 oder ein Teil davon als Hardwarekomponente implementiert werden, beispielsweise als integrierter Spezialschaltkreis, z. B. anwendungsspezifischer Schaltkreis (ASIC), Erweiterungskarte usw.
  • 2 veranschaulicht eine Ausführungsform eines Exemplars von Objektdaten 50 für ein Datenobjekt, das in den Objektdaten 14 enthalten ist. Die Objektdaten 50 für ein Datenobjekt enthalten einen Datenobjektnamen 52, der dem Datenobjekt durch den Client 4 zugewiesen wird, beispielsweise eine eindeutige Kennung und eine oder mehrere Datenblockkennungen (Ci) 54a, 54b...54n von Datenblöcken, die den Datenobjekten 52 des Clients zugewiesen wurden. Die Datenblöcke selbst können eine variable Länge, d. h. dieselben oder unterschiedliche Längen, oder eine fest vorgegebene Länge aufweisen. Die Objektdaten 50 können eine geordnete Liste der Datenblockkennungen (C1...Cn) enthalten, die eine Folge von 1...n anzeigt, in der die Datenblöcke in dem Datenobjekt vorkommen.
  • Gemäß einer Ausführungsform wird die Datenblockkennung (Ci) 54a...54n durch Verarbeiten der Datenblockdaten berechnet, um einen eindeutigen Wert für den Datenblock zu erzeugen, beispielsweise unter Verwendung des Algorithmus MD5 (Message-Digest Algorithm 5) oder SHA-1 (Secure Hash Algorithm 1), der kryptografische Hashwerte von Datenblöcken in einem Datenobjekt berechnet. Gemäß einer alternativen Ausführungsform kann die Datenblockkennung 54a, 54b...54n anstelle eines Hashwertes der Daten einen direkten Verweis auf einen Speicherplatz in dem Speicher 8 aufweisen.
  • 3 veranschaulicht eine Ausführungsform eines Eintrags 70 im Deduplizierungs-Index 16 für Datenblöcke 8 in dem Speicher 10. Der Eintrag 70 kann auf einen einzigen Datenblock oder eine Vielzahl von Datenblöcken 8 für einen zusammengefassten Eintrag verweisen. Der Indexeintrag 70 enthält eine Signatur (Si) 72, die von einem einzigen Datenblock 8 berechnet werden kann, beispielsweise gemäß der zum Berechnen der Datenblockkennungen 54a, 54b...54n verwendeten Technik oder durch Ausführen einer Zusammenfassungsoperation, z. B. eine Multiplikation oder eine andere Operation, mit zuvor berechneten Datenblocksignaturen 72 von vorhandenen Indexeinträgen 70, um eine zusammengefasste Datenblocksignatur zu ermitteln. Ein Speicherverweis 74 verweist auf den einen oder mehrere aufeinander folgende Datenblöcke 8 in dem Speicher 10, die der Signatur 72 zugehörig sind. Eine Zusammenfassungsebene 76 zeigt ein Ausmaß an, in dem die Signatur (Si) 72 direkt aus einem einzigen Datenblock 8 oder aus mehreren Signaturen 72 in bereits vorhandenen Einträgen 70 berechnet wurde. Zum Beispiel zeigt eine Zusammenfassungsebene 76 null eine Datenblocksignatur 72 an, die direkt aus dem Datenblock 8 berechnet wurde und einen Speicherverweis 74 aufweist, der auf den Datenblock 8 verweist, aus dem die Signatur berechnet wurde. Eine Zusammenfassungsebene 76 eins zeigt an, dass es sich bei der Signatur 72 in dem Eintrag 70 um eine zusammengefasste Signatur handelt, die durch Ausführen einer Zusammenfassungsoperation mit zwei oder mehreren Datenblocksignaturen 72 der ersten Zusammenfassungsebene 0 berechnet wurde, die direkt aus dem Datenblock 8 berechnet wurden. Eine Zusammenfassungsebene n zeigt an, dass die Datenblocksignatur aus zusammengefassten oder Datenblocksignaturen berechnet wurde, die auf der (n-1)ten oder einer vorhergehenden Zusammenfassungsebene berechnet wurden. Zum Beispiel zeigt eine Zusammenfassungsebene zwei an, dass die zusammengefassten Signaturen aus den zusammengefassten Signaturen auf der ersten Zusammenfassungsebene berechnet wurden.
  • Gemäß bestimmten Ausführungsformen wird eine Zusammenfassungsoperation mit Signaturen 72 in Einträgen 70 ausgeführt, die auf aufeinanderfolgende Datenblöcke 8 in dem Speicher 10 verweisen 74, sodass der Speicherverweis 74 für die zusammengefasste Signatur auf aufeinanderfolgende Datenblöcke 8 verweist.
  • 4 veranschaulicht ein Beispiel von Einträgen 70 in dem Deduplizierungs-Index 16. Die Datenblockeinträge 80 der ersten Ebene, der Zusammenfassungsebene 0, werden durch Berechnen der Signaturen direkt aus den Datenblöcken 82 erzeugt, die im Einzelnen mit 82a bis 82i bezeichnet sind. Die Einträge 84 der zweiten Ebene von zusammengefassten, der Zusammenfassungsebene 1, werden durch Ausführen einer Zusammenfassungsoperation (z. B. einer Multiplikation) mit den Signaturen von zwei Einträgen berechnet, die auf aufeinanderfolgende Datenblöcke von der vorhergehenden Zusammenfassungsebene 1 verweisen. Die Einträge 86 der dritten Zusammenfassungsebene, der Zusammenfassungsebene 2, weisen zusammengefasste Signaturen auf, die durch Ausführen der Zusammenfassungsoperation mit der zusammengefassten Signatur von zwei Einträgen 84 der vorhergehenden zweiten Zusammenfassungsebene berechnet wurden, die auf aufeinanderfolgende Datenblöcke verweisen. Und schließlich weisen die Einträge 88 der vierten Zusammenfassungsebene zusammengefasste Signaturen auf, die durch Ausführen der Zusammenfassungsoperation mit den Einträgen 86 der vorhergehenden Ebene berechnet wurden, die auf aufeinanderfolgende Datenblöcke verweisen. Auf diese Weise weist jede weitere Zusammenfassungsebene Einträge auf, die mehrere Einträge in sich vereinen, die auf aufeinanderfolgende Sätze von einem oder mehreren Datenblöcken verweisen, um einen zusammengefassten Eintrag zu bilden, der alle aufeinanderfolgenden Datenblöcke darstellt, auf welche die mehreren Einträge verweisen, die der Zusammenfassungsoperation unterworfen wurden.
  • Zum Beispiel verweisen die Deduplizierungs-Einträge 80a und 80b auf die Datenblöcke 82a und 82b. Der Eintrag 84a wird durch Zusammenfassen der Signaturen in den Einträgen 80a und 80b gebildet, und der Eintrag 84a verweist auf die aufeinanderfolgenden Datenblöcke 82a und 82b, auf welche die zusammengefassten Einträge 80a und 80b verweisen, die der Eintrag 84a ersetzen kann. Der Deduplizierungs-Eintrag 86a wird durch Zusammenfassen der Signaturen in den Einträgen 84a und 84b gebildet, sodass der Eintrag 86a auf die aufeinanderfolgenden Datenblöcke 82a, 82b, 82c und 82d verweist, auf welche die zusammengefassten Einträge 84a und 84b verweisen, die der Eintrag 86a ersetzen kann. Der Deduplizierungs-Eintrag 88a wird durch Zusammenfassen der Signaturen in den Einträgen 86a und 86b gebildet, sodass der Eintrag 88a auf aufeinanderfolgende Datenblöcke 82a, 82b, 82c, 82d, 82e, 82f, 82g und 82h verweist, auf welche die zusammengefassten Einträge 86a und 86b verweisen, die der Eintrag 88a ersetzen kann. Da der Deduplizierungs-Index 16 zum Speichern der Deduplizierungs-Einträge 70 zusätzlichen Speicherplatz benötigt, kann auf diese Weise Speicherplatz freigegeben werden, sodass weniger Einträge, d. h. Signaturen, auf dieselben Datenblöcke 8 in dem Speicher 10 verweisen.
  • Gemäß den obigen Ausführungsformen findet bei der Zusammenfassungsoperation das Zusammenfassen von zwei Einträgen auf einer vorhergehenden Zusammenfassungsebene statt, die auf aufeinanderfolgende Datenblöcke verweisen. Gemäß weiteren Ausführungsformen kann bei einer Zusammenfassungsoperation eine Operation mit mehr als zwei Einträgen stattfinden, die auf aufeinanderfolgende Datenblöcke verweisen, sodass ein zusammengefasster Eintrag mehr als zwei Einträge ersetzen und damit auf die aufeinanderfolgenden Datenblöcke verweisen kann, auf die mehr als zwei zusammengefasste Einträge verweisen. Darüber hinaus kann bei bestimmten Ausführungsformen eine Zusammenfassungsoperation mit Einträgen auf verschiedenen Ebenen ausgeführt werden, solange die Einträge auf verschiedenen Ebenen auf aufeinanderfolgende Datenblöcke verweisen.
  • Die Zusammenfassungsoperation mit Blocksignaturen oder zusammengefassten Signaturen kann eine Verkettung oder andere Operation aufweisen. Bei einer Ausführungsform können durch die Zusammenführungsoperation zwei Signaturen mit m und n Bytes verkettet werden, um eine neue zusammengefasste Signatur mit m plus n Bytes zu bilden. Bei weiteren Ausführungsformen können zusätzliche Operationen an den verketteten Signaturen ausgeführt werden, beispielsweise indem ein weiterer Hash-Wert genommen wird, um die letztendliche Signatur zu erzeugen. Bei noch weiteren Ausführungsformen können zur der Zusammenfassungsoperation andere geeignete Arten von Operationen gehören, darunter Multiplikationen usw., ohne auf diese beschränkt zu sein.
  • Bei Ausführungsformen, bei denen zwei Einträge zusammengefasst werden, kann die Anzahl von Datenblöcken, auf die ein Eintrag auf einer Zusammenfassungsebene n, (n = 0, 1, 2, 3...) verweist, durch den Ausdruck 2n ausgedrückt werden.
  • 5 veranschaulicht eine Ausführungsform durch den Speichermanager 12 ausgeführter Operationen zum Einfügen eines Datenblocks von einem empfangenen Datenobjekt in den Speicher 10. Bei einem einzufügenden Datenblock kann es sich um einen Datenblock variabler Länge handeln, der durch Anwenden eines Fingerabdruckalgorithmus wie beispielsweise des Rabin-Fingerabdruckschemas auf das Datenobjekt zum Ermitteln der Datenblockgrenzen ermittelt werden kann, oder um einen Datenblock fester Länge, sodass die Grenzen der Datenblöcke in dem Datenobjekt fester Länge ermittelt werden. Nach dem Empfangen des in den Speicher 10 einzufügenden Datenblocks (in Block 100) erzeugt der Speichermanager 12 (in Block 102) eine Signatur für den Datenblock und schreibt diesen (in Block 104) in den Speicher 10. Der Speichermanager 12 fügt (in Block 104) einen Eintrag 70 in den Deduplizierungs-Index 16 ein, der die Signatur 72, einen Verweis auf den in den Speicher 10 geschriebenen Datenblock und eine Zusammenfassungsebene 0 anzeigt.
  • 6 veranschaulicht eine Ausführungsform von Operationen, die durch den Speichermanager 12 ausgeführt werden, um Einträge 70 des Deduplizierungs-Indexes 16 zusammenzufassen. Der Speichermanager 12 startet (in Block 120) eine Operation zum Zusammenfassen der Einträge 70 des Indexes 16 als Reaktion auf ein Ereignis. Zum Beispiel kann der Speichermanager 12 Einträge zusammenfassen, wenn der verfügbare Speicherplatz im Speicher des Servers 2 einen Schwellenwert erreicht. Alternativ kann der Speichermanager 12 periodisch Einträge zusammenfassen, nachdem der Index 16 eine bestimmte Größe erreicht hat oder nach einer bestimmten Zeitspanne. Nach dem Starten der Zusammenfassungsoperation (in Block 120) ermittelt der Speichermanager 14 (in Block 122) in dem Index 16 zusammenzufassende Einträge 70 auf der Grundlage eines Kriteriums der Datenblöcke 8, auf welche die Einträge 70 verweisen, sodass die vom Zusammenfassen betroffenen und nicht betroffenen Einträge auf alle Datenblöcke 8 in dem Speicher verweisen, die in Datenobjekten 50 enthalten sind. Der Speichermanager 12 wählt (in Block 126) mehrere der ermittelten Einträge 70 aus, die das Kriterium erfüllen und auf aufeinanderfolgende Datenblöcke 8 in dem Speicher 10 verweisen, die zusammengefasst werden sollen. Die ausgewählten zusammenzufassenden Einträge, die auf aufeinanderfolgende Datenblöcke verweisen, können sich auf ein und derselben oder auf verschiedenen Zusammenfassungsebenen befinden.
  • Das Kriterium zum Auswählen der zusammenzufassenden Datenblöcke kann ein Alter der Datenblöcke in dem Speicher aufweisen, sodass Datenblöcke, die längere Zeit im Speicher waren, ohne aktualisiert zu werden, eher zum Zusammenfassen ausgewählt werden als Datenblöcke, die vor kürzerer Zeit eingefügt oder aktualisiert worden sind. Es können weitere Kriterien verwendet werden, um weniger nachgefragte Datenblöcke auszuwählen, wobei die Nachfrage nach einem Datenblock ermittelt werden kann: anhand der Häufigkeit von Eingabe/Ausgabe-(E/A-)Zugriffen auf die Datenblöcke in dem Speicher, sodass Datenblöcke stärker nachgefragt sind, auf die häufiger zugegriffen wird; anhand einer Häufigkeit, mit der die Datenblöcke in dem Speicher in Datenobjekten erscheinen, die in den Speicher eingefügt werden, sodass Datenblöcke, die in mehreren Datenobjekten erscheinen, stärker nachgefragt sind; anhand eines Speicherbereichs, in dem die Datenblöcke gespeichert sind, sodass Datenblöcke, die in einem aktuellerem Bereich gespeichert sind, auf den häufiger zugegriffen wird, stärker nachgefragt sind; und anhand eines Datentyps in den Datenblöcken, wobei Datenblöcke, deren Datentyp wichtiger ist und auf die häufiger zugegriffen wird, als stärker nachgefragt angesehen werden können.
  • Der Speichermanager 12 führt (in Block 128) eine Zusammenfassungsoperation mit den Datenblocksignaturen 72 in den ausgewählten Einträgen 70 aus, um eine zusammengefasste Signatur zu erzeugen. Die Zusammenfassungsoperation kann das Multiplizieren der Signaturwerte oder das Ausführen anderer Operationen beinhalten, um einen neuen zusammengefassten Signaturwert zu bestimmen. In den Index 16 wird (in Block 130) ein Eintrag 70 eingefügt, der die zusammenfasste Signatur 72, einen Verweis 74 auf die Datenblöcke in dem Speicher 10, aus denen die verarbeitete zusammengefasste und/oder Datenblocksignatur erzeugt wurde, und eine Zusammenfassungsebene 76 enthält, die von der Zusammenfassungsebene der ausgewählten Einträge aus, die von der Zusammenfassungsoperation betroffen sind, eine nächste Ebene aufweist. Die ausgewählten Einträge, die von dem Zusammenfassen betroffen sind, werden (in Block 132) entfernt, um in dem Deduplizierungs-Index 16 Platz zu schaffen. Wenn es (in Block 134) mehrere Einträge gibt, die noch nicht zusammengefügt wurden, geht der Prozess zurück zu Block 126, um weitere ermittelte Einträge zum Zusammenfassen auszuwählen, andernfalls ist der Prozess beendet.
  • 7a und 7b veranschaulichen eine Ausführungsform durch den Speichermanager 12 ausgeführter Operationen zum Verarbeiten eines empfangenen Datenobjekts unter Verwendung des Deduplizierungs-Indexes 16 zum Ermitteln nicht doppelt vorkommender Datenblöcke in dem empfangenen Datenobjekt, die in den Speicher 10 eingefügt werden sollen. Nach dem Empfangen eines Objekts (in Block 150), verarbeitet der Speichermanager 12 (in Block 152) das empfangene Datenobjekt, um Datenblöcke (mit fester oder variabler Größe) der Daten in dem empfangenen Datenobjekt zu ermitteln. Zum Ermitteln von Datenblöcken mit variabler Größe kann der Speichermanager 12 einen Fingerabdruckalgorithmus wie beispielsweise das Rabin-Fingerabdruckschema anwenden. Dann kann der Speichermanager 12 einen Prozess zum Berechnen von Signaturwerten für einzelne Datenblöcke und Kombinationen von Datenblöcken starten, um diese mit den zusammengefassten Signaturen 72 für zusammengefasste Einträge 70 zu vergleichen. Ein Zähler für Zusammenfassungsebenen wird (in Block 154) auf null gesetzt. Der Speichermanager 12 ermittelt (in Block 156) Datenblocksignaturen für die ermittelten Datenblöcke durch Verarbeiten der Daten in den ermittelten Datenblöcken des empfangenen Datenobjekts, wobei jede ermittelte Datenblocksignatur dem Datenblock zugehörig ist, der zum Ermitteln der Signatur verarbeitet wurde. 8 zeigt, wie der Speichermanager 12 Signaturdaten 190 der Datenblöcke des empfangenen Objekts für jede berechnete Signatur und Daten über den einen oder mehrere Datenblöcke 194 verwalten kann, die der berechneten Signatur 194 zugehörig sind.
  • Nach dem Ermitteln der Datenblocksignaturen für jeden einzelnen Datenblock in dem empfangenen Objekt ermittelt der Speichermanager 12 (in Block 158) aus dem Deduplizierungs-Index 16 eine höchste Zusammenfassungsebene 76 in den Einträgen 70 des Deduplizierungs-Indexes 16, d. h. die höchste Zusammenfassungsebene, für die Signaturen berechnet worden sind. Wenn (in Block 160) die höchste ermittelte Zusammenfassungsebene den Wert des Zählers für Zusammenfassungsebenen überschreitet, führt der Speichermanager 12 (in Block 162) die Zusammenfassungsoperation mit den zusammengefassten oder Datenblocksignaturen 190 aus, die für die letzte betrachtete Zusammenfassungsebene berechnet wurden, um eine weitere Ebene von zusammengefassten Signaturen zu erzeugen. Der Speichermanager 12 kann dieselbe Zusammenfassungsoperation wie zum Erzeugen des Deduplizierungs-Indexes in 6 ausführen, um einen Wert für eine zusammengefasste Signatur aus mindestens zwei anderen Signaturwerten zu erzeugen, z. B. durch Multiplizieren der Signaturwerte. Der Zählerwert für Zusammenfassungsebenen wird (in Block 164) erhöht, und der Prozess geht zurück zu Block 160, um zu ermitteln, ob aus den zuvor berechneten zusammengefassten Signaturen auf der vorhergehenden Ebene eine nächste Ebene von zusammengefassten Signaturen berechnet werden soll, was durch die Variable des Zählers für Zusammenfassungsebenen angezeigt wird. Auf diese Weise berechnet der Speichermanager 16 Signaturwerte von empfangenen Datenobjekten, um Datenblocksignaturen aus den Datenblöcken in dem Datenobjekt und zusammengefasste Signaturen zu erzeugen, die durch Ausführen der Zusammenfassungsoperation (Multiplizieren) mit zuvor berechneten zusammengefassten oder Datenblocksignaturen berechnet wurden.
  • Wenn die (in Block 160) ermittelte höchste Zusammenfassungsebene den Zusammenfassungszählerwert nicht überschreitet, was nach dem Erzeugen von zusammengefassten und Datenblocksignaturen für das empfangene Datenobjekt bis zur höchsten Zusammenfassungsebene in dem Deduplizierungs-Index 16 geschieht, geht der Prozess (von Block 166) weiter zu Block 170 in 7b. Der Speichermanager 12 ermittelt (in Block 170), ob die von den Datenblöcken in dem empfangenen Datenobjekt ermittelten Datenblocksignaturen und zusammengefassten Signaturen mit Signaturen 72 in den Einträgen 70 des Deduplizierungs-Indexes 16 übereinstimmen. Eine Übereinstimmung zeigt an, dass die Datenblöcke in dem empfangenen Datenobjekt, das der zusammengefassten oder Datenblocksignatur zugehörig ist, Kopien von aufeinanderfolgenden Datenblöcken 8 sind, die bereits im Speicher 10 gespeichert sind, und eine nicht übereinstimmende Signatur zeigt an, dass die der nicht übereinstimmenden zusammengefassten oder Datenblocksignatur zugehörigen Datenblöcke keine Kopien von Daten sind, die in dem Speicher 10 gespeichert sind. Wenn es (in Block 172) nicht übereinstimmende Signaturen gibt, die aus den zusammengefassten oder Datenblocksignaturen des empfangenen Datenobjekts berechnet wurden, die nicht mit Signaturen im Index 16 übereinstimmen, werden die Datenblöcke in dem empfangenen Datenobjekt, die den ermittelten nicht übereinstimmenden Signaturen zugehörig sind, gemäß den Operationen von 5 (in Block 174) in den Speicher geschrieben. Datenblöcke in dem empfangenen Datenobjekt, die den zusammengefassten und Datenblocksignaturen zugehörig sind, die mit den Signaturen in dem Index übereinstimmen, werden nicht in den Speicher 10 geschrieben, da sie Kopien bereits im Speicher 10 gespeicherter Daten darstellen.
  • Gemäß den beschriebenen Ausführungsformen werden Einträge eines Deduplizierungs-Indexes zusammengefasst, um in dem Index freien Platz zu schaffen und zu ermöglichen, dass Verweise auf Datenblöcke in dem Speicher in Verbindung mit anderen Datenblöcken durch eine zusammengefasste Signatur in dem Deduplizierungs-Index erhalten bleiben. Wenn der Platz im Deduplizierungs-Index begrenzt werden muss, ermöglichen die beschriebenen Ausführungsformen, dass Datenblöcke in dem Deduplizierungs-Index dargestellt bleiben, wenn vermieden werden soll, dass Daten doppelt in den Speicher geschrieben werden. Gemäß bestimmten Ausführungsformen können Einträge des Deduplizierungs-Indexes, die auf seltener abgerufene Datenblöcke verweisen, zusammengefasst werden, um Platz in dem Deduplizierungs-Index zu schaffen, um auf neu in den Speicher aufgenommene Datenblöcke zu verweisen und gleichzeitig zu gewährleisten, dass zum Deduplizieren Indexeinträge weiterhin auf diese seltener abgerufenen aufeinanderfolgenden Datenblöcke verweisen können.
  • Die beschriebenen Ausführungsformen zum Verwalten des Deduplizierungs-Indexes 16 und zum Zusammenfassen von Einträgen können im Server 2 ausgeführt werden, wenn dieser Datenobjekte von den Clients 4 empfängt. Alternativ können die Clients 4 den Deduplizierungs-Index 16 von Daten in dem Speicher 10 verwalten, um dadurch die Anzahl der im Speicher 10 zu speichernden Datenblöcke zu minimieren, die zum Server 4 übertragen werden. Der Client 4 kann den Deduplizierungs-Index 16 dazu verwenden, durch Ausführen der Operationen von 7a und 7b Datenblöcke in einem Datenobjekt zu ermitteln, die Kopien von Datenblöcken in dem Speicher 10 sind, und dann die Daten durch die Signaturen in den Indexeinträgen für die Datenblöcke zu ersetzen, auf die in den Einträgen des Deduplizierungs-Indexes 16 verwiesen wird, um das über das Netzwerk 6 zum Server 2 übertragene Datenvolumen zu minimieren.
  • 9 veranschaulicht eine Ausführungsform eines Computerknotens 302, der eine Ausführungsart des Serversystems 2 und der Clientsysteme 4 aufweisen kann. Der Serverknoten 2 und die Clientknoten 4 können in einer Cloud-Computing-Umgebung implementiert sein, in welcher der Server 2 Speicher- und Deduplizierungs-Dienste für die Clients 4 bereitstellt. Der Computerknoten 302 stellt lediglich ein Beispiel eines geeigneten Datenverarbeitungsknotens dar und ist nicht als Einschränkung des Schutzumfangs der Verwendung oder Funktionalität von hierin beschriebenen Ausführungsformen der Erfindung anzusehen. Vielmehr kann der Computerknoten 302 so implementiert werden, dass er jede oben dargelegte Funktionalität ausführt.
  • Der Computerknoten 302 kann mit zahlreichen weiteren Umgebungen oder Konfigurationen von Universal- oder Spezialdatenverarbeitungssystemen betrieben werden. Als Beispiele für allgemein bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung mit dem Computerknoten 302 geeignet sind, kommen infrage, ohne darauf beschränkt zu sein, Personal Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, tragbare oder Laptopeinheiten, Mehrprozessorsysteme, Systeme auf Mikroprozessorbasis, Set-Top-Boxen, programmierbare Heimelektronik, Netz-PCs, Kleincomputersysteme, Großcomputersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der obigen Systeme oder Einheiten enthalten, und dergleichen.
  • Der Computerknoten 302 kann allgemein in Verbindung mit ausführbaren Anweisungen eines Computersystems beschrieben werden, beispielsweise Programmmodule, die durch ein Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Tasks ausführen oder bestimmte abstrakte Datentypen implementieren. Der Computerknoten 302 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, in denen Tasks durch ferne Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetz miteinander verknüpft sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule in Speichermedien sowohl von lokalen als auch fernen Computersystemen angeordnet sein, darunter in Speichereinheiten.
  • Der Computerknoten 302 gemäß 9 ist in Form einer Universaldatenverarbeitungseinheit dargestellt. Die Komponenten des Computersystems/Servers 302 können, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Zentraleinheiten 304, einen Systemspeicher 306 und einen Bus 308 enthalten, der verschiedene Systemkomponenten miteinander verbindet, darunter den Systemspeicher 306 mit dem Prozessor 304.
  • Der Bus 308 stellt einen oder mehrere von verschiedenen Typen von Busstrukturen dar, darunter eine Speicherbus- oder Speichersteuereinheit, einen peripheren Bus, einen beschleunigten Grafikanschluss und einen Prozessor- oder lokalen Bus unter Verwendung einer aus einer Vielfalt von Busarchitekturen. Als Beispiele kommen infrage, ohne darauf beschränkt zu sein, der ISA-Bus (Industriestandard-Architektur), der MCA-Bus (Mikrokanalarchitektur), der EISA-Bus (Weiterentwicklung der Industriestandard-Architektur), der lokale VESA-Bus (Video Electronics Standards Association) und der PCI-Bus (Verbindungsbus für Erweiterungskomponenten).
  • Üblicherweise enthält der Computerknoten 302 eine Vielfalt von computerlesbaren Medien. Bei solchen Medien kann es sich um beliebige verfügbare Medien handeln, auf die der Computerknoten 302 zugreifen kann und die sowohl flüchtige als auch permanente Medien, austauschbare und fest eingebaute Medien enthalten und zum Speichern der Objektdaten 14, des Deduplizierungs-Indexes 16, der Datenblockdaten 18 und des Programms des Speichermanagers 12 verwendet werden können.
  • Der Systemspeicher 306 kann computerlesbare Medien in Form eines flüchtigen Speichers wie beispielsweise eines Direktzugriffsspeichers (RAM) 310 und/oder eines Cachespeichers 312 enthalten. Der Computerknoten 302 kann ferner weitere austauschbare/fest eingebaute, flüchtige/nichtflüchtige Speichermedien des Computersystems enthalten. Lediglich beispielhaft kann das Speichersystem 313 zum Lesen von einem (nicht gezeigten und üblicherweise als „Festplattenlaufwerk” bezeichneten) fest eingebauten permanenten magnetischen Medium und zum Schreiben darauf bereitgestellt werden. Es können auch ein nicht gezeigtes Magnetplattenlaufwerk zum Lesen von einer austauschbaren permanenten Magnetplatte (z. B. einer „Diskette”) und zum Schreiben darauf sowie ein optisches Plattenlaufwerk zum Lesen von einer austauschbaren permanenten optischen Platte wie beispielsweise einer CD-ROM, einer DVD-ROM oder anderen optischen Medien und zum Schreiben darauf bereitgestellt werden. In solchen Fällen kann jede Einheit durch eine oder mehrere Medienschnittstellen mit dem Bus 308 verbunden sein. Wie unten näher dargestellt und beschrieben kann der Speicher 306 mindestens ein Programmprodukt enthalten, das einen Satz (z. B. mindestens ein) von Programmmodulen aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Beispielsweise können, ohne darauf beschränkt zu sein, ein Programm/Dienstprogramm 314, das einen Satz (mindestens ein) von Programmmodulen 316 aufweist, sowie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten im Speicher 306 gespeichert sein. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, weitere Programmmodule und Programmdaten oder bestimmte Kombinationen derselben können jeweils eine Ausführungsart einer vernetzten Umgebung enthalten. Die Programmmodule 316 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von hierin beschriebenen Ausführungsformen der Erfindung aus, beispielsweise Operationen des Speichermanagers 12.
  • Der Computerknoten 302 kann auch Daten austauschen mit einer oder mehreren externen Einheiten 318 wie beispielsweise einer Tastatur, mit einer Zeigeeinheit, einem Bildschirm 320 usw.; mit einer oder mehreren Einheiten, die einen Benutzer zum Einwirken auf den Computerknoten 302 befähigen; und/oder mit beliebigen Einheiten (z. B. einer Netzwerkkarte, einem Modem usw.), die das Computersystem/den Server 302 befähigen, Daten mit einer oder mehreren weiteren Datenverarbeitungseinheiten auszutauschen. Ein solcher Datenaustausch kann über Eingabe/Ausgabe-(E/A-)Schnittstellen 322 erfolgen. Weiterhin kann der Computerknoten 302 über einen Netzadapter 324 Daten mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z. B. dem Internet) austauschen. Der gezeigte Netzadapter 324 tauscht Daten über den Bus 308 mit den anderen Komponenten des Computersystems/des Servers 302 aus. Es sollte klar sein, dass in Verbindung mit dem Computersystem/Server 302 auch weitere Hardware- und/oder Softwarekomponenten verwendet werden können, die hier nicht gezeigt sind. Als Beispiele kommen infrage, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Prozessoreinheiten, externe Plattenlaufwerkanordnungen, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
  • Die beschriebenen Operationen können unter Verwendung von Standardprogrammier- und/oder -konstruktionstechniken als Verfahren, Vorrichtung oder Computerprogrammprodukt implementiert werden, um Software, Firmware, Hardware oder beliebige Kombinationen derselben zu erzeugen. Demgemäß können Aspekte der Ausführungsformen die Form einer vollständigen Hardwareausführungsform, einer vollständigen Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte in sich vereint und die hierin sämtlich allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Darüber hinaus können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Als spezielle Beispiele für das computerlesbare Speichermedium (eine nicht erschöpfende Aufzählung) kommen unter anderem infrage: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel im Basisband oder als Trägerwelle. Ein solches weitergeleitetes Signal kann eine Vielfalt von Formen annehmen, darunter, ohne darauf beschränkt zu sein, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten oder transportieren kann.
  • Ein auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben.
  • Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers durch einen beliebigen Typ von Netzwerk verbunden sein, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internetdienstanbieters).
  • Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder Funktionsschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufpläne und/oder Funktionsschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Funktionsschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen des Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenbankvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenbankvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Funktionsschaubilder angegebenen Funktionen/Aktionen erzeugen.
  • Diese Anweisungen eines Computerprogramms können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenbankvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise derart zu funktionieren, dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt erzeugen, das Anweisungen enthält, die die in dem Block oder den Blöcken in den Ablaufplänen und/oder Funktionsschaubildern angegebenen Funktionen/Aktionen umsetzen.
  • Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenbankvorrichtung oder andere Einheiten geladen werden, um die Ausführung einer Folge von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken in den Ablaufplänen und/oder Funktionsschaubildern angegebenen Funktionen/Aktionen bereitstellen.
  • Die Variable „n” dient zum Darstellen einer variablen positiven Ganzzahl eines Elements, beispielsweise einer variablen Anzahl von Datenblockkennungen in Objektdaten, einer variablen Anzahl von Zusammenfassungsebenen usw. Diese verschiedenen Elementen zugehörigen Variablen können einen gleichen oder verschiedenen ganzzahligen Wert aufweisen.
  • Die Begriffe „eine beliebige Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform”, „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „eine Ausführungsform” bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)”, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „enthalten”, „aufweisen”, „haben” und deren Varianten bedeuten „einschließlich, ohne darauf beschränkt zu sein”, sofern nicht ausdrücklich anders angegeben.
  • Die nummerierte Aufzählung von Objekten ist nicht dahingehend auszulegen, dass beliebige oder alle Objekte sich gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „ein”, „eine” und „der, die, das” bedeuten ”eins oder mehrere”, sofern nicht ausdrücklich anders angegeben.
  • Einheiten, die Daten miteinander austauschen, brauchen nicht ständig Daten miteinander auszutauschen, sofern nicht ausdrücklich anders angegeben. Darüber hinaus können Einheiten, die Daten miteinander austauschen, Daten direkt oder indirekt über eine oder mehrere Vermittlungseinheiten austauschen.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die Daten miteinander austauschen, ist nicht dahingehend auszulegen, dass alle diese Komponenten erforderlich sind. Vielmehr wird eine Vielfalt von optionalen Komponenten beschrieben, um die breite Vielfalt an möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Obwohl Arbeitsschritte, Verfahrensschritte, Algorithmen und dergleichen in einer Reihenfolge beschrieben werden, können solche Prozesse, Verfahren und Algorithmen ferner so konfiguriert sein, dass sie in einer anderen Reihenfolge abgewickelt werden. Mit anderen Worten, jede Folge oder Reihenfolge von Schritten, die beschrieben werden kann, bedeutet nicht unbedingt, dass die Schritte in dieser Reihenfolge ausgeführt werden müssen. Die Schritte der hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge ausgeführt werden. Ferner können manche Schritte gleichzeitig ausgeführt werden.
  • Wenn hierin eine einzelne Einheit oder ein einzelner Gegenstand beschrieben wird, ist es ganz offensichtlich, dass anstelle einer einzigen Einheit oder eines einzigen Gegenstands mehr als eine Einheit oder ein Gegenstand verwendet werden kann (unabhängig davon, ob diese zusammenwirken). Wenn hierin mehr als eine Einheit oder ein Gegenstand beschrieben werden (unabhängig davon, ob diese zusammenwirken) ist es ebenso ganz offensichtlich, dass anstelle der mehr als einen Einheit oder des mehr als einen Gegenstands eine einzige Einheit oder ein einziger Gegenstand oder dass anstelle der gezeigten Anzahl von Einheiten oder Programmen eine verschiedene Anzahl von Einheiten/Gegenständen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten umgesetzt werden, die nicht ausdrücklich so beschrieben werden, als hätten sie eine solche Funktionalität oder solche Merkmale. Somit brauchen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht zu enthalten.
  • Die dargestellten Operationen der Figuren zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge ablaufen. Gemäß alternativen Ausführungsformen, können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, geändert oder entfernt werden. Darüber hinaus können zu der oben beschriebenen Logik Schritte hinzugefügt und dennoch mit den beschriebenen Ausführungsformen im Einklang stehen. Ferner können hierin beschriebene Operationen nacheinander erfolgen, oder bestimmte Operationen können parallel abgewickelt werden. Weiterhin können Operationen durch eine einzige Prozessoreinheit oder durch verteilte Prozessoreinheiten ausgeführt werden.
  • Die obige Beschreibung verschiedener Ausführungsformen der Erfindung wurde zur Veranschaulichung und Beschreibung vorgelegt. Sie erhebt keinen Anspruch auf Vollständigkeit oder Einschränkung der Erfindung genau auf die offenbarte Form. Im Hinblick auf die obigen Lehren sind viele Änderungen und Varianten möglich. Der Schutzumfang der Erfindung soll nicht durch diese detaillierte Beschreibung, sondern durch die beiliegenden Ansprüche eingeschränkt werden. Die obige Beschreibung, die angegebenen Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Anwendung der gesamten Erfindung bereit. Da viele Ausführungsformen der Erfindung erstellt werden können, ohne vom Wesensgehalt und Schutzumfang der Erfindung abzuweichen, ist die Erfindung in den folgenden Ansprüchen niedergelegt.

Claims (10)

  1. Computerprogrammprodukt zum Ausführen einer Deduplizierung für einen Speicher, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit einem darin verkörperten computerlesbaren Programmcode aufweist, der ausgeführt wird, um Operationen auszuführen, die aufweisen: Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag mindestens eine der Datenblocksignaturen und einen Verweis auf den Datenblock enthält, aus dem die Signatur berechnet wurde; Auswählen von Einträgen in dem Index, die zusammengefasst werden sollen; Ausführen einer Zusammenfassungsoperation mit den Datenblocksignaturen in den ausgewählten Einträgen, um eine zusammengefasste Signatur zu erzeugen; Einfügen eines Eintrags in den Index, der die zusammengefasste Signatur und einen Verweis auf die Datenblöcke in dem Speicher, auf die in den zusammengefassten ausgewählten Einträgen verwiesen wird; Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die ausgewählten Einträge Verweise auf aufeinanderfolgende Datenblöcke von Daten in dem Speicher enthalten und die Operationen ferner aufweisen: Entfernen der ausgewählten Einträge aus dem Index.
  3. Computerprogrammprodukt nach Anspruch 1, wobei das Auswählen der Einträge aufweist: Ermitteln von Einträgen aus den Einträgen in dem Index auf der Grundlage eines Kriteriums der Datenblöcke von Daten, auf die in den Einträgen verwiesen wird, wobei die entstandenen zusammengefassten Einträge und von der Zusammenfassungsoperation nicht betroffene Einträge auf alle Datenblöcke in dem Speicher verweisen, die in den im Speicher verwalteten Datenobjekten enthalten sind.
  4. Computerprogrammprodukt nach Anspruch 3, wobei das Kriterium ein Alter der Datenblöcke in dem Speicher, wobei das Alter eine Zeitspanne seit dem Einfügen des Datenblocks in den Speicher oder nach dem Aktualisieren; und/oder eine Häufigkeit von Eingabe/Ausgabe-(E/A-)Zugriffen auf die Datenblöcke in dem Speicher; und/oder eine Häufigkeit, mit der die Datenblöcke in dem Speicher in Datenobjekten erscheinen, die in den Speicher eingefügt wurden; und/oder einen Bereich des Speichers, in dem die Datenblöcke gespeichert sind; und/oder einen Datentyp in den Datenblöcken aufweist.
  5. Computerprogrammprodukt nach Anspruch 1, wobei die Signaturen in jedem der ausgewählten Einträge eine Signatur, die aus dem Datenblock in dem Speicher berechnet wurde, und/oder eine zusammengefasste Signatur aufweist, die durch Verarbeiten zuvor ausgewählter Signaturen erzeugt wurde.
  6. Computerprogrammprodukt nach Anspruch 1, wobei die Zusammenfassungsoperation ein Multiplizieren der Signaturen in den ausgewählten Einträgen aufweist.
  7. Computerprogrammprodukt nach Anspruch 1, wobei ein Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen beim Einfügen eines empfangenen Datenobjekts in den Speicher aufweist: Verarbeiten des empfangenen Datenobjekts, um Datenblöcke der Daten in dem empfangenen Datenobjekt zu ermitteln; Ermitteln von Datenblocksignaturen für die ermittelten Datenblöcke durch Verarbeiten der Daten in den ermittelten Datenblöcken des empfangenen Datenobjekts, wobei jede ermittelte Datenblocksignatur dem Datenblock zugehörig ist, der zum Ermitteln der Signatur verarbeitet wurde; Ermitteln zusammengesetzter Signaturen durch Ausführen der Zusammenfassungsoperation mit den Datenblocksignaturen für aufeinanderfolgende ermittelte Datenblöcke in dem empfangenen Datenobjekt, wobei jede ermittelte zusammengefasste Signatur den Datenblöcken zugehörig ist, die zum Ermitteln der Datenblocksignaturen verarbeitet wurden, die wiederum zum Ermitteln der zusammengefassten Signatur verarbeitet wurden; Ermitteln, ob irgendwelche Datenblocksignaturen und zusammengefasste Signaturen, die den Datenblöcken in dem empfangenen Datenobjekt zugehörig sind, mit Signaturen in dem Index übereinstimmen; Ermitteln, ob es nicht übereinstimmende zusammengefasste oder Datenblocksignaturen gibt, die aus dem empfangenen Datenobjekt berechnet wurden und nicht mit den Signaturen in dem Index übereinstimmen; und Speichern der Datenblöcke, die den nicht übereinstimmenden zusammengefassten oder Datenblocksignaturen von Datenblöcken in dem empfangenen Datenobjekt in dem Speicher zugehörig sind, wobei Datenblöcke in dem empfangenen Datenobjekt, die den ermittelten zusammengefassten und Datenblocksignaturen zugehörig sind, die mit den Signaturen in dem Index übereinstimmen, nicht in den Speicher geschrieben werden.
  8. Computerprogrammprodukt nach Anspruch 7, wobei in dem Index die aus den Datenblocksignaturen erzeugten zusammengefassten Signaturen eine erste Zusammenfassungsebene definieren, wobei die aus den Datenblocksignaturen von dem empfangenen Datenobjekt ermittelten zusammengefassten Signaturen eine erste Zusammenfassungsebene von zusammengefassten Signaturen des empfangenen Datenobjekt aufweisen und die Operationen ferner aufweisen: Verwalten mindestens einer weiteren Zusammenfassungsebene von zusammengefassten Signaturen in den Indexeinträgen, wobei jede weitere Zusammenfassungsebene von zusammengefassten Signaturen durch Verarbeiten der zusammengefassten Signaturen in Einträgen gebildet wird, die eine vorhergehende Zusammenfassungsebene anzeigen; und Erzeugen einer weiteren Zusammenfassungsebene von zusammengefassten Signaturen des empfangenen Datenobjekts für jede weitere Zusammenfassungsebene durch Ausführen der Zusammenfassungsoperation mit den zusammengefassten Signaturen des empfangenen Datenobjekts in mindestens einer vorhergehenden Zusammenfassungsebene, wobei das Ermitteln übereinstimmender zusammengefasster Signaturen die zusammengefassten Signaturen berücksichtigt, die von dem empfangenen Datenobjekt für alle Zusammenfassungsebenen in dem Index erzeugt wurden.
  9. System zum Ausführen einer Deduplizierung für einen Speicher, wobei das System aufweist: einen Prozessor; und ein computerlesbares Speichermedium mit einem programmierbaren Code, der durch den Prozessor zum Ausführen von Operationen ausgeführt wird, wobei die Operationen aufweisen: Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag eine Datenblocksignatur und/oder einen Verweis auf den Datenblock von Daten enthält, aus dem die Signatur berechnet wurde; Auswählen zusammenzufügender Einträge in dem Index; Ausführen einer Zusammenfassungsoperation mit den Datenblocksignaturen in den ausgewählten Einträgen, um eine zusammengefasste Signatur zu erzeugen; Einfügen eines Eintrags in den Index, der die zusammengefasste Signatur und einen Verweis auf die Datenblöcke in dem Speicher enthält, auf die in den zusammengefassten ausgewählten Einträgen verwiesen wird; Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.
  10. Verfahren zum Ausführen eines Deduplizierens für einen Speicher, wobei das Verfahren aufweist: Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag mindestens eine der Datenblocksignaturen und einen Verweis auf den Datenblock von Daten enthält, aus dem die Signatur berechnet wurde; Auswählen zusammenzufassender Einträge in dem Index; Ausführen einer Zusammenfassungsoperation mit den Datenblocksignaturen in den ausgewählten Einträgen, um eine zusammengefasste Signatur zu erzeugen; Einfügen eines Eintrags in den Index, der die zusammengefasste Signatur und einen Verweis auf die Datenblöcke in dem Speicher enthält, auf die in den zusammengefassten ausgewählten Einträgen verwiesen wird; Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.
DE102013208930.9A 2012-05-29 2013-05-15 Zusammenfassen von Einträgen in einem Deduplizierungs-lndex Active DE102013208930B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/482,820 US8898121B2 (en) 2012-05-29 2012-05-29 Merging entries in a deduplication index
US13/482,820 2012-05-29

Publications (2)

Publication Number Publication Date
DE102013208930A1 true DE102013208930A1 (de) 2013-12-05
DE102013208930B4 DE102013208930B4 (de) 2020-12-17

Family

ID=49579667

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013208930.9A Active DE102013208930B4 (de) 2012-05-29 2013-05-15 Zusammenfassen von Einträgen in einem Deduplizierungs-lndex

Country Status (2)

Country Link
US (2) US8898121B2 (de)
DE (1) DE102013208930B4 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102378969B (zh) * 2009-03-30 2015-08-05 惠普开发有限公司 拷贝卷中存储的数据的去重复
US20150088839A1 (en) * 2012-06-08 2015-03-26 Kevin Lloyd Jones Replacing a chunk of data with a reference to a location
US9633022B2 (en) * 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US9384206B1 (en) * 2013-12-26 2016-07-05 Emc Corporation Managing data deduplication in storage systems
US10423596B2 (en) * 2014-02-11 2019-09-24 International Business Machines Corporation Efficient caching of Huffman dictionaries
US9846718B1 (en) * 2014-03-31 2017-12-19 EMC IP Holding Company LLC Deduplicating sets of data blocks
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US9753955B2 (en) * 2014-09-16 2017-09-05 Commvault Systems, Inc. Fast deduplication data verification
US9916458B2 (en) 2015-03-31 2018-03-13 EMC IP Holding Company LLC Secure cloud-based storage of data shared across file system objects and clients
US10191914B2 (en) * 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US9639274B2 (en) 2015-04-14 2017-05-02 Commvault Systems, Inc. Efficient deduplication database validation
KR102402783B1 (ko) * 2015-05-11 2022-05-27 삼성전자 주식회사 전자 장치 및 이의 페이지 병합 방법
US10452297B1 (en) * 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US9940060B1 (en) * 2016-05-02 2018-04-10 Pure Storage, Inc. Memory use and eviction in a deduplication storage system
US10678778B1 (en) * 2017-10-19 2020-06-09 EMC IP Holding Company LLC Date deduplication acceleration
US10585612B2 (en) * 2018-01-04 2020-03-10 International Business Machines Corporation Optimized sequential writes on mirrored disks
US11294871B2 (en) 2019-07-19 2022-04-05 Commvault Systems, Inc. Deduplication system without reference counting
CN112581014B (zh) * 2020-12-25 2023-12-08 特赞(上海)信息科技有限公司 素材准备度的统计方法、装置、设备和存储介质
US20220237148A1 (en) * 2021-01-28 2022-07-28 EMC IP Holding Company LLC Maintaining retention policies in a block storage, multi-client dedup domain

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962452B2 (en) * 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
US8392791B2 (en) 2008-08-08 2013-03-05 George Saliba Unified data protection and data de-duplication in a storage system
US20100088296A1 (en) * 2008-10-03 2010-04-08 Netapp, Inc. System and method for organizing data to facilitate data deduplication
US8140491B2 (en) 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US8200641B2 (en) 2009-09-11 2012-06-12 Dell Products L.P. Dictionary for data deduplication
JP5595701B2 (ja) 2009-09-16 2014-09-24 株式会社日立製作所 ファイル管理方法及びストレージシステム
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
AU2010200866B1 (en) * 2010-03-08 2010-09-23 Quantum Corporation Data reduction indexing
US8396873B2 (en) 2010-03-10 2013-03-12 Emc Corporation Index searching using a bloom filter
US8442942B2 (en) 2010-03-25 2013-05-14 Andrew C. Leppard Combining hash-based duplication with sub-block differencing to deduplicate data
US8250325B2 (en) * 2010-04-01 2012-08-21 Oracle International Corporation Data deduplication dictionary system
CN102024032A (zh) 2010-11-29 2011-04-20 广州明朝网络科技有限公司 一种基于Erlang的分布式数据缓存和持久化的方法和系统
US8898119B2 (en) * 2010-12-15 2014-11-25 Netapp, Inc. Fingerprints datastore and stale fingerprint removal in de-duplication environments
CN102156736A (zh) 2011-04-12 2011-08-17 上海电通信息服务有限公司 Sap系统与sql数据库之间数据传输的方法

Also Published As

Publication number Publication date
US20130325821A1 (en) 2013-12-05
DE102013208930B4 (de) 2020-12-17
US20150026140A1 (en) 2015-01-22
US8898121B2 (en) 2014-11-25
US9305005B2 (en) 2016-04-05

Similar Documents

Publication Publication Date Title
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE102016013248A1 (de) Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement
DE112012004937T5 (de) Fingerabdruckbasierte Datendeduplizierung
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112012005275T5 (de) Datenauswahl zur Sicherung von Datenspeichern
DE112012002762T5 (de) Replikationen von Datenobjekten von einem Quellserver auf einen Zielserver
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
DE202012013427U1 (de) Verknüpfung von Tabellen in einem MapReduce-Verfahren
DE102013211071A1 (de) Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
DE112020000694T5 (de) Erzeugung und ausführung von sicheren containern
DE112013003205T5 (de) Verfahren und Vorrichtung zum Verarbeiten von Datenbankdaten in einem verteilten Datenbanksystem
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE112011103367T5 (de) Replizieren von Daten
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
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