Собираем систему хранения с NVMe RAID

25.06.2020 | Хранилища

Идеи передовых серверов хранения данных спотыкаются о построение RAID-массивов из NVMe-накопителей: с помощью трехрежимных (tri-mode) аппаратных RAID-контроллеров, полупрограммным Intel VROC или программными утилитами. Tri-mode контроллеры пропускают запросы I/O через стек SAS, ограничивают совокупную полосу доступа 8-16 линиями PCIe и противоречат исходной цели NVMe - убрать посредников между CPU и накопителями. Intel VROC специфичен, привязан к платформам и показывает невысокую продуктивность. Программные массивы под Linux собирают утилитой MDRAID, в ZFS-хранилищах - встроенным менеджером томов, но, как справедливо замечено в обзоре программных массивов из NVMe-устройств, cтандартных средств недостаточно для демонстрации возможностей NVMe.

Выбор программного ядра и базовой платформы

Пример специализированной ОС под системы хранения на SSD  - RAIDIX 5.x на основе программного модуля RAIDIX ERA. Производительность NVMe раскрывает использование параллельных вычислений без блокировок (lockless-архитектуры). Благодаря размещению данных на векторных регистрах многоядерных CPU достигается быстрый расчет контрольных сумм, без просадки производительности под смешанной нагрузкой и в режиме восстановления массива.

Cерверу хранения на NVMe SSD нужна подходящая база. Под задачу годится однопроцессорная платформа ASUS RS500A-E10-RS12-U с AMD EPYC 7xx2P: есть запас по ядрам CPU и RAM, в 1U помещается до 12 накопителей U.2 (SFF NVMe SSD) – таких как Western Digital Ultrastar DC SN640. У SSD этой линейки емкость от 800GB до 7.68TB, что уверенно покрывает запросы «горячего» хранения.

Наш сервер получился таким:         

  •  

Цели и подготовка 

Нас интересует скорость отклика сервера хранения с NVMe RAID под управлением RAIDIX и производительность обмена данными c инициатором. Так как количество SSD невелико, создали RAID 5, на нем сформировали 4 LUN - чтобы иметь возможность распределения нагрузки на хранилище. Выбрали интерфейс Ethernet 40 Gb/s, с агрегацией портов (MPIO) на адаптерах Mellanox - для повышения пропускной способности канала. Mellanox поддерживает RDMA, прямое обращение к данным удалённого устройства без привлечения ОС клиента и хранилища. Активировали протокол iSER (iSCSI extensions for RDMA) – он позволяет передавать данные непосредственно в буферы SCSI и из них, без создания промежуточных копий. Исключаются накладные расходы на TCP/IP.

Тесты и результаты

Задержки обращения и производительность NVMe RAID на коротких запросах мы оценивали тестовой утилитой fio, пропускную способность в многопоточном доступе –  fio и frametest.

Тест fio удобен охватом профилей нагрузок. Наши метрики:

  • IOPs в произвольном доступе блоками 4k, при соотношении запросов чтения и записи 0/100, 30/70, 50/50, 70/30, 100/0;
  • задержки (latency) на тех же операциях;
  • пропускная способность (throughput) при обращении блоками 1М и глубиной очереди 1…32.

Произвольный доступ дал такую картину:

R/W, %

KIOPS

Latency, ms

0 / 100

374

0.34

30 / 70

343

0.37

50 / 50

388

0.33

70 / 30

477

0.27

100 / 0

550

0.23

 

Около полумиллиона IOPS при среднем времени отклика меньше 1 мс – очень приличный показатель. Профиль нагрузок 30/70 характерен для виртуальной среды, 70/30 – для OLTP-приложений.

Оценки пропускной способности:

Скорость ~12ГБ/с получена в полнодуплексном режиме сетевых карт, на смешанном паттерне с преобладанием чтения. На практике нет чисто произвольной или последовательной нагрузки, есть смешанная. Мы теперь хотя бы знаем пределы достижимой производительности нашего сервера с NVMe RAID.

Утилита frametest моделирует параллельную рабочую нагрузку с большим размером блока данных. Ее используют для оценки пригодности системы хранения под работу с видео высокого разрешения –хранилище должно обслуживать множественные обращения с низкими задержками на стабильно высокой скорости, без провалов («гребенки») и потери кадров.

Тест чтения/записи несжатого видео 4К в четыре потока. Одна папка, 5000 кадров, размер кадра 50МБ:

 

Чтение

Запись

Data rate

8780.10 MB/s

7593.97 MB/s

Frame rate

180.3 fps

156.0 fps

Записали видео в четыре разные папки для тестов чтения. Чтение из четырех папок одновременно, четыре потока 4К:

 

Data rate  

Frame rate

#1

2226.29 MB/s

45.7 fps

#2

2214.44 MB/s

45.5 fps

#3

2239.55 MB/s

46.0 fps

#4

2226.84 MB/s

45.7 fps

 

Кому?

Высокая производительность сервера хранения на NVMe RAID с четностью – большое подспорье в виртуальной среде и транзакционных приложениях, с их смешанными нагрузками. Стабильно высокая потоковая производительность, без провалов при отказах и восстановлении массива, неоценима в медийных приложениях.