Збираємо систему зберігання з NVMe RAID

25.06.2020 | Сховища

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

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

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

Сервер зберігання на 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, що впевнено покриває запити «гарячого» зберігання.

Наш сервер вийшов таким:

  • ASUS RS500A-E10-RS12-U 650W RPSU        
  • CPU AMD EPYC 7302P 16 cores 3.0GHz /155W         
  • 8 x DDR4-3200 32GB Kingston {KSM32RD4/32MEI}
  • 8 x 3.84 TB Western Digital Ultrastar SN640 U.2 SSD
  • Mellanox MCX416A-BCAT ConnectX-4 EN 40/56GbE Dual-Port x16
  • RAIDIX 5.0.1

Цілі і підготовка

Нас цікавить швидкість відгуку сервера зберігання з 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ГБ / с отримана в повнодуплексному режимі мережевих карт, на змішаному паттернi з переважанням читання. На практиці немає чисто довільного або послідовного навантаження, є змішанi. Ми тепер хоча б знаємо межі досяжної продуктивності нашого сервера з 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 з парністю - велика підмога в віртуальному середовищі і транзакційних додатках, з їх змішаними навантаженнями. Стабільно висока потоковая продуктивність, без провалів при відмовах і відновленні масиву, неоціненна в медійних додатках.