RAID-massiivid NVMe-l

RAID-massiivid NVMe-l
Selles artiklis räägime erinevatest RAID-massiivide korraldamise viisidest ning tutvustame ühte esimest riistvaralist RAID-kontrollerit, mis toetab NVMe-d.

RAID-tehnoloogia rakenduste mitmekesisus on kõige enam levinud serverite valdkonnas. Klientide segmentides kasutatakse kõige sagedamini ainult tarkvaralist RAID0 või RAID1, mis põhineb kahel kettal.

Selles artiklis on lühike ülevaade RAID-tehnoloogiast, väike juhend kolme erineva tööriista abil RAID-massiivide loomiseks ning virtuaalkettaste jõudluse võrdlus iga meetodi puhul.

Mis on RAID?

Vikipeedia annab ammendava määratlemise RAID-tehnoloogiale:

RAID (ingl. Redundant Array of Independent Disks — sõltumatute (iseseisvate) ketaste ühisvõrk — andmete virtualiseerimise tehnoloogia, mis ühendab mitmeid füüsilisi kettaid loogiliseks mooduliks, et suurendada sõltumatust ja jõudlust.

Kettamassiivide konfiguratsioon ning kasutatavad tehnoloogiad sõltuvad valitud RAID tasemest (RAID level). RAID tasemed on standardiseeritud spetsifikatsioonis Common RAID Disk Data Format. See kirjeldab mitmeid RAID-tasemeid, kuid kõige levinumateks peetakse RAID0, RAID1, RAID5 ja RAID6.

RAID0, või Ribad, — see on RAID-tase, mis ühendab kaks või enam füüsilist ketast ühe loogilise kettana. Loogilise ketta maht on võrdeliselt füüsiliste ketaste mahtude summaga, mis kuuluvad massiivi. Sellel tasemel puudub RAID-i suurem usaldusväärsus, ja ühe ketta rike võib põhjustada kõigi andmete kaotuse virtuaalses kettas.

Tase RAID1, või Peegeldus, loob identseid andmekopeeringuid kahe või enama ketta vahel. Virtuaalse ketta maht ei ületa füüsiliste ketaste minimaalset mahtu. Andmed virtuaalses RAID1 kettas on kergesti ligipääsetavad seni, kuni vähemalt üks füüsiline ketas massiivist töötab. RAID1 kasutamine lisab usaldusväärsust, kuid see on piisavalt kallis lahendus, kuna kahe või enama ketta massiivide puhul on saadaval ainult ühe ketta maht.

Tase RAID5 lahendab kalliduse probleemi. RAID5 taseme massiivi loomiseks on vajalik vähemalt 3 ketast, samas kui massiiv talub ühe ketta rikki minekut. Andmed RAID5-s on salvestatud plokkidena koos kontrollsummadega. Ketaste vahel ei toimu ranget jagamist andmete ja kontrollsummade vahel. RAID5 kontrollsummad on tulemuseks XOR-tehingust, mis on rakendatud N-1 plokile, millest igaüks on võetud oma kettalt.

Kuigi RAID-massiivid suurendavad ülekandmisvõimet ja pakuvad varu, ei sobi need koopiaid hoidmiseks.

Pärast lühikest ekskursiooni RAID-massiivide tüüpidesse saame liikuda seadmete ja programmide juurde, mis võimaldavad diskimassiive koguda ja kasutada.

RAID-kontrollerite tüübid

RAID-massiivide loomiseks ja kasutamiseks on kaks viisi: riist- ja tarkvaraline. Uurime järgmisi lahendusi:

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

Oluline on märkida, et Intel® lahendus töötab kiibistikul, mis tõstatab küsimuse, kas tegemist on riist- või tarkvaralahendusega. Näiteks hüperviisor VMWare ESXi peab VROC-i tarkvaraliseks ja ei toeta seda ametlikult.

Linux Software RAID

Linuxi tarkvara RAID-massiivid on igapäevane lahendus nii klientide kui ka serverite seas. Kõik, mis on vajalik massiivi loomiseks, on utiliit mdadm ja mõned plokkseadmestikud. Ainus nõue, mida Linuxi tarkvara RAID kehtestab kasutatavate salvestite kohta, on see, et need peavad olema plokkseadmestikud, mis on süsteemis saadaval.

Tarkvara ja riistvara kulude puudumine on selle meetodi ilmne eelis. Linuxi tarkvara RAID korraldab ketasmassiivid protsessorite ressursitasu eest. Toetatud RAID-taseme loendi ja praeguste ketasmassiivide oleku saab vaadata failist mdstat, mis asub procfs-i juures:

root@grindelwald:~# cat /proc/mdstat 
Isikud: [lineaarne] [mitme tee] [raid0] [raid1] [raid10] 
kasutamata seadmed:

RAID-tasemete toetamine lisatakse vastava kernelimooduli laadimisega, näiteks:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Isikud: [lineaarne] [mitme tee] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
kasutamata seadmed:

Kõik operatsioonid ketasmassiividega viiakse läbi käsurea utiliidi mdadm kaudu. Ketasmasse moodustatakse ühe käsuga:

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

Pärast selle käsu täitmist tekib süsteemis block-seade /dev/md0, mis esindab virtuaalset ketast.

Intel® Virtuaalne RAID Kohaliku CPU puhul

RAID-massiivid NVMe-lIntel® VROC Standardne Riistvaraline Võti
Intel® Virtuaalne RAID Kohaliku CPU puhul (VROC) on tarkvara-riistvara tehnoloogia, mis võimaldab luua RAID-masse Intel® kiibistike põhjal. See tehnoloogia on saadaval peamiselt emaplaadi jaoks, mis toetavad Intel® Xeon® Skaleeritavaid protsessoreid. Vaikimisi ei ole VROC saadaval. Selle aktiveerimiseks on vajalik paigaldada riistvaraline VROC litsentsivõti.

VROC standardlitsents võimaldab luua kettaid RAID 0, 1 ja 10 tasemega. Premium versioon laiendab seda nimekirja, toetades RAID5.

Intel® VROC töötab kaasaegsetes emaplaatides koos Intel® Volume Management Device (VMD)-ga, mis võimaldab NVMe liidese põhjal paiknevate salvestusseadmete kuumvahetust.

RAID-massiivid NVMe-lIntel® VROC standardlitsentsiga Raid-massiivide seadistamine toimub Setup Utility kaudu serveri käivitamisel. Vahekaardil Advanced ilmub Intel® Virtuaalne RAID Kohaliku CPU punkt, kus saab seadistada kettaid.

RAID-massiivid NVMe-lRAID1 massiivi loomine kahe salvestusseadmega
Intel® VROC tehnoloogia omab oma «trumpe varrukas». VROC-iga kokku pandud kettastruktuurid on ühilduvad Linux Software RAID-iga. See tähendab, et struktuuride seisundit saab jälgida /proc/mdstat kaudu ning hallata mdadm-i abil. See «funktsioon» on ametlikult toetatud Intel'i poolt. Pärast RAID1 kokkupanekut Setup Utility's on võimalik jälgida seadmete sünkroniseerimist operatsioonisüsteemis:

root@grindelwald:~# cat /proc/mdstat 
Isiklikud: [raid1] [sirge] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : aktiivne raid1 nvme2n1[1] nvme1n1[0]
      1855832064 plokki super external:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) lõpetamiseks = 148.2min kiirus = 205933K/sek
      
