RAID-arrays på NVMe

RAID-arrays på NVMe
I denne artikel vil vi tale om forskellige måder at organisere RAID-arrays på og også vise en af ​​de første hardware RAID-controllere med NVMe-understøttelse.

Alle de mange forskellige anvendelser af RAID-teknologi findes i serversegmentet. I klientsegmentet bruges oftest kun software RAID0 eller RAID1 på to diske.

Denne artikel giver et kort overblik over RAID-teknologi, en kort vejledning i, hvordan man opretter RAID-arrays ved hjælp af tre forskellige værktøjer, og en sammenligning af den virtuelle diskydeevne ved hjælp af hver metode.

Hvad er RAID?

Wikipedia giver en omfattende definition af RAID-teknologi:

RAID (Engelsk Overflødig række af uafhængige diske - redundant række af uafhængige (uafhængige) diske) - datavirtualiseringsteknologi til at kombinere flere fysiske diskenheder til et logisk modul for at øge fejltolerance og ydeevne.

Konfigurationen af ​​diskarrays og de anvendte teknologier afhænger af den valgte RAID niveau. RAID-niveauer er standardiseret i specifikationen Fælles RAID-diskdataformat. Den beskriver mange RAID-niveauer, men de mest almindelige er RAID0, RAID1, RAID5 og RAID6.

RAID0Eller Striber, er et RAID-niveau, der kombinerer to eller flere fysiske drev til ét logisk drev. Volumen af ​​den logiske disk er lig med summen af ​​mængderne af de fysiske diske, der er inkluderet i arrayet. Der er ingen redundans på dette RAID-niveau, og fejl på ét drev kan resultere i tab af alle data på den virtuelle disk.

Level RAID1Eller Spejl, opretter identiske kopier af data på to eller flere diske. Størrelsen på den virtuelle disk overstiger ikke minimumsstørrelsen på de fysiske diske. Dataene på den virtuelle RAID1-disk vil være tilgængelige, så længe mindst én fysisk disk fra arrayet er operationel. Brug af RAID1 tilføjer redundans, men er en temmelig dyr løsning, da der i arrays af to eller flere diske kun er en kapacitet tilgængelig.

Level RAID5 løser problemet med høje omkostninger. For at oprette et array med RAID5-niveau skal du bruge mindst 3 diske, og arrayet er modstandsdygtigt over for fejl på én disk. Data i RAID5 lagres i blokke med kontrolsummer. Der er ingen streng opdeling mellem datadiske og kontrolsumdiske. Kontrolsummer i RAID5 er resultatet af en XOR-operation anvendt på N-1 blokke, hver taget fra en anden disk.

Selvom RAID-arrays øger redundans og giver redundans, er de ikke egnede til lagring af sikkerhedskopier.

Efter en kort udflugt til typerne af RAID-arrays, kan du gå videre til enheder og programmer, der giver dig mulighed for at samle og bruge disk-arrays.

Typer af RAID-controllere

Der er to måder at oprette og bruge RAID-arrays på: hardware og software. Vi vil overveje følgende løsninger:

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

Bemærk at Intel®-løsningen kører på et chipset, hvilket rejser spørgsmålet om, hvorvidt det er en hardware- eller softwareløsning. For eksempel overvejer VMWare ESXi-hypervisoren VROC-software og understøtter det ikke officielt.

Linux Software RAID

Software RAID-arrays i Linux OS-familien er en ret almindelig løsning i både klient- og serversegmenterne. Alt du behøver for at oprette et array er mdadm-værktøjet og et par blokenheder. Det eneste krav, Linux Software RAID stiller på de drev, det bruger, er at være en blokenhed, der er tilgængelig for systemet.

Fraværet af omkostninger til udstyr og software er en åbenlys fordel ved denne metode. Linux Software RAID organiserer diskarrays på bekostning af CPU-tid. Listen over understøttede RAID-niveauer og status for de aktuelle diskarrays kan ses i mdstat-filen, som er placeret i procfs-roden:

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

Understøttelse af RAID-niveauer tilføjes ved at tilslutte det relevante kernemodul, for eksempel:

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

Alle operationer med diskarrays udføres gennem mdadm-kommandolinjeværktøjet. Diskarrayet er samlet i én kommando:

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

Efter at have udført denne kommando, vil /dev/md0-blokenheden dukke op i systemet, som repræsenterer dig som en virtuel disk.

Intel® Virtual RAID på CPU

RAID-arrays på NVMeIntel® VROC Standard hardwarenøgle
Intel® Virtual RAID On CPU (VROC) er en hardware- og softwareteknologi til at skabe RAID-arrays baseret på Intel®-chipsæt. Denne teknologi er primært tilgængelig for bundkort, der understøtter Intel® Xeon® skalerbare processorer. Som standard er VROC ikke tilgængelig. For at aktivere den skal du installere en VROC-hardwarelicensnøgle.

Standard VROC-licensen giver dig mulighed for at oprette diskarrays med 0, 1 og 10 RAID-niveauer. Premium-versionen udvider denne liste med RAID5-understøttelse.

Intel® VROC-teknologi på moderne bundkort fungerer sammen med Intel® Volume Management Device (VMD), som giver mulighed for hot-swap til NVMe-drev.

RAID-arrays på NVMeIntel® VROC-standardlicens Arrays konfigureres via Setup Utility, når serveren starter. På fanen Avanceret Elementet Intel® Virtual RAID på CPU vises, hvor du kan konfigurere diskarrays.

RAID-arrays på NVMeOprettelse af et RAID1-array på to drev
Intel® VROC-teknologien har sine egne esser i ærmet. Disk-arrays bygget ved hjælp af VROC er kompatible med Linux Software RAID. Dette betyder, at arrays kan overvåges i /proc/mdstat og administreres gennem mdadm. Denne "funktion" er officielt understøttet af Intel. Efter at have samlet RAID1 i Setup Utility, kan du observere synkroniseringen af ​​drev i OS:

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>

Bemærk, at du ikke kan samle arrays på VROC ved hjælp af mdadm (de samlede arrays vil være Linux SW RAID), men du kan ændre diske i dem og adskille arrays.

LSI MegaRAID 9460-8i

RAID-arrays på NVMeUdseende af LSI MegaRAID 9460-8i controlleren
RAID-controlleren er en selvstændig hardwareløsning. Controlleren fungerer kun med drev, der er tilsluttet direkte til den. Denne RAID-controller understøtter op til 24 NVMe-drev. Det er NVMe-understøttelsen, der adskiller denne controller fra mange andre.

RAID-arrays på NVMeHovedmenu for hardwarecontrolleren
Når du bruger UEFI-tilstand, er controllerindstillinger integreret i Setup Utility. Sammenlignet med VROC ser hardwarecontrollermenuen meget mere kompleks ud.

RAID-arrays på NVMeOprettelse af RAID1 på to diske
At forklare, hvordan man konfigurerer diskarrays på en hardwarecontroller, er et ret ømtåleligt emne og kan være årsagen til en fuldgyldig artikel. Her vil vi blot begrænse os til at oprette RAID0 og RAID1 med standardindstillinger.

Diske, der er tilsluttet hardwarecontrolleren, er ikke synlige for operativsystemet. I stedet for "masker" controlleren alle RAID-arrays som SAS-drev. Drev, der er tilsluttet controlleren, men ikke en del af diskarrayet, vil ikke være tilgængelige for 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.

På trods af at de er forklædt som SAS-drev, vil NVMe-arrays fungere ved PCIe-hastigheder. Denne funktion giver dig dog mulighed for at starte fra NVMe i Legacy.

Prøvestativ

Hver metode til at organisere diskarrays har sine egne fysiske fordele og ulemper. Men er der en ydelsesforskel, når man arbejder med diskarrays?

For at opnå maksimal retfærdighed vil alle test blive udført på den samme server. Dens konfiguration:

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

Testenhederne er P4510, hvoraf den ene halvdel er forbundet til bundkortet, og den anden halvdel til RAID-controlleren. M.2 kører Ubuntu 20.04, og testene vil blive kørt med fio version 3.16.

Test

Først og fremmest, lad os tjekke forsinkelserne, når du arbejder med disken. Testen udføres i én tråd, blokstørrelsen er 4 KB. Hver test varer 5 minutter. Før start er den tilsvarende blokenhed indstillet til ingen som I/O-planlægger. Fio-kommandoen ser således ud:

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

Fra fio resultater tager vi clat 99.00%. Resultaterne er vist i tabellen nedenfor.

Tilfældig læsning, μs
Tilfældig optagelse, μ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

Ud over forsinkelser ved adgang til data, vil jeg gerne se ydeevnen af ​​virtuelle drev og sammenligne dem med ydeevnen af ​​en fysisk disk. Kommando til at køre fio:

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

Ydeevne måles i form af I/O-operationer. Resultaterne er præsenteret i tabellen nedenfor.

Tilfældig læst 1 tråd, IOPS
Tilfældig skriv 1 tråd, IOPS
Tilfældig læst 128 tråde, IOPS
Tilfældig skriv 128 tråde, 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 let at se, at brug af en hardwarecontroller resulterer i øget latenstid og et præstationshit sammenlignet med softwareløsninger.

Konklusion

At bruge hardwareløsninger til at skabe diskarrays fra to diske ser irrationelt ud. Der er dog opgaver, hvor brugen af ​​RAID-controllere er berettiget. Med fremkomsten af ​​controllere, der understøtter NVMe-grænsefladen, har brugerne mulighed for at bruge hurtigere SSD'er i deres projekter.

RAID-arrays på NVMe

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Bruger du RAID-løsninger?

  • 29,6 %Ja, hardwareløsninger32

  • 50,0 %Ja, softwareløsninger54

  • 16,7 %Nr 18

  • 3,7 %Intet behov for RAID4

108 brugere stemte. 14 brugere undlod at stemme.

Kilde: www.habr.com

Tilføj en kommentar