Datendeduplizierung: Chunkstore wird sehr groß
In manchen Fällen kann es vorkommen, dass bei aktivierter Datendeduplizierung der Chunkstore sehr viel Speicher benötigt – in Extremfällen sogar mehr als die eigentlichen Daten. Um dieses Problem besser zu verstehen, schauen wir uns erst einmal an, was der Chunkstore genau ist.
Der Chunkstore
Bei der Datendeduplizierung werden Dateien in mehrere Blöcke (sog. Chunks), die möglichst oft auch in anderen Dateien vorkommen, aufgeteilt. Ein solcher Chunk wird im Chunkstore komprimiert, gespeichert und in den Dateien durch einen Reparse Point ersetzt, welcher auf den Chunk im Chunkstore zeigt. Dadurch werden redundante Daten nur noch einmal im Dateisystem gespeichert und der benötigte Speicherplatz kann reduziert werden.
Wie kann es nun dazu kommen, dass der Chunkstore größer wird als die eigentlichen Daten?
Workloads
Datendeduplizierung funktioniert auf unterschiedlichen Arten von Daten unterschiedlich gut. Wie oben bereits angesprochen funktioniert das Verfahren dadurch, dass redundante Daten nur noch einmalig gespeichert werden. Was aber, wenn keine bis wenig redundante Daten vorhanden sind? In diesem Fall werden sehr viele Chunks im Chunkstore gespeichert, da sie nur von wenigen Dateien referenziert werden.
Dies passiert besonders häufig bei Multimedia-Dateien wie Videos und Musik. Aufgrund ihrer besonderen Formate enthalten diese Dateien meist sehr wenig redundante Daten. Außerdem erreichen bereits komprimierte Daten wie ZIP- oder RAR-Archive oft keine hohen Einsparungen mit Datendeduplizierung, da die Komprimierung bereits dafür sorgt, dass möglichst wenig Redundanz innerhalb der Archive besteht.
In wenigen Fällen, in denen Datendeduplizierung auf schlecht geeigneten Daten verwendet wird und diese Daten sehr häufig bearbeitet werden, kann es passieren, dass einige Chunks im Chunkstore nur noch teilweise benötigt werden. Diese werden bei einem Garbage Collection Job nicht gelöscht, da dieser Job lediglich Chunks aus dem Chunkstore löscht, wenn diese nicht mehr benötigt werden und hier noch ein Verweis besteht. Dadurch entsteht dann ein Chunkstore, der größer ist als die eigentlichen Daten.
Dem Administrator stellen sich hier natürlich zwei Fragen:
Wie erkenne ich, ob sich meine Daten für die Datendeduplizierung eignen, bevor ich sie aktiviere?
Was mache ich, wenn das Problem bereits besteht?
DDPEval.exe
Zur Evaluation, ob sich bestimmte Daten für die Datendepluzierung eignen, liefert Microsoft das Tool DDPEval.exe. Dieses befindet sich auf Systemen mit installiertem Datendeduplizierung-Feature unter %windir%/System32. Im Folgenden sehen wir beispielhaft die Ausgabe für das D: Volume eines Windows Computers.
Über die Werte Space Savings und Space Savings Percent können wir nun bestimmten, ob sich das Aktivieren der Datendeduplizierung in unserem Fall lohnt oder nicht.
Measure-DedupFileMetadata
Bei bereits aktivierter Datendeduplizierung lässt sich mithilfe des PowerShell Cmdlets Measure-DedupFileMetadata überprüfen, wie viel Speicher die Datendeduplizierung bei einer bestimmten Datei, einem bestimmten Ordner oder Volume einspart.
Besonders der Wert DedupDistinctSize ist hier von Interesse. Dieser gibt an wie viel Speicher im Chunkstore ausschließlich durch die Objekte unter dem angegebenen Pfad belegt wird. Anders gesagt bedeutet das, dass genau so viel Speicher bei der nächsten Garbage Collection aus dem Chunkstore frei werden würde, würde man diese Objekte von der Datendeduplizierung ausschließen.
Dies ermöglicht es uns, Daten zu finden, die sich besonders schlecht für die Datendeduplizierung eignen. Diese zeichnen sich durch eine hohe DedupDistinctSize aus, da die Chunks im Chunkstore lediglich für diese Daten benötigt und von keinen anderen Dateien referenziert werden.
Problemlösung
Haben wir erkannt, dass das Problem bei uns besteht, bleibt uns leider nur eine Möglichkeit: Wir müssen die Daten, die das Problem verursachen, von der Datendeduplizierung ausschließen und die Deduplizierung rückgängig machen. Dazu gehen wir wie folgt vor:
Deaktivieren der automatischen Jobs
Set-DedupSchedule BackgroundOptimization -enable $falseDie Datendeduplizierung darf nicht einfach deaktiviert werden, da wir später eine Garbage Collection starten müssen. Diese kann nur bei aktivierter Deduplizierung gestartet werden. Außerdem verhindert das Deaktivieren lediglich, dass neue Daten dedupliziert werden. Bereits deduplizierte Daten bleiben dedupliziert. Daher deaktivieren wir die automatische Ausführung der Deduplizierungsjobs und verhindern so, dass unsere Daten direkt wieder dedupliziert werden.
Rückgängig machen der Deduplizierung
Start-DedupJob -Volume „D:“ -Type Unoptimization
Über einen Deduplizierungsjob vom Typ Unoptimization ist es möglich die Deduplizierung wieder rückgängig zu machen. Leider funktioniert dies nur auf Volumeebene. Es sollte beachtet werden, dass dieser Job bei großen Datenmengen sehr viel Zeit in Anspruch nehmen kann. In wenigen Fällen konnte eine Laufzeit von mehreren Tagen beobachtet werden.Starten der Garbage Collection
Start-DedupJob -Volume “D:” -Type GarbageCollection
Nachdem der Garbage Collection Job durchgelaufen ist, sollte der Chunkstore bereinigt sein und keinen übermäßigen Speicherverbrauch mehr haben. Im Anschluss können die problematischen Daten auf ein anderes Volume verschoben oder über die Deduplizierungsrichtlinie ausgeschlossen werden.Reaktivieren der automatischen Jobs
Set-DedupSchedule BackgroundOptimization -enable $true
Zu guter Letzt reaktivieren wir die automatische Ausführung der Jobs und die restlichen Daten werden wieder wie gewohnt dedupliziert.
Fazit
Als Fazit lässt sich sagen, dass man am besten immer vor dem Aktivieren der Datendeduplizierung prüft, ob sich die Daten überhaupt dafür eignen. Im Problemfall müssen die problematischen Daten mit einigem Zeitaufwand ausfindig und die Deduplizierung rückgängig gemacht werden. DDPEval.exe sollte daher immer konsultiert werden, wenn eine Datendeduplizierung in Frage kommt.
MEHR BLOG-KATEGORIEN
- ASP.NET
- Active Directory
- Administration Tools
- Allgemein
- Backup
- ChatBots
- Configuration Manager
- DNS
- Data Protection Manager
- Deployment
- Endpoint Protection
- Exchange Server
- Gruppenrichtlinien
- Hyper-V
- Intune
- Konferenz
- Künstliche Intelligenz
- Linux
- Microsoft Office
- Microsoft Teams
- Office 365
- Office Web App Server
- Powershell
- Remote Desktop Server
- Remote Server
- SQL Server
- Sharepoint Server
- Sicherheit
- System Center
- Training
- Verschlüsselung
- Virtual Machine Manager
- Visual Studio
- WSUS
- Windows 10
- Windows 8
- Windows Azure
- Windows Client
- Windows Server
- Windows Server 2012
- Windows Server 2012R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Zertifikate