Grundlagen und Bereitstellung des persistenten Speichers

Gilt für: Azure Stack HCI, Versionen 22H2 und 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 10

Ein persistenter Speicher (oder PMEM) ist eine neuartige Speichertechnologie, bei der die Inhalte im Rahmen von Einschaltzyklen abgespeichert werden und die als Speicher der obersten Ebene verwendet werden kann. Daher wird ein PMEM auch als „Speicherklassenspeicher“ oder als SCM (Storage-Class Memory) bezeichnet. Dieser Artikel enthält Details zu persistenten Speichern und Informationen darüber, wie Sie diese als oberste Speicherebene in Azure Stack HCI und Windows Server bereitstellen.

Was ist ein persistenter Speicher?

Ein persistenter Speicher ist eine Art nicht-flüchtiges Medium, das in einen standardmäßigen DIMM(Memory)-Slot passt. Er ist langsamer als DRAM, ermöglicht aber einen höheren Durchsatz als SSD und NVMe. Im Vergleich zu DRAM verfügen PMEM-Module über wesentlich größere Kapazitäten und sind pro GB kostengünstiger, dabei allerdings immer noch teurer als NVMe. Der Speicherinhalt bleibt auch dann erhalten, wenn das System bei einem unerwarteten Stromausfall, einem vom Benutzer initiierten Herunterfahren oder einem Systemabsturz ausfällt. Somit können Sie PMEM-Module als ultraschnellen, persistenten Speicher verwenden.

Azure Stack HCI und Windows Server 2019 unterstützen die Verwendung eines persistenten Speichers als Cache- oder Kapazitätslaufwerk. Im Hinblick auf die Preise bietet ein persistenter Speicher den größten Nutzen, wenn er entweder als Cache oder als dedizierter Speicher für eine kleine Menge von Speicherzuordnungsdaten eingesetzt wird. In den meisten Fällen werden PMEM-Laufwerke automatisch als Cachelaufwerke und langsamere Laufwerke als Kapazitätslaufwerke verwendet. Weitere Informationen zum Einrichten von Cache- und Kapazitätslaufwerken finden Sie unter Grundlegendes zum Speicherpoolcache und Planen von Volumes.

Konzepte des persistenten Speichers

In diesem Abschnitt werden die grundlegenden Konzepte beschrieben, die Sie verstehen müssen, um einen persistenten Speicher in Windows Server- und Azure Stack HCI-Umgebungen bereitzustellen, um E/A-Engpässe zu reduzieren und um die Leistungsfähigkeit zu verbessern.

Zugriffsmethoden

Es gibt zwei Methoden für den Zugriff auf einen persistenten Speicher. Sie lauten wie folgt:

  • Block-Zugriff, der aus Gründen der App-Kompatibilität wie ein gewöhnlicher Speicher funktioniert. Bei dieser Konfiguration fließen die Daten wie gewohnt durch das Dateisystem und die Speicherstapel. Sie können diese Konfiguration in Kombination mit NTFS und ReFS verwenden. Dies wird in den meisten Anwendungsfällen empfohlen.
  • Direktzugriff (DAX) , der wie ein Arbeitsspeicher funktioniert, um die Latenz zu minimieren. Sie können DAX nur in Kombination mit NTFS verwenden. Wenn Sie DAX nicht korrekt verwenden, kann es zu Datenverlusten kommen. Es wird dringend empfohlen, die Blockübersetzungstabelle (BTT) für die Verwendung von DAX zu aktivieren, um das Risiko unterbrochener Schreibvorgänge zu reduzieren. Weitere Informationen finden Sie unter Verstehen und Konfigurieren von DAX.

Warnung

DAX wird in Azure Stack HCI-Umgebungen nicht unterstützt. Azure Stack HCI unterstützt den Blockzugriff nur, wenn die BTT aktiviert ist.

Regions

Ein Bereich besteht aus einem oder mehr PMEM-Modulen. Bereiche werden häufig als verschachtelte Sets erstellt, in denen mehrere PMEM-Module als einzelner logischer virtueller Adressraum angezeigt werden, um den Durchsatz zu erhöhen. Um die verfügbare Bandbreite zu erhöhen, werden die angrenzenden virtuelle Adressen auf mehrere PMEM-Module verteilt. Bereiche können in der Regel im BIOS einer Serverplattform erstellt werden.

PmemDisks

Um einen persistenten Speicher wie einen gewöhnlichen Speicher zu verwenden, müssen Sie mindestens einen PmemDisk definieren. Dabei handelt es sich um eine virtuelle Festplatte (Virtual Hard Disk, VHD) auf dem Host, die als PmemDisk auf einem virtuellen Computer (VM) aufgelistet wird. Ein PmemDisk ist ein zusammenhängend adressierter nicht-flüchtiger Speicherbereich, den Sie sich wie eine Festplattenpartition oder eine LUN vorstellen können. Mithilfe von Windows PowerShell Cmdlets können Sie mehrere PmemDisks erstellen, um die verfügbare Rohkapazität aufzuteilen. Jedes PMEM-Modul enthält eine Label Storage Area (LSA), in der die Konfigurationsmetadaten gespeichert werden.

Die Blockübersetzungstabelle (BTT)

Im Gegensatz zu Solid State Drives schützen PMEM-Module nicht vor unterbrochenen Schreibvorgängen, die bei einem Strom- oder Systemausfall auftreten können und Ihre Daten gefährden. Die BTT mindert dieses Risiko, indem sie eine atomische Updatesemantik für die Sektoren der PMEM-Geräte bereitstellt. Dadurch werden blockähnliche Sektor-Schreibvorgänge ermöglicht, sodass Apps alte und neue Daten bei einem Ausfall nicht miteinander mischen müssen. Es wird dringend empfohlen, die BTT in fast allen Anwendungsfällen zu aktivieren. Da es sich bei der BTT um eine Eigenschaft von PmemDisks handelt, muss es sie bei der Erstellung eines PmemDisks aktiviert werden.

Im Blockzugriffsmodus wird die Nutzung der BTT empfohlen, da alle Daten die Blocksemantik verwenden. Die BTT ist auch im DAX-Modus nützlich, da für Metadatenvorgänge weiterhin die Blocksemantik verwendet wird, auch wenn dies bei Anwendungsdatenvorgängen nicht der Fall ist. Selbst wenn bei allen Anwendungsvorgängen die DAX-Semantik für Dateien mit Speicherzuordnung verwendet wird, kann es bei Metadatenvorgängen auch weiterhin zu unterbrochenen Schreibvorgängen kommen. Deshalb kann eine Aktivierung der BTT von großem Nutzen sein.

Unterstützte Hardware

In der folgenden Tabelle wird die unterstützte PMEM-Hardware für Azure Stack HCI und Windows Server aufgelistet. Der persistente Speicher wird in Windows Server 2019 vollständig unterstützt, dies gilt ebenfalls für Direkte Speicherplätze.

PMEM-Technologie Windows Server 2016 Azure Stack HCI v20H2 / Windows Server 2019
NVDIMM-N im persistenten Modus Unterstützt Unterstützt
Intel Optane™ DC PMEM im App Direct-Modus Nicht unterstützt Unterstützt
Intel Optane™ DC PMEM im Arbeitsspeichermodus Unterstützt Unterstützt

Intel Optane DC PMEM unterstützt sowohl die Betriebsmodi Arbeitsspeicher (flüchtig) als auch App Direct (persistent). Um PMEM-Module wie einen gewöhnlichen Speicher zu verwenden (der primäre Anwendungsfall bei Serverworkloads), müssen Sie den App Direct-Modus verwenden. Beim Arbeitsspeichermodus wird der persistente Speicher im Wesentlichen als langsamerer RAM eingesetzt, was in der Regel nicht den Leistungsanforderungen für Serverworkloads entspricht. Der Arbeitsspeichermodus unterscheidet sich von DAX, einem PMEM-Volume, auf das mit einer arbeitsspeicherähnlichen Semantik zugegriffen werden kann.

Der Betriebsmodus wird häufig vom ursprünglichen Gerätehersteller vorkonfiguriert.

Hinweis

Wenn Sie ein System neu starten, das über mehrere Intel® Optane™-PMEM-Module im App Direct-Modus verfügt, die in mehrere PmemDisks unterteilt sind, können Sie den Zugriff auf einige oder alle der zugehörigen logischen Datenträger verlieren. Dieses Problem tritt bei Windows Server 2019-Versionen auf, die älter als Version 1903 sind.

Ein solcher Zugriffsverlust entsteht, wenn es sich um ein untrainiertes PMEM-Modul handelt, oder wenn das Modul beim Start des Systems aus anderen Gründen ausfällt. In einem solchen Fall fallen sämtliche PmemDisks eines beliebigen PMEM-Moduls auf dem System aus, dazu gehören auch PmemDisks, die dem fehlerhaften Modul physisch nicht zugeordnet wurden.

Um den Zugriff auf alle PmemDisks wiederherzustellen, ersetzen Sie das fehlerhafte Modul.

Wenn ein Modul unter Windows Server 2019 (Version 1903 oder neueren Versionen) ausfällt, verlieren Sie nur den Zugriff auf PmemDisks, die dem betroffenen Modul physisch zugeordnet sind. Andere PmemDisks sind nicht betroffen.

Konfigurieren des persistenten Speichers (PMEM)

Wenn Sie Intel Optane PMEM verwenden, befolgen Sie diese Anweisungen. Wenn Sie PMEM-Module eines anderen Anbieters verwenden, lesen Sie deren Dokumentation.

Verwenden Sie das Cmdlet New-VHD, um einen PmemDisk zu erstellen, der die BTT unterstützt:

New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT

Die VHD-Erweiterung muss „vhdpmem“ lauten.

Sie können eine VHD, für die die BTT nicht aktiviert ist, mithilfe des Convert-VHD-Cmdlets auch in eine VHD konvertieren, bei der die BTT aktiviert ist (und umgekehrt):

Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem

Nach der Konvertierung hat die neue VHD die gleiche Namespace-GUID wie die ursprüngliche VHD. Dies kann zu Problemen führen, insbesondere wenn beide zu demselben virtuellen Computer gehören. Verwenden Sie das Set-VHD-Cmdlet, um eine neue Namespace-UUID für die konvertierte VHD zu erstellen:

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

Grundlegendes zu verschachtelten Sets

Verschachtelte Sets können in der Regel im BIOS einer Serverplattform erstellt werden. Auf diese Weise können mehrere PMEM-Geräte dem Hostbetriebssystem wie ein einziger Datenträger angezeigt werden, wodurch sich der Durchsatz für diesen Datenträger erhöht.

Hinweis

Windows Server 2016 unterstützt keine verschachtelten Sets aus PMEM-Modulen.

Denken Sie daran, dass sich ein PMEM-Modul in einem Standard-DIMM (Memory)-Slot befindet, wodurch die Daten näher am Prozessor sind. Durch diese Konfiguration wird die Latenz verringert und die Abrufleistung verbessert. Um den Durchsatz weiter zu erhöhen, kann aus zwei oder mehr PMEM-Modulen ein n-fach verschachteltes Set erstellt werden, um Lese-/Schreibvorgänge zu verteilen. Die gängigsten Konfigurationen sind die zwei- oder vierfache Verschachtelung.

Sie können das Get-PmemDisk-PowerShell-Cmdlet verwenden, um die Konfiguration solcher logischen Datenträger wie folgt zu überprüfen:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

Es wird deutlich, dass der logische PMEM-Disk 2 die physischen Geräte Id20 und Id120 verwendet, wohingegen der logische PMEM-Disk 3 die physischen Geräte Id1020 und Id1120 verwendet.

Führen Sie das Get-PmemPhysicalDevice-Cmdlet aus, um weitere Informationen über das verschachtelte Set abzurufen, das von einem logischen Laufwerk verwendet wird:

(Get-PmemDisk)[0] | Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB

Konfigurieren verschachtelter Sets

Führen Sie zum Konfigurieren eines verschachtelten Sets das Get-PmemUnusedRegion-Cmdlet aus, um alle PMEM-Bereiche zu überprüfen, die keinem logischen PMEM-Disk auf dem System zugewiesen sind:

Get-PmemUnusedRegion

RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
       1     270582939648 {20, 120}
       3     270582939648 {1020, 1120}

Führen Sie das Get-PmemPhysicalDevice-Cmdlet aus, um sich alle PMEM-Geräteinformationen im System anzeigen zu lassen (einschließlich Gerätetyp, Standort, Integrität, Betriebsstatus usw.):

Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile
                                                                                                                      memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------
1020     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_C1     102005310        126 GB                 0 GB
1120     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_F1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB

Da ein noch nicht genutzter PMEM-Bereich verfügbar ist, können wir neue PMEM-Disks erstellen. Der nicht genutzte Bereich kann für die Erstellung mehrerer PMEM-Disks verwendet werden, indem wir die folgenden Cmdlets ausführen:

Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.

Nachdem dieser Vorgang abgeschlossen ist, können wir uns die Ergebnisse anzeigen lassen, indem wir folgenden Befehl ausführen:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

Dabei sollte beachtet werden, dass wir auch Get-PhysicalDisk | Where MediaType -eq SCM anstelle von Get-PmemDisk ausführen können, um dieselben Ergebnisse erhalten. Der neu erstellte PMEM-Disk entspricht 1:1 den Laufwerken, die in PowerShell und im Windows Admin Center angezeigt werden.

Ersetzen des persistenten Speichers

Um ein fehlerhaftes Modul zu ersetzen, müssen Sie den PMEM-Disk erneut erstellen (befolgen Sie dazu die zuvor beschriebenen Schritte).

Für die Problembehandlung müssen Sie möglicherweise Remove-PmemDisk nutzen. Mit diesem Cmdlet wird ein bestimmter PMEM-Disk entfernt. Durch die Ausführung der folgenden Cmdlets können Sie alle aktuellen PMEM-Disks entfernen:

Get-PmemDisk | Remove-PmemDisk

cmdlet Remove-PmemDisk at command pipeline position 1
Supply values for the following parameters:
DiskNumber: 2

This will remove the persistent memory disk(s) from the system and will result in data loss.
Remove the persistent memory disk(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
Removing the persistent memory disk. This may take a few moments.

Wichtig

Durch die Entfernung eines PMEM-Disks gehen die Daten auf diesem Disk verloren.

Ein weiteres Cmdlet, das Sie möglicherweise benötigen, ist Initialize-PmemPhysicalDevice. Mit diesem Cmdlet werden die Label Storage Areas auf den physischen PMEM-Geräten initialisiert und beschädigte Label Storage-Informationen gelöscht.

Get-PmemPhysicalDevice | Initialize-PmemPhysicalDevice

This will initialize the label storage area on the physical persistent memory device(s) and will result in data loss.
Initializes the physical persistent memory device(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.

Wichtig

Initialize-PmemPhysicalDevice verursacht Datenverluste im persistenten Speicher. Verwenden Sie es nur als letztes Mittel, um Probleme mit dem persistenten Speicher zu beheben.

Persistenter Speicher im Einsatz auf der Microsoft Ignite 2018

In diesem Video von der Microsoft Ignite 2018 sehen wir einige der wichtigsten Vorteile des persistenten Speichers.

In jedem Speichersystem, das Fehlertoleranz ermöglicht, werden notwendigerweise verteilte Kopien von Schreibvorgängen erstellt. Diese Vorgänge müssen das Netzwerk durchlaufen und den Back-End-Schreibdatenverkehr verstärken. Aus diesem Grund werden die größten IOPS-Benchmarkzahlen normalerweise ausschließlich durch das Messen von Lesevorgängen erreicht. Das gilt vor allem dann, wenn das Speichersystem über allgemeine Optimierungen verfügt, um wann immer möglich aus der lokalen Kopie zu lesen. Die Konfiguration Direkte Speicherplätze ist dafür optimal ausgelegt.

Bei der ausschließlichen Messung von Lesevorgängen übermittelte der Cluster 13.798.674 IOPS.

Wenn Sie sich das Video genau ansehen, werden Sie feststellen, dass die Latenz noch größeres Erstaunen auslöst. Selbst bei über 13,7 M IOPS hat das Dateisystem unter Windows eine konstante Latenz von weniger als 40 μs! (Das ist das Symbol für Mikrosekunden, also eine millionstel Sekunde.) Diese Geschwindigkeit ist um einiges schneller als das, was typische All-Flash-Anbieter heutzutage bewerben.

Gemeinsam erzielen direkte Speicherplätze in Windows Server 2019 und Intel® Optane™ DC PMEM eine durchschlagende Leistung. Der HCI-Benchmark von über 13,7 Mio. IOPS, zusammen mit einer vorhersagbaren und extrem geringen Latenz, ist mehr als das Doppelte unseres vorherigen (bereits branchenführenden) Benchmarks von 6,7 Mio. IOPS. Darüber hinaus benötigten wir diesmal nur 12 Serverknoten und somit 25 Prozent weniger als zuvor.

Die Testhardware war ein 12-Server-Cluster, der für die Verwendung einer Drei-Wege-Spiegelung und eines begrenzten ReFS-Volumes konfiguriert wurde, 12 x Intel® S2600WFT, 384 GiB-Arbeitsspeicher, 2 x 28-Core „CascadeLake“, 1,5 TB Intel® Optane™ DC PMEM als Cache, 32 TB NVMe (4 x 8 TB Intel® DC P4510) als Kapazität, 2 x Mellanox ConnectX-4 25 GBit/s.

In der folgenden Tabelle sind die vollständigen Leistungszahlen aufgelistet.

Vergleichstest Leistung
4K 100 % zufälliger Lesevorgang 13,8 Millionen IOPS
4K 90/10 % zufällige Lese-/Schreibvorgänge 9,45 Millionen IOPS
2 MB sequenzieller Lesevorgang 549 GB/s Durchsatz

Nächste Schritte

Verwandte Informationen finden Sie außerdem unter: