Udostępnij za pośrednictwem


Omówienie i wdrażanie pamięci trwałej

Dotyczy: Azure Stack HCI, wersje 22H2 i 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 10

Pamięć trwała (lub PMem) to nowy typ technologii pamięci, która zachowuje swoją zawartość za pośrednictwem cykli zasilania i może być używana jako magazyn najwyższego poziomu, dlatego można usłyszeć, że ludzie nazywają rozwiązanie PMem "pamięcią klasy magazynu" lub SCM. W tym artykule przedstawiono podstawowe informacje na temat pamięci trwałej i wyjaśniono, jak wdrożyć ją jako górną warstwę magazynowania w usłudze Azure Stack HCI i systemie Windows Server.

Co to jest pamięć trwała?

Pamięć trwała to typ nośnika nietrwałego pasujący do standardowego gniazda DIMM (pamięci). Jest wolniejsza niż pamięć DRAM, ale zapewnia wyższą przepływność niż SSD i NVMe. W porównaniu z pamięcią DRAM moduły pamięci trwałej mają znacznie większe pojemności i są tańsze na GB, jednak są one nadal droższe niż NVMe. Zawartość pamięci pozostaje nawet wtedy, gdy zasilanie systemu ulegnie awarii w przypadku nieoczekiwanej utraty zasilania, zainicjowanego przez użytkownika zamknięcia lub awarii systemu. Oznacza to, że można używać modułów pamięci trwałej jako ultraszybki, trwały magazyn.

Obsługa usług Azure Stack HCI i Windows Server 2019 przy użyciu pamięci trwałej jako pamięci podręcznej lub dysku pojemności. Jednak biorąc pod uwagę model cen, pamięć trwała zapewnia największą wartość jako pamięć podręczną lub niewielką ilość dedykowanego magazynu dla danych mapowania pamięci. W większości przypadków dyski trwałe pamięci będą automatycznie używane jako dyski pamięci podręcznej, a wszystkie wolniejsze będą używane jako dyski pojemności. Aby uzyskać więcej informacji na temat konfigurowania pamięci podręcznej i dysków pojemności, zobacz Omówienie pamięci podręcznej puli magazynów i planowanie woluminów.

Pojęcia dotyczące pamięci trwałej

W tej sekcji opisano podstawowe pojęcia, które należy zrozumieć, aby wdrożyć pamięć trwałą w środowiskach windows Server i Azure Stack HCI w celu zmniejszenia wąskich gardeł we/wy i zwiększenia wydajności.

Metody dostępu

Istnieją dwie metody uzyskiwania dostępu do pamięci trwałej. Są to:

  • Blokuj dostęp, który działa jak magazyn w celu zachowania zgodności aplikacji. W tej konfiguracji dane przepływają przez system plików i stosy magazynu w zwykły sposób. Tę konfigurację można używać w połączeniu z systemami plików NTFS i ReFS i jest zalecana w większości przypadków użycia.
  • Bezpośredni dostęp (DAX), który działa jak pamięć, aby uzyskać najmniejsze opóźnienie. Język DAX można używać tylko w połączeniu z systemem plików NTFS. Jeśli nie używasz języka DAX poprawnie, istnieje możliwość utraty danych. Zdecydowanie zalecamy używanie języka DAX z włączoną tabelą tłumaczenia blokowego (BTT), aby ograniczyć ryzyko rozdartych zapisów. Aby dowiedzieć się więcej, zobacz Omówienie i konfigurowanie języka DAX.

Ostrzeżenie

Język DAX nie jest obsługiwany w środowiskach rozwiązania Azure Stack HCI. Rozwiązanie Azure Stack HCI obsługuje tylko blokowanie dostępu, a protokół BTT jest włączony.

Regiony

Region to zestaw co najmniej jednego modułu pamięci trwałej. Regiony są często tworzone jako zestawy przeplatane , w których wiele modułów pamięci trwałej jest wyświetlanych jako pojedyncza logiczna wirtualna przestrzeń adresowa w celu zwiększenia przepływności. Aby zwiększyć dostępną przepustowość, sąsiadujące adresy wirtualne są rozłożone na wiele modułów pamięci trwałej. Regiony można zwykle tworzyć w systemie BIOS platformy serwera.

PmemDisks

Aby użyć pamięci trwałej jako magazynu, należy zdefiniować co najmniej jeden dysk PmemDisk, który jest wirtualnym dyskiem twardym (VHD) na hoście, który wylicza jako PmemDisk wewnątrz maszyny wirtualnej. PmemDisk to ciągły zakres nietrwałej pamięci, którą można traktować jak partycja dysku twardego lub jednostka LUN. Możesz utworzyć wiele dysków PmemDisk przy użyciu Windows PowerShell poleceń cmdlet w celu podzielenia dostępnej pojemności pierwotnej. Każdy moduł pamięci trwałej zawiera obszar magazynu etykiet (LSA), który przechowuje metadane konfiguracji.

Blokuj tabelę tłumaczenia

W przeciwieństwie do dysków półprzewodnikowych moduły pamięci trwałej nie chronią przed "rozdartymi zapisami", które mogą wystąpić w przypadku awarii zasilania lub awarii systemu, co naraża dane na ryzyko. Protokół BTT zmniejsza to ryzyko, zapewniając semantyka aktualizacji sektora atomowego dla urządzeń pamięci trwałej, co zasadniczo umożliwia zapisywanie sektorów podobnych do bloków, aby aplikacje mogły uniknąć mieszania starych i nowych danych w scenariuszu awarii. Zdecydowanie zalecamy włączenie protokołu BTT w prawie wszystkich przypadkach. Ponieważ BTT jest właściwością PmemDisk, należy ją włączyć podczas tworzenia pmemDisk.

W trybie blokowania dostępu zalecamy używanie protokołu BTT, ponieważ wszystkie dane będą używać semantyki bloków. Protokół BTT jest również przydatny w trybie języka DAX, ponieważ operacje metadanych nadal używają semantyki bloków, nawet jeśli operacje na danych aplikacji nie są wykonywane. Nawet jeśli wszystkie operacje aplikacji używają plików mapowanych w pamięci z semantyki języka DAX, rozdarte zapisy mogą nadal występować w przypadku operacji metadanych; dlatego włączenie BTT jest nadal cenne.

Obsługiwany sprzęt

W poniższej tabeli przedstawiono obsługiwany sprzęt pamięci trwałej dla usług Azure Stack HCI i Windows Server. Pamięć trwała jest w pełni obsługiwana w systemie Windows Server 2019, w tym w Bezpośrednie miejsca do magazynowania.

Technologia pamięci trwałej Windows Server 2016 Azure Stack HCI v20H2/Windows Server 2019
Karta NVDIMM-N w trybie trwałym Obsługiwane Obsługiwane
Intel Optane™ DC Trwałe pamięć w trybie bezpośrednim aplikacji Nieobsługiwane Obsługiwane
Pamięć trwała funkcji Intel Optane™ DC w trybie pamięci Obsługiwane Obsługiwane

Funkcja Intel Optane DC Trwała pamięć obsługuje tryby operacyjne Pamięci (volatile) i App Direct (trwałe). Aby użyć modułów pamięci trwałej jako magazynu, który jest podstawowym przypadkiem użycia obciążeń serwera, należy użyć trybu bezpośredniego aplikacji. Tryb pamięci zasadniczo używa pamięci trwałej jako wolniejszej pamięci RAM, która zwykle nie spełnia wymagań dotyczących wydajności obciążeń serwera. Tryb pamięci różni się od języka DAX, czyli trwałego woluminu magazynu, do którego można uzyskać dostęp przy użyciu semantyki przypominającej pamięć.

Tryb operacyjny jest często wstępnie skonfigurowany przez oryginalnego producenta urządzenia.

Uwaga

Po ponownym uruchomieniu systemu z wieloma modułami pamięci trwałej Intel® Optane™ w trybie bezpośrednim aplikacji podzielonym na wiele dysków PmemDisk można utracić dostęp do niektórych lub wszystkich powiązanych dysków magazynu logicznego. Ten problem występuje w wersjach systemu Windows Server 2019 starszych niż wersja 1903.

Ta utrata dostępu występuje, ponieważ moduł pamięci trwałej jest niewytrenowany lub w inny sposób kończy się niepowodzeniem po uruchomieniu systemu. W takim przypadku wszystkie dyski PmemDisk w dowolnym module pamięci trwałej w systemie kończą się niepowodzeniem, w tym te, które nie są fizycznie mapowane na moduł, który zakończył się niepowodzeniem.

