Parität mit Beschleunigung per Spiegelung

Speicherplätze können eine Fehlertoleranz für Daten mithilfe von zwei grundlegende Verfahren anbieten: Spiegelung und Parität. In Direkte Speicherplätze führt ReFS die Parität mit Beschleunigung per Spiegelung ein und ermöglicht Ihnen so das Erstellen von Volumes, die sowohl Spiegelungs- als auch Paritätsresilienz verwenden. Die Parität mit Beschleunigung per Spiegelung bietet kostengünstigen, platzsparenden Speicher ohne Leistungseinbußen.

Diagramm, das das Volume mit Parität mit Beschleunigung per Spiegelung darstellt.

Hintergrund

Spiegelungs- und Paritätsresilienzschemata weisen grundlegend unterschiedliche Speicher- und Leistungsmerkmale auf:

  • Mit Spiegelungsresilienz können Benutzer schnelle Schreibvorgänge erzielen, doch das Replizieren der Daten für jede Kopie ist nicht platzsparend.
  • Bei der Parität muss andererseits für jeden Schreibvorgang die Parität neu berechnet werden, worunter die Leistung wahlfreier Schreibvorgänge leidet. Die Parität ermöglicht dem Benutzer allerdings, seine Daten mit einer größeren Speicherplatzeffizienz zu speichern. Weitere Informationen finden Sie unter Fehlertoleranz und Speichereffizienz in „Direkte Speicherplätze“.

Daher ist die Spiegelung dazu prädisponiert, leistungsstarke Speicherung zu ermöglichen, während die Parität eine bessere Nutzung der Speicherkapazität bietet. Bei der Parität mit Beschleunigung per Spiegelung nutzt ReFS die Vorteile der einzelnen Resilienztypen, um durch die Kombination der beiden Resilienzschemata innerhalb eines einzelnen Volumes sowohl kapazitätseffiziente als auch leistungsstarke Speicherung zu bieten.

Datenrotation bei Parität mit Beschleunigung per Spiegelung

ReFS rotiert aktiv Daten zwischen Spiegelung und Parität, und zwar in Echtzeit. Dadurch können eingehende Schreibvorgänge schnell auf die Spiegelung geschrieben, anschließend auf die Parität rotiert und so auf effiziente Weise gespeichert werden. So werden eingehende E/A-Vorgänge schnell in der Spiegelung bearbeitet, während kalte Daten effizient in der Parität gespeichert werden. Dies bietet gleichzeitig eine optimale Leistung und kostengünstigen Speicher auf demselben Datenträger.

Um Daten zwischen Spiegelung und Parität zu rotieren, teilt ReFS das Volume logisch in Regionen von 64 MiB ein, der Einheit der Rotation. Die folgende Abbildung zeigt ein in Regionen unterteiltes Volume mit Parität mit Beschleunigung per Spiegelung.

Diagramm eines Volumes mit Parität mit Beschleunigung per Spiegelung mit Speichercontainern.

ReFS beginnt, vollständige Regionen von der Spiegelung zur Parität zu rotieren, sobald die Spiegelebene eine angegebene Kapazität erreicht hat. Anstatt die Daten sofort von der Spiegelung zur Parität zu verschieben, wartet ReFS und speichert Daten so lange wie möglich in der Spiegelung, was ReFS ermöglicht, auch weiterhin eine optimale Leistung für die Daten zu bieten (siehe „E/A-Leistung“ weiter unten).

Wenn Daten von der Spiegelung zur Parität verschoben werden, werden die Daten gelesen, die Paritätscodierung berechnet und die Daten anschließend in die Parität geschrieben. Die folgende Animation zeigt dies mithilfe eines Drei-Wege-Spiegelung-Bereichs, der während der Rotation in einen löschcodierten Bereich konvertiert wird:

Animation der Rotation der Parität mit Beschleunigung per Spiegelung.

