Deduplizierung (Deduplikation) bezeichnet Verfahren, die identische Daten nur einmal speichern und weitere Vorkommen durch Verweise ersetzen. In Backup- und Storage-Systemen ist sie der wichtigste Hebel, um Speicherbedarf zu senken – in typischen Serverumgebungen werden Einsparungen von 60 bis über 90 Prozent erreicht, abhängig davon, wie ähnlich sich die Daten sind.
Zwei Ebenen: Blöcke und Dateien
Man unterscheidet grob drei Stufen:
- Datei-Deduplizierung: Nur vollständig identische Dateien werden erkannt. Einfach, aber schwach – schon ein geändertes Byte erzeugt eine neue Datei.
- Block-Deduplizierung mit fester Blockgröße: Dateien werden in gleich große Blöcke zerlegt und über einen Hash verglichen. Wirksam bei unveränderten Bereichen, aber ein Einfügen am Dateianfang verschiebt alle Grenzen und zerstört die Ersparnis.
- Content-defined Chunking: Die Blockgrenzen werden aus dem Inhalt selbst bestimmt. Wird vorne etwas eingefügt, bleiben die nachfolgenden Blöcke gleich und werden weiterhin als Duplikate erkannt. Das ist das Verfahren moderner Werkzeuge wie Restic, Borg und Kopia.
Inline oder nachgelagert
- Inline: Der Vergleich passiert während des Schreibens. Es wird nie doppelt geschrieben, dafür ist der Durchsatz geringer und es braucht einen Index im Speicher.
- Post-Process: Zuerst wird alles geschrieben, danach räumt ein Hintergrundlauf auf. Schneller beim Schreiben, braucht aber zwischenzeitlich den vollen Platz.
Wo die Grenzen liegen
Deduplizierung wirkt überall dort, wo sich Daten wiederholen: virtuelle Maschinen mit demselben Betriebssystem, Sicherungsketten mit wenigen Änderungen pro Tag, Datenbank-Dumps mit viel unverändertem Inhalt. Sie wirkt fast nicht bei bereits komprimierten oder verschlüsselten Dateien wie Videos, Archiven, Fotos – dort ist jeder Block statistisch einzigartig.
Entscheidend ist deshalb die Reihenfolge: Wer vor dem Vergleich komprimiert, verteuert die Deduplizierung auf dem Medium, weil jedes Kompressionsergebnis anders ausfällt. Die Reihenfolge „deduplizieren, dann komprimieren“ ist die wirksame; umgekehrt gewinnt man fast nichts. Bei clientseitiger Verschlüsselung muss der Vergleich deterministisch erfolgen, was moderne Werkzeuge über ableitbare Schlüssel pro Block und einen konvergenten Modus lösen – siehe Key Derivation.
Nebenwirkungen im Betrieb
- Der Index wird zur kritischen Komponente: Geht er verloren, sind die Verweise unbrauchbar. Er gehört ins Backup.
- Fragmentierung: Ein hochdeduplizierter Bestand liegt über viele Blöcke verteilt; das Lesen einzelner Dateien kann langsamer werden.
- Abhängigkeiten: Ein Backup, das auf Blöcke aus anderen Backups verweist, ist ohne diese nicht wiederherstellbar. Deshalb ist die Prüfung des gesamten Bestands (
check, Verify-Job) Pflicht, nicht Kür. - Sicherheitsaspekt: Wer auf Blockebene dedupliziert, kann in seltenen Fällen über Laufzeiten hinweg auf das Vorhandensein bestimmter Daten schließen. Das ist bei Cloud-Diensten ein bekanntes Forschungsfeld und ein Argument für clientseitige Verschlüsselung.
Verwandte Grundlagen: Backup, Restic, Borg, Backup-Strategien: 3-2-1 und Automatisierung.