Энергонезависимая память (PMEM): что это такое и как ее использовать

Последнее обновление: 02/12/2025
Автор: Исаак
  • Постоянная память (PMEM) создает новый уровень между DRAM и SSDсочетая низкую задержку с хранение нелетучий.
  • Он может функционировать как расширенная память или как сверхбыстрое хранилище в режимах App Direct, DAX, vPMem и vPMemDisk.
  • В Windows Linux и vSphere интегрируется как кэш, логический диск или виртуальный NVDIMM для ускорения базы данных и критические нагрузки.
  • Его ценность заключается в стратегических применениях, где скорость, устойчивость и емкость компенсируют более высокую стоимость по сравнению с NVMe.

Постоянная память PMEM

Постоянная память, или PMEM, стала одной из тех концепций, о которых все говорят, когда речь заходит об экстремальной производительности, базах данных в оперативной памяти или продвинутой виртуализации. Это не просто «еще один вид оперативной памяти» или «еще один тип диска» — это новый уровень в иерархии памяти и хранения данных, который объединяет лучшие стороны обоих миров.

Понимание того, что такое постоянная память, как она работает и чем отличается от традиционной DRAM, NVMe SSD или облачного хранилища, является ключом к принятию обоснованных технических решений. В этой статье мы разберем эту концепцию, рассмотрим ее применение (память, App Direct, vPMem, vPMemDisk и т. д.), как она интегрируется с Windows, Linux, vSphere и контейнерными средами, а также рассмотрим реальные примеры использования и ограничения.

Что такое постоянная память (ПМЭМ или PMem)?

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

Его характеристики находятся где-то между памятью и накопителем : он медленнее, чем чистая DRAM, но значительно быстрее и с меньшей задержкой, чем SSD, даже NVMe. Поскольку он установлен на шине памяти , данные находятся гораздо ближе к процессору, чем в любом традиционном устройстве хранения, поэтому доступ к ним измеряется в наносекундах, а не в микросекундах или миллисекундах.

Модули постоянной памяти обладают гораздо большей емкостью, чем DRAM (распространенные размеры — 128 ГБ, 256 ГБ и 512 ГБ на модуль), и значительно меньшей стоимостью за ГБ, чем оперативная память, хотя и выше, чем у NVMe SSD. Поэтому они используются в качестве промежуточного варианта: значительное расширение памяти без полной стоимости чистой DRAM, а также повышение скорости по сравнению с традиционными накопителями.

Ещё один ключевой момент — это сохранение данных: информация остаётся записанной даже при контролируемом выключении системы или из-за сбоя электропитания. Это позволяет использовать PMEM в качестве чрезвычайно быстрого хранилища для критически важных структур (метаданных, таблиц распределения, баз данных в оперативной памяти, журналов транзакций и т. д.).

Основы PMEM и режимы доступа

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

Методы доступа к PMEM в Windows и Linux обычно делятся на две основные группы:

  • Блокировать доступгде PMEM ведет себя как «классическое» устройство хранения данных, проходящее через файловую систему и стек хранения.
  • Прямой доступ (тип DAX), где он представлен как память с байтовой адресацией, что позволяет избежать использования значительной части стека хранения и дополнительно сократить задержку.

В режиме блочного доступа PMEM может быть отформатирован с использованием файловых систем, таких как NTFS или ReFS в Windows, или EXT4/XFS в Linux, и используется как сверхбыстрый диск. Этот режим рекомендуется использовать, когда совместимость и простота имеют ключевое значение, особенно для служб, не оптимизированных специально для постоянной памяти.

В режиме DAX приложение обращается к данным, напрямую отображая постоянную память в свое адресное пространство. Этот доступ является доступом к «памяти», а не к «блоку», что обеспечивает минимальную задержку. Однако, если программирование и настройка выполнены неправильно, существует риск потери данных в случае неполной записи. Поэтому рекомендуется комбинировать DAX с такими механизмами, как таблицы преобразования блоков (BTT).

Регионы, пространства имен и PmemDisk

Физические модули PMEM редко управляются по отдельности из операционной системы. Обычно их объединяют в группы для повышения производительности, емкости или упрощения администрирования, и это включает в себя несколько концепций.

Область постоянной памяти представляет собой группу из одного или нескольких модулей памяти, часто настраиваемых в BIOS или UEFI сервера. Они часто чередуются, то есть последовательные адреса памяти используются несколькими модулями для увеличения доступной пропускной способности.

