Обзор NVMe (NVM Express)

NVM Express (NVMe) — это масштабируемый интерфейс хост-контроллера. Разработан для корпоративных и клиентских систем. NVMe подключает твердотельные диски (SSD) по шине PCI Express.
Интерфейс позволяет использовать все преимущества накопителей на энергонезависимой памяти. NVM Express применяется в вычислительных комплексах любого масштаба — от мобильных устройств до центров обработки данных.

Официальный сайт: https://nvmexpress.org (язык — английский)
Википедия: https://ruwikipedia.org/wiki/NVM_Express (язык — русский)

История NVMe

SSD существенно отличаются от НЖМД (HDD) скоростными характеристиками и внутренними процессами ввода/вывода. «Дисковые» протоколы SATA и SAS не позволяют использовать весь потенциал SSD, поэтому было решено создать «с нуля» протокол, учитывающий особенности твердотельной памяти.

На Intel Developer Forum в 2007 году был представлен NVMHCI (Non-Volatile Memory Host Controller Interface) — прототип будущего интерфейса.
Спецификации NVMe разрабатываются рабочей группой «NVM Express Workgroup», в которую входит более 90 компаний.
Первая версия 1.0 вышла в свет в марте 2011 года. В 2019 году готова спецификация NVM Express 1.4.

Спецификации и внесенные изменения публикуются на странице проекта: https://nvmexpress.org/resources/specifications/
Мы дублируем информацию: https://nvme.smb-solution.ru/index.php/main/spec/

Преимущества NVMe

Скорость

— Учтены особенные временные характеристики SSD
— Исключен дополнительный контроллер
— Параллельная передача данных по нескольким линиям PCI (локальное подключение)
— Сокращеннный набор команд
— Параллельная обработка запросов множеством ядер

Узнать больше Скоростные характеристики NVMe

Масштабируемость

— Скорость передачи будет расти с повышением скорости линии PCI
— Параллельная обработка запросов множеством ядер позволяет наращивать производительность системы хранения
— NVMe-oF предоставляет ресурсы удаленным серверам обработки

Узнать больше Сетевой интерфейс NVMe-oF


Эффективность

— Используются все преимущества современных твердотельных накопителей
— Раздельное использование дорогостоящего оборудования. Поддерживаются механизмы виртуализации и разделяемого использования
— Сокращение энергозатрат

Разработчики интерфейса комплексно подошли к проектированию эффективного перспективного интерфейса с учетом современных тенденций в отрасли.

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

Множество путей доступа и разделяемая логическая структура (shared namespace) позволяют строить системы высокой доступности и коллективно использовать высокоскоростные диски.

Поддержка виртуализации SR-IOV упрощает использование накопителей в виртуальных средах.

Благодаря механизмам сетевого расширения интерфейса NVMe-oF, разнесенные внутри датацентра и даже географически разнесенные серверы получают доступ к подсистеме NVMe SSD.

В то же время, на пути между потребителем данных — процессором и поставщиком — накопителем по возможности удалены все промежуточные звенья. Иллюстрация ниже показывает, насколько упрощается обработка запросов NVMe по сравнению с SAS/SATA интерфейсом. Современный процессор содержит PCIe контроллер внутри себя, уже несколько поколений — это не отдельный чип управления. Процессоры Intel Scalable вкупе с драйвером UEFI получили встроенный хост-контроллер NVMe. Все, прямее и короче уже некуда!

Это изображение имеет пустой атрибут alt; его имя файла - NVMe-stack-Flash-Memory-Summit-2017.jpg
Упрощение стека NVMe
Слайд из материалов Flash Memory Summit 2017

NVMe Zoned Namespaces

NVMe Zoned Namespaces (ZNS) ратифицирована NVM Express в июне 2020 как дополнение спецификации 1.4a.

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

Подробнее технология описана на странице NVMe ZNS.

NVMeDirect Framework

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

Это изображение имеет пустой атрибут alt; его имя файла - NVMe-direct-framework-Flash-Memory-Summit-2017.jpg
NVMe direct Framework
Слайд из материалов Flash Memory Summit 2017

«Прямой доступ к накопителю» может принести еще порядка 10% к производительности системы, что иллюстрируют рисунки ниже. Замеры делались на 4КБ операциях случайного доступа.

Это изображение имеет пустой атрибут alt; его имя файла - NVMe-direct-framework-performance.jpg
Сравнение «традиционного» доступа к накопителю через ядро ОС и прямого доступа NVMeDirect Framework
Слайд из материалов Flash Memory Summit 2017
Это изображение имеет пустой атрибут alt; его имя файла - NVMe-direct-framework-in-mongoDB.jpg
База данных MongoDB и NVMeDirect Framework.
+10,8% производительности

Перейдите в раздел «Оборудование NVMe» для знакомства с различными накопителями NVMe, контроллерами интерфейса, корпусами и платформами для подсистемы NVMe.

Примеры того, как объединить все в систему мы приводим в разделе «Строим систему«