Збираємо систему зберігання з NVMe RAID
Ідеї передових серверів зберігання даних спотикаються об побудову 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 з парністю - велика підмога в віртуальному середовищі і транзакційних додатках, з їх змішаними навантаженнями. Стабільно висока потоковая продуктивність, без провалів при відмовах і відновленні масиву, неоціненна в медійних додатках.