Aby przywrócić dostęp do wszystkich dysków PmemDisk, zastąp moduł, który zakończył się niepowodzeniem.

Jeśli moduł ulegnie awarii w systemie Windows Server 2019 w wersji 1903 lub nowszej, utracisz dostęp tylko do dysków PmemDisk, które fizycznie mapuje na moduł, którego dotyczy problem; nie ma to wpływu na inne osoby.

Konfigurowanie pamięci trwałej

Jeśli używasz pamięci trwałej Intel Optane, postępuj zgodnie z instrukcjami dostępnymi tutaj. Jeśli używasz modułów pamięci trwałej od innego dostawcy, zapoznaj się z jego dokumentacją.

Aby utworzyć dysk PmemDisk obsługujący protokół BTT, użyj New-VHD polecenia cmdlet :

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

Rozszerzenie wirtualnego dysku twardego musi mieć wartość "vhdpmem".

Możesz również przekonwertować wirtualny dysk twardy, który nie ma włączonego protokołu BTT na taki, który wykonuje (i na odwrót) przy użyciu Convert-VHD polecenia cmdlet :

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

Po przekonwertowaniu nowy wirtualny dysk twardy będzie miał ten sam identyfikator GUID przestrzeni nazw co oryginalny. Może to prowadzić do problemów, zwłaszcza jeśli obie są dołączone do tej samej maszyny wirtualnej. Aby utworzyć nowy identyfikator UUID przestrzeni nazw dla przekonwertowanego dysku VHD, użyj Set-VHD polecenia cmdlet :

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

Omówienie zestawów przeplatanych

Zestawy z przeplotem można zwykle tworzyć w systemie BIOS platformy serwera, aby wiele urządzeń pamięci trwałej było wyświetlanych jako jeden dysk do systemu operacyjnego hosta, zwiększając przepływność dla tego dysku.

Uwaga

Windows Server 2016 nie obsługuje przeplatanych zestawów modułów pamięci trwałej.

Pamiętaj, że moduł pamięci trwałej znajduje się w standardowym miejscu DIMM (pamięci), które przybliża dane do procesora. Ta konfiguracja zmniejsza opóźnienie i zwiększa wydajność pobierania. Aby jeszcze bardziej zwiększyć przepływność, co najmniej dwa trwałe moduły pamięci tworzą n-way przeplatane zestaw do usuwania operacji odczytu/zapisu. Najbardziej typowe konfiguracje to dwukierunkowe lub czterokierunkowe przeplatanie.

Możesz użyć Get-PmemDisk polecenia cmdlet programu PowerShell, aby przejrzeć konfigurację takich dysków logicznych w następujący sposób:

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

Widzimy, że logiczny dysk PMem 2 używa urządzeń fizycznych o identyfikatorze Id20 i Id120, a dysk logiczny PMem 3 używa urządzeń fizycznych Id1020 i Id1120.

Aby pobrać więcej informacji o zestawie przeplatanym używanym przez dysk logiczny, uruchom Get-PmemPhysicalDevice polecenie cmdlet:

