DE102013208930B4 - Grouping of entries in a deduplication index - Google Patents

Grouping of entries in a deduplication index Download PDF

Info

Publication number
DE102013208930B4
DE102013208930B4 DE102013208930.9A DE102013208930A DE102013208930B4 DE 102013208930 B4 DE102013208930 B4 DE 102013208930B4 DE 102013208930 A DE102013208930 A DE 102013208930A DE 102013208930 B4 DE102013208930 B4 DE 102013208930B4
Authority
DE
Germany
Prior art keywords
data
memory
entries
index
data blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102013208930.9A
Other languages
German (de)
Other versions
DE102013208930A1 (en
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/en
Application granted granted Critical
Publication of DE102013208930B4 publication Critical patent/DE102013208930B4/en
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

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)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computerprogrammprodukt zum Ausführen einer Deduplizierung für einen Speicher, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit einem darin verkörperten computerlesbaren Programmcode aufweist, mit den Schritten:- Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag aus der Vielzahl von Indexeinträgen 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, durch Ermitteln von Einträgen aus der Vielzahl von Einträgen in dem Index auf der Grundlage eines Kriteriums der Datenblöcke von Daten, auf die in den Einträgen verwiesen wird, 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;- 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;- Entfernen der ausgewählten Einträge aus dem Index, die zum Erzeugen der zusammengefassten Signatur verwendet wurden, 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; und- Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.Computer program product for performing a deduplication for a memory, the computer program product having a computer-readable storage medium with a computer-readable program code embodied therein, with the steps of: - managing an index of data block signatures calculated from data blocks of data in data objects in the memory, each index entry contains at least one of the data block signatures from the plurality of index entries and a reference to the data block from which the signature was calculated; - selecting entries in the index which are to be combined by determining entries from the plurality of entries in the index the basis of a criterion of the data blocks of data referenced in the entries, the criterion ◯ an age of the data blocks in the memory, the age being a period of time since the data block was inserted into the memory or after it was updated; ◯ and / or a Hau ability of input / output (I / O) accesses to the data blocks in the memory; ◯ and / or a frequency with which the data blocks appear in the memory in data objects that have been inserted into the memory; ◯ and / or a Area of the memory in which the data blocks are stored; ◯ and / or a data type in the data blocks; - Carrying out a summarization operation on the data block signatures in the selected entries to generate a summarized signature; - Insertion of an entry in the index, the summarized signature and a reference to the data blocks in memory referenced in the summarized selected entries; - removing from the index the selected entries that were used to generate the summarized signature, the resulting summarized entries and from the summarization operation unaffected entries refer to all data blocks in memory that are in memory it contains managed data objects; and using the index of the signatures in deduplication operations when inserting data objects into memory.

Description

Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index.The present invention relates to a computer program product, a system and a method for combining entries in a deduplication index.

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.Data deduplication is a data reduction technique used to remove redundant data to improve storage utilization. Deduplication reduces the amount of storage required by storing only one copy of a particular unit of data, also known as a data block. In the case of disk storage systems such as a storage management server or a virtual tape library (VTL), deduplication technology can be used to identify redundant data blocks and avoid duplicate entries as a result of the redundant storage of such data blocks. Data deduplication in storage reduces the amount of storage required for a given set of files and is most effective in applications where copies of very similar or even identical data are stored on a single disk, which is often the case. With data backups that are carried out continuously to protect against data loss, most of the data in a particular data backup has not changed compared to the previous data backup and can often give rise to deduplication in order to bypass the redundant storage of data.

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.Data deduplication can take place at the file or block level. File deduplication removes duplicate files. Block deduplication searches a file and saves the unique occurrence of each block. A block deduplication system divides a file into a sequence of data blocks. The deduplication system determines whether some of the data blocks are already stored and then only saves these non-redundant data blocks. The redundancy check can be performed with the data blocks that are either currently being saved in the file or are already saved in the system.

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.An object can be divided into data blocks using an electronic fingerprinting technique such as the Rabin-Karp fingerprinting technique. Redundant data blocks are recognized by applying a hash algorithm such as MD5 (Message Digest Algorithm 5) or SHA-1 (Secure Hash Algorithm 1) to each data block in order to generate a hash value for the data blocks and then include these hash values to compare the hash values of data blocks already stored in the system. The hash values for stored data blocks are usually managed in an index (deduplication index). A data block can be uniquely identified by a hash value and / or a fingerprint. If an entry is found for a hash value, a redundant data block is recognized and this data block in the data object or object can be replaced by a pointer to the corresponding data block maintained in the memory. The size of the deduplication index can be limited by the amount of storage available for the index. This can limit the number of memory-referencing hash values that can be maintained in the deduplication index. Setting up a smaller index can ensure that the index fits into the allocated storage volume.

