Stor IT Back - Ihr Speicherspezialist
Storage Deduplizierung und Komprimierung V1.6 (c) Stor IT Back 2024
Die Deduplizierung verfolgt ähnliche Ziele wie das Tiering. Beides sind Features der Storage Virtualisierung, die
die Effektivität von Storage-Lösungen erhöhen und Kosten einsparen. Die Deduplizierung nutzt den
vorhandenen teuren Speicherplatz möglichst effektiv aus. Alle Daten die schon einmal im System gespeichert
sind, müssen nicht ein zweites Mal gespeichert werden. Und das ist der
Ansatz der Deduplizierung. Wie beim Tiering ist auch die Deduplizierung auf
Datei- und Blockebene möglich. In beiden Fällen werden
die Daten nur einmal gespeichert, alle weiteren (doppelte) Daten sind Verweise.
Je nach Datenstruktur kann sehr viel Plattenplatz eingespart werden.
Bei der Datenkompression werden die vorhandenen zu speichernden Daten einfach komprimiert. Bei Daten muss natürlich eine verlustfreie Komprimierung verwendet werden.
Hierbei werden verschiedene mathematische Algorithmen verwendet, die bei unterschiedlichen Daten unterschiedlich gute Ergebnisse erzielen. Für bestimmte Daten
gibt es jeweils gute und nicht so gute Verfahren. Aber da auf einem Storage-System unterschiedliche und nicht vorbestimmte Daten liegen, kann dies
nur schwer vorbestimmt werden.
Diese Anwendung ist sehr leicht zu implementieren. Kommt eine neue Datei hinzu, so muss die Anwendung nur schauen, ob diese Datei schon auf der Platte vorhanden ist. Wenn ja, so wird ein Verweis (dieser ist natürlich deutlich kleiner als die Datei an sich) auf die vorhandene Datei gespeichert. Wenn die Datei nicht vorhanden ist, dann wird sie gespeichert und für die Datei eine eindeutige Checksumme gebildet. Über diese Checksumme werden dann neue Dateien abgeglichen. Die zeitliche Verzögerung hält sich in Grenzen, da ja immer nur Schreibzugriffe kontrolliert werden müssen. Das Einsparpotential ist enorm. Je mehr Daten vorhanden sind, desto größer ist auch die Wahrscheinlichkeit auf doppelte Dateien zu stoßen. Neben einem Fileserver ist die Deduplizierung auch bei der Datensicherung (Backup) möglich. Dort gibt es die größten Einsparpotentiale, da die gleichen Daten immer wieder gesichert werden. Und wenn dies bei jeder Sicherung eingespart werden kann, dann sind finanzielle Vorteile schnell ersichtlich. Im Backup-Umfeld können Einsparungen von bis zu 80% erreicht werden.
Diese Funktion kontrolliert doppelte Daten auf Blockebene.
Sie kann nicht nur gleiche Dateien identifizieren, sondern sogar Teile von Dateien.
Wird also z.B. eine Textdatei ergänzt und unter neuen Namen abgespeichert, so belegt nur
der Teil der Datei wirklich Speicherplatz, der hinzugekommen ist. Aber nicht
nur innerhalb eines Fileserver oder eines Backup-Server werden die Blöcke
verglichen, sondern über ein gesamtes Speichersystem.
Jetzt ist auch ein Vergleich zwischen den Blöcken von Filedaten und Blockdaten
des E-Mail Servers möglich. So kann zum Beispiel erkannt werden, dass ein
Mail-Anhang auch noch auf dem Fileserver gespeichert wurde. Da die Blöcke
aber schon in der Mail vorhanden sind, belegt sie für den Fileserver keinen
Platz mehr auf dem Storage.
Bei diesen Deduplizierungen muss die zeitliche Verzögerung bei Speichervorgängen
genau beobachtet werden. Gerade bei Datenbanken und performance kritischen Anwendungen
kann dies einen negativen Einfluss haben. Bei Fileservern, Archivierungen, Datensicherungen
und speicherintensiven Anwendungen spielt die Performance häufig eine kleinere
Rolle und der Sparvorteil überwiegt.
Häufig wird die Deduplizierung (meist in Kombination mit Compression) bei All-Flash Storage Systemen
eingesetzt. Hier ist der physikalische Speicherplatz immer noch sehr teuer, jeder Einsparung an
Speicherplatz spart also sehr viel Geld.
Auch hier gibt es die Möglichkeit, den Datenstrom quasi im Stream zu komprimieren oder es später im Staging zu verarbeiten.
Dies hängt entscheidend von der Hardware des Systems ab. Enthält dies zum Beispiel einen speziellen Chip für eine
Hardware-Komprimierung, dann kann dies ohne große Performance-Einbußen direkt beim Schreiben bzw. Lesen durchgeführt werden.
Ohne diese spezielle Hardware wird die CPU des Storage stark belastet. Aber nicht nur dies, da eine normale CPU nicht auf diese Operationen
optimiert wurde, wird auch jeder IO stark verzögert. Da bietet sich ein Staging an, evtl. auch gleich in Kombination mit der
Deduplizierung.
Die Komprimierung auf Blockebene wird heute eigentlich nur auf All Flash Systemen angewendet. Und das primär zur Kostenreduktion.
Bei All Flash Systemen kann häufig eine kleine
Verzögerung bei Schreib-Operationen verkraftet werden. Aber nicht immer, also gibt es Features, die auch dies verhindern. Hierbei werden die Daten
erst einmal in einen Speicherbereich geschrieben, der nicht beeinflusst wird. Die Daten können also mit maximaler Performance geschrieben werden. Erst
bei einer geringen Auslastung des Storage und unabhängig vom eigentlichen Datenstrom werden die Rohdaten später verarbeitet. Dieser Staging-Bereich
ermöglicht dann die maximale Performance auch beim Schreiben.
Bei speziellen Systemen kann die Deduplizierung sogar auf den Client verlagert werden. Hiermit kann dann auch das Netzwerk entlastet werden, da nur
noch neue Daten übertragen werden müssen.