(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

Konfigurowanie zestawów przeplatanych

Aby skonfigurować zestaw przeplatany, uruchom Get-PmemUnusedRegion polecenie cmdlet , aby przejrzeć wszystkie regiony pamięci trwałej, które nie są przypisane do logicznego dysku pamięci trwałej w systemie:

Get-PmemUnusedRegion

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

Aby wyświetlić wszystkie informacje o urządzeniu PMem w systemie, w tym typ urządzenia, lokalizację, kondycję i stan operacyjny itd., uruchom Get-PmemPhysicalDevice polecenie cmdlet:

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

Ponieważ mamy dostępny nieużywany region PMem, możemy utworzyć nowe dyski pamięci trwałej. Za pomocą nieużywanego regionu można utworzyć wiele dysków pamięci trwałej, uruchamiając następujące polecenia cmdlet:

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

Po wykonaniu tej czynności możemy zobaczyć wyniki, uruchamiając polecenie:

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

Warto zauważyć, że możemy uruchomić Get-PhysicalDisk | Where MediaType -eq SCM zamiast Get-PmemDisk uzyskać te same wyniki. Nowo utworzony dysk pamięci trwałej odpowiada jeden do jednego z dyskami wyświetlanymi w programie PowerShell i w Windows Admin Center.

Zastępowanie pamięci trwałej

Jeśli musisz zastąpić moduł, który zakończył się niepowodzeniem, musisz ponownie aprowizacji dysku PMem (zapoznaj się z krokami opisanymi wcześniej).

Podczas rozwiązywania problemów może być konieczne użycie polecenia Remove-PmemDisk. To polecenie cmdlet usuwa określony dysk pamięci trwałej. Wszystkie bieżące dyski pamięci trwałej można usunąć, uruchamiając następujące polecenia cmdlet:

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.

Ważne

Usunięcie dysku pamięci trwałej powoduje utratę danych na tym dysku.

Może być potrzebne inne polecenie cmdlet: Initialize-PmemPhysicalDevice. To polecenie cmdlet inicjuje obszary przechowywania etykiet na fizycznych urządzeniach pamięci trwałej i może wyczyścić uszkodzone informacje o magazynie etykiet na urządzeniach.

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.

Ważne

Initialize-PmemPhysicalDevice powoduje utratę danych w pamięci trwałej. Użyj go tylko jako ostateczności, aby rozwiązać problemy związane z pamięcią trwałe.

Pamięć trwała w działaniu w programie Microsoft Ignite 2018

Aby zobaczyć niektóre zalety pamięci trwałej, przyjrzyjmy się temu wideo z konferencji Microsoft Ignite 2018.

Każdy system magazynowania, który zapewnia odporność na uszkodzenia, koniecznie sprawia, że rozproszone kopie zapisów. Takie operacje muszą przechodzić przez sieć i wzmacniać ruch zapisu zaplecza. Z tego powodu bezwzględne największe liczby testów porównawczych liczby operacji we/wy na sekundę są zwykle osiągane przez pomiar tylko odczytów, zwłaszcza jeśli system magazynu ma optymalizacje rozsądku odczytu z kopii lokalnej, jeśli jest to możliwe. Bezpośrednie miejsca do magazynowania jest zoptymalizowany pod kątem tego celu.

W przypadku pomiaru przy użyciu tylko operacji odczytu klaster dostarczył 13 798 674 operacji we/wy na sekundę.

Jeśli watch wideo ściśle, zauważysz, że to, co jeszcze bardziej jaw-upuszczanie jest opóźnienie. Nawet w przypadku ponad 13,7 M operacji we/wy na sekundę system plików w systemie Windows zgłasza opóźnienie, które jest stale mniejsze niż 40 μs! (Jest to symbol mikrosekund, jedna milionowa sekundy). Szybkość jest o wiele szybciej niż to, co typowi dostawcy flash dumnie reklamują dzisiaj.

Razem Bezpośrednie miejsca do magazynowania w systemach Windows Server 2019 i Intel® Optane™ DC trwałej pamięci zapewnia przełomowe wyniki. Ten test porównawczy HCI ponad 13,7 mln operacji we/wy na sekundę, wraz z przewidywalnym i bardzo małym opóźnieniem, jest ponad dwukrotnie wyższy niż poprzedni branżowy test porównawczy 6,7 mln operacji we/wy na sekundę. Co więcej, tym razem potrzebowaliśmy tylko 12 węzłów serwera — 25 procent mniej niż wcześniej.

Sprzęt testowy to 12-serwerowy klaster, który został skonfigurowany do używania dublowania trójstopniowego i rozdzielanego woluminów systemu plików ReFS, 12 x Intel® S2600WFT, 384 GiB pamięci, 2 x 28 rdzeni "CascadeLake", 1,5 TB pamięci trwałej Intel® Optane™ DC jako pamięci podręcznej, 32 TB NVMe (4 x 8 TB Intel® DC P4510) jako pojemność, 2 x Mellanox ConnectX-4 25 Gb/s.

W poniższej tabeli przedstawiono pełne numery wydajności.

Punkt odniesienia Wydajność
Odczyt losowy 4K 100% 13,8 mln operacji we/wy na sekundę
4K 90/10% losowego odczytu/zapisu 9,45 mln operacji we/wy na sekundę
Odczyt sekwencyjny 2 MB Przepływność 549 GB/s

Następne kroki

Aby uzyskać powiązane informacje, zobacz również: