Bei Deduplikation handelt es sich um einen Prozess der Datenreduktion, der im Wesentlichen auf einer Vermeidung von Datenredundanz auf einem Speichersystem beruht. Dabei kommt eine Deduplikations-Engine zum Einsatz, die sich spezieller Algorithmen bedient, um redundante Dateien oder Datenblöcke zu identifizieren und zu eliminieren. Sie lässt sich in eine Back-up-Software integrieren oder hardwarebasiert innerhalb des Speicher-Arrays sowie als zwischengeschaltete Appliance realisieren.
Ziel der Deduplikation in der Speichertechnik ist es, lediglich so viele Informationen auf einen nichtflüchtigen Datenträger zu schreiben, wie nötig sind, um eine Datei verlustfrei rekonstruieren zu können. Je mehr Duplikate entfernt werden, desto kleiner wird die Datenmenge, die gespeichert oder übertragen werden muss. Die Identifikation von Duplikaten kann wie beispielsweise bei Git oder Dropbox auf Datei-Ebene erfolgen, effizienter jedoch sind Deduplikations-Algorithmen, die auf der Sub-Datei-Ebene arbeiten. Dazu werden Dateien zunächst in Datenblöcke (Chunks) zerlegt und mit eindeutigen Prüfsummen, sogenannten Hashwerten, versehen. Als zentrale Kontrollinstanz dient eine Tracking-Datenbank, die sämtliche Prüfsummen beinhaltet.
Die blockbasierte Deduplikations-Methode untergliedert sich in 2 Varianten:
- Deduplikation mit fester Blocklänge: Bei einer Deduplikation mit fester Blocklänge unterteilt der Algorithmus Dateien in Abschnitte mit exakt gleicher Länge. Diese orientiert sich in der Regel an der Clustergröße des Datei- oder RAID-Systems (typischerweise 4 KB), lässt sich mitunter jedoch auch manuell konfigurieren. In diesem Fall wird die individuell angepasste Blocklänge für alle Datenblöcke als Standard übernommen.
- Deduplikation mit variabler Blocklänge: Bei einer Deduplikation mit variabler Blocklänge hingegen wird keine feste Standardlänge definiert. Stattdessen teilt der Algorithmus die Daten in unterschiedliche Blöcke auf, deren Länge je nach Art der zu verarbeitenden Daten variiert.
Die Art der Blockeinteilung hat einen gravierenden Einfluss auf die Effizienz der Datendeduplikation. Deutlich wird dies vor allem dann, wenn deduplizierte Dateien nachträglich verändert werden. Erweitert man einen Datenblock mit festen Blockgrenzen um zusätzliche Informationen, verschiebt sich in der Regel auch der Inhalt aller nachfolgenden Blöcke im Verhältnis zu den festdefinierten Blockgrenzen. Obwohl die Änderung nur einen Datenblock betrifft, werden auch alle nachfolgenden Segmente einer Datei aufgrund der Verschiebung der Blockgrenzen vom Deduplikations-Algorithmus als neu eingestuft. Es sei denn, die veränderten Bytes betragen exakt ein Mehrfaches der festgelegten Blocklänge. Da als neu eingestufte Datenblöcke erneut gesichert werden, erhöhen sich im Fall eines Back-ups bei einer Deduplikation mit fester Blocklänge sowohl der Rechenaufwand als auch die Auslastung der Bandbreite.
Nutzt ein Algorithmus hingegen variable Blockgrenzen, wirken sich die Veränderungen eines einzelnen Datenblocks nicht auf die angrenzenden Segmente aus. Stattdessen wird lediglich der veränderte Datenblock um die neuen Bytes erweitert und gespeichert. Dies entlastet das Netzwerk, da bei einem Back-up weniger Daten übertragen werden. Die Flexibilität in Bezug auf Dateiänderungen ist jedoch rechenintensiver, da ein Algorithmus erst einmal herausfinden muss, wie die Chunks aufgeteilt sind.
Die Identifizierung redundanter Chunks beruht auf der Annahme, dass Datenblöcke mit identischen Hashwerten identische Informationen beinhalten. Um redundante Chunks auszufiltern, braucht der Deduplikations-Algorithmus neu ermittelte Hashwerte somit lediglich mit der Tracking-Datenbank abzugleichen. Findet er dabei identische Prüfsummen, werden die redundanten Chunks durch einen Zeiger (Pointer) ersetzt, der auf den Speicherort des identischen Datenblocks verweist. Ein solcher Pointer nimmt deutlich weniger Platz in Anspruch als der Datenblock selbst. Je mehr Chunks in einer Datei durch Platzhalter ersetzt werden können, desto weniger Speicherplatz benötigt diese. Voraussagen lässt sich die Effizienz der Datenreduktion durch Deduplikations-Algorithmen jedoch nicht, da diese stark von der Ausgangsdatei und deren Datenstruktur abhängt. Zudem eignet sich die Deduplikation nur für unverschlüsselte Daten. Bei Verschlüsselungssystemen werden Redundanzen gezielt vermieden, was eine Mustererkennung unmöglich macht.
Deduplikation lässt sich entweder am Speicherziel oder an der Datenquelle realisieren.