Aus US 2011 / 0 099 351 A1 ist das Routing von Daten für die verbesserte Deduplizierung in einem Speicher bekannt. Dabei werden neue oder geänderte Daten in den Speicher geladen und ein Hash-Inhaltswert und ein Hash-Ähnlichkeitswert für die Daten berechnet.US 2011/099351 A1 discloses the routing of data for improved deduplication in a memory. New or changed data is loaded into the memory and a hash content value and a hash similarity value are calculated for the data.

Die Erfindung stellt sich die Aufgabe, das Durchführen von Deduplizierungs-Operationen weiter zu verbessern.The object of the invention is to further improve the performance of deduplication operations.

Die Aufgabe wird erfindungsgemäß gelöst durch das Computerprogrammprodukt nach Anspruch 1, das System nach Anspruch 6 und das Verfahren nach Anspruch 7. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.The object is achieved according to the invention by the computer program product according to claim 1, the system according to claim 6 and the method according to claim 7. Preferred embodiments of the invention are the subject matter of the respective subclaims.

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.

  • 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 Datenverarbeitungsum gebung.
A computer program product, system, and method are provided for aggregating entries in a deduplication index. An index has data block signatures calculated from data blocks of data in the data objects in the memory, each index entry having at least one of the data block signatures and a reference to the data block from which the signature was calculated. Entries in the index are selected to be summarized and a summarize operation is performed on the data block signatures in the selected entries to produce a summarized signature. An entry is inserted into the index containing the pooled signature and a reference to the data blocks in memory referenced in the pooled selected entries. The signature index is used in deduplication operations when data objects are inserted into memory.
  • 1 Figure 3 illustrates a computing environment in which embodiments are implemented.
  • 2 illustrates one embodiment of object data.
  • 3 Figure 3 illustrates one embodiment of a deduplication index entry.
  • 4th illustrates an example of a deduplication index with aggregated entries.
  • 5 Figure 3 illustrates one embodiment of operations to insert a block of data into the deduplication index.
  • 6th Figure 11 illustrates an example of operations to merge index entries in the deduplication index.
  • 7a and 7b illustrate one embodiment of operations for processing a received data object for deduplication by computing aggregated signatures.
  • 8th Figure 3 illustrates an embodiment of an association of data blocks in a received data object with a summarized or data block signature calculated from one or more data blocks in the received data object.
  • 9 Figure 3 illustrates one embodiment of a computing node in the computing environment.

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.Described embodiments provide techniques for pooling entries in a deduplication index to reduce the number of index entries by performing a pooling operation on the signatures contained in multiple entries to generate a pooled signature contained in a new pooled entry that is based on the multiple blocks of data referenced by the signatures affected by the summarize operation. If, in the described embodiments, a receiving data object is added to the memory, data block signatures are calculated from the data blocks in the received data object and combined signatures are calculated from several signatures in the received data object in order not to compare them with combined and data block signatures in the deduplication index to determine duplicate or non-matching data blocks in the received data object, ie one or more data blocks with signatures that do not match the signatures in the index. Only those data blocks that do not occur twice or only once and that are not duplicated are written to the memory in order to avoid writing redundant data.

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. 1 Figure 11 illustrates one embodiment of a computing environment having a server 2 , the data objects over a network 6th of clients 4th receives and processes. The objects consist of data blocks 8th of data that the server 2 in a store 10 saves. The server 2 assigns a memory manager 12 for managing the storage of data objects in the memory 10 on. The storage manager 12 manages object data 14th that contains information about the objects in memory 10 exhibit. The object data 14th can use an ordered list of data blocks 8th and the address (s) of these data blocks 8th in the memory 10 provide. The one in the object data 14th objects shown, their data blocks 8th of data in the memory 10 are stored, files, database tables, multimedia content, programs, data sets or any other data arrangements that can be provided for storage. The storage manager 12 can provide storage space for active data objects that the clients 4th used in real-time operations, and / or a backup manager for backing up and archiving data objects of the client 4th exhibit.

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.The storage manager 12 maintains a deduplication index 16 , the information about the data blocks 8th in the memory 10 to ensure that when storing received data objects that have data blocks, only one copy of a data block 8th , ie no duplicate copies, in memory 10 is saved, although in several data objects on one data block 8th can be referenced. The storage manager 12 can also data block data 18th manage the information about the storage space of the data blocks 8th in the memory 10 exhibit. Due to limited memory resources on the server, the deduplication index 14th not one entry for each individual data block 8th manage in the memory referenced in data objects that are in the object data 14th are displayed. The data block data 16 contain information about all data blocks 8th in the memory 10 to access the data blocks 8th to be able to access.

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.The server 2 can data with clients 4th over a network 6th exchange, for example via a local area network (LAN), a network for the storage area (SAN), a wide area network (WAN), a cloud computing model, etc. According to further embodiments, the server 2 and the client 4th be connected to one another via a direct line or have components on the platform of a single computer system and exchange data via a bus or memory.

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.The memory 10 may have storage media implemented in one or more storage units known in the art, e.g. interconnected hard disk drives (configured as DASD, RAID, JBOD, etc., for example), semiconductor storage units (e.g. EEPROM (electrically erasable programmable read-only memories) , Flash memory, flash disk storage, storage-class memory (SCM), electronic storage, magnetic tape media, tape cartridges, etc.

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.The storage manager 12 may have a software program in a memory processed by a processor of the server 2 is performed. According to an alternative embodiment, the entire memory manager 12 or a part of it can be implemented as a hardware component, for example as an integrated special circuit, e.g. application-specific circuit (ASIC), expansion card, etc.

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. 2 Figure 3 illustrates one embodiment of an instance of object data 50 for a data object that is in the object data 14th is included. The object data 50 for a data object contain a data object name 52 that the data object receives through the client 4th assigned, for example a unique identifier and one or more data block identifiers (Ci) 54a , 54b .... 54n of data blocks which the data objects 52 assigned to the client. The data blocks themselves can have a variable length, ie the same or different lengths, or a fixed, predetermined length. The object data 50 can provide an ordered list of data block identifiers ( C1 .... Cn), which indicates a sequence of 1 .... n in which the data blocks occur in the data object.

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.According to one embodiment, the data block identifier (Ci) 54a ... 54n is calculated by processing the data block data to generate a unique value for the data block, for example using the MD5 (Message-Digest Algorithm 5 ) or SHA-1 (Secure Hash Algorithm 1 ), which calculates cryptographic hash values of data blocks in a data object. According to an alternative embodiment, the data block identifier 54a , 54b ... 54n a direct reference to a memory location in the memory instead of a hash value of the data 8th exhibit.

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. 3 illustrates one embodiment of an entry 70 in the deduplication index 16 for data blocks 8th in the memory 10 . The entry 70 can be on a single data block or a large number of data blocks 8th refer to a summarized entry. The index entry 70 contains a signature (Si) 72 that from a single block of data 8th can be calculated, for example according to the calculation of the data block identifiers 54a , 54b ... 54n or by performing a summarization operation, such as a multiplication or other operation, on previously calculated data block signatures 72 of existing index entries 70 to get a summarized data block signature. A memory reference 74 refers to the one or more consecutive data blocks 8th in the memory 10 that the signature 72 are associated. A summary level 76 indicates an extent to which the signature (Si) 72 directly from a single block of data 8th or from several signatures 72 in existing entries 70 was calculated. For example, shows a summary level 76 null a data block signature 72 directly from the data block 8th has been calculated and a memory reference 74 has on the data block 8th from which the signature was calculated. A summary level 76 one indicates that it is the signature 72 in the entry 70 is a pooled signature obtained by performing a pooling operation on two or more data block signatures 72 the first level of summary 0 which was calculated directly from the data block 8th were calculated. A summary level n indicates that the data block signature was calculated from summarized or data block signatures calculated at the (n-1) th or a previous summary level. For example, a summary level two indicates that the pooled signatures were calculated from the pooled signatures on the first summary level.

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.According to certain embodiments, a merge operation with signatures 72 in entries 70 executed on consecutive blocks of data 8th in the memory 10 reference 74 so the memory reference 74 for the combined signature on successive data blocks 8th refers.

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. 4th illustrates an example of entries 70 in the deduplication index 16 . The data block entries 80 the first level, the summary level 0, are calculated by calculating the signatures directly from the data blocks 82 generated, which are designated in detail with 82a to 82i. The entries 84 the second level of summarized, the summary level 1 , are calculated by performing a summarization operation (e.g., a multiplication) on the signatures of two entries that refer to successive blocks of data from the previous summarization level 1 refer. The entries 86 the third level of summary, the level of summary 2 , have aggregate signatures that are created by running the Combination operation with the combined signature of two entries 84 of the previous second summary level, which refer to successive data blocks. And finally assign the entries 88 the fourth level of summary to summarize signatures obtained by performing the summarizing operation on the entries 86 of the previous level which refer to successive data blocks. In this way, each further summary level has entries that combine multiple entries that refer to successive records of one or more data blocks to form a combined entry that represents all of the successive data blocks to which the multiple entries refer to Summary operation were subjected.

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.For example, the deduplication entries refer to 80a and 80b on the data blocks 82a and 82b . The entry 84a is done by summarizing the signatures in the entries 80a and 80b formed, and the entry 84a refers to the successive data blocks 82a and 82b to which the summarized entries 80a and 80b refer to the entry 84a can replace. The deduplication entry 86a is done by summarizing the signatures in the entries 84a and 84b formed so the entry 86a on the successive data blocks 82a , 82b , 82c and 82d refers to which the combined entries 84a and 84b refer to the entry 86a can replace. The deduplication entry 88a is done by summarizing the signatures in the entries 86a and 86b formed so the entry 88a on consecutive data blocks 82a , 82b , 82c , 82d , 82e , 82f , 82g and 82h refers to which the combined entries 86a and 86b refer to the entry 88a can replace. Since the deduplication index 16 to save the deduplication entries 70 If additional storage space is required, storage space can be freed up in this way, so that fewer entries, ie signatures, on the same data blocks 8th in the memory 10 refer.

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.According to the above embodiments, the merging operation takes place in the merging of two entries on a previous merging level which refer to successive data blocks. According to further embodiments, an operation with more than two entries can take place in a summarization operation, which refer to successive data blocks, so that a combined entry can replace more than two entries and thus refer to the successive data blocks to which more than two combined entries refer. In addition, in certain embodiments, a merge operation can be performed on entries at different levels as long as the entries at different levels refer to consecutive blocks of data.

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.The aggregation operation with block signatures or aggregate signatures can be a chaining or other operation. In one embodiment, the merge operation can concatenate two m and n byte signatures to form a new merged signature of m plus n bytes. In further embodiments, additional operations can be performed on the concatenated signatures, for example by taking another hash value to generate the final signature. In still other embodiments, the merge operation may include, but are not limited to, other suitable types of operations, including, but not limited to, multiplications, etc.

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.In embodiments where two entries are merged, the number of data blocks referenced by an entry at a summary level n, (n = 0, 1, 2, 3 ...), can be expressed by the expression 2n.

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. 5 Figure 3 illustrates one embodiment by the memory manager 12 operations performed to insert a data block from a received data object into memory 10 . A data block to be inserted can be a data block of variable length, which can be determined by applying a fingerprint algorithm such as the Rabin fingerprint scheme to the data object to determine the data block boundaries, or it can be a fixed length data block so that the boundaries of the data blocks in the Data object of fixed length can be determined. After receiving the into memory 10 data blocks to be inserted (in block 100 ) is generated by the memory manager 12 (in block 102 ) a signature for the data block and writes it (in block 104 ) into memory 10 . The storage manager 12 adds (in block 104 ) An entry 70 into the deduplication index 16 one that has the signature 72 , a reference to the in memory 10 written data block and a summary level 0 indicates.

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. 6th illustrates one embodiment of operations performed by the memory manager 12 run to entries 70 of the deduplication index 16 summarize. The storage manager 12 starts (in block 120 ) an operation to summarize the entries 70 of the index 16 in response to an event. For example, the memory manager 12 Combine entries if the available space in the memory of the Servers 2 reached a threshold. Alternatively, the memory manager 12 periodically summarize entries after the index 16 has reached a certain size or after a certain period of time. After starting the summary operation (in block 120 ) is determined by the memory manager 14th (in block 122 ) in the index 16 entries to be summarized 70 based on a criterion of the data blocks 8th to which the entries 70 refer so that the entries affected and unaffected by the grouping refer to all data blocks 8th refer in memory to those in data objects 50 are included. The storage manager 12 selects (in block 126 ) several of the entries determined 70 that meet the criterion and on successive data blocks 8th in the memory 10 which should be grouped together. The selected entries to be summarized, which refer to consecutive data blocks, can be on the same or on different summarization levels.

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.The criterion for selecting the data blocks to be summarized may include an age of the data blocks in the memory, so that data blocks which have been in memory for a long time without being updated are more likely to be selected for summarization than data blocks which have been inserted or updated more recently. Further criteria can be used to select less requested data blocks, whereby the demand for a data block can be determined: the frequency of input / output (I / O) accesses to the data blocks in the memory so that data blocks are more in demand that are accessed more frequently; based on a frequency with which the data blocks appear in the memory in data objects that are inserted into the memory, so that data blocks that appear in multiple data objects are in greater demand; based on a memory area in which the data blocks are stored, so that data blocks that are stored in a more up-to-date area that is accessed more frequently are in greater demand; and on the basis of a data type in the data blocks, data blocks whose data type is more important and which are accessed more frequently can be viewed as being in greater demand.

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.The storage manager 12 leads (in block 128 ) a summarize operation on the data block signatures 72 in the selected entries 70 to generate a combined signature. The aggregation operation may include multiplying the signature values or performing other operations to determine a new aggregated signature value. In the index 16 becomes (in block 130 ) An entry 70 inserted that contains the combined signature 72 , a reference 74 on the data blocks in memory 10 from which the processed summary and / or data block signature was generated, and a summary level 76 which has a next level from the summary level of the selected entries affected by the summary operation. The selected entries that are affected by the merging are (in block 132 ) removed to be in the deduplication index 16 To create space. If it (in block 134 ) there are multiple entries that have not yet been merged, the process goes back to block 126 to select further identified entries to be combined, otherwise the process is ended.

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. 7a and 7b illustrate an embodiment by the memory manager 12 operations performed to process a received data object using the deduplication index 16 to determine non-duplicate data blocks in the received data object that are in the memory 10 should be inserted. After receiving an object (in block 150 ), the memory manager processes 12 (in block 152 ) the received data object in order to determine data blocks (with a fixed or variable size) of the data in the received data object. To determine blocks of data with variable sizes, the memory manager 12 apply a fingerprint algorithm such as the Rabin fingerprint scheme. Then the memory manager can 12 start a process for calculating signature values for individual data blocks and combinations of data blocks in order to use these with the combined signatures 72 for summarized entries 70 to compare. A summary level counter is (in block 154 ) set to zero. The storage manager 12 determined (in block 156 ) Data block signatures for the determined data blocks by processing the data in the determined data blocks of the received data object, each determined data block signature being associated with the data block that was processed to determine the signature. 8th shows how the memory manager 12 Signature data 190 the data blocks of the received object for each calculated signature and data about the one or more data blocks 194 can manage that of the calculated signature 194 are associated.

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.After determining the data block signatures for each individual data block in the received object, the memory manager determines 12 (in block 158 ) from the deduplication index 16 a highest level of summary 76 in the entries 70 of the deduplication index 16 , ie the highest level of summary for which signatures have been calculated. If (in block 160 ) the highest determined summary level the value of the counter for Exceeds summary levels, the storage manager runs 12 (in block 162 ) the summarize operation with the summarized or data block signatures 190 which were calculated for the last considered summary level in order to generate a further level of summarized signatures. The storage manager 12 can do the same aggregation operation as creating the deduplication index in 6th to generate a value for a combined signature from at least two other signature values, for example by multiplying the signature values. The counter value for summary levels is (in block 164 ) increases and the process goes back to block 160 to determine whether a next level of summarized signatures should be calculated from the previously calculated summarized signatures at the previous level, which is indicated by the variable of the counter for summarized levels. This is how the storage manager calculates 16 Signature values from received data objects to generate data block signatures from the data blocks in the data object and summarized signatures calculated by performing the summarizing operation (multiplying) with previously calculated summarized or data block signatures.

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.If the (in block 160 ) determined highest summary level does not exceed the summary counter value, which is after generating summarized and data block signatures for the received data object up to the highest summary level in the deduplication index 16 happens, the process goes (from block 166 ) continue to block 170 in 7b . The storage manager 12 determined (in block 170 ) whether the data block signatures and combined signatures with signatures determined from the data blocks in the received data object 72 in the entries 70 of the deduplication index 16 to match. A match indicates that the data blocks in the received data object that is associated with the summarized or data block signature are copies of successive data blocks 8th that are already in memory 10 are stored, and a mismatched signature indicates that the data blocks associated with the mismatched pooled or data block signature are not copies of data held in memory 10 are stored. If it (in block 172 ) there are mismatched signatures calculated from the summarized or data block signatures of the received data object that do not match signatures in the index 16 match, the data blocks in the received data object, which are associated with the identified non-matching signatures, according to the operations of 5 (in block 174 ) is written to memory. Data blocks in the received data object that are associated with the summarized and data block signatures that match the signatures in the index are not put into memory 10 written as they have copies already in memory 10 represent stored data.

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.According to the described embodiments, entries of a deduplication index are combined in order to create free space in the index and to enable references to data blocks in the memory in connection with other data blocks to be retained by a combined signature in the deduplication index. If the space in the deduplication index has to be limited, the described embodiments allow data blocks to remain represented in the deduplication index if data is to be avoided from being written twice into the memory. According to certain embodiments, entries of the deduplication index that refer to less frequently accessed data blocks can be combined to make room in the deduplication index to refer to data blocks newly added to memory and at the same time ensure that index entries continue to be deduplicated can refer to these less frequently accessed successive data blocks.

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.The described embodiments for managing the deduplication index 16 and to summarize entries can be in the server 2 when these data objects are executed by the clients 4th receives. Alternatively, the clients 4th the deduplication index 16 of data in the memory 10 manage to thereby reduce the number of in memory 10 to minimize the data blocks to be saved that go to the server 4th be transmitted. The client 4th can use the deduplication index 16 can be used by performing the operations of 7a and 7b Data blocks in a data object identify the copies of data blocks in memory 10 and then replace the data with the signatures in the index entries for the data blocks referenced in the entries of the deduplication index 16 is referred to over the network 6th to the server 2 to minimize the volume of data transferred.

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. 9 Figure 3 illustrates one embodiment of a computing node 302 , which is an embodiment of the server system 2 and the client systems 4th may have. The server node 2 and the client nodes 4th can be implemented in a cloud computing environment in which the server 2 Storage and deduplication services for the clients 4th provides. The computer node 302 represents only one example of a suitable data processing node and is not intended as a limitation of the To see the scope of use or functionality of embodiments of the invention described herein. Rather, the computer node can 302 be implemented to perform any functionality set forth above.

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.The computer node 302 can be operated with numerous other environments or configurations of universal or special data processing systems. As examples of well known data processing systems, environments, and / or configurations that are suitable for use with the computer node 302 personal computer systems, server computer systems, thin clients, thick clients, portable or laptop units, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable home electronics, network PCs, small computer systems, large computer systems, and distributed cloud computing environments including any of the above systems or units, and the like.

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.The computer node 302 may be described generally in connection with executable instructions of a computer system, for example program modules, that are executed by a computer system. In general, program modules can contain routines, programs, objects, components, logic, data structures and so on that carry out certain tasks or implement certain abstract data types. The computer node 302 can be operated in distributed cloud computing environments in which tasks are carried out by remote processing units that are linked to one another via a data transmission network. In a distributed cloud computing environment, program modules can be arranged in storage media from both local and remote computer systems, including in storage units.

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.The computer node 302 according to 9 is shown in the form of a universal data processing unit. The components of the computer system / server 302 can, without being limited thereto, one or more processors or central processing units 304 , a system memory 306 and a bus 308 that connects different system components, including the system memory 306 with the processor 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).The bus 308 Figure 3 illustrates one or more of various types of bus structures including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. Examples are, but not limited to, the ISA bus (industry standard architecture), the MCA bus (micro-channel architecture), the EISA bus (further development of the industry standard architecture), the local VESA bus (video electronics standards Association) and the PCI bus (connection bus for expansion components).

Ü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.Usually the computer node contains 302 a variety of computer readable media. Such media can be any available media that the compute node is targeting 302 and which contain both volatile and permanent media, exchangeable and permanently installed media and for storing the object data 14th , the deduplication index 16 , the data block data 18th and the program of the memory manager 12 can be used.

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.The system memory 306 can be computer-readable media in the form of volatile memory such as random access memory (RAM) 310 and / or a cache memory 312 contain. The computer node 302 can also contain further exchangeable / permanently installed, volatile / non-volatile storage media of the computer system. The storage system 313 read from and write to a permanently installed permanent magnetic medium (not shown and commonly referred to as a "hard disk drive"). There may also be a magnetic disk drive, not shown, for reading from and writing to a removable permanent magnetic disk (e.g., a "floppy disk"), and an optical disk drive for reading from a removable permanent optical disk such as a CD-ROM, DVD-ROM or others optical media and for writing on them. In such cases, each unit can interface with the bus through one or more media 308 be connected. As shown and described in more detail below, the memory 306 contain at least one program product having a set (eg, at least one) of program modules configured to perform the functions of embodiments of the invention.

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.For example, but not limited to a program / utility 314 , which is a set (at least one) of program modules 316 has, as well as an operating system, one or more application programs, further program modules and program data in the memory 306 be saved. The operating system, the one or more application programs, further program modules and program data or certain combinations thereof can each contain an embodiment of a networked environment. The program modules 316 generally perform the functions and / or practices of embodiments of the invention described herein, such as memory manager operations 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.The computer node 302 can also exchange data with one or more external units 318 such as a keyboard, with a pointing device, a screen 320 etc.; with one or more units that allow a user to act on the computer node 302 enable; and / or with any units (e.g. a network card, a modem, etc.) that the computer system / server 302 enable data to be exchanged with one or more other data processing units. Such data exchange can take place via input / output (I / O) interfaces 322 respectively. Furthermore, the computer node 302 via an AC adapter 324 Exchange data with one or more networks such as a local area network (LAN), a general wide area network (WAN) and / or a public network (e.g. the Internet). The power adapter shown 324 exchanges data via the bus 308 with the other components of the computer system / server 302 out. It should be clear that in connection with the computer system / server 302 it is also possible to use other hardware and / or software components that are not shown here. Examples are, but are not limited to: microcode, device drivers, redundant processor units, external disk drive assemblies, RAID systems, tape drives and data archiving storage systems, etc.

Claims (7)

Computerprogrammprodukt zum Ausführen einer Deduplizierung für einen Speicher, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit einem darin verkörperten computerlesbaren Programmcode aufweist, mit den Schritten: - Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag aus der Vielzahl von Indexeinträgen 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, durch Ermitteln von Einträgen aus der Vielzahl von Einträgen in dem Index auf der Grundlage eines Kriteriums der Datenblöcke von Daten, auf die in den Einträgen verwiesen wird, 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; - 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; - Entfernen der ausgewählten Einträge aus dem Index, die zum Erzeugen der zusammengefassten Signatur verwendet wurden, 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; und - Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.Computer program product for performing a deduplication for a memory, the computer program product having a computer-readable storage medium with a computer-readable program code embodied therein, with the steps: Managing an index of data block signatures calculated from data blocks of data in data objects in the memory, each index entry from the plurality of index entries containing at least one of the data block signatures and a reference to the data block from which the signature was calculated; - selecting entries in the index to be combined by determining entries from the plurality of entries in the index on the basis of a criterion of the data blocks of data referenced in the entries, the criterion ◯ an age of the data blocks in the memory, the age being an amount of time since the data block was inserted into the memory or after it was updated; ◯ and / or a frequency of input / output (I / O) accesses to the data blocks in the memory; ◯ and / or a frequency with which the data blocks appear in the memory in data objects that have been inserted into the memory; ◯ and / or an area of the memory in which the data blocks are stored; ◯ and / or has a data type in the data blocks; Performing a summarization operation on the data block signatures in the selected entries to generate a summarized signature; Inserting an entry in the index containing the summarized signature and a reference to the data blocks in the memory which are referenced in the summarized selected entries; Removing the selected entries from the index which were used to generate the combined signature, the resulting combined entries and entries not affected by the summarization operation referring to all data blocks in the memory which are contained in the data objects managed in the memory; and - Use of the signature index in deduplication operations when inserting data objects into memory. Computerprogrammprodukt nach Anspruch 1, wobei die ausgewählten Einträge Verweise auf aufeinanderfolgende Datenblöcke von Daten in dem Speicher enthalten.Computer program product according to Claim 1 wherein the selected entries contain references to successive blocks of data in the memory. 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.Computer program product according to Claim 1 wherein the signatures in each of the selected entries comprises a signature calculated from the data block in the memory and / or a combined signature generated by processing previously selected signatures. Computerprogrammprodukt nach Anspruch 1, wobei die Zusammenfassungsoperation ein Multiplizieren der Signaturen in den ausgewählten Einträgen aufweist.Computer program product according to Claim 1 wherein the summarizing operation comprises multiplying the signatures in the selected entries. Computerprogrammprodukt nach Anspruch 1, 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.Computer program product according to Claim 1 , wherein the combined signatures generated from the data block signatures define a first summary level in the index, the combined signatures determined from the data block signatures of the received data object having a first summary level of combined signatures of the received data object and the operations further include: Summary level of summarized signatures in the index entries, with each further summarization level of summarized signatures by processing the summarized Forming signatures in entries indicating a previous level of summary; and generating a further summary level of summarized signatures of the received data object for each further summarization level by executing the summarization operation with the summarized signatures of the received data object in at least one previous summarization level, wherein the determination of matching summarized signatures takes into account the summarized signatures that were created by the received data object for all summary levels in the index have been created. 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, mit den Schritten: - Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag aus der Vielzahl von Indexeinträgen 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 durch Ermitteln von Einträgen aus der Vielzahl von Einträgen in dem Index auf der Grundlage eines Kriteriums der Datenblöcke von Daten, auf die in den Einträgen verwiesen wird, 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; - 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; - Entfernen der ausgewählten Einträge aus dem Index, die zum Erzeugen der zusammengefassten Signatur verwendet wurden, 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; und - Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.A system for performing deduplication on storage, the system comprising: - a processor; and a computer readable storage medium with a programmable code which is executed by the processor to carry out operations, comprising the steps: - Managing an index of data block signatures which have been calculated from data blocks of data in the data objects in the memory, each index entry from the plurality of index entries containing a data block signature and / or a reference to the data block of data from which the signature was calculated; - Selecting entries to be merged in the index by determining entries from the plurality of entries in the index on the basis of a criterion of the data blocks of data referenced in the entries, the criterion being an age of the data blocks in the memory, the Age, a length of time since the data block was inserted into memory or after it was updated; and / or a frequency of input / output (I / O) accesses to the data blocks in the memory; and / or a frequency with which the data blocks appear in the memory in data objects that have been inserted into the memory; and / or an area of the memory in which the data blocks are stored; and / or has a data type in the data blocks; Performing a summarization operation on the data block signatures in the selected entries to generate a summarized signature; Inserting an entry in the index containing the summarized signature and a reference to the data blocks in the memory that are referenced in the summarized selected entries; Removing the selected entries from the index which were used to generate the combined signature, the resulting combined entries and entries not affected by the summarization operation referring to all data blocks in the memory which are contained in the data objects managed in the memory; and - Use of the signature index in deduplication operations when inserting data objects into memory. Verfahren zum Ausführen eines Deduplizierens für einen Speicher mit den Schritten: - Verwalten eines Indexes von Datenblocksignaturen, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag aus der Vielzahl von Indexeinträgen 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, durch Ermitteln von Einträgen aus der Vielzahl von Einträgen in dem Index auf der Grundlage eines Kriteriums der Datenblöcke von Daten, auf die in den Einträgen verwiesen wird, 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; - 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; - Entfernen der ausgewählten Einträge aus dem Index, die zum Erzeugen der zusammengefassten Signatur verwendet wurden, 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; und - Verwenden des Indexes der Signaturen bei Deduplizierungs-Operationen, wenn Datenobjekte in den Speicher eingefügt werden.Procedure for performing deduplication on a store, comprising the steps: Managing an index of data block signatures calculated from data blocks of data in the data objects in the memory, each index entry from the plurality of index entries containing at least one of the data block signatures and a reference to the data block of data from which the signature was calculated; Selecting entries in the index to be summarized by determining entries from the plurality of entries in the index based on a criterion of the data blocks of data referenced in the entries, the criterion being an age of the data blocks in the memory, wherein the age, a length of time since the data block was inserted into memory or after it was updated; and / or a frequency of input / output (I / O) accesses to the data blocks in the memory; and / or a frequency with which the data blocks appear in the memory in data objects that have been inserted into the memory; and / or an area of the memory in which the data blocks are stored; and / or has a data type in the data blocks; Performing a summarization operation on the data block signatures in the selected entries to generate a summarized signature; Inserting an entry in the index containing the summarized signature and a reference to the data blocks in the memory that are referenced in the summarized selected entries; Removing the selected entries from the index which were used to generate the combined signature, the resulting combined entries and entries not affected by the summarization operation referring to all data blocks in the memory which are contained in the data objects managed in the memory; and - Use of the signature index in deduplication operations when inserting data objects into memory.
DE102013208930.9A 2012-05-29 2013-05-15 Grouping of entries in a deduplication index Active DE102013208930B4 (en)

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 DE102013208930A1 (en) 2013-12-05
DE102013208930B4 true DE102013208930B4 (en) 2020-12-17

Family

ID=49579667

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013208930.9A Active DE102013208930B4 (en) 2012-05-29 2013-05-15 Grouping of entries in a deduplication index

Country Status (2)

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

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010113167A1 (en) * 2009-03-30 2010-10-07 Hewlett-Packard Development Company L.P. Deduplication of data stored in a copy volume
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 (en) * 2014-05-30 2019-04-26 国际商业机器公司 The method and device of data de-duplication for file
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 (en) * 2015-05-11 2022-05-27 삼성전자 주식회사 Electronic device for merging pages and method thereof
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
US11341106B2 (en) 2019-07-19 2022-05-24 Commvault Systems, Inc. Deduplication system without reference counting
CN112581014B (en) * 2020-12-25 2023-12-08 特赞(上海)信息科技有限公司 Statistical method, device, equipment and storage medium for material readiness
US11989158B2 (en) * 2021-01-28 2024-05-21 EMC IP Holding Company LLC Maintaining retention policies in a block storage, multi-client dedup domain

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099351A1 (en) * 2009-10-26 2011-04-28 Netapp, Inc. Use of Similarity Hash to Route Data for Improved Deduplication in a Storage Server Cluster

Family Cites Families (13)

* 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 (en) 2009-09-16 2014-09-24 株式会社日立製作所 File management method and storage system
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 (en) 2010-11-29 2011-04-20 广州明朝网络科技有限公司 Distributed data caching and persisting method and system based on Erlang
US8898119B2 (en) * 2010-12-15 2014-11-25 Netapp, Inc. Fingerprints datastore and stale fingerprint removal in de-duplication environments
CN102156736A (en) 2011-04-12 2011-08-17 上海电通信息服务有限公司 Method for transmitting data between SAP (Systems Application) system and SQL (Structured Query Language) database

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099351A1 (en) * 2009-10-26 2011-04-28 Netapp, Inc. Use of Similarity Hash to Route Data for Improved Deduplication in a Storage Server Cluster

