Общие сведения о постоянной памяти и ее развертывании

Область применения: Azure Stack HCI версий 22H2 и 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 10

Постоянная память (или PMem) — это новый тип технологии памяти, которая сохраняет свое содержимое в течение циклов питания и может использоваться в качестве хранилища верхнего уровня, поэтому вы можете услышать, как люди называют PMem "памятью класса хранения" или SCM. В этой статье приведены общие сведения о постоянной памяти и описано, как развернуть ее в качестве верхнего уровня хранилища в Azure Stack HCI и Windows Server.

Что такое постоянная память?

Постоянная память — это тип энергонезависимого носителя, который помещается в стандартный слот DIMM (память). Он медленнее DRAM, но обеспечивает более высокую пропускную способность, чем SSD и NVMe. По сравнению с DRAM, модули постоянной памяти имеют гораздо большую емкость и дешевле за ГБ, однако они по-прежнему дороже, чем NVMe. Содержимое памяти остается даже при отключении питания системы в случае неожиданного отключения питания, инициированного пользователем завершения работы или сбоя системы. Это означает, что модули постоянной памяти можно использовать в качестве сверхбыстрого постоянного хранилища.

Azure Stack HCI и Windows Server 2019 поддерживают использование постоянной памяти в качестве кэша или диска емкости. Однако, учитывая модель ценообразования, постоянная память обеспечивает наибольшее значение либо в виде кэша, либо как небольшого объема выделенного хранилища для данных сопоставления памяти. В большинстве случаев диски постоянной памяти будут автоматически использоваться в качестве дисков кэша, а все, что медленнее, будет использоваться в качестве дисков емкости. Дополнительные сведения о настройке дисков кэша и емкости см. в разделах Общие сведения о кэше пула носителей и Планирование томов.

Основные понятия постоянной памяти

В этом разделе описываются основные понятия, которые необходимо изучить для развертывания постоянной памяти в средах Windows Server и Azure Stack HCI, чтобы сократить количество узких мест ввода-вывода и повысить производительность.

Методы доступа

Существует два метода доступа к постоянной памяти. К ним относятся:

  • Блокировать доступ, который работает как хранилище для обеспечения совместимости приложений. В этой конфигурации данные проходят через файловую систему и стеки хранилища в обычном режиме. Эту конфигурацию можно использовать в сочетании с NTFS и ReFS, и она рекомендуется для большинства вариантов использования.
  • Прямой доступ (DAX), который работает как память для получения наименьшей задержки. DAX можно использовать только в сочетании с NTFS. Если вы не используете DAX правильно, существует вероятность потери данных. Настоятельно рекомендуется использовать DAX с включенной таблицей преобразования блоков (BTT), чтобы снизить риск разрыва операций записи. Дополнительные сведения см. в статье Общие сведения и настройка DAX.

Предупреждение

DAX не поддерживается в средах Azure Stack HCI. Azure Stack HCI поддерживает только блочный доступ с включенным протоколом BTT.

Регионы

Регион — это набор из одного или нескольких постоянных модулей памяти. Регионы часто создаются как чередующиеся наборы , в которых несколько модулей постоянной памяти отображаются в виде одного логического виртуального адресного пространства для увеличения пропускной способности. Чтобы увеличить доступную пропускную способность, смежные виртуальные адреса распределяются между несколькими модулями постоянной памяти. Регионы обычно можно создавать в BIOS серверной платформы.

PmemDisks

Чтобы использовать постоянную память в качестве хранилища, необходимо определить по крайней мере один pmemDisk, который является виртуальным жестким диском (VHD) на узле, который перечисляется как PmemDisk внутри виртуальной машины. PmemDisk — это непрерывный диапазон энергонезависимой памяти, который можно представить как раздел жесткого диска или LUN. Вы можете создать несколько адресов PmemDisks с помощью командлетов Windows PowerShell для разделения доступной необработанной емкости. Каждый модуль постоянной памяти содержит область хранения меток (LSA), в котором хранятся метаданные конфигурации.

Таблица преобразования блоков

В отличие от твердотельных накопителей, модули постоянной памяти не защищают от разрыва операций записи, которые могут произойти в случае сбоя питания или сбоя системы, что ставит данные под угрозу. BTT снижает этот риск, предоставляя атомарную семантику обновления секторов для устройств с постоянной памятью, по существу обеспечивая блочные операции записи в секторе, чтобы приложения могли избежать смешивания старых и новых данных в сценарии сбоя. Мы настоятельно рекомендуем включить BTT почти во всех случаях. Так как BTT является свойством PmemDisk, его необходимо включить при создании PmemDisk.