На таких платформах, как Windows Server и Azure Local , в этих областях определены логические диски, называемые PmemDisk . PmemDisk — это просто непрерывный диапазон адресов энергонезависимой памяти, который представляется системе как жесткий диск или LUN.

Каждый модуль постоянной памяти содержит область хранения тегов. (область хранения меток, LSA), где хранятся метаданные конфигурации (пространства имен, членство в регионе и т. д.). Такие инструменты, как командлеты из PowerShell (Get-PmemDisk, Get-PmemPhysicalDevice, Get-PmemUnusedRegionи т. д.) позволяют увидеть, какие физические модули участвуют в каждом PmemDisk, проверить их состояние, а также создать или удалить логические диски постоянной памяти.

В средах ESXi/vSphere концепция аналогична, но терминология меняется: она относится к пространствам имен PMem , которые гипервизор обнаруживает и объединяет в логические тома с использованием таблиц GPT. Эти тома монтируются как хранилища данных PMem, которые затем предоставляются виртуальным машинам как vPMem или vPMemDisk.

  Рынок ноутбуков переживает кризис из-за стоимости и объема памяти.

Таблица трансляции блоков (BTT) и безопасность данных

Одно из ключевых отличий модулей постоянной памяти (PMEM) от твердотельных накопителей (SSD) заключается в том, что модули постоянной памяти не имеют такой же защиты от «частичной записи» или прерывания записи, как стандартные модули , которые можно найти во многих корпоративных флеш-накопителях.

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

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

В Windows BTT является свойством PmemDiskПоэтому его необходимо включить во время его создания (например, с помощью New-VHD ... -AddressAbstractionType BTT) или преобразовать существующий жесткий диск в BTT с помощью Convert-VHDПосле преобразования желательно заново сгенерировать идентификатор пространства имен с помощью Set-VHD -ResetDiskIdentifier чтобы избежать конфликтов, если оба диска находятся на одной виртуальной машине.

Аппаратное обеспечение постоянной памяти: NVDIMM и Optane

Постоянная память — это не единая физическая технология , а скорее семейство решений, которые ведут себя аналогично с точки зрения операционной системы. К числу наиболее известных относятся:

  • NVDIMM-NМодули, объединяющие DRAM и NAND-флеш-память с резервным питанием от батареи или суперконденсаторов. При включении питания данные загружаются в DRAM; при выключении или потере питания данные записываются во флеш-память.
  • Intel Энергонезависимая память Optane DC (DCPMM): модули на основе технологии 3D XPoint, разработанные для обеспечения задержек, близких к оперативной памяти, и емкости, значительно превосходящей DRAM.

В Windows Server 2016 и 2019, Azure Local и других платформах поддержка этих модулей различается в зависимости от версии, но общая идея остается той же: их можно использовать как чистую постоянную память (App Direct) или как «расширенную» память (режим памяти).

Optane DC PMem позволяет использовать три основных режима работы , которые обычно настраиваются в BIOS сервера:

  • Режим памятиPMEM выполняет функцию основной памяти высокой ёмкости, а DRAM используется как быстрый кэш для наиболее часто используемых данных. В этом режиме память ведёт себя как энергозависимая: при отключении питания данные теряются.
  • Режим прямого доступа к приложениюPMEM представляет собой постоянную энергонезависимую память, доступную операционной системе в виде областей хранения или памяти с байтовой адресацией. Это идеальный режим для баз данных в оперативной памяти, сверхбыстрых хранилищ и рабочих нагрузок, требующих сохранения данных.
  • Смешанный режимЧасть модуля зарезервирована для режима памяти, а другая часть — для App Direct, что позволяет сбалансировать расширенный объем энергозависимой памяти и постоянное хранилище.

Важно не путать «режим памяти» с DAX . В режиме памяти PMEM рассматривается как более медленная оперативная память, и данные теряются , в то время как DAX — это режим постоянного доступа к тому, который сохраняет данные между перезагрузками.

PMEM в средах виртуализации (vSphere и ESXi)

В vSphere поддержка постоянной памяти реализована начиная с версии 6.7 и более поздних. В таких средах модули PMEM хоста выступают в качестве высокоскоростного локального хранилища данных, к которому виртуальные машины могут получать доступ двумя способами.

vPMem (виртуальная постоянная память) предоставляет гостевой операционной системе доступ к PMEM в виде виртуального модуля NVDIMM . С точки зрения виртуальной машины, это выглядит так, как будто у хоста есть физические модули NVDIMM, что позволяет гостевой операционной системе и приложениям получать доступ к постоянной памяти в байтовом режиме.

vPMemDisk (виртуальный диск постоянной памяти) работает иначе: постоянная память представляется как виртуальный диск SCSI, содержимое которого физически находится в хранилище данных PMem хоста. Этот вариант очень полезен для старых операционных систем или приложений, работающих только с дисками.

PMEM резервируется для виртуальной машины при создании ее диска vPMem или добавлении устройства vNVDIMM и остается зарезервированным для этой виртуальной машины независимо от того, включена она или выключена, до тех пор, пока не будет удалена или перенесена. В кластерах суммарное количество PMEM, потребляемое всеми виртуальными машинами, не может превышать общий объем, доступный в пуле хостов.

Что касается обеспечения высокой доступности и миграции , здесь есть несколько нюансов: виртуальную машину с vPMem можно перенести только на хост, который также имеет доступ к PMEM, в то время как виртуальную машину с vPMemDisk можно переместить на хост без PMEM, если диск реплицируется или перемещается на другой тип хранилища с помощью Storage vMotion.

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

PMEM на Windows Server, Azure Local и Storage Spaces Direct

Windows Server 2019 и Azure Local интегрируют постоянную память с Storage Spaces Direct (S2D) , которая является основной технологией программно-определяемого хранилища (SDS) в этих средах. В данном случае PMEM может выступать в качестве сверхбыстрого кэширующего слоя для других устройств хранения.

  Полное руководство по установке Oracle Solaris 11 на архитектуру x86

Storage Spaces Direct распознает четыре основных типа накопителей : PMem, NVMe, SSD и HDD. В зависимости от их комбинации система автоматически настраивает, какой тип накопителя использовать в качестве кэша, а какой — для хранения данных, следуя следующей иерархии: PMem > NVMe > SSD > HDD.

Типичные комбинации :

  • PMem + NVMe + HDD: PMem как верхний кэш, NVMe и HDD как емкость.
  • NVMe + SSD: NVMe как кэш только для записи для SSD.
  • SSD + HDD: SSD как кэш для чтения/записи для HDD.

Когда кэш размещается поверх флэш-накопителей (например, NVMe на SSD) , он настраивается в режиме только записи . Чтение осуществляется непосредственно с накопителей, поскольку их задержка и так очень низкая, что позволяет кэшу сосредоточиться на консолидации операций записи и снижении износа.

Когда кэш расположен над жестким диском , он работает в режиме чтения и записи : он хранит данные о частых чтениях, чтобы избежать произвольного доступа к механическому диску, и поглощает всплески записей, переупорядочивая операции таким образом, чтобы они достигали дисков в максимально последовательной последовательности.

В сценариях со смешанными конфигурациями NVMe, SSD и HDD , накопители NVMe обычно выступают в качестве кэша как для SSD (только запись), так и для HDD (чтение-запись). Система динамически связывает кэширующие накопители с накопителями емкости в соотношении 1:N и перераспределяет ресурсы при добавлении или удалении накопителей.

В случае отказа кэширующих накопителей PMem или NVMe данные, которые еще не были загружены на накопители емкости, теряются только на этом сервере , но резервные копии на других узлах кластера (например, в конфигурации тройного зеркалирования) позволяют Storage Spaces Direct автоматически восстановить информацию.

Постоянная память в Linux (пример: Red Hat Enterprise Linux)

В корпоративных средах Linux, таких как RHELPMEM обычно представлен в виде устройств /dev/pmemX или как устройства NVDIMM, управляемые через инструменты ядра (например, ndctl).

В дистрибутивах Red Hat и других компаниях допускается использование модулей NVDIMM в следующих целях:

  • Блочное хранилище традиционный, отформатированный в EXT4, XFS и т. д.
  • Память с байтовой адресацией в режиме DAX, монтирование файловых систем с прямой поддержкой на устройствах pmem.
  • Системное корневое устройствоустановка самой операционной системы на NVDIMM для значительного сокращения времени загрузки Загрузка.

Подобно Windows , память класса хранения ( SCM ) относится к категории устройств, объединяющих хранение и память. Типичные сценарии использования включают в себя чрезвычайно ресурсоемкие базы данных, высокопроизводительные кэши, очереди сообщений и системы, которым необходимо минимизировать время восстановления после перезагрузки.

PMEM против DRAM, SSD, HDD и NVMe

Чтобы в полной мере понять ценность PMEM, стоит сравнить её с технологиями, которые мы уже используем ежедневно.

DRAM — это самая быстрая память общего назначения в сервере, но она также самая дорогая в пересчете на гигабайт и полностью энергозависимая. Типичные размеры модулей DIMM (16, 32, 64, 128 или 256 ГБ) увеличиваются в цене по мере роста емкости, ограничивая количество устанавливаемой памяти до того, как стоимость станет непомерно высокой.

SSD и NVMe обеспечивают сохранение данных и значительно более высокую производительность, чем HDD, но они по-прежнему являются устройствами хранения, расположенными «далеко» от процессора: они подключаются через SATA, SAS или PCIe, а не к шине памяти. Время доступа к ним, хотя и хорошее, не соответствует времени доступа PMEM, которое больше напоминает поведение оперативной памяти.

Жесткие диски по-прежнему выигрывают по стоимости за терабайт и общей емкости, но их задержка и производительность при случайном доступе на световые годы отстают от DRAM и PMEM. Поэтому в современных архитектурах они резервируются для «холодных» слоев данных и размещаются под слоями флэш-памяти и/или PMEM.

PMEM занимает промежуточное положение между DRAM и NVMe : немного медленнее, чем обычная память, но имеет гораздо большие размеры модулей, более конкурентоспособную цену за ГБ и преимущество в сохранении данных. По сравнению с SSD и NVMe, он предлагает меньшие задержки и доступ на уровне байтов, что делает его идеальным для рабочих нагрузок в оперативной памяти, но и обходится дороже.

Варианты использования постоянной памяти

Наибольшую выгоду от использования PMEM получают приложения, которые сочетают в себе потребность в скорости и надежности данных, или те, которые требуют больших объемов памяти без резкого увеличения стоимости.

Некоторые распространенные примеры использования :

  • Базы данных в памяти такие как SAP HANA, Oracle In-Memory, REDIS или MSSQL с оптимизацией для PMEM.
  • Большие рабочие нагрузки данных (Hadoop, Spark, массовый анализ), где важно иметь большие наборы данных, готовые к работе в памяти при запуске.
  • Платформы виртуализации которые хотят сократить задержку хранения для некоторых критически важных виртуальных машин.
  • Машинное обучение и IAгде сверхбыстрый доступ к тренировочным наборам может значительно сократить время обучения.
  • геномная секвенирование и научный анализ, где обрабатываются большие наборы данных, очень чувствительные ко времени обработки.
  • Обработка данных IoT в режиме реального времени, чтобы быстро реагировать на масштабные события, регистрируемые датчиками.
  • Профессиональный монтаж и рендеринг видеоза счет ускорения доступа к большим файлам и сложным проектам.
  • Игровые и графические движки в серверных или облачных игровых средах, чтобы минимизировать время загрузки уровней и ресурсов.

На уровне инфраструктуры он также используется в качестве постоянного кэширующего слоя поверх NVMe/SSD/HDD в таких системах, как Storage Spaces Direct, обеспечивая максимально близкое расположение новых записываемых или считываемых данных к процессору без ущерба для отказоустойчивости.

Постоянное хранение в приложениях и контейнерах

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

  Медицинская служба Центра обновления Windows | Что это такое, как это отключить

В классических монолитных приложениях сервер и хранилище обычно интегрированы, поэтому доступ к локальному диску или SAN относительно прост. Но когда мы переходим к распределенным архитектурам или микросервисам, распределенным по нескольким регионам, ситуация усложняется: система хранения должна быть глобально доступна, поддерживать согласованность и выдерживать частичные сбои.

С появлением контейнеров (Docker, Kubernetes и т. д.) проблема усугубляется. Контейнеры по своей природе эфемерны и не имеют состояния. Если контейнер уничтожается, все данные, хранящиеся исключительно в его внутренней файловой системе, теряются вместе с ним.

Именно поэтому используются тома и постоянные тома . Стандартный том в Docker может сохраниться после перезагрузки контейнера, но если контейнер удален и связанный с ним том удален, данные теряются. В отличие от них, постоянные тома (или привязанные монтирования ) расположены вне файловой системы контейнера, на хосте или в удаленном хранилище, и сохраняются даже при повторном создании приложения.

Такие платформы, как Kubernetes, вводят концепцию PersistentVolume (PV) и PersistentVolumeClaim (PVC) для абстрагирования физического хранилища (которое может представлять собой HDD, SSD, NAS, SAN, NFS, облачные решения или даже PMEM на хосте) и позволяют приложениям запрашивать "x гигабайт постоянного хранилища", не зная, что находится под ним.

Такие провайдеры, как Kinsta или аналогичные, используют постоянные тома Kubernetes.

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

В этом контексте PMEM может выступать в качестве сверхбыстрого бэкэнда для определенных постоянных томов (например, для баз данных с интенсивным вводом-выводом), в то время как остальные данные размещаются на SSD или HDD, обеспечивая баланс между производительностью и стоимостью.

Типы и архитектуры постоянного хранения

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

Объектно-ориентированная архитектура хранит данные в виде объектов с метаданными и идентификатором, а не в виде блоков или файлов. Она идеально подходит для неструктурированных данных (изображений, видео, документов) и широко используется в публичных облаках (S3, Azure Blob Storage и т. д.). Ключевым моментом здесь является масштабируемость и отказоустойчивость, а не сверхнизкая задержка.

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

Архитектура файловой системы основана на разделяемых или локальных файловых системах (EXT4, NTFS, NFS, SMB и т. д.). Она удобна для приложений, которым необходимо работать с файлами, используя пути, права доступа и иерархии, таких как веб-CMS, платформы для совместной работы, системы управления мультимедийным контентом и т. д.

PMEM лучше всего подходит для блочных и байтовых моделей памяти , но может быть интегрирован в файловую систему или даже использоваться в качестве сверхбыстрого бэкэнда для объектных решений, выступая в роли кэша метаданных или «горячих» данных.

Преимущества и ограничения постоянной памяти

Основные преимущества PMEM , которые обычно отмечаются в деловой среде, следующие:

  • Гораздо более высокая производительность по сравнению с традиционным хранилищем, особенно при небольших случайных чтениях/записях.
  • Уменьшенная задержка, находясь на шине памяти и имея возможность доступа по байтам.
  • Нет волатильности: данные сохраняются в случае отключения электроэнергии, сбоев или перезагрузок (в постоянных режимах).
  • Большая масштабируемость памяти по более низкой стоимости за ГБ, чем DRAM.
  • Лучшая совокупная стоимость владения Для сценариев, когда обновление DRAM будет чрезмерно дорогим, а твердотельный накопитель NVMe не обеспечивает желаемой задержки.
  • Расширенные параметры безопасности за счет возможности шифрования данных в модулях и обеспечения большей защиты «горячей» памяти.

Однако у этого подхода есть и свои недостатки и проблемы :

  • Более высокая стоимость, чем SSD и NVMeПоэтому нет смысла заменять все хранилища на PMEM.
  • Ограниченная совместимость с определенным оборудованием, операционными системами или гипервизорами, особенно в старых средах.
  • Ограниченные возможности и предложение продукцииособенно после прекращения выпуска таких линеек, как Intel Optane.
  • Сложность принятияЧтобы получить от этого максимум пользы, вам необходимо адаптировать приложения, настроить файловые системы и иметь четкую стратегию сохранения данных.

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

Хотя такие культовые продукты, как Intel Optane, были сняты с производства , потребности, которые удовлетворяла технология PMEM, остаются: больше памяти, быстрее, дешевле, чем DRAM, и с сохранением данных. Ожидается, что новые поколения памяти класса хранения, технологии многоуровневой памяти и гибридные решения продолжат исследовать это пространство между традиционной оперативной памятью и устройствами хранения данных.

Постоянное хранение данных в оперативной памяти (PMEM) и более широкое понятие сохранения данных стали ключевыми элементами современной инфраструктуры: они позволяют создавать более быстрые, масштабируемые и отказоустойчивые системы при условии, что их режимы работы, ограничения и соответствующие сценарии использования хорошо поняты, а также сбалансированно сочетаются с HDD, SSD, NVMe и распределенными хранилищами.

пространства для хранения данных напрямую с сервера Windows
Связанная статья:
Storage Spaces Direct на Windows Server: полное руководство S2D