Кратко

  • NVM Express, Inc. — некоммерческий отраслевой консорциум, который управляет семейством спецификаций NVMe и не выпускает ни SSD, ни контроллеры, ни коммутаторы, ни массивы хранения.
  • NVMe заменил узкую и преимущественно последовательную модель очередей эпохи жёстких дисков на несколько очередей отправки и завершения в памяти, что лучше подходит для параллельной флеш-памяти и многоядерных процессоров.
  • Одна и та же семантика контроллера, подсистемы и пространства имён работает и внутри сервера по PCIe, и через NVMe over Fabrics по сетям TCP или RDMA.
  • NVMe 2.x использует модульную архитектуру. Опубликованный 4 августа 2026 года набор спецификаций 2.4 включает Base, транспортные спецификации PCIe/RDMA/TCP, NVMe-MI, Boot и несколько специализированных наборов команд.
  • Протокол повышает компонуемость ёмкости, но не определяет файловые системы, надёжность хранения, RAID, коды стирания, проектирование сетей, операционную безопасность или согласованность приложений.

Команды хранения могут покидать сервер, не меняя базового языка

Запрос на чтение может быть отправлен в пространство имён на локальном SSD по PCIe или через fabric на удалённую подсистему. Меняются носитель, контроллер и путь, но модель команд, очередей и пространств имён в целом остаётся прежней.

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

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

Флеш-памяти нужен протокол, рассчитанный на параллелизм

Традиционные интерфейсы хранения формировались под механические поиски и малое число одновременных операций. Флеш-память способна обрабатывать множество запросов одновременно, а современные серверы имеют много ядер CPU.

NVMe использует очереди отправки и завершения, расположенные в памяти. Хост записывает команду, уведомляет контроллер через doorbell, а затем читает результат завершения через прерывание или опрос. Несколько пар очередей можно назначать разным ядрам или процессам, уменьшая конкуренцию за общие блокировки.

Реальный результат по-прежнему зависит от прошивки контроллера, топологии PCIe, NUMA, глубины очередей, стратегии прерываний и рабочей нагрузки. Переход на NVMe сам по себе не гарантирует фиксированный уровень производительности.

Консорциум отделяет управление протоколом от конкуренции за продукты

Работа над NVMe началась в конце 2000-х, спецификация 1.0 вышла в 2011 году, а NVM Express, Inc. была основана в 2014-м. В консорциум входят компании из индустрий процессоров, флеш-памяти, контроллеров, сетей, систем и облачных вычислений.

На момент завершения исследования президентом была Эмбер Хаффман из Google, казначеем — Кёртис Баллард из AMD, секретарём — Дэвид Аллен из Microchip; в открытом составе совета директоров числилось тринадцать представителей уровня promoter.

Консорциум отвечает за контрактную, процессную и сертификационную (compliance) базу, а члены продолжают конкурировать в чипах, прошивках, проектировании систем, поддержке и производительности. Участие в работе над стандартом не означает, что конкретный продукт реализует все функции.

NVMe 2.0 разбил разросшийся единый документ на модульное семейство

С появлением транспортов за пределами PCIe и новых моделей данных поддерживать всё в одной спецификации становилось всё труднее. Реструктуризация NVMe 2.0 в 2021 году разделила Base, наборы команд и транспорты.

Теперь TCP-транспорт может развиваться независимо, а Zoned Namespace расширяется без изменения всех традиционных контроллеров. Цена — покупателям приходится разбираться в более сложных комбинациях версий.

Опубликованный 4 августа 2026 года набор NVMe 2.4 включает Base 2.4, PCIe Transport 1.4, RDMA Transport 1.3, TCP Transport 1.3, NVMe-MI 2.2, Boot 1.4, а также наборы команд NVM, Key Value, Zoned Namespace, Computational Programs и Simple Log Memory. «NVMe 2.4» — это не один файл.

Очереди отправки и завершения приближают работу с хранилищем к ядрам CPU

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