В режиме блочного доступа рекомендуется использовать BTT, так как все данные будут использовать блическую семантику. BTT также полезен в режиме DAX, так как операции с метаданными по-прежнему используют блическую семантику, даже если операции с данными приложения этого не выполняют. Даже если все операции приложения используют файлы, сопоставленные в памяти, с семантикой DAX, для операций с метаданными все равно могут происходить разорванные операции записи. поэтому включение BTT по-прежнему имеет ценность.

Поддерживаемое оборудование

В следующей таблице показано поддерживаемое оборудование постоянной памяти для Azure Stack HCI и Windows Server. Постоянная память полностью поддерживается в Windows Server 2019, включая Локальные дисковые пространства.

Технология постоянной памяти Windows Server 2016 Azure Stack HCI версии 20H2/Windows Server 2019
NVDIMM-N в постоянном режиме Поддерживается Поддерживается
Intel Optane™ DC Persistent Memory in App Direct Mode Не поддерживается Поддерживается
Постоянная память Intel Optane™ DC в режиме памяти Поддерживается Поддерживается

Intel Optane DC Persistent Memory поддерживает режимы работы memory (volatile) и App Direct (постоянный). Чтобы использовать постоянные модули памяти в качестве хранилища, что является основным вариантом использования для серверных рабочих нагрузок, необходимо использовать режим App Direct. Режим памяти по существу использует постоянную память в качестве медленного ОЗУ, что обычно не соответствует требованиям к производительности серверных рабочих нагрузок. Режим памяти отличается от DAX, который представляет собой постоянный том хранилища, доступ к которому можно получить с помощью семантики, подобной памяти.

Режим работы часто предварительно настраивается изготовителем исходного устройства.

Примечание

При перезапуске системы с несколькими модулями постоянной памяти Intel® Optane™ в режиме App Direct, разделенными на несколько PmemDisks, вы можете потерять доступ к некоторым или всем связанным логическим дискам хранилища. Эта проблема возникает в версиях Windows Server 2019, которые старше версии 1903.

Эта потеря доступа происходит из-за того, что постоянный модуль памяти не обучен или иным образом завершается сбоем при запуске системы. В этом случае происходит сбой всех файлов PmemDisks в любом постоянном модуле памяти в системе, включая те, которые физически не сопоставляются с неисправным модулем.

Чтобы восстановить доступ ко всем дискам PmemDisks, замените модуль, завершившийся сбоем.

В случае сбоя модуля в Windows Server 2019 версии 1903 или более поздних версиях вы теряете доступ только к PmemDisks, которые физически сопоставляются с затронутым модулем; другие не затрагиваются.

Настройка постоянной памяти

Если вы используете постоянную память Intel Optane, следуйте инструкциям здесь. Если вы используете постоянные модули памяти от другого поставщика, обратитесь к его документации.

Чтобы создать PmemDisk, поддерживающий BTT, используйте New-VHD командлет :

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

Расширение VHD должно быть vhdpmem.

Вы также можете преобразовать виртуальный жесткий диск, на который не включен BTT, в виртуальный жесткий диск( и наоборот) с помощью командлета Convert-VHD :

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

После преобразования новый виртуальный жесткий диск будет иметь тот же GUID пространства имен, что и исходный. Это может привести к проблемам, особенно если они подключены к одной виртуальной машине. Чтобы создать UUID пространства имен для преобразованного виртуального жесткого Set-VHD диска, используйте командлет :

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

Общие сведения о чередуемых наборах

Чередующиеся наборы обычно можно создать в BIOS серверной платформы, чтобы несколько устройств постоянной памяти отображались как один диск в операционной системе узла, увеличивая пропускную способность для этого диска.

Примечание

Windows Server 2016 не поддерживает чередующиеся наборы модулей постоянной памяти.

Напомним, что постоянный модуль памяти находится в стандартном слоте DIMM (память), который помещает данные ближе к процессору. Эта конфигурация сокращает задержки и повышает производительность выборки. Чтобы еще больше увеличить пропускную способность, два или более постоянных модулей памяти создают n-way чередующийся набор для чередующихся операций чтения и записи. Наиболее распространенными конфигурациями являются двусторонняя или четырехсторонняя чередование.

С помощью командлета Get-PmemDisk PowerShell можно просмотреть конфигурацию таких логических дисков следующим образом:

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

Мы видим, что логический диск PMem 2 использует физические устройства Id20 и Id120, а логический PMem-диск 3 — физические устройства Id1020 и Id1120.

Чтобы получить дополнительные сведения о наборе с чередованием, используемом логическим диском, выполните Get-PmemPhysicalDevice командлет :

