Этот раздел адресуется тем, кто планирует систему со скоростным хранилищем большой емкости. Когда требуемый объем содержит группу NVMe SSD, объединенных в RAID массив.
Рассмотрим варианты объединения NVMe SSD в RAID и производительность каждого решения.
Доступны четыре варианта построения системы:
— программный средствами ОС;
— программно-аппаратный Intel VROC;
— аппаратный контроллер Broadcom MegaRAID;
— программно-определяемое хранилище (SDS).
Сценарии использования накопителя или массива NVMe SSD накопителей приведены в отдельной заметке.
В общей «картине» системы хранения не стоит забывать, что скоростные возможности интерфейса — это важный, но только один из множества параметров, влияющих на общую производительность.
Корпоративное основное хранилище ОБЯЗАНО быть защищенным избыточностью — это не обсуждается. Другое дело — что цена (в широком смысле, не только «стоимость») защищенности должна рассматриваться в комплексе. Принцип всех времен и народов: «Быстро, дешево, надежно — выбери два из трех!» никто не отменял.
Варианты строительства RAID массива из накопителей NVMe существенно различаются по стоимости реализации и производительности.
В нашем случае, когда подсистема NVMe является скоростной частью системы хранения сервера или группы серверов, производительность ставится во главу угла. Иначе — зачем вообще городить огород?
Максимальную скорость NVMe накопители показывают при непосредственном подключении к хост-контроллеру.
Без особенных потерь происходит объединение накопителей в RAID0, базирующееся на драйверах хост-контроллера или функциях операционной системы.
Производительность в RAID0 растет практически пропорционально количеству накопителей.
Не удивительно, что накопители в RAID0 представляются в тестах производительности систем в маркетинговых материалах, поскольку позволяют показать «красивые» цифры.
Однако, в реальной жизни организациям чаще требуется основное хранилище с защитой от потери данных. А это значит — RAID1, 5, 6, 50, 60.
Итак, смотрим плюсы-минусы вариантов, приняв во внимание предыдущие рассуждения об требуемом уровне RAID.
Показатели производительности подсистемы NVMe
В разных тестах используются SSD различных производителей и разные платформы тестирования. Но информационная база сейчас не настолько обширна, чтобы собрать воедино данные по всем вариантам использования конкретного накопителя. Приходится пользоваться тем — что есть. Важно понимать качественные изменения параметров.
В качестве показателей производительности для NVMe SSD и подсистемы NVMe в целом принят ряд метрик, показывающих скоростные характеристики для различных сценариев нагрузки (параметры и методики их измерения описаны в спецификации SNIA):
— IOPS (Input/Output Operations Per Second) — количество операций ввода/вывода в секунду. Это показатель скорости системы на случайных коротких запросах. Он зависит от размера блока, внутреннего устройства накопителя и настроек хост-контроллера;
— средняя и максимальная задержка передачи. Время, затраченное подсистемой хранения на получение запроса и подготовку ответа. Во многом определяется внутренним устройством контроллера накопителя. Средняя задержка замеряется на блоках трех размеров (8KiB, 4KiB, 0.5KiB) и в трех соотношениях чтение/запись (100/0, 65/35, 0/100) при глубине очереди =1;
— пропускная способность системы. Показатель скорости последовательного чтения/записи. Измеряется на операциях с блоками большого размера — 128k и 1m. Этот параметр больше относится к тестированию накопителей и показывает максимальную скорость выдачи последовательных данных без ограничений со стороны интерфейса. В тестах пропускная способность рассматривается с точки зрения влияния на нее программного обеспечения.
Эти показатели относятся к «синтетическим» тестовым системам. Группа тестовых программ пытается привязать показатели производительности к реальному применению. Они эмулируют «средние по больнице» сценарии, например, для баз данных или нагрузку, создаваемую пулом виртуальных машин.
Отдельный NVMe SSD
Нам нужна отправная точка. Какая-то печка, от которой можно плясать.
Показатели тестов скорости Intel SSD DC D3700 Series взяты у коллег из Рэйдикс (https://habr.com/ru/company/raidix/blog/420837/).
Тестировался 800GB SSD в 2.5″ исполнении с интерфейсом PCIe 3.0 2×2. В основе — MLC технология флеш.
В таблице измерение IOPS 800GB Intel DC D3700 Series накопителя.
Значения IOPS убывают почти пропорционально размеру блока передаваемых данных (391 000 — 1 700). Генерируемый при этом поток данных, который является произведением этих величин, остается, практически, постоянным.
Динамика кривой убывания IOPS при увеличении доли запросов на запись (391 000 — 84 000) менее крутая, но приводит к снижению показателя в 4,6 раза. Это объясняется внутренней логикой и процессами чтения/записи собственно накопителя SSD и к интерфейсу не имеет отношения.
Block size / R/W | 0/100 | 5/95 | 35/65 | 50/50 | 65/35 | 95/5 | 100/0 |
4k | 84 018 | 91 394 | 117 272 | 133 059 | 175 087 | 281 131 | 390 969 |
8k | 42 603 | 45 736 | 58 980 | 67 321 | 101 357 | 171 317 | 216 551 |
16k | 21 619 | 22 835 | 29 704 | 33 821 | 52 553 | 89 731 | 108 347 |
32k | 10 929 | 11 322 | 14 787 | 16 811 | 26 578 | 47 185 | 50 671 |
64k | 5 494 | 5 672 | 7 343 | 8 286 | 13 130 | 23 884 | 27 249 |
128k | 2 748 | 2 805 | 3 618 | 4 295 | 6 507 | 11 998 | 13 631 |
1m | 352 | 355 | 451 | 685 | 830 | 1 574 | 1 703 |
Для более наглядного представления, данные выведены в диаграмме:
Задержка также зависит от размера блока и соотношения Чтение/Запись, но масштаб изменений значительно меньше.
Средняя задержка накопителя 800GB Intel DC D3700 Series в зависимости от размера блока и доли запросов на чтение в миллисекундах:
Block size/ R/W | 100/0 | 65/35 | 0/100 |
4k | 0,027 | 0,072 | 0,099 |
8k | 0,030 | 0,093 | 0,122 |
16k | 0,047 | 0,137 | 0,164 |
Максимальная задержка в миллисекундах:
Block size/ R/W | 100/0 | 65/35 | 0/100 |
4k | 1,510 | 4,715 | 6,985 |
8k | 1,409 | 4,312 | 7,000 |
16k | 1,106 | 4,644 | 7,007 |
Пропускная способность подсистемы с одним NVMe SSD:
1MB последовательная запись — 634 MBps.
1MB последовательное чтение — 1707 MBps.
128kB последовательная запись — 620 MBps.
128kB последовательное чтение — 1704 MBps.
Теперь мы представляем как размер блока и соотношение Чтение/Запись влияют на скоростные показатели накопителя NVMe. В дальнейшем можно рассматривать сокращенные результаты испытаний (чтобы не загромождать обилием цифр), а в некоторых случаях оценочно экстраполировать результаты неполных испытаний на сочетание параметров, с которым тесты не проводились.
Группа из 12 NVMe SSD (JBOD)
Еще одна отправная точка — несколько накопителей не объединенных ни в какой массив. Она нужна для сравнения производительности. JBOD — группа накопителей без чередования (в отличие от RAID0), в котором единое логическое пространство распределено по жёстким дискам последовательно.
Сравнительные результаты по показателю IOPS для одного NVMe SSD и группы из 12 приведены в таблице и показаны на диаграмме ниже:
Чтение/запись 4k | 0/100 | 5/95 | 35/65 | 50/50 | 65/35 | 95/5 | 100/0 |
12xNVMe | 1 363 079 | 1 562 345 | 1 944 105 | 2 047 612 | 2 176 476 | 3 441 311 | 4 202 364 |
1xNVMe | 84 018 | 91 394 | 117 272 | 133 059 | 175 087 | 281 131 | 390 969 |
Пропускная способность NVMe подсистемы из 12 накопителей практически линейно увеличивается пропорционально их числу:
1MБ последовательная запись — 8612 MBps.
1MБ последовательное чтение — 20481 MBps.
128Kб последовательная запись — 7500 MBps.
128Kб последовательное чтение — 20400 MBps.
Программные RAID средствами ОС и файловой системы
Стоимость решения: низкая (бесплатно).
ОС: Linux.
Производительность: приемлемая (RAID0, преимущественное чтение), невысокая-низкая (RAID5, 6, высокая доля записи).
Применение: хранилище временной информации, кэш системы, основное хранилище небольшой емкости с защитой зеркалом (RAID1, RAID10).
Производительность программных реализаций RAID массива рассмотрена в заметке «Сравнение производительности программных RAID«.
Решения, построенные на утилите mdadm операционной системы Linux и на встроенных средствах файловой системы ZFX самые дешевые. По производительности только RAID0 mdadm можно рекомендовать для использования в качестве кэш или временного накопителя и RAID6 mdadm для основного хранилища с 90-100% долей операций чтения.
Решение на Intel VROC
Стоимость решения: низкая.
ОС: Linux, Windows.
Производительность: средняя (RAID0, 1, 10), невысокая (RAID5).
Применение: хранилище временной информации, кэш системы, основное хранилище.
VROC описан на отдельной странице.
Это не очень дорогое (15 — 30 тысяч рублей) программное решение на уровне драйвера. Позволяет формировать RAID0, 1, 10 (стандартная конфигурация) или в том числе RAID5 (премиум).
На диаграмме ниже представлены результаты тестов системы из 24 NVMe SSD Ultrastar DC SN620, объединенных в RAID5 при помощи Intel VROC.
Показатель IOPS очень резко (в восемь раз) падает при соотношении Чтение/Запись 90/10. Еще в три раза — при увеличении доли записи до 30%.
Еще одно исследование производительности NVMe системы представлено на StorageReview
Испытывалась система с восемью Intel DC P4510 NVMe SSD под управлением Intel VROC.
В презентации другие системы координат и другое представление результатов.
Вывод, выведенный изданием: «Intel VROC реализован хорошо и обеспечивает ожидаемые результаты на хорошо спроектированной платформе».
При этом, правда, в резюме умалчиваются достижения в RAID5, поскольку они невысоки.
Ниже — один из слайдов с итогами теста «SQL 90-10» (чтение-запись)
RAID массив на SAS/SATA/NVMe контроллере
Стоимость решения: невысокая.
ОС: Linux, Windows.
Производительность: сравнима с решением на VROC.
Применение: основное хранилище с защитой (RAID5, RAID6).
Контроллеры Broadcom описаны в разделе Оборудование. MegaRAID допускает прямое подключение до 4 накопителей или большее количество через коммутатор. Его имеет смысл ставить в систему в двух случаях: 1) сервер не поддерживает NVMe интерфейс; 2) не хочется забирать мощности центральных процессоров для непрофильной загрузки.
Для реализации решения помимо собственно контроллера (30 — 70 тыс. руб.) требуется корпус или корзина в корпус для установки SSD выбранного форм-фактора (как правило, U.2, но есть решения даже для M.2 накопителей — корзины ICY DOCK, например) и набор соответствующих кабелей.
Тестов производительности контроллера Broadcom в паре с NVMe накопителями практически не опубликовано. Мы представляем сравнительные тесты с VROC: Сравнение производительности Tri-Mode Broadcom MegaRAID 9460-16i и Intel VROC.
Про уровень производительности новых контроллеров от самого производителя известно лишь очень общее: «задержка снижена на 50%, производительность увеличена на 60% по сравнению с предыдущим поколением контроллеров». (https://www.broadcom.com/solutions/enterprise-storage/nvme)
Программно-определяемое хранилище (SDS).
Стоимость решения: высокая.
ОС: Linux, Windows.
Производительность: высокая.
Применение: Масштабируемое основное хранилище большой емкости с защитой данных от потери. Высокоскоростное хранилище для группы серверов.
Программно-определяемое хранилище — отдельная обширная тема. Она рассматривается в разделе Программно-определяемое хранилище.
SDS использует мощности современных процессоров и распределение нагрузки между узлами. За счет этого SDS может показывать производительность, значительно превышающую возможности аппаратных дисковых контроллеров.
С учетом того, что аппаратных NVMe RAID контроллеров, мягко говоря, немного, приходится меряться с тем — что есть.
Есть сравнительные тесты RAIDIX ERA компании Рэйдикс с программными RAID на сервере с 12х Intel DC D3700 SSD (материалы Flash Memory Summit 2018)
Подробно тесты и результаты описаны в упоминавшемся уже отчете на habr, на основе которых мы сравнивали программные RAID.
На следующей диаграмме — сравнение того же RAIDIX ERA с Intel VROC на сервере с 24х Ultrastar DC SN620 3.2TB объединенных в RAID5.
Некоторые тесты производительности различных решений на NVMe SSD приводятся в NVMe хранилище. Тесты производительности.