md127 : mitteaktiivne nvme1n1[1](S) nvme2n1[0](S)
      10402 plokki super external:imsm
       
kasutamata seadmed: <ükski>

Tuleb märkida, et mdadm-i kaudu ei saa VROC-le struktuure luua (kokku pandud struktuurid on Linux SW RAID), kuid seadmeid saab neis vahetada ja struktuure lahti võtta.

LSI MegaRAID 9460-8i

RAID-massiivid NVMe-lLSI MegaRAID 9460-8i kontrolleri välimus
RAID-kontroller on sõltumatu riistvaralahendus. Kontroller töötab ainult seadmetega, mis on sellele otse ühendatud. See RAID-kontroller toetab kuni 24 NVMe liidesega seadet. Just NVMe tugi eristab seda kontrollerit paljude teiste seas.

RAID-massiivid NVMe-lRiistvarakontrolleri peamenüü
UEFI režiimi kasutamisel integreeritakse kontrolleri seadistused Setup Utilitysse. V võrreldes VROC-ga näeb riistvara kontrolleri menüü palju keerulisem välja.

RAID-massiivid NVMe-lRAID1 loomine kahel kettal
Disk arrayde seadistamise selgitamine riistvarakontrolleril on piisavalt keeruline teema ning võiks olla terve artikli aluseks. Siiski jätame siin lihtsalt RAID0 ja RAID1 loomise vaike seadistustega.