E/A bei Parität mit Beschleunigung per Spiegelung

E/A-Verhalten

Schreibvorgänge: Eingehende Schreibvorgänge von ReFS-Diensten werden auf drei verschiedene Arten ausgeführt:

  1. Schreibvorgänge auf Spiegelungen:

    • 1a. Wenn der eingehende Schreibvorgang vorhandene Daten in der Spiegelung ändert, ändert ReFS die vorhandenen Daten.
    • 1b. Wenn der eingehende Schreibvorgang ein neuer Schreibvorgang ist und ReFS erfolgreich genügend freien Speicherplatz in der Spiegelung für den Schreibvorgang findet, schreibt ReFS in die Spiegelung. Screenshot: Der ReFS-Dienst schreibt in die Spiegelung.
  2. Schreibvorgänge in die Spiegelung, neu von der Parität zugewiesen:

    Wenn der eingehende Schreibvorgang Daten in der Parität ändert und ReFS erfolgreich genügend freien Speicherplatz für den eingehenden Schreibvorgang in der Spiegelung findet, macht ReFS zunächst die vorherigen Daten in der Parität ungültig und schreibt sie anschließend in die Spiegelung. Dieses Ungültigmachen ist ein schneller und kostengünstiger Metadatenvorgang, der nennenswert dazu beiträgt, die Leistung der Schreibvorgänge für die Parität zu verbessern. Screenshot: Der ReFS-Dienst schreibt in die Spiegelung, neu zugeordnet von der Parität.

  3. Schreibvorgänge in die Parität:

    Wenn ReFS nicht genügend freien Speicherplatz in der Spiegelung finden kann, schreibt ReFS neue Daten in die Parität oder ändert direkt vorhandene Daten in der Parität. Der Abschnitt „Leistungsoptimierungen“ im Folgenden enthält Richtlinien, um die Schreibvorgänge in die Parität zu minimieren. Screenshot: Der ReFS-Dienst schreibt in die Parität.

Lesevorgänge: ReFS liest direkt aus der Ebene, die die relevanten Daten enthält. Wenn die Parität mit HDDs erstellt wird, wird der Cache in „Direkte Speicherplätze“ diese Daten zur Beschleunigung zukünftiger Lesevorgänge zwischenspeichern.

Hinweis

Lesevorgänge veranlassen ReFS nie, Daten auf die Spiegelebene zurück zu rotieren.

E/A-Leistung

Schreibvorgänge: Jede Art von Schreibvorgang, die oben beschrieben wurde, verfügt über eigene Leistungsmerkmale. Grob gesagt sind Schreibvorgänge auf der Spiegelebene viel schneller als neu zugeordnete Schreibvorgänge, und neu zugeordnete Schreibvorgänge sind deutlich schneller als Schreibvorgänge, die direkt auf Paritätsebene ausgeführt werden. Diese Beziehung wird durch die folgende Ungleichheit veranschaulicht:

  • Spiegelebene > neu zugeordnete Schreibvorgänge >> Paritätsebene

Lesevorgänge: Es gibt keine nennenswerten Leistungseinbußen beim Lesen aus der Parität:

  • Wenn Spiegelung und Parität mit dem gleichen Medientyp erstellt werden, ist die Leistung der Lesevorgänge gleichwertig.
  • Wenn Spiegelung und Parität nicht mit dem gleichen Medientyp erstellt werden – z. B. gespiegelte SSDs, Paritäts-HDDs – dient der Cache in den direkten Speicherplätzen als Cache für heiße Daten, um alle Lesevorgänge in der Parität zu beschleunigen.

ReFS-Komprimierung

Die Komprimierung für ReFS ist ab Windows Server 2019 verfügbar, wodurch sich die Leistung für zu mindestens 90 Prozent gefüllte Volumes mit durch Spiegelung beschleunigter Parität erheblich verbessert.

Hintergrund: Wenn vorher Volumes mit Parität mit Beschleunigung per Spiegelung voll wurden, hat dies die Leistung dieser Volumes oft beeinträchtigt. Die Leistung nimmt ab, da die heißen und kalten Daten des gesamten Volumes im Laufe der Zeit vermischt werden. Dies bedeutet, dass weniger heiße Daten in der Spiegelung gespeichert werden können, da kalte Daten in der Spiegelung den Speicherplatz belegen, der andernfalls von heißen Daten verwendet werden könnte. Das Speichern von heißen Daten in der Spiegelung ist entscheidend, um die optimale Leistung aufrechtzuerhalten, da direkte Schreibvorgänge in die Spiegelung schneller als das neue Zuordnen von Schreibvorgängen sind, und die Größenordnungen schneller als direkte Schreibvorgänge in die Parität sind. Daher wirkt sich das Speichern kalter Daten in der Spiegelung negativ auf die Leistung aus, da es die Wahrscheinlichkeit verringert, dass ReFS direkte Schreibvorgänge in die Spiegelung durchführen kann.

Die ReFS-Komprimierung behandelt diese Leistungsprobleme durch das Freigeben von Speicherplatz in der Spiegelung für heiße Daten. Eine Komprimierung konsolidiert zuerst alle Daten – von Spiegelung und Parität – in der Parität. Dies reduziert die Fragmentierung des Volumes und erhöht den adressierbaren Speicherplatz in der Spiegelung. Was noch wichtiger ist: Dieser Prozess ermöglicht ReFS, heiße Daten wieder in der Spiegelung zu konsolidieren:

  • Wenn neue Schreibvorgänge eingehen, werden diese in der Spiegelung bearbeitet. Die neu geschriebenen heißen Daten befinden sich daher in der Spiegelung.
  • Beim Ändern des Schreibvorgangs auf Daten in der Parität führt ReFS einen neu zugeordneten Schreibvorgang durch, damit dieser Schreibvorgang ebenfalls in der Spiegelung bearbeitet wird. Aus diesem Grund werden heiße Daten, die bei der Komprimierung in die Parität verschoben wurden, erneut der Spiegelung zugewiesen.

Leistungsoptimierungen

Wichtig

Schreibintensive VHDs sollten in verschiedenen Unterverzeichnissen platziert werden. Dies liegt daran, dass ReFS Metadatenänderungen auf der Ebene eines Verzeichnisses und seiner Dateien schreibt. Wenn Sie schreibintensive Dateien also auf Verzeichnisse verteilen, sind Metadatenvorgänge kleiner und werden parallel ausgeführt, wodurch die Latenz für Apps reduziert wird.

Leistungsindikatoren

Mit Leistungsindikatoren wertet ReFS die Leistung der Parität mit Beschleunigung per Spiegelung aus.

  • Wie oben im Abschnitt zu Schreibvorgängen in die Parität beschrieben, schreibt ReFS direkt in die Parität, wenn kein freier Speicherplatz mehr in der Spiegelung gefunden wird. Das tritt in der Regel dann auf, wenn die gespiegelte Ebene schneller gefüllt wird, als die ReFS Daten in die Parität rotieren kann. Anders ausgedrückt, kann die ReFS-Rotation nicht mit der Aufnahme der Änderungsrate mithalten. Die folgenden Leistungsindikatoren ermitteln, wann ReFS direkt in die Parität schreibt:

    # Windows Server 2016
    ReFS\Data allocations slow tier/sec
    ReFS\Metadata allocations slow tier/sec
    
    # Windows Server 2019
    ReFS\Allocation of Data Clusters on Slow Tier/sec
    ReFS\Allocation of Metadata Clusters on Slow Tier/sec
    
  • Wenn diese Indikatoren ungleich null (0) sind, bedeutet dies, dass ReFS die Daten nicht schnell genug aus der Spiegelung rotiert. Damit dies vermieden wird, kann die Rotationsaggressivität geändert oder die Größe der gespiegelten Ebene erhöht werden.

Rotationsaggressivität

ReFS beginnt mit dem Rotieren der Daten, wenn die Spiegelung einen angegebenen Kapazitätsschwellenwert erreicht hat.

  • Höhere Werte des Rotationsschwellenwerts führen dazu, dass ReFS die Daten länger in der Spiegelebene beibehält. Heiße Daten in der Spiegelebene zu lassen ist für die Leistung optimal, doch ReFS ist nicht in der Lage, große E/A-Mengen effektiv zu verarbeiten.
  • Niedrigere Werte ermöglichen ReFS, proaktiv Daten auszulagern und eingehende E/A-Prozesse besser zu verarbeiten. Dies gilt für Workloads mit hoher Aufnahmekapazität wie die Archivierungsspeicherung. Niedrigere Werte können jedoch die Leistung für allgemeine Workloads beeinträchtigen. Das unnötige Rotieren von Daten aus der Spiegelebene führt zu Leistungseinbußen.

ReFS führt einen einstellbaren Parameter für diesen Schwellenwert ein, der mit einem Registrierungsschlüssel konfiguriert werden kann. Dieser Registrierungsschlüssel muss für jeden Knoten in einer Bereitstellung mit direkten Speicherplätzen konfiguriert werden, und ein Neustart ist erforderlich, damit die Änderungen wirksam werden.

  • Schlüssel: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
  • ValueName (DWORD): DataDestageSsdFillRatioThreshold
  • ValueType: Prozentsatz

Wenn dieser Registrierungsschlüssel nicht festgelegt ist, verwendet ReFS einen Standardwert von 85 %. Dieser Standardwert wird für die meisten Bereitstellungen empfohlen. Werte unter 50 % werden nicht empfohlen. Der folgende PowerShell-Befehl veranschaulicht, wie dieser Registrierungsschlüssel mit dem Wert 75 % erstellt werden kann:

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75

Um diesen Registrierungsschlüssel auf allen Knoten in einer Bereitstellung mit direkten Speicherplätzen zu konfigurieren, können Sie den folgenden PowerShell-Befehl ausführen:

$Nodes = 'S2D-01', 'S2D-02', 'S2D-03', 'S2D-04'
Invoke-Command $Nodes {Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75}

Vergrößern der gespiegelten Ebene

Das Vergrößern der gespiegelten Ebene ermöglicht ReFS, einen größeren Teil des Arbeitssatzes in der Spiegelung beizubehalten. Dies verbessert die Wahrscheinlichkeit, dass ReFS direkt in die Spiegelung schreiben kann, was zur Verbesserung der Leistung führt. Die folgenden PowerShell-Cmdlets veranschaulichen, wie Sie die gespiegelte Ebene vergrößern können:

Resize-StorageTier -FriendlyName "Performance" -Size 20GB
Resize-StorageTier -InputObject (Get-StorageTier -FriendlyName "Performance") -Size 20GB

Tipp

Stellen Sie sicher, dass Sie die Größe der Partition und des Volumes ändern, nachdem Sie die Größe von StorageTier geändert haben. Weitere Informationen und Beispiele finden Sie unter Erweitern von Volumes in Azure Stack HCI- und Windows Server-Clustern.

Erstellen eines Volumes mit Parität mit Beschleunigung per Spiegelung

Das folgende PowerShell-Cmdlet erstellt ein Volume mit Parität mit Beschleunigung per Spiegelung mit einem Spiegelung:Parität-Verhältnis von 20:80. Diese Konfiguration wird für die meisten Workloads empfohlen. Weitere Informationen und Beispiele finden Sie unter Erstellen von Volumes in „Direkte Speicherplätze“.

New-Volume -FriendlyName "TestVolume" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "StoragePoolName" -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes 200GB, 800GB

Zusätzliche Referenzen