RAID масиви на NVMe

RAID масиви на NVMe
В тази статия ще разгледаме различни начини за организиране на RAID масиви, както и ще покажем един от първите хардуерни RAID контролери с поддръжка на NVMe.

Всички разнообразия на приложението на RAID технологията се срещат в сървърния сегмент. В клиентския сегмент се използва предимно софтуерен RAID0 или RAID1 на два диска.

В тази статия ще направим кратък обзор на RAID технологията, малко ръководство за създаване на RAID масиви с помощта на три различни инструмента и сравнение на производителността на виртуалните дискове при използване на всеки от начините.

Какво е RAID?

Уикипедия дава изчерпателно определение на RAID технологията:

RAID (англ. Redundant Array of Independent Disks — излишен масив от независими (самостоятелни) дискове) — технология за виртуализация на данни за обединяване на няколко физически дискови устройства в логичен модул за повишаване на отказоустойчивостта и производителността.

Конфигурацията на дисковите масиви и използваните технологии зависят от избрания район на RAID (RAID level). Уровните на RAID са стандартизирани в спецификацията Common RAID Disk Data Format. Тя описва множество нива на RAID, но най-разпространените се считат за RAID0, RAID1, RAID5 и RAID6.

RAID0, или Stripes, — това е ниво на RAID, което обединява два или повече физически диска в един логичен. Обемът на логичния диск при това е равен на сумата от обемите на физическите дискове, включени в масива. На това ниво RAID липсва излишност и отказ на един диск може да доведе до загуба на всички данни на виртуалния диск.

Нивото RAID1, или Mirror, създава идентични копия на данните на два или повече диска. Обемът на виртуалния диск при това не надвишава обема на минималния от физическите дискове. Данните на виртуалния диск RAID1 ще бъдат налични, докато поне един физически диск от масива работи. Използването на RAID1 добавя излишност, но е доста скъпо решение, тъй като в масиви от два и повече диска е достъпен обемът само на един.

Нивото RAID5 решава проблема с високите разходи. За създаване на масив с ниво RAID5 са необходими поне 3 диска, като масивът е устойчив на повреда на един диск. Данните в RAID5 се съхраняват на блокове с контрольни суми. Няма строго деление между дисковете с данни и дисковете с контрольни суми. Контрольните суми в RAID5 са резултат от операцията XOR, приложена към N-1 блока, всеки от които е взет от свой диск.

Въпреки че RAID-масивите увеличават излишността и предоставят резервиране, те не са подходящи за съхранение на резервни копия.

След кратък преглед на видовете RAID-масиви можем да преминем към устройствата и програмите, които позволяват събиране и използване на дискови масиви.

Видове RAID-контролери

Има два начина за създаване и използване на RAID-масиви: хардуерен и софтуерен. Ние ще разгледаме следните решения:

  • Linux Software RAID.
  • Intel® Virtual RAID On CPU.
  • LSI MegaRAID 9460-8i.

Важно е да се отбележи, че решението Intel® работи на чипсета, поради което възниква въпросът, дали е хардуерно решение или софтуерно. Например, хипервизорът VMWare ESXi счита VROC за софтуерно и не го поддържа официално.

Linux Software RAID

Софтуерните RAID-масиви в семейството на ОС Linux са доста разпространено решение както в клиентския, така и в сървърния сегмент. Всичко, което е необходимо за създаване на масив, е утилитата mdadm и няколко блочни устройства. Единственото изискване, което Linux Software RAID поставя на използваните носители, е те да бъдат блочни устройства, достъпни за системата.

Отсъствието на разходи за хардуер и софтуер е очевидно предимство на този метод. Linux Software RAID организира дискови масиви на цената на процесорно време. Списъкът с поддържани нива RAID и състоянието на текущите дискови масиви може да се види в файла mdstat, който се намира в корена на procfs:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] 
unused devices:

Поддръжката на нива RAID се добавя чрез включване на съответния модул на ядрото, например:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
unused devices:

Всички операции с дисковите масиви се извършват чрез утилитата в командния ред mdadm. Сглобяването на дисковия масив става с една команда:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

След изпълнението на тази команда в системата ще се появи блочно устройство /dev/md0, което представлява виртуален диск.

Intel® Виртуален RAID на CPU

RAID масиви на NVMeIntel® VROC Стандартен хардуерен ключ
Intel® Виртуален RAID на CPU (VROC) е софтуерно-хардуерна технология за създавене на RAID масиви на базата на чипсети Intel®. Тази технология е налична преимуществено за дънни платки, които поддържат процесори Intel® Xeon® Scalable. По подразбиране VROC не е наличен. За да бъде активиран, е необходимо да се инсталира хардуерният лицензен ключ VROC.

Стандартният лиценз VROC позволява създаването на дискови масиви с нива на RAID 0, 1 и 10. Премиум версията разширява този списък, като добавя поддръжка за RAID 5.

Технологията Intel® VROC в съвременните дънни платки работи заедно с Intel® Устройство за управление на обем (VMD), което осигурява възможност за хот-своп на устройства с интерфейс NVMe.

RAID масиви на NVMeIntel® VROC с стандартен лиценз Настройката на масивите се извършва чрез Setup Utility при стартиране на сървъра. На таба Advanced се появява опция Intel® Виртуален RAID на CPU, в която можете да настройвате дисковите масиви.

