NVMe RAID. Охота за производительностью

Издавна само понятие RAID было связано с экосистемой SAS, исторически используемой в серверах и хранилищах данных. Во времена механических дисков SAS RAID-контроллеры отвечали за производительность дисковых операций, непрерывность доступа к данным, предупреждение сбоев и восстановление после отказов. Появление SSD начало расшатывать позиции аппаратных RAID-контроллеров. С распространением NVMe SSD они окончательно превратились из ускорителей трафика в его тормоза. Причиной этого является узкое место подключения контроллеров к шине PCIe, пределы вычислительной способности их базовых I/O-процессоров, задержки стека SAS.

Протокол NVMe придумали для подключения накопителей непосредственно к шине PCIe, избегая промежуточных устройств между SSD и центральным процессором. Чем больше параллелизм (шинный и устройств обработки), тем эффективнее хранение данных на NVMe SSD.
Прошлое сопротивляется переменам. Основные производители RAID и серверов А-бренд стали на путь продвижения универсальных трехрежимных (Tri-mode, SAS/SATA/NVMe) решений: контроллеров, объединительных плат, NVMe SSD U.3-стандарта. Добрые намерения облегчить пользователю одновременную работу с разными дисками оборачиваются дополнительными затратами при отсутствии выгод.
Хотя трехрежимная объединительная плата технически может поддерживать три стандарта, добавление гораздо более производительных NVMe к смеси дисков SAS и SATA не имеет смысла. 16-полосное (x16 PCIe) подключение контроллера предоставляет простор для четырех x4 NVMe SSD – не слишком много для дорогого посредника. Накопители U.3 не имеют преимуществ над типичными U.2 – потому что фактически отличаются от них добавлением мультиплексора для управления существующими линиями PCIe на SSD.
Что приемлемо консерваторам, привычным к комфорту RAID-контроллера как единого центра управления данными, то плохо для принципиальных практиков, стремящихся к производительности. Поэтому на серверном рынке пользуются спросом альтернативные решения NVMe RAID, которые лучше реализуют возможности твердотельных накопителей на флэш-памяти. Не исчерпаны ресурсы программных RAID (полагающихся на CPU), есть разработки на базе GPU и FPGA.
CPU
"Бесплатный" программный NVMe RAID можно построить средствами ОС и файловых систем (Linux mdadm, Windows Storage Spaces, ZFS, btrfs).
Intel Virtual RAID on CPU (VROC) использует Intel VMD (Volume Management Device), встроенный в процессор Intel Xeon Scalable контроллер интерфейса NVMe. Intel VMD обеспечивает работу с RAID-массивами, горячую замену накопителей, корректную индикацию их статуса. VROC активируется ключом, продающимся в канале Intel. В начале этого года Intel внезапно решила прекратить поддержку VROC (поставки ключей), но впоследствии дала заднюю (видимо, под давлением основных производителей серверов – все же это недорогой способ «продать» защиту NVMe-томов в сервере).
Проблемой подобных программных RAID является чрезмерное потребление ресурсов хоста (СPU, RAM) и низкая производительность. Их кодовая база зарождалась еще во времена HDD и не обеспечивает высокий уровень параллелизма, огромное количество операций ввода-вывода и пропускную способность – собственно, для этого и создавался NVMe.
Израильский стартап Xinnor предлагает инновационный xiRAID , разработанный с нуля для использования с NVMe SSD. Поддерживается широкий диапазон уровней RAID 0/1/10/5/6/7.3/50/60/70. Благодаря глубокому распараллелированию обработки ввода/вывода и неблокированному пути данных массивы xiRAID имеют очень небольшие штрафы RAID и раскрывают потенциал флэш-накопителей. Это легкий программный модуль с щадящим использованием процессора и оперативной памяти. Текущая версия xiRAID совместима с основными дистрибутивами Linux .
xiRAID показывает очень высокую производительность: 150 ГБ/с в потоковом чтении, 30M/11M IOPS в чтении/записи произвольного доступа, при низких задержках < 0,5 мс. Показатели не снижаются в смешанных нагрузках ввода-вывода, нет заметных провалов производительности при восстановлении деградированного массива RAID.
Для сравнения, свежий аппаратный MegaRAID 9600-series Tri-mode RAID от Broadcom способен выдать 28 ГБ/c в потоковом чтении, 6.4M/1.1M IOPS в произвольном чтении/записи. VROC потянет 2M IOPS и 200K IOPS соответственно.
Использование xiRAID вместо аппаратного Tri-mode RAID-контроллера оправдано не только преимуществами быстродействия. Программный RAID не привязан к оборудованию, не зависит от его обновлений и модификаций, его невозможно физически повредить, он прост в миграции между системами хранения.
GPU
В последнее время привлекает внимание американо-тайваньский проект GRAID . Они разработали серверную карту SupremeRAID, разгружающую центральный процессор и работающую на базе Nvidia GPU. Ядра CUDA графического процессора вычисляют четности параллельно и ускоряют обработку RAID для доступа к NVMe SSD. Накопители подключаются непосредственно к CPU по PCIe. SupremeRAID управляет данными, не пропуская через себя дисковый трафик.
Есть два продукта: SR-1000 на основе Nvidia T1000 (Turing), однослотовой карты, легко монтируемой в сервер 1U, и SR-1010 в формате низкопрофильной карты двойной толщины Nvidia RTX A2000 (Ampere). Разработанные для операционных систем Linux и Windows, они поддерживают уровни RAID 0/1/10/5/6/JBOD. Лицензия на базовое программное обеспечение обслуживает до 32 дисков NVMe.

Источник: StorageReview
Более новая SR-1010 на шине PCIe 4 показывает пропускную способность 110 ГБ/с, скорость операций с произвольным доступом достигает 19M и 1,5M IOPS при чтении и записи соответственно. GRAID утверждает, что SR-1010 может восстановить неисправный SSD на 15 ТБ примерно за два часа – на зависть владельцам HDD-массивов, ожидающих восстановления подобной емкости несколько дней. Это и понятно: MegaRAID построен на RAID-on-Chip (RoC) Avago SAS 3916 с 2-ядерным процессором ARM A15 внутри. Противостояние картам SupremeRAID на GPU с тысячами ядер CUDA обречено.
В планах GRAID решение на GPU нового поколения с PCIe 5 с еще более высокими показателями в потоковых операциях.
Сравнение производительности
Сводная таблица скоростей Tri-mode RAID, программного xiRAID и GRAID на GPU:

Кому какой RAID
Основные ожидания от RAID остаются неизменными: производительность, отказоустойчивость, восстановление при замене накопителей, доступность (возможность продолжать работу после сбоев компонентов с сохранением целостности данных).
Далее все зависит от сценария использования. В скромных задачах необязательно гнаться за NVMe, хватит SATA SSD на бортовом контроллере RAID или под управлением диспетчера томов ОС. Объемные массивы с масштабированием по-прежнему будут обслуживаться традиционными аппаратными контроллерами RAID. Законное желание использовать производительность NVMe SSD на полную заставляет искать современные альтернативы с высоким уровнем параллелизма. Для NVMe под Linux программный xiRAID - лучшее и наиболее гибкое решение. Под Windows привлекательны варианты GRAID.
Будущий прогресс в масштабируемом производительном хранении данных связан с дезагрегацией, NVMe-oF хранилищами, расширением функционала RAID (как RAID5f ), его объединением с другими службами в составе технологического блока общей обработки данных (DPU).
Новые возможности позволяют превратить линейное прошлое RAID в «сад расходящихся тропок» с разными приоритетами.
Охотимся за производительностью.
С использованием материалов Xinnor и GRAID.