(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

Настройка чередуемых наборов

Чтобы настроить набор с чередованием, выполните Get-PmemUnusedRegion командлет , чтобы просмотреть все области постоянной памяти, которые не назначены логическому диску постоянной памяти в системе:

Get-PmemUnusedRegion

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

Чтобы просмотреть все сведения об устройстве PMem в системе, включая тип устройства, расположение, состояние работоспособности и работоспособность и т. д., выполните 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

Так как у нас есть доступный неиспользуемый регион PMem, мы можем создать новые диски постоянной памяти. Мы можем использовать неиспользуемый регион для создания нескольких дисков постоянной памяти, выполнив следующие командлеты:

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

После этого мы можем увидеть результаты, выполнив следующую команду:

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

Стоит отметить, что мы можем выполнить Get-PhysicalDisk | Where MediaType -eq SCM вместо Get-PmemDisk , чтобы получить те же результаты. Созданный диск постоянной памяти соответствует одному с дисками, которые отображаются в PowerShell и в Windows Admin Center.

Замена постоянной памяти

Если необходимо заменить модуль, завершившиеся сбоем, необходимо повторно подготовить диск PMem (см. шаги, описанные ранее).

При устранении неполадок может потребоваться использовать Remove-PmemDisk. Этот командлет удаляет определенный постоянный диск памяти. Мы можем удалить все текущие диски постоянной памяти, выполнив следующие командлеты:

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.

Важно!

Удаление постоянного диска памяти приводит к потере данных на этом диске.

Другой командлет, который может потребоваться, — .Initialize-PmemPhysicalDevice Этот командлет инициализирует области хранения меток на физических устройствах постоянной памяти и может очистить поврежденные сведения о хранилище меток на устройствах.

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.

Важно!

Initialize-PmemPhysicalDevice приводит к потере данных в постоянной памяти. Используйте его только в качестве крайнего средства для устранения проблем, связанных с постоянной памятью.

Постоянная память в действии на microsoft Ignite 2018

Чтобы увидеть некоторые преимущества постоянной памяти, давайте рассмотрим это видео от Microsoft Ignite 2018.

Любая система хранения, обеспечивающая отказоустойчивость, обязательно создает распределенные копии операций записи. Такие операции должны проходить через сеть и усиливать внутренний трафик записи. По этой причине абсолютные максимальные показатели производительности операций ввода-вывода в секунду обычно достигаются за счет измерения только операций чтения, особенно если система хранения имеет здравый смысл оптимизации для чтения из локальной копии, когда это возможно. Локальные дисковые пространства оптимизировано для этого.

При измерении с помощью только операций чтения кластер поставил 13 798 674 операций ввода-вывода в секунду.

Если вы watch видео внимательно, вы заметите, что еще более поразительной является задержка. Даже при более чем 13,7 М операций ввода-вывода в секунду файловая система Windows сообщает о задержке, которая постоянно меньше 40 мкс! (Это символ микросекунд, одна миллионная часть секунды.) Эта скорость на порядок быстрее, чем то, что типичные поставщики все вспышки гордо рекламируют сегодня.

Вместе Локальные дисковые пространства в Windows Server 2019 и постоянной памяти Intel® Optane™ DC обеспечивают высокую производительность. Этот тест производительности HCI с более чем 13,7 млн операций ввода-вывода в секунду, сопровождаемый прогнозируемой и чрезвычайно низкой задержкой, более чем в два раза соответствует предыдущему показателю производительности в отрасли — 6,7 млн операций ввода-вывода в секунду. Более того, на этот раз нам понадобилось только 12 узлов сервера, что на 25 процентов меньше, чем раньше.

Тестовое оборудование представляло собой 12-серверный кластер, который был настроен для использования трехстороннего зеркального отображения и разделителя томов ReFS. 12 x Intel® S2600WFT, 384 ГиБ памяти, 2 x 28 ядер CascadeLake, 1,5 ТБ постоянной памяти Intel® Optane™ DC в качестве кэша, 32 ТБ NVMe (4 x 8 ТБ Intel® DC P4510) в качестве емкости, 2 x Mellanox ConnectX-4 25 Гбит/с.

В следующей таблице показаны полные показатели производительности.

Тест производительности Производительность
4K 100 % случайного чтения 13,8 млн операций ввода-вывода в секунду
4K 90/10 % случайных операций чтения и записи 9,45 млн операций ввода-вывода в секунду
2 МБ последовательного чтения Пропускная способность 549 ГБ/с

Дальнейшие действия

Дополнительные сведения см. также в разделе: