Open Source Deduplizierung

Workshop - Deduplizierung mit lessfs unter Linux

15.12.2011
Von Thomas Steudten
Mit der Deduplizierung werden identische Datenblöcke nur einmal auf dem Speichersystem abgelegt - das spart Platz. Mit lessfs gibt es eine quelloffene Software für Linux, welche mit nur wenig Konfiguration ein Dateisystem mit Inline-Deduplizierung bietet.
Deduplizierung sorgt dafür, dass identische Datenblöcke nur einmal gesichert werden.
Deduplizierung sorgt dafür, dass identische Datenblöcke nur einmal gesichert werden.

Oft sind die Funktionen der Deduplizierung in so genannten NAS-/ und DAS-Appliances bereits integriert. Oder eine spezielle Backup-Lösung bietet die Deduplizierung als Zusatz-Feature zum Sparen von Speicherplatz bei der Datensicherung. Mit lessfs gibt eine freie Software-Lösung für Linux, die auf der Filesystem-in-Userspace (FUSE) Umgebung basiert. Hierbei leitet der Kernel I/O-Operationen über definierte Schnittstellen an das Programm im Userspace um. Die Open-Source-Deduplizierung nutzt dabei das sogenannte Inline-Verfahren.

Die Inline-, oder auch In-Band-Deduplizierung bearbeitet einen eingehenden Datenstrom sofort. Im Gegensatz zur Out-of-Band-Variante, welche die eintreffenden Daten erst physikalisch speichert und dann später automatisiert oder on-demand dedupliziert. So wird zwar mehr Speicherplatz für die Zwischenspeicherung benötigt, aber die Rechenleistung für das Erstellen der Prüfsummen erst später. Beide Verfahren haben Vor- und Nachteile.

Ein eingehender Datenstrom - beispielsweise eine Datei - wird in Chunks oder Blöcken variabler Größen von 64-2048 Byte zerlegt. Anstelle eines Vergleichs der Inhalte der Chunks, wird über diese eine Hash-Funktion laufen gelassen, die dann einen eindeutigen Hash-Wert (Fingerprint) für diesen Chunk generiert. Bis auf wenige Ausnahmen kann davon ausgegangen werden, dass bei gleichen Hash-Werten auch die Chunks identischen Inhalts sind. Im weiteren Verlauf des Workflows werden die Chunks durch die generierten Hashwerte ersetzt und letztere in einer Datenbank gesichert. Gleiche Hashwerte werden durch einen Zeiger auf den ersten ersetzt und benötigen daher weniger Speicherplatz. Bekannte Kompressionsprogramme ersetzen oft vorkommende Bytefolgen durch einen kürzeren und weniger oft erscheinende Folgen durch einen längeren Code (Huffmann-Code).

Ein Kompressionslauf über das /usr-Verzeichnis bei 1000 nahezu identischen Linux-Systemen würde eine hohe Redundanz der Daten auf einem zentralen Backupsystem ergeben, obwohl die Daten komprimiert wurden. Denn es liegen dann dort zirka 1000 mal die gleichen Dateien in komprimiertem Zustand. Die Deduplizierung jedoch hätte die gleichen Datenblöcke maximal einmal vorliegen und sonst nur Referenzen auf bereits vorhandene Datenblöcke darauf.

Der administrative Aufwand ist selbsterklärend größer, jedoch der eingesparte Speicherplatz rechtfertigt diese Methode.