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


Изучение и развертывание постоянной памяти

Область применения: 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 полностью поддерживается энергозависимая память, включая Storage Spaces Direct.

Технология постоянной памяти Windows Server 2016 Azure Stack HCI v20H2 и Windows Server 2019
NVDIMM-N в постоянном режиме Поддерживается Поддержанный
Intel Optane™ DC Persistent Memory в режиме прямого приложения Не поддерживается Поддержанный
Intel Optane™ DC Persistent Memory в режиме оперативной памяти Поддержанный Поддерживается

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

Для проверки конфигурации таких логических дисков можно использовать командлет 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.

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

При измерении с использованием только операций чтения кластер достиг 13 798 674 IOPS.

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

Вместе Storage Spaces Direct в 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 млн IOPS
4K 90/10% случайные операции чтения и записи 9,45 млн IOPS
2 МБ скорость последовательного чтения данных Пропускная способность 549 ГБ/с

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

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