Erweiterte Einstellungen für die Datendeduplizierung

Gilt für Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI (Version 21H2 und 20H2)

In diesem Dokument wird beschrieben, wie Sie die Einstellungen für die Datendeduplizierung ändern können. Für empfohlene Workloads sollten die Standardeinstellungen ausreichend sein. Der Hauptgrund für das Ändern dieser Einstellungen ist das Verbessern der Leistung bei der Datendeduplizierung bei anderen Arten von Workloads.

Ändern der Auftragszeitpläne für die Datendeduplizierung

Die standardmäßigen Auftragszeitpläne für die Datendeduplizierung sind so ausgelegt, dass sie gut für empfohlene Workloads funktionieren und so unaufdringlich wie möglich sind (ausgenommen der Auftrag PriorityOptimization, der für den Verwendungstyp Sicherung aktiviert ist). Wenn Workloads einen großen Ressourcenbedarf haben, kann sichergestellt werden, dass Aufträge nur zu Leerlaufzeiten ausgeführt werden oder die Menge der Systemressourcen verringert oder erhöht wird, die der Datendeduplizierungsauftrag nutzen darf.

Ändern eines Zeitplans für die Datendeduplizierung

Datendeduplizierungsaufträge können über den Windows-Aufgabenplanungsdienst geplant und im Pfad „Microsoft\Windows\Deduplication“ angezeigt und bearbeitet werden. Zur Datendeduplizierung gehören mehrere Cmdlets, die die Planung erleichtern.

Am häufigsten wird der Zeitpunkt der Ausführung von Datendeduplizierungsaufträgen geändert, um sicherzustellen, dass Aufträge außerhalb der Geschäftszeiten ausgeführt werden. Im folgenden Beispiel wird Schritt für Schritt gezeigt, wie Sie den Zeitplan für die Datendeduplizierung in einem einfachen Szenario ändern: ein hyperkonvergenter Hyper-V-Host, der an Wochenenden und wochentags ab 19:00 Uhr im Leerlauf ist. Um den Zeitplan zu ändern, führen Sie die folgenden PowerShell-Cmdlets im Kontext eines Administrators aus.

  1. Deaktivieren Sie die stündlich geplanten Aufträge des Typs Optimization.

     Set-DedupSchedule -Name BackgroundOptimization -Enabled $false
     Set-DedupSchedule -Name PriorityOptimization -Enabled $false
    
  2. Entfernen Sie die derzeit geplanten Aufträge GarbageCollection und IntegrityScrubbing.

     Get-DedupSchedule -Type GarbageCollection | ForEach-Object { Remove-DedupSchedule -InputObject $_ }
     Get-DedupSchedule -Type Scrubbing | ForEach-Object { Remove-DedupSchedule -InputObject $_ }
    
  3. Erstellen Sie einen Optimierungsauftrag, der um 19:00 Uhr mit hoher Priorität ausgeführt wird und alle auf dem System verfügbaren CPUs und den gesamten Arbeitsspeicher nutzt.

     New-DedupSchedule -Name "NightlyOptimization" -Type Optimization -DurationHours 11 -Memory 100 -Cores 100 -Priority High -Days @(1,2,3,4,5) -Start (Get-Date "2016-08-08 19:00:00")
    

    Hinweis

    Der date-Teil von System.Datetime, der für -Start angegeben ist, ist irrelevant (solange die Angabe in der Vergangenheit liegt), doch der time-Teil gibt an, wann der Auftrag gestartet werden soll.

  4. Erstellen Sie einen wöchentlichen Garbage Collection-Auftrag, der samstags um 7:00 Uhr mit hoher Priorität ausgeführt wird und alle auf dem System verfügbaren CPUs und den gesamten Arbeitsspeicher nutzt.

     New-DedupSchedule -Name "WeeklyGarbageCollection" -Type GarbageCollection -DurationHours 23 -Memory 100 -Cores 100 -Priority High -Days @(6) -Start (Get-Date "2016-08-13 07:00:00")
    
  5. Erstellen Sie einen wöchentlichen Integritätsbereinigungsauftrag (Integrity Scrubbing), der samstags um 7:00 Uhr mit hoher Priorität ausgeführt wird und alle auf dem System verfügbaren CPUs und den gesamten Arbeitsspeicher nutzt.

     New-DedupSchedule -Name "WeeklyIntegrityScrubbing" -Type Scrubbing -DurationHours 23 -Memory 100 -Cores 100 -Priority High -Days @(0) -Start (Get-Date "2016-08-14 07:00:00")
    

Verfügbare Einstellungen für den gesamten Auftrag

Sie können die folgenden Einstellungen für neue oder geplante Datendeduplizierungsaufträge wechseln:

Parametername Definition Zulässige Werte Gründe für das Festlegen dieses Werts
type Der Typ des Auftrags, der geplant werden soll
  • Optimization
  • GarbageCollection
  • Scrubbing (Bereinigung)
Dieser Wert ist erforderlich, da es sich um den Typ des Auftrags handelt, der geplant werden soll. Dieser Wert kann nicht geändert werden, nachdem die Aufgabe geplant wurde.
Priorität Die Systempriorität des geplanten Auftrags
  • Hoch
  • Normal
  • Niedrig
Dieser Wert hilft dem System beim Zuordnen von CPU-Zeit. High benötigt mehr CPU-Zeit, low weniger.
Tage Die Tage, an denen der Auftrag geplant ist Eine Gruppe ganzer Zahlen von 0 bis 6, die die Tage der Woche darstellen:
  • 0 = Sonntag
  • 1 = Montag
  • 2 = Dienstag
  • 3 = Mittwoch
  • 4 = Donnerstag
  • 5 = Freitag
  • 6 = Samstag
Geplante Aufgaben müssen an mindestens einem Tag ausgeführt werden.
Kerne Der Prozentsatz der Kerne auf dem System, den ein Auftrag verwenden soll Ganze Zahlen von 0 bis 100 (Prozentsatz) Dient zum Steuern, welchen Einfluss ein Auftrag auf die Rechenressourcen des Systems hat
DurationHours Die maximale Anzahl von Stunden, die ein Auftrag ausgeführt werden darf Positive ganze Zahlen Dient zum Verhindern, dass die Ausführung einer Workload den vorgegebenen Zeitrahmen überschreitet
Aktiviert Gibt an, ob der Auftrag ausgeführt wird True/false Dient zum Deaktivieren eines Auftrags, ohne ihn zu entfernen
Vollständig Dient zum Planen eines vollständigen Garbage Collection-Auftrags Schalter (True/False) Standardmäßig ist jeder vierte Auftrag ein vollständiger Garbage Collection-Auftrag. Mit diesem Schalter können Sie eine häufigere Ausführung vollständiger Garbage Collection-Aufträge planen.
InputOutputThrottle Gibt den Umfang der Eingabe-/Ausgabedrosselung an, die auf den Auftrag angewendet wird Ganze Zahlen von 0 bis 100 (Prozentsatz) Durch die Drosselung wird sichergestellt, dass Aufträge andere E/A-intensive Prozesse nicht beeinträchtigen.
Arbeitsspeicher Der Prozentsatz des Arbeitsspeichers auf dem System, den ein Auftrag verwenden soll Ganze Zahlen von 0 bis 100 (Prozentsatz) Dient zum Steuern, welchen Einfluss der Auftrag auf die Arbeitsspeicherressourcen auf dem System hat
Name Der Name des geplanten Auftrags String Ein Auftrag muss einen eindeutig identifizierbaren Namen haben.
ReadOnly Gibt an, dass der Bereinigungsauftrag gefundene Beschädigungen verarbeitet und meldet, aber keine Reparaturaktionen durchführt Schalter (True/False) Sie müssen Dateien manuell wiederherstellen, die sich in fehlerhaften Bereichen des Datenträgers befinden.
Start Gibt die Startzeit des Auftrags an System.DateTime Der date-Teil von System.Datetime, der für Start angegeben ist, ist irrelevant (solange die Angabe in der Vergangenheit liegt), doch der time-Teil gibt an, wann der Auftrag gestartet werden soll.
StopWhenSystemBusy Gibt an, ob die Datendeduplizierung beendet werden soll, wenn das System ausgelastet ist Schalter (True/False) Mithilfe dieses Schalters können Sie das Verhalten bei der Datendeduplizierung steuern. Dies ist besonders wichtig, wenn Sie eine Datendeduplizierung während der Geschäftszeiten ausführen möchten.

Ändern der volumeweiten Einstellungen für die Datendeduplizierung

Umschalten der Volumeeinstellungen

Sie können die volumeweiten Standardeinstellungen für die Datendeduplizierung über den Verwendungstyp festlegen, den Sie auswählen, wenn Sie eine Deduplizierung für ein Volume aktivieren. Die Datendeduplizierung umfasst Cmdlets, die volumeweite Einstellungen erleichtern:

Die Hauptgründe für das Ändern der Volumeeinstellungen für den ausgewählten Verwendungstyp sind das Verbessern der Leseleistung für bestimmte Dateien (z. B. Multimedia- oder andere Dateitypen, die bereits komprimiert sind) oder das Optimieren der Datendeduplizierung für Ihre spezifische Workload. Im folgenden Beispiel wird veranschaulicht, wie die Volumeeinstellungen für die Datendeduplizierung für eine Workload geändert werden, die sehr einer Workload eines allgemeinen Dateiservers ähnelt, aber große Dateien aufweist, die sich häufig ändern.

  1. Anzeigen der aktuellen Volumeeinstellungen für das freigegebene Clustervolume 1.

     Get-DedupVolume -Volume C:\ClusterStorage\Volume1 | Select *
    
  2. Aktivieren Sie „OptimizePartialFiles“ für das freigegebene Clustervolume 1, sodass die Richtlinie „MinimumFileAge“ für Abschnitte der Datei statt für die gesamte Datei gilt. Dies stellt sicher, dass die Mehrzahl der Dateien optimiert wird, obwohl sich Abschnitte der Datei regelmäßig ändern.

     Set-DedupVolume -Volume C:\ClusterStorage\Volume1 -OptimizePartialFiles
    

Verfügbare volumeweite Einstellungen

Einstellungsname Definition Zulässige Werte Gründe für das Ändern dieses Werts
ChunkRedundancyThreshold Gibt an, wie häufig ein Block referenziert wird, bevor ein Block in den Abschnitt „Hotspot“ des Blockspeichers dupliziert wird. Der Nutzen des Abschnitts „Hotspot“ ist, dass diese sehr aktiven (engl. hot) Blöcke, die häufig referenziert werden, mehrere Zugriffspfade haben, um die Zugriffszeit zu verbessern. Positive ganze Zahlen Der Hauptgrund zum Ändern dieses Werts ist das Erhöhen der Einsparungsrate für Volumes mit hoher Duplizierung. Im Allgemeinen ist der Standardwert (100) die empfohlene Einstellung, die Sie nicht ändern sollten.
ExcludeFileType Dateitypen, die von der Optimierung ausgeschlossen sind Gruppe von Dateinamenerweiterungen Einige Dateitypen, insbesondere Multimedia- oder andere Dateien, die bereits komprimiert sind, profitieren nicht besonders von einer Optimierung. Mit dieser Einstellung können Sie konfigurieren, welche Dateitypen ausgeschlossen werden.
ExcludeFolder Gibt die Ordnerpfade an, die für die Optimierung nicht berücksichtigt werden sollen Gruppe von Ordnerpfaden Wenn Sie die Leistung verbessern oder verhindern möchten, dass Inhalte in bestimmten Pfaden optimiert werden, können Sie bestimmte Pfade auf dem Volume von der Optimierung ausschließen.
InputOutputScale Gibt die Ebene der E/A-Parallelisierung (E/A-Warteschlangen) für die Datendeduplizierung an, die während eines Nachbearbeitungsauftrags auf einem Volume verwendet werden soll Positive ganze Zahlen von 1 bis 36 Der Hauptgrund zum Ändern dieses Werts ist das Verringern der Auswirkung auf die Leistung einer hohen E/A-Workload, indem die Anzahl der E/A-Warteschlangen eingeschränkt wird, die für die Datendeduplizierung auf einem Volume verwendet werden darf. Beachten Sie, dass eine vom Standard abweichende Änderung dieser Einstellung dafür sorgen kann, dass Nachbearbeitungsaufträge für die Datendeduplizierung langsam erfolgen.
MinimumFileAgeDays Anzahl der Tage nach Erstellung der Datei, ehe die Datei für die Optimierungsrichtlinie berücksichtigt wird. Positive ganze Zahlen (einschließlich null) Bei den Verwendungstypen Standard und HyperV wird dieser Wert auf 3 festgelegt, um die Leistung für sehr aktive oder zuletzt erstellte Dateien zu maximieren. Möglicherweise möchten Sie dies ändern, wenn die Datendeduplizierung aggressiver erfolgen soll oder Sie die zusätzliche Latenz aufgrund der Deduplizierung in Kauf nehmen.
MinimumFileSize Minimale Größe, die eine Datei haben muss, um von der Optimierungsrichtlinie berücksichtigt zu werden Positive ganze Zahlen (Bytes) größer als 32 KB Der Hauptgrund zum Ändern dieses Werts ist das Ausschließen kleiner Dateien mit eingeschränktem Optimierungsnutzen zum Einsparen von Rechenzeit.
NoCompress Gibt an, ob die Blöcke komprimiert werden sollen, bevor sie im Blockspeicher abgelegt werden Wahr/falsch Einige Arten von Dateien, insbesondere Multimediadateien und bereits komprimierte Dateitypen, lassen sich möglicherweise nicht weiter komprimieren. Mit dieser Einstellung können Sie die Komprimierung für alle Dateien auf dem Volume deaktivieren. Dies ist ideal, wenn Sie ein Dataset mit vielen Dateien optimieren, die bereits komprimiert sind.
NoCompressionFileType Dateitypen, deren Blöcke nicht komprimiert werden sollen, bevor sie im Blockspeicher abgelegt werden Gruppe von Dateinamenerweiterungen Einige Arten von Dateien, insbesondere Multimediadateien und bereits komprimierte Dateitypen, lassen sich möglicherweise nicht weiter komprimieren. Diese Einstellung ermöglicht das Deaktivieren der Komprimierung für diese Dateien, was CPU-Ressourcen schont.
OptimizeInUseFiles Falls aktiviert, werden Dateien mit aktiven Handles von der Optimierungsrichtlinie berücksichtigt. True/false Aktivieren Sie diese Einstellung, wenn Ihre Workload Dateien für längere Zeit geöffnet hält. Wenn diese Einstellung nicht aktiviert ist, würde eine Datei nie optimiert werden, wenn die Workload einen offenen Handle dafür hat, auch wenn nur gelegentlich Daten am Ende angefügt werden.
OptimizePartialFiles Falls aktiviert, gilt der „MinimumFileAge“-Wert für Segmente einer Datei und nicht für die gesamte Datei. True/false Aktivieren Sie diese Einstellung, wenn Ihre Workload mit großen, häufig bearbeiteten Dateien arbeitet, bei denen ein Großteil des Dateiinhalts unverändert bleibt. Wenn diese Einstellung nicht aktiviert ist, würden diese Dateien nie optimiert werden, da sie weiter geändert werden, auch wenn der Großteil des Dateiinhalts für eine Optimierung bereit ist.
Überprüfung Wenn, falls aktiviert, der Hash eines Blocks einem Block entspricht, der bereits im Blockspeicher enthalten ist, werden die Blöcke byteweise verglichen, um sicherzustellen, dass sie identisch sind. True/false Dies ist ein Integritätsfeature, das sicherstellt, dass der Hashalgorithmus, der die Blöcke vergleicht, nicht den Fehler macht, zwei Datenblöcke zu vergleichen, die eigentlich unterschiedlich sind, aber denselben Hash haben. In der Praxis ist es sehr unwahrscheinlich, dass dies jemals passiert. Das Aktivieren der Überprüfungsfunktion bedeutet für den Optimierungsauftrag einen beträchtlichen Mehraufwand.

Ändern der systemweiten Einstellungen für die Datendeduplizierung

Für die Datendeduplizierung gibt es zusätzliche systemweite Einstellungen, die über die Registrierung konfiguriert werden können. Diese Einstellungen gelten für alle Aufträge und Volumes, die auf dem System ausgeführt werden. Die Bearbeitung der Registrierung muss äußerst umsichtig erfolgen.

Angenommen, Sie möchten die vollständige Garbage Collection deaktivieren. Weitere Informationen dazu, warum dies für Ihr Szenario hilfreich sein kann, finden Sie in den häufig gestellten Fragen. So bearbeiten Sie die Registrierung mit PowerShell

  • Wenn die Datendeduplizierung in einem Cluster ausgeführt wird:

      Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\ddpsvc\Settings -Name DeepGCInterval -Type DWord -Value 0xFFFFFFFF
      Set-ItemProperty -Path HKLM:\CLUSTER\Dedup -Name DeepGCInterval -Type DWord -Value 0xFFFFFFFF
    
  • Wenn die Datendeduplizierung nicht in einem Cluster ausgeführt wird:

      Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\ddpsvc\Settings -Name DeepGCInterval -Type DWord -Value 0xFFFFFFFF
    

Verfügbare systemweite Einstellungen

Einstellungsname Definition Zulässige Werte Gründe für diese Änderung
WlmMemoryOverPercentThreshold Mithilfe dieser Einstellung können Aufträge mehr Arbeitsspeicher nutzen, als eigentlich für die Datendeduplizierung verfügbar ist. Die Einstellung 300 bedeutet beispielsweise, dass der Auftrag das Dreifache des zugewiesenen Arbeitsspeichers nutzen muss, um abgebrochen zu werden. Positive ganze Zahlen (der Wert 300 bedeutet 300 % oder das Dreifache) Wenn es eine andere Aufgabe gibt, die angehalten wird, wenn die Datendeduplizierung mehr Arbeitsspeicher verwendet
DeepGCInterval Diese Einstellung konfiguriert das Intervall, in dem herkömmliche Garbage Collection-Aufträge vollständige Garbage Collection-Aufträge werden. Die Einstellung „n“ bedeutet, dass jeder nte Auftrag ein vollständiger Garbage Collection-Auftrag ist. Beachten Sie, dass die vollständige automatische Speicherbereinigung (unabhängig vom Registrierungswert) für Volumes mit dem Verwendungstyp „Sicherung“ immer deaktiviert ist. Start-DedupJob -Type GarbageCollection -Full kann verwendet werden, wenn auf einem Sicherungsvolume die vollständige automatische Speicherbereinigung gewünscht wird. Ganze Zahlen (-1 bedeutet deaktiviert) Siehe diese häufig gestellte Frage

Häufig gestellte Fragen

Ich habe eine Einstellung für die Datendeduplizierung geändert, und jetzt sind die Aufträge langsam oder werden nicht beendet, oder die Leistung meines Workloads hat sich verringert. Warum? Mit diesen Einstellungen können Sie den Ablauf der Datendeduplizierung sehr gut steuern. Nutzen Sie sie überlegt, und überwachen Sie die Leistung.

Ich möchte jetzt sofort einen Datendeduplizierungsauftrag ausführen, ohne vorher einen neuen Zeitplan zu erstellen. Geht das?Ja, alle Aufgaben können manuell ausgeführt werden.

Was ist der Unterschied zwischen vollständiger und regulärer Garbage Collection? Es gibt zwei Arten von Garbage Collection:

  • Für eine herkömmliche Garbage Collection wird ein statistischer Algorithmus verwendet, um große nicht referenzierte Datenblöcke zu suchen, die ein bestimmtes Kriterium (niedriger Wert für Arbeitsspeicher und IOPS) erfüllen. Bei der herkömmlichen Garbage Collection wird ein Blockspeicher erst komprimiert, wenn ein Mindestanteil der Blöcke nicht referenziert wird. Dieser Typ der Garbage Collection erfolgt wesentlich schneller und verwendet weniger Ressourcen als eine vollständige Garbage Collection. Der Standardzeitplan sieht eine Ausführung des herkömmlichen Garbage Collection-Auftrags einmal pro Woche vor.
  • Bei der vollständigen Garbage Collection wird wesentlich gründlicher nach nicht referenzierten Blöcken gesucht und mehr Speicherplatz auf dem Datenträger freigegeben. Bei der vollständigen Garbage Collection werden alle Container komprimiert, auch wenn nur ein einzelner Block im Container nicht referenziert wird. Bei der vollständigen Garbage Collection wird zudem Speicherplatz freigeben, der ggf. in Gebrauch war, als während eines Optimierungsauftrags ein Absturz oder Stromausfall aufgetreten ist. Vollständige Garbage Collection-Aufträge stellen 100 % des verfügbaren Speicherplatzes wieder her, der auf einem deduplizierten Volume wiederhergestellt werden kann. Dazu sind allerdings im Vergleich mit einem herkömmlichen Garbage Collection-Auftrag mehr Zeit und Systemressourcen erforderlich. Beim vollständige Garbage Collection-Auftrag werden zumeist bis zu 5 % mehr der nicht referenzierten Daten gefunden und wieder freigegeben als bei einem herkömmlichen Garbage Collection-Auftrag. Jeder vierte geplante Garbage Collection-Auftrag ist ein vollständiger Garbage Collection-Auftrag.

Warum sollte ich die vollständige automatische Speicherbereinigung (Garbage Collection) deaktivieren?

  • Die Garbage Collection kann sich negativ auf die Lebensdauer der Schattenkopien des Volumes und die Größe inkrementeller Sicherungen auswirken. Bei Workloads, die hohe Änderungsraten haben oder E/A-intensiv sind, kann durch vollständige Garbage Collection-Aufträge eine Verschlechterung der Leistung auftreten.
  • Sie können einen vollständigen Garbage Collection-Auftrag manuell in PowerShell ausführen, um Speicherverluste zu beheben, wenn Sie wissen, dass Ihr System abgestürzt ist.