Datendeduplizierung - Data deduplication

In Computing , Datendeduplizierung ist eine Technik zur Eliminierung von doppelten Kopien von Daten zu wiederholen. Eine erfolgreiche Implementierung der Technik kann die Speicherauslastung verbessern, was wiederum den Kapitalaufwand senken kann, indem die Gesamtmenge an Speichermedien reduziert wird, die erforderlich ist, um den Speicherkapazitätsbedarf zu decken. Es kann auch auf Netzwerkdatenübertragungen angewendet werden, um die Anzahl der zu sendenden Bytes zu reduzieren.

Der Deduplizierungsprozess erfordert den Vergleich von Daten-„Chunks“ (auch bekannt als „Byte-Muster“), bei denen es sich um einzigartige, zusammenhängende Datenblöcke handelt. Diese Chunks werden während eines Analyseprozesses identifiziert und gespeichert und mit anderen Chunks innerhalb vorhandener Daten verglichen. Immer wenn eine Übereinstimmung auftritt, wird der redundante Chunk durch eine kleine Referenz ersetzt, die auf den gespeicherten Chunk zeigt. Da das gleiche Bytemuster dutzende, hunderte oder sogar tausende Male vorkommen kann (die Übereinstimmungshäufigkeit hängt von der Chunk-Größe ab), kann die Datenmenge, die gespeichert oder übertragen werden muss, stark reduziert werden.

Eine verwandte Technik ist die Einzelinstanz-(Daten-)Speicherung , die mehrere Kopien von Inhalten auf der Ebene der gesamten Datei durch eine einzige gemeinsam genutzte Kopie ersetzt. Dies unterscheidet sich von modernen Ansätzen zur Datendeduplizierung, die auf Segment- oder Unterblockebene betrieben werden können.

Die Deduplizierung unterscheidet sich von Datenkomprimierungsalgorithmen wie LZ77 und LZ78 . Während Komprimierungsalgorithmen redundante Daten innerhalb einzelner Dateien identifizieren und diese redundanten Daten effizienter codieren, besteht die Absicht der Deduplizierung darin, große Datenmengen zu untersuchen und große Abschnitte – wie ganze Dateien oder große Dateiabschnitte – zu identifizieren, die identisch sind, und diese zu ersetzen mit einer gemeinsamen Kopie.

Funktionsprinzip

Ein typisches E-Mail-System kann beispielsweise 100 Instanzen desselben 1 MB ( Megabyte ) Dateianhangs enthalten. Jedes Mal, wenn die E-Mail- Plattform gesichert wird, werden alle 100 Instanzen des Anhangs gespeichert, was 100 MB Speicherplatz erfordert. Bei der Datendeduplizierung wird nur eine Instanz des Anhangs tatsächlich gespeichert; die nachfolgenden Instanzen werden auf die gespeicherte Kopie zurückverwiesen, um ein Deduplizierungsverhältnis von ungefähr 100 zu 1 zu erzielen. Deduplizierung wird oft mit Datenkomprimierung kombiniert, um zusätzliche Speichereinsparungen zu erzielen: Deduplizierung wird zuerst verwendet, um große Teile sich wiederholender Daten zu entfernen, und dann wird Komprimierung verwendet, um effizient kodieren Sie jeden der gespeicherten Chunks.

Im Computercode erfolgt die Deduplizierung, indem beispielsweise Informationen in Variablen gespeichert werden, damit sie nicht einzeln ausgeschrieben werden müssen, sondern auf einmal an einer zentralen referenzierten Stelle geändert werden können . Beispiele sind CSS-Klassen und benannte Referenzen in MediaWiki .

Leistungen