RAID масиви на NVMeСъздаване на RAID1 масив с два устройства
Технологията Intel® VROC има своите "козове в ръкава". Дисковите масиви, създадени с помощта на VROC, са съвместими с Linux Software RAID. Това означава, че състоянието на масивите може да се наблюдава в /proc/mdstat, а администрирането – чрез mdadm. Тази "особеност" е официално поддържана от Intel. След създаването на RAID1 в Setup Utility можете да наблюдавате синхронизацията на устройствата в ОС:

root@grindelwald:~# cat /proc/mdstat 
Персоналности : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : активен raid1 nvme2n1[1] nvme1n1[0]
      1855832064 блокове супер външен:/md127/0 [2/2] [UU]
      [>....................]  ресинхронизация =  1.3% (24207232/1855832064) завършване=148.2мин скорост=205933K/сек
      
md127 : неактивен nvme1n1[1](S) nvme2n1[0](S)
      10402 блока супер външен:imsm
       
неизползвани устройства: <none>

Забелязваме, че чрез mdadm не могат да се създават масиви на VROC (създадените масиви ще бъдат Linux SW RAID), но може да се сменят в тях дискове и да се разглобяват масиви.

LSI MegaRAID 9460-8i

RAID масиви на NVMeВъншен вид на контролера LSI MegaRAID 9460-8i
RAID контролерът е самостоятелно хардуерно решение. Контролерът работи само с устройства, свързани директно към него. Този RAID контролер поддържа до 24 устройства с интерфейс NVMe. Поддръжката на NVMe отличава този контролер от много други.

RAID масиви на NVMeГлавно меню на хардуерния контролер
Когато се използва режим UEFI, настройките на контролера се интегрират в Setup Utility. В сравнение с VROC, менюто на хардуерния контролер изглежда значително по-сложно.

RAID масиви на NVMeСъздаване на RAID1 на два диска
Обяснението на настройката на дисковите масиви на хардуерния контролер е достатъчно изтънчена тема и може да послужи за основа на отделна статия. Тук ще се ограничим само до създаването на RAID0 и RAID1 с настройки по подразбиране.

Диските, свързани към хардуерния контролер, не се виждат от операционната система. Вместо това контролерът „маскира“ всички RAID-масиви като SAS-накопители. Накопителите, свързани към контролера, но не част от дисковия масив, няма да бъдат достъпни за ОС.

root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9460-8i
Revision:             5.14
Compliance:           SPC-3
User Capacity:        1,999,844,147,200 bytes [1.99 TB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Logical Unit id:      0x000000000000000000000000000000
Serial number:        00000000000000000000000000000000
Device type:          disk
Local Time is:        Sun Oct 11 16:27:59 2020 MSK
SMART support is:     Unavailable - device lacks SMART capability.

Въпреки маскировката като SAS-накопители, масивите с NVMe ще работят с PCIe скорост. Обаче, такава особеност позволява зареждането от NVMe в режим Legacy.

Тестов стенд

Всеки от методите за организиране на дискови масиви има свои физически предимства и недостатъци. Но има ли разлика в производителността при работа с дискови масиви?

За постигане на максимална справедливост всички тестове ще бъдат проведени на един и същ сървър. Неговата конфигурация:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • Intel® VROC Standard Hardware Key;
  • 4x Intel® SSD DC P4510 U.2 2TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Тестовите обекти са P4510, от които едната половина е свързана към дънната платка, а другата — към RAID-контролера. На M.2 е инсталирана операционната система Ubuntu 20.04, а тестовете ще се извършват с помощта на fio версия 3.16.

Тестване

Първо ще проверим закъсненията при работа с диска. Тестът се изпълнява в един поток, размер на блока 4 КБ. Всеки тест продължава 5 минути. Преди началото, за съответното блочно устройство, се задава none като планиращ I/O. Командата fio изглежда следния начин:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw= --filename=

От резултатите на fio взимаме clat 99.00%. Резултатите са представени в таблицата по-долу.

Случайно четене, мкс
Случайна запис, мкс

Диск
112
78

Linux SW RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linux SW RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Освен забавянията при достъп до данните, желаем да видим производителността на виртуалните устройства и да я сравним с производителността на физическия диск. Команда за стартиране на fio:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --loops=1000 --runtime=300  --iodepth= --rw= --filename=

Производителността се измерва в брой операции за вход/изход. Резултатите са представени в таблицата по-долу.

Случайно четене 1 поток, IOPS
Случайна запис 1 поток, IOPS
Случайно четене 128 потока, IOPS
Случайна запис 128 потока, IOPS

Диск
11300
40700
453000
105000

Linux SW RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linux SW RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Лесно се вижда, че използването на хардуерен контролер води до увеличение на забавянията и спад на производителността в сравнение с софтуерните решения.

Заключение

Използването на хардуерни решения за изграждане на дискови масиви от два диска изглежда нерационално. Въпреки това, съществуват задачи, при които използването на RAID контролери е оправдано. С появата на контролери с поддръжка на интерфейса NVMe, потребителите имат възможност да използват по-бързи SSD в своите проекти.

RAID масиви на NVMe

Само регистрирани потребители могат да участват в анкетата. Влезте, моля.

Използвате ли RAID решения?

  • 29,6%Да, хардуерни решения32

  • 50,0%Да, софтуерни решения54

  • 16,7%Не18

  • 3,7%RAID не е нужен4

Гласували 108 потребители. Въздържали се 14 потребители.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster