RAID-arrays op NVMe

RAID-arrays op NVMe
Yn dit artikel sille wy prate oer ferskate manieren om RAID-arrays te organisearjen, en ek ien fan 'e earste hardware RAID-controllers sjen litte mei NVMe-stipe.

Al it ferskaat oan tapassingen fan RAID-technology is te finen yn it serversegment. Yn it kliïntsegment wurdt allinich software RAID0 of RAID1 op twa skiven meast brûkt.

Dit artikel sil in koart oersjoch jaan fan RAID-technology, in koarte tutorial oer hoe't jo RAID-arrays kinne meitsje mei trije ferskillende ark, en in ferliking fan prestaasjes fan firtuele skiif mei elke metoade.

Wat is RAID?

Wikipedia jout in wiidweidige definysje fan RAID-technology:

RAID (eng. Redundante array fan ûnôfhinklike skiven - oerstallige array fan ûnôfhinklike (ûnôfhinklike) skiven) - data virtualization technology foar it kombinearjen fan ferskate fysike skiif apparaten yn in logyske module te fergrutsjen skuld tolerânsje en prestaasjes.

De konfiguraasje fan skiif-arrays en de brûkte technologyen binne ôfhinklik fan de selektearre RAID nivo. RAID-nivo's binne standerdisearre yn 'e spesifikaasje Common RAID Disk Data Format. It beskriuwt in protte RAID-nivaer, mar de meast foarkommende binne RAID0, RAID1, RAID5 en RAID6.

RAID0of stripes, is in RAID-nivo dat twa of mear fysike skiven kombinearret yn ien logysk stasjon. It folume fan 'e logyske skiif is lyk oan de som fan' e folumes fan 'e fysike skiven opnommen yn' e array. D'r is gjin oerstalligens op dit RAID-nivo, en mislearjen fan ien stasjon kin resultearje yn it ferlies fan alle gegevens yn 'e firtuele skiif.

nivo RAID1of mirror, makket identike kopyen fan gegevens op twa of mear skiven. De grutte fan 'e firtuele skiif is net grutter as de minimale grutte fan' e fysike skiven. De gegevens op 'e RAID1 firtuele skiif sil beskikber wêze salang't op syn minst ien fysike skiif út de array is operasjoneel. It brûken fan RAID1 foeget redundânsje ta, mar is in frij djoere oplossing, om't yn arrays fan twa of mear skiven de kapasiteit fan mar ien beskikber is.

nivo RAID5 lost it probleem fan hege kosten op. Foar it meitsjen fan in rige mei RAID5 nivo, do moatst op syn minst 3 skiven, en de rige is resistint foar it mislearjen fan ien skiif. Gegevens yn RAID5 wurde opslein yn blokken mei kontrôlesums. D'r is gjin strikte divyzje tusken gegevensskiven en kontrôlesumskiven. Checksums yn RAID5 binne it resultaat fan in XOR-operaasje tapast op N-1-blokken, elk nommen fan in oare skiif.

Hoewol RAID-arrays fergrutsje oerstalligens en jouwe oerstalligens, se binne net geskikt foar it bewarjen fan backups.

Nei in koarte ekskurzje yn 'e soarten RAID-arrays kinne jo trochgean nei apparaten en programma's wêrmei jo skiif-arrays kinne gearstalle en brûke.

Soarten RAID controllers

D'r binne twa manieren om RAID-arrays te meitsjen en te brûken: hardware en software. Wy sille de folgjende oplossingen beskôgje:

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

Tink derom dat de Intel®-oplossing rint op in chipset, wat de fraach opropt oft it in hardware- of softwareoplossing is. Bygelyks, de VMWare ESXi hypervisor beskôget VROC-software en stipet it net offisjeel.

Linux Software RAID

Software RAID-arrays yn 'e Linux OS-famylje binne in frij gewoane oplossing yn sawol de client- as serversegminten. Alles wat jo nedich hawwe om in array te meitsjen is it mdadm-hulpprogramma en in pear blokapparaten. De ienige eask dat Linux Software RAID pleatst op 'e skiven dy't it brûkt is in blokapparaat te wêzen dat tagonklik is foar it systeem.

It ûntbrekken fan kosten foar apparatuer en software is in dúdlik foardiel fan dizze metoade. Linux Software RAID organisearret skiif-arrays op kosten fan CPU-tiid. De list mei stipe RAID-nivo's en de status fan 'e aktuele skiif-arrays kinne wurde besjoen yn' e mdstat-bestân, dy't leit yn 'e procfs-root:

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

Stipe foar RAID-nivo's wurdt tafoege troch it ferbinen fan de passende kernelmodule, bygelyks:

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

Alle operaasjes mei skiif-arrays wurde útfierd fia it mdadm kommandorigelprogramma. De skiif array is gearstald yn ien kommando:

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

Nei it útfieren fan dit kommando sil it /dev/md0-blokapparaat yn it systeem ferskine, dat jo as in firtuele skiif fertsjintwurdiget.

Intel® Virtual RAID Op CPU

RAID-arrays op NVMeIntel® VROC Standert Hardware Key
Intel® Virtual RAID On CPU (VROC) is in hardware- en softwaretechnology foar it meitsjen fan RAID-arrays basearre op Intel®-chipsets. Dizze technology is foaral beskikber foar moederborden dy't Intel® Xeon® Scalable processors stypje. Standert is VROC net beskikber. Om it te aktivearjen, moatte jo in VROC-hardware-lisinsjekaai ynstallearje.

De standert VROC-lisinsje lit jo skiif-arrays meitsje mei 0, 1 en 10 RAID-nivo's. De premium ferzje wreidet dizze list út mei RAID5-stipe.

Intel® VROC-technology op moderne moederborden wurket yn gearhing mei it Intel® Volume Management Device (VMD), dat hot-swap-mooglikheid foar NVMe-skiven leveret.

RAID-arrays op NVMeIntel® VROC Standert Lisinsje Arrays wurde konfigureare fia it Setup Utility as de tsjinner opstart. Op de ljepper Avansearre It item Intel® Virtual RAID op CPU ferskynt, wêr't jo skiif-arrays kinne konfigurearje.

RAID-arrays op NVMeIt meitsjen fan in RAID1-array op twa skiven
Intel® VROC technology hat syn eigen aces op 'e mouwe. Skiif-arrays boud mei VROC binne kompatibel mei Linux Software RAID. Dit betsjut dat de steat fan 'e arrays kin wurde kontrolearre yn /proc/mdstat en beheard fia mdadm. Dizze "funksje" wurdt offisjeel stipe troch Intel. Nei it gearstallen fan RAID1 yn Setup Utility kinne jo de syngronisaasje fan skiven yn it OS observearje:

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>

Tink derom dat jo gjin arrays op VROC kinne gearstalle mei mdadm (de gearstalde arrays sille Linux SW RAID wêze), mar jo kinne skiven yn har feroarje en de arrays disassemble.

LSI MegaRAID 9460-8i

RAID-arrays op NVMeUterlik fan de LSI MegaRAID 9460-8i controller
De RAID-controller is in stand-alone hardware-oplossing. De controller wurket allinnich mei driuwfearren ferbûn direkt oan it. Dizze RAID-controller stipet oant 24 NVMe-skiven. It is de NVMe-stipe dy't dizze controller ûnderskiedt fan in protte oaren.

RAID-arrays op NVMeHaadmenu fan de hardware controller
By it brûken fan UEFI-modus wurde controller-ynstellingen yntegreare yn Setup Utility. Yn ferliking mei VROC sjocht it hardware-controllermenu folle komplekser út.

RAID-arrays op NVMeRAID1 oanmeitsje op twa skiven
It útlizze hoe't jo skiif-arrays op in hardware-controller konfigurearje is in frij delikaat ûnderwerp en kin de reden wêze foar in folweardich artikel. Hjir sille wy ús gewoan beheine ta it meitsjen fan RAID0 en RAID1 mei standertynstellingen.

Disken ferbûn mei de hardware controller binne net sichtber foar it bestjoeringssysteem. Ynstee dêrfan "maskearret" de controller alle RAID-arrays as SAS-skiven. Drives ferbûn mei de controller, mar gjin diel fan 'e skiif array, sil net tagonklik wurde troch it OS.

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.

Nettsjinsteande dat se ferklaaid binne as SAS-skiven, sille NVMe-arrays operearje mei PCIe-snelheden. Dizze funksje lit jo lykwols bootje fan NVMe yn Legacy.

test stand

Elke metoade foar it organisearjen fan skiif-arrays hat syn eigen fysike foar- en neidielen. Mar is d'r in prestaasjeferskil by it wurkjen mei skiif-arrays?

Om maksimale earlikens te berikken, sille alle testen wurde útfierd op deselde tsjinner. Syn konfiguraasje:

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

De test-ienheden binne P4510, wêrfan ien helte is ferbûn mei it moederbord, en de oare helte oan 'e RAID-controller. De M.2 rint Ubuntu 20.04 en de tests sille wurde útfierd mei fio ferzje 3.16.

Testing

Lit ús earst de fertragingen kontrolearje by it wurkjen mei de skiif. De test wurdt útfierd yn ien tried, de blokgrutte is 4 KB. Elke test duorret 5 minuten. Foardat jo begjinne, is it korrespondearjende blokapparaat op gjinien ynsteld as de I / O-planner. It kommando fio sjocht der sa út:

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

Ut fio resultaten wy nimme clat 99.00%. De resultaten wurde werjûn yn 'e tabel hjirûnder.

Willekeurige lêzing, μs
Willekeurige opname, μs

skiif
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

Neist fertragingen by tagong ta gegevens, soe ik de prestaasjes fan firtuele skiven graach sjen en fergelykje mei de prestaasjes fan in fysike skiif. Kommando om fio út te fieren:

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

Prestaasje wurdt metten yn termen fan I/O-operaasjes. De resultaten wurde presintearre yn 'e tabel hjirûnder.

Willekeurich lêzen 1 tried, IOPS
Willekeurich skriuwe 1 tried, IOPS
Willekeurich lêzen 128 triedden, IOPS
Willekeurich skriuwe 128 triedden, IOPS

skiif
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

It is maklik om te sjen dat it brûken fan in hardware-controller resulteart yn ferhege latency en in prestaasje-hit yn ferliking mei software-oplossings.

konklúzje

It brûken fan hardware-oplossings om skiif-arrays te meitsjen fan twa skiven liket irrasjoneel. D'r binne lykwols taken wêr't it gebrûk fan RAID-controllers rjochtfeardige is. Mei de komst fan controllers dy't de NVMe-ynterface stypje, hawwe brûkers de kâns om rappere SSD's te brûken yn har projekten.

RAID-arrays op NVMe

Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.

Brûk jo RAID-oplossingen?

  • 29,6%Ja, hardware-oplossingen32

  • 50,0%Ja, softwareoplossingen54

  • 16,7%nr18

  • 3,7%Gjin RAID nedich4

108 brûkers stimden. 14 brûkers ûntholden har.

Boarne: www.habr.com

Add a comment