Еще в 2011 году была выдвинута идея о том, что для работы с твердотельными накопителями нужен отдельный протокол. Специально созданная отраслевая группа занялась стандартизацией функций, регистров и набора команд нового протокола, получившего название Non-Volatile Memory Express (NVMe). Если известные протоколы SAS и SATA изначально предназначались для механических устройств хранения данных, то NVMe разрабатывался именно для твердотельных накопителей NAND. Его появление стало логическим следствием значительно более высокой производительности флеш-накопителей.
ОСОБЕННОСТИ NVMe
Этот протокол для доступа к энергонезависимой памяти создавался как один из протоколов для высокоскоростного подключения флеш-накопителя через шину PCI Express. При ее использовании прежний стек на основе SCSI не мог эффективно справляться с операциями ввода-вывода: слишком много прерываний, тысячи инструкций центрального процессора на блок данных. Требовалось не только решение, которое позволило бы заметно сократить число прерываний, высвободив процессорные циклы для продуктивной работы, но и метод передачи данных, позволяющий по возможности вообще обойтись без помощи процессора.
Протокол NVMe быстро развивался в контексте решения этих проблем. Прямой доступ к памяти по шине PCIe применялся в качестве проверенного метода перемещения данных. Механизм передачи данных push, при котором требуются передача запросов и получение подтверждений, был изменен на pull, чтобы принимающий узел мог получать данные по мере готовности. При таком подходе нагрузка на процессор снижается на несколько процентов. Вместо системы прерываний стали использовать метод очередей, где один набор очередей предназначался для команд, ожидающих передачи, а другой — для статусов завершения операций.
К числу недостатков протоколов SAS / SATA / Fibre Channel относится отсутствие приоритетов и идентификации отправителей. В NVMe поддерживается до 64 тыс. очередей, каждая из которых идентифицирует и отправителя, и приоритет. Это позволяет, например, передавать данные в конкретное приложение. Схема адресации становится еще более развитой в расширении протокола под названием NVMe over Fabrics.
Основные принципы, заложенные в основу NVMe, — стандартизация и уход от проприетарности, ориентация на флеш-память, поддержка приложений как корпоративного, так и потребительского класса. При его создании разработчики акцентировали внимание на сокращении «накладных расходов» при передаче данных, уменьшении задержек (см. табл. 1 и рис. 1) и улучшении работы с многопоточными нагрузками. Для корпоративных заказчиков предусмотрены развитые средства обнаружения ошибок, управления и шифрования.
Таблица 1. Типичная задержка при доступе к устройствам хранения разного типа |
Рис. 1. Сравнение показателей задержки и пропускной способности накопителей NVMe и SATA (по данным Samsung) |
Одно из наиболее важных отличий от прежних протоколов — поддержка значительно большего количества очередей, ведь механические устройства в основном «однопоточные», к тому же для HDD не нужны глубокие очереди. В то же время при использовании накопителей NAND возможна одновременная работа с несколькими микросхемами памяти, что позволяет ускорить операции чтения-записи (см. рис. 2). Технические особенности NVMe представлены в табл. 2.
Таблица 2. Технические особенности NVMe |
Контроллер NVMe является частью накопителя, а сам накопитель подключается как устройство PCI Express. Благодаря увеличенному количеству очередей и команд в NVMe обеспечивается высокая степень параллелизма, и в результате повышается эффективность работы с современными многоядерными процессорами. Благодаря «легковесности» протокола снижаются задержки при работе с флеш-памятью, а драйверы получаются «легкими».
NVMe дает намного лучшие результаты по сравнению с существующими дисковыми протоколами и может использоваться в качестве протокола серверной флеш-памяти PCIe.
УСТРОЙСТВА NVMe
История устройств NVMe началась не так давно — в 2015 году, когда для задач с тяжелыми нагрузками были выпущены карты флеш-памяти с поддержкой NVMe. В 2016-м появились накопители SSD форм-фактора 2,5″ на шине PCI с возможностью горячей замены, а также компактный форм-фактор M.2 (см. рис. 3). Протокол NVMe не зависит от форм-фактора накопителя. Это означает, что он может использоваться с SSD формата PCI Express, M.2 или SATA Express.
Рис. 3. Форматы накопителей PCIe, с которыми может использоваться NVMe, включают в себя карты расширения (AiC), M.2 и U.2 (по данным IBS) |
В 2017 году появились двухпортовые накопители (с доступом по двум путям PCI), а также SSD в форм-факторе вентильной матрицы, программируемой пользователем (Field-Programmable Gate Array, FPGA). Помимо этого, стала доступна новая разновидность устройств — Essential NVMe (NVMe начального уровня для корпоративного рынка) с более низким (до 12 Вт) энергопотреблением для замены SATA SSD (по производительности один такой накопитель соответствует трем SATA SSD). Предлагаются также дисковые полки с накопителями NVMe и подключением к СХД по протоколу PCI или InfiniBand.
NVMe поддерживается почти всеми системными платами Intel LGA1151 и LGA2011v3, многими системными платами с наборами системной логики Intel Z97/H97 и некоторыми моделями Intel Z87. Однако весь потенциал NVMe может быть задействован лишь в системах на LGA2011v3 с достаточным числом линий PCIe 3.0, но не в массовых LGA115х. Кроме того, чем старее системная плата, тем меньше вероятность того, что она поддерживает NVMe.
Сейчас свою продукцию на рынок поставляют четыре производителя флеш-памяти: Samsung, Xenix, Intel-Micron, Toshiba-SanDisk (последняя выпускает 40% памяти NAND в мире, из них 50% поставляет компания WD). В настоящее время наблюдается дефицит памяти NAND — очень высок спрос на SSD у производителей гаджетов и облачных провайдеров. Цены растут, сроки поставок увеличиваются.
В формировании экосистемы NVMe участвует целый ряд вендоров, включая E8, Enmotus (ПО тиринга), Excelero, Magnotics, Mellanox, Microsemi, Microsoft (Windows Server 2016 S2D, ReFS), отраслевые организации NVM Express (например, nvmexpress.org), Seagate, VMware (разработавшая драйвер NVMe для vSphere ESXi) и WD/Sandisk. По мере выхода новых продуктов с поддержкой NVMe расширяются и области применения данного протокола.
ДЛЯ ЧЕГО ИСПОЛЬЗУЕТСЯ NVMe?
С разнообразием устройств NVMe расширяется и спектр решаемых задач: в 2016 году накопители с поддержкой NVMe начали применяться не только для ускорения баз данных и кеширования, но и для построения горизонтально масштабируемых (scale-out) СХД с большим числом серверных узлов. Помимо этого, NVMe-устройства стали использоваться в системах виртуализации и облачных платформах (сейчас это основные их потребители).
Какие еще задачи позволяют решать устройства NVMe? Кроме «ускорения облаков», это «тяжелые» приложения для ПК, а перспективное и важное направление на текущий год — использование модулей NVMe для расширения оперативной памяти, поскольку высокая стоимость DRAM препятствует наращиванию емкости оперативной памяти (см. рис. 4).
Кроме того, многие корпоративные задачи, такие как поддержка инфраструктуры VDI, транзакционные нагрузки, вычисления в памяти и кеширование данных, требуют долговечных и высокопроизводительных твердотельных накопителей, рассчитанных на интенсивную запись.
По прогнозам IDC, доля накопителей PCIe с поддержкой NVMe в корпоративном сегменте будет расти (см. рис. 5), в потребительском NVMe тоже станет вытеснять SATA. Разработки IBM и Intel-Micron могут привести к стиранию границ между оперативной памятью и хранилищем данных в результате появления модулей расширения оперативной памяти, не таких быстрых, как DRAM, но гораздо более дешевых и емких. Это послужит толчком к дальнейшему развитию вычислений в памяти и многократно ускорит доступ к хранимым данным.
Рис. 5. По прогнозу IDC, в корпоративном сегменте флеш-накопители SATA все больше будут уступать свою долю устройствам PCIe и SAS |
NVMe И НОВЫЕ ТИПЫ ПАМЯТИ
Протокол NVMe является специализированной разработкой, в значительной мере нацеленной в будущее (см. рис. 6). Пока что NVMe используется с устройствами, работающими на основе флеш-памяти, но потенциальные возможности данного протокола раскроются еще больше при освоении новых стандартов энергонезависимой памяти с низкими задержками.
Рис. 6. Благодаря энергоэффективности памяти нового типа значительно снижается энергопотребление серверов. Появление таких серверов возможно в 2018–2020 годах (по данным HGST) |
В настоящее время создаются разные типы энергонезависимой памяти — с изменением состояния, PRM и PRAM, ReRAM/CBRAM и др. Над памятью RPM работают Intel/Micron, над ReRAM — SanDisk. В PCM (Phase Change Memory) используются халькогенидные стекла, меняющие агрегатное состояние и проводимость при нагреве (аморфное или кристаллическое). В отличие от обычного DVD, точка, представляющая единицу информации, имеет в такой памяти на порядок меньший размер. В зависимости от величины и длительности подачи напряжения на резисторе получается аморфная или кристаллическая структура, представляющая 0 или 1.
В памяти ReRAM применяется непроводящий оксид металла между электродами: при подаче напряжения между ними выстраивается или разрушается проводящая нить. Характеристики обоих типов памяти схожи и близки к оперативной, но при этом они почти не требуют затрат электроэнергии. Они характеризуются малыми задержками и долговечностью, которая на порядки выше, чем у NAND. NVMe сможет поддерживать и эти виды памяти.
Высокопроизводительный протокол NVMe с низкой задержкой используется сегодня в серверах и флеш-массивах в качестве внутреннего протокола, однако его можно инкапсулировать в другие протоколы, такие как Ethernet, FC и InfiniBand, что позволяет масштабировать NVMe до уровня сети.
НАКОПИТЕЛИ NVMе И ФОРМ-ФАКТОР M.2
M.2 — конфигурация форм-фактора SSD, которая по существу представляет собой небольшую карту с миниатюрным соединителем. M.2 заменяет форм-фактор mSATA, значительно больший по размеру. Он лучше подходит для компактных систем и систем высокой плотности. Спецификация для форм-фактора SSD M.2 предусматривает различные стандартные ширину и длину. Наиболее популярный размер — ширина 20 мм и длина от 30 до 110 мм.
Краевой соединитель на модуле M.2 вставляется в разъем, параллельный системной плате, а винт на другом конце разъема удерживает плату на месте. Это довольно просто и недорого (см. рис. 7).
Рис. 7. Краевой соединитель на модуле M.2 вставляется в разъем на системной плате, а винт удерживает плату на месте |
Для чего можно использовать устройства NVMe M.2? Например, в качестве локального кеш-буфера чтения-записи или загрузочного устройства в серверах, имеющих слоты M.2. Многие серверы и небольшие рабочие станции, в том числе Intel NUC, поддерживают M.2. Кроме того, на рынке имеются устройства M.2 от разных поставщиков, включая Micron и Samsung (см. рис. 8, 9).
Рис. 9. Результаты тестирования (AS Benchmark) NVMe-накопителя Samsung 960 Pro 512 GB SSD c PCIe Gen.3x4 с драйвером Samsung NVMe Driver 2.0.0.1607 (по данным портала superuser.com) |
M.2 поддерживает либо четыре линии PCIe 3.0, либо одно соединение SATA или USB 3.0. Поддержка PCIe 4.0 сейчас в стадии разработки. Этого достаточно для самых быстрых накопителей SSD. Форм-фактор M.2 позволяет получить очень компактные твердотельные накопители, у которых нет корпуса и других элементов SSD, что позволяет сэкономить место и снизить стоимость решения.
Малый форм-фактор SSD M.2 хорошо подходит для новых серверных архитектур и, как ожидается, поможет добиться еще большей плотности систем. В сервер 1U поместятся 12 накопителей M.2. Однако, хотя накопители М.2 SSD меньше, чем 2,5- или 3,5-дюймовые SSD, разница в размерах отражается на общей емкости памяти. Самый емкий накопитель M.2 вмещает 1 Тбайт данных, но анонсы 2,5-дюймовых твердотельных накопителей на 100 Тбайт указывают на то, что и в форм-факторе M.2 в 2017-м или в 2018 году должны появиться накопители емкостью 10 Тбайт или выше.
Сейчас накопитель Intel M.2 NVMe емкостью 1 TБайт стоит всего 360 долларов. Это ненамного больше, чем стоимость SATA SSD на 960 Гбайт (250 долларов), причем накопители NVMe намного производительнее. Учитывая то, что M.2 тоже предоставляет поддержку PCIe, в том числе подключение к локальной сети, можно создавать серверы с накопителями NVMe и портами 100 Gigabit Ethernet Remote Direct Memory Access для доступа к удаленному хранилищу.
Казалось бы, с появлением NVMe можно говорить об устаревании интерфейса SAS, однако поставки накопителей SAS продолжают расти, и аналитики прогнозируют сохранение этой тенденции, в отличие от спада продаж устройств SATA. По их мнению, сохранение SATA нужно лишь для того, чтобы поддерживать искусственную дифференциацию цен на накопители NVMe и SATA.
Ценообразование на рынке SSD гораздо сложнее, чем на рынке жестких дисков. В расчет приходится брать обеспечиваемые задержки, IOPS и долговечность накопителей, а также пропускную способность. Тем временем различие между корпоративными и потребительскими SSD размывается, поскольку крупные поставщики облачных решений используют для выбора нужных им продуктов другие критерии. В конце концов SATA может исчезнуть, уступив место NVMe/PCIe.
NVMe OVER FABRICS
В настоящее время накопители NVMe в основном заменяют устройства хранения с технологиями SATA и SCSI (SAS), применявшиеся в серверах и дисковых массивах, но разрабатываются методы повышения скорости доступа к NVMe в сетях хранения и коммутирующих фабриках. NVMe дополняется спецификацией NVMe over Fabrics, которая позволяет передавать команды поверх сетевых протоколов, при этом в качестве транспорта NVMe можно использовать сети Fibre Channel, Ethernet и InfiniBand.
В основе протокола NVMe over Fabrics лежит RDMA — прямой доступ к памяти удаленной системы, поэтому приложения и управляющее ПО не различают локальные и удаленные устройства, тем более что задержка не превышает 10 мс. Его особенности — минимальное влияние на производительность центрального процессора, транзакции на основе сообщений, до 65К очередей, комплексная защита данных, приоритизация исполнения команд и механизм арбитража, многопоточный ввод-вывод, поддержка множества адресных пространств и путей ввода-вывода (multipath i/o). NVMe over Fabrics — ключевая технология для построения масштабируемых флеш-массивов.
ЗАКЛЮЧЕНИЕ
Как ожидается, в 2017 году начнется массовый вывод устройств NVMe на рынок. По прогнозам Gartner, NVMe будет использоваться и в качестве внешнего сетевого интерфейса, подобного PCIe и InfiniBand. Например, этот накопитель может быть востребован в небольших специализированных сетях хранения, состоящих из десятков узлов, или в сетевых хранилищах. Однако основной областью применения NVMe останутся внутренние накопители. Благодаря М.2 SSD с поддержкой NVMe гиперконвергентные системы могут стать значительно мощнее уже в 2018 году, получить внушительную емкость хранения и гораздо более высокую пропускную способность.
Сергей Орлов, независимый эксперт (sorlov1958@yandex.ru)