RAID-arrayer på NVMe

RAID-arrayer på NVMe
I denne artikkelen vil vi snakke om forskjellige måter å organisere RAID-arrayer på, og også vise en av de første maskinvare-RAID-kontrollerne med NVMe-støtte.

Alle applikasjoner av RAID-teknologi finnes i serversegmentet. I klientsegmentet brukes oftest kun programvare RAID0 eller RAID1 på to disker.

Denne artikkelen vil gi en kort oversikt over RAID-teknologi, en kort veiledning om hvordan du lager RAID-arrayer ved hjelp av tre forskjellige verktøy, og en sammenligning av virtuell diskytelse ved bruk av hver metode.

Hva er RAID?

Wikipedia gir en omfattende definisjon av RAID-teknologi:

RAID (Engelsk Redundant utvalg av uavhengige disker - redundant rekke uavhengige (uavhengige) disker) - datavirtualiseringsteknologi for å kombinere flere fysiske diskenheter til en logisk modul for å øke feiltoleranse og ytelse.

Konfigurasjonen av diskmatriser og teknologiene som brukes avhenger av den valgte RAID-nivå. RAID-nivåer er standardisert i spesifikasjonen Vanlig RAID-diskdataformat. Den beskriver mange RAID-nivåer, men de vanligste er RAID0, RAID1, RAID5 og RAID6.

RAID0Eller Stripes, er et RAID-nivå som kombinerer to eller flere fysiske stasjoner til én logisk stasjon. Volumet til den logiske disken er lik summen av volumene til de fysiske diskene som er inkludert i matrisen. Det er ingen redundans på dette RAID-nivået, og feil på én stasjon kan føre til tap av alle data på den virtuelle disken.

Nivå RAID1Eller Speil, lager identiske kopier av data på to eller flere disker. Størrelsen på den virtuelle disken overskrider ikke minimumsstørrelsen på de fysiske diskene. Dataene på den virtuelle RAID1-disken vil være tilgjengelig så lenge minst én fysisk disk fra arrayet er operativ. Bruk av RAID1 gir redundans, men er en ganske kostbar løsning, siden i arrays med to eller flere disker er kapasiteten til bare én tilgjengelig.

Nivå RAID5 løser problemet med høye kostnader. For å lage en matrise med RAID5-nivå trenger du minst 3 disker, og matrisen er motstandsdyktig mot feil på én disk. Data i RAID5 lagres i blokker med kontrollsummer. Det er ingen streng deling mellom datadisker og kontrollsumdisker. Sjekksummer i RAID5 er resultatet av en XOR-operasjon som brukes på N-1-blokker, hver hentet fra en annen disk.

Selv om RAID-matriser øker redundansen og gir redundans, er de ikke egnet for lagring av sikkerhetskopier.

Etter en kort utflukt til typene RAID-matriser, kan du gå videre til enheter og programmer som lar deg sette sammen og bruke diskmatriser.

Typer RAID-kontrollere

Det er to måter å lage og bruke RAID-matriser på: maskinvare og programvare. Vi vil vurdere følgende løsninger:

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

Merk at Intel®-løsningen kjører på et brikkesett, noe som reiser spørsmålet om det er en maskinvare- eller programvareløsning. For eksempel vurderer VMWare ESXi-hypervisoren VROC-programvare og støtter den ikke offisielt.

Linux Software RAID

Software RAID-arrays i Linux OS-familien er en ganske vanlig løsning i både klient- og serversegmentene. Alt du trenger for å lage en matrise er mdadm-verktøyet og noen få blokkenheter. Det eneste kravet Linux Software RAID stiller på stasjonene den bruker, er å være en blokkenhet som er tilgjengelig for systemet.

Fraværet av kostnader til utstyr og programvare er en åpenbar fordel med denne metoden. Linux Software RAID organiserer diskarrayer på bekostning av CPU-tid. Listen over støttede RAID-nivåer og statusen til gjeldende diskarrayer kan sees i mdstat-filen, som ligger i procfs-roten:

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

Støtte for RAID-nivåer legges til ved å koble til riktig kjernemodul, for eksempel:

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

Alle operasjoner med diskmatriser utføres gjennom mdadm-kommandolinjeverktøyet. Diskmatrisen er satt sammen i én kommando:

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

Etter å ha utført denne kommandoen, vil /dev/md0-blokkenheten vises i systemet, som representerer en virtuell disk.

Intel® Virtual RAID på CPU

RAID-arrayer på NVMeIntel® VROC standard maskinvarenøkkel
Intel® Virtual RAID On CPU (VROC) er en maskinvare- og programvareteknologi for å lage RAID-matriser basert på Intel® brikkesett. Denne teknologien er først og fremst tilgjengelig for hovedkort som støtter Intel® Xeon® skalerbare prosessorer. Som standard er VROC ikke tilgjengelig. For å aktivere den må du installere en VROC-maskinvarelisensnøkkel.

Standard VROC-lisensen lar deg lage diskarrayer med 0, 1 og 10 RAID-nivåer. Premium-versjonen utvider denne listen med RAID5-støtte.

Intel® VROC-teknologi på moderne hovedkort fungerer sammen med Intel® Volume Management Device (VMD), som gir mulighet for hot-swap for NVMe-stasjoner.

RAID-arrayer på NVMeIntel® VROC standardlisens Matriser konfigureres gjennom Setup Utility når serveren starter opp. På fanen Avansert Elementet Intel® Virtual RAID on CPU vises, der du kan konfigurere diskarrayer.

RAID-arrayer på NVMeOpprette en RAID1-matrise på to stasjoner
Intel® VROC-teknologien har sine egne ess i ermet. Diskarrayer bygget med VROC er kompatible med Linux Software RAID. Dette betyr at tilstanden til arrayene kan overvåkes i /proc/mdstat og administreres gjennom mdadm. Denne "funksjonen" støttes offisielt av Intel. Etter å ha satt sammen RAID1 i Setup Utility, kan du observere synkroniseringen av stasjoner i operativsystemet:

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>

Merk at du ikke kan sette sammen arrays på VROC ved å bruke mdadm (de sammensatte arrayene vil være Linux SW RAID), men du kan bytte disker i dem og demontere arrayene.

LSI MegaRAID 9460-8i

RAID-arrayer på NVMeUtseendet til LSI MegaRAID 9460-8i-kontrolleren
RAID-kontrolleren er en frittstående maskinvareløsning. Kontrolleren fungerer kun med stasjoner koblet direkte til den. Denne RAID-kontrolleren støtter opptil 24 NVMe-stasjoner. Det er NVMe-støtten som skiller denne kontrolleren fra mange andre.

RAID-arrayer på NVMeHovedmeny for maskinvarekontrolleren
Når du bruker UEFI-modus, er kontrollerinnstillingene integrert i Setup Utility. Sammenlignet med VROC ser maskinvarekontrollmenyen mye mer kompleks ut.

RAID-arrayer på NVMeOpprette RAID1 på to disker
Å forklare hvordan du konfigurerer diskmatriser på en maskinvarekontroller er et ganske delikat tema og kan være årsaken til en fullverdig artikkel. Her vil vi ganske enkelt begrense oss til å lage RAID0 og RAID1 med standardinnstillinger.

Disker koblet til maskinvarekontrolleren er ikke synlige for operativsystemet. I stedet «maskerer» kontrolleren alle RAID-arrayer som SAS-stasjoner. Stasjoner som er koblet til kontrolleren, men som ikke er en del av diskarrayet, vil ikke være tilgjengelige for operativsystemet.

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.

Til tross for at de er forkledd som SAS-stasjoner, vil NVMe-arrays operere med PCIe-hastigheter. Denne funksjonen lar deg imidlertid starte opp fra NVMe i Legacy.

Prøvestativ

Hver metode for å organisere diskarrayer har sine egne fysiske fordeler og ulemper. Men er det en ytelsesforskjell når du arbeider med diskmatriser?

For å oppnå maksimal rettferdighet, vil alle tester bli utført på samme server. Dens konfigurasjon:

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

Testenhetene er P4510, hvorav den ene halvparten er koblet til hovedkortet, og den andre halvparten til RAID-kontrolleren. M.2 kjører Ubuntu 20.04 og testene vil bli kjørt med fio versjon 3.16.

Testing

Først av alt, la oss sjekke forsinkelsene når du arbeider med disken. Testen utføres i én tråd, blokkstørrelsen er 4 KB. Hver test varer i 5 minutter. Før start er den tilsvarende blokkenheten satt til ingen som I/O-planlegger. Fio-kommandoen ser slik ut:

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

Fra fio resultater tar vi clat 99.00%. Resultatene er vist i tabellen nedenfor.

Tilfeldig avlesning, μs
Tilfeldig opptak, μs

disk
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

I tillegg til forsinkelser ved tilgang til data, vil jeg gjerne se ytelsen til virtuelle stasjoner og sammenligne dem med ytelsen til en fysisk disk. Kommando for å kjøre fio:

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

Ytelsen måles i form av I/O-operasjoner. Resultatene er presentert i tabellen nedenfor.

Tilfeldig lest 1 tråd, IOPS
Tilfeldig skriv 1 tråd, IOPS
Tilfeldig lest 128 tråder, IOPS
Tilfeldig skriv 128 tråder, IOPS

disk
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

Det er lett å se at bruk av en maskinvarekontroller resulterer i økt ventetid og et ytelsestreff sammenlignet med programvareløsninger.

Konklusjon

Å bruke maskinvareløsninger til å lage diskarrayer fra to disker ser irrasjonelt ut. Det er imidlertid oppgaver der bruk av RAID-kontrollere er berettiget. Med bruken av kontrollere som støtter NVMe-grensesnittet, har brukere muligheten til å bruke raskere SSD-er i sine prosjekter.

RAID-arrayer på NVMe

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Bruker du RAID-løsninger?

  • 29,6%Ja, maskinvareløsninger32

  • 50,0%Ja, programvareløsninger54

  • 16,7%No18

  • 3,7%Ingen RAID nødvendig4

108 brukere stemte. 14 brukere avsto.

Kilde: www.habr.com

Legg til en kommentar