Ist Deduplikation auf Flash-Systemen sinnvoll?

Leserfrage: Im Vergleich zu Disk-Arrays sind Flash-Systeme in der Regel mit weniger Speicherkapazität ausgestattet. Daher macht es eventuell Sinn das zu speichernde Volumen zu reduzieren. Bewährte Methoden sind beispielsweise Deduplikation und Kompression. Eignen sich diese Datenreduktionsmethoden wirklich für All-Flash-Systeme oder sollte man sie eher vermeiden?

Antwort Doc Storage:

Grundsätzlich muss vorausgeschickt werden, dass auf jeglichem Flash-Medium, egal ob Standard-SSD oder PCI-Flash, jeder schreibende I/O, der vermieden werden kann, ein guter I/O ist. Dies trägt deutlich zur Haltbarkeit und damit zur Langzeitnutzung der Medien bei. Wenn man sich unter dieser Voraussetzung die verschiedenen Optionen ansieht, kommt man zu den folgenden Schlüssen:

Deduplikation nach dem Ablegen auf dem Medium: Hierbei werden die Daten zunächst im Original auf den Zieldatenträger geschrieben. Erst dann durchsucht ein Algorithmus die bereits gespeicherten Informationen auf Dubletten, um diese dann möglicherweise durch Zeiger auf die Originale zu ersetzen und die vorher gespeicherten Daten anschließend zu löschen, um den Speicherplatz wieder freizugeben. Dies ist die schlechteste Art mit Flash-Speichern umzugehen.

Die einzelnen Zellen werden zunächst vollgeschrieben, um sie dann wieder zu löschen. Zwar ergibt dies je nach Datenart eine Reduktion des benötigten Speicherplatzes um bis 90 Prozent, allerdings ohne die Zellen zu schonen. Das System wird die geringste Lebensdauer von allen haben. Dasselbe gilt für Systeme, die Daten nicht deduplizieren, sondern nach dem Speichern komprimieren. Auch hierbei werden wesentlich mehr Zellen benutzt, als später von den eigentlichen Daten belegt werden.

Deduplikation im Datenstrom: Das System analysiert die zu schreibenden Daten bereits vor dem Ablegen in den Zellen und schreibt tatsächlich nur neue, aber keine bereits vorhandenen Informationen. Es werden so nur Zellen beschrieben, die auch von späteren reduzierten Daten belegt werden. Die beste Art mit Flash-Speichern zu arbeiten, platzsparend und ressourcen-schonend. Wie bereits im vorigen Fall gilt dies auch für Arrays, die im Datenstrom komprimieren und dann speichern.

Ein wesentlicher Unterschied zwischen Deduplikation und Kompression liegt im Umgang mit den gespeicherten Daten beim Auslesen. In deduplizierten Systemen können Informationen einfach ausgelesen werden, da diese ja mindestens einmal vollständig und unmodifiziert vorliegen. In Systemen mit Kompression müssen die gespeicherten Informationen ausgelesen und mithilfe des genutzten Algorithmus in ihr Original verwandelt werden. Dies kann entweder im Hauptspeicher des Arrays geschehen, was die Zellen des Flash-Speichers schont, oder aber das Betriebssystem entpackt die Daten auf einen anderen Bereich des Speichermediums und gibt sie dann zum Lesen frei. Wie man sich denken kann, ist dies wiederum eine der schlechtesten Arten, mit SSDs bzw. Flash umzugehen.

Auch hier gibt es bei allen theoretischen Betrachtungen, was denn das preiswerteste, das ressourcen-schonendste oder das schnellste Verfahren ist, eine Tatsache, um die kein Hersteller (und die werden mit Sicherheit zahlreich über mich herfallen) herumkommt, der großflächig Werbung mit Deduplikation und/oder Kompression in SSD- bzw. Flash-Arrays macht: Diese Medien werden wesentlich schneller deutlich größer als alle schnellen Festplatten und nähern sich in ihrem Preis auch immer weiter diesen Regionen an. Bald wird es sich gar nicht mehr lohnen, überhaupt Festplatten einzusetzen.

Man versucht also mit einem Riesenaufwand bei Algorithmen und Caching, für teures Geld die billigste Ressource im gesamten System, also die SSD- oder Flash-Speicher, »besser« auszunutzen. Und das mit Verfahren, die mit Sicherheit keines dieser Systeme schneller macht. Ich erinnere mich gern an einen Kollegen, der immer zu sagen pflegte »nichts wird dadurch schneller, dass man es zweimal macht.« Und egal ob Deduplikation oder Kompression, dies erhöht die Anzahl der I/Os im System enorm. Dabei ist es einerlei, ob nun gegen die Speichermedien oder im Cache. Von der zusätzlichen Belastung der CPUs möchte ich gar nicht reden.

Also, egal über welche Lösung Sie nachdenken – die schnellste ist immer noch diejenige, die die Daten unbehandelt auf die Medien lässt.

Gruß
Doc Storage