
I denne artikel vil vi gennemgå forskellige metoder til organisering af RAID-arrays samt vise en af de første hardware RAID-controllere med NVMe-understøttelse.
Sammenhængen mellem RAID-teknologi finder vi hovedsageligt i serversegmentet. I klientsystemer anvendes ofte udelukkende software RAID0 eller RAID1 med to diske.
I denne artikel vil der være en kort oversigt over RAID-teknologien, en lille vejledning til oprettelse af RAID-arrays med tre forskellige værktøjer samt en sammenligning af ydeevnen for virtuelle diske ved brug af hver metode.
Hvad er RAID?
giver en udtømmende definition af RAID-teknologien:
RAID (eng. Redundant Array of Independent Disks — et redundant array af uafhængige (selvstændige) diske — en teknologi til virtualisering af data, der samler flere fysiske disk-enheder i en logisk enhed for at øge fejlfindingskapaciteten og ydeevnen.
Konfigurationen af diske og de anvendte teknologier afhænger af det valgte RAID-niveau (RAID level). RAID-niveauer er standardiseret i specifikationen . Den beskriver mange RAID-niveauer, men de mest almindelige anses for at være RAID0, RAID1, RAID5 og RAID6.
RAID0, eller Stripes, — er et RAID-niveau, der kombinerer to eller flere fysiske diske til én logisk. Størrelsen på den logiske disk svarer til summen af størrelserne på de fysiske diske, der indgår i arrayet. På dette niveau er der ingen redundans, og en disks fejl kan resultere i tab af alle data på den virtuelle disk.
Niveau RAID1, eller Mirror, opretter identiske kopier af data på to eller flere diske. Størrelsen på den virtuelle disk overstiger ikke størrelsen på den mindste af de fysiske diske. Dataene på den virtuelle RAID1-disk vil være tilgængelige, så længe mindst én fysisk disk i arrayet fungerer. Brugen af RAID1 tilføjer redundans, men er en forholdsvis dyr løsning, da der i arrays med to eller flere diske kun er rådighed over størrelsen på én.
Niveau RAID5 løser problemet med omkostninger. For at oprette et RAID5-array er der brug for mindst 3 diske, og arrayet er modstandsdygtigt over for, at en disk fejler. Data i RAID5 gemmes i blokke med kontrolsummer. Der er ikke en streng opdeling mellem diske med data og diske med kontrolsummer. Kontrolsummerne i RAID5 er resultatet af en XOR-operation anvendt på N-1 blokke, hvor hver er taget fra sin egen disk.
Selvom RAID-arrays øger redundansen og giver backup, er de ikke egnet til opbevaring af sikkerhedskopier.
Efter et kort overblik over typerne af RAID-arrays kan vi gå videre til enhederne og programmerne, der gør det muligt at samle og anvende diskarrays.
Typer af RAID-controllere
Der er to måder at oprette og bruge RAID-arrays på: hardware- og softwarebaserede. Vi vil se på følgende løsninger:
- Linux Software RAID.
- Intel® Virtual RAID On CPU.
- LSI MegaRAID 9460-8i.
Det bemærkes, at Intel®-løsningen fungerer på chipsettet, hvilket rejser spørgsmålet om, hvorvidt det er en hardware- eller softwareløsning. For eksempel betragter hypervisoren VMWare ESXi VROC som software og understøtter det ikke officielt.
Linux Software RAID
Software RAID-arrays i Linux OS-familien er en ret udbredt løsning både i klientsegmentet og på servere. Alt, hvad der kræves for at oprette et array, er værktøjet mdadm og et par bloklagringsenheder. Det eneste krav, som Linux Software RAID stiller til de anvendte enheder, er, at de skal være blokkenheder, der er tilgængelige for systemet.
Fraværet af omkostninger til hardware og software er en åbenlys fordel ved denne metode. Linux Software RAID organiserer diskarrays på bekostning af processorens tid. Listen over understøttede RAID-niveauer og status for de aktuelle diskarrays kan ses i filen mdstat, som findes i rodmappen for procfs:
root@grindelwald:~# cat /proc/mdstat
Personligheder : [linear] [multipath] [raid0] [raid1] [raid10]
unused devices:
Understøttelse af RAID-niveauer tilføjes ved at tilslutte den relevante kernelmodul, for eksempel:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Personligheder : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
unused devices:Alle operationer med diskarrays udføres via kommandolinjeværktøjet mdadm. Samlingen af diskarrayet foretages med en enkelt kommando:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1Efter at have udført denne kommando vil der i systemet dukke op et blokenhed /dev/md0, som repræsenterer et virtuelt drev.
Intel® Virtual RAID On CPU
Intel® VROC Standard Hardware Key
Intel® Virtual RAID On CPU (VROC) er en software-hardware teknologi til oprettelse af RAID-arrays baseret på Intel® chipset. Denne teknologi er primært tilgængelig for bundkort, der understøtter Intel® Xeon® Scalable processorer. Som standard er VROC ikke tilgængelig. For at aktivere det skal du installere en hardwarelicensnøgle til VROC.
Den standard VROC-licens tillader oprettelse af diskarrays med RAID niveauerne 0, 1 og 10. Den premium version udvider denne liste ved at tilføje support for RAID5.
Intel® VROC teknologi på moderne bundkort arbejder sammen med Intel® Volume Management Device (VMD), som muliggør varm udskiftning af NVMe-drev.
Intel® VROC med standardlicens Opsætning af arrays foregår gennem Setup Utility under opstart af serveren. I fanen Avanceret dannes der en sektion for Intel® Virtual RAID on CPU, hvor diskarrays kan konfigureres.
Oprettelse af RAID1-array med to drev
Intel® VROC teknologi har sine "trumfer". Diskarrays oprettet med VROC er kompatible med Linux Software RAID. Det betyder, at tilstanden af arrays kan overvåges i /proc/mdstat, og administreres via mdadm. Denne "funktion" er officielt understøttet af Intel. Efter oprettelse af RAID1 i Setup Utility kan man se synkroniseringen af drevene i OS:
root@grindelwald:~# cat /proc/mdstat
Personligheder: [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md126 : aktiv raid1 nvme2n1[1] nvme1n1[0]
1855832064 blokke super ekstern:/md127/0 [2/2] [UU]
[>....................] resync = 1.3% (24207232/1855832064) afsluttes=148.2min hastighed=205933K/sek
md127 : inaktiv nvme1n1[1](S) nvme2n1[0](S)
10402 blokke super ekstern:imsm
unused devices: <none>Det skal bemærkes, at arrays ikke kan oprettes på VROC via mdadm (oprettede arrays vil være Linux SW RAID), men det er muligt at ændre diske i dem og nedbryde arrays.
LSI MegaRAID 9460-8i
Udsigten til LSI MegaRAID 9460-8i controlleren
RAID-controlleren er en selvstændig hardware-løsning. Controlleren arbejder kun med drev, der er tilsluttet direkte til den. Denne RAID-controller understøtter op til 24 drev med NVMe-interface. Det er netop understøttelsen af NVMe, der adskiller denne controller fra mange andre.
Hovedmenuen for hardwarecontrolleren
Når UEFI-tilstand er aktiv, integreres controllerindstillingerne i Setup Utility. Sammenlignet med VROC ser menuerne fra den hårde controller betydeligt mere komplekse ud.
Oprettelse af RAID1 på to diske
Forklaringen af opsætningen af diskarrays på den hardwarebaserede controller er et ret komplekst emne og kan blive grundlaget for en fuld artikel. Her nøjes vi dog med at oprette RAID0 og RAID1 med standardindstillinger.
Diske tilsluttet den hardwarebaserede controller er ikke synlige for operativsystemet. I stedet "maskerer" controlleren alle RAID-arrays som SAS-lagringsenheder. Lagringsenheder tilsluttet controlleren, men som ikke indgår i 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 maskeringen som SAS-lagringsenheder vil arrays med NVMe fungere ved PCIe-hastigheder. Denne funktion gør det muligt at boote fra NVMe i Legacy.
Testbænk
Hver metode til at organisere diskarrays har sine fysiske fordele og ulemper. Men er der en forskel i ydeevne, når man arbejder med diskarrays?
For at opnå maksimal retfærdighed vil alle tests blive udført på den samme server. Dens konfiguration er:
- 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.
De testede enheder er P4510, hvoraf den ene halvdel er tilsluttet bundkortet, mens den anden er tilsluttet RAID-controlleren. Operativsystemet Ubuntu 20.04 er installeret på M.2, og testene vil blive udført ved hjælp af fio version 3.16.
Testning
Vi vil først teste latency ved diskoperationer. Testen udføres i én tråd med en blokstørrelse på 4 KB. Hver test varer 5 minutter. Før starten sættes planlæggeren I/O til none for den relevante blok-enhed. Fio-kommandoen ser således ud:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw= --filename=Fra resultaterne fra fio tager vi clat 99,00%. Resultaterne er vist i tabellen nedenfor.
Tilfældig læsning, µs
Tilfældig skrivning, µ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
Udover forsinkelsen ved adgang til data, vil jeg gerne se ydeevnen af de virtuelle lagringsenheder og sammenligne den med ydeevnen af den fysiske disk. Kommandoen til at køre fio:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=Ydeevnen måles i antal input/output operationer. Resultaterne er vist i tabellen nedenfor.
Tilfældig læsning 1 tråd, IOPS
Tilfældig skrivning 1 tråd, IOPS
Tilfældig læsning 128 tråde, IOPS
Tilfældig skrivning 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 brugen af en hardwarecontroller giver øgning af forsinkelserne og fald i ydeevnen sammenlignet med softwareløsninger.
Konklusion
Brugen af hardwareløsninger til at oprette diskarrayer af to diske virker urimelig. Ikke desto mindre findes der opgaver, hvor brugen af RAID-controllere er berettiget. Med fremkomsten af controllere, der understøtter NVMe-interface, får brugerne mulighed for at bruge hurtigere SSD'er i deres projekter.
Kun registrerede brugere kan deltage i undersøgelsen. , please.
Bruger du RAID-løsninger?
29,6%Ja, hardwareløsninger32
50,0%Ja, softwareløsninger54
16,7%Nej18
3,7%RAID er ikke nødvendigt4
108 brugere har stemt. 14 brugere har afgivet deres stemme.
Kilde: habr.com