Also Published As

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

Similar Documents

Publication Publication Date Title
DE102013208930B4 (en) Grouping of entries in a deduplication index
DE112012005037B4 (en) Manage redundant immutable files using deduplications in storage clouds
DE112011100819B4 (en) Storage space reservation in a deduplication system
DE102013204186B4 (en) Determining priorities for cached objects to order the broadcast of changes to cached objects based on measured network bandwidth
DE112013001905B4 (en) Increased inline deduplication efficiency
DE102013205069B4 (en) INCREASED EFFICIENCY WITH INLINE DEDUPLICATIONS
DE112010004947B4 (en) Restore a full system backup and incremental backups using multiple simultaneous unit streams
DE112012005275T5 (en) Data selection for backup of data storage
DE102016013248A1 (en) Reference block accumulation in a reference quantity for deduplication in storage management
DE112012004937T5 (en) Fingerprint based data deduplication
DE112013000900B4 (en) Preserving Redundancy in Data Deduplication Systems Using a Scoreboard
DE102013201174A1 (en) Online review of a standby database in physical replication environments using log shipping
DE102013206744A1 (en) DEDUPLICATING STORAGE WITH IMPROVED DETECTION OF COMMON STOPS
DE102013211071A1 (en) At a low overhead, improving the reliability of a journaling file system using semiconductor storage and deduplication
DE202012013462U1 (en) Data processing in a Mapreduce framework
DE112017000167B4 (en) Distributed data deduplication in a processor grid
DE102016001591A1 (en) System and method for copy-on-write on an SSD
DE102009031923A1 (en) Method for managing data objects
DE10350590A1 (en) Method and device for saving data in several independent read-write memories
DE112018003585B4 (en) A method, computer program product, and storage tape drive hardware unit for enhancing deduplication of tape drive storage
DE102010053282A1 (en) Modified B + tree for storing Nand memory redirection assignments
DE112014002275T5 (en) Database management system and method
DE112018000227B4 (en) Method for partially updating data content in a distributed storage network
DE102013200030B4 (en) HASH-BASED MANAGEMENT OF STORAGE IDS
DE112011103367T5 (en) Replicate data

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