Riistvarakontrollerisse ühendatud kettad ei ole operatsioonisüsteemile nähtavad. Selle asemel "maskeerib" kontroller kõik RAID-massiivid SAS-diskidena. Kontrollerisse ühendatud kettad, mis ei kuulu diskimassiivi, ei ole operatsioonisüsteemile kergesti kätte saadavad.

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.

Kuigi NVMe süsteemid maskeeritakse SAS-diskideks, töötavad NVMe massiivid PCIe kiirusel. See omadus võimaldab ka Legacy režiimis käivituda NVMe-st.

Teststand

Igalla diskivormingul on oma füüsilised eelised ja puudused. Aga kas tulemuslikkuses on erinevusi diskivormingute vahel?

Maksimaalse objektiivsuse saavutamiseks tehakse kõik testid samal serveril. Selle konfiguratsioon:

  • 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.

Testitavad on P4510, millest üks pool on ühendatud emaplaadiga ja teine RAID-kontrolleriga. M.2-l on installitud operatsioonisüsteem Ubuntu 20.04 ning testide teostamiseks kasutatakse fio versiooni 3.16.

Testimine

Esmalt kontrollime viivitusi andmekettaga töötamisel. Test viiakse läbi ühe niidi abil, ploki suuruse väärtuseks 4 KB. Iga test kestab 5 minutit. Enne algust määratakse vastaval plokiseadmel I/O planeerijaks 'none'. fio käsu struktuur on järgmine:

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

fio tulemustest saame clat 99,00%. Tulemused on esitatud tabelis allpool.

Juhuslik lugemine, µs
Juhuslik kirjutamine, µs

Kett
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

Lisaks andmete juurdepääsu viivitustele soovitakse näha virtuaalsete salvestusseadmete ja füüsilise ketta jõudlust ning võrrelda neid. Fio käivitamiseks kasutatav käsk:

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

Jõudlust mõõdetakse sisend-väljundoperatsioonide (IOPS) arvu põhjal. Tulemused on esitatud tabelis allpool.

Juhuslik lugemine 1 voog, IOPS
Juhuslik kirjutamine 1 voog, IOPS
Juhuslik lugemine 128 voogud, IOPS
Juhuslik kirjutamine 128 voogud, IOPS

Kett
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

On lihtne märgata, et riistvarakontrolleri kasutamine toob kaasa viivituste suurenemise ja jõudluse languse võrreldes tarkvaralahendustega.

Kokkuvõte

Kahjulikeks lahendusteks kahe kõvakettaga RAID-massiivide loomine tundub mõttetu. Siiski on olemas ülesandeid, kus RAID-kontrollerite kasutamine on õigustatud. NVMe-liidese toetusega kontrollerite tulekuga saavad kasutajad oma projektides kasutada kiiremaid SSD-sid.

RAID-massiivid NVMe-l

Ainult registreeritud kasutajad saavad küsitluses osaleda. Logige sisse, palun.

Kas kasutate RAID-lahendusi?

  • 29,6%Jah, riistvaralahendused32

  • 50,0%Jah, tarkvaralahendused54

  • 16,7%Ei18

  • 3,7%RAID ei ole vajalik4

Hääletanud on 108 kasutajat. Hoidus 14 kasutajat.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster