Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Beständiger Speicher (oder PMem) ist eine neue Art von Speichertechnologie, die ihren Inhalt über Stromzyklen speichert und als Speicher der obersten Ebene verwendet werden kann. Deshalb hören Sie möglicherweise, dass Benutzer PMem als "Speicherklassenspeicher" oder SCM bezeichnen. Dieser Artikel enthält Hintergrundinformationen zum beständigen Speicher und erläutert, wie sie als oberste Speicherebene in Azure Local und Windows Server bereitgestellt werden.
Was ist beständiger Speicher?
Ein persistenter Speicher ist eine Art nicht-flüchtiges Medium, das in einen standardmäßigen DIMM(Memory)-Slot passt. Es ist langsamer als DRAM, bietet jedoch einen höheren Durchsatz als SSD und NVMe. Im Vergleich zu DRAM kommen persistente Speichermodule in viel größeren Kapazitäten und sind weniger teuer pro GB, aber sie sind immer noch teurer als NVMe. Der Speicherinhalt bleibt erhalten, auch wenn die Systemstromversorgung bei einem unerwarteten Stromausfall, einem vom Benutzer initiierten Herunterfahren oder einem Systemabsturz ausfällt. Dies bedeutet, dass Sie persistente Speichermodule als ultraschnellen, persistenten Speicher verwenden können.
Azure Local and Windows Server 2019 support using persistent memory as either a cache or a capacity drive. Angesichts des Preismodells stellt der persistente Speicher jedoch den größten Wert als Cache oder als geringe Menge an dediziertem Speicher für Speicherzuordnungsdaten bereit. In den meisten Fällen werden persistente Speicherlaufwerke automatisch als Cachelaufwerke verwendet, und alles langsamere wird als Kapazitätslaufwerke verwendet. Weitere Informationen zum Einrichten von Cache- und Kapazitätslaufwerken finden Sie unter Grundlegendes zum Speicherpoolcache und Planen von Volumes.
Konzepte für beständigen Speicher
In diesem Abschnitt werden die grundlegenden Konzepte beschrieben, die Sie verstehen müssen, um beständigen Speicher in Windows Server- und Azure Local-Umgebungen bereitzustellen, um E/A-Engpässe zu reduzieren und die Leistung zu verbessern.
Zugriffsmethoden
Es gibt zwei Methoden für den Zugriff auf beständigen Speicher. Sie lauten wie folgt:
- Blockieren des Zugriffs, der wie der Speicher für die App-Kompatibilität funktioniert. In dieser Konfiguration fließen Daten wie gewohnt über das Dateisystem und Speicherstapel. Sie können diese Konfiguration in Kombination mit NTFS und ReFS verwenden, und es wird für die meisten Anwendungsfälle empfohlen.
- Direkter Zugriff (DAX), der wie Arbeitsspeicher funktioniert, um die niedrigste Latenz zu erhalten. 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 "Grundlegendes und Konfigurieren von DAX".
Warnung
DAX wird in lokalen Azure-Umgebungen nicht unterstützt. Azure Local unterstützt nur den Blockzugriff, wobei BTT aktiviert ist.
Regionen
Ein Bereich ist eine Gruppe von mindestens einem beständigen Speichermodul. Regionen werden häufig als überlappende Sätze erstellt, in denen mehrere persistente Speichermodule als ein einzelner logischer virtueller Adressraum angezeigt werden, um den Durchsatz zu erhöhen. Um die verfügbare Bandbreite zu erhöhen, werden benachbarte virtuelle Adressen auf mehrere persistente Speichermodule verteilt. Regionen können in der Regel im BIOS einer Serverplattform erstellt werden.
PmemDisks
Um beständigen Speicher als Speicher zu verwenden, müssen Sie mindestens eine PmemDisk definieren, bei der es sich um eine virtuelle Festplatte (VHD) auf dem Host handelt, die als PmemDisk innerhalb eines virtuellen Computers (VM) aufgezählt wird. Ein PmemDisk ist ein zusammenhängender Adressbereich nicht volatiler Speicher, den Sie sich wie eine Festplattenpartition oder LUN vorstellen können. Sie können mehrere PmemDisks mit Windows PowerShell-Cmdlets erstellen, um die verfügbare Rohkapazität aufzuteilen. Jedes modul für beständigen Speicher enthält einen Bezeichnungsspeicherbereich (Label Storage Area, LSA), der die Konfigurationsmetadaten speichert.
Übersetzungstabelle blockieren
Im Gegensatz zu Festkörperlaufwerken schützen persistente Speichermodule nicht vor "torn writes", die im Falle eines Stromausfalls oder Systemausfalls auftreten können, wodurch Daten gefährdet werden. 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. Wir empfehlen dringend, BTT in fast allen Fällen zu aktivieren. Da BTT eine Eigenschaft der PmemDisk ist, muss sie aktiviert werden, wenn die PmemDisk erstellt wird.
Im Blockzugriffsmodus empfehlen wir die Verwendung von BTT, da alle Daten Blocksemantik verwenden. BTT ist auch im DAX-Modus nützlich, da die Vorgänge mit Metadaten weiterhin Blocksemantik verwenden, auch wenn dies bei den Datenvorgängen der Anwendung 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
Die folgende Tabelle zeigt unterstützte Hardware für beständigen Arbeitsspeicher für Azure Local und Windows Server. Persistenter Speicher wird in Windows Server 2019 vollständig unterstützt, einschließlich Storage Spaces Direct.
| Technologie für persistenten Speicher | Windows Server 2016 | Azure Local 2311.2 und höher / Windows Server 2019 und höher |
|---|---|---|
| NVDIMM-N im beständigen Modus | Unterstützt | Unterstützt |
| Intel Optane™ DC Persistent Memory im App Direct Mode | Nicht unterstützt | Unterstützt |
| Intel Optane™ DC Persistent Memory im Speichermodus | Unterstützt | Unterstützt |
Intel Optane DC Persistent Memory unterstützt sowohl den Speicher (flüchtig) als auch den App Direct (persistent) Betriebsmodus. Um persistente Speichermodule als Speicher zu verwenden, bei dem es sich um den primären Anwendungsfall für Serverworkloads handelt, müssen Sie den App-Direct-Modus verwenden. Der Speichermodus verwendet im Wesentlichen beständigen Arbeitsspeicher als langsameren RAM, was normalerweise nicht den Leistungsanforderungen von Serverarbeitslasten entspricht. Der Speichermodus unterscheidet sich von DAX, einem persistenten Speichervolume, auf das über speicherähnliche Semantik zugegriffen werden kann.
Der Betriebsmodus ist häufig vom ursprünglichen Gerätehersteller vorkonfiguriert.
Hinweis
Wenn Sie ein System mit mehreren Intel® Optane™ Persistent Memory Modules im App Direct-Modus neu starten, die in mehrere PmemDisks unterteilt sind, verlieren Sie möglicherweise den Zugriff auf einige oder alle zugehörigen logischen Speicherdatenträger. Dieses Problem tritt auf Windows Server 2019-Versionen auf, die älter als Version 1903 sind.
Dieser Zugriffsverlust tritt auf, da ein permanentes Speichermodul nicht trainiert ist oder andernfalls fehlschlägt, wenn das System gestartet wird. In einem solchen Fall schlagen alle PmemDisks auf einem beliebigen persistenten Speichermodul des Systems fehl, einschließlich derjenigen, die dem fehlerhaften Modul nicht physisch zugeordnet sind.
Ersetzen Sie das fehlerhafte Modul, um den Zugriff auf alle PmemDisks wiederherzustellen.
Wenn ein Modul unter Windows Server 2019, Version 1903 oder neuer, fehlschlägt, verlieren Sie nur Zugriff auf PmemDisks, die dem betroffenen Modul physisch zugeordnet sind; andere sind nicht betroffen.
Konfigurieren des beständigen Arbeitsspeichers
Wenn Sie Intel Optane persistenten Arbeitsspeicher verwenden, folgen Sie den Anweisungen hier. Wenn Sie persistente Speichermodule von einem anderen Anbieter verwenden, lesen Sie deren Dokumentation.
Um eine PmemDisk zu erstellen, die BTT unterstützt, verwenden Sie das Cmdlet New-VHD.
New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT
Die VHD-Erweiterung muss "vhdpmem" sein.
Sie können auch eine VHD, für die BTT nicht aktiviert ist, in eine konvertieren, für die BTT aktiviert ist (und umgekehrt), und zwar mithilfe des Convert-VHD Cmdlets.
Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem
Nach der Konvertierung verfügt die neue VHD über dieselbe Namespace-GUID wie die ursprüngliche. Dies kann zu Problemen führen, insbesondere, wenn sie beide mit demselben virtuellen Computer verbunden sind. 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
Interleaved Sets können in der Regel im BIOS einer Serverplattform erstellt werden, damit mehrere geräte für beständigen Arbeitsspeicher als einzelner Datenträger für das Hostbetriebssystem angezeigt werden und der Durchsatz für diesen Datenträger erhöht wird.
Hinweis
Windows Server 2016 unterstützt keine überlappende Sätze persistenter Speichermodule.
Erinnern Sie sich daran, dass sich ein persistentes Speichermodul in einem Standard-DIMM-Steckplatz (Memory) befindet, der Daten näher an den Prozessor legt. Diese Konfiguration reduziert die Latenz und verbessert die Abrufleistung. 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 logischer 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
Wir können sehen, dass der logische PMem-Datenträger 2 die physischen Geräte ID20 und Id120 verwendet, und der logische PMem-Datenträger 3 verwendet die physischen Geräte Id1020 und Id1120.
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 von verflochtenen Sätzen
Führen Sie zum Konfigurieren eines verschachtelten Satzes das Get-PmemUnusedRegion cmdlet aus, um alle persistente Speicherbereiche zu überprüfen, die keinem logischen persistenten Speicherdatenträger im System zugewiesen sind.
Get-PmemUnusedRegion
RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
1 270582939648 {20, 120}
3 270582939648 {1020, 1120}
Um alle PMem-Geräteinformationen im System anzuzeigen, einschließlich Gerätetyp, Standort, Integrität und Betriebsstatus usw., führen Sie das Cmdlet aus Get-PmemPhysicalDevice :
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 wir über eine nicht verwendete PMem-Region verfügen, können wir neue persistente Speicherdatenträger erstellen. Wir können den nicht verwendeten Bereich verwenden, um mehrere persistente Speicherdatenträger zu erstellen, indem die folgenden Cmdlets ausgeführt werden:
Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
Nachdem dies geschehen ist, können wir die Ergebnisse sehen, indem wir Folgendes 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
Es ist erwähnenswert, dass wir Get-PhysicalDisk | Where MediaType -eq SCM anstelle von Get-PmemDisk ausführen können, um die gleichen Ergebnisse zu erzielen. Der neu erstellte persistente Speicherdatenträger entspricht 1:1 Laufwerken, die in PowerShell und im Windows Admin Center angezeigt werden.
Beständigen Speicher ersetzen
Wenn Sie ein fehlerhaftes Modul ersetzen müssen, müssen Sie den PMem-Datenträger erneut bereitstellen (siehe die zuvor beschriebenen Schritte).
Bei der Problembehandlung müssen Sie Remove-PmemDisk möglicherweise verwenden. Mit diesem Cmdlet wird ein bestimmter beständiger Speicherdatenträger entfernt. Wir können alle aktuellen persistenten Speicherdatenträger entfernen, indem wir die folgenden Cmdlets ausführen:
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.
Von Bedeutung
Das Entfernen eines beständigen Speicherdatenträgers führt zu Datenverlust auf diesem Datenträger.
Ein weiteres Cmdlet, das Sie möglicherweise benötigen, ist Initialize-PmemPhysicalDevice. Dieses Cmdlet initialisiert die Bezeichnungsspeicherbereiche auf den physischen geräten für beständigen Speicher und kann beschädigte Bezeichnungsspeicherinformationen auf den Geräten löschen.
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.
Von Bedeutung
Initialize-PmemPhysicalDevice verursacht Datenverlust im beständigen Speicher. Verwenden Sie sie nur als letztes Mittel, um dauerhafte Speicherprobleme zu beheben.
Beständiger Arbeitsspeicher in Aktion bei Microsoft Ignite 2018
Um einige der Vorteile des persistenten Speichers zu sehen, schauen wir uns dieses Video von Microsoft Ignite 2018 an.
Jedes Speichersystem, das Fehlertoleranz bietet, erstellt zwangsläufig verteilte Kopien von Schreibvorgängen. Solche Vorgänge müssen das Netzwerk durchlaufen und die Schreiblast im Backend 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. Storage Spaces Direct ist dafür optimiert.
Beim Messen mit nur Lesevorgängen lieferte der Cluster 13.798.674 IOPS.
Wenn Sie das Video genau ansehen, werden Sie feststellen, dass noch überraschender die Latenz ist. Auch bei über 13,7 M IOPS meldet das Dateisystem in Windows die Latenz, die konsistent kleiner als 40 μs ist! (Das ist das Symbol für Mikrosekunden, ein Millionstel sekunde.) Diese Geschwindigkeit ist eine Größenordnung schneller als die typischen All-Flash-Anbieter, die heute stolz werben.
Gemeinsam lieferten Direkte Speicherplätze in Windows Server 2019 und Intel® Optane™ DC Persistent Memory eine bahnbrechende Leistung. Dieser Benchmark von über 13,7M IOPS, begleitet von vorhersehbarer und extrem geringer Latenz, ist mehr als doppelt so hoch wie unser bisheriger branchenführender Benchmark von 6,7M IOPS. Darüber hinaus brauchten wir diesmal nur 12 Serverknoten – 25 Prozent weniger als zuvor.
Die Testhardware war ein 12-Server-Cluster, der für die Verwendung von Drei-Wege-Spiegelungs- und getrennten ReFS-Volumes konfiguriert wurde. 12 x Intel® S2600WFT, 384 GiB Speicher, 2 x 28-Core "CascadeLake", 1,5 TB Intel® Optane™ DC persistent Speicher 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 Leistungsdaten aufgeführt.
| Benchmark | Leistung |
|---|---|
| 4K 100 % zufälliger Lesevorgang | 13,8 Millionen IOPS |
| 4K 90/10% zufälliges Lesen/Schreiben | 9,45 Millionen IOPS |
| 2 MB sequenzieller Lesevorgang | 549 GB/s Durchsatz |
Nächste Schritte
Verwandte Informationen finden Sie auch unter: