Einfach mehr Platz auf dem Fileserver mit Windows Server 2012 10. Mai 2012

Jeder Administrator kennt das: die Benutzer verfallen in das Schema “Jagen und Sammeln”, wenn es um Daten geht, verschwenden wertvollen Platz auf dem Fileserver und belasten durch ihr Verhalten ganz nebenbei auch die Kapazitäten der Datensicherung. Für viele der Anwender ist ein Server eine unendliche Ressource, die niemals ausgeschöpft werden kann. Als Administrator versucht man dann, mit den Benutzern zu sprechen und zu hinterfragen, ob sie denn wirklich noch die Powerpoint Präsentation aus dem Jahr 2000 benötigen. Meistens bekommt man als Administrator dann die Antwort, dass es sich dabei um “hochwichtige” Daten handelt und diese keinesfalls aus dem Netzlaufwerk entfernt werden dürfen. Auch das Implementieren von Kontingenten gestaltet sich meist schwierig, da in den meisten Firmen die einzelnen Benutzer unterschiedliche Anforderungen an einen Fileserver stellen. Was aber tun, wenn der Platz auf dem SAN oder den internen Datenträgern des Servers langsam knapp wird und das Budget für Neuanschaffungen sehr begrenzt ist. Sehr schnell wird hier das Buzzword “Deduplication” in den Raum geworfen. Dieses Feature musste man sich bis jetzt entweder mit einem Windows Storage Server oder als Software von einem Drittanbieter teuer erkaufen. Mit Windows Server 2012 integriert Microsoft dieses Feature in das Betriebssystem.

Folgende Aspekte gilt es beim Einsatz zu beachten:

  • Data deduplication ist clusterfähig
  • Komprimierte oder auch verschlüsselte Dateien können nicht verarbeitet werden
  • Das Bootvolume oder auch das Systemvolume kann nicht dedupliziert werden
  • Die Datenträger, auf denen Daten dedupliziert werden, müssen mit NTFS formatiert werden
  • Custer Shared Volumes werden nicht unterstützt
  • Dateien, die kleiner als 32 KB sind, werden keiner Deduplizierung unterzogen

Wo sollte das Feature eingesetzt werden?

Deduplication kann auf allen Servern eingesetzt werden, auf denen relativ statische Daten abgelegt sind. Dazu zählen die klassischen Fileserver, die Freigaben für Datenlaufwerke, Profilverzeichnisse oder Homelaufwerke bereitstellen oder auch Server, auf denen z.B. Backups liegen.

Für alle Server, die z.B. als Exchange Server oder Datenbankserver wie MS SQL  dienen, sollte keine Deduplication aktiviert werden. Dies würde zu enormen Performanceverlusten führen.

Wie arbeitet die Deduplication unter Windows Server 2012?

Das ist relativ einfach erklärt. Windows Server 2012 zerlegt die Dateien auf dem Volume in kleine Segmente variabler Größe (32KB – 128KB). Alle Segmente, die mehrfach vorhanden sind, werden entfernt und nur ein einzelnes Segment wird im “Chunk Store” abgelegt. Für die entfernten Segmente werden “Reparse Points” im Dateisystem angelegt, die auf das abgelegte Segment im “Chunk Store” referenzieren.

Der Dienst für die Depluzierung läuft als ständiger Prozess im Hintergrund und evaluiert alle 60 Minuten die Dateien auf den Datenträgern. Sollte in solch einem Zyklus der Server gerade Leistungsengpässe (kein Speicher verfügbar, hohe CPU Last) aufweisen, dann wird der Zyklus abgebrochen. Zusätzlich zu dem Hintergrundprozess, kann ein Administrator aber auch eine Deduplizierung durch einen geplanten Task auslösen. Dies könnte dann z.B. in den Nachtstunden ausgeführt werden. Microsoft selbst gibt an, dass ca. 1,5TB an Daten in einem 24 Stunden Zyklus gescannt werden können.

Bevor man aber mit dem Umstellen der Fileserver auf Windows Server 2012 wegen diesem Feature beginnt, sollte man als Erstes prüfen, ob sich die Investition überhaupt lohnt. Dafür liefert Microsoft das Tool “ddpeval.exe”, was auch unter Windows Server 2008 R2 ausgeführt werden kann. Für das Auswerten eines bestehenden Fileservers sollte man allerdings etwas Geduld mitbringen. Ich habe das Tool auf meinem Fileserver gestartet und die Auswertung für ein Laufwerk durchgeführt, auf dem etwa 1,2TB an Daten liegen. Für die Auswertung hat das Tool 28 Stunden benötigt. An Systemressourcen hat das Tool ca. 300MB an RAM benötigt und die CPU ungefähr mit 17% ausgelastest. Das lange Warten hat sich allerdings gelohnt. Auf dem betreffenden Volume kann ich ca. 75% durch die Deduplizierung zurückgewinnen. Da auf diesem Fileserver sehr viele VHD Dateien für Demoumgebungen liegen, ist 75% auch ein verständlicher Wert.

In meiner Windows Server 2012 Testumgebung habe ich einen Fileserver mit wesentlich weniger Daten aufgesetzt. Auf dem Testsystem existiert ein Laufwerk mit einer Größe von 127GB und davon sind ca. 105GB mit Daten belegt. Da es sich um ein Testsystem handelt, habe ich mit “fsutil” einfach Testdateien erstellt. Da diese Testdateien alle gleich sind, sollte sich durch die Deduplizierung auch ein hohes Einsparpotential ergeben.

Auch für dieses Laufwerk habe ich das Tool “ddpeval.exe” ausgeführt. Bei diesem Laufwerk hat die Ausführung des Tools ca. 13 Minuten gedauert. Als mögliches Einsparpotential hat mir “ddpeval.exe” ca. 104,31 GB gemeldet. Das ist laut “ddpeval.exe” ein Einsparung von ca. 99%.

Installation und Konfiguration der Deduplizierung

Die Installation der Deduplizierung erfolgt über das Hinzufügen von Rollen und Features über das Dashboard des neuen Servermanagers.

Diese Rolle kann man natürlich auch sehr einfach mit der Powershell installieren.

import-module ServerManager
add-windowsfeature fs-data-deduplication

Wenn die Rolle erfolgreich installiert wurde, müssen die einzelnen Volumes für die Deduplizierung aktiviert werden. Dies kann wieder wahlweise über die GUI oder über die Powershell realisiert werden.

Wie man in dem Screenshot sehen kann, läuft die Deduplizierung permanent im Hintergrund. Zusätzlich habe ich noch eine Aufgabe definiert, durch die Samstags ab 1 Uhr morgens eine sogenannte “Throughput optimization” für eine Dauer von sechs Stunden durchgeführt wird. Dadurch wird der Vorgang der Deduplizierung optimiert.

Natürlich lässt sich die Deduplizierung auch über die Powershell konfigurieren. Mit der Installation der Deduplizierung steht auch ein Powershell Modul für die Verwaltung der Deduplizierung zur Verfügung. Um auf die cmdlets der Deduplizierung zugreifen zu können, muss als Erstes das Modul importiert werden.

import-module Deduplication

Nach dem Import des Moduls stehen folgende cmdlets zur Verfügung:

get-command -module deduplication
disable-dedupvolume
enable-dedupvolume
get-dedupjob
get-dedupmetadata
get-dedupschedule
get-dedupstatus
get-dedupvolume
new-dedupschedule
remove-dedupschedule
set-dedupschedule
set-dedupvolume
start-dedupjob
stop-dedupjob
update-dedupstatus

Zum Aktivieren eines Volumes für die Deduplizierung ist folgendes Kommando notwendig:

enable-dedupvolume E: | set-dedupvolume -minimumfileagedays 0

ACHTUNG: Den Parameter “minimumfileagedays” habe ich nur zu Demozwecken auf 0 gesetzt!
Damit das System sofort mit der Deduplizierung beginnt, muss explizit der Deduplizierungsvorgang gestartet werden. Dafür gibt es über die Powershell zwei Möglichkeiten. Zum Einen kann man die Deduplizierung im Hintergrund – also asynchron – ausführen oder man führt die Deduplizierung synchron aus und muss in der Powershell auf die Fertigstellung warten.

Asynchrone Ausführung

Synchrone Ausführung

Während der der Deduplizierung kann man den Status sehr gut mit den cmdlets “get-dedupjob” und “get-dedupstatus” nachverfolgen.

Wenn das cmdlet “get-dedupjob” keinen aktiven Job mehr zurückliefert, ist die Deduplizierung beendet. Durch das cmdlet “get-dedupstatus” kann jetzt ermittelt werden, wie effektiv die Deduplizierung für das Laufwerk E: vorgenommen wurde.

Zusätzlich verzeichnet die Deduplizierung einen Ereignisprotokolleintrag mit der Event ID 6153, in dem die erfolgreiche Deduplizierung des Volumes E: gemeldet wird.

Ein Blick in den Explorer bestätigt die Angaben von “get-dedupstatus” und des Ereignisprotokolls.

Vor der Deduplizierung

Nach der Deduplizierung

Die Deduplizierung der Daten auf dem Testlaufwerk hat ca. 20 Minuten in Anspruch genommen. Für knappe 105GB ist das eine ordentliche Geschwindigkeit. Allerdings sollte man dabei nicht vergessen, dass es sich bei den Testdateien immer um die gleiche Datei handelte. Deshalb hatte die Deduplizierung bei dieser Aufgabe relativ leichtes Spiel.

Zusätzlich gibt es für die Fans der guten alten cmd.exe auch ein separates Kommandozeilenprogramm für die Verwaltung bzw. Konfiguration der Deduplizierung. Dieses Kommandozeilenprogramm kann über die Eingabe von “ddpcli” aufgerufen werden.

Wartung, Pflege und Überwachung der Deduplizierung

Zur Wartung und Pflege der Deduplizierung muss man als Administrator eigentlich nichts tun. Die notwendigen Wartungsarbeiten werden während der Installation automatisch als geplante Aufgaben auf dem betreffenden Fileserver angelegt. Im Standard handelt es sich dabei um drei geplante Aufgaben. Da ich in meiner Demoumgebung bei der Konfiguration des Volumes einen Zeitplan für die “Throughput Optimization” angelegt habe, wurde auf meinem Testsystem eine vierte Aufgabe hinzugefügt.

Für die Wartungsaufgaben werden im Wesentlichen zwei Aufgaben erstellt. Einmal handelt es sich um die Aufgabe “WeeklyGarbageCollection” und zum Anderen um die Aufgabe “WeeklyScrubbing”.  Beim Scrubbing wird eine Integritätsprüfung durchgeführt. Dadurch wird geprüft, ob alle Daten im Chunkstore konsistent sind. Sollten Inkonsistenzen festgestellt werden, dann wird durch diese geplante Aufgabe auch eine Reparatur versucht. Wer das Scrubbing interaktiv durchführen möchte, kann dies auch über die Powershell mit folgendem Kommando anstoßen:

start-dedupjob e: -type scrubbing

Nachdem das Kommando abgeschlossen ist, wird im Ereignisprotokoll ein Eintrag mit der Event ID 12803 verzeichnet. In der Meldung werden auch eventuelle Probleme gemeldet.

Bei der Garbage Collection wird, wie der Name schon sagt, der ganze Müll eingesammelt. Wenn zum Beispiel auf einem Laufwerk, auf dem die Deduplizierung aktiviert ist, eine Datei gelöscht wird, dann werden die referenzierten Elemente aus dem Chunkstore nicht gelöscht. Das führt dazu, dass nicht referenzierte Daten, die nicht mehr benötigt werden, auf dem Volume liegen bleiben . Deshalb ist es zwingend notwendig, dass diese Aufgabe regelmäßig ausgeführt wird. Wenn man auf einem Volume eine größere Löschaktion durchführt, kann man den GarbageCollection Prozess auch manuell ausführen.

start-dedupjob e: -type GarbageCollection

In meiner Testumgebung habe ich auf dem Datenlaufwerk eine größere Anzahl von Dateien gelöscht. Danach habe ich den Garbage Collection Prozess angestoßen. Auch hier findet man im Ereignisprotokoll einen entsprechenden Eintrag, der die erfolgreiche Ausführung der Garbage Collection meldet. Leider findet man in der Meldung keinerlei Hinweise auf die entfernten Daten.

Datensicherung von Volumes, die für die Deduplizierung aktiviert sind

Generell sollte es mit Datensicherungen keine Probleme geben, wenn ein Volume gesichert wird, auf dem die Deduplizierung aktiv ist. Allerdings gibt es einen Unterschied zwischen einer dateibasierten Sicherung, wie z.B. ein einfaches xcopy, und einer blockbasierten Sicherung, wie z.B. Windows Server Backup. Bei einer dateibasierten Sicherungsmethode muss die reale Größe aller Dateien gesichert werden. Das bedeutet, dass bei dieser Sicherungsmethode ein Sicherungslaufwerk in entsprechender Größe vorgehalten werden muss. Ein XCopy kann also nicht von der Deduplizierung profitieren. Bei der blockbasierten Methode sieht das ganz anders aus. Bei dieser Methode kann auch die Sicherung von der Deduplizierung profitieren, da diese Sicherungsmethode keine Dateien sichert, sondern nur die einzelnen Blöcke.

Fazit

Die Deduplizierung ist ein sehr nützliches Feature der neuen Servergeneration, die der Speicherplatzverschwendung in Unternehmen durchaus Einhalt gebieten kann. Der Administrator freut sich, dass er endlich wieder Platz auf den Fileservern bekommt und den Controller freut es, dass er der IT Abteilung das Budget kürzen kann :-) .
Trotz aller technischen Möglichkeiten sollte aber der erste Schritt für eine erfolgreiche Deduplizierung beim Anwender liegen, der mit Sinn und Verstand seine Daten auf einem Fileserver bzw. Netzlaufwerk ablegt und nicht durch “Jagen und Sammeln” von Daten die Fileserverressourcen unnütz verschwendet.

4 Comments
Andreas Oktober 19th, 2012

Wie sieht das mit Windows Lizenzen aus? Braucht man für jeden Benutzer eine eigene CAL? Habe bei den exomium Storageservern gelesen, dass man nur eine braucht?!

Frank Röder Oktober 19th, 2012

Das Feature benötigt keine CAL. Du brauchst nur die CAL für den Fileserverzugriff selber. Das war ja aber bei Windows schon immer so.

Viele Grüße

Frank

Beowulf Oktober 23rd, 2012

Verstehe ich das richtig das dieses Feature nur bei NTFS und nicht bei dem neuen ReFS, was ja mit 2012, kam vorhanden ist ?

Frank Röder Oktober 23rd, 2012

Hallo,

ja Du verstehst das richtig. Das Feature “Deduplication” ist nur unter NTFS verfügbar und nicht mit ReFS.

Viele Grüße

Frank

Leave a Reply

*