Массивы накопителей на твердотельной памяти SSD разрабатывались для повышения быстродействия вычислений. Твердотельная память работает на порядок быстрее традиционных жёстких дисков HDD и способна достичь быстродействия в 1 миллион IOPS. Однако, до последнего времени для накопителей SSD использовались в основном традиционные интерфейсы SATA, которые достичь такого быстродействия при передаче по шине, и далее по сети, не позволяли.

В SATA SSD используется протокол AHCI (Advanced Host Controller Interface) для шины IDE. SATA разрабатывался под механические, а не твердотельные накопители, да и скорость может предложить не более 6Гбит/с. SAS на основе интерфейса малых вычислительных систем SCSI (Small Computer System Interface) несколько лучше, но также плохо подходит для твердотельных накопителей в виду сложности, архаичности и невысокой производительности (до 12Гбит/с). Другими словами, ни один из существовавших популярных интерфейсов накопителей данных с произвольным доступом не соответствовал новой отраслевой реальности – быстрым твердотельным накопителям. С одной стороны, оказались не востребованными особенности, связанные с механической спецификой старых накопителей, а с другой стороны отсутствовали возможности, ставшие остро необходимыми – например, множество параллельных и длинных очередей команд.

Традиционные способы подключения систем хранения данных SAN (Storage Area Network) в дата-центрах, в основном, следующие:

  • iSCSI: подключение СХД по протоколу IP для передачи команд SCSI через внутреннюю сеть Ethernet на скоростях до 100 ГБит/с в зависимости от возможностей локальной сетевой инфраструктуры;
  • SAS (Serial Attached SCSI): последовательный протокол «точка — точка» для передачи команд SCSI. Наиболее распространённый сейчас SAS-3 (он же SAS 12G) обеспечивает скорость 12 ГБит/с на каждую линию, которых в кабеле 4, т.е. суммарно до 48 Гбит/с.
  • FC (Fibre Channel): протокол, по которому команды SCSI передаются через оптоволоконные кабели. FC может обеспечивать скорость передачи данных от 1 до 128 ГБ/с и соединять на значительных расстояниях сотни и тысячи устройств при помощи специальных коммутаторов. Особенности этого протокола обеспечивают отказоустойчивость, гарантированную доставку и низкие задержки при передаче данных.

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

Чтобы раскрыть весь потенциал SSD, в 2014 году был специально разработан новый интерфейс NVMe (Non-Volatile Memory over PCI express). Как видно из названия, для доступа к накопителю используется непосредственно системная шина PCIe. Этот интерфейс полностью раскрывает возможности SSD и позволяет значительно улучшить время реакции приложений.

Его основные преимущества:

  • Неблокируемая многопоточность – одновременно параллельно может выполняться множество разных запросов.
  • Упрощённый набор команд (всего 13 команд, тогда как в старых протоколах количество команд доходит до 200) и фиксированная длина каждого запроса – 64 байта.
  • До 64000 очередей и до 64000 команд в каждой очереди позволяют полностью реализовать потенциал современных многопоточных приложений и виртуальных сред на многоядерных процессорах.

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

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

Поэтому, в 2016 году был разработан стандарт NVMe-oF (NVMe over Fabric). В нём высокая производительность NVMe доступна и за пределами отдельных кластеров СХД через «ткани хранения данных» (fabric) с использованием технологий Ethernet, Fiber Channel, RoCE и InfiniBand. В NVMe-oF используется новый протокол «прозрачного транспорта», который охватывает всю сеть, всё пространство fabric, а не связывает отдельные кластеры DAS, как в обычном NVMe. Такие «сетевые фабрики» используют обмен сообщениями без промежуточного хранения их в общей памяти между конечными точками пересылки данных.

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

Всё это позволило строить сети в дата-центрах более оптимально.

Кроме того, интерфейс NVMe-oF обеспечивает в сети СХД дата-центра практически такую же задержку, как и внутри шасси c DAS, но при этом значительно эффективнее обрабатывает операции ввода/вывода, чем интерфейс iSCSI. Вся архитектура сети при этом может параллельно обрабатывать несколько потоков данных, обеспечивая более высокую скорость работы приложений. NVMe-oF может обеспечивать скорости выше 3 ГБ/с. Это выше SATA SSD в пять раз, и в 30 раз выше, чем у механических накопителей.

Благодаря более высокой скорости сети и более широкой полосе пропускания NVMe-oF, приложения могут работать в общей сетевой среде СХД почти с такой же скоростью, как и в DAS. Согласно отчету Demartek, NVMe по Fibre Channel (NVMe-oF) обеспечивает на 58% более высокие значения IOPS и на 34% меньшую задержку, чем протокол Fibre Channel на основе SCSI.

В NVMe-oF точки назначения при пересылке данных (targets) представляются в виде пространств имён (namespaces), по типу узлов SCSI LUN. NVMe-oF даёт возможность вычислительным узлам (серверам и виртуальным машинам) связываться со своими СХД через гораздо большие расстояния, при этом, сохраняя очень низкую задержку на уровне микросекунд. А это приводит к значительному повышению производительности сети дата-центра в целом. Такая маленькая задержка, в т.ч., обусловлена и тем, что NVMe-oF может обрабатывать очереди пакетов гораздо быстрее, поскольку длина очереди может составлять до 65000, а не 256, как в SAS, и не 32 как в SATA.

Транспортные среды для NVMe over Fabric

В NVMe over Fabric может работать с разным транспортом: NVMe-oF c RDMA, NVMe-oF по Fiber Channel, и NVMe-oF с использованием конвергентного Ethernet (RDMA over Converged Ethernet).

NVMe-oF c RDMA

Технология RDMA (Remote Direct Memory Access), как следует из названия, даёт возможность передачи содержимого оперативной памяти с одного компьютера или СХД на другой. Ключевая особенность тут в том, что в этот процесс не вовлекается ни операционная система, ни процессор. Таким образом, сейчас это, возможно, наиболее эффективная транспортная среда для передачи данных с низкой задержкой и наименьшим потреблением вычислительных ресурсов серверов. RDMA может быть реализован поверх сетей TCP, Infiniband, Converged Ethernet (RoCE), Omnipath и iWARP. Наиболее популярны сейчас RoCE и iWARP.

Рис. 1. Обмен данными по традиционной сети и по сети с RDMA.

Рис. 1. Обмен данными по традиционной сети и по сети с RDMA.

NVMe-oF по Fibre Channel

Технология NVMe-oF over Fibre Channel (FC) часто также называется FC-NVMe, NVMe over FC, или иногда NVMe/FC. Fibre Channel – это популярный надёжный протокол передачи данных между СХД и серверами, он используется во многих сетях хранения данных SAN. В FC-NVMe команды обмена данными инкапсулируются во фреймы протокола FC в виде команд SCSI. Однако, трансляция команд SCSI в NVMe и обратно потребляет ресурсы и вносит дополнительную задержку.

NVMe-oF по TCP/IP

Использование стандартной сети Ethernet и IP оказывается наиболее гибким и недорогим для передачи данных NVMe. Однако, этот подход, как и в случае с FC, требует инкапсуляции команд NVMe, что вносит дополнительную задержку.

Итак…

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

Однако, NVMe-oF даёт возможность использовать преимущества NVMe накопителей в масштабе сети дата-центра и позволяет:

  • Более эффективно использовать NVMe накопители в СХД;
  • Снизить задержки при доступе к данным в СХД;

NVMe продолжает широко использоваться в персональных компьютерах, рабочих станциях и серверах для повышения производительности при работе с приложениями, требующими быстрого отклика и минимальной задержки при доступе к данным – высокопроизводительные вычисления, базы данных, анализ больших объёмов данных и т.п. Однако, в СХД и дата-центрах эта технология ещё только развивается и это обусловлено множеством факторов, присущих любой новой технологии. Один из таких факторов – наличие эффективных транспортных сред с низкой задержкой передачи данных.

Что касается разработки спецификаций на NVMe-oF, то сейчас имеется разработанная в октябре 2019 года версия 1.1.

Рис. 2. Дорожная карта стандартизации NVMe-oF (источник: NVM Express).

Рис. 2. Дорожная карта стандартизации NVMe-oF (источник: NVM Express).

К концу 2021 года ожидается выход версии NVMe 2.0, которая сохранит все возможности и преимущества NVMe-oF в части поддержки fabric.