Die speicherbasierte Datendeduplizierung reduziert den für einen bestimmten Satz von Dateien benötigten Speicherplatz. Es ist am effektivsten in Anwendungen, bei denen viele Kopien sehr ähnlicher oder sogar identischer Daten auf einer einzigen Festplatte gespeichert sind. Bei Datensicherungen, die routinemäßig zum Schutz vor Datenverlust durchgeführt werden, bleiben die meisten Daten einer bestimmten Sicherung gegenüber der vorherigen Sicherung unverändert. Gängige Backup-Systeme versuchen, dies auszunutzen, indem sie Dateien weglassen (oder fest verlinken ), die sich nicht geändert haben, oder Unterschiede zwischen Dateien speichern . Keiner der Ansätze erfasst jedoch alle Redundanzen. Hard-Linking hilft nicht bei großen Dateien, die sich nur geringfügig geändert haben, wie beispielsweise bei einer E-Mail-Datenbank; Unterschiede finden nur Redundanzen in benachbarten Versionen einer einzelnen Datei (beachten Sie einen Abschnitt, der gelöscht und später wieder hinzugefügt wurde, oder ein Logo, das in vielen Dokumenten enthalten ist).

Die Inline-Netzwerkdatendeduplizierung wird verwendet, um die Anzahl der Bytes zu reduzieren, die zwischen Endpunkten übertragen werden müssen, wodurch die erforderliche Bandbreite reduziert werden kann. Weitere Informationen finden Sie unter WAN-Optimierung . Virtuelle Server und virtuelle Desktops profitieren von der Deduplizierung, da sie es ermöglicht, nominell separate Systemdateien für jede virtuelle Maschine in einem einzigen Speicherplatz zusammenzuführen. Wenn eine bestimmte virtuelle Maschine eine Datei anpasst, ändert die Deduplizierung gleichzeitig die Dateien auf den anderen virtuellen Maschinen nicht – etwas, das Alternativen wie Hardlinks oder freigegebene Festplatten nicht bieten. Das Sichern oder Erstellen von Duplikatkopien von virtuellen Umgebungen wird in ähnlicher Weise verbessert.

Einstufung

Post-Prozess versus Inline-Deduplizierung

Die Deduplizierung kann "inline" erfolgen, während die Daten fließen, oder "nachbearbeiten", nachdem sie geschrieben wurden.

Bei der Post-Process-Deduplizierung werden zuerst neue Daten auf dem Speichergerät gespeichert und zu einem späteren Zeitpunkt analysiert ein Prozess die Daten auf Duplizierung. Der Vorteil besteht darin, dass nicht gewartet werden muss, bis die Hash- Berechnungen und das Nachschlagen abgeschlossen sind, bevor die Daten gespeichert werden, wodurch sichergestellt wird, dass die Speicherleistung nicht beeinträchtigt wird. Implementierungen, die einen richtlinienbasierten Betrieb bieten, können Benutzern die Möglichkeit geben, die Optimierung für "aktive" Dateien aufzuschieben oder Dateien basierend auf Typ und Speicherort zu verarbeiten. Ein potenzieller Nachteil besteht darin, dass doppelte Daten für kurze Zeit unnötigerweise gespeichert werden, was problematisch sein kann, wenn das System fast voll ausgelastet ist.

Alternativ können Deduplizierungs-Hash-Berechnungen inline durchgeführt werden: synchronisiert, wenn Daten auf dem Zielgerät eingehen. Wenn das Speichersystem einen Block identifiziert, den es bereits gespeichert hat, wird nur ein Verweis auf den bestehenden Block gespeichert, und nicht den ganzen neuen Block.

Der Vorteil der Inline-Deduplizierung gegenüber der Post-Process-Deduplizierung besteht darin, dass sie weniger Speicher und Netzwerkverkehr erfordert, da niemals doppelte Daten gespeichert oder übertragen werden. Auf der negativen Seite können Hash-Berechnungen rechenintensiv sein, wodurch der Speicherdurchsatz verringert wird. Bestimmte Anbieter mit Inline-Deduplizierung haben jedoch Geräte demonstriert, die in der Lage sind, Inline-Deduplizierung mit hohen Raten durchzuführen.

Nachbearbeitungs- und Inline-Deduplizierungsmethoden werden oft heftig diskutiert.

Datenformate

SNIA Dictionary identifiziert zwei Methoden:

  • Inhaltsunabhängige Datendeduplizierung – eine Datendeduplizierungsmethode, die keine Kenntnis bestimmter Anwendungsdatenformate erfordert.
  • inhaltsbezogene Datendeduplizierung – eine Datendeduplizierungsmethode, die das Wissen über bestimmte Anwendungsdatenformate nutzt.

Quell- versus Zieldeduplizierung

Eine andere Möglichkeit, Datendeduplizierungsmethoden zu klassifizieren, besteht darin, wo sie auftreten. Die Deduplizierung, die in der Nähe der Datenerstellung stattfindet, wird als "Quelldeduplizierung" bezeichnet. Wenn dies in der Nähe des Speicherorts der Daten auftritt, wird dies als "Zieldeduplizierung" bezeichnet.

Die Quellendeduplizierung stellt sicher, dass Daten in der Datenquelle dedupliziert werden. Dies geschieht in der Regel direkt innerhalb eines Dateisystems. Das Dateisystem scannt regelmäßig neue Dateien, erstellt Hashes und vergleicht sie mit Hashes vorhandener Dateien. Wenn Dateien mit gleichen Hashes gefunden werden, wird die Dateikopie entfernt und die neue Datei verweist auf die alte Datei. Im Gegensatz zu harten Links werden duplizierte Dateien jedoch als separate Einheiten betrachtet, und wenn eine der duplizierten Dateien später geändert wird, wird unter Verwendung eines Systems namens Copy-on-Write eine Kopie dieser geänderten Datei oder dieses geänderten Blocks erstellt. Der Deduplizierungsprozess ist für die Benutzer und Backup-Anwendungen transparent. Das Sichern eines deduplizierten Dateisystems führt häufig zu Duplizierungen, was dazu führt, dass die Backups größer sind als die Quelldaten.

Die Quellendeduplizierung kann für Kopiervorgänge explizit deklariert werden, da keine Berechnung erforderlich ist, um zu wissen, dass die kopierten Daten dedupliziert werden müssen. Dies führt zu einer neuen Form der "Verknüpfung" auf Dateisystemen, die Reflink (Linux) oder Clonefile (MacOS) genannt wird, bei der ein oder mehrere Inodes ( Dateiinformationseinträge ) erstellt werden, um einige oder alle ihrer Daten zu teilen. Es wird analog zu Hardlinks benannt , die auf Inode-Ebene arbeiten, und symbolischen Links , die auf Dateinamensebene arbeiten. Die einzelnen Einträge haben ein Copy-on-Write-Verhalten, das kein Aliasing ist, dh das nachträgliche Ändern einer Kopie wirkt sich nicht auf andere Kopien aus. Auch Microsofts ReFS unterstützt diesen Vorgang.

Zieldeduplizierung ist der Vorgang, bei dem Duplikate entfernt werden, wenn die Daten nicht an diesem Speicherort generiert wurden. Beispiel hierfür wäre ein Server, der mit einem SAN/NAS verbunden ist. Das SAN/NAS wäre ein Ziel für den Server (Zieldeduplizierung). Dem Server ist keine Deduplizierung bekannt, der Server ist auch der Punkt der Datengenerierung. Ein zweites Beispiel wäre Backup. Im Allgemeinen ist dies ein Backup-Speicher wie ein Daten-Repository oder eine virtuelle Bandbibliothek .

Deduplizierungsmethoden

Eine der gängigsten Formen der Implementierung von Datendeduplizierung funktioniert durch den Vergleich von Datenblöcken, um Duplikate zu erkennen. Dazu wird jedem Datenblock eine von der Software berechnete Kennung zugewiesen, die typischerweise kryptografische Hash-Funktionen verwendet. Bei vielen Implementierungen wird davon ausgegangen, dass bei identischer Identifikation die Daten identisch sind, auch wenn dies aufgrund des Schubladenprinzips nicht in allen Fällen zutreffen kann ; andere Implementierungen gehen nicht davon aus, dass zwei Datenblöcke mit derselben Kennung identisch sind, sondern verifizieren tatsächlich, dass Daten mit derselben Kennung identisch sind. Wenn die Software je nach Implementierung entweder davon ausgeht, dass eine bestimmte Identifikation bereits im Deduplizierungs-Namespace vorhanden ist, oder tatsächlich die Identität der beiden Datenblöcke überprüft, ersetzt sie diesen Duplikatblock durch einen Link.

Sobald die Daten dedupliziert wurden, ersetzt das System beim Zurücklesen der Datei, wo immer ein Link gefunden wird, diesen Link einfach durch den referenzierten Datenblock. Der Deduplizierungsprozess soll für Endbenutzer und Anwendungen transparent sein.

Kommerzielle Deduplizierungsimplementierungen unterscheiden sich durch ihre Aufteilungsmethoden und Architekturen.

  • Chunken. In einigen Systemen werden Chunks durch Einschränkungen der physikalischen Schicht definiert (z. B. 4 KB Blockgröße in WAFL ). In einigen Systemen werden nur vollständige Dateien verglichen, was als Single-Instance-Storage oder SIS bezeichnet wird. Die intelligenteste (aber CPU-intensivste) Methode zum Chunking wird im Allgemeinen als Sliding-Block angesehen. Beim Gleitblock wird ein Fenster entlang des Dateistroms weitergegeben, um natürlicher auftretende interne Dateigrenzen zu suchen.
  • Deduplizierung von Client-Backups. Dies ist der Prozess, bei dem die Deduplizierungs-Hash-Berechnungen anfänglich auf den Quell-(Client-)Maschinen erstellt werden. Dateien mit identischen Hashes zu Dateien, die sich bereits auf dem Zielgerät befinden, werden nicht gesendet, das Zielgerät erstellt lediglich geeignete interne Links, um auf die duplizierten Daten zu verweisen. Dies hat den Vorteil, dass unnötiges Senden von Daten über das Netzwerk vermieden wird, wodurch die Verkehrsbelastung verringert wird.
  • Primärspeicher und Sekundärspeicher. Per Definition sind primäre Speichersysteme auf optimale Leistung und nicht auf geringstmögliche Kosten ausgelegt. Das Konstruktionskriterium für diese Systeme ist die Leistungssteigerung auf Kosten anderer Überlegungen. Darüber hinaus sind primäre Speichersysteme viel weniger tolerant gegenüber Operationen, die sich negativ auf die Leistung auswirken können. Ebenfalls per Definition enthalten sekundäre Speichersysteme hauptsächlich Duplikate oder sekundäre Kopien von Daten. Diese Datenkopien werden in der Regel nicht für den eigentlichen Produktionsbetrieb verwendet und sind daher im Austausch für eine höhere Effizienz toleranter gegenüber gewissen Leistungseinbußen.

Bisher wird die Datendeduplizierung überwiegend bei sekundären Speichersystemen eingesetzt. Die Gründe dafür sind zweifach. Erstens erfordert die Datendeduplizierung einen Overhead, um die doppelten Daten zu erkennen und zu entfernen. In primären Speichersystemen kann dieser Overhead die Leistung beeinträchtigen. Der zweite Grund, warum die Deduplizierung auf Sekundärdaten angewendet wird, besteht darin, dass Sekundärdaten tendenziell mehr Datenduplikate aufweisen. Insbesondere Backup-Anwendungen erzeugen im Laufe der Zeit häufig erhebliche Teile doppelter Daten.

Die Datendeduplizierung wurde in einigen Fällen erfolgreich mit Primärspeicher bereitgestellt, in denen das Systemdesign keinen erheblichen Overhead erfordert oder die Leistung beeinträchtigt.

Einzelinstanzspeicher

Single-Instance-Storage (SIS) ist die Fähigkeit eines Systems, mehrere Kopien von Inhaltsobjekten zu erstellen und sie durch eine einzige gemeinsam genutzte Kopie zu ersetzen. Es ist ein Mittel, um Datenduplizierungen zu vermeiden und die Effizienz zu steigern. SIS wird häufig in implementiert Dateisysteme , E-Mail - Server - Software, Daten - Backup und andere Speicherbezogenen Computersoftware. Single-Instance-Storage ist eine einfache Variante der Datendeduplizierung. Während die Datendeduplizierung auf Segment- oder Unterblockebene funktionieren kann, funktioniert Single-Instance-Storage auf Objektebene, wodurch redundante Kopien von Objekten wie ganze Dateien oder E-Mail-Nachrichten eliminiert werden.

Nachteile und Bedenken

Ein Verfahren zum Deduplizieren von Daten beruht auf der Verwendung von kryptografischen Hash-Funktionen , um doppelte Datensegmente zu identifizieren. Generieren zwei verschiedene Informationen denselben Hash-Wert, spricht man von einer Kollision . Die Wahrscheinlichkeit einer Kollision hängt hauptsächlich von der Hash-Länge ab (siehe Geburtstagsangriff ). Somit entsteht die Sorge, dass eine Datenverfälschung auftreten kann, wenn eine Hash-Kollision auftritt, und es werden keine zusätzlichen Überprüfungsmittel verwendet, um zu überprüfen, ob ein Unterschied in den Daten vorliegt oder nicht. Sowohl Inline- als auch Post-Process-Architekturen können eine Bit-für-Bit-Validierung der Originaldaten für eine garantierte Datenintegrität bieten. Die verwendeten Hash-Funktionen umfassen Standards wie SHA-1 , SHA-256 und andere.

Die Rechenressourcenintensität des Prozesses kann ein Nachteil der Datendeduplizierung sein. Um die Leistung zu verbessern, verwenden einige Systeme sowohl schwache als auch starke Hashes. Schwache Hashes sind viel schneller zu berechnen, aber es besteht ein größeres Risiko einer Hash-Kollision. Systeme, die schwache Hashes verwenden, berechnen anschließend einen starken Hash und verwenden ihn als entscheidenden Faktor dafür, ob es sich tatsächlich um dieselben Daten handelt oder nicht. Beachten Sie, dass der mit dem Berechnen und Nachschlagen von Hashwerten verbundene Systemaufwand in erster Linie eine Funktion des Deduplizierungsworkflows ist. Die Wiederherstellung von Dateien erfordert diese Verarbeitung nicht, und es ist unwahrscheinlich, dass sich eine inkrementelle Leistungseinbuße im Zusammenhang mit der Neuzusammensetzung von Datenblöcken auf die Anwendungsleistung auswirkt.

Ein weiteres Anliegen ist das Zusammenspiel von Komprimierung und Verschlüsselung. Das Ziel der Verschlüsselung besteht darin, erkennbare Muster in den Daten zu beseitigen. Somit können verschlüsselte Daten nicht dedupliziert werden, obwohl die zugrunde liegenden Daten möglicherweise redundant sind.

Obwohl es sich bei der Datendeduplizierung nicht um einen Mangel handelt, kam es zu Datenschutzverletzungen, wenn unzureichende Sicherheits- und Zugriffsvalidierungsverfahren bei großen Repositorys deduplizierter Daten verwendet wurden. In einigen Systemen, wie es bei Cloud-Speichern üblich ist, kann ein Angreifer Daten im Besitz anderer abrufen, indem er den Hash-Wert der gewünschten Daten kennt oder errät.

Implementierungen

Die Deduplizierung ist in einigen Dateisystemen wie in ZFS oder Write Anywhere File Layout und in verschiedenen Disk-Array- Modellen implementiert . Es ist ein Dienst, der sowohl auf NTFS als auch auf ReFS auf Windows-Servern verfügbar ist.

Siehe auch

Verweise

Externe Links