Поделиться через


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

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

Внимание

Azure Stack HCI теперь является частью Azure Local. Выполняется переименование документации по продукту. Однако старые версии Azure Stack HCI, например 22H2, будут продолжать ссылаться на Azure Stack HCI и не отражают изменение имени. Подробнее.

Постоянная память (или 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 в режиме прямого приложения Не поддерживается Поддерживается
Постоянная память Intel Optane™ DC в режиме памяти Поддерживается Поддерживается

Intel Optane DC Persistent Memory поддерживает как временные, так и временные режимы работы Приложения Direct (постоянные). Чтобы использовать модули постоянной памяти в качестве хранилища, который является основным вариантом использования для рабочих нагрузок сервера, необходимо использовать режим 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

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

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

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

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

Примечание.

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

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

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

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 операций ввода-вывода в секунду.

Если вы внимательно смотрите видео, вы заметите, что что еще больше челюсти снижается, это задержка. Даже в более чем 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 ГБ/с

Следующие шаги

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