RAID-масівы на NVMe

RAID-масівы на NVMe
У дадзеным артыкуле мы раскажам пра розныя спосабы арганізацыі RAID-масіваў, а таксама пакажам адзін з першых апаратных RAID-кантролераў з падтрымкай NVMe.

Уся разнастайнасць ужыванняў тэхналогіі RAID сустракаецца ў серверным сегменце. У кліенцкім сегменце часцей за ўсё выкарыстоўваецца выключна праграмны RAID0 або RAID1 на два дыскі.

У гэтым артыкуле будзе кароткі агляд тэхналогіі RAID, невялікая інструкцыя па стварэнні RAID-масіўаў з дапамогай трох розных прылад і параўнанне прадукцыйнасці віртуальных дыскаў пры выкарыстанні кожнага са спосабаў.

Што такое RAID?

Вікіпедыя дае вычарпальнае вызначэнне тэхналогіі RAID:

RAID (Па-ангельску Лішні масіў незалежных дыскаў - залішні масіў незалежных (самастойных) дыскаў) - тэхналогія віртуалізацыі дадзеных для аб'яднання некалькіх фізічных дыскавых прылад у лагічны модуль для павышэння адмоваўстойлівасці і прадукцыйнасці.

Канфігурацыя дыскавых масіваў і выкарыстоўваныя пры гэтым тэхналогіі залежаць ад абранага ўзроўню RAID (RAID level). Узроўні RAID стандартызаваны ў спецыфікацыі Common RAID Disk Data Format. Яна апісвае мноства ўзроўняў RAID, аднак самымі распаўсюджанымі прынята лічыць RAID0, RAID1, RAID5 і RAID6.

RAID0, Або Паласы, - гэта ўзровень RAID, які аб'ядноўвае два ці больш фізічных дыска ў адзін лагічны. Аб'ём лагічнай кружэлкі пры гэтым роўны суме аб'ёмаў фізічных кружэлак, уваходных у масіў. На гэтым узроўні RAID адсутнічае надмернасць, а выйсце з ладу адной кружэлкі можа прывесці да страты ўсіх дадзеных у віртуальнай кружэлцы.

Узровень RAID1, Або Люстэрка, стварае ідэнтычныя копіі дадзеных на двух і больш дысках. Аб'ём віртуальнай кружэлкі пры гэтым не перавышае аб'ёму мінімальнага з фізічных кружэлак. Дадзеныя на віртуальнай кружэлцы 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: <none>

Падтрымка узроўняў RAID дадаецца падлучэннем адпаведнага модуля ядра, напрыклад:

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

Усе аперацыі з дыскавымі масівамі вырабляюцца праз утыліту каманднага радка mdadm. Зборка дыскавага масіва вырабляецца ў адну каманду:

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

Пасля выканання гэтай каманды ў сістэме з'явіцца блокавая прылада /dev/md0, якая ўяўляе з цябе віртуальную кружэлку.

Intel Virtual RAID On CPU

RAID-масівы на NVMeIntel® VROC Standard Hardware Key
Intel® Virtual RAID On CPU (VROC) – гэта праграмна-апаратная тэхналогія для стварэння RAID-масіваў на базе чыпсэтаў Intel®. Дадзеная тэхналогія даступная ў асноўным для матчыных поплаткаў з падтрымкай працэсараў Intel ® Xeon ® Scalable. Па змаўчанні VROC недаступны. Для яго актывацыі неабходна ўстанавіць апаратны ліцэнзійны ключ VROC.

Стандартная ліцэнзія VROC дазваляе ствараць дыскавыя масівы з 0, 1 і 10 узроўнямі RAID. Прэміяльная версія пашырае гэты спіс падтрымкай RAID5.

Тэхналогія Intel VROC ў сучасных матчыных поплатках працуе сумесна з Intel Volume Management Device (VMD), якая забяспечвае магчымасць гарачай замены для назапашвальнікаў з інтэрфейсам NVMe.

RAID-масівы на NVMeIntel® VROC са стандартнай ліцэнзіяй Настройка масіваў ажыццяўляецца праз Setup Utility пры загрузцы сервера. На ўкладцы прасунуты з'яўляецца пункт Intel Virtual RAID on CPU, у якім можна наладзіць дыскавыя масівы.

RAID-масівы на NVMeСтварэнне масіва RAID1 на двух назапашвальніках
Тэхналогія Intel ® VROC мае свае "козыры ў рукаве". Дыскавыя масівы, сабраныя з дапамогай VROC, сумяшчальныя з Linux Software RAID. Гэта азначае, што стан масіваў можна адсочваць у /proc/mdstat, а адміністраваць - праз mdadm. Гэтая "асаблівасць" афіцыйна падтрымліваецца Intel. Пасля зборкі RAID1 у Setup Utility можна назіраць сінхранізацыю назапашвальнікаў у АС:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : active raid1 nvme2n1[1] nvme1n1[0]
      1855832064 blocks super external:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inactive nvme1n1[1](S) nvme2n1[0](S)
      10402 blocks super external:imsm
       
unused devices: <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/3.16, а тэсты будуць выконвацца пры дапамозе fio версіі XNUMX.

Тэставанне

У першую чаргу праверым затрымкі пры працы з дыскам. Тэст выконваецца ў адзін паток, памер блока 4 КБ. Кожны тэст доўжыцца 5 хвілін. Перад пачаткам для якая адпавядае блокавай прылады выстаўляецца none у якасці планавальніка I/O. Каманда fio выглядае наступным чынам:

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

З вынікаў 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=<threads> --rw=<mode> --filename=<blkdev>

Прадукцыйнасць вымяраецца ў колькасці аперацый уводу-высновы. Вынікі прадстаўлены ў табліцы ніжэй.

Выпадковае чытанне 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

Дадаць каментар