Doorbell используется для уведомления о новой работе. Опрос может снизить некоторые задержки, но постоянно занимает CPU; объединение прерываний экономит CPU, но может увеличить ожидание. Глубина очереди влияет на утилизацию и хвостовую задержку.

Более глубокая очередь не всегда лучше. Она может маскировать насыщение и удлинять время в очереди. Корректная настройка должна исходить из рабочей нагрузки и SLA.

Контроллер, подсистема и пространство имён отделяют логическую точку доступа от физического носителя

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

Идентичность, которую видит хост, не обязана соответствовать конкретному физическому SSD. Массив может комбинировать разные носители и предоставлять стабильное пространство имён.

NVMe не определяет, как размещаются, реплицируются или защищаются данные. RAID, коды стирания, тонкое выделение, снапшоты и согласованность приложений остаются на уровне вышестоящих систем.

Административные команды так же важны, как обычный ввод-вывод

Административная очередь используется для идентификации устройства, создания очередей I/O, настройки параметров (features), чтения журналов, управления прошивкой, пространствами имён и безопасностью. Она задаёт среду, в которой выполняются обычные чтения и записи.

Ошибочная административная команда может удалить пространство имён, активировать неверную прошивку или изменить состояние питания. Права доступа, аудит и контроль изменений должны охватывать этот уровень.

Разделение административных и I/O-команд полезно для архитектуры, но не означает, что плоскость управления вторична. В fabric обе иногда зависят от одних и тех же сетевых и идентификационных механизмов.

PCIe приближает локальный путь к памяти и оборудованию

NVMe over PCIe взаимодействует с регистрами контроллера через разделяемую память на локальной шине — это прямой путь для SSD и карт внутри сервера.

Физическая близость не означает простую топологию. Устройство может находиться за PCIe-коммутатором, быть подключено к другому NUMA-узлу или разделять линии. Расположение CPU, памяти и устройства влияет на производительность.

Поэтому нельзя оценивать систему только по числу дисков. Аномальная задержка может возникать ещё до обращения к носителю — на пути PCIe внутри хоста.

NVMe over Fabrics превращает локальные отношения контроллеров в сетевой сервис

Спецификации NVMe-oF 1.0 и NVMe-MI 1.0 вышли 9 июня 2016 года. NVMe-oF доставляет капсулы команд и данные в удалённую подсистему: хост устанавливает очереди через fabric и обращается к пространствам имён.

Это делает возможным объединение ёмкости в пулы и разделение вычислений и хранилища. Хост можно заменить, не перемещая данные, которые остаются в общей системе.

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

Discovery controller упрощает динамическое подключение, но создаёт критическую зависимость

Хост может обратиться к discovery controller и получить список доступных подсистем, адресов и сервисов. Это избавляет от ручной настройки путей для каждого target и упрощает динамическое добавление и удаление ресурсов.

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

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

NVMe/TCP приносит fabric-хранилище в обычные IP-сети

Стандартизированные в 2019 году NVMe/TCP отображают команды и данные в TCP-соединения. Операторы могут использовать маршрутизируемый Ethernet, IP-инструменты, межсетевые экраны и привычные сетевые практики, не строя RDMA-фабрику.

Удобство сопровождается накладными расходами. Стек TCP, копирование, прерывания и CPU могут влиять на хвостовую задержку. Важны реализация в ядре, offload, размер передач и настройка.

Транспорт также определяет специфичную для хранилища структуру кадров и digest, а также поддерживает TLS. Поддержка TLS не означает, что он включён или что безопасность обеспечена.

NVMe/RDMA нацелен на низкую задержку, но требует более строгой инженерии fabric

RDMA снижает участие CPU за счёт пар очередей, зарегистрированной памяти и offload на сетевой карте; это важно для HPC и ИИ, где ценят микросекунды и такты CPU.

RDMA — это не единая сеть. Привязки RoCE, iWARP и другие предъявляют разные требования к перегрузке, потере пакетов, PFC, ECN и управлению памятью.

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

Multipath превращает резервирование в стратегический выбор хоста

К одному пространству имён можно обращаться через несколько контроллеров и путей. Хост решает, как балансировать нагрузку и выполнять переключение при отказе. Asymmetric Namespace Access помечает пути как optimized, non-optimized или unavailable.

Два канала могут по-прежнему делить коммутатор, контроллер, питание или маршрут. Подлинная независимость проверяется тестами на отказы.

Неверная политика может годами держать неисправный путь или отправлять I/O по более медленному пути. Избыточность следует оценивать по фактическому поведению, а не по количеству портов.

Резервирование координирует общий доступ, но не заменяет кластерный консенсус

Механизм reservation в NVMe позволяет хосту зарегистрироваться и зарезервировать пространство имён, предотвращая доступ неавторизованных писателей; он часто используется в кластерах и при переключении на резерв.

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

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

После ухода хранилища за пределы PCIe аутентификация и TLS становятся обязательными

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

NVMe определяет механизмы аутентификации, а NVMe/TCP может использовать TLS. Фактический уровень защиты зависит от ключей, сертификатов, ротации, алгоритмов, политик доступа и качества реализации. Наличие функции не означает завершённую настройку безопасности.

Обнаружение, административная плоскость и плоскость данных должны оцениваться вместе. Идентичность может быть подлинной, а права — слишком широкими.

NVMe-MI предоставляет путь управления, независимый от прикладного ввода-вывода

NVMe Management Interface позволяет инструментам обнаруживать подсистемы, читать состояние здоровья, инвентаризировать устройства и выполнять некоторые действия по управлению, даже если основной путь I/O не используется приложением.

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

NVMe-MI может интегрироваться с такими системами управления, как Redfish. Интеграция не означает объединения ответственности разных организаций по стандартизации и поставщиков.

Zoned Namespace открывает хостовому ПО ограничения носителя

ZNS делит ёмкость на зоны последовательной записи. Если ПО знает раскладку носителя, контроллеру может требоваться меньше внутренней сборки мусора, что повышает выносливость или предсказуемость.

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

ZNS демонстрирует компромисс NVMe: раскрытие большего поведения носителя повышает эффективность, но увеличивает стоимость переносимости ПО.

Key Value, Simple Log Memory и Computational Programs расширяют понятие пространства имён

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

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

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

Соответствие даёт полезные доказательства, но не сертифицирует сквозную производительность

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

Наличие в списке не означает определённого уровня задержки, выносливости, восстановления или безопасности в любой топологии. Опциональные функции и матрица драйвер-прошивка постоянно меняются.

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

Развязка хранилища отделяет ёмкость от сервера и перераспределяет ответственность

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

Сетевые, storage, платформенные, security- и прикладные команды оказываются в одном инциденте. Деградация fabric может выглядеть как проблема базы данных, а проблема прошивки контроллера — как потеря сети.

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

ИИ превращает задержки хранилища в прямые вычислительные издержки

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

TCP, RDMA, многопутевой доступ и общие пространства имён предлагают разные архитектуры. Выбор должен учитывать перегрузку, метаданные, поведение очередей, сбои и восстановление.

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

NVMe 2.4 показывает масштаб протокола и усиливает давление версий

Набор 2.4 согласует Base, транспорты, Boot, Management Interface и специализированные наборы команд. NVMe стал полноценным стеком, а не просто интерфейсом для SSD.

Хост может поддерживать Base 2.4, но не все наборы команд; TCP-контроллер может обладать иными функциями, чем RDMA-продукт. Заявления о поддержке должны быть конкретными.

Матрица драйверов, ОС, прошивок, транспортов и инструментов управления на практике и есть часть протокола.

NVMe делает хранилище компонуемым, но не упрощает сервис

Общий протокол снижает один вид издержек перехода: команды и пространства имён можно перенести с PCIe на fabric или от одного поставщика к другому. Однако затраты на миграцию данных, идентичность, безопасность, сеть, наблюдаемость и поддержку остаются.

Преимущество — более чёткое разделение протокола и продуктов. Риск — имя «NVMe» скрывает очень разные архитектуры.

Хранилище становится более программируемым и более распределённым, но остаётся системой целостности данных, которую необходимо уметь объяснять при сбоях.