RAID-massiivid NVMe-s

RAID-massiivid NVMe-s
Selles artiklis räägime erinevatest viisidest RAID-massiivide korraldamiseks ja näitame ka üht esimestest NVMe-toega riistvara-RAID-kontrollereid.

Serverite segmendis leidub kõiki RAID-tehnoloogia rakendusi. Kliendisegmendis kasutatakse kõige sagedamini ainult tarkvara RAID0 või RAID1 kahel kettal.

Selles artiklis antakse lühike ülevaade RAID-tehnoloogiast, lühike õpetus RAID-massiivide loomise kohta kolme erineva tööriista abil ja virtuaalse ketta jõudluse võrdlus iga meetodi abil.

Mis on RAID?

Wikipedia annab RAID-tehnoloogia põhjaliku määratluse:

RAID (Inglise Sõltumatute ketaste üleliigne massiiv - sõltumatute (sõltumatute) ketaste üleliigne massiiv) - andmete virtualiseerimise tehnoloogia mitme füüsilise kettaseadme ühendamiseks loogiliseks mooduliks, et suurendada tõrketaluvust ja jõudlust.

Kettamassiivide konfiguratsioon ja kasutatavad tehnoloogiad sõltuvad valitud valikust RAID tase. RAID tasemed on spetsifikatsioonis standarditud Üldine RAID-ketta andmevorming. See kirjeldab paljusid RAID-i tasemeid, kuid levinumad on RAID0, RAID1, RAID5 ja RAID6.

RAID0Või Stripes, on RAID-tase, mis ühendab kaks või enam füüsilist draivi üheks loogiliseks draiviks. Loogilise ketta maht võrdub massiivi kaasatud füüsiliste ketaste mahtude summaga. Sellel RAID-tasemel pole liiasust ja ühe draivi rike võib põhjustada kõigi virtuaalse ketta andmete kadumise.

Tase RAID1Või Peegel, loob kahel või enamal kettal andmetest identsed koopiad. Virtuaalse ketta suurus ei ületa füüsiliste ketaste minimaalset suurust. RAID1 virtuaalkettal olevad andmed on saadaval seni, kuni vähemalt üks massiivi füüsiline ketas töötab. RAID1 kasutamine lisab liiasust, kuid on üsna kallis lahendus, kuna kahest või enamast kettast koosnevates massiivides on saadaval ainult ühe ketta maht.

Tase RAID5 lahendab kõrge hinna probleemi. RAID5 tasemega massiivi loomiseks vajate vähemalt 3 ketast ja massiiv on vastupidav ühe ketta rikke suhtes. RAID5 andmed salvestatakse kontrollsummadega plokkidesse. Andmeketaste ja kontrollsummaketaste vahel pole ranget jaotust. RAID5 kontrollsummad on XOR-operatsiooni tulemus, mida rakendatakse N-1 plokkidele, millest igaüks on võetud erinevalt kettalt.

Kuigi RAID-massiivid suurendavad liiasust ja pakuvad liiasust, ei sobi need varukoopiate salvestamiseks.

Pärast lühikest tutvumist RAID-massiivide tüüpidega saate liikuda seadmete ja programmide juurde, mis võimaldavad teil kettamassiivid kokku panna ja kasutada.

RAID-kontrollerite tüübid

RAID-massiivide loomiseks ja kasutamiseks on kaks võimalust: riistvara ja tarkvara. Kaalume järgmisi lahendusi:

  • Linuxi tarkvara RAID.
  • Intel® Virtual RAID protsessoril.
  • LSI MegaRAID 9460-8i.

Pange tähele, et Intel® lahendus töötab kiibistikul, mistõttu tekib küsimus, kas tegemist on riist- või tarkvaralahendusega. Näiteks VMWare ESXi hüperviisor arvestab VROC tarkvaraga ega toeta seda ametlikult.

Linuxi tarkvara RAID

Linuxi OS-i perekonna tarkvara RAID-massiivid on üsna levinud lahendus nii kliendi kui ka serveri segmendis. Massiivi loomiseks vajate ainult mdadm-i utiliiti ja mõnda plokkseadet. Ainus nõue, mille Linuxi tarkvara RAID oma kasutatavatele draividele esitab, on see, et see peab olema süsteemile juurdepääsetav plokkseade.

Seadmete ja tarkvara kulude puudumine on selle meetodi ilmne eelis. Linuxi tarkvara RAID korraldab kettamassiivid protsessori aja arvelt. Toetatud RAID-tasemete loendit ja praeguste kettamassiivide olekut saab vaadata failist mdstat, mis asub procfs-i juures:

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

RAID-tasemete tugi lisatakse sobiva kerneli mooduli ühendamisega, näiteks:

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

Kõik kettamassiividega tehtavad toimingud tehakse käsurea utiliidi mdadm kaudu. Ketta massiiv on kokku pandud ühe käsuga:

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

Pärast selle käsu täitmist ilmub süsteemi /dev/md0 plokkseade, mis esindab teid virtuaalse kettana.

Intel® Virtual RAID protsessoril

RAID-massiivid NVMe-sIntel® VROC standardne riistvaravõti
Intel® Virtual RAID On CPU (VROC) on riist- ja tarkvaratehnoloogia Intel® kiibistikul põhinevate RAID-massiivide loomiseks. See tehnoloogia on saadaval peamiselt emaplaatidele, mis toetavad Intel® Xeon® Scalable protsessoreid. Vaikimisi pole VROC saadaval. Selle aktiveerimiseks peate installima VROC riistvara litsentsivõtme.

Standardne VROC-litsents võimaldab luua 0, 1 ja 10 RAID-tasemega kettamassiive. Premium versioon laiendab seda loendit RAID5 toega.

Intel® VROC tehnoloogia kaasaegsetel emaplaatidel töötab koos Intel® Volume Management Device (VMD) seadmega, mis pakub NVMe-draividele kiirvahetuse võimalust.

RAID-massiivid NVMe-sIntel® VROC standardlitsents Massiivid konfigureeritakse serveri käivitumisel häälestusutiliidi kaudu. Vahekaardil edasijõudnud Ilmub üksus Intel® Virtual RAID on CPU, kus saate kettamassiivid konfigureerida.

RAID-massiivid NVMe-sRAID1 massiivi loomine kahel draivil
Intel® VROC tehnoloogial on omad ässad. VROC-i abil ehitatud kettamassiivid ühilduvad Linuxi tarkvara RAID-iga. See tähendab, et massiivide olekut saab jälgida failis /proc/mdstat ja hallata mdadm-i kaudu. Seda "funktsiooni" toetab ametlikult Intel. Pärast RAID1 kokkupanekut häälestusutiliidis saate jälgida draivide sünkroonimist operatsioonisüsteemis:

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>

Pange tähele, et VROC-is ei saa massiive koostada mdadm-i abil (kokkupandud massiivid on Linuxi SW RAID), kuid saate neis olevaid kettaid vahetada ja massiive lahti võtta.

LSI MegaRAID 9460-8i

RAID-massiivid NVMe-sLSI MegaRAID 9460-8i kontrolleri välimus
RAID-kontroller on iseseisev riistvaralahendus. Kontroller töötab ainult sellega otse ühendatud draividega. See RAID-kontroller toetab kuni 24 NVMe-draivi. Just NVMe tugi eristab seda kontrollerit paljudest teistest.

RAID-massiivid NVMe-sRiistvarakontrolleri peamenüü
UEFI-režiimi kasutamisel on kontrolleri sätted integreeritud häälestusutiliidi. Võrreldes VROC-ga näeb riistvarakontrolleri menüü välja palju keerulisem.

RAID-massiivid NVMe-sRAID1 loomine kahel kettal
Riistvarakontrolleri kettamassiivide konfigureerimise selgitamine on üsna delikaatne teema ja võib olla täisväärtusliku artikli põhjuseks. Siin piirdume lihtsalt vaikesätetega RAID0 ja RAID1 loomisega.

Riistvarakontrolleriga ühendatud kettad ei ole operatsioonisüsteemile nähtavad. Selle asemel maskeerib kontroller kõik RAID-massiivid SAS-draivideks. OS ei pääse juurde kontrolleriga ühendatud draividele, mis ei kuulu kettamassiivi.

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.

Vaatamata sellele, et NVMe massiivid on maskeeritud SAS-draivideks, töötavad need PCIe kiirustel. See funktsioon võimaldab teil aga pärandvaras NVMe-st alglaadida.

Katselaud

Igal kettamassiivide korraldamise meetodil on oma füüsilised plussid ja miinused. Kuid kas kettamassiividega töötades on jõudluse erinevus?

Maksimaalse õigluse saavutamiseks viiakse kõik testid läbi samas serveris. Selle konfiguratsioon:

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

Testplokkideks on P4510, millest üks pool on ühendatud emaplaadiga, teine ​​pool RAID-kontrolleriga. M.2 töötab Ubuntu 20.04 ja testid käivitatakse fio versiooniga 3.16.

Katsetamine

Kõigepealt kontrollime kettaga töötamise viivitusi. Test teostatakse ühes lõimes, ploki suurus on 4 KB. Iga test kestab 5 minutit. Enne käivitamist määratakse vastav plokiseade I/O planeerijana olekusse None. Käsk fio näeb välja selline:

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

Fio tulemustest võtame klat 99.00%. Tulemused on näidatud allolevas tabelis.

Juhuslik lugemine, μs
Juhuslik salvestamine, μs

ketas
112
78

Linuxi SW RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linuxi SW RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Lisaks andmetele juurdepääsu viivitustele tahaksin näha virtuaalsete draivide jõudlust ja võrrelda neid füüsilise ketta jõudlusega. Käsk fio käivitamiseks:

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

Jõudlust mõõdetakse I/O operatsioonide kaudu. Tulemused on toodud allolevas tabelis.

Juhuslik lugemine 1 lõim, IOPS
Juhuslik kirjutamine 1 lõim, IOPS
Juhuslik lugemine 128 lõime, IOPS
Juhuslik kirjutamine 128 lõime, IOPS

ketas
11300
40700
453000
105000

Linuxi SW RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linuxi SW RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

On lihtne mõista, et riistvarakontrolleri kasutamine suurendab latentsust ja suurendab jõudlust võrreldes tarkvaralahendustega.

Järeldus

Riistvaralahenduste kasutamine kahest kettast kettamassiivide loomiseks tundub irratsionaalne. Siiski on ülesandeid, kus RAID-kontrollerite kasutamine on õigustatud. NVMe liidest toetavate kontrollerite tulekuga on kasutajatel võimalus kasutada oma projektides kiiremaid SSD-sid.

RAID-massiivid NVMe-s

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas kasutate RAID-lahendusi?

  • 29,6%Jah, riistvaralahendused32

  • 50,0%Jah, tarkvaralahendused54

  • 16,7%Ei 18

  • 3,7%RAID-i pole vaja 4

108 kasutajat hääletas. 14 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar